diff --git a/.github/ISSUE_TEMPLATE/bug-report---.md b/.github/ISSUE_TEMPLATE/bug-report---.md deleted file mode 100644 index 6a8b3a84..00000000 --- a/.github/ISSUE_TEMPLATE/bug-report---.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -name: "Bug report \U0001F41E" -about: Create a report to help us improve - ---- - -## Description - -Describe the issue that you're seeing. - -### Steps to reproduce - -Clear steps describing how to reproduce the issue. Please please please link to a demo project if possible, this makes your issue _much_ easier to diagnose (seriously). - -### Expected result - -What should happen? - -### Actual result - -What happened. - -### Environment - -Paste the information here as shown by `npm run check` diff --git a/.github/ISSUE_TEMPLATE/feature-request---.md b/.github/ISSUE_TEMPLATE/feature-request---.md deleted file mode 100644 index 74da274c..00000000 --- a/.github/ISSUE_TEMPLATE/feature-request---.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -name: "Feature request \U0001F680" -about: Suggest an idea for Doks - ---- - -## Summary - -Brief explanation of the feature. - -### Basic example - -Include a basic example or links here. - -### Motivation - -Why are we doing this? What use cases does it support? What is the expected outcome? diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md deleted file mode 100644 index 61f9fc30..00000000 --- a/.github/pull_request_template.md +++ /dev/null @@ -1,18 +0,0 @@ -## Summary - -Brief explanation of the proposed changes. - -## Basic example - -Include a basic example, screenshots, or links. - -## Motivation - -Why are we doing this? What use cases does it support? What is the expected outcome? - -## Checks - -- [ ] Read [Create a Pull Request](https://getdoks.org/docs/contributing/how-to-contribute/#create-a-pull-request) -- [ ] Supports all screen sizes (if relevant) -- [ ] Supports both light and dark mode (if relevant) -- [ ] Passes `npm run test` diff --git a/.github/workflows/build-verify.yml b/.github/workflows/build-verify.yml deleted file mode 100644 index 64d7e91b..00000000 --- a/.github/workflows/build-verify.yml +++ /dev/null @@ -1,25 +0,0 @@ -name: Test docs build - -on: - push: - branches: - - main - pull_request: - branches: - - main - -jobs: - deploy: - name: Test docs build - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v6 - - uses: actions/setup-node@v6 - with: - node-version: 24 - cache: npm - - - name: Install dependencies - run: npm ci - - name: Build website - run: npm run build diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml deleted file mode 100644 index 7dd36cb6..00000000 --- a/.github/workflows/codeql-analysis.yml +++ /dev/null @@ -1,62 +0,0 @@ -# For most projects, this workflow file will not need changing; you simply need -# to commit it to your repository. -# -# You may wish to alter this file to override the set of languages analyzed, -# or to provide custom queries or build logic. -name: "CodeQL" - -on: - push: - branches: [master] - pull_request: - # The branches below must be a subset of the branches above - branches: [master] - schedule: - - cron: '0 11 * * 5' - -jobs: - analyze: - name: Analyze - runs-on: ubuntu-latest - - strategy: - fail-fast: false - matrix: - # Override automatic language detection by changing the below list - # Supported options are ['csharp', 'cpp', 'go', 'java', 'javascript', 'python'] - language: ['javascript'] - # Learn more... - # https://docs.github.com/en/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#overriding-automatic-language-detection - - steps: - - name: Checkout repository - uses: actions/checkout@v6 - - # Initializes the CodeQL tools for scanning. - - name: Initialize CodeQL - uses: github/codeql-action/init@v4 - with: - languages: ${{ matrix.language }} - # If you wish to specify custom queries, you can do so here or in a config file. - # By default, queries listed here will override any specified in a config file. - # Prefix the list here with "+" to use these queries and those in the config file. - # queries: ./path/to/local/query, your-org/your-repo/queries@main - - # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). - # If this step fails, then you should remove it and run the build manually (see below) - - name: Autobuild - uses: github/codeql-action/autobuild@v4 - - # ℹ️ Command-line programs to run using the OS shell. - # 📚 https://git.io/JvXDl - - # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines - # and modify them (or add more) to build your code if your project - # uses a compiled language - - #- run: | - # make bootstrap - # make release - - - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v4 diff --git a/.github/workflows/comment_pr.yml b/.github/workflows/comment_pr.yml deleted file mode 100644 index 9a6be22a..00000000 --- a/.github/workflows/comment_pr.yml +++ /dev/null @@ -1,66 +0,0 @@ -name: Comment on pull request post pull request auto review -# depends on and only executes after pull_request_processor.yml is complete - -on: - workflow_run: - workflows: ["Checking CLA Signature"] - types: - - completed - -jobs: - one: - runs-on: ubuntu-latest - strategy: - matrix: - python-version: [3.8] - if: > - ${{ github.event.workflow_run.event == 'pull_request' && - github.event.workflow_run.conclusion == 'success' }} - steps: - - name: Print github contexts - env: - GITHUB_CONTEXT: ${{ toJSON(github) }} - run: | - ls - echo "GH context:" - echo "$GITHUB_CONTEXT" - - name: 'Download artifact' - uses: actions/github-script@v8.0.0 - with: - script: | - var artifacts = await github.actions.listWorkflowRunArtifacts({ - owner: context.repo.owner, - repo: context.repo.repo, - run_id: ${{github.event.workflow_run.id }}, - }); - console.log(artifacts); - var matchArtifact = artifacts.data.artifacts.filter((artifact) => { - return artifact.name == "prcontext" - })[0]; - var download = await github.actions.downloadArtifact({ - owner: context.repo.owner, - repo: context.repo.repo, - artifact_id: matchArtifact.id, - archive_format: 'zip', - }); - var fs = require('fs'); - fs.writeFileSync('${{github.workspace}}/pr.zip', Buffer.from(download.data)); - - run: | - ls - unzip pr.zip - cat ./comment - - - name: 'Comment on Current Pull Request' - uses: actions/github-script@v8 - with: - github-token: ${{ secrets.COMMENT_BOT_TOKEN }} - script: | - var fs = require('fs'); - var issue_number = Number(fs.readFileSync('./PRNumber')); - var comment = String(fs.readFileSync('./comment')); - await github.issues.createComment({ - owner: context.repo.owner, - repo: context.repo.repo, - issue_number: issue_number, - body: comment - }); \ No newline at end of file diff --git a/.github/workflows/gh-pages-deploy.yml b/.github/workflows/gh-pages-deploy.yml deleted file mode 100644 index c8c282ea..00000000 --- a/.github/workflows/gh-pages-deploy.yml +++ /dev/null @@ -1,45 +0,0 @@ -name: Deploy to GitHub Pages - -on: - push: - branches: - - prod - # Review gh actions docs if you want to further define triggers, paths, etc - # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#on - -permissions: - contents: write - -jobs: - deploy: - name: Deploy to GitHub Pages - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v6 - - uses: actions/setup-node@v6 - with: - node-version: 24 - cache: npm - - - name: Install dependencies - run: npm ci - - name: Build website - run: npm run build - - name: copy cname to build folder - run: cp CNAME ./build - - # Popular action to deploy to GitHub Pages: - # Docs: https://github.com/peaceiris/actions-gh-pages#%EF%B8%8F-docusaurus - - name: Deploy to GitHub Pages - uses: peaceiris/actions-gh-pages@v4 - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - # Build output to publish to the `gh-pages` branch: - publish_dir: ./build - # The following lines assign commit authorship to the official - # GH-Actions bot for deploys to `gh-pages` branch: - # https://github.com/actions/checkout/issues/13#issuecomment-724415212 - # The GH actions bot is used by default if you didn't specify the two fields. - # You can swap them out with your own user credentials. - user_name: github-actions[bot] - user_email: 41898282+github-actions[bot]@users.noreply.github.com \ No newline at end of file diff --git a/.github/workflows/python/verify_cla_signature_pr.py b/.github/workflows/python/verify_cla_signature_pr.py deleted file mode 100644 index 2b624948..00000000 --- a/.github/workflows/python/verify_cla_signature_pr.py +++ /dev/null @@ -1,177 +0,0 @@ -import os -import sys -import requests -import json -import subprocess -import re - - -print("current working directory is: ", os.getcwd()) -STATUS_FAILED = 'FAILED' -SUCCESS_MESSAGE = 'ok' - - -def get_github_details(): - github_info_file = open('./.tmp/github.json', 'r') - return json.load(github_info_file) - - -def get_commit_details(): - commit_info_file = open('./.tmp/commitDetails.json', 'r') - return json.load(commit_info_file) - - -def process_git_local_details(): - # Check if current dir is git dir - is_git_dir = subprocess.check_output( - ['/usr/bin/git', 'rev-parse', '--is-inside-work-tree']).decode('utf-8') - print("Is git dir: ", is_git_dir) - - # git status - git_status = subprocess.check_output( - ['/usr/bin/git', 'status']).decode('utf-8') - print("Git status: ", git_status) - - # last n commits - last_10_commit_list = subprocess.check_output( - ['/usr/bin/git', 'rev-list', '--max-count=10', 'HEAD']).decode('utf-8') - print("last 10 commit ids are: ", last_10_commit_list) - - return { - 'is_git_dir': is_git_dir, - 'last_10_commit_list': last_10_commit_list - } - - -def collect_pr_details(): - github = get_github_details() - commits = get_commit_details() - git_local = process_git_local_details() - return { - 'github': github, - 'commits': commits, - 'num_commits_in_pr': len(commits), - 'event_name': github["event_name"], - 'pr_submitter_github_login': github['event']['pull_request']['user']['login'], - 'github_repo': github['repository'], - 'pr_number': github['event']['number'], - 'is_git_dir': git_local['is_git_dir'], - 'last_10_commit_list': git_local['last_10_commit_list'], - } - - -def write_comment(comment): - print(comment) - f = open("./.tmp/comment", "a") - f.write(comment) - f.write("\n") - f.close() - - -def task_failed(comment): - f = open("./.tmp/failed", "a") - f.write(comment) - f.write("\n") - f.close() - write_comment(comment) - return STATUS_FAILED - - -def extract_personal_contributer_details(): - personal_cla_link = sys.argv[1] - f = requests.get(personal_cla_link) - personal_cla_contents = f.text - - personal_contributers_regex = re.compile('\| *\[([^\s]+)\]\([^\s]+\) *\|') - personal_contributers = personal_contributers_regex.findall( - personal_cla_contents) - - return personal_contributers - - -def extract_employer_contributer_details(): - employer_cla_link = sys.argv[2] - f = requests.get(employer_cla_link) - employer_cla_contents = f.text - - employer_contributers_regex = re.compile('\| *\[([^\s]+)\]\([^\s]+\) *\|') - employer_contributers = employer_contributers_regex.findall( - employer_cla_contents) - - return employer_contributers - - -def validate_is_pull_request(pr_details): - print('Validate pull request called') - github_details = pr_details['github'] - if github_details["event_name"] != "pull_request": - print("Error! This operation is valid on github pull requests. Exiting. Event received: ", - github_details["event_name"]) - sys.exit(1) - - -def validate_pr_raiser_cla(pr_raiser_login, employer_contributors, personal_contributors): - print('PR raiser login: ' + pr_raiser_login) - if pr_raiser_login not in employer_contributors and pr_raiser_login not in personal_contributors: - return task_failed('### Error: Contributor Licence Agreement Signature Missing\n' + - 'Please sign the Contributor Licence Agreement by clicking the following link.\n' + - '

Click here to sign the CLA

' - ) - print('Pass: Pull request raiser has signed the Contributor Licence Agreement') - return SUCCESS_MESSAGE - - -def validate_commiters_cla(commits, employer_contributors, personal_contributors): - # github logins of all committers - commit_logins = [] - for commit in commits: - commiter_github_login = commit['author']['login'] - if commiter_github_login not in commit_logins: - commit_logins.append(commiter_github_login) - print("All github users who made changes to the pull request: ", commit_logins) - - unauthorized_commiters = [] - for user in commit_logins: - if user not in personal_contributors and user not in employer_contributors: - unauthorized_commiters.append(user) - if len(unauthorized_commiters) != 0: - return task_failed('### Error: Contributor Licence Agreement Signature Missing\n' + - 'The following commiter(s) has not signed the Contributor Licence Agreement:\n' + - ', '.join(unauthorized_commiters) + '\n' + - 'Please sign the Contributor Licence Agreement by clicking the following link. \n' + - '

Click here to sign the CLA

' - ) - - print('Pass: All the commiters have signed the Contributor Licence Agreement') - return SUCCESS_MESSAGE - - -def validate_cla_signature(pr_raiser_login, commits): - employer_contributors = extract_employer_contributer_details() - personal_contributors = extract_personal_contributer_details() - - PR_RAISER_CLA_VALIDATION = validate_pr_raiser_cla(pr_raiser_login, employer_contributors, personal_contributors) - COMMITERS_CLA_VALIDATION = validate_commiters_cla(commits, employer_contributors, personal_contributors) - - if PR_RAISER_CLA_VALIDATION == STATUS_FAILED or COMMITERS_CLA_VALIDATION == STATUS_FAILED: - return STATUS_FAILED - - return SUCCESS_MESSAGE - - -def review_pr(): - print('Reviewing PR') - pr_details = collect_pr_details() - validate_is_pull_request(pr_details) - CLA_SIGNATURE_VALIDATION = validate_cla_signature(pr_details['pr_submitter_github_login'], pr_details['commits']) - - if CLA_SIGNATURE_VALIDATION == STATUS_FAILED: - print('Validations failed. Exiting!') - return - - write_comment('\n## Thank You for making this pull request.') - - -review_pr() - -# assert validate_cla_signature('psdhanesh7') == SUCCESS_MESSAGE \ No newline at end of file diff --git a/.github/workflows/verify_cla_signature_pr.yml b/.github/workflows/verify_cla_signature_pr.yml deleted file mode 100644 index a6017b3b..00000000 --- a/.github/workflows/verify_cla_signature_pr.yml +++ /dev/null @@ -1,74 +0,0 @@ -name: Checking CLA Signature -# https://docs.github.com/en/actions/reference/context-and-expression-syntax-for-github-actions#github-context -# The pull request target event provides RW token to github -# https://github.blog/2020-08-03-github-actions-improvements-for-fork-and-pull-request-workflows/ -# But `on: pull_request_target` should be avoided due to security -# reasons. Read more: [SEC_ADV_1] https://securitylab.github.com/research/github-actions-preventing-pwn-requests/ -# -# We will use a mix of github pull_request that does not provide any write access to pull requests on forks -# and workflow event, as discussed in [SEC_ADV_1] - -on: - pull_request: - branches: - - main - -jobs: - one: - runs-on: ubuntu-latest - strategy: - matrix: - python-version: [3.8] - - steps: - - uses: actions/checkout@v6 - with: - fetch-depth: 100 - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v6 - with: - python-version: ${{ matrix.python-version }} - - name: Setting up prerequisites - run: | - mkdir ./.tmp - pip3 install requests - - name: Getting commit details - uses: wei/wget@v1 - with: - args: -O ./.tmp/commitDetails.json ${{ toJSON(github.event.pull_request._links.commits.href) }} - - name: Dump GitHub context - env: - GITHUB_CONTEXT: ${{ toJSON(github) }} - run: | - echo "$GITHUB_CONTEXT" > ./.tmp/github.json - echo ${{ github.event.number }} > ./.tmp/PRNumber - cat ./.tmp/github.json - echo "commit details: " - cat ./.tmp/commitDetails.json - - - name: Review pull request - run: | - which git - if ! python ./.github/workflows/python/verify_cla_signature_pr.py $PERSONAL_CLA_LINK $EMPLOYER_CLA_LINK; then - echo "Pull request details could not be extracted" - exit 1 - else - echo "all good" - fi - env: - EMPLOYER_CLA_LINK: https://raw.githubusercontent.com/phcode-dev/contributor-license-agreement/main/employer_contributor_license_agreement.md - PERSONAL_CLA_LINK: https://raw.githubusercontent.com/phcode-dev/contributor-license-agreement/main/personal_contributor_licence_agreement.md - - - uses: actions/upload-artifact@v5 - with: - name: prcontext - path: .tmp/ - - - name: Fail on validation errors - run: | - FILE=./.tmp/failed - if test -f "$FILE"; then - echo "Validation failed. Reason:" - cat ./.tmp/failed - exit 1 - fi diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 87096ce0..00000000 --- a/.gitignore +++ /dev/null @@ -1,28 +0,0 @@ -node_modules -public -resources -.netlify -.hugo_build.lock -.idea -# Dependencies -/node_modules - -# Production -/build - -# Generated files -.docusaurus -.cache-loader -api/API-Reference -phoenix - -# Misc -.DS_Store -.env.local -.env.development.local -.env.test.local -.env.production.local - -npm-debug.log* -yarn-debug.log* -yarn-error.log* diff --git a/.markdownlint.json b/.markdownlint.json deleted file mode 100644 index c1e9da20..00000000 --- a/.markdownlint.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "MD013": false, - "MD025": false -} diff --git a/static/.nojekyll b/.nojekyll similarity index 100% rename from static/.nojekyll rename to .nojekyll diff --git a/.phcode.json b/.phcode.json deleted file mode 100644 index a0dc4ff1..00000000 --- a/.phcode.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "livePreviewUseDevServer": true, - "livePreviewServerURL": "http://localhost:3000/", - "livePreviewServerProjectPath": "/", - "livePreviewHotReloadSupported": true, - "livePreviewFramework": "Docusaurus", - "beautify.options": { - "printWidth": 80 - } -} \ No newline at end of file diff --git a/404.html b/404.html new file mode 100644 index 00000000..e49daeab --- /dev/null +++ b/404.html @@ -0,0 +1,35 @@ + + + + + +Page Not Found | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +
Skip to main content

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

+ + \ No newline at end of file diff --git a/404.html.html b/404.html.html new file mode 100644 index 00000000..f5f9be29 --- /dev/null +++ b/404.html.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md deleted file mode 100644 index 6e07e9a8..00000000 --- a/CODE_OF_CONDUCT.md +++ /dev/null @@ -1,128 +0,0 @@ -# Contributor Covenant Code of Conduct - -## Our Pledge - -We as members, contributors, and leaders pledge to make participation in our -community a harassment-free experience for everyone, regardless of age, body -size, visible or invisible disability, ethnicity, sex characteristics, gender -identity and expression, level of experience, education, socio-economic status, -nationality, personal appearance, race, religion, or sexual identity -and orientation. - -We pledge to act and interact in ways that contribute to an open, welcoming, -diverse, inclusive, and healthy community. - -## Our Standards - -Examples of behavior that contributes to a positive environment for our -community include: - -* Demonstrating empathy and kindness toward other people -* Being respectful of differing opinions, viewpoints, and experiences -* Giving and gracefully accepting constructive feedback -* Accepting responsibility and apologizing to those affected by our mistakes, - and learning from the experience -* Focusing on what is best not just for us as individuals, but for the - overall community - -Examples of unacceptable behavior include: - -* The use of sexualized language or imagery, and sexual attention or - advances of any kind -* Trolling, insulting or derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or email - address, without their explicit permission -* Other conduct which could reasonably be considered inappropriate in a - professional setting - -## Enforcement Responsibilities - -Community leaders are responsible for clarifying and enforcing our standards of -acceptable behavior and will take appropriate and fair corrective action in -response to any behavior that they deem inappropriate, threatening, offensive, -or harmful. - -Community leaders have the right and responsibility to remove, edit, or reject -comments, commits, code, wiki edits, issues, and other contributions that are -not aligned to this Code of Conduct, and will communicate reasons for moderation -decisions when appropriate. - -## Scope - -This Code of Conduct applies within all community spaces, and also applies when -an individual is officially representing the community in public spaces. -Examples of representing our community include using an official e-mail address, -posting via an official social media account, or acting as an appointed -representative at an online or offline event. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported to the community leaders responsible for enforcement at -community-support@core.ai . -All complaints will be reviewed and investigated promptly and fairly. - -All community leaders are obligated to respect the privacy and security of the -reporter of any incident. - -## Enforcement Guidelines - -Community leaders will follow these Community Impact Guidelines in determining -the consequences for any action they deem in violation of this Code of Conduct: - -### 1. Correction - -**Community Impact**: Use of inappropriate language or other behavior deemed -unprofessional or unwelcome in the community. - -**Consequence**: A private, written warning from community leaders, providing -clarity around the nature of the violation and an explanation of why the -behavior was inappropriate. A public apology may be requested. - -### 2. Warning - -**Community Impact**: A violation through a single incident or series -of actions. - -**Consequence**: A warning with consequences for continued behavior. No -interaction with the people involved, including unsolicited interaction with -those enforcing the Code of Conduct, for a specified period of time. This -includes avoiding interactions in community spaces as well as external channels -like social media. Violating these terms may lead to a temporary or -permanent ban. - -### 3. Temporary Ban - -**Community Impact**: A serious violation of community standards, including -sustained inappropriate behavior. - -**Consequence**: A temporary ban from any sort of interaction or public -communication with the community for a specified period of time. No public or -private interaction with the people involved, including unsolicited interaction -with those enforcing the Code of Conduct, is allowed during this period. -Violating these terms may lead to a permanent ban. - -### 4. Permanent Ban - -**Community Impact**: Demonstrating a pattern of violation of community -standards, including sustained inappropriate behavior, harassment of an -individual, or aggression toward or disparagement of classes of individuals. - -**Consequence**: A permanent ban from any sort of public interaction within -the community. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], -version 2.0, available at -https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. - -Community Impact Guidelines were inspired by [Mozilla's code of conduct -enforcement ladder](https://github.com/mozilla/diversity). - -[homepage]: https://www.contributor-covenant.org - -For answers to common questions about this code of conduct, see the FAQ at -https://www.contributor-covenant.org/faq. Translations are available at -https://www.contributor-covenant.org/translations. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md deleted file mode 100644 index bff9c847..00000000 --- a/CONTRIBUTING.md +++ /dev/null @@ -1,24 +0,0 @@ -# Contributing to Open Research -:+1::tada: Thanks for taking the time to contribute! :tada::+1: -## Table of Contents -1. [About the Project](#about-the-project) -1. [Project Status](#project-status) -1. [Getting Started](#getting-started) - -## Community engagement -1. [Code of Conduct](https://github.com/phcode-dev/docs/blob/main/CODE_OF_CONDUCT.md) -1. [License](https://github.com/phcode-dev/docs/blob/main/LICENSE) -### Need support? - * Log an issue with us [here](https://github.com/phcode-dev/docs/issues/new/choose) -### Engage with the community? - * Discuss the project [here](https://github.com/phcode-dev/docs/discussions) - * Join our community discord channel [here](https://discord.com/invite/rBpTBPttca). - -# About the Project -Documentation for phoenix/brackets - -## Project Status -* Active. - -# Getting Started -* see https://github.com/phcode-dev/docs/blob/main/README.md diff --git a/CREDITS.md b/CREDITS.md deleted file mode 100644 index 3a304bd6..00000000 --- a/CREDITS.md +++ /dev/null @@ -1,6 +0,0 @@ -# Credits - -## Attributions for Images and other assets used - -### https://onlinewebfonts.com -* https://www.onlinewebfonts.com/icon/434398 diff --git a/LICENSE b/LICENSE deleted file mode 100644 index f987f3da..00000000 --- a/LICENSE +++ /dev/null @@ -1,395 +0,0 @@ -Attribution 4.0 International - -======================================================================= - -Creative Commons Corporation ("Creative Commons") is not a law firm and -does not provide legal services or legal advice. Distribution of -Creative Commons public licenses does not create a lawyer-client or -other relationship. Creative Commons makes its licenses and related -information available on an "as-is" basis. Creative Commons gives no -warranties regarding its licenses, any material licensed under their -terms and conditions, or any related information. Creative Commons -disclaims all liability for damages resulting from their use to the -fullest extent possible. - -Using Creative Commons Public Licenses - -Creative Commons public licenses provide a standard set of terms and -conditions that creators and other rights holders may use to share -original works of authorship and other material subject to copyright -and certain other rights specified in the public license below. The -following considerations are for informational purposes only, are not -exhaustive, and do not form part of our licenses. - - Considerations for licensors: Our public licenses are - intended for use by those authorized to give the public - permission to use material in ways otherwise restricted by - copyright and certain other rights. Our licenses are - irrevocable. Licensors should read and understand the terms - and conditions of the license they choose before applying it. - Licensors should also secure all rights necessary before - applying our licenses so that the public can reuse the - material as expected. Licensors should clearly mark any - material not subject to the license. This includes other CC- - licensed material, or material used under an exception or - limitation to copyright. More considerations for licensors: - wiki.creativecommons.org/Considerations_for_licensors - - Considerations for the public: By using one of our public - licenses, a licensor grants the public permission to use the - licensed material under specified terms and conditions. If - the licensor's permission is not necessary for any reason--for - example, because of any applicable exception or limitation to - copyright--then that use is not regulated by the license. Our - licenses grant only permissions under copyright and certain - other rights that a licensor has authority to grant. Use of - the licensed material may still be restricted for other - reasons, including because others have copyright or other - rights in the material. A licensor may make special requests, - such as asking that all changes be marked or described. - Although not required by our licenses, you are encouraged to - respect those requests where reasonable. More considerations - for the public: - wiki.creativecommons.org/Considerations_for_licensees - -======================================================================= - -Creative Commons Attribution 4.0 International Public License - -By exercising the Licensed Rights (defined below), You accept and agree -to be bound by the terms and conditions of this Creative Commons -Attribution 4.0 International Public License ("Public License"). To the -extent this Public License may be interpreted as a contract, You are -granted the Licensed Rights in consideration of Your acceptance of -these terms and conditions, and the Licensor grants You such rights in -consideration of benefits the Licensor receives from making the -Licensed Material available under these terms and conditions. - - -Section 1 -- Definitions. - - a. Adapted Material means material subject to Copyright and Similar - Rights that is derived from or based upon the Licensed Material - and in which the Licensed Material is translated, altered, - arranged, transformed, or otherwise modified in a manner requiring - permission under the Copyright and Similar Rights held by the - Licensor. For purposes of this Public License, where the Licensed - Material is a musical work, performance, or sound recording, - Adapted Material is always produced where the Licensed Material is - synched in timed relation with a moving image. - - b. Adapter's License means the license You apply to Your Copyright - and Similar Rights in Your contributions to Adapted Material in - accordance with the terms and conditions of this Public License. - - c. Copyright and Similar Rights means copyright and/or similar rights - closely related to copyright including, without limitation, - performance, broadcast, sound recording, and Sui Generis Database - Rights, without regard to how the rights are labeled or - categorized. For purposes of this Public License, the rights - specified in Section 2(b)(1)-(2) are not Copyright and Similar - Rights. - - d. Effective Technological Measures means those measures that, in the - absence of proper authority, may not be circumvented under laws - fulfilling obligations under Article 11 of the WIPO Copyright - Treaty adopted on December 20, 1996, and/or similar international - agreements. - - e. Exceptions and Limitations means fair use, fair dealing, and/or - any other exception or limitation to Copyright and Similar Rights - that applies to Your use of the Licensed Material. - - f. Licensed Material means the artistic or literary work, database, - or other material to which the Licensor applied this Public - License. - - g. Licensed Rights means the rights granted to You subject to the - terms and conditions of this Public License, which are limited to - all Copyright and Similar Rights that apply to Your use of the - Licensed Material and that the Licensor has authority to license. - - h. Licensor means the individual(s) or entity(ies) granting rights - under this Public License. - - i. Share means to provide material to the public by any means or - process that requires permission under the Licensed Rights, such - as reproduction, public display, public performance, distribution, - dissemination, communication, or importation, and to make material - available to the public including in ways that members of the - public may access the material from a place and at a time - individually chosen by them. - - j. Sui Generis Database Rights means rights other than copyright - resulting from Directive 96/9/EC of the European Parliament and of - the Council of 11 March 1996 on the legal protection of databases, - as amended and/or succeeded, as well as other essentially - equivalent rights anywhere in the world. - - k. You means the individual or entity exercising the Licensed Rights - under this Public License. Your has a corresponding meaning. - - -Section 2 -- Scope. - - a. License grant. - - 1. Subject to the terms and conditions of this Public License, - the Licensor hereby grants You a worldwide, royalty-free, - non-sublicensable, non-exclusive, irrevocable license to - exercise the Licensed Rights in the Licensed Material to: - - a. reproduce and Share the Licensed Material, in whole or - in part; and - - b. produce, reproduce, and Share Adapted Material. - - 2. Exceptions and Limitations. For the avoidance of doubt, where - Exceptions and Limitations apply to Your use, this Public - License does not apply, and You do not need to comply with - its terms and conditions. - - 3. Term. The term of this Public License is specified in Section - 6(a). - - 4. Media and formats; technical modifications allowed. The - Licensor authorizes You to exercise the Licensed Rights in - all media and formats whether now known or hereafter created, - and to make technical modifications necessary to do so. The - Licensor waives and/or agrees not to assert any right or - authority to forbid You from making technical modifications - necessary to exercise the Licensed Rights, including - technical modifications necessary to circumvent Effective - Technological Measures. For purposes of this Public License, - simply making modifications authorized by this Section 2(a) - (4) never produces Adapted Material. - - 5. Downstream recipients. - - a. Offer from the Licensor -- Licensed Material. Every - recipient of the Licensed Material automatically - receives an offer from the Licensor to exercise the - Licensed Rights under the terms and conditions of this - Public License. - - b. No downstream restrictions. You may not offer or impose - any additional or different terms or conditions on, or - apply any Effective Technological Measures to, the - Licensed Material if doing so restricts exercise of the - Licensed Rights by any recipient of the Licensed - Material. - - 6. No endorsement. Nothing in this Public License constitutes or - may be construed as permission to assert or imply that You - are, or that Your use of the Licensed Material is, connected - with, or sponsored, endorsed, or granted official status by, - the Licensor or others designated to receive attribution as - provided in Section 3(a)(1)(A)(i). - - b. Other rights. - - 1. Moral rights, such as the right of integrity, are not - licensed under this Public License, nor are publicity, - privacy, and/or other similar personality rights; however, to - the extent possible, the Licensor waives and/or agrees not to - assert any such rights held by the Licensor to the limited - extent necessary to allow You to exercise the Licensed - Rights, but not otherwise. - - 2. Patent and trademark rights are not licensed under this - Public License. - - 3. To the extent possible, the Licensor waives any right to - collect royalties from You for the exercise of the Licensed - Rights, whether directly or through a collecting society - under any voluntary or waivable statutory or compulsory - licensing scheme. In all other cases the Licensor expressly - reserves any right to collect such royalties. - - -Section 3 -- License Conditions. - -Your exercise of the Licensed Rights is expressly made subject to the -following conditions. - - a. Attribution. - - 1. If You Share the Licensed Material (including in modified - form), You must: - - a. retain the following if it is supplied by the Licensor - with the Licensed Material: - - i. identification of the creator(s) of the Licensed - Material and any others designated to receive - attribution, in any reasonable manner requested by - the Licensor (including by pseudonym if - designated); - - ii. a copyright notice; - - iii. a notice that refers to this Public License; - - iv. a notice that refers to the disclaimer of - warranties; - - v. a URI or hyperlink to the Licensed Material to the - extent reasonably practicable; - - b. indicate if You modified the Licensed Material and - retain an indication of any previous modifications; and - - c. indicate the Licensed Material is licensed under this - Public License, and include the text of, or the URI or - hyperlink to, this Public License. - - 2. You may satisfy the conditions in Section 3(a)(1) in any - reasonable manner based on the medium, means, and context in - which You Share the Licensed Material. For example, it may be - reasonable to satisfy the conditions by providing a URI or - hyperlink to a resource that includes the required - information. - - 3. If requested by the Licensor, You must remove any of the - information required by Section 3(a)(1)(A) to the extent - reasonably practicable. - - 4. If You Share Adapted Material You produce, the Adapter's - License You apply must not prevent recipients of the Adapted - Material from complying with this Public License. - - -Section 4 -- Sui Generis Database Rights. - -Where the Licensed Rights include Sui Generis Database Rights that -apply to Your use of the Licensed Material: - - a. for the avoidance of doubt, Section 2(a)(1) grants You the right - to extract, reuse, reproduce, and Share all or a substantial - portion of the contents of the database; - - b. if You include all or a substantial portion of the database - contents in a database in which You have Sui Generis Database - Rights, then the database in which You have Sui Generis Database - Rights (but not its individual contents) is Adapted Material; and - - c. You must comply with the conditions in Section 3(a) if You Share - all or a substantial portion of the contents of the database. - -For the avoidance of doubt, this Section 4 supplements and does not -replace Your obligations under this Public License where the Licensed -Rights include other Copyright and Similar Rights. - - -Section 5 -- Disclaimer of Warranties and Limitation of Liability. - - a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE - EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS - AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF - ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, - IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, - WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR - PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, - ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT - KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT - ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. - - b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE - TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, - NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, - INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, - COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR - USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN - ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR - DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR - IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. - - c. The disclaimer of warranties and limitation of liability provided - above shall be interpreted in a manner that, to the extent - possible, most closely approximates an absolute disclaimer and - waiver of all liability. - - -Section 6 -- Term and Termination. - - a. This Public License applies for the term of the Copyright and - Similar Rights licensed here. However, if You fail to comply with - this Public License, then Your rights under this Public License - terminate automatically. - - b. Where Your right to use the Licensed Material has terminated under - Section 6(a), it reinstates: - - 1. automatically as of the date the violation is cured, provided - it is cured within 30 days of Your discovery of the - violation; or - - 2. upon express reinstatement by the Licensor. - - For the avoidance of doubt, this Section 6(b) does not affect any - right the Licensor may have to seek remedies for Your violations - of this Public License. - - c. For the avoidance of doubt, the Licensor may also offer the - Licensed Material under separate terms or conditions or stop - distributing the Licensed Material at any time; however, doing so - will not terminate this Public License. - - d. Sections 1, 5, 6, 7, and 8 survive termination of this Public - License. - - -Section 7 -- Other Terms and Conditions. - - a. The Licensor shall not be bound by any additional or different - terms or conditions communicated by You unless expressly agreed. - - b. Any arrangements, understandings, or agreements regarding the - Licensed Material not stated herein are separate from and - independent of the terms and conditions of this Public License. - - -Section 8 -- Interpretation. - - a. For the avoidance of doubt, this Public License does not, and - shall not be interpreted to, reduce, limit, restrict, or impose - conditions on any use of the Licensed Material that could lawfully - be made without permission under this Public License. - - b. To the extent possible, if any provision of this Public License is - deemed unenforceable, it shall be automatically reformed to the - minimum extent necessary to make it enforceable. If the provision - cannot be reformed, it shall be severed from this Public License - without affecting the enforceability of the remaining terms and - conditions. - - c. No term or condition of this Public License will be waived and no - failure to comply consented to unless expressly agreed to by the - Licensor. - - d. Nothing in this Public License constitutes or may be interpreted - as a limitation upon, or waiver of, any privileges and immunities - that apply to the Licensor or You, including from the legal - processes of any jurisdiction or authority. - - -======================================================================= - -Creative Commons is not a party to its public licenses. -Notwithstanding, Creative Commons may elect to apply one of its public -licenses to material it publishes and in those instances will be -considered the “Licensor.” The text of the Creative Commons public -licenses is dedicated to the public domain under the CC0 Public Domain -Dedication. Except for the limited purpose of indicating that material -is shared under a Creative Commons public license or as otherwise -permitted by the Creative Commons policies published at -creativecommons.org/policies, Creative Commons does not authorize the -use of the trademark "Creative Commons" or any other trademark or logo -of Creative Commons without its prior written consent including, -without limitation, in connection with any unauthorized modifications -to any of its public licenses or any other arrangements, -understandings, or agreements concerning use of licensed material. For -the avoidance of doubt, this paragraph does not form part of the public -licenses. - -Creative Commons may be contacted at creativecommons.org. \ No newline at end of file diff --git a/README.md b/README.md deleted file mode 100644 index abcba775..00000000 --- a/README.md +++ /dev/null @@ -1,54 +0,0 @@ -## Welcome to Phoenix Documentation - -This repository hosts the code for https://docs.phcode.dev/ . Please contribute -to this repo for helping the Phoenix/Brackets community. - -## License - -CC BY License Copyright (c) 2022-present, core.ai - -# Website - -This website is built using [Docusaurus 2](https://docusaurus.io/), a modern -static website generator. - -### Installation - -``` -$ npm install -``` - -### Local Development - -``` -$ npm run start -``` - -This command starts a local development server and opens up a browser window. -Most changes are reflected live without having to restart the server. - -### Build - -``` -$ npm run build -``` - -This command generates static content into the `build` directory and can be -served using any static contents hosting service. - -### Deployment - -Using SSH: - -``` -$ USE_SSH=true npm run deploy -``` - -Not using SSH: - -``` -$ GIT_USER= npm run deploy -``` - -If you are using GitHub pages for hosting, this command is a convenient way to -build the website and push to the `gh-pages` branch. diff --git a/SECURITY.md b/SECURITY.md deleted file mode 100644 index 2cd2b52b..00000000 --- a/SECURITY.md +++ /dev/null @@ -1,28 +0,0 @@ -# Security Policy - -## Supported Versions - -| Version | Supported | -| ------- | ------------------ | -| > 1.0 | :white_check_mark: | -| < 1.0 | :x: | - -## Reporting a Vulnerability - -If you have found a potential security threat, vulnerability or exploit in Phoenix Code Editor -or one of its upstream dependencies, please DON’T create a pull-request, DON’T -file an issue on GitHub, DON’T mention it on Discord and DON’T create a forum thread. - -Please submit your report via the [GitHub Private Vulnerability Disclosure functionality](https://github.com/phcode-dev/phoenix/security/advisories/new). - -Find out more about the reporting process [here](https://docs.github.com/en/code-security/security-advisories/guidance-on-reporting-and-writing/privately-reporting-a-security-vulnerability#privately-reporting-a-security-vulnerability). - -Our team will triage your report and keep you informed about the progress. -We may ask questions or request further guidance on reproduction of the vulnerability in the comments of the advisory, which will be publicized. - -Additionally, we may ask you to independently verify our patch, which will be available in the private advisory branch. Please do not publish your vulnerability during the process or before coordinated public disclosure from our side. We try to adhere to common standards of publication within 90-Days of disclosure. - -Depending on your decision to accept or deny credit for the vulnerability, you will be publicly attributed to the vulnerability and may be mentioned in our announcements. - -At the current time we do not have the financial ability to reward bounties, -but in extreme cases will at our discretion consider a reward. diff --git a/api/01-getting-started.md b/api/01-getting-started.md deleted file mode 100644 index 306cb805..00000000 --- a/api/01-getting-started.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Getting Started ---- - -This guide provides an overview on the documentation structure and how to get started with the Phoenix Code API documentation! - -## Documentation Structure - -The Phoenix Code API documentation is organized into sections for easy navigation. Here’s a quick overview of the key sections: - -### [Creating Themes](./creating-themes) -This page provides guidelines on how to create custom Themes for **Phoenix Code**. - -### [Creating Extensions](./creating-extensions) -This page provides guidelines on how to write Extensions for **Phoenix Code**. - -### [Use Node.js from extension](./creating-node-extensions) -This page explains how to use Node.js inside **Phoenix Code** extensions. - -### [Debugging Extensions](./debugging-extensions) -This page provides a detailed guide on efficiently debugging your **Phoenix Code** extensions. - -### [Publishing Themes & Extensions](./publishing-extensions) -This page provides guidelines on how to publish Themes/Extensions to **Phoenix Code**. - -### [Available Standard Libraries](./available-standard-libs) -This page lists all the standard libraries that are available for use inside **Phoenix Code**. - -## API Reference - -The API-Reference directory contains detailed reference documentation for each part of the Phoenix Code API. Each page here corresponds to different components, functions, or modules of the API, providing explanations, usage examples, and detailed parameter descriptions. - -> This documentation is automatically generated from the source code. To learn more about how these docs are generated, refer to [this link](https://github.com/phcode-dev/phoenix/wiki/02-Writing-Docs). diff --git a/api/02-creating-themes.md b/api/02-creating-themes.md deleted file mode 100644 index 41530c23..00000000 --- a/api/02-creating-themes.md +++ /dev/null @@ -1,82 +0,0 @@ ---- -title: Creating Themes ---- - -import React from 'react'; -import VideoPlayer from '@site/src/components/Video/player'; - -This document outlines how to create your own themes for **Phoenix Code**. - -## Follow these steps to create a new theme: - -### Step 1: -Open this link [Theme-Template](https://github.com/phcode-dev/theme-template). -This is the default Phoenix Code theme template repository. - -![Theme Template Repo Image](images/creating-themes/theme-template-repo.png "Phoenix Code Theme Template Repository") - - -### Step 2: -Use the template to create your repository. - - - - -### Step 3: -Clone the repository you created in Step 2 to your local machine. - -Go to [https://create.phcode.dev](https://create.phcode.dev). This is a development-focused version of phcode.dev which shows non minified JS/CSS files in the browser developer tools. - -Now, open the cloned folder in `create.phcode.dev`. Refer to [this guide](https://docs.phcode.dev/docs/quick-start-project#open-folder) to see how to open a folder in Phoenix Code. - -![Cloned Repo Image](images/creating-themes/open-cloned-repo.png "Open the cloned repository") - - -### Step 4: - -Now, go to `package.json` file and update the values accordingly. - -Here is a quick reference :- - -| Field | Description | -| --- | --- | -| `title` | Replace "Name of the theme" with the actual title of your theme. | -| `name` | Change `github--` to your specific package name, formatted as `github-yourusername-repositoryname`. | -| `description` | Update to a brief, relevant description about your theme. | -| `version` | Start with "0.0.1" or update to reflect your current version following semantic versioning. | -| `license` | Confirm "MIT" is suitable or specify another license, if necessary. | -| `author` | Replace with your name and a link to your GitHub profile or another URL. | -| `homepage` | Set to the URL of your project’s homepage or GitHub repository. | -| `engines` | Ensure compatibility with the required Brackets version, e.g., ">=3.0.0". | -| `categories` | Update "demo" with relevant categories that fit your theme. | -| `keywords` | Update or append additional keywords that describe your theme. Example :- ‘dark-theme’, ‘aesthetic’, ‘blue’. | -| `theme` | Make sure all necessary theme files and folders are included. Set “Dark” to `true` if its a dark theme, else `false`. | - -Save the file after making all the changes. - - -### Step 5: - -Now, go to `my-theme.less` file. Click on `Debug` in the Menu bar and select `Load Project As Extension`. - -![Debug Menu Image](images/creating-themes/debug-menu.png "Click on Debug > Load Project As Extension") - -This should be the default output. - -![Default Theme Image](images/creating-themes/default-theme.png "Make changes in this theme") - -This file contains all the UI elements as variables. You can modify the colors as per your needs and live preview them. - - - -> You can also select `Debug > Reload Project As Extension` to test the new code changes. - -When you are done developing the theme, select `Debug > Unload Project As Extension` to unload the theme. - -Once the theme is complete, you can publish it to [phcode.dev](https://phcode.dev) extension repository. - -Refer to [this link](./publishing-extensions) to see how to publish the theme. diff --git a/api/03-creating-extensions.md b/api/03-creating-extensions.md deleted file mode 100644 index a68cbab4..00000000 --- a/api/03-creating-extensions.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: Creating Extensions ---- - -This document outlines how to write your own extensions for **Phoenix Code**. - -## How to create a new Extension -Click on the link below and follow the instructions there to start: -[Create an Extension](https://github.com/phcode-dev/extension-template) - -## API docs -Please refer to the links below for extension API docs and code references. -* Phoenix Code APIs - [API Reference](./API-Reference/NodeConnector) -* Take a look at our default extensions for code reference - [Default Extensions](https://github.com/phcode-dev/phoenix/tree/main/src/extensions/default) - -## Running and Debugging your Extension -Follow the steps below to run and debug your extension: - -* Clone your extension repository onto the machine. - -* Go to [https://create.phcode.dev](https://create.phcode.dev). This is a development-focused version of phcode.dev which shows non minified JS/CSS files in the browser developer tools. - -* Now, open the cloned folder in `create.phcode.dev`. -> Refer to [this guide](https://docs.phcode.dev/docs/quick-start-project#open-folder) to see how to open a folder in Phoenix Code. -* Select `Debug > Load Project As Extension` - - -![Debug Menu Image](images/creating-themes/debug-menu.png "Click on Debug > Load Project As Extension") - -* The extension will be loaded in Phoenix Code. - -* You can now make code changes and live preview them. - -> You can also select `Debug > Reload Project As Extension` to test the new code changes. - -* When you are done developing the extension, select `Debug > Unload Project As Extension` to unload the extension. - -**You can use the browser developer tools to debug the extension.** - - diff --git a/api/04-creating-node-extensions.md b/api/04-creating-node-extensions.md deleted file mode 100644 index 9351963f..00000000 --- a/api/04-creating-node-extensions.md +++ /dev/null @@ -1,70 +0,0 @@ ---- -title: Use node.js from your extension ---- - -This document outlines how to create node extensions for **Phoenix Code**. - -## What is a Node Extension? - -Node Extensions in Phoenix Code bring the power of Node.js to your desktop development environment, unlocking access to the vast npm ecosystem for building feature-rich extensions. By leveraging Node.js runtime capabilities, these extensions can perform system-level operations like executing commands, accessing local files, or integrating with external applications – functionalities that aren't possible in traditional browser-based extensions. - -One of the key advantages of Node Extensions is their ability to handle computationally intensive tasks without impacting the editor's performance. While browser-based extensions run in the main thread and can potentially freeze the UI during heavy processing, Node Extensions can offload these operations to separate processes. This makes them ideal for scenarios involving extensive image processing, code analysis, or other resource-demanding tasks. Whether you're building a system integration tool or implementing complex background processing, Node Extensions provide the perfect foundation for creating powerful, responsive extensions in Phoenix Code's desktop environment. -For cross-platform compatibility between desktop and browser environments, you can alternatively use Web Workers to handle computation-intensive tasks. This approach requires bundling any npm dependencies using webpack or similar tools before they can run in the browser. Check out our [Web Worker Communication guide](https://docs.phcode.dev/api/API-Reference/worker/WorkerComm) for detailed instructions on implementing and managing Web Workers in your extension. - -Important: When using Node Extensions for heavy computational tasks, make sure to fork a separate Node.js process or worker rather than running operations in the main Node.js process. This separation ensures optimal performance and stability of your extension within Phoenix Code. - -## How to create a Node Extension - -To create a new node extension for Phoenix Code, use [this template](https://github.com/phcode-dev/extension-node-template). This template extension works in the browser as well as desktop builds. In browser, it will not use node, and node.js based functionalities are not available. Desktop builds can use node capabilities. - -In desktop builds, there is an additional capability to execute node.js code. This is helpful if you want to extend the functionality of Phoenix Code using the vast npm library. - -For creating extensions that do not need node, use: [https://github.com/phcode-dev/extension-template](https://github.com/phcode-dev/extension-template) - - -## Setting up node extensions - -In package.json, add the following section - -``` -{ - "nodeConfig": { - "nodeIsRequired": false, - "main": "node/index.js", - "npmInstall": "node/" - } -} -``` - -## nodeConfig Object - -The nodeConfig object indicates that this is a Node extension. -### nodeIsRequired Field - -Set this field to `true` if the extension relies on Node and won't function without it. -If set to `false` or omitted, the extension can still be loaded in browser versions of Phoenix code without Node support, but it will use Node in native builds. -It will be shown in the extension manager dialog in browser builds as well. - -### main Field - -Specifies the main entry point for the Node.js component of the extension. -Should point to the main JavaScript file for the Node part of the extension. -Example: "main": "node/index.js" - -### npmInstall Field (Optional) - -Specifies the path to run npm install when the user installs the extension from the extension manager. -It's advisable not to package node_modules inside the extension. Only the package lock file should be distributed. -Example: "npmInstall": "node/" - -## Communicating between node.js and Phoenix Code - -Use the [NodeConnector-API](https://docs.phcode.dev/api/API-Reference/NodeConnector) to call functions and send events between your node.js and Phoenix Code extension components. - -This is available as a global object global.createNodeConnector. - -[EventDispatcher-API](https://docs.phcode.dev/api/API-Reference/utils/EventDispatcher) is also available in the global context as global.EventDispatcher for event trigger/listen within node. - - -## Using this template -[Click Here](https://github.com/phcode-dev/extension-node-template/blob/main/README.md#using-this-template) for the instructions on how to use this template. \ No newline at end of file diff --git a/api/05-debugging-extensions.md b/api/05-debugging-extensions.md deleted file mode 100644 index c562fefb..00000000 --- a/api/05-debugging-extensions.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: Debugging Extensions ---- - -The Debug menu provides several options for extension development. - -![Debug Menu](./images/debugging-extensions/debug-menu.png "Debug Menu") - -## Phoenix Code Developer Tools - -The `Phoenix Code Developer Tools` option (shortcut: F12) opens up the DevTools. Use this to inspect the DOM, preview logs and debug scripts. - -![Phoenix Code Developer Tools](./images/debugging-extensions/dev-tools.png "Phoenix Code Developer Tools") - -## Phoenix Code Diagnostic Tools - -To open Phoenix Code Diagnostic tools, click on the `Debug` menu on the menu bar and navigate to the `Phoenix Code Diagnostic Tools` option. This section provides several tools for debugging purposes. - -![Phoenix Code Diagnostic Tools](./images/debugging-extensions/diagnostic-tools.png "Phoenix Code Diagnostic Tools") - -### Available Diagnostic Tools - -1. `Run Phoenix Code Tests` - Executes built-in tests to verify the functionality of Phoenix Code. - -2. `Build Editor Tests` - Builds and runs tests specifically for the editor environment. - -3. `Enable Detailed Logs` - Activates verbose logging for better insight into extension behavior. Use this to identify errors or unexpected behaviors during development. - -4. `Enable PhNode Inspector` - Launches the PhNode inspector, allowing in-depth inspection of the extension runtime environment. - -5. `How to Inspect PhNode` - Provides a guide to effectively use the PhNode Inspector. -![Inspect Phnode](./images/debugging-extensions/inspect-phnode.png "Inspect Phnode") - -6. `Live Preview Logs` - Displays real-time logs for active live previews, helping debug changes dynamically. - -7. `Show Performance Data` - Generates performance metrics to identify bottlenecks or performance issues within the extension. - -8. `Open Virtual File System` - Opens and inspects the virtual file system used by Phoenix Code. - -## FAQs - -Q. Why is console.log not displaying? - -- By default, console logs are disabled. To enable them, click on Enable Detailed Logs under Phoenix Code Diagnostic Tools. \ No newline at end of file diff --git a/api/06-publishing-extensions.md b/api/06-publishing-extensions.md deleted file mode 100644 index 21e44af9..00000000 --- a/api/06-publishing-extensions.md +++ /dev/null @@ -1,70 +0,0 @@ ---- -title: Publishing Themes & Extensions ---- - -This document outlines how to publish your Extensions/Themes to Phoenix Code Extension store. - -## Publishing Extensions/Themes. -Extensions created from the Phoenix Code extension/theme template can be easily published from your GitHub repository to the store. - -Follow these steps: - -1. Increment the `version` field in `package.json` file before publishing, if needed. -2. Compress the extension folder into a zip file with name `extension.zip`. -> **It is important to name the file as exactly `extension.zip`** - -![Compress folder Image](./images/publishing-extensions/compress-to-zip.png "Compress the folder into a zip file") - -3. Create a new release in GitHub and attach the above `extension.zip` file in the release. - 1. On GitHub.com, navigate to the main page of the repository. - 2. To the right of the list of files, click `Releases`. - - ![Github Releases Image](./images/publishing-extensions/release-github.png "Click on Releases") - - 3. Click on `Draft a new release`. - - ![Draft New Release Image](./images/publishing-extensions/draft-new-release.png "Click on Draft a new release") - - 4. Select `choose a tag` and type in your new extension version and `Create new tag`. - - ![Create New Tag](./images/publishing-extensions/create-new-tag.png "Click on Choose a tag > create new tag") - - 5. Fill out all the remaining fields. - 6. Drag and drop the `extension.zip` file to the release. - - ![Drag-Drop-Zip-File](./images/publishing-extensions/drag-drop.gif "Drag and drop the extension.zip file to release") - - 7. Click on `Publish release` button. - > See Release Example: https://github.com/phcode-dev/extension-template/releases/tag/0.0.1 -4. You will get an issue in your issue tab regarding the publishing status of the extension/theme. - > See Example: https://github.com/phcode-dev/extension-template/issues/2 -5. If there are any errors in publishing, please visit the link in the issue to see the errors. Fix and `retry` publishing the release. - - ![Publish Failed Image](./images/publishing-extensions/publish-failed.png "Publish Failed") - -6. Once published, your extension will appear in the Phoenix Code Extension Store at [https://phcode.dev](https://phcode.dev). - - ![Extension Store Image](./images/publishing-extensions/extension-store.png "Phoenix Code Extension Store") - -## Publishing legacy Brackets extensions -> Follow this section only for old brackets extensions. - -To publish Extensions/themes that are not created from the above [theme](https://github.com/phcode-dev/theme-template) and [extension](https://github.com/phcode-dev/extension-template) template -or old Brackets extensions, please follow the steps below: - -1. Create a GitHub repository for your extension if it is not present. -2. Create a file `.github/workflows/publishToPhcode.yml` in your repo with the following contents: https://github.com/phcode-dev/theme-template/blob/main/.github/workflows/publishToPhcode.yml - -That's all, you can now follow the above [Publishing to the extension/theme store](#publishing-to-the-extensiontheme-store) section. - -## FAQ -### Why is my extension not being published? -Your repository must be **public** to be able to be published to the Phoenix Code Extension store. -See this link on [understanding how to change repository visibility](https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/setting-repository-visibility#changing-a-repositorys-visibility) to public in GitHub. - -### How can I get a Verified Badge for my extension? -The `verified` extension badge(tick mark) will be automatically granted to verified GitHub Organizations. - -### How do I delete my extension from the store -Please raise an issue here: https://github.com/phcode-dev/phoenix/issues/new/choose, mention your extension repository. - diff --git a/api/07-available-standard-libs.md b/api/07-available-standard-libs.md deleted file mode 100644 index ac656579..00000000 --- a/api/07-available-standard-libs.md +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: Available Standard Libraries ---- - -The following standard libraries are available inside Phoenix Code: - -## jquery -jQuery is a JavaScript library designed to simplify HTML DOM tree traversal and manipulation, as well as event handling, CSS animations, and Ajax. -* credits: https://jquery.com/ - -## fontawesome - -Fontawesome is used for iconography in Phoenix Code. -* credits: https://fontawesome.com/ - -### Usage - -```html - - - - - -``` - -Reference: https://fontawesome.com/docs/web/add-icons/how-to - -See the following urls for available icons: -1. https://fontawesome.com/v5/cheatsheet/free/solid -2. https://fontawesome.com/v5/cheatsheet/free/regular -3. https://fontawesome.com/v5/cheatsheet/free/brands - -## devicon - -devicon is used for iconography in Phoenix Code. - ->usage: similar to fontawesome - -* credits: https://devicon.dev/ - -## file-icons - -file-icon is used for iconography in Phoenix Code. - -> usage: similar to fontawesome - -* credits: https://uiwjs.github.io/file-icons/index.html - -## Additional icon sources -This is not included in Phoenix, but you can get icons from -1. [Ionicons](http://ionicons.com) - -### Usage - -```html - - -``` -**NB**: Svg icons are not integrated in source. - -Reference: https://www.npmjs.com/package/devicon - -See the following urls for available icons: -https://devicon.dev/ diff --git a/api/08-How-To/Dialogs.md b/api/08-How-To/Dialogs.md deleted file mode 100644 index ff31a975..00000000 --- a/api/08-How-To/Dialogs.md +++ /dev/null @@ -1,281 +0,0 @@ ---- -title: Show Dialogs ---- - -This document outlines the basic features of working with Dialogs, including: - -* [How to add a Dialog Box with buttons](#adding-a-dialog-box-and-buttons) -* [How to create custom Dialog Box](#creating-custom-dialog-boxes) -* [How to handle the button clicks](#handle-button-clicks) - -## Adding a Dialog Box and Buttons - -To add a dialog box, follow these steps: - -1. **Import the required modules.** -Import the `Dialogs` and `DefaultDialogs` modules along with other necessary modules: - -```jsx -const DefaultDialogs = brackets.getModule("widgets/DefaultDialogs"), - Dialogs = brackets.getModule("widgets/Dialogs"); - - // other modules you may require -const AppInit = brackets.getModule("utils/AppInit"), - CommandManager = brackets.getModule("command/CommandManager"), - Menus = brackets.getModule("command/Menus"); - -``` - -2. **Create a function to show the dialog** - - To create a dialog you can use the specialized dialog APIs such as `Dialogs.showConfirmDialog`, `Dialogs.showInfoDialog` and `Dialogs.showErrorDialog` provided by the `Dialogs` module: - - -```jsx -function handleHelloWorld() { - Dialogs.showInfoDialog( - "hello", // Title - "world" // Message - ); -} -``` - -The `Dialogs.showInfoDialog()` method is the preferred way to display information messages. - -Similarly, you can use `Dialogs.showErrorDialog()` for error messages: - -```jsx -function handleError() { - Dialogs.showErrorDialog( - "Error", - "Something went wrong!" - ); -} -``` - -You can also close the dialog programmatically using the `Dialog.close()` method. - -```jsx -function handleHelloWorld() { - const dialog = Dialogs.showInfoDialog( - "hello", - "world" - ); - - // Close the dialog after 2 seconds - setTimeout(() => { - dialog.close(); - }, 2000); -} -``` - -This will automatically close the dialog after 2 seconds. - -These specialized dialog methods handle the common use cases. - -Click on the functions to read more about them : [showConfirmDialog()](https://docs.phcode.dev/api/API-Reference/widgets/Dialogs#showConfirmDialog), [showInfoDialog](https://docs.phcode.dev/api/API-Reference/widgets/Dialogs#showInfoDialog), [showErrorDialog](https://docs.phcode.dev/api/API-Reference/widgets/Dialogs#showErrorDialog). - -If you require custom buttons or advanced functionality, you can use the generic `showModalDialog()` method. - -[Click here](#creating-custom-dialog-boxes) to read more about creating custom dialog boxes. - -3. **Register the command** -Register a command that will trigger the dialog: - -```jsx -const MY_COMMAND_ID = "helloworld_sayhello"; -CommandManager.register("Hello World", MY_COMMAND_ID, handleHelloWorld); -``` - -4. **Add the menu item** -Add a menu item that will execute the command: - -```jsx -const menu = Menus.getMenu(Menus.AppMenuBar.FILE_MENU); -menu.addMenuItem(MY_COMMAND_ID); -``` - -Full Code Example: - -```jsx -define(function (require, exports, module) { - "use strict"; - - // Brackets modules - const AppInit = brackets.getModule("utils/AppInit"), - DefaultDialogs = brackets.getModule("widgets/DefaultDialogs"), - Dialogs = brackets.getModule("widgets/Dialogs"), - CommandManager = brackets.getModule("command/CommandManager"), - Menus = brackets.getModule("command/Menus"); - - // Function to run when the menu item is clicked - function handleHelloWorld() { - Dialogs.showInfoDialog( - "hello", - "world" - ); - } - - // Register command - const MY_COMMAND_ID = "helloworld_sayhello"; - CommandManager.register("Hello World", MY_COMMAND_ID, handleHelloWorld); - - // Add menu item - const menu = Menus.getMenu(Menus.AppMenuBar.FILE_MENU); - menu.addMenuItem(MY_COMMAND_ID); - - // Initialize extension - AppInit.appReady(function () { - console.log("hello world"); - }); -}); -``` - -Expected Output: - -When the menu item is clicked, a dialog box appears: - -![Dialog box](./images/dialog.png) - - -## Creating Custom Dialog Boxes - -While the specialized dialog methods like `showInfoDialog()`, `showConfirmDialog()` and `showErrorDialog()` cover the common use cases, you can also create more complex custom dialog boxes using `showModalDialog()`. Here's how: - -```jsx -const dialog = Dialogs.showModalDialog( - DefaultDialogs.DIALOG_ID_INFO, - "Custom Dialog", - // Custom HTML content with CSS styling - '
' + - '

This is a custom message

' + - '' + - "
", - [ - // For buttons - { - className: Dialogs.DIALOG_BTN_CLASS_PRIMARY, - id: Dialogs.DIALOG_BTN_OK, - text: "OK", - }, - { - className: Dialogs.DIALOG_BTN_CLASS_NORMAL, - id: Dialogs.DIALOG_BTN_CANCEL, - text: "Cancel", - }, - ] -); -``` - -The `showModalDialog()` method provides more flexibility, allowing you to create custom dialog boxes with HTML content and buttons. However, it's recommended to use the specialized dialog APIs like `showInfoDialog()`, `showConfirmDialog()` and `showErrorDialog()` whenever possible, as they provide a simpler and more standardized interface for the most common dialog types. - -Visual Reference - -![Custom Dialog Box](./images/custom-dialog.png) - -[Click Here](https://docs.phcode.dev/api/API-Reference/widgets/Dialogs#showModalDialog) to read more about `showModalDialog()`. - -→ Each button object can have: - -- `className`: Button styling class -- `id`: Button identifier -- `text`: Button label text - -→ Available Button Classes: - -- `Dialogs.DIALOG_BTN_CLASS_PRIMARY`: Primary action button -- `Dialogs.DIALOG_BTN_CLASS_NORMAL`: Normal button -- `Dialogs.DIALOG_BTN_CLASS_LEFT`: Left-aligned button - -→ Common Button IDs: - -- `Dialogs.DIALOG_BTN_OK` -- `Dialogs.DIALOG_BTN_CANCEL` -- `Dialogs.DIALOG_BTN_SAVE_AS` -- `Dialogs.DIALOG_BTN_DONTSAVE` -- `Dialogs.DIALOG_BTN_DOWNLOAD` - -## Handle Button Clicks - -You can handle button clicks using the dialog's promise: - -```jsx -dialog.done(function (buttonId) { - if (buttonId === Dialogs.DIALOG_BTN_OK) { - const inputValue = $input.val(); - alert("Input value: " + inputValue); - } -}); -``` - -Complete Code Block with Custom Dialog Box and handling the button clicks. - -```jsx -define(function (require, exports, module) { - "use strict"; - - const AppInit = brackets.getModule("utils/AppInit"), - DefaultDialogs = brackets.getModule("widgets/DefaultDialogs"), - Dialogs = brackets.getModule("widgets/Dialogs"), - CommandManager = brackets.getModule("command/CommandManager"), - Menus = brackets.getModule("command/Menus"); - - function showCustomDialog() { - const dialog = Dialogs.showModalDialog( - DefaultDialogs.DIALOG_ID_INFO, - "Custom Dialog", - // Custom HTML content - '
' + - '

This is a custom message

' + - '' + - "
", - [ - { - className: Dialogs.DIALOG_BTN_CLASS_PRIMARY, - id: Dialogs.DIALOG_BTN_OK, - text: "OK" - }, - { - className: Dialogs.DIALOG_BTN_CLASS_NORMAL, - id: Dialogs.DIALOG_BTN_CANCEL, - text: "Cancel" - } - ] - ); - - // Get dialog element and ensure input is accessible - const $dlg = dialog.getElement(); - const $input = $dlg.find("#custom-input"); - - if (!$input.length) { - console.error("Failed to find input element in dialog"); - return; - } - - // Handle dialog button clicks - dialog.done(function (buttonId) { - if (buttonId === Dialogs.DIALOG_BTN_OK) { - const inputValue = $input.val(); - alert("Input value: " + inputValue); - } - }); - } - - // Register command - const MY_COMMAND_ID = "test_customdialog"; - CommandManager.register("Show Custom Dialog", MY_COMMAND_ID, showCustomDialog); - - // Add menu item - const menu = Menus.getMenu(Menus.AppMenuBar.FILE_MENU); - menu.addMenuItem(MY_COMMAND_ID); - - // Initialize extension - AppInit.appReady(function () { - console.log("Custom dialog extension loaded"); - }); -}); -``` - -Visual Reference - -![Custom-dialog-box-gif](./images/custom-dialog-box-gif.gif) \ No newline at end of file diff --git a/api/08-How-To/Menus.md b/api/08-How-To/Menus.md deleted file mode 100644 index 4ba1a595..00000000 --- a/api/08-How-To/Menus.md +++ /dev/null @@ -1,386 +0,0 @@ ---- -title: Add Menus, Menu items and Keyboard Shortcuts ---- - -This document outlines the basic features of working with Menus, including: - -* [How to add a Menu](#adding-a-menu) -* [How to add a SubMenu](#adding-a-sub-menu) -* [How to add a Menu item](#adding-a-menu-item) -* [How to position a Menu item](#position-the-menu-item) -* [How to add a keyboard shortcut to a Menu item](#attach-a-keyboard-shortcut-to-a-menu-item) - - -## Adding a Menu - -To add a custom menu, follow these steps :- - -1. **Import the `Menus` module.** - To use the menu functionality, import the `Menus` module: - - ```jsx - const Menus = brackets.getModule("command/Menus"); - ``` - -2. **Create the menu.** - - Use `Menus.addMenu()` to add a menu to the menu bar. Provide the display name and the identifier. *The identifier must be written in* `snake_case`. -
- > Providing the identifier is necessary to display the menu on the menu bar. This identifier may later be used to add menu items inside it or even remove the menu if needed. - - ```jsx - // Add a menu to the menu bar - const menu = Menus.addMenu('Test', 'Test_Extension_Docs'); - ``` - - -> For a detailed description, refer to [this link](https://docs.phcode.dev/api/API-Reference/command/Menus#addMenu). - -Full Code Example :- - -```jsx -define(function (require, exports, module) { - "use strict"; - - // Brackets modules - const AppInit = brackets.getModule("utils/AppInit"), - Menus = brackets.getModule("command/Menus"); - - // Add a menu to the menu bar - const menu = Menus.addMenu('Test', 'Test_Extension_Docs'); - - // Initialize extension once shell is finished initializing. - AppInit.appReady(function () { - console.log("hello world"); - }); -}); -``` - -Expected Output :- - -![Adding a menu](./images/add-menu.png) - - -## Adding a Menu Item - -To add a menu item, follow these steps :- - -1. **Import the `Menus` and `CommandManager` module.** - - These modules allow you to register commands and add items to menus: - - ```jsx - const CommandManager = brackets.getModule("command/CommandManager"); - const Menus = brackets.getModule("command/Menus"); - ``` - - -2. **Register the Command** - -Use `CommandManager.register()` to associate an ID with a function: - -```jsx -function handleTestExtension() { - alert("Test menu item"); -} - -// The `CommandID` must be written in snake_case -const MY_COMMAND_ID = "test_menuitem"; -CommandManager.register("Test", MY_COMMAND_ID, handleTestExtension); -``` - -- The first argument is the label for the menu item. -- The second argument is a unique command ID. -- The third argument is the handler function to execute when the item is clicked. - -3. **Add the Menu Item** -To add the menu item, use `menu.addMenuItem()`. For instance, if you wish to add an item to the **File menu**, you can write: - - - ```jsx - const menu = Menus.getMenu(Menus.AppMenuBar.FILE_MENU); - menu.addMenuItem(MY_COMMAND_ID); - ``` - - -> These are some of the menus available by default :- - -- FILE_MENU : ‘file-menu’ -- EDIT_MENU : ‘edit-menu’ -- FIND_MENU : ‘find-menu’ -- VIEW_MENU : ‘view-menu’ -- NAVIGATE_MENU : ‘navigate-menu’ - -You can also add menu items to any custom menus you create. - -> For a detailed description, refer to [this link](https://docs.phcode.dev/api/API-Reference/command/Menus#addMenuItem). - -Full Code Example :- - -```jsx -define(function (require, exports, module) { - "use strict"; - - // Brackets modules - const AppInit = brackets.getModule("utils/AppInit"), - CommandManager = brackets.getModule("command/CommandManager"), - Menus = brackets.getModule("command/Menus"); - - // Function to run when the menu item is clicked - function handleTestExtension() { - alert("Test menu item"); - } - - // The `CommandID` must be written in snake_case - const MY_COMMAND_ID = "test_menuitem"; - CommandManager.register("Test", MY_COMMAND_ID, handleTestExtension); - - // Add Menu item - const menu = Menus.getMenu(Menus.AppMenuBar.FILE_MENU); - menu.addMenuItem(MY_COMMAND_ID); - - // Initialize extension once shell is finished initializing. - AppInit.appReady(function () { - console.log("hello world"); - }); -}); -``` - -Expected Output :- - -![Menu Item Example](./images/menu-item-example.png) - -![Menu Item Dialog](./images/menu-item-dialog.png) - -The alert box that appears when the `Test` menu item is clicked! - - -## Position the Menu Item - -You can position the menu item to make it appear at the first, last or before/after a given item. - -To position the menu item at the top, use - -```jsx -// second parameter is for keyboard shortcut. Empty string means no shortcut. -menu.addMenuItem(MY_COMMAND_ID, "", Menus.FIRST); -``` - -![Menu Item at first](./images/menu-item-first.png) - -`Menus.FIRST` is used to position it before every other item. *Note: It is recommended to avoid using this and prefer relative menu IDs for better positioning.** - -`Menus.LAST` is used to position it at the end. It is the Default value. - -To position the menu item before or after any item, use - -```jsx -// second parameter is for keyboard shortcut. Empty string means no shortcut. -menu.addMenuItem(MY_COMMAND_ID, "", Menus.BEFORE, Commands.FILE_SAVE_AS); -``` - -- Third parameter must specify `BEFORE` or `AFTER` the item should be set. -- Fourth parameter must specify the “relativeID” of the menu item to set the position. - -![Menu Item before/after](./images/menu-item-before-after.png) - -Here, the menu item is set before the `Save As...` option. - -To get the list of all the `RelativeIDs` available by default, refer to [this link](https://docs.phcode.dev/api/API-Reference/command/Commands). - - -## Attach a keyboard shortcut to a Menu Item - -You can assign a keyboard shortcut to your menu item. - -*Note: Only add shortcuts if they're essential and frequently used, ensuring compatibility across platforms. Users can set custom shortcuts, so default shortcuts should be reserved only for high-use actions.* - -To add the keyboard shortcut, use :- - -1. Import the `KeyBindingManager` module. - - ```jsx - const KeyBindingManager = brackets.getModule("command/KeyBindingManager"); - ``` - - -2. Add the keyboard shortcut to `addMenuItem`. The keyboard shortcut will be displayed next to the menu item in the UI. - - > Ensure that the keyboard shortcut you choose doesn't conflict with any existing shortcuts already in use. - - ```jsx - menu.addMenuItem(MY_COMMAND_ID, "Ctrl-Alt-T", Menus.FIRST); - ``` - - ![Menu Item keyboard shortcut](./images/menu-item-keyboard-shortcut.png) - -3. Register the keyboard shortcut. To register use `addBinding()`. The first parameter will be the `CommandID` of the menu item and the second parameter will be the keyboard shortcut. - - ```jsx - KeyBindingManager.addBinding(MY_COMMAND_ID, "Ctrl-Alt-T"); - ``` - - -That's it! Now, pressing the assigned keyboard shortcut will trigger the corresponding menu item. - -> For a detailed description, refer to [this link](https://docs.phcode.dev/api/API-Reference/command/KeyBindingManager). - -Full Code Example :- - -```jsx -define(function (require, exports, module) { - "use strict"; - - // Brackets modules - const AppInit = brackets.getModule("utils/AppInit"), - CommandManager = brackets.getModule("command/CommandManager"), - Menus = brackets.getModule("command/Menus"), - KeyBindingManager = brackets.getModule("command/KeyBindingManager"); - - // Function to run when the menu item is clicked - function handleTestExtension() { - alert("Test menu item"); - } - - const MY_COMMAND_ID = "test_menuitem"; - CommandManager.register("Test", MY_COMMAND_ID, handleTestExtension); - - // Add Menu item - const menu = Menus.getMenu(Menus.AppMenuBar.FILE_MENU); - - menu.addMenuItem(MY_COMMAND_ID, "Ctrl-Alt-T", Menus.FIRST); - - // Register the keyboard shortcut - KeyBindingManager.addBinding(MY_COMMAND_ID, "Ctrl-Alt-T"); - - // Initialize extension once shell is finished initializing. - AppInit.appReady(function () { - console.log("hello world"); - }); -}); -``` - -## Adding a Sub Menu - -To add a submenu to an existing menu item, follow these steps: - -1. **Import the `Menus` and `CommandManager` modules** - -```jsx -const CommandManager = brackets.getModule("command/CommandManager"); -const Menus = brackets.getModule("command/Menus"); -``` - -2. **Create and register the main command** -First, create a command that will serve as the parent menu item: - -```jsx -function handleTestExtension() { - alert("Test menu item"); -} - -const MY_COMMAND_ID = "Test"; -CommandManager.register("Test", MY_COMMAND_ID, handleTestExtension); -``` - -3. **Get the parent menu and create the submenu** -Use `menu.addSubMenu()` to create a submenu under an existing menu: - -```jsx -const menu = Menus.getMenu(Menus.AppMenuBar.FILE_MENU); -const subMenu = menu.addSubMenu(MY_COMMAND_ID, "Test_Sub_Menu"); -``` - -- First parameter is the command ID of the parent menu item -- Second parameter is the identifier for the submenu (must be in `snake_case`) - -4. **Create and register submenu commands** -Register commands for each submenu item: - -```jsx -const SUB_COMMAND_1 = "Test_SubCommand1"; -const SUB_COMMAND_2 = "Test_SubCommand2"; - -CommandManager.register("Sub Item 1", SUB_COMMAND_1, function() { - alert("Sub Item 1 clicked"); -}); -CommandManager.register("Sub Item 2", SUB_COMMAND_2, function() { - alert("Sub Item 2 clicked"); -}); -``` - -5. **Add items to the submenu** -Use `addMenuItem()` to add the registered commands to your submenu: - -```jsx -subMenu.addMenuItem(SUB_COMMAND_1); -subMenu.addMenuDivider(); // Add a separator line -subMenu.addMenuItem(SUB_COMMAND_2); -``` - -> For visual separation between menu items, you can add a divider using `addMenuDivider()`. - -→ For a detailed description, refer to [this link](https://docs.phcode.dev/api/API-Reference/command/Menus#addSubMenu). - -Full Code Example: - -```jsx -define(function (require, exports, module) { - "use strict"; - - // Brackets modules - const AppInit = brackets.getModule("utils/AppInit"), - CommandManager = brackets.getModule("command/CommandManager"), - Menus = brackets.getModule("command/Menus"); - - // Function to run when the menu item is clicked - function handleTestExtension() { - alert("Test menu item"); - } - - // Main command - const MY_COMMAND_ID = "Test"; - CommandManager.register("Test", MY_COMMAND_ID, handleTestExtension); - - // Add menu item - const menu = Menus.getMenu(Menus.AppMenuBar.FILE_MENU); - - // Add sub menu - const subMenu = menu.addSubMenu(MY_COMMAND_ID, "Test_Sub_Menu"); - - // Additional submenu commands - const SUB_COMMAND_1 = "Test_SubCommand1"; - const SUB_COMMAND_2 = "Test_SubCommand2"; - - // Register new commands - CommandManager.register("Sub Item 1", SUB_COMMAND_1, function() { - alert("Sub Item 1 clicked"); - }); - CommandManager.register("Sub Item 2", SUB_COMMAND_2, function() { - alert("Sub Item 2 clicked"); - }); - - // Add items inside sub menu - subMenu.addMenuItem(SUB_COMMAND_1); - subMenu.addMenuDivider(); // Add separator - subMenu.addMenuItem(SUB_COMMAND_2); - - // Initialize extension once shell is finished initializing. - AppInit.appReady(function () { - console.log("hello world"); - }); -}); - -``` - -Expected Output: - -![Sub Menu](./images/submenu.png) - -When a submenu item is clicked, it will show an alert box with the corresponding message. - -> Note: Make sure all command IDs are unique throughout your extension to avoid conflicts. - -> You can add as many submenu items as needed by repeating steps 4 and 5 for each new item. You can even create nested submenu items. - -> Submenu items can have their own keyboard shortcuts using the same method described in the "Attach a keyboard shortcut to a menu item" section. \ No newline at end of file diff --git a/api/08-How-To/Panels.md b/api/08-How-To/Panels.md deleted file mode 100644 index 7901d706..00000000 --- a/api/08-How-To/Panels.md +++ /dev/null @@ -1,288 +0,0 @@ ---- -title: How to create Panels ---- - -In Phoenix Code, Panels are of two types :- `Plugin Panel` and `Bottom Panel`. - -**Plugin Panel** appears on the side of the screen, generally the left side. For Example :- *Live Preview* feature uses the `Plugin Panel`. - -![Plugin Panel Example](./images/plugin-panel-example.png) - - -**Bottom Panel** appears on the bottom of the screen as a tab. Multiple bottom panels share a tabbed interface where each panel gets its own tab with an icon and title. For Example :- *Git*, *Terminal*, *Problems* panel and many more use the `Bottom Panel`. - -![Bottom Panel Example](./images/bottom-panel-example.png) - - -This document outlines the basic features of working with Panels. - -* [How to create a Plugin Panel](#creating-a-plugin-panel) -* [How to manage Plugin Panel state](#managing-plugin-panel-state) -* [How to create a Bottom Panel](#creating-a-bottom-panel) -* [How to manage Bottom Panel state](#managing-bottom-panel-state) -* [Best Practices for Panels](#best-practices) - -## Creating a Plugin Panel - -To create a plugin panel, follow these steps: - -1. **Import the `WorkSpaceManager` modules** - ```jsx - const WorkspaceManager = brackets.getModule("view/WorkspaceManager"); - ``` - -2. **Create panel content** - Create a jQuery object containing your panel's HTML content: - ```jsx - const $panel = $("
") - .attr("id", "my-extension-panel") - .html("

My Plugin Panel

Hello from the panel!

"); - ``` - -3. **Create toolbar icon** - Create a toolbar icon to toggle the panel. - > Creating a toolbar icon is mandatory, else the panel won't show up. - -4. **Create the plugin panel** - Use `WorkspaceManager.createPluginPanel()` to create your panel: - ```jsx - const pluginPanel = WorkspaceManager.createPluginPanel( - "myextension.panel", // Unique ID using package-style naming - $panel, // jQuery object for panel content - 200, // minSize in pixels - $toolbarIcon, // toolbar icon - 400 // initialSize in pixels (optional) - ); - ``` - -> For a detailed description, refer to [this link](https://docs.phcode.dev/api/API-Reference/view/WorkspaceManager#createPluginPanel). - - -Full Code Example: - -```jsx -define(function (require, exports, module) { - "use strict"; - - // Brackets modules - const AppInit = brackets.getModule("utils/AppInit"), - CommandManager = brackets.getModule("command/CommandManager"), - Menus = brackets.getModule("command/Menus"), - WorkspaceManager = brackets.getModule("view/WorkspaceManager"); - - let pluginPanel; // Store panel reference - - // Function to run when the menu item is clicked - function handleTestExtension() { - if (!pluginPanel) { - // Create panel content - const $panel = $("
") - .attr("id", "my-extension-panel") - .html("

My Plugin Panel

Hello from the panel!

"); - - // Create toolbar icon - const $toolbarIcon = $("#panel"); - - // Create the plugin panel - pluginPanel = WorkspaceManager.createPluginPanel( - "myextension.panel", - $panel, - 200, - $toolbarIcon, - 400 - ); - pluginPanel.show(); - } - } - - // Register command - const MY_COMMAND_ID = "test_menuitem"; - CommandManager.register("Toggle Panel", MY_COMMAND_ID, handleTestExtension); - - // Add Menu item - const menu = Menus.getMenu(Menus.AppMenuBar.FILE_MENU); - menu.addMenuItem(MY_COMMAND_ID); - - // Initialize extension - AppInit.appReady(function () { - console.log("Panel extension initialized"); - }); -}); -``` - -Visual Reference -![Plugin Panel](./images/plugin-panel.png) - - -## Managing Plugin Panel State - -You can control the visibility and state of your plugin panel: - -1. **Show/Hide Panel** - ```jsx - // Show panel - pluginPanel.show(); - - // Hide panel - pluginPanel.hide(); - ``` - - -2. **Check Panel Visibility** - ```jsx - const isVisible = pluginPanel.isVisible(); - ``` - -3. **Toggle Panel Visibility** - ```jsx - function togglePanel() { - if (pluginPanel.isVisible()) { - pluginPanel.hide(); - } else { - pluginPanel.show(); - } - } - ``` - - -## Creating a Bottom Panel - -Bottom panels are created similarly to plugin panels but use different methods: -> For `Bottom Panels` creating a toolbar icon is not required. Each bottom panel appears as a tab in the shared tab bar. - -1. **Import required modules** - ```jsx - const WorkspaceManager = brackets.getModule("view/WorkspaceManager"); - ``` - -2. **Create the bottom panel** - ```jsx - const bottomPanel = WorkspaceManager.createBottomPanel( - "myextension.panel", // Unique ID using package-style naming - $panel, // jQuery object for panel content - undefined, // minSize (deprecated, pass undefined) - "My Panel", // Title shown on the tab - { - iconSvg: "path/to/icon.svg" // SVG icon for the tab - } - ); - ``` - - - **`title`**: The text shown on the panel's tab. If not provided, Phoenix Code uses the text from a `.toolbar .title` element inside your panel, or derives it from the panel ID. - - **`iconSvg`**: Path to an SVG file used as the tab icon. The icon automatically adapts to light and dark themes. If not provided, a default icon is used. - -> The `minSize` parameter (third argument) is deprecated and no longer used. Pass `undefined` for this parameter. - -> For a detailed description, refer to [this link](https://docs.phcode.dev/api/API-Reference/view/WorkspaceManager#createBottomPanel). - -Full Code Example for Bottom Panel: - -```jsx - define(function (require, exports, module) { - "use strict"; - - // Brackets modules - const AppInit = brackets.getModule("utils/AppInit"), - CommandManager = brackets.getModule("command/CommandManager"), - Menus = brackets.getModule("command/Menus"), - WorkspaceManager = brackets.getModule("view/WorkspaceManager"); - - let bottomPanel; // Store panel reference - - // Function to run when the menu item is clicked - function handleTestExtension() { - if (!bottomPanel) { - // Create panel content - const $panel = $("
") - .attr("id", "my-extension-panel") - .html("

My Bottom Panel

Hello from the panel!

"); - - // Create the bottom panel - bottomPanel = WorkspaceManager.createBottomPanel( - "myextension.panel", - $panel, - undefined, - "My Panel", - { iconSvg: "styles/images/panel-icon-default.svg" } - ); - bottomPanel.show(); - } - } - - // Register command - const MY_COMMAND_ID = "test_menuitem"; - CommandManager.register("Toggle Panel", MY_COMMAND_ID, handleTestExtension); - - // Add Menu item - const menu = Menus.getMenu(Menus.AppMenuBar.FILE_MENU); - menu.addMenuItem(MY_COMMAND_ID); - - // Initialize extension - AppInit.appReady(function () { - console.log("Panel extension initialized"); - }); - }); -``` - -Visual Reference -![Bottom Panel](./images/bottom-panel.png) - -## Managing Bottom Panel State - -Bottom panels support similar state management to plugin panels: - -1. **Show/Hide Panel** - ```jsx - // Show panel - bottomPanel.show(); - - // Hide panel - bottomPanel.hide(); - ``` - -2. **Check Panel Visibility** - ```jsx - const isVisible = bottomPanel.isVisible(); - ``` - -3. **Toggle Panel Visibility** - ```jsx - function togglePanel() { - if (bottomPanel.isVisible()) { - bottomPanel.hide(); - } else { - bottomPanel.show(); - } - } - ``` - -4. **Update Tab Title** - ```jsx - bottomPanel.setTitle("New Title"); - ``` - -5. **Handle Close Confirmation** - - If your panel has unsaved state or running processes, you can register a handler that runs before the panel closes. Return `false` to prevent closing. - ```jsx - bottomPanel.registerOnCloseRequestedHandler(async function () { - if (hasUnsavedChanges) { - const confirmed = await showConfirmDialog("Discard changes?"); - return confirmed; // true to close, false to cancel - } - return true; - }); - ``` - - To programmatically close a panel while respecting its close handler, use `requestClose()`: - ```jsx - const wasClosed = await bottomPanel.requestClose(); - ``` - -## Best Practices - -1. Always use unique, package-style IDs (e.g., "yourextension.panel-name") to avoid conflicts with other extensions. - -2. Save panel state (e.g., visibility, size) in preferences if needed, to restore state when the extension is reloaded. - -> For more information about the WorkSpace Manager API, refer to the [Phoenix Code API documentation](https://docs.phcode.dev/api/API-Reference/view/WorkspaceManager). \ No newline at end of file diff --git a/api/08-How-To/StatusBar.md b/api/08-How-To/StatusBar.md deleted file mode 100644 index e5440c6a..00000000 --- a/api/08-How-To/StatusBar.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: Add an indicator icon on the status bar ---- - -This document outlines the basic features of working with Status Bar, including: - -* [How to add a button on Status Bar](#adding-a-button-on-status-bar) - -## Adding a button on Status Bar - -1. Import the `StatusBar` module. - - ```jsx - const StatusBar = brackets.getModule("widgets/StatusBar"); - ``` - - -2. Register the command. - - Register the command that will trigger the clicking. - - ```jsx - var MY_COMMAND_ID = "helloworld_sayhello"; - CommandManager.register("Hello World", MY_COMMAND_ID, handleHelloWorld); - ``` - - -3. Add the button to the StatusBar. - - To add the button to StatusBar, use `addIndicator()` :- - - -```jsx -StatusBar.addIndicator( - MY_COMMAND_ID, // unique ID for this indicator - $("
Test
").click(handleHelloWorld), // Optional DOMNode for the indicator - true, // show the indicator - "hello-world-status", // CSS class - "tooltip", // tooltip text -); -``` - - → The parameters of the `addIndicator()` method :- - -| Param | Type | Description | -| --- | --- | --- | -| id | `string` | Registration id of the indicator to be updated. | -| [indicator] | `DOMNode` or `jQueryObject` | Optional DOMNode for the indicator | -| [visible] | `boolean` | Shows or hides the indicator over the statusbar. | -| [style] | `string` | Sets the attribute "class" of the indicator. | -| [tooltip] | `string` | Sets the attribute "title" of the indicator. | -| [insertBefore] | `string` | An id of an existing status bar indicator. The new indicator will be inserted before (i.e. to the left of) the indicator specified by this parameter. | - -> For a detailed description, refer to [this link](https://docs.phcode.dev/api/API-Reference/widgets/StatusBar). \ No newline at end of file diff --git a/api/08-How-To/images/add-menu.png b/api/08-How-To/images/add-menu.png deleted file mode 100644 index 897298e7..00000000 Binary files a/api/08-How-To/images/add-menu.png and /dev/null differ diff --git a/api/08-How-To/images/dialog.png b/api/08-How-To/images/dialog.png deleted file mode 100644 index 7cfd9c52..00000000 Binary files a/api/08-How-To/images/dialog.png and /dev/null differ diff --git a/api/08-How-To/images/menu-item-dialog.png b/api/08-How-To/images/menu-item-dialog.png deleted file mode 100644 index 247e625a..00000000 Binary files a/api/08-How-To/images/menu-item-dialog.png and /dev/null differ diff --git a/api/08-How-To/images/menu-item-keyboard-shortcut.png b/api/08-How-To/images/menu-item-keyboard-shortcut.png deleted file mode 100644 index eaf74303..00000000 Binary files a/api/08-How-To/images/menu-item-keyboard-shortcut.png and /dev/null differ diff --git a/api/API-Reference/JSUtils/Preferences.html b/api/API-Reference/JSUtils/Preferences.html new file mode 100644 index 00000000..53c4332f --- /dev/null +++ b/api/API-Reference/JSUtils/Preferences.html @@ -0,0 +1,75 @@ + + + + + +Preferences | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

Preferences

Import :

+
const Preferences = brackets.getModule("JSUtils/Preferences")
+ +

Preferences

+

Kind: global class

+ + +

new Preferences([prefs])

+

Constructor to create a default preference object.

+
ParamTypeDescription
[prefs]Objectpreference object
+ +

preferences.getExcludedDirectories() ⇒ RegExp

+

Get the regular expression for excluded directories.

+

Kind: instance method of Preferences
+Returns: RegExp - Regular expression matching the directories that should +be excluded. Returns null if no directories are excluded.

+ +

preferences.getExcludedFiles() ⇒ RegExp

+

Get the regular expression for excluded files.

+

Kind: instance method of Preferences
+Returns: RegExp - Regular expression matching the files that should +be excluded. Returns null if no files are excluded.

+ +

preferences.getMaxFileCount() ⇒ number

+

Get the maximum number of files that will be analyzed.

+

Kind: instance method of Preferences

+ +

preferences.getMaxFileSize() ⇒ number

+

Get the maximum size of a file that will be analyzed. Files that are +larger will be ignored.

+

Kind: instance method of Preferences

+ + \ No newline at end of file diff --git a/api/API-Reference/JSUtils/Preferences/index.html b/api/API-Reference/JSUtils/Preferences/index.html new file mode 100644 index 00000000..e390fb55 --- /dev/null +++ b/api/API-Reference/JSUtils/Preferences/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/JSUtils/ScopeManager.html b/api/API-Reference/JSUtils/ScopeManager.html new file mode 100644 index 00000000..04dce3dc --- /dev/null +++ b/api/API-Reference/JSUtils/ScopeManager.html @@ -0,0 +1,162 @@ + + + + + +ScopeManager | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

ScopeManager

Import :

+
const ScopeManager = brackets.getModule("JSUtils/ScopeManager")
+ +

getBuiltins() ⇒ Array.<string>

+

An array of library names that contain JavaScript builtins definitions.

+

Kind: global function
+Returns: Array.<string> - - array of library names.

+ +

postMessage()

+

Send a message to the tern module - if the module is being initialized, +the message will not be posted until initialization is complete

+

Kind: global function

+ +

addPendingRequest(file, offset, type) ⇒ jQuery.Promise

+

Add a pending request waiting for the tern-module to complete. +If file is a detected exclusion, then reject request.

+

Kind: global function
+Returns: jQuery.Promise - - the promise for the request

+
ParamTypeDescription
filestringthe name of the file
offsetObjectthe offset into the file the request is for
typestringthe type of request
+ +

getPendingRequest(file, offset, type) ⇒ jQuery.Deferred

+

Get any pending $.Deferred object waiting on the specified file and request type

+

Kind: global function
+Returns: jQuery.Deferred - - the $.Deferred for the request

+
ParamTypeDescription
filestringthe file
offsetObjectthe offset into the file the request is for
typestringthe type of request
+ +

getResolvedPath(file) ⇒ string

+

Kind: global function
+Returns: string - returns the path we resolved when we tried to parse the file, or undefined

+
ParamTypeDescription
filestringa relative path
+ +

filterText(the) ⇒ string

+

check to see if the text we are sending to Tern is too long.

+

Kind: global function
+Returns: string - the text, or the empty text if the original was too long

+
ParamTypeDescription
thestringtext to check
+ +

requestJumptoDef(session, document, offset) ⇒ jQuery.Promise

+

Request Jump-To-Definition from Tern.

+

Kind: global function
+Returns: jQuery.Promise - - The promise will not complete until tern +has completed.

+
ParamTypeDescription
sessionsessionthe session
documentDocumentthe document
offsetObjectthe offset into the document
+ +

getTernHints(fileInfo, offset, isProperty) ⇒ jQuery.Promise

+

Get a Promise for the completions from TernJS, for the file & offset passed in.

+

Kind: global function
+Returns: jQuery.Promise - - a promise that will resolve to an array of completions when +it is done

+
ParamTypeDescription
fileInfoObject- type of update, name of file, and the text of the update. For "full" updates, the whole text of the file is present. For "part" updates, the changed portion of the text. For "empty" updates, the file has not been modified and the text is empty.
offsetObjectthe offset in the file the hints should be calculate at
isPropertybooleantrue if getting a property hint, otherwise getting an identifier hint.
+ +

requestGuesses(session, document) ⇒ jQuery.Promise

+

Get a Promise for all of the known properties from TernJS, for the directory and file. +The properties will be used as guesses in tern.

+

Kind: global function
+Returns: jQuery.Promise - - The promise will not complete until the tern +request has completed.

+
ParamTypeDescription
sessionSessionthe active hinting session
documentDocumentthe document for which scope info is desired
+ +

TernModule()

+

Encapsulate all the logic to talk to the tern module. This will create +a new instance of a TernModule, which the rest of the hinting code can use to talk +to the tern node domain, without worrying about initialization, priming the pump, etc.

+

Kind: global function

+ + +

TernModule.getResolvedPath(file) ⇒ string

+

Kind: inner method of TernModule
+Returns: string - returns the path we resolved when we tried to parse the file, or undefined

+
ParamTypeDescription
filestringa relative path
+ +

TernModule.postMessage()

+

Send a message to the tern node domain - if the module is being initialized, +the message will not be posted until initialization is complete

+

Kind: inner method of TernModule

+ +

TernModule.handleEditorChange(session, document, previousDocument)

+

Called each time a new editor becomes active.

+

Kind: inner method of TernModule

+
ParamTypeDescription
sessionSessionthe active hinting session (TODO: currently unused by doEditorChange())
documentDocumentthe document of the editor that has changed
previousDocumentDocumentthe document of the editor is changing from
+ +

requestParameterHint(session, functionOffset) ⇒ jQuery.Promise

+

Request a parameter hint from Tern.

+

Kind: global function
+Returns: jQuery.Promise - - The promise will not complete until the +hint has completed.

+
ParamTypeDescription
sessionSessionthe active hinting session
functionOffsetObjectthe offset of the function call.
+ +

requestHints(session, document) ⇒ jQuery.Promise

+

Request hints from Tern.

+

Note that successive calls to getScope may return the same objects, so +clients that wish to modify those objects (e.g., by annotating them based +on some temporary context) should copy them first. See, e.g., +Session.getHints().

+

Kind: global function
+Returns: jQuery.Promise - - The promise will not complete until the tern +hints have completed.

+
ParamTypeDescription
sessionSessionthe active hinting session
documentDocumentthe document for which scope info is desired
+ +

handleFileChange(changeList)

+

Called each time the file associated with the active editor changes. +Marks the file as being dirty.

+

Kind: global function

+
ParamTypeDescription
changeListObjectAn object representing the change range with from and to properties, each containing line and ch numbers.
+ +

handleEditorChange(session, document, previousDocument)

+

Called each time a new editor becomes active.

+

Kind: global function

+
ParamTypeDescription
sessionSessionthe active hinting session
documentDocumentthe document of the editor that has changed
previousDocumentDocumentthe document of the editor is changing from
+ +

handleProjectClose()

+

Do some cleanup when a project is closed. +Clean up previous analysis data from the module

+

Kind: global function

+ +

handleProjectOpen([projectRootPath])

+

Read in project preferences when a new project is opened. +Look in the project root directory for a preference file.

+

Kind: global function

+
ParamTypeDescription
[projectRootPath]stringnew project root path(optional). Only needed for unit tests.
+ + \ No newline at end of file diff --git a/api/API-Reference/JSUtils/ScopeManager/index.html b/api/API-Reference/JSUtils/ScopeManager/index.html new file mode 100644 index 00000000..c82ad17b --- /dev/null +++ b/api/API-Reference/JSUtils/ScopeManager/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/JSUtils/Session.html b/api/API-Reference/JSUtils/Session.html new file mode 100644 index 00000000..e2084664 --- /dev/null +++ b/api/API-Reference/JSUtils/Session.html @@ -0,0 +1,214 @@ + + + + + +Session | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

Session

Import :

+
const Session = brackets.getModule("JSUtils/Session")
+ +

Session

+

Kind: global class

+ + +

new Session(editor)

+

Session objects encapsulate state associated with a hinting session +and provide methods for updating and querying the session.

+
ParamTypeDescription
editorEditorthe editor context for the session
+ +

session.getPath() ⇒ String

+

Get the name of the file associated with the current session

+

Kind: instance method of Session
+Returns: String - - the full pathname of the file associated with the +current session

+ +

session.getCursor() ⇒ Object

+

Get the current cursor position.

+

Kind: instance method of Session
+Returns: Object - - the current cursor position

+ +

session.getLine(line) ⇒ String

+

Get the text of a line.

+

Kind: instance method of Session
+Returns: String - - the text of the line

+
ParamTypeDescription
linenumberthe line number
+ +

session.getOffset() ⇒ number

+

Get the offset of the current cursor position

+

Kind: instance method of Session
+Returns: number - - the offset into the current document of the current +cursor

+ +

session.getOffsetFromCursor(the) ⇒ number

+

Get the offset of a cursor position

+

Kind: instance method of Session
+Returns: number - - the offset into the current document of the cursor

+
ParamTypeDescription
theObjectline/col info
+ +

session.getToken(cursor) ⇒ Object

+

Get the token at the given cursor position, or at the current cursor +if none is given.

+

Kind: instance method of Session
+Returns: Object - - the CodeMirror token at the given cursor position

+
ParamTypeDescription
cursorObjectthe cursor position at which to retrieve a token
+ +

session.getNextTokenOnLine(cursor) ⇒ Object

+

Get the token after the one at the given cursor position

+

Kind: instance method of Session
+Returns: Object - - the CodeMirror token after the one at the given +cursor position

+
ParamTypeDescription
cursorObjectcursor position before which a token should be retrieved
+ +

session.getNextCursorOnLine() ⇒ Object

+

Get the next cursor position on the line, or null if there isn't one.

+

Kind: instance method of Session
+Returns: Object - - the cursor position +immediately following the current cursor position, or null if +none exists.

+ +

session.getNextToken(cursor, skipWhitespace) ⇒ Object

+

Get the token after the one at the given cursor position

+

Kind: instance method of Session
+Returns: Object - - the CodeMirror token after the one at the given +cursor position

+
ParamTypeDescription
cursorObjectcursor position after which a token should be retrieved
skipWhitespaceBooleantrue if this should skip over whitespace tokens
+ +

session.getQuery() ⇒ String

+

Calculate a query String relative to the current cursor position +and token. E.g., from a state "identi--cursor--er", the query String is +"identi".

+

Kind: instance method of Session
+Returns: String - - the query String for the current cursor position

+ +

session.getContext(cursor, [depth]) ⇒ String

+

Find the context of a property lookup. For example, for a lookup +foo(bar, baz(quux)).prop, foo is the context.

+

Kind: instance method of Session
+Returns: String - - the context for the property that was looked up

+
ParamTypeDescription
cursorObjectthe cursor position at which context information is to be retrieved
[depth]numberthe current depth of the parenthesis stack, or undefined if the depth is 0.
+ +

session.findPreviousDot() ⇒ Object

+

Kind: instance method of Session
+Returns: Object - - the line, col info for where the previous "." +in a property lookup occurred, or undefined if no previous "." was found.

+ +

session.getFunctionInfo() ⇒ Object

+

Determine if the caret is either within a function call or on the function call itself.

+

Kind: instance method of Session
+Returns: Object - inFunctionCall - true if the caret if either within a function call or on the +function call itself. +functionCallPos - the offset of the '(' character of the function call if inFunctionCall +is true, otherwise undefined.

+ +

session.getType() ⇒ Object

+

Get the type of the current session, i.e., whether it is a property +lookup and, if so, what the context of the lookup is.

+

Kind: instance method of Session
+Returns: Object - - an Object consisting +of a "property" that indicates whether or not the type of +the session is a property lookup, and a "context" that +indicates the object context (as described in getContext above) of +the property lookup, or null if there is none. The context is +always null for non-property lookups.

+ +

session.getHints(query, matcher) ⇒ Object

+

Retrieves a list of hints for the current session based on the current scope +information.

+

Kind: instance method of Session
+Returns: Object - An object containing:

+
    +
  • hints: An array of matching hints.
  • +
  • needGuesses: A Boolean indicating whether the caller needs to request guesses and call getHints again.
  • +
+
ParamTypeDescription
queryStringThe query prefix used to filter hints.
matcherStringMatcherThe class used to find query matches and sort the results.
+ +

session.setFnType(newFnType)

+

Set a new function type hint.

+

Kind: instance method of Session

+
ParamTypeDescription
newFnTypeObjectArray of function hints
+ +

session.setFunctionCallPos(functionCallPos)

+

The position of the function call for the current fnType.

+

Kind: instance method of Session

+
ParamTypeDescription
functionCallPosObjectthe offset of the function call.
+ +

session.getParameterHint() ⇒ Object

+

Get the function type hint. This will format the hint, showing the +parameter at the cursor in bold.

+

Kind: instance method of Session
+Returns: Object - An Object where the +"parameters" property is an array of parameter objects; +the "currentIndex" property index of the hint the cursor is on, may be +-1 if the cursor is on the function identifier.

+ +

session.getJavascriptText() ⇒ String

+

Get the javascript text of the file open in the editor for this Session. +For a javascript file, this is just the text of the file. For an HTML file, +this will be only the text in the script tags. This is so that we can pass +just the javascript text to tern, and avoid confusing it with HTML tags, since it +only knows how to parse javascript.

+

Kind: instance method of Session
+Returns: String - - the "javascript" text that can be sent to Tern.

+ +

session.isFunctionName() ⇒ Boolean

+

Determine if the cursor is located in the name of a function declaration. +This is so we can suppress hints when in a function name, as we do for variable and +parameter declarations, but we can tell those from the token itself rather than having +to look at previous tokens.

+

Kind: instance method of Session
+Returns: Boolean - - true if the current cursor position is in the name of a function +declaration.

+ + \ No newline at end of file diff --git a/api/API-Reference/JSUtils/Session/index.html b/api/API-Reference/JSUtils/Session/index.html new file mode 100644 index 00000000..8cf4f827 --- /dev/null +++ b/api/API-Reference/JSUtils/Session/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/NodeConnector.html b/api/API-Reference/NodeConnector.html new file mode 100644 index 00000000..edcf2f19 --- /dev/null +++ b/api/API-Reference/NodeConnector.html @@ -0,0 +1,158 @@ + + + + + +NodeConnector | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

NodeConnector

Import :

+
const NodeConnector = brackets.getModule("NodeConnector")
+ +

NodeConnector

+

Node Connector Communication Module

+

This module simplifies communication between Node.js and Phoenix (phcode). A NodeConnector acts as an intermediary, +allowing you to execute functions in Node.js from Phoenix and vice versa. You can use the execPeer method to call +functions on the other side and handle communication seamlessly. Use triggerPeer to trigger events +on the other side.

+

Setting Up a NodeConnector

+

To establish communication between two modules, such as x.js in Phoenix and y.js in Node.js, follow these steps:

+

Create NodeConnector in Phoenix (x.js)

+

Example

+
const NodeConnector = require('NodeConnector');
const XY_NODE_CONNECTOR_ID = 'ext_x_y'; // Use a unique ID
let nodeConnector = NodeConnector.createNodeConnector(XY_NODE_CONNECTOR_ID, exports);

exports.modifyImage = async function(imageName, imageArrayBuffer) {
// Perform image operations with the imageArrayBuffer
// To return an ArrayBuffer, return an object with a `buffer` key.
return {
operationDone: 'colored, cropped',
buffer: imageArrayBuffer,
};
};
+

Create NodeConnector in Node.js (y.js)

+

Example

+
const XY_NODE_CONNECTOR_ID = 'ext_x_y'; // Use the same unique ID
let nodeConnector = global.createNodeConnector(XY_NODE_CONNECTOR_ID, exports);

exports.getPWDRelative = async function(subPath) {
return process.cwd + '/' + subPath;
};
+

With these steps, a NodeConnector is set up, enabling two-way communication.

+

Executing Functions

+

To call a Node.js function from Phoenix, use the execPeer method. +Example

+
// In `x.js` (Phoenix)
const fullPath = await nodeConnector.execPeer('getPWDRelative', 'sub/path.html');
+

To execute a Phoenix function from Node.js and transfer binary data, pass an optional ArrayBuffer. +Example

+
// In `y.js` (Node.js)
const { operationDone, buffer } = await nodeConnector.execPeer('modifyImage', {name:'theHills.png'}, imageAsArrayBuffer);
+

Event Handling

+

The NodeConnector object implements all the APIs supported by utils/EventDispatcher. You can trigger and listen +to events between Node.js and Phoenix using the triggerPeer and (on, one or off) methods. +Example

+
// In `y.js` (Node.js)
nodeConnector.on('phoenixProjectOpened', (_event, projectPath) => {
console.log(projectPath);
});

nodeConnector.one('phoenixProjectOpened', (_event, projectPath) => {
console.log(projectPath + "will be received only once");
});
+

To raise an event from Phoenix to Node.js: +Example

+
// In `x.js` (Phoenix)
nodeConnector.triggerPeer('phoenixProjectOpened', '/x/project/folder');
+

To Switch off events +Example

+
nodeConnector.off('phoenixProjectOpened'); // will switch off all event handlers of that name.
+

By Default, all events handlers with the eventName is removed when you call nodeConnector.off(eventName) fn. +To selectively switch off event handlers, please see reference for utils/EventDispatcher module.

+

Handling ArrayBuffer Data in Function Execution

+

When executing functions that send or receive binary data, ensure that the functions are asynchronous and accept an +optional ArrayBuffer as a parameter. To return binary data, use an object with a buffer key.

+

Example of calling a function in Node.js with binary data transfer: +Example

+
// In `y.js` (Node.js)
const { operationDone, buffer } = await nodeConnector.execPeer('modifyImage', {name:'name.png'}, imageArrayBuffer);
+

Handling ArrayBuffer Data in Event Handling

+

Use the triggerPeer method to send binary data in events. Include the ArrayBuffer as an optional parameter.

+

Example of sending binary data in an event from Phoenix to Node.js: +Example

+
// In `x.js` (Phoenix)
const imageArrayBuffer = getSomeImageArrayBuffer(); // Get the ArrayBuffer
nodeConnector.triggerPeer('imageEdited', 'name.png', imageArrayBuffer);
+

Caveats

+
    +
  • Be cautious when sending large binary data, as it may affect performance and memory usage. Transferring large +data is fully supported, but be mindful of performance.
  • +
  • Functions called with execPeer and triggerPeer must be asynchronous and accept a single argument. An optional +second argument can be used to transfer large binary data as an ArrayBuffer.
  • +
+

For more event handling operations and details, refer to the documentation for the utils/EventDispatcher module.

+ + +

NodeConnector.createNodeConnector(nodeConnectorID, moduleExports) ⇒ Object

+

Creates a new node connector with the specified ID and module exports.

+

Returns a NodeConnector Object (which is an EventDispatcher with +additional execPeer and triggerPeer methods. peer here means, if you are executing execPeer +in Phoenix, it will execute the named function in node side, and vice versa. You can right away start +using execPeer, triggerPeer(to send/receive events) APIs without waiting to check if the +other side nodeConnector is created.

+

Note: If the NodeConnector has not been created on the other end, requests made with execPeer or +triggerPeer will be temporarily queued for up to 10 seconds to allow time for the connector to be created. +If the connector is not created within this timeout period, all queued execPeer requests will be rejected, +and all queued events will be dropped. It is recommended to call the createNodeConnector API on both ends +within a timeframe of less than 10 seconds(ideally same time) for seamless communication.

+
    +
  • execPeer: A function that executes a peer function with specified parameters.
  • +
  • triggerPeer: A function that triggers an event to be sent to a peer.
  • +
  • Also contains all the APIs supported by utils/EventDispatcher module.
  • +
+

Kind: inner method of NodeConnector
+Returns: Object - - A NodeConnector Object. Also contains all the APIs supported by utils/EventDispatcher module.
+Throws:

+
    +
  • Error - If a node connector with the same ID already exists/invalid args passed.
  • +
+
ParamTypeDescription
nodeConnectorIDstringThe unique identifier for the new node connector.
moduleExportsObjectThe exports of the module that contains the functions to be executed on the other side.
+ +

NodeConnector.isNodeAvailable() ⇒ boolean

+

Checks if Node.js Engine is available. (returns true even if the node instance is terminated)

+

Kind: inner method of NodeConnector
+Returns: boolean - Returns true if Node.js Engine is available.

+ +

NodeConnector.isNodeReady() ⇒ boolean

+

Node is available and is ready to exec requests

+

Kind: inner method of NodeConnector

+ +

NodeConnector.terminateNode() ⇒ Promise

+

Terminate the PhNodeEngine node if it is available. Else does nothing.

+

Kind: inner method of NodeConnector
+Returns: Promise - promise that resolves when node process is terminated and exits.

+ +

NodeConnector.setInspectEnabled(enabled)

+

Sets weather to enable node inspector in next boot.

+

Kind: inner method of NodeConnector

+
ParamTypeDescription
enabledbooleantrue to enable, else false.
+ +

NodeConnector.isInspectEnabled() ⇒ boolean

+

Returns whether node inspector is enabled. If node is not present, always returns false.

+

Kind: inner method of NodeConnector
+Returns: boolean - True if inspect mode is enabled, false otherwise.

+ +

NodeConnector.getInspectPort() ⇒ number

+

Retrieves the node inspector port for the Phoenix Node.js engine.

+

Kind: inner method of NodeConnector
+Returns: number - The inspection port number.

+ + \ No newline at end of file diff --git a/api/API-Reference/NodeConnector/index.html b/api/API-Reference/NodeConnector/index.html new file mode 100644 index 00000000..e8ca6f60 --- /dev/null +++ b/api/API-Reference/NodeConnector/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/command/CommandManager.html b/api/API-Reference/command/CommandManager.html new file mode 100644 index 00000000..866a76a0 --- /dev/null +++ b/api/API-Reference/command/CommandManager.html @@ -0,0 +1,170 @@ + + + + + +CommandManager | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

CommandManager

Import :

+
const CommandManager = brackets.getModule("command/CommandManager")
+ +

Command

+

Kind: global class

+ + +

new Command(name, id, commandFn, [options])

+

Events:

+
    +
  • enabledStateChange
  • +
  • checkedStateChange
  • +
  • keyBindingAdded
  • +
  • keyBindingRemoved
  • +
+
ParamTypeDescription
namestringtext that will be displayed in the UI to represent command
idstring
commandFnfunctionthe function that is called when the command is executed. TODO: where should this be triggered, The Command or Exports?
[options]
+ +

command.getID() ⇒ string

+

Get command id

+

Kind: instance method of Command

+ +

command.execute() ⇒ $.Promise

+

Executes the command. Additional arguments are passed to the executing function

+

Kind: instance method of Command
+Returns: $.Promise - a jQuery promise that will be resolved when the command completes.

+ +

command.getEnabled() ⇒ boolean

+

Is command enabled?

+

Kind: instance method of Command

+ +

command.getOptions() ⇒ object

+

get the command options

+

Kind: instance method of Command

+ +

command.isSupportedInDesignMode() ⇒ boolean

+

Returns true if the command opted in to running while the workspace is in +design mode (editor collapsed). KeyBindingManager uses this to decide +whether a keyboard shortcut should fire; commands that don't opt in are +swallowed in design mode.

+

Kind: instance method of Command

+ +

command.setEnabled(enabled)

+

Sets enabled state of Command and dispatches "enabledStateChange" +when the enabled state changes.

+

Kind: instance method of Command

+
ParamType
enabledboolean
+ +

command.setChecked(checked)

+

Sets enabled state of Command and dispatches "checkedStateChange" +when the enabled state changes.

+

Kind: instance method of Command

+
ParamType
checkedboolean
+ +

command.getChecked() ⇒ boolean

+

Is command checked?

+

Kind: instance method of Command

+ +

command.setName(name, htmlName)

+

Sets the name of the Command and dispatches "nameChange" so that +UI that reflects the command name can update.

+

Note, a Command name can appear in either HTML or native UI +so HTML tags should not be used. To add a Unicode character, +use \uXXXX instead of an HTML entity.

+

Kind: instance method of Command

+
ParamTypeDescription
namestring
htmlNamestringIf set, this will be displayed in ui menus instead of the name given. Example: "Phoenix menu<i class='fa fa-car' style='margin-left: 4px;'></i>"
+ +

command.getName() ⇒ string

+

Get command name

+

Kind: instance method of Command

+ +

EventDispatcher

+

Manages global application commands that can be called from menu items, key bindings, or subparts +of the application.

+

This module dispatches these event(s):

+
    +
  • commandRegistered -- when a new command is registered
  • +
  • beforeExecuteCommand -- before dispatching a command
  • +
+

Kind: global constant

+ +

EVENT_BEFORE_EXECUTE_COMMAND : string

+

Event triggered before command executes.

+

Kind: global constant

+ +

SOURCE_KEYBOARD_SHORTCUT : string

+

Keyboard shortcut trigger.

+

Kind: global constant

+ +

SOURCE_UI_MENU_CLICK : string

+

UI menu click trigger.

+

Kind: global constant

+ +

SOURCE_OTHER : string

+

Other trigger types.

+

Kind: global constant

+ +

register(name, id, commandFn, [options]) ⇒ Command

+

Registers a global command.

+

Kind: global function

+
ParamTypeDescription
namestringtext that will be displayed in the UI to represent command
idstringunique identifier for command. Core commands in Brackets use a simple command title as an id, for example "open.file". Extensions should use the following format: "author.myextension.mycommandname". For example, "lschmitt.csswizard.format.css".
commandFnfunctionthe function to call when the command is executed. Any arguments passed to execute() (after the id) are passed as arguments to the function. If the function is asynchronous, it must return a jQuery promise that is resolved when the command completes. Otherwise, the CommandManager will assume it is synchronous, and return a promise that is already resolved.
[options]Object
options.eventSourcebooleanIf set to true, the commandFn will be called with the first argument event with details about the source(invoker) as event.eventSource(one of the CommandManager.SOURCE_*) and event.sourceType(Eg. Ctrl-K) parameter.
options.htmlNamestringIf set, this will be displayed in ui menus instead of the name given. Example: "Phoenix menu<i class='fa fa-car' style='margin-left: 4px;'></i>"
options.supportsDesignModebooleanIf true, this command's keyboard shortcut will still fire when the workspace is in design mode. Commands that don't opt in are swallowed in design mode because the editor area is collapsed and most shortcuts are nonsensical there. Reserve this flag for commands that remain useful with no editor visible (file open/save/close, Quick Open, Find in Files, etc.).
+ +

registerInternal(id, commandFn) ⇒ Command

+

Registers a global internal only command.

+

Kind: global function

+
ParamTypeDescription
idstringunique identifier for command. Core commands in Brackets use a simple command title as an id, for example "app.abort_quit". Extensions should use the following format: "author.myextension.mycommandname". For example, "lschmitt.csswizard.format.css".
commandFnfunctionthe function to call when the command is executed. Any arguments passed to execute() (after the id) are passed as arguments to the function. If the function is asynchronous, it must return a jQuery promise that is resolved when the command completes. Otherwise, the CommandManager will assume it is synchronous, and return a promise that is already resolved.
+ +

get(id) ⇒ Command

+

Retrieves a Command object by id

+

Kind: global function

+
ParamType
idstring
+ +

getAll() ⇒ Array.<string>

+

Returns the ids of all registered commands

+

Kind: global function

+ +

execute(id) ⇒ $.Promise

+

Looks up and runs a global command. Additional arguments are passed to the command.

+

Kind: global function
+Returns: $.Promise - a jQuery promise that will be resolved when the command completes.

+
ParamTypeDescription
idstringThe ID of the command to run.
+ + \ No newline at end of file diff --git a/api/API-Reference/command/CommandManager/index.html b/api/API-Reference/command/CommandManager/index.html new file mode 100644 index 00000000..660b64c1 --- /dev/null +++ b/api/API-Reference/command/CommandManager/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/command/Commands.html b/api/API-Reference/command/Commands.html new file mode 100644 index 00000000..ae130c1c --- /dev/null +++ b/api/API-Reference/command/Commands.html @@ -0,0 +1,788 @@ + + + + + +Commands | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

Commands

Import :

+
const Commands = brackets.getModule("command/Commands")
+ +

FILE_NEW_UNTITLED

+

Creates a new untitled document

+

Kind: global variable

+ +

FILE_NEW

+

Creates a new file in the current project

+

Kind: global variable

+ +

FILE_NEW_PROJECT

+

Creates a new project

+

Kind: global variable

+ +

FILE_NEW_FOLDER

+

Creates a new folder in the current project

+

Kind: global variable

+ +

FILE_DUPLICATE

+

Duplicates the selected file or folder

+

Kind: global variable

+ +

FILE_DUPLICATE_FILE

+

Duplicates the selected file

+

Kind: global variable

+ +

FILE_DOWNLOAD

+

Downloads the selected file

+

Kind: global variable

+ +

FILE_DOWNLOAD_PROJECT

+

Downloads the entire project

+

Kind: global variable

+ +

FILE_CUT

+

Cuts the selected file or folder to clipboard

+

Kind: global variable

+ +

FILE_COPY

+

Copies the selected file or folder to clipboard

+

Kind: global variable

+ +

FILE_COPY_PATH

+

Copies the path of selected file or folder

+

Kind: global variable

+ +

FILE_PASTE

+

Pastes file or folder from clipboard

+

Kind: global variable

+ +

FILE_OPEN

+

Opens a file

+

Kind: global variable

+ +

FILE_OPEN_FOLDER

+

Opens a folder as a project

+

Kind: global variable

+ +

FILE_SAVE

+

Saves the current file

+

Kind: global variable

+ +

FILE_SAVE_ALL

+

Saves all open files

+

Kind: global variable

+ +

FILE_SAVE_AS

+

Saves current file with a new name

+

Kind: global variable

+ +

FILE_CLOSE

+

Closes the current file

+

Kind: global variable

+ +

FILE_CLOSE_ALL

+

Closes all open files

+

Kind: global variable

+ +

FILE_CLOSE_LIST

+

Closes files from list

+

Kind: global variable

+ +

FILE_REOPEN_CLOSED

+

Reopens last closed file

+

Kind: global variable

+ +

FILE_OPEN_DROPPED_FILES

+

Opens files that were dropped

+

Kind: global variable

+ +

FILE_LIVE_FILE_PREVIEW

+

Toggles live file preview

+

Kind: global variable

+ +

FILE_LIVE_FILE_PREVIEW_SETTINGS

+

Opens live preview settings

+

Kind: global variable

+ +

TOGGLE_LIVE_PREVIEW_MB_MODE

+

Toggles live preview multi-browser mode

+

Kind: global variable

+ +

CMD_RELOAD_LIVE_PREVIEW

+

Reloads live preview

+

Kind: global variable

+ +

FILE_PROJECT_SETTINGS

+

Opens project settings

+

Kind: global variable

+ +

FILE_RENAME

+

Renames selected file or folder

+

Kind: global variable

+ +

FILE_DELETE

+

Deletes selected file or folder

+

Kind: global variable

+ +

FILE_EXTENSION_MANAGER

+

Opens extension manager

+

Kind: global variable

+ +

FILE_REFRESH

+

Refreshes the file tree

+

Kind: global variable

+ +

FILE_SHOW_FOLDERS_FIRST

+

Toggles show folders first in file tree

+

Kind: global variable

+ +

FILE_OPEN_PREFERENCES

+

Opens preferences

+

Kind: global variable

+ +

FILE_OPEN_KEYMAP

+

Opens keymap settings

+

Kind: global variable

+ +

FILE_NEW_WINDOW

+

Opens new window

+

Kind: global variable

+ +

FILE_CLOSE_WINDOW

+

Closes current window

+

Kind: global variable

+ +

FILE_QUIT

+

Quits the application

+

Kind: global variable

+ +

EDIT_UNDO

+

Undoes the last edit operation

+

Kind: global variable

+ +

EDIT_REDO

+

Redoes the last undone edit operation

+

Kind: global variable

+ +

EDIT_CUT

+

Cuts the selected text to clipboard

+

Kind: global variable

+ +

EDIT_COPY

+

Copies the selected text to clipboard

+

Kind: global variable

+ +

EDIT_PASTE

+

Pastes text from clipboard

+

Kind: global variable

+ +

EDIT_SELECT_ALL

+

Selects all text in the current document

+

Kind: global variable

+ +

EDIT_SELECT_LINE

+

Selects the current line

+

Kind: global variable

+ +

EDIT_SPLIT_SEL_INTO_LINES

+

Splits selection into individual lines

+

Kind: global variable

+ +

EDIT_ADD_CUR_TO_NEXT_LINE

+

Adds cursor to the next line

+

Kind: global variable

+ +

EDIT_ADD_CUR_TO_PREV_LINE

+

Adds cursor to the previous line

+

Kind: global variable

+ +

EDIT_INDENT

+

Indents the selected text

+

Kind: global variable

+ +

EDIT_UNINDENT

+

Unindents the selected text

+

Kind: global variable

+ +

EDIT_DUPLICATE

+

Duplicates the selected text

+

Kind: global variable

+ +

EDIT_DELETE_LINES

+

Deletes the current line(s)

+

Kind: global variable

+ +

EDIT_LINE_COMMENT

+

Toggles line comment for current selection

+

Kind: global variable

+ +

EDIT_BLOCK_COMMENT

+

Toggles block comment for current selection

+

Kind: global variable

+ +

EDIT_LINE_UP

+

Moves current line up

+

Kind: global variable

+ +

EDIT_LINE_DOWN

+

Moves current line down

+

Kind: global variable

+ +

EDIT_OPEN_LINE_ABOVE

+

Opens a new line above current line

+

Kind: global variable

+ +

EDIT_OPEN_LINE_BELOW

+

Opens a new line below current line

+

Kind: global variable

+ +

TOGGLE_CLOSE_BRACKETS

+

Toggles auto close brackets

+

Kind: global variable

+ +

SHOW_CODE_HINTS

+

Shows code hints

+

Kind: global variable

+ +

EDIT_BEAUTIFY_CODE

+

Beautifies the current code

+

Kind: global variable

+ +

EDIT_BEAUTIFY_CODE_ON_SAVE

+

Toggles code beautification on save

+

Kind: global variable

+ +

CMD_FIND

+

Opens find dialog

+

Kind: global variable

+ +

CMD_FIND_IN_FILES

+

Opens find in files dialog

+

Kind: global variable

+ +

CMD_FIND_IN_SUBTREE

+

Opens find in subtree dialog

+

Kind: global variable

+ +

CMD_FIND_NEXT

+

Finds next match

+

Kind: global variable

+ +

CMD_FIND_PREVIOUS

+

Finds previous match

+

Kind: global variable

+ +

CMD_FIND_ALL_AND_SELECT

+

Finds all matches and selects them

+

Kind: global variable

+ +

CMD_ADD_NEXT_MATCH

+

Adds next match to selection

+

Kind: global variable

+ +

CMD_SKIP_CURRENT_MATCH

+

Skips current match

+

Kind: global variable

+ +

CMD_REPLACE

+

Replaces current match

+

Kind: global variable

+ +

CMD_REPLACE_IN_FILES

+

Opens replace in files dialog

+

Kind: global variable

+ +

CMD_REPLACE_IN_SUBTREE

+

Opens replace in subtree dialog

+

Kind: global variable

+ +

CMD_FIND_ALL_REFERENCES

+

Opens find references panel

+

Kind: global variable

+ +

CMD_THEMES_OPEN_SETTINGS

+

Opens theme settings

+

Kind: global variable

+ +

VIEW_HIDE_SIDEBAR

+

Toggles sidebar visibility

+

Kind: global variable

+ +

VIEW_TOGGLE_DESIGN_MODE

+

Toggles the design (full live-preview) mode — collapses/expands the editor

+

Kind: global variable

+ +

TOGGLE_TABBAR

+

Toggles tabbar visibility

+

Kind: global variable

+ +

VIEW_ZOOM_IN

+

Zooms in the editor view

+

Kind: global variable

+ +

VIEW_ZOOM_OUT

+

Zooms out the editor view

+

Kind: global variable

+ +

VIEW_ZOOM_SUBMENU

+

Submenu for zoom options

+

Kind: global variable

+ +

OPEN_IN_SUBMENU

+

Submenu for Open in project context menu

+

Kind: global variable

+ +

OPEN_IN_SUBMENU_WS

+

Submenu for Open in working set context menu

+

Kind: global variable

+ +

VIEW_INCREASE_FONT_SIZE

+

Increases editor font size

+

Kind: global variable

+ +

VIEW_DECREASE_FONT_SIZE

+

Decreases editor font size

+

Kind: global variable

+ +

VIEW_RESTORE_FONT_SIZE

+

Restores editor font size to default

+

Kind: global variable

+ +

VIEW_SCROLL_LINE_UP

+

Scrolls editor view up by one line

+

Kind: global variable

+ +

VIEW_SCROLL_LINE_DOWN

+

Scrolls editor view down by one line

+

Kind: global variable

+ +

VIEW_TOGGLE_INSPECTION

+

Toggles code inspection

+

Kind: global variable

+ +

VIEW_TOGGLE_PROBLEMS

+

Toggles problems panel visibility

+

Kind: global variable

+ +

VIEW_TERMINAL

+

Opens the terminal panel

+

Kind: global variable

+ +

TOGGLE_LINE_NUMBERS

+

Toggles line numbers visibility

+

Kind: global variable

+ +

TOGGLE_ACTIVE_LINE

+

Toggles active line highlight

+

Kind: global variable

+ +

TOGGLE_WORD_WRAP

+

Toggles word wrap

+

Kind: global variable

+ +

TOGGLE_RULERS

+

Toggles rulers visibility

+

Kind: global variable

+ +

TOGGLE_INDENT_GUIDES

+

Toggles indent guides visibility

+

Kind: global variable

+ +

TOGGLE_SEARCH_AUTOHIDE

+

Toggles search auto-hide behavior

+

Kind: global variable

+ +

CMD_OPEN

+

Opens a file

+

Kind: global variable

+ +

CMD_ADD_TO_WORKINGSET_AND_OPEN

+

Adds file to working set and opens it

+

Kind: global variable

+ + +

Goes to next document

+

Kind: global variable

+ + +

Goes to previous document

+

Kind: global variable

+ + +

Goes to next document in list order

+

Kind: global variable

+ + +

Goes to previous document in list order

+

Kind: global variable

+ + +

Shows current file in file tree

+

Kind: global variable

+ + +

Shows current file in OS file explorer

+

Kind: global variable

+ + +

Shows current file in OS Terminal

+

Kind: global variable

+ + +

Opens integrated terminal at the selected file/folder path

+

Kind: global variable

+ + +

Shows current file in open powershell in Windows os

+

Kind: global variable

+ + +

Open current file in the default associated app in the os

+

Kind: global variable

+ + +

Opens quick open dialog

+

Kind: global variable

+ + +

Jumps to definition of symbol at cursor

+

Kind: global variable

+ + +

Opens go to definition search

+

Kind: global variable

+ + +

Opens go to definition in project search

+

Kind: global variable

+ + +

Opens go to line dialog

+

Kind: global variable

+ + +

Goes to first problem in current file

+

Kind: global variable

+ + +

Goes to next problem in current file

+

Kind: global variable

+ + +

Goes to previous problem in current file

+

Kind: global variable

+ +

TOGGLE_QUICK_EDIT

+

Toggles quick edit widget

+

Kind: global variable

+ +

TOGGLE_QUICK_DOCS

+

Toggles quick docs widget

+

Kind: global variable

+ +

QUICK_EDIT_NEXT_MATCH

+

Goes to next match in quick edit

+

Kind: global variable

+ +

QUICK_EDIT_PREV_MATCH

+

Goes to previous match in quick edit

+

Kind: global variable

+ +

CSS_QUICK_EDIT_NEW_RULE

+

Creates new CSS rule in quick edit

+

Kind: global variable

+ +

HELP_HOW_TO_USE_BRACKETS

+

Opens how to use Brackets guide

+

Kind: global variable

+ +

HELP_DOCS

+

Opens documentation

+

Kind: global variable

+ +

HELP_SUPPORT

+

Opens support resources

+

Kind: global variable

+ +

HELP_GET_PRO

+

Opens Phoenix Pro page

+

Kind: global variable

+ +

HELP_CANCEL_TRIAL

+

Cancels Phoenix Pro trial

+

Kind: global variable

+ +

HELP_VIEW_LICENSE

+

Opens Phoenix License page

+

Kind: global variable

+ +

HELP_MANAGE_LICENSES

+

Manage Pro licenses

+

Kind: global variable

+ +

HELP_SUGGEST

+

Opens feature suggestion page

+

Kind: global variable

+ +

HELP_REPORT_ISSUE

+

Opens report issue page

+

Kind: global variable

+ +

HELP_RELEASE_NOTES

+

Opens release notes

+

Kind: global variable

+ +

HELP_GET_INVOLVED

+

Opens contributor guidelines

+

Kind: global variable

+ +

HELP_SHOW_EXT_FOLDER

+

Shows extensions folder in OS

+

Kind: global variable

+ +

HELP_HOMEPAGE

+

Opens project homepage

+

Kind: global variable

+ +

HELP_YOUTUBE

+

Opens YouTube channel

+

Kind: global variable

+ +

HELP_TWITTER

+

Opens Twitter page

+

Kind: global variable

+ +

HELP_TOGGLE_SHORTCUTS_PANEL

+

Toggles keyboard shortcuts panel

+

Kind: global variable

+ +

HELP_CHECK_UPDATES

+

Checks for updates

+

Kind: global variable

+ +

HELP_AUTO_UPDATE

+

Toggles auto update

+

Kind: global variable

+ +

CMD_WORKINGSET_SORT_BY_ADDED

+

Sorts working set by order files were added

+

Kind: global variable

+ +

CMD_WORKINGSET_SORT_BY_NAME

+

Sorts working set by file name

+

Kind: global variable

+ +

CMD_WORKINGSET_SORT_BY_TYPE

+

Sorts working set by file type

+

Kind: global variable

+ +

CMD_WORKING_SORT_TOGGLE_AUTO

+

Toggles automatic working set sorting

+

Kind: global variable

+ +

CMD_TOGGLE_SHOW_WORKING_SET

+

Toggles working set visibility

+

Kind: global variable

+ +

CMD_TOGGLE_SHOW_FILE_TABS

+

Toggles file tabs visibility

+

Kind: global variable

+ +

CMD_KEYBOARD_NAV_UI_OVERLAY

+

Opens keyboard navigation UI overlay

+

Kind: global variable

+ +

CMD_SPLITVIEW_NONE

+

Removes split view

+

Kind: global variable

+ +

CMD_SPLITVIEW_VERTICAL

+

Splits view vertically

+

Kind: global variable

+ +

CMD_SPLITVIEW_HORIZONTAL

+

Splits view horizontally

+

Kind: global variable

+ +

CMD_SWITCH_PANE_FOCUS

+

Switches focus between split panes

+

Kind: global variable

+ +

HELP_ABOUT

+

Shows about dialog

+

Kind: global variable

+ +

APP_RELOAD

+

Reloads the application

+

Kind: global variable

+ +

APP_RELOAD_WITHOUT_EXTS

+

Reloads the application without extensions

+

Kind: global variable

+ +

APP_ABORT_QUIT

+

Aborts application quit

+

Kind: global variable

+ +

APP_BEFORE_MENUPOPUP

+

Handler before menu popup

+

Kind: global variable

+ +

HIDE_SIDEBAR

+

Hides the sidebar

+

Kind: global variable

+ +

SHOW_SIDEBAR

+

Shows the sidebar

+

Kind: global variable

+ +

REINSTALL_CREDS

+

Reinstalls credentials in keychain

+

Kind: global variable

+ +

CMD_GIT_INIT

+

Initializes a new git repository

+

Kind: global variable

+ +

CMD_GIT_CLONE

+

Clones a git repository

+

Kind: global variable

+ +

CMD_GIT_CLONE_WITH_URL

+

Clones a git repository with a specific URL

+

Kind: global variable

+ +

CMD_GIT_SETTINGS_COMMAND_ID

+

Opens git settings

+

Kind: global variable

+ +

CMD_GIT_CLOSE_UNMODIFIED

+

Closes unmodified files

+

Kind: global variable

+ +

CMD_GIT_CHECKOUT

+

Checks out a branch or commit

+

Kind: global variable

+ +

CMD_GIT_RESET_HARD

+

Performs a hard reset

+

Kind: global variable

+ +

CMD_GIT_RESET_SOFT

+

Performs a soft reset

+

Kind: global variable

+ +

CMD_GIT_RESET_MIXED

+

Performs a mixed reset

+

Kind: global variable

+ +

CMD_GIT_TOGGLE_PANEL

+

Toggles the git panel

+

Kind: global variable

+ +

CMD_CUSTOM_SNIPPETS_PANEL

+

Toggles the custom snippets panel

+

Kind: global variable

+ +

CMD_GIT_GOTO_NEXT_CHANGE

+

Goes to next git change

+

Kind: global variable

+ +

CMD_GIT_GOTO_PREVIOUS_CHANGE

+

Goes to previous git change

+

Kind: global variable

+ +

CMD_GIT_COMMIT_CURRENT

+

Commits current file changes

+

Kind: global variable

+ +

CMD_GIT_COMMIT_ALL

+

Commits all changes

+

Kind: global variable

+ +

CMD_GIT_FETCH

+

Fetches from remote

+

Kind: global variable

+ +

CMD_GIT_PULL

+

Pulls from remote

+

Kind: global variable

+ +

CMD_GIT_PUSH

+

Pushes to remote

+

Kind: global variable

+ +

CMD_GIT_REFRESH

+

Refreshes git status

+

Kind: global variable

+ +

CMD_GIT_TAG

+

Creates a git tag

+

Kind: global variable

+ +

CMD_GIT_DISCARD_ALL_CHANGES

+

Discards all changes

+

Kind: global variable

+ +

CMD_GIT_UNDO_LAST_COMMIT

+

Undoes the last commit

+

Kind: global variable

+ +

CMD_GIT_CHANGE_USERNAME

+

Changes git username

+

Kind: global variable

+ +

CMD_GIT_CHANGE_EMAIL

+

Changes git email

+

Kind: global variable

+ +

CMD_GIT_GERRIT_PUSH_REF

+

Pushes to Gerrit code review

+

Kind: global variable

+ +

CMD_GIT_AUTHORS_OF_SELECTION

+

Shows authors of selected code

+

Kind: global variable

+ +

CMD_GIT_AUTHORS_OF_FILE

+

Shows authors of current file

+

Kind: global variable

+ +

CMD_GIT_TOGGLE_UNTRACKED

+

Toggles display of untracked files

+

Kind: global variable

+ +

CMD_GIT_HISTORY_GLOBAL

+

Toggles global history view in history panel

+

Kind: global variable

+ +

CMD_GIT_HISTORY_FILE

+

Toggles file history view in history panel

+

Kind: global variable

+ + \ No newline at end of file diff --git a/api/API-Reference/command/Commands/index.html b/api/API-Reference/command/Commands/index.html new file mode 100644 index 00000000..fe38f16c --- /dev/null +++ b/api/API-Reference/command/Commands/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/command/KeyBindingManager.html b/api/API-Reference/command/KeyBindingManager.html new file mode 100644 index 00000000..0897d07c --- /dev/null +++ b/api/API-Reference/command/KeyBindingManager.html @@ -0,0 +1,173 @@ + + + + + +KeyBindingManager | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

KeyBindingManager

Import :

+
const KeyBindingManager = brackets.getModule("command/KeyBindingManager")
+ +

useWindowsCompatibleBindings

+

Use windows-specific bindings if no other are found (e.g. Linux). +Core Brackets modules that use key bindings should always define at +least a generic keybinding that is applied for all platforms. This +setting effectively creates a compatibility mode for third party +extensions that define explicit key bindings for Windows and Mac, but +not Linux.

+

Kind: global variable

+ +

EVENT_KEY_BINDING_ADDED : string

+

key binding add event

+

Kind: global constant

+ +

EVENT_KEY_BINDING_REMOVED : string

+

key binding remove event

+

Kind: global constant

+ +

EVENT_NEW_PRESET : string

+

new preset event

+

Kind: global constant

+ +

EVENT_PRESET_CHANGED : string

+

preset change event

+

Kind: global constant

+ +

KEY : Object

+

Kind: global constant

+ +

formatKeyDescriptor(descriptor) ⇒ string

+

Convert normalized key representation to display appropriate for platform.

+

Kind: global function
+Returns: string - Display/Operating system appropriate string

+
ParamTypeDescription
descriptorstringNormalized key descriptor.
+ +

removeBinding(key, [platform])

+

Remove a key binding from _keymap

+

Kind: global function

+
ParamTypeDescription
keystringa key-description string that may or may not be normalized.
[platform]stringOS from which to remove the binding (all platforms if unspecified)
+ +

getKeymap([defaults]) ⇒ Object

+

Returns a copy of the current key map. If the optional 'defaults' parameter is true, +then a copy of the default key map is returned. +In the default keymap each key is associated with an object containing commandID, key, and displayKey.

+

Kind: global function

+
ParamTypeDescription
[defaults]booleantrue if the caller wants a copy of the default key map. Otherwise, the current active key map is returned.
+ +

addBinding(command, keyBindings, platform, options) ⇒ Object

+

Add one or more key bindings to a particular Command. +Returns record(s) for valid key binding(s).

+

Kind: global function

+
ParamTypeDescription
commandstring | CommandA command ID or command object
keyBindingsObjectA single key binding or an array of keybindings. In an array of keybinding platform property is also available. Example: "Shift-Cmd-F". Mac and Win key equivalents are automatically mapped to each other. Use displayKey property to display a different string (e.g. "CMD+" instead of "CMD="). if browserOnly is true, then the shortcut will only apply in browser if nativeOnly is set, the shortcut will only apply in native apps
platformstringThe target OS of the keyBindings either "mac", "win" or "linux". If undefined, all platforms not explicitly defined will use the key binding. NOTE: If platform is not specified, Ctrl will be replaced by Cmd for "mac" platform
optionsobject
options.isMenuShortcutbooleanthis allows alt-key shortcuts to be registered.
+ +

getKeyBindings(command) ⇒ Array.<Object>

+

Retrieve key bindings currently associated with a command

+

Kind: global function
+Returns: Array.<Object> - The object has two properties key and displayKey

+
ParamTypeDescription
commandstring | CommandA command ID or command object
+ +

getKeyBindingsDisplay(commandID) ⇒ string | null

+

Retrieves the platform-specific string representation of the key bindings for a specified command. +This function is useful for displaying the keyboard shortcut associated with a given command ID to the user. +If a key binding is found for the command, it returns the formatted key descriptor. Otherwise, it returns null.

+

Kind: global function
+Returns: string | null - The formatted key binding as a string if available; otherwise, null.

+
ParamTypeDescription
commandIDstringThe unique identifier of the command for which the key binding is to be retrieved.
+ +

addGlobalKeydownHook(hook)

+

Adds a global keydown hook that gets first crack at keydown events +before standard keybindings do. This is intended for use by modal or +semi-modal UI elements like dialogs or the code hint list that should +execute before normal command bindings are run.

+

The hook is passed two parameters, the first param is the original keyboard event. +The second param is the deduced shortcut string like Ctrl-F if present for +that event or null if not keyboard shortcut string. If the +hook handles the event (or wants to block other global hooks from +handling the event), it should return true. Note that this will only +stop other global hooks and KeyBindingManager from handling the +event; to prevent further event propagation, you will need to call +stopPropagation(), stopImmediatePropagation(), and/or preventDefault() +as usual.

+

Multiple keydown hooks can be registered, and are executed in order, +most-recently-added first. A keydown hook will only be added once if the same +hook is already added before.

+

(We have to have a special API for this because (1) handlers are normally +called in least-recently-added order, and we want most-recently-added; +(2) native DOM events don't have a way for us to find out if +stopImmediatePropagation()/stopPropagation() has been called on the +event, so we have to have some other way for one of the hooks to +indicate that it wants to block the other hooks from running.)

+

Kind: global function

+
ParamTypeDescription
hookfunctionThe global hook to add.
+ +

removeGlobalKeydownHook(hook)

+

Removes a global keydown hook added by addGlobalKeydownHook. +Does not need to be the most recently added hook.

+

Kind: global function

+
ParamTypeDescription
hookfunctionThe global hook to remove.
+ +

registerCustomKeymapPack(packID, packName, keyMap)

+

This can be used by extensions to register new kepmap packs that can be listed in the keyboard shortcuts panel +under use preset dropdown. For EG. distribute a netbeans editor shortcuts pack via extension.

+

Kind: global function

+
ParamTypeDescription
packIDstringA unique ID for the pack. Use extensionID.name format to avoid collisions.
packNamestringA name for the pack.
keyMapObjecta keymap of the format {'Ctrl-Alt-L': 'file.liveFilePreview'} depending on the platform. The extension should decide the correct keymap based on the platform before calling this function.
+ +

getAllCustomKeymapPacks() ⇒ Array.<Object>

+

Responsible to get all the custom keymap packs

+

Kind: global function
+Returns: Array.<Object> - an array of all the custom keymap packs, +each pack is an object with keys: packID, packageName & keyMap

+ +

getCurrentCustomKeymapPack() ⇒ Object

+

To get the current custom keymap pack

+

Kind: global function
+Returns: Object - the current custom keymap pack

+ +

resetUserShortcutsAsync() ⇒ Promise | Promise.<void> | *

+

resets all user defined shortcuts

+

Kind: global function

+ +

isInOverlayMode() ⇒ boolean

+

Whether the keyboard is in overlay mode or not

+

Kind: global function
+Returns: boolean - True if in overlay mode else false

+ +

showShortcutSelectionDialog(command)

+

to display the shortcut selection dialog

+

Kind: global function

+
Param
command
+ +

canAssignBinding(commandId) ⇒ boolean

+

Returns true the given command id can be overriden by user.

+

Kind: global function

+
Param
commandId
+ +

UserKeyBinding : Object

+

Kind: global typedef

+ + \ No newline at end of file diff --git a/api/API-Reference/command/KeyBindingManager/index.html b/api/API-Reference/command/KeyBindingManager/index.html new file mode 100644 index 00000000..a2c58295 --- /dev/null +++ b/api/API-Reference/command/KeyBindingManager/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/command/KeyboardOverlayMode.html b/api/API-Reference/command/KeyboardOverlayMode.html new file mode 100644 index 00000000..bb31500f --- /dev/null +++ b/api/API-Reference/command/KeyboardOverlayMode.html @@ -0,0 +1,60 @@ + + + + + +KeyboardOverlayMode | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

KeyboardOverlayMode

Import :

+
const KeyboardOverlayMode = brackets.getModule("command/KeyboardOverlayMode")
+ +

EditorManager

+

This handles the overlay mode

+

Kind: global constant

+ +

startOverlayMode()

+

Responsible to start the overlay mode

+

Kind: global function

+ +

exitOverlayMode()

+

Responsible to exit the overlay mode. +restores focus to previously active pane

+

Kind: global function

+ +

processOverlayKeyboardEvent(event)

+

Handles the keyboard navigation in overlay mode +Process the arrow keys to move between panes, Enter to select a pane, and Escape to exit overlay mode

+

Kind: global function

+
ParamType
eventKeyboardEvent
+ +

isInOverlayMode() ⇒ boolean

+

to check whether in overlay mode or not

+

Kind: global function
+Returns: boolean - returns true if in overlay mode otherwise false

+ + \ No newline at end of file diff --git a/api/API-Reference/command/KeyboardOverlayMode/index.html b/api/API-Reference/command/KeyboardOverlayMode/index.html new file mode 100644 index 00000000..f6978321 --- /dev/null +++ b/api/API-Reference/command/KeyboardOverlayMode/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/command/Keys.html b/api/API-Reference/command/Keys.html new file mode 100644 index 00000000..76604d17 --- /dev/null +++ b/api/API-Reference/command/Keys.html @@ -0,0 +1,42 @@ + + + + + +Keys | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

Keys

Import :

+
const Keys = brackets.getModule("command/Keys")
+ +

KEY : enum

+

Defines common keyboard key identifiers for use in keyboard event handling.

+

Kind: global enum
+Properties

+
NameTypeDefault
ENTERstring"Enter"
RETURNstring"Return"
ESCAPEstring"Escape"
ARROW_LEFTstring"ArrowLeft"
ARROW_RIGHTstring"ArrowRight"
ARROW_UPstring"ArrowUp"
ARROW_DOWNstring"ArrowDown"
SPACEstring" "
TABstring"Tab"
BACKSPACEstring"Backspace"
DELETEstring"Delete"
HOMEstring"Home"
ENDstring"End"
PAGE_UPstring"PageUp"
PAGE_DOWNstring"PageDown"
SHIFTstring"Shift"
CONTROLstring"Control"
ALTstring"Alt"
METAstring"Meta"
F1string"F1"
F2string"F2"
F3string"F3"
F4string"F4"
F5string"F5"
F6string"F6"
F7string"F7"
F8string"F8"
F9string"F9"
F10string"F10"
F11string"F11"
F12string"F12"
INSERTstring"Insert"
CONTEXT_MENUstring"ContextMenu"
NUM_LOCKstring"NumLock"
SCROLL_LOCKstring"ScrollLock"
CAPS_LOCKstring"CapsLock"
+ + \ No newline at end of file diff --git a/api/API-Reference/command/Keys/index.html b/api/API-Reference/command/Keys/index.html new file mode 100644 index 00000000..89a2650c --- /dev/null +++ b/api/API-Reference/command/Keys/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/command/Menus.html b/api/API-Reference/command/Menus.html new file mode 100644 index 00000000..fe997e43 --- /dev/null +++ b/api/API-Reference/command/Menus.html @@ -0,0 +1,422 @@ + + + + + +Menus | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

Menus

Import :

+
const Menus = brackets.getModule("command/Menus")
+ + +

Kind: global class

+ + +

new MenuItem(id, command, [options])

+

MenuItem represents a single menu item that executes a Command or a menu divider. MenuItems +may have a sub-menu. A MenuItem may correspond to an HTML-based +menu item or a native menu item if Brackets is running in a native application shell

+

Since MenuItems may have a native implementation clients should create MenuItems through +addMenuItem() and should NOT construct a MenuItem object directly. +Clients should also not access HTML content of a menu directly and instead use +the MenuItem API to query and modify menus items.

+

MenuItems are views on to Command objects so modify the underlying Command to modify the +name, enabled, and checked state of a MenuItem. The MenuItem will update automatically

+
ParamTypeDescription
idstring
commandstring | Commandthe Command this MenuItem will reflect. Use DIVIDER to specify a menu divider
[options]
options.hideWhenCommandDisabledbooleanwill not show the menu item if command is disabled.
+ + +

Gets the Command associated with a MenuItem

+

Kind: instance method of MenuItem

+ + +

Returns the parent Menu for this MenuItem

+

Kind: instance method of MenuItem

+ + +

Kind: global class

+ + +

new Menu(id)

+

Menu represents a top-level menu in the menu bar. A Menu may correspond to an HTML-based +menu or a native menu if Brackets is running in a native application shell.

+

Since menus may have a native implementation clients should create Menus through +addMenu() and should NOT construct a Menu object directly. +Clients should also not access HTML content of a menu directly and instead use +the Menu API to query and modify menus.

+
ParamType
idstring
+ + +

Removes the specified menu item from this Menu. Key bindings are unaffected; use KeyBindingManager +directly to remove key bindings if desired.

+

Kind: instance method of Menu

+
ParamTypeDescription
commandstring | Commandcommand the menu would execute if we weren't deleting it.
+ + +

Removes the specified menu divider from this Menu.

+

Kind: instance method of Menu

+
ParamTypeDescription
menuItemIDstringthe menu item id of the divider to remove.
+ + +

Adds a new menu item with the specified id and display text. The insertion position is +specified via the relativeID and position arguments which describe a position +relative to another MenuItem or MenuGroup. It is preferred that plug-ins +insert new MenuItems relative to a menu section rather than a specific +MenuItem (see Menu Section Constants).

+

TODO: Sub-menus are not yet supported, but when they are implemented this API will +allow adding new MenuItems to sub-menus as well.

+

Note, keyBindings are bound to Command objects not MenuItems. The provided keyBindings +will be bound to the supplied Command object rather than the MenuItem.

+

Kind: instance method of Menu
+Returns: MenuItem - the newly created MenuItem

+
ParamTypeDescription
commandstring | Commandthe command the menu will execute. Pass Menus.DIVIDER for a menu divider, or just call addMenuDivider() instead.
[keyBindings]string | ObjectRegister one or more key bindings to associate with the supplied command
[position]stringconstant defining the position of new MenuItem relative to other MenuItems. Values: - With no relativeID, use Menus.FIRST or LAST (default is LAST) - Relative to a command id, use BEFORE or AFTER (required) - Relative to a MenuSection, use FIRST_IN_SECTION or LAST_IN_SECTION (required)
[relativeID]stringcommand id OR one of the MenuSection.* constants. Required for all position constants except FIRST and LAST.
[options]
options.hideWhenCommandDisabledbooleanwill not show the menu item if command is disabled. Helps to clear the clutter on greyed out menu items if not applicable to context.
+ + +

Inserts divider item in menu.

+

Kind: instance method of Menu
+Returns: MenuItem - the newly created divider

+
ParamTypeDescription
positionstringconstant defining the position of new the divider relative to other MenuItems. Default is LAST. (see Insertion position constants).
relativeIDstringid of menuItem, sub-menu, or menu section that the new divider will be positioned relative to. Required for all position constants except FIRST and LAST
+ + +

Creates a new submenu and a menuItem and adds the menuItem of the submenu +to the menu and returns the submenu.

+

A submenu will have the same structure of a menu with a additional field +parentMenuItem which has the reference of the submenu's parent menuItem. +A submenu will raise the following events:

+
    +
  • beforeSubMenuOpen
  • +
  • beforeSubMenuClose
  • +
+

Note, This function will create only a context submenu.

+

TODO: Make this function work for Menus

+

Kind: instance method of Menu
+Returns: Menu - the newly created submenu

+
ParamTypeDescription
namestringdisplayed in menu item of the submenu
idstring
positionstringconstant defining the position of new MenuItem of the submenu relative to other MenuItems. Values: - With no relativeID, use Menus.FIRST or LAST (default is LAST) - Relative to a command id, use BEFORE or AFTER (required) - Relative to a MenuSection, use FIRST_IN_SECTION or LAST_IN_SECTION (required)
relativeIDstringcommand id OR one of the MenuSection.* constants. Required for all position constants except FIRST and LAST.
+ + +

Removes the specified submenu from this Menu.

+

Note, this function will only remove context submenus

+

TODO: Make this function work for Menus

+

Kind: instance method of Menu

+
ParamTypeDescription
subMenuIDstringthe menu id of the submenu to remove.
+ + +

Closes the submenu if the menu has a submenu open.

+

Kind: instance method of Menu

+ +

ContextMenu ⇐ Menu

+

Kind: global class
+Extends: Menu

+ + +

new ContextMenu()

+

Represents a context menu that can open at a specific location in the UI.

+

Clients should not create this object directly and should instead use registerContextMenu() +to create new ContextMenu objects.

+

Context menus in brackets may be HTML-based or native so clients should not reach into +the HTML and should instead manipulate ContextMenus through the API.

+

Events:

+
    +
  • beforeContextMenuOpen
  • +
  • beforeContextMenuClose
  • +
+ +

contextMenu.open(mouseOrLocation)

+

Displays the ContextMenu at the specified location and dispatches the +"beforeContextMenuOpen" event or "beforeSubMenuOpen" event (for submenus). +The menu location may be adjusted to prevent clipping by the browser window. +All other menus and ContextMenus will be closed before a new menu +will be closed before a new menu is shown (if the new menu is not +a submenu).

+

In case of submenus, the parentMenu of the submenu will not be closed when the +sub menu is open.

+

Kind: instance method of ContextMenu

+
ParamTypeDescription
mouseOrLocationMouseEvent | Objectpass a MouseEvent to display the menu near the mouse or pass in an object with page x/y coordinates for a specific location.This paramter is not used for submenus. Submenus are always displayed at a position relative to the parent menu.
+ +

contextMenu.close()

+

Closes the context menu.

+

Kind: instance method of ContextMenu

+ +

contextMenu.isOpen()

+

Detect if current context menu is already open

+

Kind: instance method of ContextMenu

+ +

contextMenu.removeMenuItem(command)

+

Removes the specified menu item from this Menu. Key bindings are unaffected; use KeyBindingManager +directly to remove key bindings if desired.

+

Kind: instance method of ContextMenu

+
ParamTypeDescription
commandstring | Commandcommand the menu would execute if we weren't deleting it.
+ +

contextMenu.removeMenuDivider(menuItemID)

+

Removes the specified menu divider from this Menu.

+

Kind: instance method of ContextMenu

+
ParamTypeDescription
menuItemIDstringthe menu item id of the divider to remove.
+ +

contextMenu.addMenuItem(command, [keyBindings], [position], [relativeID], [options]) ⇒ MenuItem

+

Adds a new menu item with the specified id and display text. The insertion position is +specified via the relativeID and position arguments which describe a position +relative to another MenuItem or MenuGroup. It is preferred that plug-ins +insert new MenuItems relative to a menu section rather than a specific +MenuItem (see Menu Section Constants).

+

TODO: Sub-menus are not yet supported, but when they are implemented this API will +allow adding new MenuItems to sub-menus as well.

+

Note, keyBindings are bound to Command objects not MenuItems. The provided keyBindings +will be bound to the supplied Command object rather than the MenuItem.

+

Kind: instance method of ContextMenu
+Returns: MenuItem - the newly created MenuItem

+
ParamTypeDescription
commandstring | Commandthe command the menu will execute. Pass Menus.DIVIDER for a menu divider, or just call addMenuDivider() instead.
[keyBindings]string | ObjectRegister one or more key bindings to associate with the supplied command
[position]stringconstant defining the position of new MenuItem relative to other MenuItems. Values: - With no relativeID, use Menus.FIRST or LAST (default is LAST) - Relative to a command id, use BEFORE or AFTER (required) - Relative to a MenuSection, use FIRST_IN_SECTION or LAST_IN_SECTION (required)
[relativeID]stringcommand id OR one of the MenuSection.* constants. Required for all position constants except FIRST and LAST.
[options]
options.hideWhenCommandDisabledbooleanwill not show the menu item if command is disabled. Helps to clear the clutter on greyed out menu items if not applicable to context.
+ +

contextMenu.addMenuDivider(position, relativeID) ⇒ MenuItem

+

Inserts divider item in menu.

+

Kind: instance method of ContextMenu
+Returns: MenuItem - the newly created divider

+
ParamTypeDescription
positionstringconstant defining the position of new the divider relative to other MenuItems. Default is LAST. (see Insertion position constants).
relativeIDstringid of menuItem, sub-menu, or menu section that the new divider will be positioned relative to. Required for all position constants except FIRST and LAST
+ +

contextMenu.addSubMenu(name, id, position, relativeID) ⇒ Menu

+

Creates a new submenu and a menuItem and adds the menuItem of the submenu +to the menu and returns the submenu.

+

A submenu will have the same structure of a menu with a additional field +parentMenuItem which has the reference of the submenu's parent menuItem. +A submenu will raise the following events:

+
    +
  • beforeSubMenuOpen
  • +
  • beforeSubMenuClose
  • +
+

Note, This function will create only a context submenu.

+

TODO: Make this function work for Menus

+

Kind: instance method of ContextMenu
+Returns: Menu - the newly created submenu

+
ParamTypeDescription
namestringdisplayed in menu item of the submenu
idstring
positionstringconstant defining the position of new MenuItem of the submenu relative to other MenuItems. Values: - With no relativeID, use Menus.FIRST or LAST (default is LAST) - Relative to a command id, use BEFORE or AFTER (required) - Relative to a MenuSection, use FIRST_IN_SECTION or LAST_IN_SECTION (required)
relativeIDstringcommand id OR one of the MenuSection.* constants. Required for all position constants except FIRST and LAST.
+ +

contextMenu.removeSubMenu(subMenuID)

+

Removes the specified submenu from this Menu.

+

Note, this function will only remove context submenus

+

TODO: Make this function work for Menus

+

Kind: instance method of ContextMenu

+
ParamTypeDescription
subMenuIDstringthe menu id of the submenu to remove.
+ +

contextMenu.closeSubMenu()

+

Closes the submenu if the menu has a submenu open.

+

Kind: instance method of ContextMenu

+ +

ContextMenu.assignContextMenuToSelector()

+

Associate a context menu to a DOM element. +This static function take care of registering event handlers for the click event +listener and passing the right "position" object to the Context#open method

+

Kind: static method of ContextMenu

+ +

DIVIDER

+

Other constants

+

Kind: global variable

+ +

AppMenuBar : enum

+

Brackets Application Menu Constants

+

Kind: global enum
+Properties

+
NameTypeDefault
FILE_MENUstring"file-menu"
EDIT_MENUstring"edit-menu"
FIND_MENUstring"find-menu"
VIEW_MENUstring"view-menu"
NAVIGATE_MENUstring"navigate-menu"
DEBUG_MENUstring"debug-menu"
HELP_MENUstring"help-menu"
+ +

ContextMenuIds : enum

+

Brackets Context Menu Constants

+

Kind: global enum
+Properties

+
NameTypeDefault
EDITOR_MENUstring"editor-context-menu"
INLINE_EDITOR_MENUstring"inline-editor-context-menu"
PROJECT_MENUstring"project-context-menu"
WORKING_SET_CONTEXT_MENUstring"workingset-context-menu"
WORKING_SET_CONFIG_MENUstring"workingset-configuration-menu"
SPLITVIEW_MENUstring"splitview-menu"
+ + +

Brackets well known submenus

+

Kind: global enum
+Properties

+
NameTypeDefault
GIT_SUB_MENUstring"git-submenu"
+ + +

Brackets Application Menu Section Constants +It is preferred that plug-ins specify the location of new MenuItems +in terms of a menu section rather than a specific MenuItem. This provides +looser coupling to Bracket's internal MenuItems and makes menu organization +more semantic. +Use these constants as the "relativeID" parameter when calling addMenuItem() and +specify a position of FIRST_IN_SECTION or LAST_IN_SECTION.

+

Menu sections are denoted by dividers or the beginning/end of a menu

+

Kind: global enum
+Properties

+
NameTypeDefault
FILE_OPEN_CLOSE_COMMANDSstring"FILE_OPEN_CLOSE_COMMANDS"
FILE_SAVE_COMMANDSstring"FILE_SAVE_COMMANDS"
FILE_LIVEstring"FILE_LIVE"
FILE_SETTINGSstring"FILE_SETTINGS"
FILE_EXTENSION_MANAGERstring"FILE_EXTENSION_MANAGER"
EDIT_UNDO_REDO_COMMANDSstring"EDIT_UNDO_REDO_COMMANDS"
EDIT_TEXT_COMMANDSstring"EDIT_TEXT_COMMANDS"
EDIT_SELECTION_COMMANDSstring"EDIT_SELECTION_COMMANDS"
EDIT_MODIFY_SELECTIONstring"EDIT_MODIFY_SELECTION"
EDIT_COMMENT_SELECTIONstring"EDIT_COMMENT_SELECTION"
EDIT_CODE_HINTS_COMMANDSstring"EDIT_CODE_HINTS_COMMANDS"
EDIT_TOGGLE_OPTIONSstring"EDIT_TOGGLE_OPTIONS"
FIND_FIND_COMMANDSstring"FIND_FIND_COMMANDS"
FIND_FIND_IN_COMMANDSstring"FIND_FIND_IN_COMMANDS"
FIND_REPLACE_COMMANDSstring"FIND_REPLACE_COMMANDS"
VIEW_HIDESHOW_COMMANDSstring"VIEW_HIDESHOW_COMMANDS"
VIEW_FONTSIZE_COMMANDSstring"VIEW_FONTSIZE_COMMANDS"
VIEW_TOGGLE_OPTIONSstring"VIEW_TOGGLE_OPTIONS"
NAVIGATE_GOTO_COMMANDSstring"NAVIGATE_GOTO_COMMANDS"
NAVIGATE_DOCUMENTS_COMMANDSstring"NAVIGATE_DOCUMENTS_COMMANDS"
NAVIGATE_OS_COMMANDSstring"NAVIGATE_OS_COMMANDS"
NAVIGATE_QUICK_EDIT_COMMANDSstring"NAVIGATE_QUICK_EDIT_COMMANDS"
NAVIGATE_QUICK_DOCS_COMMANDSstring"NAVIGATE_QUICK_DOCS_COMMANDS"
+ +

BEFORE : enum

+

Insertion position constants +Used by addMenu(), addMenuItem(), and addSubMenu() to +specify the relative position of a newly created menu object

+

Kind: global enum

+ +

getMenu(id) ⇒ Menu

+

Retrieves the Menu object for the corresponding id.

+

Kind: global function

+
ParamType
idstring
+ +

getSubMenu(id) ⇒ Menu

+

Retrieves the subMenu object for the corresponding id if present.

+

Kind: global function

+
ParamType
idstring
+ +

getAllMenuItemCommands() ⇒ Set.<string>

+

retruns a set containing all commands that has a menu item registered

+

Kind: global function

+ +

getAllMenus() ⇒ Object.<string, Menu>

+

Retrieves the map of all Menu objects.

+

Kind: global function

+ +

getContextMenu(id) ⇒ ContextMenu

+

Retrieves the ContextMenu object for the corresponding id.

+

Kind: global function

+
ParamType
idstring
+ +

getMenuItem(id) ⇒ MenuItem

+

Retrieves the MenuItem object for the corresponding id.

+

Kind: global function

+
ParamType
idstring
+ +

closeAll()

+

Closes all menus that are open

+

Kind: global function

+ +

openMenu(id) ⇒ null

+

Opens a menu with the given id

+

Kind: global function

+
Param
id
+ +

getOpenMenu() ⇒ null | string

+

returns the currently open menu id if present or null

+

Kind: global function

+ +

addMenu(name, id, position, relativeID) ⇒ Menu

+

Adds a top-level menu to the application menu bar which may be native or HTML-based.

+

Kind: global function
+Returns: Menu - the newly created Menu

+
ParamTypeDescription
namestringdisplay text for menu
idstringunique identifier for a menu. Core Menus in Brackets use a simple title as an id, for example "file-menu". Extensions should use the following format: "author.myextension.mymenuname".
positionstringconstant defining the position of new the Menu relative to other Menus. Default is LAST (see Insertion position constants).
relativeIDstringid of Menu the new Menu will be positioned relative to. Required when position is AFTER or BEFORE, ignored when position is FIRST or LAST
+ +

removeMenu(id)

+

Removes a top-level menu from the application menu bar which may be native or HTML-based.

+

Kind: global function

+
ParamTypeDescription
idstringunique identifier for a menu. Core Menus in Brackets use a simple title as an id, for example "file-menu". Extensions should use the following format: "author.myextension.mymenuname".
+ +

registerContextMenu(id) ⇒ ContextMenu

+

Registers new context menu with Brackets. +Extensions should generally use the predefined context menus built into Brackets. Use this +API to add a new context menu to UI that is specific to an extension.

+

After registering a new context menu clients should:

+
    +
  • use addMenuItem() to add items to the context menu
  • +
  • call open() to show the context menu. +For example:
  • +
+
$("#my_ID").contextmenu(function (e) {
if (e.which === 3) {
my_cmenu.open(e);
}
});
+

To make menu items be contextual to things like selection, listen for the "beforeContextMenuOpen" +to make changes to Command objects before the context menu is shown. MenuItems are views of +Commands, which control a MenuItem's name, enabled state, and checked state.

+

Kind: global function
+Returns: ContextMenu - the newly created context menu

+
ParamTypeDescription
idstringunique identifier for context menu. Core context menus in Brackets use a simple title as an id. Extensions should use the following format: "author.myextension.mycontextmenu name"
+ +

_initHamburgerMenu()

+

Hamburger menu: when the titlebar is too narrow to fit all menu items on one row, +overflow items are hidden and a hamburger button appears with a dropdown listing them.

+

Kind: global function

+ +

"EVENT_BEFORE_CONTEXT_MENU_OPEN"

+

Event triggered before the context menu opens.

+

Kind: event emitted

+ +

"EVENT_BEFORE_CONTEXT_MENU_CLOSE"

+

Event triggered before the context menu closes.

+

Kind: event emitted

+ +

"EVENT_BEFORE_SUB_MENU_OPEN"

+

Event triggered before a sub-menu opens.

+

Kind: event emitted

+ +

"EVENT_BEFORE_SUB_MENU_CLOSE"

+

Event triggered before a sub-menu closes.

+

Kind: event emitted

+ +

"EVENT_MENU_ADDED"

+

Event triggered when a menu or menu is added

+

Kind: event emitted

+ +

"EVENT_SUB_MENU_ADDED"

+

Event triggered when a menu or submenu is added

+

Kind: event emitted

+ +

"EVENT_MENU_ITEM_ADDED"

+

Event triggered when a menu item is added

+

Kind: event emitted

+ + \ No newline at end of file diff --git a/api/API-Reference/command/Menus/index.html b/api/API-Reference/command/Menus/index.html new file mode 100644 index 00000000..72f266ba --- /dev/null +++ b/api/API-Reference/command/Menus/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/document.html b/api/API-Reference/document.html new file mode 100644 index 00000000..e4343a5f --- /dev/null +++ b/api/API-Reference/document.html @@ -0,0 +1,271 @@ + + + + + +Document | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

Document

Import :

+
const Document = brackets.getModule("document/Document")
+ +

Document

+

Kind: global class

+ + +

new Document(file, initialTimestamp, rawText)

+

Model for the contents of a single file and its current modification state. +See DocumentManager documentation for important usage notes.

+

Document dispatches these events:

+

change -- When the text of the editor changes (including due to undo/redo).

+

Passes (Document, ChangeList), where ChangeList is an array +of change record objects. Each change record looks like:

+
    { from: start of change, expressed as {line: <line number>, ch: <character offset>},
to: end of change, expressed as {line: <line number>, ch: <chracter offset>},
text: array of lines of text to replace existing text }
+

The line and ch offsets are both 0-based.

+

The ch offset in "from" is inclusive, but the ch offset in "to" is exclusive. For example, +an insertion of new content (without replacing existing content) is expressed by a range +where from and to are the same.

+

If "from" and "to" are undefined, then this is a replacement of the entire text content.

+

IMPORTANT: If you listen for the "change" event, you MUST also addRef() the document +(and releaseRef() it whenever you stop listening). You should also listen to the "deleted" +event.

+

deleted -- When the file for this document has been deleted. All views onto the document should +be closed. The document will no longer be editable or dispatch "change" events.

+

languageChanged -- When the value of getLanguage() has changed. 2nd argument is the old value, +3rd argument is the new value.

+
ParamTypeDescription
fileFileNeed not lie within the project.
initialTimestampDateFile's timestamp when we read it off disk.
rawTextstringText content of the file.
+ +

document.file : File

+

The File for this document. Need not lie within the project. +If Document is untitled, this is an InMemoryFile object.

+

Kind: instance property of Document

+ +

document.language : Language

+

The Language for this document. Will be resolved by file extension in the constructor

+

Kind: instance property of Document

+ +

document.isDirty : boolean

+

Whether this document has unsaved changes or not. +When this changes on any Document, DocumentManager dispatches a "dirtyFlagChange" event.

+

Kind: instance property of Document

+ +

document.isSaving : boolean

+

Whether this document is currently being saved.

+

Kind: instance property of Document

+ +

document.diskTimestamp : Date

+

What we expect the file's timestamp to be on disk. If the timestamp differs from this, then +it means the file was modified by an app other than Brackets.

+

Kind: instance property of Document

+ +

document.lastChangeTimestamp : number

+

Keeps a running timestamp of when the document was last changed. You can use this timestamp to see a +document was recently changed or not.

+

Kind: instance property of Document

+ +

document.keepChangesTime : Number

+

The timestamp of the document at the point where the user last said to keep changes that conflict +with the current disk version. Can also be -1, indicating that the file was deleted on disk at the +last point when the user said to keep changes, or null, indicating that the user has not said to +keep changes. +Note that this is a time as returned by Date.getTime(), not a Date object.

+

Kind: instance property of Document

+ +

document.addRef()

+

Add a ref to keep this Document alive

+

Kind: instance method of Document

+ +

document.releaseRef()

+

Remove a ref that was keeping this Document alive

+

Kind: instance method of Document

+ +

document.getText([useOriginalLineEndings]) ⇒ string

+

Returns the document's current contents; may not be saved to disk yet. Whenever this +value changes, the Document dispatches a "change" event.

+

Kind: instance method of Document

+
ParamTypeDescription
[useOriginalLineEndings]booleanIf true, line endings in the result depend on the Document's line endings setting (based on OS & the original text loaded from disk). If false, line endings are always \n (like all the other Document text getter methods).
+ +

document.getSelectedText([useOriginalLineEndings], [allSelections]) ⇒ string | null

+

Returns the document's current selected; may not be saved to disk yet. If editor is not open, will return null.

+

Kind: instance method of Document
+Returns: string | null - selected text or null if there is no editor.

+
ParamTypeDescription
[useOriginalLineEndings]booleanIf true, line endings in the result depend on the Document's line endings setting (based on OS & the original text loaded from disk). If false, line endings are always \n (like all the other Document text getter methods).
[allSelections]booleanWhether to return the contents of all selections (separated by newlines) instead of just the primary selection. Default false.
+ +

document.setText(text)

+

Sets the contents of the document. Treated as an edit. Line endings will be rewritten to +match the document's current line-ending style.

+

Kind: instance method of Document

+
ParamTypeDescription
textstringThe text to replace the contents of the document with.
+ +

document.refreshText(text, newTimestamp, initial)

+

Sets the contents of the document. Treated as reloading the document from disk: the document +will be marked clean with a new timestamp, the undo/redo history is cleared, and we re-check +the text's line-ending style. CAN be called even if there is no backing editor.

+

Kind: instance method of Document

+
ParamTypeDescription
textstringThe text to replace the contents of the document with.
newTimestampDateTimestamp of file at the time we read its new contents from disk.
initialbooleanTrue if this is the initial load of the document. In that case, we don't send change events.
+ +

document.replaceRange(text, start, end, origin)

+

Adds, replaces, or removes text. If a range is given, the text at that range is replaced with the +given new text; if text == "", then the entire range is effectively deleted. If 'end' is omitted, +then the new text is inserted at that point and all existing text is preserved. Line endings will +be rewritten to match the document's current line-ending style.

+

IMPORTANT NOTE: Because of #1688, do not use this in cases where you might be +operating on a linked document (like the main document for an inline editor) +during an outer CodeMirror operation (like a key event that's handled by the +editor itself). A common case of this is code hints in inline editors. In +such cases, use editor._codeMirror.replaceRange() instead. This should be +fixed when we migrate to use CodeMirror's native document-linking functionality.

+

Kind: instance method of Document

+
ParamTypeDescription
textstringText to insert or replace the range with
startTextPositionStart of range, inclusive (if 'to' specified) or insertion point (if not)
endTextPositionEnd of range, exclusive; optional
originstringOptional string used to batch consecutive edits for undo. If origin starts with "+", then consecutive edits with the same origin will be batched for undo if they are close enough together in time. If origin starts with "*", then all consecutive edit with the same origin will be batched for undo. Edits with origins starting with other characters will not be batched. (Note that this is a higher level of batching than batchOperation(), which already batches all edits within it for undo. Origin batching works across operations.)
+ +

document.getRange(start, end) ⇒ string

+

Returns the characters in the given range. Line endings are normalized to '\n'.

+

Kind: instance method of Document

+
ParamTypeDescription
startTextPositionStart of range, inclusive
endTextPositionEnd of range, exclusive
+ +

document.getLine(Zero-based) ⇒ string

+

Returns the text of the given line (excluding any line ending characters)

+

Kind: instance method of Document

+
ParamTypeDescription
Zero-basednumberline number
+ +

document.posFromIndex(index) ⇒ TextPosition

+

Given a character index within the document text (assuming \n newlines), +returns the corresponding {line, ch} position. Works whether or not +a master editor is attached.

+

Kind: instance method of Document

+
ParamTypeDescription
indexnumberZero-based character offset
+ +

document.batchOperation(doOperation)

+

Batches a series of related Document changes. Repeated calls to replaceRange() should be wrapped in a +batch for efficiency. Begins the batch, calls doOperation(), ends the batch, and then returns.

+

Kind: instance method of Document

+
ParamType
doOperationfunction
+ +

document.notifySaved()

+

Called when the document is saved (which currently happens in DocumentCommandHandlers). Marks the +document not dirty and notifies listeners of the save.

+

Kind: instance method of Document

+ +

document.adjustPosForChange(pos, textLines, start, end) ⇒ TextPosition

+

Adjusts a given position taking a given replaceRange-type edit into account. +If the position is within the original edit range (start and end inclusive), +it gets pushed to the end of the content that replaced the range. Otherwise, +if it's after the edit, it gets adjusted so it refers to the same character +it did before the edit.

+

Kind: instance method of Document
+Returns: TextPosition - The adjusted position.

+
ParamTypeDescription
posTextPositionThe position to adjust.
textLinesArray.<string>The text of the change, split into an array of lines.
startTextPositionThe start of the edit.
endTextPositionThe end of the edit.
+ +

document.doMultipleEdits(edits, origin) ⇒ Array.<SelectionRange>

+

Helper function for edit operations that operate on multiple selections. Takes an "edit list" +that specifies a list of replaceRanges that should occur, but where all the positions are with +respect to the document state before all the edits (i.e., you don't have to figure out how to fix +up the selections after each sub-edit). Edits must be non-overlapping (in original-document terms). +All the edits are done in a single batch.

+

If your edits are structured in such a way that each individual edit would cause its associated +selection to be properly updated, then all you need to specify are the edits themselves, and the +selections will automatically be updated as the edits are performed. However, for some +kinds of edits, you need to fix up the selection afterwards. In that case, you can specify one +or more selections to be associated with each edit. Those selections are assumed to be in terms +of the document state after the edit, as if that edit were the only one being performed (i.e., +you don't have to worry about adjusting for the effect of other edits). If you supply these selections, +then this function will adjust them as necessary for the effects of other edits, and then return a +flat list of all the selections, suitable for passing to setSelections().

+

Kind: instance method of Document
+Returns: Array.<SelectionRange> - The list of passed selections adjusted for the performed edits, if any.

+
ParamTypeDescription
editsArray.<Object>Specifies the list of edits to perform in a manner similar to CodeMirror's replaceRange. This array will be mutated. edit is the edit to perform: text will replace the current contents of the range between start and end. If end is unspecified, the text is inserted at start. start and end should be positions relative to the document ignoring all other edit descriptions (i.e., as if you were only performing this one edit on the document). If any of the edits overlap, an error will be thrown. If selection is specified, it should be a selection associated with this edit. If isBeforeEdit is set on the selection, the selection will be fixed up for this edit. If not, it won't be fixed up for this edit, meaning it should be expressed in terms of the document state after this individual edit is performed (ignoring any other edits). Note that if you were planning on just specifying isBeforeEdit for every selection, you can accomplish the same thing by simply not passing any selections and letting the editor update the existing selections automatically. Note that edit and selection can each be either an individual edit/selection, or a group of edits/selections to apply in order. This can be useful if you need to perform multiple edits in a row and then specify a resulting selection that shouldn't be fixed up for any of those edits (but should be fixed up for edits related to other selections). It can also be useful if you have several selections that should ignore the effects of a given edit because you've fixed them up already (this commonly happens with line-oriented edits where multiple cursors on the same line should be ignored, but still tracked). Within an edit group, edit positions must be specified relative to previous edits within that group. Also, the total bounds of edit groups must not overlap (e.g. edits in one group can't surround an edit from another group).
originstringAn optional edit origin that's passed through to each replaceRange().
+ +

document.getLanguage() ⇒ Language

+

Returns the language this document is written in. +The language returned is based on the file extension.

+

Kind: instance method of Document
+Returns: Language - An object describing the language used in this document

+ +

document.isUntitled() ⇒ boolean

+

Is this an untitled document?

+

Kind: instance method of Document
+Returns: boolean - - whether or not the document is untitled

+ +

document.reload() ⇒ promise

+

Reloads the document from FileSystem

+

Kind: instance method of Document
+Returns: promise - - to check if reload was successful or not

+ +

Document.normalizeText()

+

Normalizes line endings the same way CodeMirror would

+

Kind: static method of Document

+ +

TextPosition : Object

+

Kind: global typedef
+Properties

+
NameTypeDescription
linenumberZero-based line number
chnumberZero-based character offset
+ +

SelectionRange : Object

+

Kind: global typedef
+Properties

+
NameTypeDescription
startTextPositionStart of the selection
endTextPositionEnd of the selection
primarybooleanWhether this is the primary selection
reversedbooleanWhether the selection is reversed
+ + \ No newline at end of file diff --git a/api/API-Reference/document/DocumentManager.html b/api/API-Reference/document/DocumentManager.html new file mode 100644 index 00000000..93a22d51 --- /dev/null +++ b/api/API-Reference/document/DocumentManager.html @@ -0,0 +1,167 @@ + + + + + +DocumentManager | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

DocumentManager

Import :

+
const DocumentManager = brackets.getModule("document/DocumentManager")
+ +

_

+

DocumentManager maintains a list of currently 'open' Documents. The DocumentManager is responsible +for coordinating document operations and dispatching certain document events.

+

Document is the model for a file's contents; it dispatches events whenever those contents change. +To transiently inspect a file's content, simply get a Document and call getText() on it. However, +to be notified of Document changes or to modify a Document, you MUST call addRef() to ensure the +Document instance 'stays alive' and is shared by all other who read/modify that file. ('Open' +Documents are all Documents that are 'kept alive', i.e. have ref count > 0).

+

To get a Document, call getDocumentForPath(); never new up a Document yourself.

+

Secretly, a Document may use an Editor instance to act as the model for its internal state. (This +is unavoidable because CodeMirror does not separate its model from its UI). Documents are not +modifiable until they have a backing 'master Editor'. Creation of the backing Editor is owned by +EditorManager. A Document only gets a backing Editor if it opened in an editor.

+

A non-modifiable Document may still dispatch change notifications, if the Document was changed +externally on disk.

+

Aside from the text content, Document tracks a few pieces of metadata - notably, whether there are +any unsaved changes.

+

This module dispatches several events:

+
    +
  • dirtyFlagChange -- When any Document's isDirty flag changes. The 2nd arg to the listener is the +Document whose flag changed.
  • +
  • documentSaved -- When a Document's changes have been saved. The 2nd arg to the listener is the +Document that has been saved.
  • +
  • documentRefreshed -- When a Document's contents have been reloaded from disk. The 2nd arg to the +listener is the Document that has been refreshed.
  • +
+

NOTE: WorkingSet APIs have been deprecated and have moved to MainViewManager as WorkingSet APIs +Some WorkingSet APIs that have been identified as being used by 3rd party extensions will +emit deprecation warnings and call the WorkingSet APIS to maintain backwards compatibility

+
    +
  • +

    currentDocumentChange -- Deprecated: use EditorManager activeEditorChange (which covers all editors, +not just full-sized editors) or MainViewManager currentFileChange (which covers full-sized views +only, but is also triggered for non-editor views e.g. image files).

    +
  • +
  • +

    fileNameChange -- When the name of a file or folder has changed. The 2nd arg is the old name. +The 3rd arg is the new name. Generally, however, file objects have already been changed by the +time this event is dispatched so code that relies on matching the filename to a file object +will need to compare the newname.

    +
  • +
  • +

    pathDeleted -- When a file or folder has been deleted. The 2nd arg is the path that was deleted.

    +
  • +
+

To listen for events, do something like this: (see EventDispatcher for details on this pattern) +DocumentManager.on("eventname", handler);

+

Document objects themselves also dispatch some events - see Document docs for details.

+

Kind: global variable

+ +

EVENT_AFTER_DOCUMENT_CREATE : string

+

Event triggered after a document is created.

+

Kind: global constant

+ +

EVENT_PATH_DELETED : string

+

Event triggered when a file or folder path is deleted.

+

Kind: global constant

+ +

EVENT_FILE_NAME_CHANGE : string

+

Event triggered when a file's name changes.

+

Kind: global constant

+ +

EVENT_BEFORE_DOCUMENT_DELETE : string

+

Event triggered before a document is deleted.

+

Kind: global constant

+ +

EVENT_DOCUMENT_REFRESHED : string

+

Event triggered when a document is refreshed.

+

Kind: global constant

+ +

EVENT_DOCUMENT_CHANGE : string

+

Event triggered when a document's content changes.

+

Kind: global constant

+ +

EVENT_DIRTY_FLAG_CHANGED : string

+

Event triggered when the document's dirty flag changes, +indicating if the document has unsaved changes.

+

Kind: global constant

+ +

getOpenDocumentForPath(fullPath) ⇒ Document

+

Returns the existing open Document for the given file, or null if the file is not open ('open' +means referenced by the UI somewhere). If you will hang onto the Document, you must addRef() +it; see #getDocumentForPath for details.

+

Kind: global function

+
ParamType
fullPathstring
+ +

getAllOpenDocuments() ⇒ Array.<Document>

+

Returns all Documents that are 'open' in the UI somewhere (for now, this means open in an +inline editor and/or a full-size editor). Only these Documents can be modified, and only +these Documents are synced with external changes on disk.

+

Kind: global function

+ +

getDocumentForPath(fullPath, fileObj) ⇒ $.Promise

+

Gets an existing open Document for the given file, or creates a new one if the Document is +not currently open ('open' means referenced by the UI somewhere). Always use this method to +get Documents; do not call the Document constructor directly. This method is safe to call +in parallel.

+

If you are going to hang onto the Document for more than just the duration of a command - e.g. +if you are going to display its contents in a piece of UI - then you must addRef() the Document +and listen for changes on it. (Note: opening the Document in an Editor automatically manages +refs and listeners for that Editor UI).

+

If all you need is the Document's getText() value, use the faster getDocumentText() instead.

+

Kind: global function
+Returns: $.Promise - A promise object that will be resolved with the Document, or rejected +with a FileSystemError if the file is not yet open and can't be read from disk.

+
ParamTypeDescription
fullPathstring
fileObjobjectactual File
+ +

getDocumentText(file, [checkLineEndings]) ⇒ $.Promise

+

Gets the text of a Document (including any unsaved changes), or would-be Document if the +file is not actually open. More efficient than getDocumentForPath(). Use when you're reading +document(s) but don't need to hang onto a Document object.

+

If the file is open this is equivalent to calling getOpenDocumentForPath().getText(). If the +file is NOT open, this is like calling getDocumentForPath()...getText() but more efficient. +Differs from plain FileUtils.readAsText() in two ways: (a) line endings are still normalized +as in Document.getText(); (b) unsaved changes are returned if there are any.

+

Kind: global function
+Returns: $.Promise - A promise that is resolved with three parameters: +contents - string: the document's text +timestamp - Date: the last time the document was changed on disk (might not be the same as the last time it was changed in memory) +lineEndings - string: the original line endings of the file, one of the FileUtils.LINE_ENDINGS_* constants; +will be null if checkLineEndings was false. +or rejected with a filesystem error.

+
ParamTypeDescription
fileFileThe file to get the text for.
[checkLineEndings]booleanWhether to return line ending information. Default false (slightly more efficient).
+ +

createUntitledDocument(counter, fileExt) ⇒ Document

+

Creates an untitled document. The associated File has a fullPath that +looks like /some-random-string/Untitled-counter.fileExt.

+

Kind: global function
+Returns: Document - - a new untitled Document

+
ParamTypeDescription
counternumberused in the name of the new Document's File
fileExtstringfile extension of the new Document's File, including "."
+ + \ No newline at end of file diff --git a/api/API-Reference/document/DocumentManager/index.html b/api/API-Reference/document/DocumentManager/index.html new file mode 100644 index 00000000..a3b7d809 --- /dev/null +++ b/api/API-Reference/document/DocumentManager/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/document/TextRange.html b/api/API-Reference/document/TextRange.html new file mode 100644 index 00000000..a987c141 --- /dev/null +++ b/api/API-Reference/document/TextRange.html @@ -0,0 +1,90 @@ + + + + + +TextRange | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

TextRange

Import :

+
const TextRange = brackets.getModule("document/TextRange")
+ +

TextRange

+

Kind: global class

+ + +

new TextRange(document, startLine, endLine)

+

Stores a range of lines that is automatically maintained as the Document changes. The range +MAY drop out of sync with the Document in certain edge cases; startLine & endLine will become +null when that happens.

+

Important: you must dispose() a TextRange when you're done with it. Because TextRange addRef()s +the Document (in order to listen to it), you will leak Documents otherwise.

+

TextRange dispatches these events:

+
    +
  • change -- When the range boundary line numbers change (due to a Document change)
  • +
  • contentChange -- When the actual content of the range changes. This might or might not +be accompanied by a change in the boundary line numbers.
  • +
  • lostSync -- When the backing Document changes in such a way that the range can no longer +accurately be maintained. Generally, occurs whenever an edit spans a range boundary. +After this, startLine & endLine will be unusable (set to null). +Also occurs when the document is deleted, though startLine & endLine won't be modified +These events only ever occur in response to Document changes, so if you are already listening +to the Document, you could ignore the TextRange events and just read its updated value in your +own Document change handler.
  • +
+
ParamTypeDescription
documentDocument
startLinenumberFirst line in range (0-based, inclusive)
endLinenumberLast line in range (0-based, inclusive)
+ +

textRange.document : Document

+

Containing document

+

Kind: instance property of TextRange

+ +

textRange.startLine : number

+

Starting Line

+

Kind: instance property of TextRange

+ +

textRange.endLine : number

+

Ending Line

+

Kind: instance property of TextRange

+ +

textRange.dispose()

+

Detaches from the Document. The TextRange will no longer update or send change events

+

Kind: instance method of TextRange

+ +

EventDispatcher

+

Kind: global variable

+ + \ No newline at end of file diff --git a/api/API-Reference/document/TextRange/index.html b/api/API-Reference/document/TextRange/index.html new file mode 100644 index 00000000..a0d8c35a --- /dev/null +++ b/api/API-Reference/document/TextRange/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/document/index.html b/api/API-Reference/document/index.html new file mode 100644 index 00000000..f29ae944 --- /dev/null +++ b/api/API-Reference/document/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/editor.html b/api/API-Reference/editor.html new file mode 100644 index 00000000..9514055b --- /dev/null +++ b/api/API-Reference/editor.html @@ -0,0 +1,1023 @@ + + + + + +Editor | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

Editor

Import :

+
const Editor = brackets.getModule("editor/Editor")
+ +

Editor

+

Kind: global class

+ + +

new Editor(document, makeMasterEditor, container, [range], options)

+

Creates a new CodeMirror editor instance bound to the given Document. The Document need not have +a "master" Editor realized yet, even if makeMasterEditor is false; in that case, the first time +an edit occurs we will automatically ask EditorManager to create a "master" editor to render the +Document modifiable.

+

ALWAYS call destroy() when you are done with an Editor - otherwise it will leak a Document ref.

+
ParamTypeDescription
documentDocument
makeMasterEditorbooleanIf true, this Editor will set itself as the (secret) "master" Editor for the Document. If false, this Editor will attach to the Document as a "slave"/ secondary editor.
containerjQueryObject | DomNodeContainer to add the editor to.
[range]ObjectIf specified, range of lines within the document to display in this editor. Inclusive.
optionsObjectIf specified, contains editor options that can be passed to CodeMirror
+ +

editor.addInlineWidget ⇒ $.Promise

+

Adds an inline widget below the given line. If any inline widget was already open for that +line, it is closed without warning.

+

Kind: instance property of Editor
+Returns: $.Promise - A promise object that is resolved when the widget has been added (but might +still be animating open). Never rejected.

+
ParamTypeDescription
posObjectPosition in text to anchor the inline.
inlineWidgetInlineWidgetThe widget to add.
[scrollLineIntoView]booleanScrolls the associated line into view. Default true.
+ +

editor.removeAllInlineWidgets

+

Removes all inline widgets

+

Kind: instance property of Editor

+ +

editor.removeInlineWidget ⇒ $.Promise

+

Removes the given inline widget.

+

Kind: instance property of Editor
+Returns: $.Promise - A promise that is resolved when the inline widget is fully closed and removed from the DOM.

+
ParamTypeDescription
inlineWidgetnumberThe widget to remove.
+ +

editor.removeAllInlineWidgetsForLine

+

Removes all inline widgets for a given line

+

Kind: instance property of Editor

+
ParamTypeDescription
lineNumnumberThe line number to modify
+ +

editor.getAllInlineWidgetsForLine

+

****** Update actual public API doc in Editor.js ***** +Gets all inline widgets for a given line

+

Kind: instance property of Editor

+
ParamTypeDescription
lineNumnumberThe line number to modify
+ +

editor.getInlineWidgets ⇒ Object

+

Returns a list of all inline widgets currently open in this editor. Each entry contains the +inline's id, and the data parameter that was passed to addInlineWidget().

+

Kind: instance property of Editor

+ +

editor.getFocusedInlineWidget ⇒ InlineWidget

+

Returns the currently focused inline widget, if any.

+

Kind: instance property of Editor

+ +

editor.setInlineWidgetHeight

+

Sets the height of an inline widget in this editor.

+

Kind: instance property of Editor

+
ParamTypeDescription
inlineWidgetInlineWidgetThe widget whose height should be set.
heightnumberThe height of the widget.
[ensureVisible]booleanWhether to scroll the entire widget into view. Default false.
+ +

editor.document : Document

+

The Document we're bound to

+

Kind: instance property of Editor

+ +

editor.getInlineWidgetsBelowCursor() ⇒ boolean

+

Gets the inline widgets below the current cursor position or null.

+

Kind: instance method of Editor

+ +

editor.canConsumeEscapeKeyEvent()

+

returns true if the editor can do something an escape key event. Eg. Disable multi cursor escape

+

Kind: instance method of Editor

+ +

editor.destroy()

+

Removes this editor from the DOM and detaches from the Document. If this is the "master" +Editor that is secretly providing the Document's backing state, then the Document reverts to +a read-only string-backed mode.

+

Kind: instance method of Editor

+ +

editor.selectAllNoScroll()

+

Selects all text and maintains the current scroll position.

+

Kind: instance method of Editor

+ +

editor.isTextSubset() ⇒ boolean

+

Kind: instance method of Editor
+Returns: boolean - True if editor is not showing the entire text of the document (i.e. an inline editor)

+ +

editor.getFile() ⇒ File

+

Gets the file associated with this editor +This is a required Pane-View interface method

+

Kind: instance method of Editor
+Returns: File - the file associated with this editor

+ +

editor.getCursorPos([expandTabs], [which]) ⇒ Object

+

Gets the current cursor position within the editor.

+

Cursor positions can be converted to index(0 based character offsets in editor text string) +using editor.indexFromPos API.

+

Kind: instance method of Editor

+
ParamTypeDescription
[expandTabs]booleanIf true, return the actual visual column number instead of the character offset in the "ch" property.
[which]stringOptional string indicating which end of the selection to return. It may be "start", "end", "head" (the side of the selection that moves when you press shift+arrow), or "anchor" (the fixed side of the selection). Omitting the argument is the same as passing "head". A ch object will be returned.)
+ +

editor.getEndingCursorPos([expandTabs]) ⇒ Object

+

Gets the cursor position of the last charected in the editor.

+

Kind: instance method of Editor

+
ParamTypeDescription
[expandTabs]booleanIf true, return the actual visual column number instead of the character offset in the "ch" property.
+ +

editor.getColOffset(pos) ⇒ number

+

Returns the display column (zero-based) for a given string-based pos. Differs from pos.ch only +when the line contains preceding \t chars. Result depends on the current tab size setting.

+

Kind: instance method of Editor

+
ParamType
posObject
+ +

editor.getCharIndexForColumn(lineNum, column) ⇒ number

+

Returns the string-based pos for a given display column (zero-based) in given line. Differs from column +only when the line contains preceding \t chars. Result depends on the current tab size setting.

+

Kind: instance method of Editor

+
ParamTypeDescription
lineNumnumberLine number
columnnumberDisplay column number
+ +

editor.setCursorPos(line, ch, [center], [expandTabs])

+

Sets the cursor position within the editor. Removes any selection.

+

Kind: instance method of Editor

+
ParamTypeDescription
linenumberThe 0 based line number.
chnumberThe 0 based character position; treated as 0 if unspecified.
[center]booleanTrue if the view should be centered on the new cursor position.
[expandTabs]booleanIf true, use the actual visual column number instead of the character offset as the "ch" parameter.
+ +

editor.setSize(width, height)

+

Set the editor size in pixels or percentage

+

Kind: instance method of Editor

+
ParamType
widthnumber | string
heightnumber | string
+ +

editor.getViewport() ⇒ Object

+

Returns a to object indicating the start (inclusive) and end (exclusive) of the currently rendered +part of the document. In big documents, when most content is scrolled out of view, Editor will only render +the visible part, and a margin around it. See also the viewportChange event fired on the editor.

+

This is combination with viewportChange event can be used to selectively redraw visual elements in code +like syntax analyze only parts of code instead of the full code everytime.

+

Kind: instance method of Editor

+ +

editor.centerOnCursor(centerOptions)

+

Scrolls the editor viewport to vertically center the line with the cursor, +but only if the cursor is currently near the edges of the viewport or +entirely outside the viewport.

+

This does not alter the horizontal scroll position.

+

Kind: instance method of Editor

+
ParamTypeDescription
centerOptionsnumberOption value, or 0 for no options; one of the BOUNDARY_* constants above.
+ +

editor.indexFromPos(cursorPos) ⇒ number

+

Given a position, returns its index within the text (assuming \n newlines)

+

Kind: instance method of Editor

+
ParamType
cursorPosObject
+ +

editor.posFromIndex(index) ⇒ Object

+

Given a position, returns its index within the text (assuming \n newlines)

+

Kind: instance method of Editor

+
ParamType
indexnumber
+ +

editor.posWithinRange(pos, start, end, endInclusive)

+

Returns true if pos is between start and end (INclusive at start; EXclusive at end by default, +but overridable via the endInclusive flag).

+

Kind: instance method of Editor

+
ParamType
posObject
startObject
endObject
endInclusiveboolean
+ +

editor.hasSelection() ⇒ boolean

+

Kind: instance method of Editor
+Returns: boolean - True if there's a text selection; false if there's just an insertion point

+ +

editor.getSelection() ⇒ Object

+

Gets the current selection; if there is more than one selection, returns the primary selection +(generally the last one made). Start is inclusive, end is exclusive. If there is no selection, +returns the current cursor position as both the start and end of the range (i.e. a selection +of length zero). If reversed is set, then the head of the selection (the end of the selection +that would be changed if the user extended the selection) is before the anchor.

+

Kind: instance method of Editor

+ +

editor.getSelections() ⇒ Object

+

Returns an array of current selections, nonoverlapping and sorted in document order. +Each selection is a start/end pair, with the start guaranteed to come before the end. +Cursors are represented as a range whose start is equal to the end. +If reversed is set, then the head of the selection +(the end of the selection that would be changed if the user extended the selection) +is before the anchor. +If primary is set, then that selection is the primary selection.

+

Kind: instance method of Editor

+ +

editor.hasMultipleCursors() ⇒ boolean

+

Check if the editor has multiple cursors or selections

+

Kind: instance method of Editor

+ +

editor.convertToLineSelections(selections, options) ⇒ Object

+

Takes the given selections, and expands each selection so it encompasses whole lines. Merges +adjacent line selections together. Keeps track of each original selection associated with a given +line selection (there might be multiple if individual selections were merged into a single line selection). +Useful for doing multiple-selection-aware line edits.

+

Kind: instance method of Editor
+Returns: Object - The combined line selections. For each selection, selectionForEdit is the line selection, and selectionsToTrack is +the set of original selections that combined to make up the given line selection. Note that the selectionsToTrack will +include the original objects passed in selections, so if it is later mutated the original passed-in selections will be +mutated as well.

+
ParamTypeDescription
selectionsObjectThe selections to expand.
optionsObjectexpandEndAtStartOfLine: true if a range selection that ends at the beginning of a line should be expanded to encompass the line. Default false. mergeAdjacent: true if adjacent line ranges should be merged. Default true.
+ +

editor.getSelectedText([allSelections]) ⇒ string

+

Returns the currently selected text, or "" if no selection. Includes \n if the +selection spans multiple lines (does NOT reflect the Document's line-endings style). By +default, returns only the contents of the primary selection, unless allSelections is true.

+

Kind: instance method of Editor
+Returns: string - The selected text.

+
ParamTypeDescription
[allSelections]booleanWhether to return the contents of all selections (separated by newlines) instead of just the primary selection. Default false.
+ +

editor.coordsChar(coordinates, [mode]) ⇒ Object

+

Given an top object (e.g. coordinates of a mouse event) returns the ch position that +corresponds to it. The optional mode parameter determines relative to what the coordinates are interpreted.

+

Kind: instance method of Editor
+Returns: Object - for the given coordinates

+
ParamTypeDescription
coordinatesObjectcan be obtained from Eg. coordinates of a mouse event
[mode]stringIt may be "window", "page" (the default), or "local".
+ +

editor.charCoords(pos, [mode]) ⇒ Object

+

Returns the position and dimensions of an arbitrary character given a cursor (Eg. from getCursorPos()). +It'll give the size of the whole character, rather than just the position that the cursor would have +when it would sit at that position.

+

Kind: instance method of Editor
+Returns: Object - coordinates for the given character position

+
ParamTypeDescription
posObjectA cursor, can be obtained from Eg. getCursorPos()
[mode]stringIt may be "window", "page" (the default), or "local".
+ +

editor.getToken([cursor], [precise]) ⇒ Object

+

Get the token at the given cursor position, or at the current cursor +if none is given.

+

Kind: instance method of Editor
+Returns: Object - - +the CodeMirror token at the given cursor position

+
ParamTypeDescription
[cursor]ObjectOptional cursor position at which to retrieve a token. If not provided, the current position will be used.
[precise]booleanIf given, results in more current results. Suppresses caching.
+ +

editor.getCharacterAtPosition(pos) ⇒ string | null

+

Retrieves a single character from the specified position in the editor. +x|y where | is the cursor, will return y

+

Kind: instance method of Editor
+Returns: string | null - The character at the given position if within bounds, +otherwise null if the position is out of range.

+
ParamTypeDescription
posCodeMirror.PositionThe position from which to retrieve the character. This should be an object with line and ch properties.
+ +

editor.getLine(lineNumber) ⇒ string | null

+

Retrieves a single line text

+

Kind: instance method of Editor
+Returns: string | null - The text at the given position if within bounds, +otherwise null if the position is out of range.

+
ParamTypeDescription
lineNumbernumberThe lineNumber to extract text from
+ +

editor.getPrevCharacterAtPosition(pos) ⇒ string | null

+

Retrieves a single character previous to the specified position in the editor in the same line if possible. +x|y where | is the cursor, will return x

+

Kind: instance method of Editor
+Returns: string | null - The character previous to the given position if within bounds, +otherwise null if the position is out of range.

+
ParamTypeDescription
posCodeMirror.PositionThe position from which to retrieve the character. This should be an object with line and ch properties.
+ +

editor.getNextToken([cursor], [skipWhitespace], [precise]) ⇒ Object

+

Get the token after the one at the given cursor position

+

Kind: instance method of Editor
+Returns: Object - - +the CodeMirror token after the one at the given cursor position

+
ParamTypeDescription
[cursor]ObjectOptional cursor position after which a token should be retrieved
[skipWhitespace]booleantrue if this should skip over whitespace tokens. Default is true.
[precise]booleanIf given, results in more current results. Suppresses caching.
+ +

editor.getPreviousToken([cursor], [skipWhitespace], [precise]) ⇒ Object

+

Get the token before the one at the given cursor position

+

Kind: instance method of Editor
+Returns: Object - - the CodeMirror token before +the one at the given cursor position

+
ParamTypeDescription
[cursor]ObjectOptional cursor position before which a token should be retrieved
[skipWhitespace]booleantrue if this should skip over whitespace tokens. Default is true.
[precise]booleanIf given, results in more current results. Suppresses caching.
+ +

editor.operation(execFn) ⇒ *

+

Use This if you are making large number of editor changes in a single workflow to improve performance. +The editor internally buffers changes and only updates its DOM structure after it has finished performing +some operation. If you need to perform a lot of operations on a CodeMirror instance, you can call this method +with a function argument. It will call the function, buffering up all changes, and only doing the expensive +update after the function returns. This can be a lot faster. The return value from this method will be the +return value of your function.

+

Kind: instance method of Editor

+
ParamDescription
execFnThe function that will be called to make all editor changes.
+ +

editor.markToken(markType, cursor, [options]) ⇒ Object

+

Same as markText, but will apply to the token at the given position or current position

+

Kind: instance method of Editor
+Returns: Object - TextMarker

+
ParamTypeDescription
markTypestringA String that can be used to label the mark type.
cursorObjectThe position of the token
[options]same as markText
+ +

editor.setBookmark(markType, [cursorPos], [options]) ⇒ Object

+

Inserts a bookmark, a handle that follows the text around it as it is being edited, at the given position. +Similar to mark text, but for just a point instead of range.

+

Kind: instance method of Editor
+Returns: Object - TextMarker- A bookmark has two methods find() and clear(). find returns the current +position of the bookmark, if it is still in the document, and clear explicitly removes the bookmark.

+
ParamTypeDescription
markTypestringA String that can be used to label the mark type.
[cursorPos]ObjectWhere to place the mark. Optional, if not specified, will use current pos
[options]ObjectWhen given, it should be an object that may contain the following configuration options:
[options.widget]ElementCan be used to display a DOM node at the current location of the bookmark (analogous to the replacedWith option to markText).
[options.insertLeft]booleanBy default, text typed when the cursor is on top of the bookmark will end up to the right of the bookmark. Set this option to true to make it go to the left instead.
[options.handleMouseEvents]booleanAs with markText, this determines whether mouse events on the widget inserted for this bookmark are handled by CodeMirror. The default is false.
+ +

editor.findMarks(cursorFrom, cursorTo, [markType]) ⇒ Array.<TextMarker>

+

Returns an array of all the bookmarks and marked ranges found between the given positions (non-inclusive).

+

Kind: instance method of Editor
+Returns: Array.<TextMarker> - TextMarker - A text marker array

+
ParamTypeDescription
cursorFromObjectMark start position
cursorToObjectMark end position
[markType]stringOptional, if given will only return marks of that type. Else returns everything.
+ +

editor.findMarksAt(cursorPos, [markType]) ⇒ Array.<TextMarker>

+

Returns an array of all the bookmarks and marked ranges present at the given position.

+

Kind: instance method of Editor
+Returns: Array.<TextMarker> - TextMarker - A text marker array

+
ParamTypeDescription
cursorPosObjectcursor position
[markType]stringOptional, if given will only return marks of that type. Else returns everything.
+ +

editor.getMarksAfter(position, markType) ⇒ Array.<TextMarker>

+

Returns the first mark of a specific type found after the given position.

+

Kind: instance method of Editor
+Returns: Array.<TextMarker> - The array of text markers found, or an empty array if none are found.

+
ParamTypeDescription
positionObjectThe starting position to search from.
markTypestringThe type of mark to look for.
+ +

editor.getMarksBefore(position, markType) ⇒ Array.<TextMarker>

+

Returns the first mark of a specific type found before the given position.

+

Kind: instance method of Editor
+Returns: Array.<TextMarker> - The array of text markers found, or an empty array if none are found.

+
ParamTypeDescription
positionObjectThe ending position to search up to.
markTypestringThe type of mark to look for.
+ +

editor.getAllMarks([markType]) ⇒ Array.<TextMarker>

+

Returns an array containing all marked ranges in the document.

+

Kind: instance method of Editor
+Returns: Array.<TextMarker> - TextMarker - A text marker array

+
ParamTypeDescription
[markType]stringOptional, if given will only return marks of that type. Else returns everything.
+ +

editor.clearAllMarks([markType], [lineNumbers])

+

Clears all marks of the given type. If a lineNumbers array is given, only clears marks on those lines. +If no markType or lineNumbers are given, clears all marks (use cautiously).

+

Kind: instance method of Editor

+
ParamTypeDescription
[markType]stringOptional, if given will only delete marks of that type. Else delete everything.
[lineNumbers]Array.<number>Optional, array of line numbers where marks should be cleared.
+ +

editor.isSamePosition(position1, position2) ⇒ boolean

+

Checks if two positions in the editor are the same.

+

Kind: instance method of Editor
+Returns: boolean - True if both positions are the same, false otherwise.

+
ParamTypeDescription
position1Objectcursor position
position2Objectcursor position
+ +

editor.getHistory() ⇒ Array

+

Get a (JSON-serializable) representation of the undo history.

+

Kind: instance method of Editor
+Returns: Array - The history of the editor.

+ +

editor.setHistory()

+

Replace the editor's undo history with the one provided, which must be a value +as returned by getHistory. Note that this will have entirely undefined results +if the editor content isn't also the same as it was when getHistory was called.

+

Kind: instance method of Editor

+ +

editor.createHistoryRestorePoint(restorePointName)

+

Creates a named restore point in undo history. this can be later be restored to undo all +changed till the named restore point in one go.

+

Kind: instance method of Editor

+
ParamTypeDescription
restorePointNamestringThe name of the restore point to revert to.
+ +

editor.restoreHistoryPoint(restorePointName)

+

To restore the editor to a named restore point +if the restore point is found, it reverts all changes made after that point.

+

Kind: instance method of Editor

+
ParamTypeDescription
restorePointNamestringThe name of the restore point to revert to.
+ +

editor.setSelection(start, [end], [center], [centerOptions], [origin])

+

Sets the current selection. Start is inclusive, end is exclusive. Places the cursor at the +end of the selection range. Optionally centers around the cursor after +making the selection

+

Kind: instance method of Editor

+
ParamTypeDescription
startObject
[end]ObjectIf not specified, defaults to start.
[center]booleantrue to center the viewport
[centerOptions]numberOption value, or 0 for no options; one of the BOUNDARY_* constants above.
[origin]stringAn optional string that describes what other selection or edit operations this should be merged with for the purposes of undo. See Document::Document#replaceRange for more details.
+ +

editor.replaceSelection(replacement, [select])

+

Replace the selection with the given string.

+

Kind: instance method of Editor

+
ParamTypeDescription
replacementstringthe text to replace the current selection
[select]stringThe optional select argument can be used to change selection. Passing "around" will cause the new text to be selected, passing "start" will collapse the selection to the start of the inserted text.
+ +

editor.replaceSelections(replacement, [select])

+

Replaces the content of multiple selections with the strings in the array. The length of the given +array should be the same as the number of active selections.

+

Kind: instance method of Editor

+
ParamTypeDescription
replacementArray.<string>the text array to replace the current selections with
[select]stringThe optional select argument can be used to change selection. Passing "around" will cause the new text to be selected, passing "start" will collapse the selection to the start of the inserted text.
+ +

editor.replaceRange(replacement, from, [to], origin)

+

Replace the part of the document between from and to with the given string.

+

Kind: instance method of Editor

+
ParamTypeDescription
replacementstringthe text to replace the current selection
fromObjectthe strat position to replace
[to]Objectthe end position to replace. to can be left off to simply insert the string at position from.
originstringWhen origin is given, it will be passed on to "change" events, and its first letter will be used to determine whether this change can be merged with previous history events of the inserted text.
+ +

editor.replaceMultipleRanges(ranges, [origin])

+

Replaces multiple ranges in the editor with the specified texts.

+

Kind: instance method of Editor

+
ParamTypeDescription
rangesArrayAn array of range objects, each containing from, to, and text properties.
ranges[].fromObjectThe start position of the range to be replaced. It should have line and ch properties.
ranges[].toObjectThe end position of the range to be replaced. It should have line and ch properties.
ranges[].textstringThe text to replace the specified range.
[origin]stringAn optional origin identifier to be associated with the changes.
+

Example

+
editor.replaceMultipleRanges([
{ from: { line: 0, ch: 0 }, to: { line: 0, ch: 5 }, text: 'Hello' },
{ from: { line: 1, ch: 0 }, to: { line: 1, ch: 4 }, text: 'World' }
], 'exampleOrigin');
+ +

editor.clearSelection()

+

Clears any active selection if present.

+

Kind: instance method of Editor

+ +

editor.setSelections(selections, center, centerOptions, origin)

+

Sets a multiple selection, with the "primary" selection (the one returned by +getSelection() and getCursorPos()) defaulting to the last if not specified. +Overlapping ranges will be automatically merged, and the selection will be sorted. +Optionally centers around the primary selection after making the selection.

+

Kind: instance method of Editor

+
ParamTypeDescription
selectionsObjectThe selection ranges to set. If the start and end of a range are the same, treated as a cursor. If reversed is true, set the anchor of the range to the end instead of the start. If primary is true, this is the primary selection. Behavior is undefined if more than one selection has primary set to true. If none has primary set to true, the last one is primary.
centerbooleantrue to center the viewport around the primary selection.
centerOptionsnumberOption value, or 0 for no options; one of the BOUNDARY_* constants above.
originstringAn optional string that describes what other selection or edit operations this should be merged with for the purposes of undo. See Document::Document#replaceRange for more details.
+ +

editor.toggleOverwrite(start)

+

Sets the editors overwrite mode state. If null is passed, the state is toggled.

+

Kind: instance method of Editor

+
ParamType
startboolean
+ +

editor.selectWordAt(pos)

+

Selects word that the given pos lies within or adjacent to. If pos isn't touching a word +(e.g. within a token like "//"), moves the cursor to pos without selecting a range.

+

Kind: instance method of Editor

+
ParamType
posObject
+ +

editor.getTextBetween(startPos, endPos) ⇒ string

+

To get the text between the starting position and the ending position

+

Kind: instance method of Editor
+Returns: string - The text between the starting position and the ending position

+
ParamTypeDescription
startPosObject
endPosObject
+ +

editor.getWordAt(pos) ⇒ Object

+

Gets word at the given pos lies within or adjacent to. If pos isn't touching a word +(e.g. within a token like "//"), returns null

+

Kind: instance method of Editor

+
Param
pos
+ +

editor.getNumberAt(pos, maxDigits) ⇒ Object

+

Gets number string of (upto 10 digits default) at the given pos lies within or adjacent to. +If pos isn't touching a number, returns null. If the number in string is greater than max digits +returns null.

+

Kind: instance method of Editor

+
ParamTypeDescription
pos
maxDigitsnumbernumber of digits allowed. This is to prevent massive digit strings.
+ +

editor.lineCount() ⇒ number

+

Gets the total number of lines in the document (includes lines not visible in the viewport)

+

Kind: instance method of Editor

+ +

editor.isLineVisible(zero-based) ⇒ boolean

+

Deterines if line is fully visible.

+

Kind: instance method of Editor
+Returns: boolean - true if the line is fully visible, false otherwise

+
ParamTypeDescription
zero-basednumberindex of the line to test
+ +

editor.getFirstVisibleLine() ⇒ number

+

Gets the number of the first visible line in the editor.

+

Kind: instance method of Editor
+Returns: number - The 0-based index of the first visible line.

+ +

editor.getLastVisibleLine() ⇒ number

+

Gets the number of the last visible line in the editor.

+

Kind: instance method of Editor
+Returns: number - The 0-based index of the last visible line.

+ +

editor.totalHeight() ⇒ number

+

Gets the total height of the document in pixels (not the viewport)

+

Kind: instance method of Editor
+Returns: number - height in pixels

+ +

editor.getScrollerElement() ⇒ HTMLDivElement

+

Gets the scroller element from the editor.

+

Kind: instance method of Editor
+Returns: HTMLDivElement - scroller

+ +

editor.getRootElement() ⇒ HTMLDivElement

+

Gets the root DOM node of the editor.

+

Kind: instance method of Editor
+Returns: HTMLDivElement - The editor's root DOM node.

+ +

editor.getScrollPos() ⇒ Object

+

Returns the current scroll position of the editor.

+

Kind: instance method of Editor
+Returns: Object - The x,y scroll position in pixels

+ +

editor.adjustScrollPos(scrollPos, heightDelta)

+

Restores and adjusts the current scroll position of the editor.

+

Kind: instance method of Editor

+
ParamTypeDescription
scrollPosObjectThe x,y scroll position in pixels
heightDeltanumberThe amount of delta H to apply to the scroll position
+ +

editor.setScrollPos(x, y)

+

Sets the current scroll position of the editor.

+

Kind: instance method of Editor

+
ParamTypeDescription
xnumberscrollLeft position in pixels
ynumberscrollTop position in pixels
+ +

editor.getTextHeight() ⇒ number

+

Returns the current text height of the editor.

+

Kind: instance method of Editor
+Returns: number - Height of the text in pixels

+ +

editor.displayErrorMessageAtCursor(errorMsg)

+

Display temporary popover message at current cursor position. Display message above +cursor if space allows, otherwise below.

+

Kind: instance method of Editor

+
ParamTypeDescription
errorMsgstringError message to display
+ +

editor.getVirtualScrollAreaTop() ⇒ number

+

Returns the offset of the top of the virtual scroll area relative to the browser window (not the editor +itself). Mainly useful for calculations related to scrollIntoView(), where you're starting with the +offset() of a child widget (relative to the browser window) and need to figure out how far down it is from +the top of the virtual scroll area (excluding the top padding).

+

Kind: instance method of Editor

+ +

editor.focus()

+

Gives focus to the editor control

+

Kind: instance method of Editor

+ +

editor.hasFocus()

+

Returns true if the editor has focus

+

Kind: instance method of Editor

+ +

editor.getViewState() ⇒ EditorViewState

+

returns the view state for the editor

+

Kind: instance method of Editor

+ +

editor.restoreViewState(viewState)

+

Restores the view state

+

Kind: instance method of Editor

+
ParamTypeDescription
viewStateEditorViewStatethe view state object to restore
+ +

editor.refresh([handleResize])

+

Re-renders the editor UI

+

Kind: instance method of Editor

+
ParamTypeDescription
[handleResize]booleantrue if this is in response to resizing the editor. Default false.
+ +

editor.refreshAll([handleResize])

+

Re-renders the editor, and all children inline editors.

+

Kind: instance method of Editor

+
ParamTypeDescription
[handleResize]booleantrue if this is in response to resizing the editor. Default false.
+ +

editor.undo()

+

Undo the last edit.

+

Kind: instance method of Editor

+ +

editor.redo()

+

Redo the last un-done edit.

+

Kind: instance method of Editor

+ +

editor.notifyVisibilityChange(show, refresh)

+

View API Visibility Change Notification handler. This is also +called by the native "setVisible" API which refresh can be optimized

+

Kind: instance method of Editor

+
ParamTypeDescription
showbooleantrue to show the editor, false to hide it
refreshbooleantrue (default) to refresh the editor, false to skip refreshing it
+ +

editor.setVisible(show, refresh)

+

Shows or hides the editor within its parent. Does not force its ancestors to +become visible.

+

Kind: instance method of Editor

+
ParamTypeDescription
showbooleantrue to show the editor, false to hide it
refreshbooleantrue (default) to refresh the editor, false to skip refreshing it
+ +

editor.isFullyVisible()

+

Returns true if the editor is fully visible--i.e., is in the DOM, all ancestors are +visible, and has a non-zero width/height.

+

Kind: instance method of Editor

+ +

editor.getModeForRange(start, end, [knownMixed]) ⇒ Object | string

+

Gets the syntax-highlighting mode for the given range. +Returns null if the mode at the start of the selection differs from the mode at the end - +an approximation of whether the mode is consistent across the whole range (a pattern like +A-B-A would return A as the mode, not null).

+

Kind: instance method of Editor
+Returns: Object | string - Name of syntax-highlighting mode, or object containing a "name" property +naming the mode along with configuration options required by the mode.
+See: LanguageManager::#getLanguageForPath and LanguageManager::Language#getMode.

+
ParamTypeDescription
startObjectThe start of the range to check.
endObjectThe end of the range to check.
[knownMixed]booleanWhether we already know we're in a mixed mode and need to check both the start and end.
+ +

editor.getModeForSelection(selection) ⇒ Object | string

+

Gets the syntax-highlighting mode for the current selection or cursor position. (The mode may +vary within one file due to embedded languages, e.g. JS embedded in an HTML script block). See +getModeForRange() for how this is determined for a single selection.

+

If there are multiple selections, this will return a mode only if all the selections are individually +consistent and resolve to the same mode.

+

Kind: instance method of Editor
+Returns: Object | string - Name of syntax-highlighting mode, or object containing a "name" property +naming the mode along with configuration options required by the mode.
+See: LanguageManager::#getLanguageForPath and LanguageManager::Language#getMode.

+
ParamType
selectionObject
+ +

editor.getLanguageForSelection() ⇒ Language

+

gets the language for the selection. (Javascript selected from an HTML document or CSS selected from an HTML +document, etc...)

+

Kind: instance method of Editor

+ +

editor.getLanguageForPosition() ⇒ Language

+

gets the language for the selection. (Javascript selected from an HTML document or CSS selected from an HTML +document, etc...)

+

Kind: instance method of Editor

+ +

editor.getModeForDocument() ⇒ Object | String

+

Gets the syntax-highlighting mode for the document.

+

Kind: instance method of Editor
+Returns: Object | String - Object or Name of syntax-highlighting mode
+See: LanguageManager.getLanguageForPath and Language.getMode.

+ +

editor.updateLayout([forceRefresh])

+

resizes the editor to fill its parent container +should not be used on inline editors

+

Kind: instance method of Editor

+
ParamTypeDescription
[forceRefresh]booleanforces the editor to update its layout even if it already matches the container's height / width
+ +

editor.setGutterMarker(lineNumber, gutterName, marker) ⇒ Object

+

Sets the marker for the specified gutter on the specified line number

+

Kind: instance method of Editor
+Returns: Object - lineHandle this can be used to track the gutter line as the line number +changes as the user edits code.

+
ParamTypeDescription
lineNumbernumberThe line number for the inserted gutter marker
gutterNamestringThe name of the gutter
markerobjectThe dom element representing the marker to the inserted in the gutter
+ +

editor.getGutterMarker(lineNumber, gutterName)

+

Gets the gutter marker of the given name if found on the current line, else returns undefined.

+

Kind: instance method of Editor

+
ParamTypeDescription
lineNumbernumberThe line number for the inserted gutter marker
gutterNamestringThe name of the gutter
+ +

editor.clearGutterMarker(lineNumber, gutterName)

+

Clears the marker for the specified gutter on the specified line number. Does nothing if there was no marker +on the line.

+

Kind: instance method of Editor

+
ParamTypeDescription
lineNumbernumberThe line number for the inserted gutter marker
gutterNamestringThe name of the gutter
+ +

editor.isGutterActive(gutterName)

+

Returns true if this editor has the named gutter activated. gutters are considered active if the gutter is +registered for the language of the file currently shown in the editor.

+

Kind: instance method of Editor

+
ParamTypeDescription
gutterNamestringThe name of the gutter to check
+ +

editor.clearGutter(gutterName)

+

Clears all marks from the gutter with the specified name.

+

Kind: instance method of Editor

+
ParamTypeDescription
gutterNamestringThe name of the gutter to clear.
+ +

Editor.getMarkOptionUnderlineError

+

Mark option to underline errors.

+

Kind: static property of Editor

+ +

Editor.getMarkOptionUnderlineWarn

+

Mark option to underline warnings.

+

Kind: static property of Editor

+ +

Editor.getMarkOptionUnderlineInfo

+

Mark option to underline informational text.

+

Kind: static property of Editor

+ +

Editor.getMarkOptionUnderlineSpellcheck

+

Mark option to underline spelling errors.

+

Kind: static property of Editor

+ +

Editor.getMarkOptionHyperlinkText

+

Mark option to highlight hyperlinks.

+

Kind: static property of Editor

+ +

Editor.getMarkOptionMatchingRefs

+

Mark option for matching references.

+

Kind: static property of Editor

+ +

Editor.getMarkOptionRenameOutline

+

Mark option for renaming outlines.

+

Kind: static property of Editor

+ +

Editor.getRegisteredGutters() ⇒ Object

+

Returns the list of gutters current registered on all editors.

+

Kind: static method of Editor

+ +

Editor.isGutterRegistered(gutterName) ⇒ boolean

+

Return true if gutter of the given name is registered

+

Kind: static method of Editor

+
ParamTypeDescription
gutterNamestringThe name of the gutter
+ +

Editor.registerGutter(name, priority, [languageIds])

+

Registers the gutter with the specified name at the given priority.

+

Kind: static method of Editor

+
ParamTypeDescription
namestringThe name of the gutter.
prioritynumberA number denoting the priority of the gutter. Priorities higher than LINE_NUMBER_GUTTER_PRIORITY appear after the line numbers. Priority less than LINE_NUMBER_GUTTER_PRIORITY appear before.
[languageIds]Array.<string>A list of language ids that this gutter is valid for. If no language ids are passed, then the gutter is valid in all languages.
+ +

Editor.unregisterGutter(name)

+

Unregisters the gutter with the specified name and removes it from the UI.

+

Kind: static method of Editor

+
ParamTypeDescription
namestringThe name of the gutter to be unregistered.
+ +

Editor.setUseTabChar(value, [fullPath]) ⇒ boolean

+

Sets whether to use tab characters (vs. spaces) when inserting new text. +Affects any editors that share the same preference location.

+

Kind: static method of Editor
+Returns: boolean - true if value was valid

+
ParamTypeDescription
valueboolean
[fullPath]stringPath to file to get preference for
+ +

Editor.getUseTabChar([fullPath]) ⇒ boolean

+

Gets whether the specified or current file uses tab characters (vs. spaces) when inserting new text

+

Kind: static method of Editor

+
ParamTypeDescription
[fullPath]stringPath to file to get preference for
+ +

Editor.setTabSize(value, [fullPath]) ⇒ boolean

+

Sets tab character width. +Affects any editors that share the same preference location.

+

Kind: static method of Editor
+Returns: boolean - true if value was valid

+
ParamTypeDescription
valuenumber
[fullPath]stringPath to file to get preference for
+ +

Editor.getTabSize([fullPath]) ⇒ number

+

Get indent unit

+

Kind: static method of Editor

+
ParamTypeDescription
[fullPath]stringPath to file to get preference for
+ +

Editor.getAutoTabUnits(fullPath) ⇒ number | *

+

Gets the number of tabs for the file. Will

+

Kind: static method of Editor

+
Param
fullPath
+ +

Editor.setAutoTabSpaces(value, [fullPath]) ⇒ boolean

+

When set, the tabs and spaces to be used will be auto detected from the current file or fall back to defaults. +Affects any editors that share the same preference location.

+

Kind: static method of Editor
+Returns: boolean - true if value was valid

+
ParamTypeDescription
valueboolean
[fullPath]stringPath to file to get preference for
+ +

Editor.getAutoTabSpaces([fullPath]) ⇒ number

+

Get auto tabbing/spacing option

+

Kind: static method of Editor

+
ParamTypeDescription
[fullPath]stringPath to file to get preference for
+ +

Editor.setSpaceUnits(value, [fullPath]) ⇒ boolean

+

Sets indentation width. +Affects any editors that share the same preference location.

+

Kind: static method of Editor
+Returns: boolean - true if value was valid

+
ParamTypeDescription
valuenumber
[fullPath]stringPath to file to get preference for
+ +

Editor.getSpaceUnits([fullPath]) ⇒ number

+

Get indentation width

+

Kind: static method of Editor

+
ParamTypeDescription
[fullPath]stringPath to file to get preference for
+ +

Editor.setCloseBrackets(value, [fullPath]) ⇒ boolean

+

Sets the auto close brackets. +Affects any editors that share the same preference location.

+

Kind: static method of Editor
+Returns: boolean - true if value was valid

+
ParamTypeDescription
valueboolean
[fullPath]stringPath to file to get preference for
+ +

Editor.getCloseBrackets([fullPath]) ⇒ boolean

+

Gets whether the specified or current file uses auto close brackets

+

Kind: static method of Editor

+
ParamTypeDescription
[fullPath]stringPath to file to get preference for
+ +

Editor.setShowLineNumbers(value, [fullPath]) ⇒ boolean

+

Sets show line numbers option. +Affects any editors that share the same preference location.

+

Kind: static method of Editor
+Returns: boolean - true if value was valid

+
ParamTypeDescription
valueboolean
[fullPath]stringPath to file to get preference for
+ +

Editor.getShowLineNumbers([fullPath]) ⇒ boolean

+

Returns true if show line numbers is enabled for the specified or current file

+

Kind: static method of Editor

+
ParamTypeDescription
[fullPath]stringPath to file to get preference for
+ +

Editor.setShowActiveLine(value, [fullPath]) ⇒ boolean

+

Sets show active line option. +Affects any editors that share the same preference location.

+

Kind: static method of Editor
+Returns: boolean - true if value was valid

+
ParamTypeDescription
valueboolean
[fullPath]stringPath to file to get preference for
+ +

Editor.getShowActiveLine([fullPath]) ⇒ boolean

+

Returns true if show active line is enabled for the specified or current file

+

Kind: static method of Editor

+
ParamTypeDescription
[fullPath]stringPath to file to get preference for
+ +

Editor.setWordWrap(value, [fullPath]) ⇒ boolean

+

Sets word wrap option. +Affects any editors that share the same preference location.

+

Kind: static method of Editor
+Returns: boolean - true if value was valid

+
ParamTypeDescription
valueboolean
[fullPath]stringPath to file to get preference for
+ +

Editor.getWordWrap([fullPath]) ⇒ boolean

+

Returns true if word wrap is enabled for the specified or current file

+

Kind: static method of Editor

+
ParamTypeDescription
[fullPath]stringPath to file to get preference for
+ +

Editor.setIndentLineComment(value, [fullPath]) ⇒ boolean

+

Sets indentLineComment option. +Affects any editors that share the same preference location.

+

Kind: static method of Editor
+Returns: boolean - true if value was valid

+
ParamTypeDescription
valueboolean
[fullPath]stringPath to file to get preference for
+ +

Editor.getIndentLineComment([fullPath]) ⇒ boolean

+

Returns true if indentLineComment is enabled for the specified or current file

+

Kind: static method of Editor

+
ParamTypeDescription
[fullPath]stringPath to file to get preference for
+ +

Editor.forEveryEditor(callback, [fullPath])

+

Runs callback for every Editor instance that currently exists or only the editors matching the given fullPath.

+

Kind: static method of Editor

+
ParamTypeDescription
callbackfunction
[fullPath]stringan optional second argument, if given will only callback for all editors that is editing the file for the given fullPath
+ +

CommandManager

+

Editor is a 1-to-1 wrapper for a CodeMirror editor instance. It layers on Brackets-specific +functionality and provides APIs that cleanly pass through the bits of CodeMirror that the rest +of our codebase may want to interact with. An Editor is always backed by a Document, and stays +in sync with its content; because Editor keeps the Document alive, it's important to always +destroy() an Editor that's going away so it can release its Document ref.

+

For now, there's a distinction between the "master" Editor for a Document - which secretly acts +as the Document's internal model of the text state - and the multitude of secondary Editors +which, via Document, sync their changes to and from that master.

+

For now, direct access to the underlying CodeMirror object is still possible via _codeMirror -- +but this is considered deprecated and may go away.

+

The Editor object dispatches the following events: (available as Editor.EVENT_* constants. see below)

+
    +
  • keydown, keypress, keyup -- When any key event happens in the editor (whether it changes the +text or not). Handlers are passed (BracketsEvent, Editor, KeyboardEvent). The 3nd arg is the +raw DOM event. Note: most listeners will only want to listen for "keypress".
  • +
  • change - Triggered with an array of change objects. Parameters: (editor, changeList)
  • +
  • beforeChange - (self, changeObj)
  • +
  • beforeSelectionChange - (selectionObj)
  • +
  • focus - Fired when an editor is focused
  • +
  • blur - Fired when an editor loses focused
  • +
  • update - Will be fired whenever Editor updates its DOM display.
  • +
  • cursorActivity -- When the user moves the cursor or changes the selection, or an edit occurs. +Note: do not listen to this in order to be generally informed of edits--listen to the +"change" event on Document instead.
  • +
  • scroll -- When the editor is scrolled, either by user action or programmatically.
  • +
  • viewportChange - (from: number, to: number) Fires whenever the view port of the editor changes +(due to scrolling, editing, or any other factor). The from and to arguments give the new start +and end of the viewport. This is combination with editorInstance.getViewPort() can be used to +selectively redraw visual elements in code like syntax analyze only parts of code instead +of the full code everytime.
  • +
  • lostContent -- When the backing Document changes in such a way that this Editor is no longer +able to display accurate text. This occurs if the Document's file is deleted, or in certain +Document->editor syncing edge cases that we do not yet support (the latter cause will +eventually go away).
  • +
  • optionChange -- Triggered when an option for the editor is changed. The 2nd arg to the listener +is a string containing the editor option that is changing. The 3rd arg, which can be any +data type, is the new value for the editor option.
  • +
  • beforeDestroy - Triggered before the object is about to dispose of all its internal state data +so that listeners can cache things like scroll pos, etc...
  • +
+

The Editor also dispatches "change" events internally, but you should listen for those on +Documents, not Editors.

+

To listen for events, do something like this: (see EventDispatcher for details on this pattern) +editorInstance.on("eventname", handler);

+

Kind: global variable

+ +

BOUNDARY_CHECK_NORMAL : number

+

Constant: Normal boundary check when centering text.

+

Kind: global constant

+ +

BOUNDARY_IGNORE_TOP : number

+

Constant: Ignore the upper boundary when centering text.

+

Kind: global constant

+ +

BOUNDARY_BULLSEYE : number

+

Constant: Bulls-eye mode, strictly center the text always.

+

Kind: global constant

+ +

CENTERING_MARGIN

+

Kind: global constant

+ + \ No newline at end of file diff --git a/api/API-Reference/editor/CodeHintManager.html b/api/API-Reference/editor/CodeHintManager.html new file mode 100644 index 00000000..7d1b91f1 --- /dev/null +++ b/api/API-Reference/editor/CodeHintManager.html @@ -0,0 +1,242 @@ + + + + + +CodeHintManager | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

CodeHintManager

Import :

+
const CodeHintManager = brackets.getModule("editor/CodeHintManager")
+ +

CodeHintManager

+

CodeHintManager Overview:

+

The CodeHintManager mediates the interaction between the editor and a +collection of hint providers. If hints are requested explicitly by the +user, then the providers registered for the current language are queried +for their ability to provide hints in order of descending priority by +way their hasHints methods. Character insertions may also constitute an +implicit request for hints; consequently, providers for the current +language are also queried on character insertion for both their ability to +provide hints and also for the suitability of providing implicit hints +in the given editor context.

+

Once a provider responds affirmatively to a request for hints, the +manager begins a hinting session with that provider, begins to query +that provider for hints by way of its getHints method, and opens the +hint list window. The hint list is kept open for the duration of the +current session. The manager maintains the session until either:

+
    +
  1. the provider gives a null response to a request for hints;
  2. +
  3. a deferred response to getHints fails to resolve;
  4. +
  5. the user explicitly dismisses the hint list window;
  6. +
  7. the editor is closed or becomes inactive; or
  8. +
  9. the editor undergoes a "complex" change, e.g., a multi-character +insertion, deletion or navigation.
  10. +
+

Single-character insertions, deletions or navigations may not +invalidate the current session; in which case, each such change +precipitates a successive call to getHints.

+

If the user selects a hint from the rendered hint list then the +provider is responsible for inserting the hint into the editor context +for the current session by way of its insertHint method. The provider +may use the return value of insertHint to request that an additional +explicit hint request be triggered, potentially beginning a new +session.

+

CodeHintProvider Overview:

+

A code hint provider should implement the following three functions:

+
- `CodeHintProvider.hasHints(editor, implicitChar)`
- `CodeHintProvider.getHints(implicitChar)`
- `CodeHintProvider.insertHint(hint)`
+

The behavior of these three functions is described in detail below.

+
__CodeHintProvider.hasHints(editor, implicitChar)__
+

The method by which a provider indicates intent to provide hints for a +given editor. The manager calls this method both when hints are +explicitly requested (via, e.g., Ctrl-Space) and when they may be +implicitly requested as a result of character insertion in the editor. +If the provider responds negatively then the manager may query other +providers for hints. Otherwise, a new hinting session begins with this +provider, during which the manager may repeatedly query the provider +for hints via the getHints method. Note that no other providers will be +queried until the hinting session ends.

+

The implicitChar parameter is used to determine whether the hinting +request is explicit or implicit. If the string is null then hints were +explicitly requested and the provider should reply based on whether it +is possible to return hints for the given editor context. Otherwise, +the string contains just the last character inserted into the editor's +document and the request for hints is implicit. In this case, the +provider should determine whether it is both possible and appropriate +to show hints. Because implicit hints can be triggered by every +character insertion, hasHints may be called frequently; consequently, +the provider should endeavor to return a value as quickly as possible.

+

Because calls to hasHints imply that a hinting session is about to +begin, a provider may wish to clean up cached data from previous +sessions in this method. Similarly, if the provider returns true, it +may wish to prepare to cache data suitable for the current session. In +particular, it should keep a reference to the editor object so that it +can access the editor in future calls to getHints and insertHints.

+
param {Editor} editor
+

A non-null editor object for the active window.

+

param implicitChar +Either null, if the hinting request was explicit, or a single character +that represents the last insertion and that indicates an implicit +hinting request.

+

return +Determines whether the current provider is able to provide hints for +the given editor context and, in case implicitChar is non- null, +whether it is appropriate to do so.

+
__CodeHintProvider.getHints(implicitChar)__
+

The method by which a provider provides hints for the editor context +associated with the current session. The getHints method is called only +if the provider asserted its willingness to provide hints in an earlier +call to hasHints. The provider may return null or false, which indicates +that the manager should end the current hinting session and close the hint +list window; or true, which indicates that the manager should end the +current hinting session but immediately attempt to begin a new hinting +session by querying registered providers. Otherwise, the provider should +return a response object that contains the following properties:

+
    +
  1. hints, a sorted array hints that the provider could later insert +into the editor;
  2. +
  3. match, a string that the manager may use to emphasize substrings of +hints in the hint list (case-insensitive); and
  4. +
  5. selectInitial, a boolean that indicates whether or not the +first hint in the list should be selected by default.
  6. +
  7. handleWideResults, a boolean (or undefined) that indicates whether +to allow result string to stretch width of display.
  8. +
+

If the array of +hints is empty, then the manager will render an empty list, but the +hinting session will remain open and the value of the selectInitial +property is irrelevant.

+

Alternatively, the provider may return a jQuery.Deferred object +that resolves with an object with the structure described above. In +this case, the manager will initially render the hint list window with +a throbber and will render the actual list once the deferred object +resolves to a response object. If a hint list has already been rendered +(from an earlier call to getHints), then the old list will continue +to be displayed until the new deferred has resolved.

+

Both the manager and the provider can reject the deferred object. The +manager will reject the deferred if the editor changes state (e.g., the +user types a character) or if the hinting session ends (e.g., the user +explicitly closes the hints by pressing escape). The provider can use +this event to, e.g., abort an expensive computation. Consequently, the +provider may assume that getHints will not be called again until the +deferred object from the current call has resolved or been rejected. If +the provider rejects the deferred, the manager will end the hinting +session.

+

The getHints method may be called by the manager repeatedly during a +hinting session. Providers may wish to cache information for efficiency +that may be useful throughout these sessions. The same editor context +will be used throughout a session, and will only change during the +session as a result of single-character insertions, deletions and +cursor navigations. The provider may assume that, throughout the +lifetime of the session, the getHints method will be called exactly +once for each such editor change. Consequently, the provider may also +assume that the document will not be changed outside of the editor +during a session.

+

param implicitChar +Either null, if the request to update the hint list was a result of +navigation, or a single character that represents the last insertion.

+
    return {jQuery.Deferred|{
hints: Array.<string|jQueryObject>,
match: string,
selectInitial: boolean,
handleWideResults: boolean}}
+

Null if the provider wishes to end the hinting session. Otherwise, a +response object, possibly deferred, that provides 1. a sorted array +hints that consists either of strings or jQuery objects; 2. a string +match, possibly null, that is used by the manager to emphasize +matching substrings when rendering the hint list; and 3. a boolean that +indicates whether the first result, if one exists, should be selected +by default in the hint list window. If match is non-null, then the +hints should be strings.

+

If the match is null, the manager will not +attempt to emphasize any parts of the hints when rendering the hint +list; instead the provider may return strings or jQuery objects for +which emphasis is self-contained. For example, the strings may contain +substrings that wrapped in bold tags. In this way, the provider can +choose to let the manager handle emphasis for the simple and common case +of prefix matching, or can provide its own emphasis if it wishes to use +a more sophisticated matching algorithm.

+
__CodeHintProvider.insertHint(hint)__
+

The method by which a provider inserts a hint into the editor context +associated with the current session. The provider may assume that the +given hint was returned by the provider in some previous call in the +current session to getHints, but not necessarily the most recent call. +After the insertion has been performed, the current hinting session is +closed. The provider should return a boolean value to indicate whether +or not the end of the session should be immediately followed by a new +explicit hinting request, which may result in a new hinting session +being opened with some provider, but not necessarily the current one.

+

param hint +The hint to be inserted into the editor context for the current session.

+

return +Indicates whether the manager should follow hint insertion with an +explicit hint request.

+

CodeHintProvider.insertHintOnTab

+

type insertHintOnTab +Indicates whether the CodeHintManager should request that the provider of +the current session insert the currently selected hint on tab key events, +or if instead a tab character should be inserted into the editor. If omitted, +the fallback behavior is determined by the CodeHintManager. The default +behavior is to insert a tab character, but this can be changed with the +insertHintOnTab Preference.

+ + +

CodeHintManager.registerHintProvider(provider, languageIds, priority)

+

The method by which a CodeHintProvider registers its willingness to +providing hints for editors in a given language.

+

Kind: inner method of CodeHintManager

+
ParamTypeDescription
providerCodeHintProviderThe hint provider to be registered, described below.
languageIdsArray.<string>The set of language ids for which the provider is capable of providing hints. If the special language id name "all" is included then the provider may be called for any language.
prioritynumberUsed to break ties among hint providers for a particular language. Providers with a higher number will be asked for hints before those with a lower priority value. Defaults to zero.
+ +

CodeHintManager.hasValidExclusion(exclusion, textAfterCursor) ⇒ boolean

+

Test whether the provider has an exclusion that is still the same as text after the cursor.

+

Kind: inner method of CodeHintManager
+Returns: boolean - true if the exclusion is not null and is exactly the same as textAfterCursor, +false otherwise.

+
ParamTypeDescription
exclusionstringText not to be overwritten when the provider inserts the selected hint.
textAfterCursorstringText that is immediately after the cursor position.
+ +

CodeHintManager.isOpen() ⇒ boolean

+

Test if a hint popup is open.

+

Kind: inner method of CodeHintManager
+Returns: boolean - - true if the hints are open, false otherwise.

+ +

CodeHintManager.showHintsAtTop(handler)

+

Register a handler to show hints at the top of the hint list. +This API allows extensions to add their own hints at the top of the standard hint list.

+

Kind: inner method of CodeHintManager

+
ParamTypeDescription
handlerObjectA hint provider object with standard methods: - hasHints: function(editor, implicitChar) - returns true if hints are available - getHints: function(editor, implicitChar) - returns hint response object with hints array - insertHint: function(hint) - handles hint insertion, returns true if handled
+ +

CodeHintManager.clearHintsAtTop()

+

Unregister the hints at top handler.

+

Kind: inner method of CodeHintManager

+ + \ No newline at end of file diff --git a/api/API-Reference/editor/CodeHintManager/index.html b/api/API-Reference/editor/CodeHintManager/index.html new file mode 100644 index 00000000..fb936c54 --- /dev/null +++ b/api/API-Reference/editor/CodeHintManager/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/editor/EditorManager.html b/api/API-Reference/editor/EditorManager.html new file mode 100644 index 00000000..9ca5d38c --- /dev/null +++ b/api/API-Reference/editor/EditorManager.html @@ -0,0 +1,125 @@ + + + + + +EditorManager | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

EditorManager

Import :

+
const EditorManager = brackets.getModule("editor/EditorManager")
+ +

getCurrentFullEditor() ⇒ Editor

+

Retrieves the visible full-size Editor for the currently opened file in the ACTIVE_PANE

+

Kind: global function
+Returns: Editor - editor of the current view or null

+ +

closeInlineWidget(hostEditor, inlineWidget) ⇒ $.Promise

+

Removes the given widget UI from the given hostEditor (agnostic of what the widget's content +is). The widget's onClosed() callback will be run as a result.

+

Kind: global function
+Returns: $.Promise - A promise that's resolved when the widget is fully closed.

+
ParamTypeDescription
hostEditorEditorThe editor containing the widget.
inlineWidgetInlineWidgetThe inline widget to close.
+ +

registerInlineEditProvider(provider, [priority])

+

Registers a new inline editor provider. When Quick Edit is invoked each registered provider is +asked if it wants to provide an inline editor given the current editor and cursor location. +An optional priority parameter is used to give providers with higher priority an opportunity +to provide an inline editor before providers with lower priority.

+

Kind: global function

+
ParamTypeDescription
providerfunction
[priority]numberThe provider returns a promise that will be resolved with an InlineWidget, or returns a string indicating why the provider cannot respond to this case (or returns null to indicate no reason).
+ +

registerInlineDocsProvider(provider, [priority])

+

Registers a new inline docs provider. When Quick Docs is invoked each registered provider is +asked if it wants to provide inline docs given the current editor and cursor location. +An optional priority parameter is used to give providers with higher priority an opportunity +to provide an inline editor before providers with lower priority.

+

Kind: global function

+
ParamTypeDescription
providerfunction
[priority]numberThe provider returns a promise that will be resolved with an InlineWidget, or returns a string indicating why the provider cannot respond to this case (or returns null to indicate no reason).
+ +

getInlineEditors(hostEditor) ⇒ Array.<Editor>

+

Given a host editor, return a list of all Editors in all its open inline widgets. (Ignoring +any other inline widgets that might be open but don't contain Editors).

+

Kind: global function

+
ParamType
hostEditorEditor
+ +

createInlineEditorForDocument(doc, range, inlineContent, closeThisInline) ⇒ Object

+

Creates a new inline Editor instance for the given Document. +The editor is not yet visible or attached to a host editor.

+

Kind: global function

+
ParamTypeDescription
docDocumentDocument for the Editor's content
rangeObjectIf specified, all lines outside the given range are hidden from the editor. Range is inclusive. Line numbers start at 0.
inlineContentHTMLDivContainer
closeThisInlinefunction
+ +

focusEditor()

+

Returns focus to the last visible editor that had focus. If no editor visible, does nothing. +This function should be called to restore editor focus after it has been temporarily +removed. For example, after a dialog with editable text is closed.

+

Kind: global function

+ +

canOpenPath(fullPath) ⇒ boolean

+

Determines if the file can be opened in an editor

+

Kind: global function
+Returns: boolean - true if the file can be opened in an editor, false if not

+
ParamTypeDescription
fullPathstringfile to be opened
+ +

openDocument(doc, pane, editorOptions) ⇒ boolean

+

Opens the specified document in the given pane

+

Kind: global function
+Returns: boolean - true if the file can be opened, false if not

+
ParamTypeDescription
docDocumentthe document to open
panePanethe pane to open the document in
editorOptionsObjectIf specified, contains editor options that can be passed to CodeMirror
+ +

getFocusedInlineWidget() ⇒ InlineWidget

+

Returns the currently focused inline widget, if any.

+

Kind: global function

+ +

getFocusedInlineEditor() ⇒ Editor

+

Returns the focused Editor within an inline text editor, or null if something else has focus

+

Kind: global function

+ +

getFocusedEditor() ⇒ Editor

+

Returns the currently focused editor instance (full-sized OR inline editor). +This function is similar to getActiveEditor(), with one main difference: this +function will only return editors that currently have focus, whereas +getActiveEditor() will return the last visible editor that was given focus (but +may not currently have focus because, for example, a dialog with editable text +is open).

+

Kind: global function

+ +

getActiveEditor() ⇒ Editor

+

Returns the current active editor (full-sized OR inline editor). This editor may not +have focus at the moment, but it is visible and was the last editor that was given +focus. Returns null if no editors are active.

+

Kind: global function
+See: #getFocusedEditor

+ +

getHoveredEditor(mousePos) ⇒ Editor

+

Returns the editor/inline editor under given mouse cursor coordinates specified. The coordinates can be usually +fetched from the document.onmousemove dom event handler or any dom events. +https://stackoverflow.com/questions/7790725/javascript-track-mouse-position

+

Kind: global function

+
ParamTypeDescription
mousePosObjectThe mouse position(or the js event with mouse position).
+ + \ No newline at end of file diff --git a/api/API-Reference/editor/EditorManager/index.html b/api/API-Reference/editor/EditorManager/index.html new file mode 100644 index 00000000..a88afb0d --- /dev/null +++ b/api/API-Reference/editor/EditorManager/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/editor/index.html b/api/API-Reference/editor/index.html new file mode 100644 index 00000000..f713842c --- /dev/null +++ b/api/API-Reference/editor/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/features/BeautificationManager.html b/api/API-Reference/features/BeautificationManager.html new file mode 100644 index 00000000..64f99684 --- /dev/null +++ b/api/API-Reference/features/BeautificationManager.html @@ -0,0 +1,132 @@ + + + + + +BeautificationManager | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

BeautificationManager

Import :

+
const BeautificationManager = brackets.getModule("features/BeautificationManager")
+ +

features/BeautificationManager

+

Beautification manager interacts with beautify extensions to determine what to do when user issues beautify code +command. Beautification providers can use this module to register new providers to beautify new languages.

+

API

+

registerBeautificationProvider

+

Register a Beautification provider with this api.

+

Example

+
// syntax
BeautificationManager.registerBeautificationProvider(provider, supportedLanguages, priority);
+

The API requires three parameters:

+
    +
  1. provider: must implement a beautifyEditorProvider and beautifyTextProvider function. See doc below:
  2. +
  3. supportedLanguages: An array of languages that the provider supports. If ["all"] is supplied, then the +provider will be invoked for all languages. Restrict to specific languages: Eg: ["javascript", "html", "php"]
  4. +
  5. priority: Used to break ties among providers for a particular language. Providers with a higher number +will be asked for beatified code before those with a lower priority value. Defaults to zero. +Example
  6. +
+
// to register a provider that will be invoked for all languages. where provider is any object that implements
// a `beautifyEditorProvider` and `beautifyTextProvider` function
BeautificationManager.registerBeautificationProvider(provider, ["all"]);

// to register a provider that will be invoked for specific languages
BeautificationManager.registerBeautificationProvider(provider, ["javascript", "html", "php"]);
+

removeBeautificationProvider

+

Removes a registered Beautification provider. The API takes the same arguments as registerBeautificationProvider. +Example

+
// syntax
BeautificationManager.removeBeautificationProvider(provider, supportedLanguages);
// Example
BeautificationManager.removeBeautificationProvider(provider, ["javascript", "html"]);
+

provider.beautifyEditorProvider

+

Each provider must implement the beautifyEditorProvider function that returns a promise. The promise either resolves with +the beautified code details or rejects if there is nothing to beautify for the provider. +Example

+
// function signature
provider.beautifyEditorProvider = function(editor) {
return new Promise((resolve, reject)=>{
resolve({
originalText: "the original text sent to beautify",
changedText: "partial or full text that changed.",
// Optional cursor offset if given will set the editor cursor to the position after beautification.
// either `cursorOffset` or `ranges` can be specified, but not both.
cursorOffset: number,
// Optional: If range is specified, only the given range will be replaced. else full text is replaced
ranges:{
replaceStart: {line,ch},
replaceEnd: {line,ch}
}
});
});
};
+

The resolved promise object

+

The resolved promise should either be null(indicating that the extension itself has prettified the code and +doesn't want any further processing from BeautificationManager.) or contain the following details:

+
    +
  1. originalText - string, the original text sent to beautify
  2. +
  3. changedText - string, this should be the fully prettified text of the whole originalText or a fragment of +pretty text in originalText if a range was selected. If a fragment is returned, then the +ranges object must be specified.
  4. +
  5. cursorOffset - Optional number, if given will set the editor cursor to the position after beautification. +either cursorOffset or ranges can be specified, but not both.
  6. +
  7. ranges - Optional object, set of 2 cursors that gives details on what range to replace with given changed text. +If range is not specified, the full text in the editor will be replaced. range has 2 fields: +
      +
    1. replaceStart{line,ch} - the start of range to replace
    2. +
    3. replaceEnd{line,ch} - the end of range to replace
    4. +
    +
  8. +
+

provider.beautifyTextProvider

+

Each provider must implement the beautifyTextProvider function that returns a promise. +The promise either resolves with the beautified code details(same as beautifyEditorProvider) or rejects if +there is nothing to beautify for the provider. +Example

+
// function signature.
provider.beautifyTextProvider = function(textToBeautify, filePathOrFileName) {
return new Promise((resolve, reject)=>{
resolve({
originalText: "the original text sent to beautify",
changedText: "partial or full text that changed.",
// Optional: If range is specified, only the given range is assumed changed. else full text changed.
ranges:{
replaceStart: {line,ch},
replaceEnd: {line,ch}
}
});
});
};
+

Parameters

+

The beautifyTextProvider callback will receive the following arguments.

+
    +
  1. textToBeautify - string
  2. +
  3. filePathOrFileName - string. This will either be a valid file path, or a file name to deduce which language the +beautifier is dealing with.
  4. +
+

The resolved promise object

+

The resolved object has the same structure as beautifyEditorProvider resolved promise object.

+ + +

features/BeautificationManager.beautifyEditor(editor) ⇒ Promise

+

Beautifies text in the given editor with available providers.

+

Kind: inner method of features/BeautificationManager
+Returns: Promise - - A promise that will be resolved to null if the selected text is beautified or rejects +if beautification failed.

+
Param
editor
+ +

features/BeautificationManager.beautifyText(textToBeautify, filePathOrFileName) ⇒ Promise

+

Beautifies text with available providers.

+

Kind: inner method of features/BeautificationManager
+Returns: Promise - - A promise that will be resolved to null if the selected text is beautified or rejects +if beautification failed..

+

The resolved promise object

+

The resolved promise object contain the following details:

+
    +
  1. originalText - string, the original text sent to beautify
  2. +
  3. changedText - string, the prettified text.
  4. +
  5. ranges - Optional. if range object is returned, it means that only a part of the original text changed in +the original text textToBeautify. The part that changed is supplied by two cursor positions below: +
      +
    1. replaceStart{line,ch} - the start of range to replace
    2. +
    3. replaceEnd{line,ch} - the end of range to replace
    4. +
    +
  6. +
+
ParamTypeDescription
textToBeautifystring
filePathOrFileNamestringNote that the file path may not actually exist on disk. It is just used to infer what language beautifier is to be applied.
+ + \ No newline at end of file diff --git a/api/API-Reference/features/BeautificationManager/index.html b/api/API-Reference/features/BeautificationManager/index.html new file mode 100644 index 00000000..0cf33c9c --- /dev/null +++ b/api/API-Reference/features/BeautificationManager/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/features/NewFileContentManager.html b/api/API-Reference/features/NewFileContentManager.html new file mode 100644 index 00000000..760334bc --- /dev/null +++ b/api/API-Reference/features/NewFileContentManager.html @@ -0,0 +1,84 @@ + + + + + +NewFileContentManager | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

NewFileContentManager

Import :

+
const NewFileContentManager = brackets.getModule("features/NewFileContentManager")
+ +

features/NewFileContentManager

+

NewFileContentManager provides support to add default template content when a new/empty file is created. +Extensions can register to provide content with NewFileContentManager.registerContentProvider API.

+

Usage

+

Let's say whenever a user creates a new js file, we have to prefill the contents to "sample content"

+

Example

+
const NewFileContentManager = brackets.getModule("features/NewFileContentManager");
// replace `js` with language ID(Eg. javascript) if you want to restrict the preview to js files only. use `all` for
// all languages.
NewFileContentManager.registerContentProvider(exports, ["js"], 1);

// provide a helpful name for the ContentProvider. This will be useful if you have to debug.
exports.CONTENT_PROVIDER_NAME = "extension.someName";
// now implement the getContent function that will be invoked when ever user creates a new empty file.
exports.getContent = function(fullPath) {
return new Promise((resolve, reject)=>{
resolve("sample content");
});
};
+

API

+

registerContentProvider

+

Register a Content provider with this api. +Example

+
// syntax
NewFileContentManager.registerContentProvider(provider, supportedLanguages, priority);
+

The API requires three parameters:

+
    +
  1. provider: must implement a getContent function which will be invoked to get the content. See API doc below.
  2. +
  3. supportedLanguages: An array of languages that the provider supports. If ["all"] is supplied, then the +provider will be invoked for all languages. Restrict to specific languages: Eg: ["javascript", "html", "php"]
  4. +
  5. priority: Contents provided hy providers with higher priority will win if there are more than +one provider registered for the language. Default is 0. +Example
  6. +
+
// to register a provider that will be invoked for all languages. where provider is any object that implements
// a getContent function
NewFileContentManager.registerContentProvider(provider, ["all"]);

// to register a provider that will be invoked for specific languages
NewFileContentManager.registerContentProvider(provider, ["javascript", "html", "php"]);
+

removeContentProvider

+

Removes a registered content provider. The API takes the same arguments as registerContentProvider. +Example

+
// syntax
NewFileContentManager.removeContentProvider(provider, supportedLanguages);
// Example
NewFileContentManager.removeContentProvider(provider, ["javascript", "html"]);
+

provider.getContent

+

Each provider must implement the getContent function that returns a promise. The promise either resolves with +the content text or rejects if there is no content made available by the provider. +Example

+
exports.CONTENT_PROVIDER_NAME = "extension.someName"; // for debugging
// function signature
exports.getContent = function(fullPath) {
return new Promise((resolve, reject)=>{
resolve("sample content");
});
};
+

parameters

+

The function will be called with the path of the file that needs the content.

+
    +
  1. fullPath - string path
  2. +
+

return types

+

A promise that resolves with the content text or rejects if there is no content made available by the provider.

+ +

features/NewFileContentManager.getInitialContentForFile(fullPath) ⇒ Promise.<string>

+

Returns a promise that resolves to the default text content of the given file after querying +all the content providers. If no text is returned by any providers, it will return an empty string "". +To get the default content given a path +NewFileContentManager.getInitialContentForFile("/path/to/file.jsx");

+

Kind: inner method of features/NewFileContentManager
+Returns: Promise.<string> - The text contents

+
ParamType
fullPathstring
+ + \ No newline at end of file diff --git a/api/API-Reference/features/NewFileContentManager/index.html b/api/API-Reference/features/NewFileContentManager/index.html new file mode 100644 index 00000000..10579c18 --- /dev/null +++ b/api/API-Reference/features/NewFileContentManager/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/features/PriorityBasedRegistration.html b/api/API-Reference/features/PriorityBasedRegistration.html new file mode 100644 index 00000000..c269f0f3 --- /dev/null +++ b/api/API-Reference/features/PriorityBasedRegistration.html @@ -0,0 +1,36 @@ + + + + + +PriorityBasedRegistration | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/features/PriorityBasedRegistration/index.html b/api/API-Reference/features/PriorityBasedRegistration/index.html new file mode 100644 index 00000000..c0e1cf3f --- /dev/null +++ b/api/API-Reference/features/PriorityBasedRegistration/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/features/QuickViewManager.html b/api/API-Reference/features/QuickViewManager.html new file mode 100644 index 00000000..7d42504d --- /dev/null +++ b/api/API-Reference/features/QuickViewManager.html @@ -0,0 +1,151 @@ + + + + + +QuickViewManager | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

QuickViewManager

Import :

+
const QuickViewManager = brackets.getModule("features/QuickViewManager")
+ +

features/QuickViewManager

+

QuickViewManager provides support to add interactive preview popups on hover over the main editors. +Extensions can register to provide previews with QuickViewManager.registerQuickViewProvider API.

+Phoenix code quick view +Phoenix code quick view Youtube + +

features/SelectionViewManager is similar to +QuickViewManager API.

+
    +
  • SelectionViews popup only once user selects a text by mouse or hover over a region with text selection.
  • +
  • Quickviews popup on mouse hover.
  • +
+quick view pops on mouse hover +

Usage

+

Lets build a "hello world" extension that displays "hello world" on hover over a text in the editor. +In your extension file, add the following code:

+

Example

+
const QuickViewManager = brackets.getModule("features/QuickViewManager");
// replace `all` with language ID(Eg. javascript) if you want to restrict the preview to js files only.
QuickViewManager.registerQuickViewProvider(exports, ["all"]);

// provide a helpful name for the QuickView. This will be useful if you implement `filterQuickView` function or
// have to debug the quick view.
exports.QUICK_VIEW_NAME = "extension.someName";
// now implement the getQuickView function that will be invoked when ever user hovers over a text in the editor.
exports.getQuickView = function(editor, pos, token, line) {
return new Promise((resolve, reject)=>{
resolve({
start: {line: pos.line, ch:token.start},
end: {line: pos.line, ch:token.end},
content: "<div>hello world</div>"
});
});
};
// optional filter quick view function to handle multiple quick views
exports.filterQuickView = function(popovers){
// popovers will be an array of all popovers rendered by providers
return popovers; // dont filter show everything in this case
}
+

How it works

+

When QuickViewManager determines that the user intents to see QuickView on hover, getQuickView function on all +registered QuickView providers are invoked to get the quick view popup. getQuickView should return a promise +that resolves to the popup contents if the provider has a quick view. Else just reject the promise. If multiple +providers returns QuickView, all of them are displayed stacked one by one. You can alter this behavior by +providing a filterQuickView function in the provider where you can modify what previews will be shown. +See detailed API docs for implementation details below:

+

API

+

registerQuickViewProvider

+

Register a QuickView provider with this api. +Example

+
// syntax
QuickViewManager.registerQuickViewProvider(provider, supportedLanguages);
+

The API requires two parameters:

+
    +
  1. provider: must implement a getQuickView function which will be invoked to get the preview. See API doc below.
  2. +
  3. supportedLanguages: An array of languages that the QuickView supports. If ["all"] is supplied, then the +QuickView will be invoked for all languages. Restrict to specific languages: Eg: ["javascript", "html", "php"] +Example
  4. +
+
// to register a provider that will be invoked for all languages. where provider is any object that implements
// a getQuickView function
QuickViewManager.registerQuickViewProvider(provider, ["all"]);

// to register a provider that will be invoked for specific languages
QuickViewManager.registerQuickViewProvider(provider, ["javascript", "html", "php"]);
+

removeQuickViewProvider

+

Removes a registered QuickView provider. The API takes the same arguments as registerQuickViewProvider. +Example

+
// syntax
QuickViewManager.removeQuickViewProvider(provider, supportedLanguages);
// Example
QuickViewManager.removeQuickViewProvider(provider, ["javascript", "html"]);
+

getQuickView

+

Each provider must implement the getQuickView function that returns a promise. The promise either resolves with +the quick view details object(described below) or rejects if there is no preview for the position. +Example

+
// function signature
provider.getQuickView = function(editor, pos, token, line) {
return new Promise((resolve, reject)=>{
resolve({
start: {line: pos.line, ch:token.start},
end: {line: pos.line, ch:token.end},
content: "<div>hello world</div>",
editsDoc: false // this is optional if the quick view edits the current doc
});
});
};
+

parameters

+

The function will be called with the following arguments:

+
    +
  1. editor - The editor over which the user hovers the mouse cursor.
  2. +
  3. pos - the cursor position over which the user hovers.
  4. +
  5. token - hovered token details
  6. +
  7. line - the full line text as string.
  8. +
+

return types

+

The promise returned should resolve to an object with the following contents:

+
    +
  1. start : Indicates the start cursor position from which the quick view is valid.
  2. +
  3. end : Indicates the end cursor position to which the quick view is valid. These are generally used to highlight +the hovered section of the text in the editor.
  4. +
  5. content: Either HTML as text, a DOM Node or a Jquery Element.
  6. +
  7. editsDoc: Optional, set to true if the quick view can edit the active document.
  8. +
+

Modifying the QuickView content after resolving getQuickView promise

+

Some advanced/interactive extensions may need to do dom operations on the quick view content. +In such cases, it is advised to return a domNode/Jquery element as content in getQuickView. Event Handlers +or further dom manipulations can be done on the returned content element. +The Quick view may be dismissed at any time, so be sure to check if the DOM Node is visible in the editor before +performing any operations.

+

Considerations

+
    +
  1. QuickView won't be displayed till all provider promises are settled. To improve performance, if your QuickView +handler takes time to resolve the QuickView, resolve a dummy quick once you are sure that a QuickView needs +to be shown to the user. The div contents can be later updated as and when more details are available.
  2. +
  3. Note that the QuickView could be hidden/removed any time by the QuickViewManager.
  4. +
  5. If multiple providers returns a valid popup, all of them are displayed except if the filterQuickView modifies +the quick view render list. Note that filterQuickView is called only for those providers that +provided a quick view.
  6. +
+

filterQuickView

+

Each provider can optionally implement the filterQuickView function to control what among the available +quick views should be rendered if multiple providers responded with a QuickView. The function will be called +once all getQuickView providers provided a valid preview object. +Example

+
// function signature
provider.filterQuickView = function(popovers) {
for(let popover of popovers){
// here if we see that a quick view with name `exclusiveQuickView` is present, then we only show that
// QuickView. popover.providerInfo object holds details of what provider provided the quick view.
if(popover.providerInfo.provider.QUICK_VIEW_NAME === "exclusiveQuickView"){
return [popover]
}
}
// if nothing is returned, then the `popovers` param will be used to show popover
};
+

parameter

+

The function will be called with the popovers parameter which is an array of popover objects that was returned +by getQuickView function of all succeeded providers. Details of each provider that created a popover +will be present in popovers[i].providerInfo object.

+

return

+

An array of popovers that needs to be rendered, or nothing(to render the original popover parameter as is).

+ + +

features/QuickViewManager.isQuickViewShown() ⇒ boolean

+

If quickview is displayed and visible on screen

+

Kind: inner method of features/QuickViewManager

+ +

features/QuickViewManager.lockQuickView() : function

+

locks the current QuickView if shown to be permanently displayed on screen till the unlockQuickView function +is called or document changes.

+

Kind: inner method of features/QuickViewManager

+ +

features/QuickViewManager.unlockQuickView() : function

+

unlocks the current QuickView locked by lockQuickView fucntion.

+

Kind: inner method of features/QuickViewManager

+ + \ No newline at end of file diff --git a/api/API-Reference/features/QuickViewManager/index.html b/api/API-Reference/features/QuickViewManager/index.html new file mode 100644 index 00000000..08e4ae8c --- /dev/null +++ b/api/API-Reference/features/QuickViewManager/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/features/SelectionViewManager.html b/api/API-Reference/features/SelectionViewManager.html new file mode 100644 index 00000000..112e64be --- /dev/null +++ b/api/API-Reference/features/SelectionViewManager.html @@ -0,0 +1,113 @@ + + + + + +SelectionViewManager | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

SelectionViewManager

Import :

+
const SelectionViewManager = brackets.getModule("features/SelectionViewManager")
+ +

features/SelectionViewManager

+

SelectionViewManager provides support to add interactive preview popups on selection over the main editors. +This can be used to provide interactive editor controls on a selected element.

+

Extensions can register to provide previews with SelectionViewManager.registerSelectionViewProvider API.

+Phoenix code selection view + + +

features/QuickViewManager is similar to +SelectionViewManager API.

+
    +
  • SelectionViews popup only once user selects a text by mouse or hover over a region with text selection.
  • +
  • Quickviews popup on mouse hover.
  • +
+Phoenix code selection view Youtube image +

Usage

+

Lets build a "hello world" extension that displays "hello world" above selected text in the editor. +In your extension file, add the following code:

+

Example

+
const SelectionViewManager = brackets.getModule("features/SelectionViewManager");
// replace `all` with language ID(Eg. javascript) if you want to restrict the preview to js files only.
SelectionViewManager.registerSelectionViewProvider(exports, ["all"]);

// provide a helpful name for the SelectionView. This will be useful if you have to debug the selection view
exports.SELECTION_VIEW_NAME = "extension.someName";
// now implement the getSelectionView function that will be invoked when ever user selection changes in the editor.
exports.getSelectionView = function(editor, selections) {
return new Promise((resolve, reject)=>{
resolve({
content: "<div>hello world</div>"
});
});
};
+

How it works

+

When SelectionViewManager determines that the user intents to see SelectionViewr, getSelectionView function on all +registered SelectionView providers are invoked to get the Selection View popup. getSelectionView should return +a promise that resolves to the popup contents if the provider has a Selection View. Else just reject the promise. +If multiple providers returns SelectionView, all of them are displayed one by one. +See detailed API docs for implementation details below:

+

API

+

registerSelectionViewProvider

+

Register a SelectionView provider with this api. +Example

+
// syntax
SelectionViewManager.registerSelectionViewProvider(provider, supportedLanguages);
+

The API requires two parameters:

+
    +
  1. provider: must implement a getSelectionView function which will be invoked to get the preview. See API doc below.
  2. +
  3. supportedLanguages: An array of languages that the SelectionView supports. If ["all"] is supplied, then the +SelectionView will be invoked for all languages. Restrict to specific languages: Eg: ["javascript", "html", "php"] +Example
  4. +
+
// to register a provider that will be invoked for all languages. where provider is any object that implements
// a getSelectionView function
SelectionViewManager.registerSelectionViewProvider(provider, ["all"]);

// to register a provider that will be invoked for specific languages
SelectionViewManager.registerSelectionViewProvider(provider, ["javascript", "html", "php"]);
+

removeSelectionViewProvider

+

Removes a registered SelectionView provider. The API takes the same arguments as registerSelectionViewProvider. +Example

+
// syntax
SelectionViewManager.removeSelectionViewProvider(provider, supportedLanguages);
// Example
SelectionViewManager.removeSelectionViewProvider(provider, ["javascript", "html"]);
+

getSelectionView

+

Each provider must implement the getSelectionView function that returns a promise. The promise either resolves with +the Selection View details object(described below) or rejects if there is no preview for the position. +Example

+
// function signature
provider.getSelectionView = function(editor, selections) {
return new Promise((resolve, reject)=>{
resolve({
content: "<div>hello world</div>"
});
});
};
+

parameters

+

The function will be called with the following arguments:

+
    +
  1. editor - The editor over which the user hovers the mouse cursor.
  2. +
  3. selections - An array containing the active selections when the selection view was trigerred.
  4. +
+

return types

+

The promise returned should resolve to an object with the following contents:

+
    +
  1. content: Either HTML as text, a DOM Node or a Jquery Element.
  2. +
+

Modifying the SelectionView content after resolving getSelectionView promise

+

Some advanced/interactive extensions may need to do dom operations on the SelectionView content. +In such cases, it is advised to return a domNode/Jquery element as content in getSelectionView. Event Handlers +or further dom manipulations can be done on the returned content element. +The SelectionView may be dismissed at any time, so be sure to check if the DOM Node is visible in the editor before +performing any operations.

+

Considerations

+
    +
  1. SelectionView won't be displayed till all provider promises are settled. To improve performance, if your SelectionView +handler takes time to resolve the SelectionView, resolve a dummy quick once you are sure that a SelectionView needs +to be shown to the user. The div contents can be later updated as and when more details are available.
  2. +
  3. Note that the SelectionView could be hidden/removed any time by the SelectionViewManager.
  4. +
  5. If multiple providers returns a valid popup, all of them are displayed.
  6. +
+ +

features/SelectionViewManager.isSelectionViewShown() ⇒ boolean

+

If quickview is displayed and visible on screen

+

Kind: inner method of features/SelectionViewManager

+ + \ No newline at end of file diff --git a/api/API-Reference/features/SelectionViewManager/index.html b/api/API-Reference/features/SelectionViewManager/index.html new file mode 100644 index 00000000..610e3f6d --- /dev/null +++ b/api/API-Reference/features/SelectionViewManager/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/features/TaskManager.html b/api/API-Reference/features/TaskManager.html new file mode 100644 index 00000000..df487da6 --- /dev/null +++ b/api/API-Reference/features/TaskManager.html @@ -0,0 +1,67 @@ + + + + + +TaskManager | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

TaskManager

Import :

+
const TaskManager = brackets.getModule("features/TaskManager")
+ +

features/TaskManager

+

TaskManager module deals with managing long running tasks in phcode. It handles the Tasks dropdown in the status +bar where the user can see all running tasks, monitor its progress and close/pause the execution of the task if +supported by the task.

+ + +

features/TaskManager.addNewTask(taskTitle, message, [iconHTML], [options]) ⇒ TaskObject

+

The addNewTask is designed for adding new tasks to the task management system. This function is central to +managing long-running tasks, providing a way to visually represent task progress, status, and control actions +directly from the UI in the status bar.

+

Kind: inner method of features/TaskManager
+Returns: TaskObject - Returns a task object with methods for updating the task's state and UI representation, +such as setProgressPercent, setMessage, setSucceeded, setFailed, and control visibility methods +like showStopIcon, hideStopIcon, etc.

+
ParamTypeDefaultDescription
taskTitlestringThe title of the task. This is a mandatory parameter and is displayed in the UI.
messagestringA message or status associated with the task. Displayed as additional information in the UI.
[iconHTML]stringnullOptional HTML string for the task's icon. Used to visually represent the task in the UI.
[options]ObjectOptional settings and callbacks for the task.
[options.onPauseClick]functionCallback function triggered when the pause button is clicked.
[options.onPlayClick]functionCallback function triggered when the play button is clicked.
[options.onStopClick]functionCallback function triggered when the stop button is clicked.
[options.onRetryClick]functionCallback function triggered when the retry button is clicked.
[options.onSelect]functionCallback function triggered when the task is selected from the dropdown.
[options.progressPercent]numberInitial progress percentage of the task.
[options.noSpinnerNotification]booleanIf set to true, will not show the task spinners for this task. This can be used for silent background tasks where user attention is not needed.
+

Example

+
// Example: Adding a new task with initial progress and attaching event handlers
const task = TaskManager.addNewTask(
'Data Processing',
'Processing data...',
'<i class="fa fa-spinner fa-spin"></i>',
{
onPauseClick: () => console.log('Task paused'),
onPlayClick: () => console.log('Task resumed'),
onStopClick: () => console.log('Task stopped'),
onRetryClick: () => console.log('Task retried'),
onSelect: () => console.log('Task selected'),
progressPercent: 20
}
);

// Updating task progress
task.setProgressPercent(60);

// Updating task message
task.setMessage('60% completed');

// Marking task as succeeded
task.setSucceeded();
+ +

features/TaskManager.TaskObject : Object

+

Methods for managing the task's state and UI representation in the TaskManager.

+

Kind: inner typedef of features/TaskManager
+Properties

+
NameTypeDescription
showfunctionShows the task popup in the ui.
closefunctionCloses the task and removes it from the UI.
setTitlefunctionSets the task's title.
getTitlefunctionReturns the task's title.
setMessagefunctionSets the task's message.
getMessagefunctionReturns the task's message.
setProgressPercentfunctionSets the task's progress percentage.
getProgressPercentfunctionReturns the task's current progress percentage.
setFailedfunctionMarks the task as failed.
isFailedfunctionReturns true if the task is marked as failed.
setSuccededfunctionMarks the task as succeeded.
isSuccededfunctionReturns true if the task is marked as succeeded.
showStopIconfunctionShows the stop icon with an optional tooltip message.
hideStopIconfunctionHides the stop icon.
showPlayIconfunctionShows the play icon with an optional tooltip message.
hidePlayIconfunctionHides the play icon.
showPauseIconfunctionShows the pause icon with an optional tooltip message.
hidePauseIconfunctionHides the pause icon.
showRestartIconfunctionShows the restart (retry) icon with an optional tooltip message.
hideRestartIconfunctionHides the restart (retry) icon.
flashSpinnerForAttentionfunctionbriefly flashes the task spinner icon for attention.
+ + \ No newline at end of file diff --git a/api/API-Reference/features/TaskManager/index.html b/api/API-Reference/features/TaskManager/index.html new file mode 100644 index 00000000..dd719ade --- /dev/null +++ b/api/API-Reference/features/TaskManager/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/file/FileUtils.html b/api/API-Reference/file/FileUtils.html new file mode 100644 index 00000000..e2d81953 --- /dev/null +++ b/api/API-Reference/file/FileUtils.html @@ -0,0 +1,214 @@ + + + + + +FileUtils | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

FileUtils

Import :

+
const FileUtils = brackets.getModule("file/FileUtils")
+ +

LINE_ENDINGS_CRLF : enum

+

Line endings crlf

+

Kind: global enum

+ +

LINE_ENDINGS_LF : enum

+

Line endings lf

+

Kind: global enum

+ +

Maximium : Number

+

file size (in bytes) +This must be a hard-coded value since this value +tells how low-level APIs should behave which cannot +have a load order dependency on preferences manager

+

Kind: global constant

+ +

readAsText(file, bypassCache, [options]) ⇒ $.Promise

+

Asynchronously reads a file as UTF-8 encoded text.

+

Kind: global function
+Returns: $.Promise - a jQuery promise that will be resolved with the +file's text content plus its timestamp, or rejected with a FileSystemError string +constant if the file can not be read.

+
ParamTypeDescription
fileFileFile to read
bypassCachebooleanan optional argument, if specified will read from disc instead of using cache.
[options]object
[options.ignoreFileSizeLimits]booleanWill read larger files than 16MB limit. will bypassCache + won't cache if enabled.
[options.doNotCache]booleanwill not cache if enabled. Auto-enabled if ignoreFileSizeLimits = true
+ +

writeText(file, text, [allowBlindWrite]) ⇒ $.Promise

+

Asynchronously writes a file as UTF-8 encoded text.

+

Kind: global function
+Returns: $.Promise - a jQuery promise that will be resolved when +file writing completes, or rejected with a FileSystemError string constant.

+
ParamTypeDescription
fileFileFile to write
textstring
[allowBlindWrite]booleanIndicates whether or not CONTENTS_MODIFIED errors---which can be triggered if the actual file contents differ from the FileSystem's last-known contents---should be ignored.
+ +

getPlatformLineEndings() ⇒ LINE_ENDINGS_CRLF | LINE_ENDINGS_LF

+

Returns the standard line endings for the current platform

+

Kind: global function

+ +

sniffLineEndings(text) ⇒ null | LINE_ENDINGS_CRLF | LINE_ENDINGS_LF

+

Scans the first 1000 chars of the text to determine how it encodes line endings. Returns +null if usage is mixed or if no line endings found.

+

Kind: global function

+
ParamType
textstring
+ +

translateLineEndings(text, lineEndings) ⇒ string

+

Translates any line ending types in the given text to the be the single form specified

+

Kind: global function

+
ParamType
textstring
lineEndingsnull | LINE_ENDINGS_CRLF | LINE_ENDINGS_LF
+ +

getFileErrorString(name) ⇒ string

+

Kind: global function
+Returns: string - User-friendly, localized error message

+
ParamType
nameFileSystemError
+ +

makeDialogFileList(Array)

+

Creates an HTML string for a list of files to be reported on, suitable for use in a dialog.

+

Kind: global function

+
ParamTypeDescription
ArrayArray.<string>of filenames or paths to display.
+ +

convertToNativePath(path) ⇒ string

+

Convert a URI path to a native path. +On both platforms, this unescapes the URI +On windows, URI paths start with a "/", but have a drive letter ("C:"). In this +case, remove the initial "/".

+

Kind: global function

+
ParamType
pathstring
+ +

convertWindowsPathToUnixPath(path) ⇒ string

+

Convert a Windows-native path to use Unix style slashes. +On Windows, this converts "C:\foo\bar\baz.txt" to "C:/foo/bar/baz.txt". +On Mac, this does nothing, since Mac paths are already in Unix syntax. +(Note that this does not add an initial forward-slash. Internally, our +APIs generally use the "C:/foo/bar/baz.txt" style for "native" paths.)

+

Kind: global function
+Returns: string - A Unix-style path.

+
ParamTypeDescription
pathstringA native-style path.
+ +

stripTrailingSlash(path) ⇒ string

+

Removes the trailing slash from a path or URL, if it has one. +Warning: this differs from the format of most paths used in Brackets! Use paths ending in "/" +normally, as this is the format used by Directory.fullPath.

+

Kind: global function

+
ParamTypeDescription
pathstringor URL
+ +

getBaseName(fullPath) ⇒ string

+

Get the name of a file or a directory, removing any preceding path.

+

Kind: global function
+Returns: string - Returns the base name of a file or the name of a +directory

+
ParamTypeDescription
fullPathstringfull path to a file or directory
+ +

getNativeBracketsDirectoryPath() ⇒ string

+

Returns a native absolute path to the 'brackets' source directory. +Note that this only works when run in brackets/src/index.html, so it does +not work for unit tests (which is run from brackets/test/SpecRunner.html)

+

WARNING: unlike most paths in Brackets, this path EXCLUDES the trailing "/".

+

Kind: global function

+ +

getNativeModuleDirectoryPath() ⇒ string

+

Given the module object passed to JS module define function, +convert the path to a native absolute path. +Returns a native absolute path to the module folder.

+

WARNING: unlike most paths in Brackets, this path EXCLUDES the trailing "/".

+

Kind: global function

+ +

getFileExtension(fullPath) ⇒ string

+

Get the file extension (excluding ".") given a path OR a bare filename. +Returns "" for names with no extension. If the name starts with ".", the +full remaining text is considered the extension.

+

Kind: global function
+Returns: string - Returns the extension of a filename or empty string if +the argument is a directory or a filename with no extension

+
ParamTypeDescription
fullPathstringfull path to a file or directory
+ +

getRelativeFilename(basePath, filename) ⇒ string

+

Computes filename as relative to the basePath. For example: +basePath: /foo/bar/, filename: /foo/bar/baz.txt +returns: baz.txt

+

The net effect is that the common prefix is stripped away. If basePath is not +a prefix of filename, then undefined is returned.

+

Kind: global function
+Returns: string - relative path

+
ParamTypeDescription
basePathstringPath against which we're computing the relative path
filenamestringFull path to the file for which we are computing a relative path
+ +

isStaticHtmlFileExt(filePath) ⇒ boolean

+

Determine if file extension is a static html file extension.

+

Kind: global function
+Returns: boolean - Returns true if fileExt is in the list

+
ParamTypeDescription
filePathstringcould be a path, a file name or just a file extension
+ +

getDirectoryPath(fullPath) ⇒ string

+

Get the parent directory of a file. If a directory is passed, the SAME directory is returned.

+

Kind: global function
+Returns: string - Returns the path to the parent directory of a file or the path of a directory, +including trailing "/"

+
ParamTypeDescription
fullPathstringfull path to a file or directory
+ +

getParentPath(fullPath) ⇒ string

+

Get the parent folder of the given file/folder path. Differs from getDirectoryPath() when 'fullPath' +is a directory itself: returns its parent instead of the original path. (Note: if you already have a +FileSystemEntry, it's faster to use entry.parentPath instead).

+

Kind: global function
+Returns: string - Path of containing folder (including trailing "/"); or "" if path was the root

+
ParamTypeDescription
fullPathstringfull path to a file or directory
+ +

getFilenameWithoutExtension(filename) ⇒ string

+

Get the file name without the extension. Returns "" if name starts with "."

+

Kind: global function
+Returns: string - Returns the file name without the extension

+
ParamTypeDescription
filenamestringFile name of a file or directory, without preceding path
+ +

compareFilenames(filename1, filename2, extFirst) ⇒ number

+

Compares 2 filenames in lowercases. In Windows it compares the names without the +extension first and then the extensions to fix issue #4409

+

Kind: global function
+Returns: number - The result of the compare function

+
ParamTypeDescription
filename1string
filename2string
extFirstbooleanIf true it compares the extensions first and then the file names.
+ +

comparePaths(path1, path2) ⇒ number

+

Compares two paths segment-by-segment, used for sorting. When two files share a path prefix, +the less deeply nested one is sorted earlier in the list. Sorts files within the same parent +folder based on compareFilenames().

+

Kind: global function
+Returns: number - -1, 0, or 1 depending on whether path1 is less than, equal to, or greater than +path2 according to this ordering.

+
ParamType
path1string
path2string
+ +

encodeFilePath(path) ⇒ string

+

Kind: global function
+Returns: string - URI-encoded version suitable for appending to 'file:///`. It's not safe to use encodeURI() +directly since it doesn't escape chars like "#".

+
ParamTypeDescription
pathstringNative path in the format used by FileSystemEntry.fullPath
+ +

shouldOpenInExternalApplication(ext) ⇒ string

+

Kind: global function
+Returns: string - returns true If file to be opened in External Application.

+
ParamTypeDescription
extstringextension string a file
+ +

addExtensionToExternalAppList(ext)

+

Kind: global function

+
ParamTypeDescription
extstringFile Extensions to be added in External App List
+ + \ No newline at end of file diff --git a/api/API-Reference/file/FileUtils/index.html b/api/API-Reference/file/FileUtils/index.html new file mode 100644 index 00000000..f8134f5c --- /dev/null +++ b/api/API-Reference/file/FileUtils/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/filesystem.html b/api/API-Reference/filesystem.html new file mode 100644 index 00000000..566eacff --- /dev/null +++ b/api/API-Reference/filesystem.html @@ -0,0 +1,121 @@ + + + + + +FileSystem | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

FileSystem

Import :

+
const FileSystem = brackets.getModule("filesystem/FileSystem")
+ +

Directory

+

FileSystem is a model object representing a complete file system. This object creates +and manages File and Directory instances, dispatches events when the file system changes, +and provides methods for showing 'open' and 'save' dialogs.

+

FileSystem automatically initializes when loaded. It depends on a pluggable "impl" layer, which +it loads itself but must be designated in the require.config() that loads FileSystem. For details +see: https://github.com/adobe/brackets/wiki/File-System-Implementations

+

There are three ways to get File or Directory instances:

+
    +
  • Use FileSystem.resolve() to convert a path to a File/Directory object. This will only +succeed if the file/directory already exists.
  • +
  • Use FileSystem.getFileForPath()/FileSystem.getDirectoryForPath() if you know the +file/directory already exists, or if you want to create a new entry.
  • +
  • Use Directory.getContents() to return all entries for the specified Directory.
  • +
+

All paths passed to FileSystem APIs must be in the following format:

+
    +
  • The path separator is "/" regardless of platform
  • +
  • Paths begin with "/" on Mac/Linux and "c:/" (or some other drive letter) on Windows
  • +
+

All paths returned from FileSystem APIs additionally meet the following guarantees:

+
    +
  • No ".." segments
  • +
  • No consecutive "/"s
  • +
  • Paths to a directory always end with a trailing "/" +(Because FileSystem normalizes paths automatically, paths passed to FileSystem do not need +to meet these requirements)
  • +
+

FileSystem dispatches the following events: +(NOTE: attach to these events via FileSystem.on() - not $(FileSystem).on())

+

change - Sent whenever there is a change in the file system. The handler +is passed up to three arguments: the changed entry and, if that changed entry +is a Directory, a list of entries added to the directory and a list of entries +removed from the Directory. The entry argument can be:

+
    +
  • a File - the contents of the file have changed, and should be reloaded.
  • +
  • a Directory - an immediate child of the directory has been added, removed, +or renamed/moved. Not triggered for "grandchildren". +
      +
    • If the added & removed arguments are null, we don't know what was added/removed: +clients should assume the whole subtree may have changed.
    • +
    • If the added & removed arguments are 0-length, there's no net change in the set +of files but a file may have been replaced: clients should assume the contents +of any immediate child file may have changed.
    • +
    +
  • +
  • null - a 'wholesale' change happened, and you should assume everything may +have changed. +For changes made externally, there may be a significant delay before a "change" event +is dispatched.
  • +
+

rename - Sent whenever a File or Directory is renamed. All affected File and Directory +objects have been updated to reflect the new path by the time this event is dispatched. +This event should be used to trigger any UI updates that may need to occur when a path +has changed. Note that these events will only be sent for rename operations that happen +within the filesystem. If a file is renamed externally, a change event on the parent +directory will be sent instead.

+

FileSystem may perform caching. But it guarantees:

+
    +
  • File contents & metadata - reads are guaranteed to be up to date (cached data is not used +without first veryifying it is up to date).
  • +
  • Directory structure / file listing - reads may return cached data immediately, which may not +reflect external changes made recently. (However, changes made via FileSystem itself are always +reflected immediately, as soon as the change operation's callback signals success).
  • +
+

The FileSystem doesn't directly read or write contents--this work is done by a low-level +implementation object. This allows client code to use the FileSystem API without having to +worry about the underlying storage, which could be a local filesystem or a remote server.

+

Kind: global constant

+ +

registerProtocolAdapter(protocol, ...adapter)

+

FileSystem hook to register file protocol adapter

+

Kind: global function

+
ParamTypeDescription
protocolstringex: "https:"
...adapterAdapterwrapper over file implementation
+ +

on(event, handler)

+

Add an event listener for a FileSystem event.

+

Kind: global function

+
ParamTypeDescription
eventstringThe name of the event
handlerfunctionThe handler for the event
+ +

off(event, handler)

+

Remove an event listener for a FileSystem event.

+

Kind: global function

+
ParamTypeDescription
eventstringThe name of the event
handlerfunctionThe handler for the event
+ + \ No newline at end of file diff --git a/api/API-Reference/filesystem/Directory.html b/api/API-Reference/filesystem/Directory.html new file mode 100644 index 00000000..19a4c13c --- /dev/null +++ b/api/API-Reference/filesystem/Directory.html @@ -0,0 +1,105 @@ + + + + + +Directory | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

Directory

Import :

+
const Directory = brackets.getModule("filesystem/Directory")
+ +

Directory

+

Kind: global class

+ + +

new Directory(fullPath, fileSystem)

+

Model for a file system Directory.

+

This class should not be instantiated directly. Use FileSystem.getDirectoryForPath, +FileSystem.resolve, or Directory.getContents to create an instance of this class.

+

Note: Directory.fullPath always has a trailing slash.

+

See the FileSystem class for more details.

+
ParamTypeDescription
fullPathstringThe full path for this Directory.
fileSystemFileSystemThe file system associated with this Directory.
+ +

directory.isEmptyAsync() ⇒ Promise.<boolean>

+

Returns true if is a directory exists and is empty.

+

Kind: instance method of Directory
+Returns: Promise.<boolean> - True if directory is empty and it exists, else false.

+ +

directory.unlinkEmptyDirectoryAsync() ⇒ Promise.<void>

+

Recursively deletes all empty subdirectories within the current directory. If all subdirectories are empty, +the current directory itself will be deleted. +A directory is considered empty if it doesn't contain any files in its subtree.

+

If a subtree contains a large number of nested subdirectories and no files, the whole tree will be deleted. +Only branches that contain a file will be retained.

+

Kind: instance method of Directory
+Returns: Promise.<void> - A Promise that resolves when the operation is finished
+Throws:

+
    +
  • FileSystemError If an error occurs while accessing the filesystem
  • +
+

Example

+
await dir.unlinkEmptyDirectoryAsync();
+ +

directory.getContentsAsync(filterNothing) ⇒ Object

+

Read the contents of a Directory, returns a promise. It filters out all files +that are not shown in the file tree by default, unless the filterNothing option is specified.

+

Kind: instance method of Directory
+Returns: Object - An object +with attributes - entries(an array of file system entries), contentStats and contentsStatsErrors(a map from +content name to error if there is any).

+
ParamTypeDescription
filterNothingbooleanis specified, will return a true contents of dir as shown in disc, weather it is shown in the file tree or not. Can be used for backup/restore flows.
+ +

directory.getContents(callback, filterNothing)

+

Read the contents of a Directory. It filters out all files +that are not shown in the file tree by default, unless the filterNothing option is specified.

+

Kind: instance method of Directory

+
ParamTypeDescription
callbackfunctionCallback that is passed an error code or the stat-able contents of the directory along with the stats for these entries and a fullPath-to-FileSystemError string map of unstat-able entries and their stat errors. If there are no stat errors then the last parameter shall remain undefined.
filterNothingbooleanis specified, will return a true contents of dir as shown in disc, weather it is shown in the file tree or not. Can be used for backup/restore flows.
+ +

directory.createAsync() ⇒ Promise.<FileSystemStats>

+

Create a directory and returns a promise that will resolve to a stat

+

Kind: instance method of Directory
+Returns: Promise.<FileSystemStats> - resolves to the stats of the newly created dir.

+ +

directory.create([callback])

+

Create a directory

+

Kind: instance method of Directory

+
ParamTypeDescription
[callback]functionCallback resolved with a FileSystemError string or the stat object for the created directory.
+ + \ No newline at end of file diff --git a/api/API-Reference/filesystem/Directory/index.html b/api/API-Reference/filesystem/Directory/index.html new file mode 100644 index 00000000..e292a230 --- /dev/null +++ b/api/API-Reference/filesystem/Directory/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/filesystem/File.html b/api/API-Reference/filesystem/File.html new file mode 100644 index 00000000..99363f6e --- /dev/null +++ b/api/API-Reference/filesystem/File.html @@ -0,0 +1,65 @@ + + + + + +File | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

File

Import :

+
const File = brackets.getModule("filesystem/File")
+ +

File

+

Kind: global class

+ + +

new File(fullPath, fileSystem)

+

Model for a File.

+

This class should not be instantiated directly. Use FileSystem.getFileForPath, +FileSystem.resolve, or Directory.getContents to create an instance of this class.

+

See the FileSystem class for more details.

+
ParamTypeDescription
fullPathstringThe full path for this File.
fileSystemFileSystemThe file system associated with this File.
+ +

file.read(options, callback)

+

Read a file.

+

Kind: instance method of File

+
ParamTypeDescription
optionsObject
[options.encoding]string'one of format supported here: https://developer.mozilla.org/en-US/docs/Web/API/TextDecoder/encoding'
[options.ignoreFileSizeLimits]booleanby default max file size that can be read is 16MB.
[options.doNotCache]booleanwill not cache if enabled. Auto-enabled if ignoreFileSizeLimits = true
callbackfunctionCallback that is passed the FileSystemError string or the file's contents and its stats.
+ +

file.write(data, [options], [callback])

+

Write a file.

+

Kind: instance method of File

+
ParamTypeDescription
datastringData to write.
[options]Objectproperties {encoding: 'one of format supported here: https://developer.mozilla.org/en-US/docs/Web/API/TextDecoder/encoding'}
[callback]functionCallback that is passed the FileSystemError string or the file's new stats.
+ + \ No newline at end of file diff --git a/api/API-Reference/filesystem/File/index.html b/api/API-Reference/filesystem/File/index.html new file mode 100644 index 00000000..c7b1616c --- /dev/null +++ b/api/API-Reference/filesystem/File/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/filesystem/FileIndex.html b/api/API-Reference/filesystem/FileIndex.html new file mode 100644 index 00000000..9fe5a67c --- /dev/null +++ b/api/API-Reference/filesystem/FileIndex.html @@ -0,0 +1,94 @@ + + + + + +FileIndex | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

FileIndex

Import :

+
const FileIndex = brackets.getModule("filesystem/FileIndex")
+ +

FileIndex

+

Kind: global class

+ + +

fileIndex.clear()

+

Clear the file index cache.

+

Kind: instance method of FileIndex

+ +

fileIndex.doNotRemoveFromIndex()

+

Will prevent the file from being removed from index. However, it is reset when index is cleared.

+

Kind: instance method of FileIndex

+ +

fileIndex.visitAll(Called)

+

Visits every entry in the entire index; no stopping condition.

+

Kind: instance method of FileIndex

+
ParamTypeDescription
Calledfunctionwith an entry and its fullPath
+ +

fileIndex.addEntry(entry)

+

Add an entry.

+

Kind: instance method of FileIndex

+
ParamTypeDescription
entryFileSystemEntryThe entry to add.
+ +

fileIndex.removeEntry(entry)

+

Remove an entry.

+

Kind: instance method of FileIndex

+
ParamTypeDescription
entryFileSystemEntryThe entry to remove.
+ +

fileIndex.entryRenamed(oldPath, newPath, isDirectory)

+

Notify the index that an entry has been renamed. This updates +all affected entries in the index.

+

Kind: instance method of FileIndex

+
ParamType
oldPathstring
newPathstring
isDirectoryboolean
+ +

fileIndex.getEntry(path) ⇒ File | Directory

+

Returns the cached entry for the specified path, or undefined +if the path has not been cached.

+

Kind: instance method of FileIndex
+Returns: File | Directory - The entry for the path, or undefined if it hasn't +been cached yet.

+
ParamTypeDescription
pathstringThe path of the entry to return.
+ +

FileUtils

+

FileIndex is an internal module used by FileSystem to maintain an index of all files and directories.

+

This module is only used by FileSystem, and should not be called directly.

+

Kind: global variable

+ + \ No newline at end of file diff --git a/api/API-Reference/filesystem/FileIndex/index.html b/api/API-Reference/filesystem/FileIndex/index.html new file mode 100644 index 00000000..b38ee2ec --- /dev/null +++ b/api/API-Reference/filesystem/FileIndex/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/filesystem/FileSystemEntry.html b/api/API-Reference/filesystem/FileSystemEntry.html new file mode 100644 index 00000000..04722de6 --- /dev/null +++ b/api/API-Reference/filesystem/FileSystemEntry.html @@ -0,0 +1,124 @@ + + + + + +FileSystemEntry | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

FileSystemEntry

Import :

+
const FileSystemEntry = brackets.getModule("filesystem/FileSystemEntry")
+ +

FileSystemEntry

+

Kind: global class

+ + +

new FileSystemEntry(path, fileSystem)

+

Model for a file system entry. This is the base class for File and Directory, +and is never used directly.

+

See the File, Directory, and FileSystem classes for more details.

+
ParamTypeDescription
pathstringThe path for this entry.
fileSystemFileSystemThe file system associated with this entry.
+ +

fileSystemEntry.toString()

+

Helpful toString for debugging purposes

+

Kind: instance method of FileSystemEntry

+ +

fileSystemEntry.exists(callback)

+

Check to see if the entry exists on disk. Note that there will NOT be an +error returned if the file does not exist on the disk; in that case the +error parameter will be null and the boolean will be false. The error +parameter will only be truthy when an unexpected error was encountered +during the test, in which case the state of the entry should be considered +unknown.

+

Kind: instance method of FileSystemEntry

+
ParamTypeDescription
callbackfunctionCallback with a FileSystemError string or a boolean indicating whether or not the file exists.
+ +

fileSystemEntry.existsAsync()

+

Async version of exists API. Returns true or false if the entry exists. or error rejects.

+

Kind: instance method of FileSystemEntry

+ +

fileSystemEntry.stat(callback)

+

Returns the stats for the entry.

+

Kind: instance method of FileSystemEntry

+
ParamTypeDescription
callbackfunctionCallback with a FileSystemError string or FileSystemStats object.
+ +

fileSystemEntry.statAsync() ⇒ Promise.<FileSystemStats>

+

Returns a promise that resolves to the stats for the entry.

+

Kind: instance method of FileSystemEntry

+ +

fileSystemEntry.rename(newFullPath, [callback])

+

Rename this entry.

+

Kind: instance method of FileSystemEntry

+
ParamTypeDescription
newFullPathstringNew path & name for this entry.
[callback]functionCallback with a single FileSystemError string parameter.
+ +

fileSystemEntry.unlinkAsync() ⇒ Promise.<void>

+

Permanently deletes this entry. For directories, this will delete the directory +and all of its contents. For a reversible delete, see moveToTrash().

+

Kind: instance method of FileSystemEntry
+Returns: Promise.<void> - A promise that resolves when the delete is successful or rejects with an error.

+ +

fileSystemEntry.unlink([callback])

+

Permanently delete this entry. For Directories, this will delete the directory +and all of its contents. For reversible delete, see moveToTrash().

+

Kind: instance method of FileSystemEntry

+
ParamTypeDescription
[callback]functionCallback with a single FileSystemError string parameter.
+ +

fileSystemEntry.moveToTrash([callback])

+

Move this entry to the trash. If the underlying file system doesn't support move +to trash, the item is permanently deleted.

+

Kind: instance method of FileSystemEntry

+
ParamTypeDescription
[callback]functionCallback with a single FileSystemError string parameter.
+ +

fileSystemEntry.visit(visitor, [options], [callback])

+

Visit this entry and its descendents with the supplied visitor function. +Correctly handles symbolic link cycles and options can be provided to limit +search depth and total number of entries visited. No particular traversal +order is guaranteed; instead of relying on such an order, it is preferable +to use the visit function to build a list of visited entries, sort those +entries as desired, and then process them. Whenever possible, deep +filesystem traversals should use this method. Will not visit all files/dirs +that are not shown in the file tree by default, unless the visitHiddenTree option is specified.

+

Kind: instance method of FileSystemEntry

+
ParamTypeDescription
visitorfunctionA visitor function (can be async), which is applied to this entry and all descendent FileSystemEntry objects. It can have two args, the first one is the entry being visited, the second is an array of sibling entries that share the same parent dir as the given entry. If the function returns false (or promise that resolved to false)for a particular Directory entry, that directory's descendents will not be visited.
[options]Object
[callback]functionCallback with single FileSystemError string parameter.
+ + \ No newline at end of file diff --git a/api/API-Reference/filesystem/FileSystemEntry/index.html b/api/API-Reference/filesystem/FileSystemEntry/index.html new file mode 100644 index 00000000..39013c28 --- /dev/null +++ b/api/API-Reference/filesystem/FileSystemEntry/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/filesystem/FileSystemError.html b/api/API-Reference/filesystem/FileSystemError.html new file mode 100644 index 00000000..eda00842 --- /dev/null +++ b/api/API-Reference/filesystem/FileSystemError.html @@ -0,0 +1,43 @@ + + + + + +FileSystemError | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

FileSystemError

Import :

+
const FileSystemError = brackets.getModule("filesystem/FileSystemError")
+ +

FileSystemError

+

FileSystemError describes the errors that can occur when using the FileSystem, File, +and Directory modules.

+

Error values are strings. Any "falsy" value: null, undefined or "" means "no error".

+

Enumerated File System Errors

+
        UNKNOWN: "Unknown",
INVALID_PARAMS: "InvalidParams",
NOT_FOUND: "NotFound",
NOT_READABLE: "NotReadable",
UNSUPPORTED_ENCODING: "UnsupportedEncoding",
NOT_SUPPORTED: "NotSupported",
NOT_WRITABLE: "NotWritable",
OUT_OF_SPACE: "OutOfSpace",
TOO_MANY_ENTRIES: "TooManyEntries",
ALREADY_EXISTS: "AlreadyExists",
CONTENTS_MODIFIED: "ContentsModified",
ROOT_NOT_WATCHED: "RootNotBeingWatched",
EXCEEDS_MAX_FILE_SIZE: "ExceedsMaxFileSize",
NETWORK_DRIVE_NOT_SUPPORTED: "NetworkDriveNotSupported",
ENCODE_FILE_FAILED: "EncodeFileFailed",
DECODE_FILE_FAILED: "DecodeFileFailed",
UNSUPPORTED_UTF16_ENCODING: "UnsupportedUTF16Encoding"
+ + \ No newline at end of file diff --git a/api/API-Reference/filesystem/FileSystemError/index.html b/api/API-Reference/filesystem/FileSystemError/index.html new file mode 100644 index 00000000..f77f1452 --- /dev/null +++ b/api/API-Reference/filesystem/FileSystemError/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/filesystem/FileSystemStats.html b/api/API-Reference/filesystem/FileSystemStats.html new file mode 100644 index 00000000..d2f3cc69 --- /dev/null +++ b/api/API-Reference/filesystem/FileSystemStats.html @@ -0,0 +1,64 @@ + + + + + +FileSystemStats | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

FileSystemStats

Import :

+
const FileSystemStats = brackets.getModule("filesystem/FileSystemStats")
+ +

FileSystemStats

+

Kind: global class

+ +

new FileSystemStats(options)

+

The FileSystemStats represents a particular FileSystemEntry's stats.

+
ParamType
optionsObject
+ +

isFile : boolean

+

Whether or not this is a stats object for a file

+

Kind: global variable

+ +

isDirectory : boolean

+

Whether or not this is a stats object for a directory

+

Kind: global variable

+ +

mtime : Date

+

Modification time for a file

+

Kind: global variable

+ +

size : Number

+

Size in bytes of a file

+

Kind: global variable

+ +

realPath : string

+

The canonical path of this file or directory ONLY if it is a symbolic link, +and null otherwise.

+

Kind: global variable

+ + \ No newline at end of file diff --git a/api/API-Reference/filesystem/FileSystemStats/index.html b/api/API-Reference/filesystem/FileSystemStats/index.html new file mode 100644 index 00000000..a2f207af --- /dev/null +++ b/api/API-Reference/filesystem/FileSystemStats/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/filesystem/RemoteFile.html b/api/API-Reference/filesystem/RemoteFile.html new file mode 100644 index 00000000..c3f46430 --- /dev/null +++ b/api/API-Reference/filesystem/RemoteFile.html @@ -0,0 +1,99 @@ + + + + + +RemoteFile | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

RemoteFile

Import :

+
const RemoteFile = brackets.getModule("filesystem/RemoteFile")
+ +

RemoteFile

+

Kind: global class

+ + +

new RemoteFile(fullPath, fileSystem)

+

Model for a RemoteFile.

+

This class should not be instantiated directly. Use FileSystem.getFileForPath

+

See the FileSystem class for more details.

+
ParamTypeDescription
fullPathstringThe full path for this File.
fileSystemFileSystemThe file system associated with this File.
+ +

remoteFile.toString()

+

Helpful toString for debugging and equality check purposes

+

Kind: instance method of RemoteFile

+ +

remoteFile.stat(callback)

+

Returns the stats for the remote entry.

+

Kind: instance method of RemoteFile

+
ParamTypeDescription
callbackfunctionCallback with a FileSystemError string or FileSystemStats object.
+ +

remoteFile.read([options], callback)

+

Reads a remote file.

+

Kind: instance method of RemoteFile

+
ParamTypeDescription
[options]ObjectCurrently unused.
callbackfunctionCallback that is passed the FileSystemError string or the file's contents and its stats.
+ +

remoteFile.write(data, [options], [callback])

+

Write a file.

+

Kind: instance method of RemoteFile

+
ParamTypeDescription
datastringData to write.
[options]objectCurrently unused.
[callback]functionCallback that is passed the FileSystemError string or the file's new stats.
+ +

remoteFile.exists(callback)

+

Check if the remote file exists or not

+

Kind: instance method of RemoteFile

+
ParamType
callbackfunction
+ +

remoteFile.unlink(callback)

+

Unlink the remote file

+

Kind: instance method of RemoteFile

+
ParamType
callbackfunction
+ +

remoteFile.rename(callback)

+

Rename the remote file

+

Kind: instance method of RemoteFile

+
ParamType
callbackfunction
+ +

remoteFile.moveToTrash(callback)

+

Move the remote file to trash

+

Kind: instance method of RemoteFile

+
ParamType
callbackfunction
+ + \ No newline at end of file diff --git a/api/API-Reference/filesystem/RemoteFile/index.html b/api/API-Reference/filesystem/RemoteFile/index.html new file mode 100644 index 00000000..ce9d6e46 --- /dev/null +++ b/api/API-Reference/filesystem/RemoteFile/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/filesystem/WatchedRoot.html b/api/API-Reference/filesystem/WatchedRoot.html new file mode 100644 index 00000000..296df183 --- /dev/null +++ b/api/API-Reference/filesystem/WatchedRoot.html @@ -0,0 +1,95 @@ + + + + + +WatchedRoot | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

WatchedRoot

Import :

+
const WatchedRoot = brackets.getModule("filesystem/WatchedRoot")
+ +

WatchedRoot

+

Kind: global class

+ + +

new WatchedRoot(entry, filter, filterGitIgnore)

+

Represents file or directory structure watched by the FileSystem. If the +entry is a directory, all children (that pass the supplied filter function) +are also watched. A WatchedRoot object begins and ends its life in the +INACTIVE state. While in the process of starting up watchers, the WatchedRoot +is in the STARTING state. When watchers are ready, the WatchedRoot enters +the ACTIVE state.

+

See the FileSystem class for more details.

+
ParamType
entryFile | Directory
filterfunction
filterGitIgnorestring | Array.<string>
+ +

watchedRoot.entry : File | Directory

+

Kind: instance property of WatchedRoot

+ +

watchedRoot.filter : function

+

Kind: instance property of WatchedRoot

+ +

watchedRoot.filterGitIgnore : string | Array.<string>

+

Kind: instance property of WatchedRoot

+ +

watchedRoot.status : number

+

Kind: instance property of WatchedRoot

+ +

WatchedRoot.INACTIVE : number

+

WatchedRoot inactive

+

Kind: static constant of WatchedRoot

+ +

WatchedRoot.STARTING : number

+

WatchedRoot starting

+

Kind: static constant of WatchedRoot

+ +

WatchedRoot.ACTIVE : number

+

WatchedRoot active

+

Kind: static constant of WatchedRoot

+ + \ No newline at end of file diff --git a/api/API-Reference/filesystem/WatchedRoot/index.html b/api/API-Reference/filesystem/WatchedRoot/index.html new file mode 100644 index 00000000..d53bc013 --- /dev/null +++ b/api/API-Reference/filesystem/WatchedRoot/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/filesystem/index.html b/api/API-Reference/filesystem/index.html new file mode 100644 index 00000000..52b38b3f --- /dev/null +++ b/api/API-Reference/filesystem/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/language/CSSUtils.html b/api/API-Reference/language/CSSUtils.html new file mode 100644 index 00000000..6ac50561 --- /dev/null +++ b/api/API-Reference/language/CSSUtils.html @@ -0,0 +1,178 @@ + + + + + +CSSUtils | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

CSSUtils

Import :

+
const CSSUtils = brackets.getModule("language/CSSUtils")
+ +

CodeMirror

+

Set of utilities for simple parsing of CSS text.

+

Kind: global variable

+ +

SELECTOR : string

+

CSS selector, used to target specific elements

+

Kind: global constant

+ +

PROP_NAME : string

+

name of the property

+

Kind: global constant

+ +

PROP_VALUE : string

+

value of the specified property

+

Kind: global constant

+ +

IMPORT_URL : string

+

url for import

+

Kind: global constant

+ +

isCSSPreprocessorFile(filePath) ⇒ boolean

+

Determines if the given path is a CSS preprocessor file that CSSUtils supports.

+

Kind: global function
+Returns: boolean - true if LanguageManager identifies filePath as less or scss language.

+
ParamTypeDescription
filePathstringAbsolute path to the file.
+ +

getInfoAtPos(editor, constPos) ⇒ Object

+

Returns a context info object for the given cursor position

+

Kind: global function
+Returns: Object - A CSS context info object.

+
ParamTypeDescription
editorEditor
constPosObjectA CM pos (likely from editor.getCursorPos())
+ +

getInfoAtPos._contextCM

+

We will use this CM to cook css context in case of style attribute value +as CM in htmlmixed mode doesn't yet identify this as css context. We provide +a no-op display function to run CM without a DOM head.

+

Kind: inner property of getInfoAtPos

+ +

getCompleteSelectors(info, [useGroup]) ⇒ string

+

Return a string that shows the literal parent hierarchy of the selector +in info.

+

Kind: global function
+Returns: string - the literal parent hierarchy of the selector

+
ParamTypeDescription
infoSelectorInfo
[useGroup]booleantrue to append selectorGroup instead of selector
+ +

extractAllSelectors(text, documentMode) ⇒ Array.<SelectorInfo>

+

Extracts all CSS selectors from the given text +Returns an array of SelectorInfo. Each SelectorInfo is an object with the following properties: +selector: the text of the selector (note: comma separated selector groups like +"h1, h2" are broken into separate selectors) +ruleStartLine: line in the text where the rule (including preceding comment) appears +ruleStartChar: column in the line where the rule (including preceding comment) starts +selectorStartLine: line in the text where the selector appears +selectorStartChar: column in the line where the selector starts +selectorEndLine: line where the selector ends +selectorEndChar: column where the selector ends +selectorGroupStartLine: line where the comma-separated selector group (e.g. .foo, .bar, .baz) +starts that this selector (e.g. .baz) is part of. Particularly relevant for +groups that are on multiple lines. +selectorGroupStartChar: column in line where the selector group starts. +selectorGroup: the entire selector group containing this selector, or undefined if there +is only one selector in the rule. +declListStartLine: line where the declaration list for the rule starts +declListStartChar: column in line where the declaration list for the rule starts +declListEndLine: line where the declaration list for the rule ends +declListEndChar: column in the line where the declaration list for the rule ends +level: the level of the current selector including any containing @media block in the +nesting level count. Use this property with caution since it is primarily for internal +parsing use. For example, two sibling selectors may have different levels if one +of them is nested inside an @media block and it should not be used for sibling info. +parentSelectors: all ancestor selectors separated with '/' if the current selector is a nested one

+

Kind: global function
+Returns: Array.<SelectorInfo> - Array with objects specifying selectors.

+
ParamTypeDescription
textstringCSS text to extract from
documentModestringlanguage mode of the document that text belongs to, default to css if undefined.
+ +

findMatchingRules(selector, htmlDocument) ⇒ $.Promise

+

Return all rules matching the specified selector. +For now, we only look at the rightmost simple selector. For example, searching for ".foo" will +match these rules: +.foo +div .foo +div.foo +div .foo[bar="42"] +div .foo:hovered +div .foo::first-child +but will not match these rules: +.foobar +.foo .bar +div .foo .bar +.foo.bar

+

Kind: global function
+Returns: $.Promise - that will be resolved with an Array of objects containing the +source document, start line, and end line (0-based, inclusive range) for each matching declaration list. +Does not addRef() the documents returned in the array.

+
ParamTypeDescription
selectorstringThe selector to match. This can be a tag selector, class selector or id selector
htmlDocumentDocumentAn HTML file for context (so we can search 'style' blocks)
+ +

findSelectorAtDocumentPos(editor, pos) ⇒ string

+

Returns the selector(s) of the rule at the specified document pos, or "" if the position is +is not within a style rule.

+

Kind: global function
+Returns: string - Selector(s) for the rule at the specified position, or "" if the position +is not within a style rule. If the rule has multiple selectors, a comma-separated +selector string is returned.

+
ParamTypeDescription
editorEditorEditor to search
posObjectPosition to search
+ +

reduceStyleSheetForRegExParsing(content) ⇒ string

+

Reduces the style sheet by removing comments and strings +so that the content can be parsed using a regular expression

+

Kind: global function
+Returns: string - reduced content

+
ParamTypeDescription
contentstringto reduce
+ +

addRuleToDocument(doc, selector, useTabChar, indentUnit) ⇒ Object

+

Adds a new rule to the end of the given document, and returns the range of the added rule +and the position of the cursor on the indented blank line within it. Note that the range will +not include all the inserted text (we insert extra newlines before and after the rule).

+

Kind: global function
+Returns: Object - The range of the inserted rule and the location where the cursor should be placed.

+
ParamTypeDescription
docDocumentThe document to insert the rule into.
selectorstringThe selector to use for the given rule.
useTabCharbooleanWhether to indent with a tab.
indentUnitnumberIf useTabChar is false, how many spaces to indent with.
+ +

consolidateRules()

+

In the given rule array (as returned by findMatchingRules()), if multiple rules in a row +refer to the same rule (because there were multiple matching selectors), eliminate the redundant +rules. Also, always use the selector group if available instead of the original matching selector.

+

Kind: global function

+ +

getRangeSelectors(range) ⇒ string

+

Given a TextRange, extracts the selector(s) for the rule in the range and returns it. +Assumes the range only contains one rule; if there's more than one, it will return the +selector(s) for the first rule.

+

Kind: global function
+Returns: string - The selector(s) for the rule in the range.

+
ParamTypeDescription
rangeTextRangeThe range to extract the selector(s) from.
+ +

getAllCssSelectorsInProject(options)

+

Responsible to get all the CSS selectors in project

+

Kind: global function

+
ParamType
optionsObject
+ +

SelectorInfo : Object

+

Kind: global typedef

+ + \ No newline at end of file diff --git a/api/API-Reference/language/CSSUtils/index.html b/api/API-Reference/language/CSSUtils/index.html new file mode 100644 index 00000000..6031cd29 --- /dev/null +++ b/api/API-Reference/language/CSSUtils/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/language/CodeInspection.html b/api/API-Reference/language/CodeInspection.html new file mode 100644 index 00000000..4bbda0be --- /dev/null +++ b/api/API-Reference/language/CodeInspection.html @@ -0,0 +1,141 @@ + + + + + +CodeInspection | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

CodeInspection

Import :

+
const CodeInspection = brackets.getModule("language/CodeInspection")
+ +

_

+

Manages linters and other code inspections on a per-language basis. Provides a UI and status indicator for +the resulting errors/warnings.

+

Currently, inspection providers are only invoked on the current file and only when it is opened, switched to, +or saved. But in the future, inspectors may be invoked as part of a global scan, at intervals while typing, etc. +Currently, results are only displayed in a bottom panel list and in a status bar icon. But in the future, +results may also be displayed inline in the editor (as gutter markers, etc.). +In the future, support may also be added for error/warning providers that cannot process a single file at a time +(e.g. a full-project compiler).

+

Kind: global constant

+ +

CODE_INSPECTION_GUTTER : string

+

Code inspection gutter

+

Kind: global constant

+ +

Type

+

Values for problem's 'type' property

+

Kind: global constant

+ + +

Type.ERROR

+

Unambiguous error, such as a syntax error

+

Kind: static property of Type

+ +

Type.WARNING

+

Maintainability issue, probable error / bad smell, etc.

+

Kind: static property of Type

+ +

Type.META

+

Inspector unable to continue, code too complex for static analysis, etc. Not counted in err/warn tally.

+

Kind: static property of Type

+ +

getProvidersForPath(filePath) ⇒ Object

+

Returns a list of provider for given file path, if available. +Decision is made depending on the file extension.

+

Kind: global function

+
ParamType
filePathstring
+ +

getProviderIDsForLanguage(languageId) ⇒ Array.<string>

+

Returns an array of the IDs of providers registered for a specific language

+

Kind: global function
+Returns: Array.<string> - Names of registered providers.

+
ParamType
languageIdstring
+ +

inspectFile(file, providerList) ⇒ $.Promise

+

Runs a file inspection over passed file. Uses the given list of providers if specified, otherwise uses +the set of providers that are registered for the file's language. +This method doesn't update the Brackets UI, just provides inspection results. +These results will reflect any unsaved changes present in the file if currently open.

+

The Promise yields an array of provider-result pair objects (the result is the return value of the +provider's scanFile() - see register() for details). The result object may be null if there were no +errors from that provider. +If there are no providers registered for this file, the Promise yields null instead.

+

Kind: global function
+Returns: $.Promise - a jQuery promise that will be resolved with ?{provider:Object, result: ?{errors:!Array, aborted:boolean}}

+
ParamTypeDescription
fileFileFile that will be inspected for errors.
providerListObjectArray
+ +

scrollToProblem(lineNumber) ⇒ jQuery | null

+

Scrolls to the problem line

+

Kind: global function

+
ParamTypeDescription
lineNumbernumberThe line number to scroll to
+ +

run(providerName)

+

Run inspector applicable to current document. Updates status bar indicator and refreshes error list in +bottom panel. Does not run if inspection is disabled or if a providerName is given and does not +match the current doc's provider name.

+

Kind: global function

+
ParamTypeDescription
providerNamestringname of the provider that is requesting a run
+ +

toggleEnabled(enabled, doNotSave)

+

Enable or disable all inspection.

+

Kind: global function

+
ParamTypeDescription
enabledbooleanEnabled state. If omitted, the state is toggled.
doNotSavebooleantrue if the preference should not be saved to user settings. This is generally for events triggered by project-level settings.
+ +

Error : Object

+

Registers a provider for a specific language to inspect files and provide linting results.

+

The provider is passed the text of the file and its full path. Providers should not assume that +the file is open (i.e., DocumentManager.getOpenDocumentForPath() may return null) or that the +file on disk matches the text given (the file may have unsaved changes).

+

Registering any provider for the "javascript" language automatically unregisters the built-in +Brackets JSLint provider. This is a temporary convenience until a UI exists for disabling +registered providers.

+

Providers must implement canInspect(), scanFile(), or scanFileAsync(). If both scanFile() +and scanFileAsync() are implemented, scanFile() is ignored.

+
    +
  • canInspect(fullPath): A synchronous call to determine if the file can be scanned by this provider.
  • +
  • scanFile(text, fullPath): A synchronous function returning linting results or null.
  • +
  • scanFileAsync(text, fullPath): An asynchronous function returning a jQuery Promise resolved with +the same type of value as scanFile(). Rejecting the promise is treated as an internal error in the provider.
  • +
+

Each error object in the results should have the following structure:

+
             { pos:{line,ch},
endPos:?{line,ch},
message:string,
htmlMessage:string,
type:?Type ,
fix: { // an optional fix, if present will show the fix button
replace: "text to replace the offset given below",
rangeOffset: {
start: number,
end: number
}}}
+

Kind: global typedef

+
ParamTypeDescription
languageIdstringThe language ID for which the provider is registered.
providerObjectThe provider object.
provider.namestringThe name of the provider.
provider.scanFilefunctionSynchronous scan function.
provider.scanFileAsyncfunctionAsynchronous scan function returning a Promise.
+

Properties

+
NameTypeDescription
posObjectThe start position of the error.
pos.linenumberThe line number (0-based).
pos.chnumberThe character position within the line (0-based).
endPosObjectThe end position of the error.
endPos.linenumberThe end line number (0-based).
endPos.chnumberThe end character position within the line (0-based).
messagestringThe error message to be displayed as text.
htmlMessagestringThe error message to be displayed as HTML.
typeTypeThe type of the error. Defaults to Type.WARNING if unspecified.
fixObjectAn optional fix object.
fix.replacestringThe text to replace the error with.
fix.rangeOffsetObjectThe range within the text to replace.
fix.rangeOffset.startnumberThe start offset of the range.
fix.rangeOffset.endnumberThe end offset of the range. If no errors are found, return either null(treated as file is problem free) or an object with a zero-length errors array. Always use message to safely display the error as text. If you want to display HTML error message, then explicitly use htmlMessage to display it. Both message and htmlMessage can be used simultaneously. After scanning the file, if you need to omit the lint result, return or resolve with {isIgnored: true}. This prevents the file from being marked with a no errors tick mark in the status bar and excludes the linter from the problems panel.
+ + \ No newline at end of file diff --git a/api/API-Reference/language/CodeInspection/index.html b/api/API-Reference/language/CodeInspection/index.html new file mode 100644 index 00000000..6c64b025 --- /dev/null +++ b/api/API-Reference/language/CodeInspection/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/language/HTMLDOMDiff.html b/api/API-Reference/language/HTMLDOMDiff.html new file mode 100644 index 00000000..8b9fc0d1 --- /dev/null +++ b/api/API-Reference/language/HTMLDOMDiff.html @@ -0,0 +1,75 @@ + + + + + +HTMLDOMDiff | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

HTMLDOMDiff

Import :

+
const HTMLDOMDiff = brackets.getModule("language/HTMLDOMDiff")
+ +

domdiff(oldNode, newNode) ⇒ Array.<Object>

+

Generate a list of edits that will mutate oldNode to look like newNode. +Currently, there are the following possible edit operations:

+
    +
  • elementInsert
  • +
  • elementDelete
  • +
  • elementMove
  • +
  • textInsert
  • +
  • textDelete
  • +
  • textReplace
  • +
  • attrDelete
  • +
  • attrChange
  • +
  • attrAdd
  • +
  • rememberNodes (a special instruction that reflects the need to hang on to moved nodes)
  • +
+

Kind: global function
+Returns: Array.<Object> - - List of edit operations.

+
ParamTypeDescription
oldNodeObjectSimpleDOM node with the original content.
newNodeObjectSimpleDOM node with the new content.
+ + +

domdiff.queuePush()

+

Adds elements to the queue for generateChildEdits. +Only elements (and not text nodes) are added. New nodes (ones that aren't in the +old nodeMap), are not added here because they will be added when generateChildEdits +creates the elementInsert edit.

+

Kind: inner method of domdiff

+ +

domdiff.addEdits(delta)

+

Aggregates the child edits in the proper data structures.

+

Kind: inner method of domdiff

+
ParamTypeDescription
deltaObjectedits, moves and newElements to add
+ + \ No newline at end of file diff --git a/api/API-Reference/language/HTMLDOMDiff/index.html b/api/API-Reference/language/HTMLDOMDiff/index.html new file mode 100644 index 00000000..41d13bd0 --- /dev/null +++ b/api/API-Reference/language/HTMLDOMDiff/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/language/HTMLSimpleDOM.html b/api/API-Reference/language/HTMLSimpleDOM.html new file mode 100644 index 00000000..993ff6d1 --- /dev/null +++ b/api/API-Reference/language/HTMLSimpleDOM.html @@ -0,0 +1,127 @@ + + + + + +HTMLSimpleDOM | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

HTMLSimpleDOM

Import :

+
const HTMLSimpleDOM = brackets.getModule("language/HTMLSimpleDOM")
+ +

SimpleNode

+

Kind: global class

+ + +

new SimpleNode(properties)

+

A SimpleNode represents one node in a SimpleDOM tree. Each node can have +any set of properties on it, though there are a couple of assumptions made. +Elements will have children and attributes properties. Text nodes will have a content +property. All Elements will have a tagID and text nodes can have one.

+
ParamTypeDescription
propertiesObjectthe properties provided will be set on the new object.
+ +

simpleNode.update()

+

Updates signatures used to optimize the number of comparisons done during +diffing. This is important to call if you change:

+
    +
  • children
  • +
  • child node attributes
  • +
  • text content of a text node
  • +
  • child node text
  • +
+

Kind: instance method of SimpleNode

+ +

simpleNode.updateAttributeSignature()

+

Updates the signature of this node's attributes. Call this after making attribute changes.

+

Kind: instance method of SimpleNode

+ +

simpleNode.isElement() ⇒ bool

+

Is this node an element node?

+

Kind: instance method of SimpleNode
+Returns: bool - true if it is an element

+ +

simpleNode.isText() ⇒ bool

+

Is this node a text node?

+

Kind: instance method of SimpleNode
+Returns: bool - true if it is text

+ +

Builder

+

Kind: global class

+ + +

new Builder(text, startOffset, startOffsetPos)

+

A Builder creates a SimpleDOM tree of SimpleNode objects representing the +"important" contents of an HTML document. It does not include things like comments. +The nodes include information about their position in the text provided.

+
ParamTypeDescription
textstringThe text to parse
startOffsetintstarting offset in the text
startOffsetPosObjectline/ch position in the text
+ +

builder.getID ⇒ int

+

Returns the best tag ID for the new tag object given. +The default implementation just calls getNewID +and returns a unique ID.

+

Kind: instance property of Builder
+Returns: int - unique tag ID

+
ParamTypeDescription
newTagObjecttag object to potentially inspect to choose an ID
+ +

builder.build(strict, markCache) ⇒ SimpleNode

+

Builds the SimpleDOM.

+

Kind: instance method of Builder
+Returns: SimpleNode - root of tree or null if parsing failed

+
ParamTypeDescription
strictboolif errors are detected, halt and return null
markCacheObjecta cache that can be used in ID generation (is passed to getID)
+ +

builder.getNewID() ⇒ int

+

Returns a new tag ID.

+

Kind: instance method of Builder
+Returns: int - unique tag ID

+ +

build(text, strict) ⇒ SimpleNode

+

Builds a SimpleDOM from the text provided. If strict mode is true, parsing +will halt as soon as any error is seen and null will be returned.

+

Kind: global function
+Returns: SimpleNode - root of tree or null if strict failed

+
ParamTypeDescription
textstringText of document to parse
strictboolTrue for strict parsing
+ + \ No newline at end of file diff --git a/api/API-Reference/language/HTMLSimpleDOM/index.html b/api/API-Reference/language/HTMLSimpleDOM/index.html new file mode 100644 index 00000000..20b3956c --- /dev/null +++ b/api/API-Reference/language/HTMLSimpleDOM/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/language/HTMLUtils.html b/api/API-Reference/language/HTMLUtils.html new file mode 100644 index 00000000..1517d3a9 --- /dev/null +++ b/api/API-Reference/language/HTMLUtils.html @@ -0,0 +1,86 @@ + + + + + +HTMLUtils | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

HTMLUtils

Import :

+
const HTMLUtils = brackets.getModule("language/HTMLUtils")
+ +

TAG_NAME : string

+

Key representing tag name

+

Kind: global constant

+ +

CLOSING_TAG : string

+

Key representing closing tag

+

Kind: global constant

+ +

ATTR_NAME : string

+

Key representing attribute name

+

Kind: global constant

+ +

ATTR_VALUE : string

+

Key representing attribute value

+

Kind: global constant

+ +

getTagAttributes(editor, pos) ⇒ Array.<string>

+

Compiles a list of used attributes for a given tag.

+

Kind: global function
+Returns: Array.<string> - - A list of the used attributes within the current tag.

+
ParamTypeDescription
editorCodeMirrorAn instance of a CodeMirror editor.
posObjectThe position in the CodeMirror editor, specified by character and line numbers.
+ +

createTagInfo([tokenType], [offset], [tagName], [attrName], [attrValue]) ⇒ Object

+

Creates a tagInfo object and assures all the values are entered or are empty strings

+

Kind: global function
+Returns: Object - A tagInfo object with some context about the current tag hint.

+
ParamTypeDescription
[tokenType]stringwhat is getting edited and should be hinted
[offset]numberwhere the cursor is for the part getting hinted
[tagName]stringThe name of the tag
[attrName]stringThe name of the attribute
[attrValue]stringThe value of the attribute
+ +

getTagInfo(editor, constPos, let) ⇒ Object

+

Figure out if we're in a tag, and if we are return info about it +An example token stream for this tag is

+
<span id="open-files-disclosure-arrow"></span> :
className:tag string:"<span"
className: string:" "
className:attribute string:"id"
className: string:"="
className:string string:""open-files-disclosure-arrow""
className:tag string:"></span>"
+

Kind: global function
+Returns: Object - A tagInfo object with some context about the current tag hint.

+
ParamTypeDescription
editorEditorAn instance of a Brackets editor
constPosObjectA CM pos (likely from editor.getCursorPos())
letisHtmlMode:booleanthe module know we are in html mode
+ +

findBlocks(editor, modeName) ⇒ Object

+

Returns an Array of info about all blocks whose token mode name matches that passed in, +in the given Editor's HTML document (assumes the Editor contains HTML text).

+

Kind: global function
+Returns: Object - Array

+
ParamTypeDescription
editorEditorthe editor containing the HTML text
modeNamestringthe mode name of the tokens to look for
+ +

findStyleBlocks(editor) ⇒ Object

+

Returns an Array of info about all 'style' blocks in the given Editor's HTML document (assumes +the Editor contains HTML text).

+

Kind: global function
+Returns: Object - Array

+
ParamType
editorEditor
+ + \ No newline at end of file diff --git a/api/API-Reference/language/HTMLUtils/index.html b/api/API-Reference/language/HTMLUtils/index.html new file mode 100644 index 00000000..f8c45dc4 --- /dev/null +++ b/api/API-Reference/language/HTMLUtils/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/language/JSONUtils.html b/api/API-Reference/language/JSONUtils.html new file mode 100644 index 00000000..46a84cee --- /dev/null +++ b/api/API-Reference/language/JSONUtils.html @@ -0,0 +1,58 @@ + + + + + +JSONUtils | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

JSONUtils

Import :

+
const JSONUtils = brackets.getModule("language/JSONUtils")
+ +

regexAllowedChars : RegExp

+

Reg-ex to match colon, comma, opening bracket of an array and white-space.

+

Kind: global variable

+ +

TOKEN_KEY : number

+

Enumeration for Token Key

+

Kind: global constant

+ +

TOKEN_VALUE : number

+

Enumeration for Token value

+

Kind: global constant

+ +

stripQuotes(string) ⇒ String

+

Removes the quotes around a string

+

Kind: global function

+
ParamType
stringString
+ +

getContextInfo(editor, constPos, requireParent, requireNextToken) ⇒ Object

+

Returns context info at a given position in editor

+

Kind: global function

+
ParamTypeDescription
editorEditor
constPosObjectPosition of cursor in the editor
requireParentBooleanIf true will look for parent key name
requireNextTokenBooleanif true we can replace the next token of a value.
+ + \ No newline at end of file diff --git a/api/API-Reference/language/JSONUtils/index.html b/api/API-Reference/language/JSONUtils/index.html new file mode 100644 index 00000000..0bce529c --- /dev/null +++ b/api/API-Reference/language/JSONUtils/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/language/JSUtils.html b/api/API-Reference/language/JSUtils.html new file mode 100644 index 00000000..1ac501bf --- /dev/null +++ b/api/API-Reference/language/JSUtils.html @@ -0,0 +1,55 @@ + + + + + +JSUtils | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

JSUtils

Import :

+
const JSUtils = brackets.getModule("language/JSUtils")
+ +

_

+

Set of utilities for simple parsing of JS text.

+

Kind: global variable

+ +

findMatchingFunctions(functionName, fileInfos, [keepAllFiles]) ⇒ $.Promise

+

Return all functions that have the specified name, searching across all the given files.

+

Kind: global function
+Returns: $.Promise - that will be resolved with an Array of objects containing the +source document, start line, and end line (0-based, inclusive range) for each matching function list. +Does not addRef() the documents returned in the array.

+
ParamTypeDescription
functionNameStringThe name to match.
fileInfosArray.<File>The array of files to search.
[keepAllFiles]booleanIf true, don't ignore non-javascript files.
+ +

findAllMatchingFunctionsInText(text, searchName) ⇒ Object

+

Finds all instances of the specified searchName in "text". +Returns an Array of Objects with start and end properties.

+

Kind: global function
+Returns: Object - Array of objects containing the start offset for each matched function name.

+
ParamTypeDescription
textStringJS text to search
searchNameStringfunction name to search for
+ + \ No newline at end of file diff --git a/api/API-Reference/language/JSUtils/index.html b/api/API-Reference/language/JSUtils/index.html new file mode 100644 index 00000000..92954534 --- /dev/null +++ b/api/API-Reference/language/JSUtils/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/language/LanguageManager.html b/api/API-Reference/language/LanguageManager.html new file mode 100644 index 00000000..67e92cc8 --- /dev/null +++ b/api/API-Reference/language/LanguageManager.html @@ -0,0 +1,217 @@ + + + + + +LanguageManager | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

LanguageManager

Import :

+
const LanguageManager = brackets.getModule("language/LanguageManager")
+ +

Language

+

Kind: global class

+ + +

new Language()

+

Model for a language.

+ +

language.getId() ⇒ string

+

Returns the identifier for this language.

+

Kind: instance method of Language
+Returns: string - The identifier

+ +

language.getName() ⇒ string

+

Returns the human-readable name of this language.

+

Kind: instance method of Language
+Returns: string - The name

+ +

language.getMode() ⇒ string

+

Returns the CodeMirror mode for this language.

+

Kind: instance method of Language
+Returns: string - The mode

+ +

language.getFileExtensions() ⇒ Array.<string>

+

Returns an array of file extensions for this language.

+

Kind: instance method of Language
+Returns: Array.<string> - File extensions used by this language

+ +

language.getFileNames() ⇒ Array.<string>

+

Returns an array of file names for extensionless files that use this language.

+

Kind: instance method of Language
+Returns: Array.<string> - Extensionless file names used by this language

+ +

language.addFileExtension(extension)

+

Adds one or more file extensions to this language.

+

Kind: instance method of Language

+
ParamTypeDescription
extensionstring | Array.<string>A file extension (or array thereof) used by this language
+ +

language.removeFileExtension(extension)

+

Unregisters one or more file extensions from this language.

+

Kind: instance method of Language

+
ParamTypeDescription
extensionstring | Array.<string>File extension (or array thereof) to stop using for this language
+ +

language.addFileName(extension)

+

Adds one or more file names to the language which is used to match files that don't have extensions like "Makefile" for example.

+

Kind: instance method of Language

+
ParamTypeDescription
extensionstring | Array.<string>An extensionless file name (or array thereof) used by this language
+ +

language.removeFileName(extension)

+

Unregisters one or more file names from this language.

+

Kind: instance method of Language

+
ParamTypeDescription
extensionstring | Array.<string>An extensionless file name (or array thereof) used by this language
+ +

language.hasLineCommentSyntax() ⇒ boolean

+

Returns whether the line comment syntax is defined for this language.

+

Kind: instance method of Language
+Returns: boolean - Whether line comments are supported

+ +

language.getLineCommentPrefixes() ⇒ Array.<string>

+

Returns an array of prefixes to use for line comments.

+

Kind: instance method of Language
+Returns: Array.<string> - The prefixes

+ +

language.setLineCommentSyntax(prefix) ⇒ boolean

+

Sets the prefixes to use for line comments in this language or prints an error to the console.

+

Kind: instance method of Language
+Returns: boolean - Whether the syntax was valid and set or not

+
ParamTypeDescription
prefixstring | Array.<string>Prefix string or an array of prefix strings to use for line comments (e.g. "//" or ["//", "#"])
+ +

language.hasBlockCommentSyntax() ⇒ boolean

+

Returns whether the block comment syntax is defined for this language.

+

Kind: instance method of Language
+Returns: boolean - Whether block comments are supported

+ +

language.getBlockCommentPrefix() ⇒ string

+

Returns the prefix to use for block comments.

+

Kind: instance method of Language
+Returns: string - The prefix

+ +

language.getBlockCommentSuffix() ⇒ string

+

Returns the suffix to use for block comments.

+

Kind: instance method of Language
+Returns: string - The suffix

+ +

language.setBlockCommentSyntax(prefix, suffix) ⇒ boolean

+

Sets the prefix and suffix to use for blocks comments in this language or prints an error to the console.

+

Kind: instance method of Language
+Returns: boolean - Whether the syntax was valid and set or not

+
ParamTypeDescription
prefixstringPrefix string to use for block comments (e.g. "< !--")
suffixstringSuffix string to use for block comments (e.g. "-->")
+ +

language.getLanguageForMode(mode) ⇒ Language

+

Returns either a language associated with the mode or the fallback language. +Used to disambiguate modes used by multiple languages.

+

Kind: instance method of Language
+Returns: Language - This language if it uses the mode, or whatever #_getLanguageForMode returns

+
ParamTypeDescription
modestringThe mode to associate the language with
+ +

language.isFallbackLanguage() ⇒ boolean

+

Determines whether this is the fallback language or not

+

Kind: instance method of Language
+Returns: boolean - True if this is the fallback language, false otherwise

+ +

language.isBinary() ⇒ boolean

+

Indicates whether or not the language is binary (e.g., image or audio).

+

Kind: instance method of Language

+ +

getLanguage(id) ⇒ Language

+

Resolves a language ID to a Language object. +File names have a higher priority than file extensions.

+

Kind: global function
+Returns: Language - The language with the provided identifier or undefined

+
ParamTypeDescription
idstringIdentifier for this language: lowercase letters, digits, and _ separators (e.g. "cpp", "foo_bar", "c99")
+ +

getLanguageForExtension(extension) ⇒ Language

+

Resolves a file extension to a Language object. +Warning: it is almost always better to use getLanguageForPath(), since Language can depend +on file name and even full path. Use this API only if no relevant file/path exists.

+

Kind: global function
+Returns: Language - The language for the provided extension or null if none exists

+
ParamTypeDescription
extensionstringExtension that language should be resolved for
+ +

getLanguageForPath(path, [ignoreOverride]) ⇒ Language

+

Resolves a file path to a Language object.

+

Kind: global function
+Returns: Language - The language for the provided file type or the fallback language

+
ParamTypeDescription
pathstringPath to the file to find a language for
[ignoreOverride]booleanIf set to true will cause the lookup to ignore any overrides and return default binding. By default override is not ignored.
+ +

getLanguages() ⇒ Object.<string, Language>

+

Returns a map of all the languages currently defined in the LanguageManager. The key to +the map is the language id and the value is the language object.

+

Kind: global function
+Returns: Object.<string, Language> - A map containing all of the +languages currently defined.

+ +

setLanguageOverrideForPath(fullPath, language)

+

Adds a language mapping for the specified fullPath. If language is falsy (null or undefined), the mapping +is removed. The override is NOT persisted across Brackets sessions.

+

Kind: global function

+
ParamTypeDescription
fullPathfullPathabsolute path of the file
languageobjectlanguage to associate the file with or falsy value to remove any existing override
+ +

getCompoundFileExtension(fullPath) ⇒ string

+

Get the file extension (excluding ".") given a path OR a bare filename. +Returns "" for names with no extension. +If the only . in the file is the first character, +returns "" as this is not considered an extension. +This method considers known extensions which include . in them.

+

Kind: global function
+Returns: string - Returns the extension of a filename or empty string if +the argument is a directory or a filename with no extension

+
ParamTypeDescription
fullPathstringfull path to a file or directory
+ +

defineLanguage(id, definition) ⇒ $.Promise

+

Defines a language.

+

Kind: global function
+Returns: $.Promise - A promise object that will be resolved with a Language object

+
ParamTypeDescription
idstringUnique identifier for this language: lowercase letters, digits, and _ separators (e.g. "cpp", "foo_bar", "c99")
definitionObjectAn object describing the language
definition.namestringHuman-readable name of the language, as it's commonly referred to (e.g. "C++")
definition.fileExtensionsArray.<string>List of file extensions used by this language (e.g. ["php", "php3"] or ["coffee.md"] - may contain dots)
definition.fileNamesArray.<string>List of exact file names (e.g. ["Makefile"] or ["package.json]). Higher precedence than file extension.
definition.blockCommentArray.<string>Array with two entries defining the block comment prefix and suffix (e.g. ["< !--", "-->"])
definition.lineCommentstring | Array.<string>Line comment prefixes (e.g. "//" or ["//", "#"])
definition.modestring | Array.<string>CodeMirror mode (e.g. "htmlmixed"), optionally with a MIME mode defined by that mode ["clike", "text/x-c++src"] Unless the mode is located in thirdparty/CodeMirror/mode/"name"/"name".js, you need to first load it yourself.
+ + \ No newline at end of file diff --git a/api/API-Reference/language/LanguageManager/index.html b/api/API-Reference/language/LanguageManager/index.html new file mode 100644 index 00000000..d8bc74f0 --- /dev/null +++ b/api/API-Reference/language/LanguageManager/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/language/XMLUtils.html b/api/API-Reference/language/XMLUtils.html new file mode 100644 index 00000000..d30e95fc --- /dev/null +++ b/api/API-Reference/language/XMLUtils.html @@ -0,0 +1,63 @@ + + + + + +XMLUtils | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

XMLUtils

Import :

+
const XMLUtils = brackets.getModule("language/XMLUtils")
+ +

regexWhitespace : RegExp

+

Regex to find whitespace

+

Kind: global variable

+ +

TOKEN_TAG : number

+

Enum token tag

+

Kind: global constant

+ +

TOKEN_ATTR : number

+

Enum token attribute

+

Kind: global constant

+ +

TOKEN_VALUE : number

+

Enum token value

+

Kind: global constant

+ +

getTagInfo(editor, pos) ⇒ Object

+

Return the tag info at a given position in the active editor

+

Kind: global function

+
ParamTypeDescription
editorEditorInstance of active editor
posObjectPosition of cursor in the editor
+ +

getValueQuery(tagInfo) ⇒ string

+

Return the query text of a value.

+

Kind: global function
+Returns: string - The query to use to matching hints.

+
ParamType
tagInfoObject
+ + \ No newline at end of file diff --git a/api/API-Reference/language/XMLUtils/index.html b/api/API-Reference/language/XMLUtils/index.html new file mode 100644 index 00000000..d3360f36 --- /dev/null +++ b/api/API-Reference/language/XMLUtils/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/preferences/PreferencesManager.html b/api/API-Reference/preferences/PreferencesManager.html new file mode 100644 index 00000000..99035865 --- /dev/null +++ b/api/API-Reference/preferences/PreferencesManager.html @@ -0,0 +1,91 @@ + + + + + +PreferencesManager | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

PreferencesManager

Import :

+
const PreferencesManager = brackets.getModule("preferences/PreferencesManager")
+ +

AppInit

+

PreferencesManager

+

Kind: global variable

+ +

CURRENT_PROJECT : Object

+

Context to look up preferences in the current project.

+

Kind: global variable

+ +

scopeOrderWithProject

+

Cached copy of the scopeOrder with the project Scope

+

Kind: global variable

+ +

scopeOrderWithoutProject

+

Cached copy of the scopeOrder without the project Scope

+

Kind: global variable

+ +

STATE_PROJECT_CONTEXT : string

+

State project context

+

Kind: global variable

+ +

STATE_GLOBAL_CONTEXT : string

+

State global context

+

Kind: global variable

+ +

STATE_PROJECT_THEN_GLOBAL_CONTEXT : string

+

Project then global context

+

Kind: global variable

+ +

PROJECT_SCOPE : Object

+

Project scope

+

Kind: global variable

+ +

getUserPrefFile() ⇒ string

+

Get the full path to the user-level preferences file.

+

Kind: global function
+Returns: string - Path to the preferences file

+ +

getExtensionPrefs(prefix)

+

Creates an extension-specific preferences manager using the prefix given. +A . character will be appended to the prefix. So, a preference named foo +with a prefix of myExtension will be stored as myExtension.foo in the +preferences files.

+

Kind: global function

+
ParamTypeDescription
prefixstringPrefix to be applied
+ +

getViewState(id, [context])

+

Convenience function that gets a view state

+

Kind: global function

+
ParamTypeDescription
idstringpreference to get
[context]ObjectOptional additional information about the request
+ +

setViewState(id, value, [context])

+

Convenience function that sets a view state and then saves the file

+

Kind: global function

+
ParamTypeDescription
idstringpreference to set
value*new value for the preference
[context]ObjectOptional additional information about the request
+ + \ No newline at end of file diff --git a/api/API-Reference/preferences/PreferencesManager/index.html b/api/API-Reference/preferences/PreferencesManager/index.html new file mode 100644 index 00000000..0f38c9ca --- /dev/null +++ b/api/API-Reference/preferences/PreferencesManager/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/preferences/StateManager.html b/api/API-Reference/preferences/StateManager.html new file mode 100644 index 00000000..e0ba11f3 --- /dev/null +++ b/api/API-Reference/preferences/StateManager.html @@ -0,0 +1,89 @@ + + + + + +StateManager | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

StateManager

Import :

+
const StateManager = brackets.getModule("preferences/StateManager")
+ +

_

+

StateManager

+

Kind: global constant

+ +

PROJECT_CONTEXT : string

+

Project specific context

+

Kind: global constant

+ +

GLOBAL_CONTEXT : string

+

Global context

+

Kind: global constant

+ +

PROJECT_THEN_GLOBAL_CONTEXT : string

+

Project or global context

+

Kind: global constant

+ +

getVal(id, [context])

+

Convenience function that gets a view state

+

Kind: global function

+
ParamTypeDescription
idstringpreference to get
[context]Object | stringOptional additional information about the request, can be: - ScopeManager.PROJECT_CONTEXT if you want to get project specific value or - ScopeManager.GLOBAL_CONTEXT if you want to get it from global context and not the project context. - null/undefined if you want to get from project context first, and then global context if not found in project context.
[context.scope]stringEg. user - deprecated, do not use
[context.layer]stringEg. project - deprecated, do not use
[context.layerID]stringEg. /tauri/path/to/project - deprecated, do not use
+ +

setVal(id, value, [context])

+

Convenience function that sets a view state and then saves the file

+

Kind: global function

+
ParamTypeDescription
idstringpreference to set
value*new value for the preference
[context]Object | stringOptional additional information about the request, can be: ScopeManager.PROJECT_CONTEXT if you want to get project specific value or ScopeManager.GLOBAL_CONTEXT or null if you want to set globally.
[context.scope]stringEg. user - deprecated, do not use
[context.layer]stringEg. project - deprecated, do not use
[context.layerID]stringEg. /tauri/path/to/project - deprecated, do not use
+ +

definePreferenceInternal(id, type, initial, options) ⇒ Object

+

returns a preference instance that can be listened .on("change", cbfn(changeType)) . The callback fucntion will be called +whenever there is a change in the supplied id with a changeType argument. The change type can be one of the two: +CHANGE_TYPE_INTERNAL - if change is made within the current app window/browser tap +CHANGE_TYPE_EXTERNAL - if change is made in a different app window/browser tab

+

Kind: global function

+
Param
id
type
initial
options
+ +

getPreferenceInternal(id) ⇒ Object

+

Get the preference instance for the given ID.

+

Kind: global function

+
ParamType
idstring
+ +

createExtensionStateManager(extensionID) ⇒ object

+

create a state manager for an extension. +ensure that the IDs are unique.

+

Kind: global function
+Returns: object - Object with methods to manage the extension's state and preferences.

+
    +
  • get(id, context): Get the value from the extension's state.
  • +
  • set(id, value, context): Set the value in the extension's state.
  • +
  • definePreference(id, type, initial, options): define a preference for the extension.
  • +
  • getPreference(id): retrieve a defined preference.
  • +
  • PROJECT_CONTEXT, GLOBAL_CONTEXT, PROJECT_THEN_GLOBAL_CONTEXT: constant for context management.
  • +
+
ParamType
extensionIDstring
+ + \ No newline at end of file diff --git a/api/API-Reference/preferences/StateManager/index.html b/api/API-Reference/preferences/StateManager/index.html new file mode 100644 index 00000000..58fa09f2 --- /dev/null +++ b/api/API-Reference/preferences/StateManager/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/project/FileSyncManager.html b/api/API-Reference/project/FileSyncManager.html new file mode 100644 index 00000000..dc473fe6 --- /dev/null +++ b/api/API-Reference/project/FileSyncManager.html @@ -0,0 +1,44 @@ + + + + + +FileSyncManager | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

FileSyncManager

Import :

+
const FileSyncManager = brackets.getModule("project/FileSyncManager")
+ +

syncOpenDocuments(title)

+

Check to see whether any open files have been modified by an external app since the last time +Brackets synced up with the copy on disk (either by loading or saving the file). For clean +files, we silently upate the editor automatically. For files with unsaved changes, we prompt +the user.

+

Kind: global function

+
ParamTypeDescription
titlestringTitle to use for document. Default is "External Changes".
+ + \ No newline at end of file diff --git a/api/API-Reference/project/FileSyncManager/index.html b/api/API-Reference/project/FileSyncManager/index.html new file mode 100644 index 00000000..4b59b47b --- /dev/null +++ b/api/API-Reference/project/FileSyncManager/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/project/FileTreeView.html b/api/API-Reference/project/FileTreeView.html new file mode 100644 index 00000000..4fcdb2b8 --- /dev/null +++ b/api/API-Reference/project/FileTreeView.html @@ -0,0 +1,94 @@ + + + + + +FileTreeView | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

FileTreeView

Import :

+
const FileTreeView = brackets.getModule("project/FileTreeView")
+ +

Preact

+

This is the view layer (template) for the file tree in the sidebar. It takes a FileTreeViewModel +and renders it to the given element using Preact. User actions are signaled via an ActionCreator +(in the Flux sense).

+

Kind: global variable

+ +

componentDidMount()

+

When this component is displayed, we scroll it into view and select the portion +of the filename that excludes the extension.

+

Kind: global function

+ +

getInitialState()

+

Ensures that we always have a state object.

+

Kind: global function

+ +

componentDidMount()

+

When this component is displayed, we scroll it into view and select the folder name.

+

Kind: global function

+ +

shouldComponentUpdate()

+

Need to re-render if the sort order or the contents change.

+

Kind: global function

+ +

componentDidUpdate()

+

When the component has updated in the DOM, reposition it to where the currently +selected node is located now.

+

Kind: global function

+ +

componentDidUpdate()

+

When the component has updated in the DOM, reposition it to where the currently +selected node is located now.

+

Kind: global function

+ +

shouldComponentUpdate()

+

Update for any change in the tree data or directory sorting preference.

+

Kind: global function

+ +

handleDragOver()

+

Allow the Drop

+

Kind: global function

+ +

render(element, viewModel, projectRoot, actions, forceRender, platform)

+

Renders the file tree to the given element.

+

Kind: global function

+
ParamTypeDescription
elementDOMNode | jQueryElement in which to render this file tree
viewModelFileTreeViewModelthe data container
projectRootDirectoryDirectory object from which the fullPath of the project root is extracted
actionsActionCreatorobject with methods used to communicate events that originate from the user
forceRenderbooleanRun render on the entire tree (useful if an extension has new data that it needs rendered)
platformstringmac, win, linux
+ +

addIconProvider(callback, [priority])

+

Adds an icon provider. The callback is invoked before each working set item is created, and can +return content to prepend to the item if it supports the icon.

+

Kind: global function

+
ParamTypeDefaultDescription
callbackfunctionReturn a string representing the HTML, a jQuery object or DOM node, or undefined. If undefined, nothing is prepended to the list item and the default or an available icon will be used.
[priority]number0optional priority. 0 being lowest. The icons with the highest priority wins if there are multiple callback providers attached. icon providers of the same priority first valid response wins.
+ +

addClassesProvider(callback, [priority])

+

Adds a CSS class provider, invoked before each working set item is created or updated. When called +to update an existing item, all previously applied classes have been cleared.

+

Kind: global function

+
ParamTypeDefaultDescription
callbackfunctionReturn a string containing space-separated CSS class(es) to add, or undefined to leave CSS unchanged.
[priority]number0optional priority. 0 being lowest. The class with the highest priority wins if there are multiple callback classes attached. class providers of the same priority will be appended.
+ + \ No newline at end of file diff --git a/api/API-Reference/project/FileTreeView/index.html b/api/API-Reference/project/FileTreeView/index.html new file mode 100644 index 00000000..5e048536 --- /dev/null +++ b/api/API-Reference/project/FileTreeView/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/project/FileTreeViewModel.html b/api/API-Reference/project/FileTreeViewModel.html new file mode 100644 index 00000000..c15a5889 --- /dev/null +++ b/api/API-Reference/project/FileTreeViewModel.html @@ -0,0 +1,64 @@ + + + + + +FileTreeViewModel | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

FileTreeViewModel

Import :

+
const FileTreeViewModel = brackets.getModule("project/FileTreeViewModel")
+ +

Contains the treeData used to generate the file tree and methods used to update that

+

treeData.

+

Instances dispatch the following events:

+
    +
  • change (FileTreeViewModel.EVENT_CHANGE constant): Fired any time theres a change that should be reflected in the view. +Kind: global class
  • +
+ +

Immutable

+

The view model (or a Store in the Flux terminology) used by the file tree.

+

Many of the view model's methods are implemented by pure functions, which can be +helpful for composability. Many of the methods commit the new treeData and send a +change event when they're done whereas the functions do not do this.

+

Kind: global variable

+ +

EVENT_CHANGE : string

+

Kind: global constant

+ +

isFile(entry) ⇒ boolean

+

Determine if an entry from the treeData map is a file.

+

Kind: global function
+Returns: boolean - true if this is a file and not a directory

+
ParamTypeDescription
entryImmutable.Mapentry to test
+ + \ No newline at end of file diff --git a/api/API-Reference/project/FileTreeViewModel/index.html b/api/API-Reference/project/FileTreeViewModel/index.html new file mode 100644 index 00000000..a5892811 --- /dev/null +++ b/api/API-Reference/project/FileTreeViewModel/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/project/FileViewController.html b/api/API-Reference/project/FileViewController.html new file mode 100644 index 00000000..e3e28661 --- /dev/null +++ b/api/API-Reference/project/FileViewController.html @@ -0,0 +1,70 @@ + + + + + +FileViewController | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

FileViewController

Import :

+
const FileViewController = brackets.getModule("project/FileViewController")
+ +

WORKING_SET_VIEW : string

+

view managing working set.

+

Kind: global variable

+ +

PROJECT_MANAGER : string

+

manager handling project-related operations.

+

Kind: global variable

+ +

setFileViewFocus(fileSelectionFocus)

+

Modifies the selection focus in the project side bar. A file can either be selected +in the working set (the open files) or in the file tree, but not both.

+

Kind: global function

+
ParamTypeDescription
fileSelectionFocusStringeither PROJECT_MANAGER or WORKING_SET_VIEW
+ +

openAndSelectDocument(fullPath, fileSelectionFocus, paneId) ⇒ $.Promise

+

Opens a document if it's not open and selects the file in the UI corresponding to +fileSelectionFocus

+

Kind: global function

+
ParamTypeDescription
fullPathfullPathfull path of the document to open
fileSelectionFocusstring(WORKING_SET_VIEW
paneIdstringpane in which to open the document
+ +

openFileAndAddToWorkingSet(fullPath, [paneId]) ⇒ $.Promise

+

Opens the specified document if it's not already open, adds it to the working set, +and selects it in the WorkingSetView

+

Kind: global function

+
ParamTypeDescription
fullPathfullPath
[paneId]stringPane in which to add the view. If omitted, the command default is to use the ACTIVE_PANE
+ +

openWithExternalApplication()

+

Opens the specified document with its associated external editor,

+

Kind: global function

+ +

getFileSelectionFocus() ⇒ String

+

returns either WORKING_SET_VIEW or PROJECT_MANAGER

+

Kind: global function

+ + \ No newline at end of file diff --git a/api/API-Reference/project/FileViewController/index.html b/api/API-Reference/project/FileViewController/index.html new file mode 100644 index 00000000..f81ee050 --- /dev/null +++ b/api/API-Reference/project/FileViewController/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/project/ProjectManager.html b/api/API-Reference/project/ProjectManager.html new file mode 100644 index 00000000..92a0d56c --- /dev/null +++ b/api/API-Reference/project/ProjectManager.html @@ -0,0 +1,263 @@ + + + + + +ProjectManager | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

ProjectManager

Import :

+
const ProjectManager = brackets.getModule("project/ProjectManager")
+ +

EVENT_PROJECT_BEFORE_CLOSE : string

+

Triggered before the project closes.

+

Kind: global constant

+ +

EVENT_PROJECT_CLOSE : string

+

Triggered when the project has closed.

+

Kind: global constant

+ +

EVENT_PROJECT_OPEN_FAILED : string

+

Triggered when opening a project file fails.

+

Kind: global constant

+ +

EVENT_PROJECT_OPEN : string

+

Triggered when a project is opened.

+

Kind: global constant

+ +

EVENT_AFTER_PROJECT_OPEN : string

+

Triggered after a project is successfully opened.

+

Kind: global constant

+ +

EVENT_AFTER_STARTUP_FILES_LOADED : string

+

Triggered after startup files (from OS or CLI) are loaded. +Note: This may occur before extensions are loaded, so check isStartupFilesLoaded().

+

Kind: global constant

+ +

EVENT_PROJECT_REFRESH : string

+

Triggered when the project is refreshed.

+

Kind: global constant

+ +

EVENT_CONTENT_CHANGED : string

+

Triggered when content in the project changes.

+

Kind: global constant

+ +

EVENT_PROJECT_FILE_CHANGED : string

+

Triggered when any file or folder in the project changes, excluding renames.

+

Kind: global constant

+ +

EVENT_PROJECT_FILE_RENAMED : string

+

Triggered specifically when a project file is renamed.

+

Kind: global constant

+ +

EVENT_PROJECT_CHANGED_OR_RENAMED_PATH : string

+

Triggered when paths in the project are changed or renamed.

+

Kind: global constant

+ +

getFileTreeContext() ⇒ File | Directory

+

Returns the File or Directory corresponding to the item that was right-clicked on in the file tree menu.

+

Kind: global function

+ +

getSelectedItem() ⇒ File | Directory

+

Returns the File or Directory corresponding to the item selected in the sidebar panel, whether in +the file tree OR in the working set; or null if no item is selected anywhere in the sidebar. +May NOT be identical to the current Document - a folder may be selected in the sidebar, or the sidebar may not +have the current document visible in the tree & working set.

+

Kind: global function

+ +

getBaseUrl() ⇒ String

+

Returns the encoded Base URL of the currently loaded project, or empty string if no project +is open (during startup, or running outside of app shell).

+

Kind: global function

+ +

setBaseUrl(projectBaseUrl)

+

Sets the encoded Base URL of the currently loaded project.

+

Kind: global function

+
ParamType
projectBaseUrlString
+ +

isWithinProject(absPathOrEntry) ⇒ boolean

+

Returns true if absPath lies within the project, false otherwise. +Does not support paths containing ".."

+

Kind: global function

+
ParamType
absPathOrEntrystring | FileSystemEntry
+ +

filterProjectFiles(absPathOrEntryArray) ⇒ string | Array.<FileSystemEntry>

+

Returns an array of files that is within the project from the supplied list of paths.

+

Kind: global function
+Returns: string | Array.<FileSystemEntry> - A array that contains only files paths that are in the project

+
ParamTypeDescription
absPathOrEntryArraystring | Array.<FileSystemEntry>array which can be either a string path or FileSystemEntry
+ +

makeProjectRelativeIfPossible(absPath) ⇒ string

+

If absPath lies within the project, returns a project-relative path. Else returns absPath +unmodified. +Does not support paths containing ".."

+

Kind: global function

+
ParamType
absPathstring
+ +

getProjectRelativeOrDisplayPath(fullPath) ⇒ string

+

Gets a generally displayable path that can be shown to the user in most cases. +Gets the project relative path if possible. If paths is not in project, then if its a platform path(Eg. in tauri) +it will return the full platform path. If not, then it will return a mount relative path for fs access mount +folders opened in the bowser. at last, falling back to vfs path. This should only be used for display purposes +as this path will be changed by phcode depending on the situation in the future.

+

Kind: global function

+
Param
fullPath
+ +

getProjectRoot() ⇒ Directory

+

Returns the root folder of the currently loaded project, or null if no project is open (during +startup, or running outside of app shell).

+

Kind: global function

+ +

getWelcomeProjectPath(sampleUrl, initialPath) ⇒ string

+

Returns the full path to the welcome project, which we open on first launch.

+

Kind: global function
+Returns: string - fullPath reference

+
ParamTypeDescription
sampleUrlstringURL for getting started project
initialPathstringPath to Brackets directory (see FileUtils.getNativeBracketsDirectoryPath())
+ +

getLocalProjectsPath() ⇒ string

+

The folder where all the system managed projects live

+

Kind: global function

+ +

isWelcomeProjectPath(path) ⇒ boolean

+

Returns true if the given path is the same as one of the welcome projects we've previously opened, +or the one for the current build.

+

Kind: global function
+Returns: boolean - true if this is a welcome project path

+
ParamTypeDescription
pathstringPath to check to see if it's a welcome project path
+ +

updateWelcomeProjectPath()

+

If the provided path is to an old welcome project, returns the current one instead.

+

Kind: global function

+ +

getStartupProjectPath()

+

Initial project path is stored in prefs, which defaults to the welcome project on +first launch.

+

Kind: global function

+ +

_continueLoadProject()

+

Internal: continue loading a project after beforeProjectClose handlers have resolved.

+

Kind: global function

+ +

refreshFileTree()

+

Refresh the project's file tree, maintaining the current selection.

+

Note that the original implementation of this returned a promise to be resolved when the refresh is complete. +That use is deprecated and refreshFileTree is now a "fire and forget" kind of function.

+

Kind: global function

+ +

showInTree(entry) ⇒ $.Promise

+

Expands tree nodes to show the given file or folder and selects it. Silently no-ops if the +path lies outside the project, or if it doesn't exist.

+

Kind: global function
+Returns: $.Promise - Resolved when done; or rejected if not found

+
ParamTypeDescription
entryFile | DirectoryFile or Directory to show
+ +

openProject([path]) ⇒ $.Promise

+

Open a new project. Currently, Brackets must always have a project open, so +this method handles both closing the current project and opening a new project.

+

Kind: global function
+Returns: $.Promise - A promise object that will be resolved when the +project is loaded and tree is rendered, or rejected if the project path +fails to load.

+
ParamTypeDescription
[path]stringOptional absolute path to the root folder of the project. If path is undefined or null, displays a dialog where the user can choose a folder to load. If the user cancels the dialog, nothing more happens.
+ +

createNewItem(baseDir, initialName, skipRename, isFolder) ⇒ $.Promise

+

Create a new item in the current project.

+

Kind: global function
+Returns: $.Promise - A promise object that will be resolved with the File +of the created object, or rejected if the user cancelled or entered an illegal +filename.

+
ParamTypeDescription
baseDirstring | DirectoryFull path of the directory where the item should go. Defaults to the project root if the entry is not valid or not within the project.
initialNamestringInitial name for the item
skipRenamebooleanIf true, don't allow the user to rename the item
isFolderbooleanIf true, create a folder instead of a file
+ +

deleteItem(entry)

+

Delete file or directore from project

+

Kind: global function

+
ParamTypeDescription
entryFile | DirectoryFile or Directory to delete
+ +

getLanguageFilter(languageId) ⇒ function

+

Returns a filter for use with getAllFiles() that filters files based on LanguageManager language id

+

Kind: global function

+
ParamTypeDescription
languageIdstring | Array.<string>a single string of a language id or an array of language ids
+ +

forceFinishRename()

+

Causes the rename operation that's in progress to complete.

+

Kind: global function

+ +

setProjectBusy(isBusy, message)

+

Sets or unsets project busy spinner with the specified message as reason.

+

For Eg., if you want to mark project as busy with reason compiling project: +setProjectBusy(true, "compiling project...") . The project spinner will be shown with the specified reason.

+

Once the compilation is complete, call, we need to unset the busy status by calling: +setProjectBusy(false, "compiling project...") . Make sure to pass in the exact message when +calling set and unset.

+

Kind: global function

+
ParamTypeDescription
isBusybooleantrue or false to set the project as busy or not
messagestringThe reason why the project is busy. Will be displayed as a hover tooltip on busy spinner.
+ +

getProjectRelativePath(path) ⇒ string

+

Return the project root relative path of the given path.

+

Kind: global function

+
ParamType
pathstring
+ +

getContext()

+

Gets the filesystem object for the current context in the file tree.

+

Kind: global function

+ +

renameItemInline(entry, [isMoved]) ⇒ $.Promise

+

Starts a rename operation, completing the current operation if there is one.

+

The Promise returned is resolved with an object with a newPath property with the renamed path. If the user cancels the operation, the promise is resolved with the value RENAME_CANCELLED.

+

Kind: global function
+Returns: $.Promise - a promise resolved when the rename is done.

+
ParamTypeDescription
entryFileSystemEntryfile or directory filesystem object to rename
[isMoved]booleanoptional flag which indicates whether the entry is being moved instead of renamed
+ +

getAllFiles(filter, [includeWorkingSet], [sort], options) ⇒ $.Promise

+

Returns an Array of all files for this project, optionally including +files in the working set that are not under the project root. Files are +filtered first by ProjectModel.shouldShow(), then by the custom filter +argument (if one was provided).

+

Kind: global function
+Returns: $.Promise - Promise that is resolved with an Array of File objects.

+
ParamTypeDescription
filterfunctionOptional function to filter the file list (does not filter directory traversal). API matches Array.filter().
[includeWorkingSet]booleanIf true, include files in the working set that are not under the project root (except for untitled documents).
[sort]booleanIf true, The files will be sorted by their paths
optionsObjectoptional path within project to narrow down the search
options.scopeFileoptional path within project to narrow down the search
+ +

addIconProvider(callback, [priority])

+

Adds an icon provider. The callback is invoked before each working set item is created, and can +return content to prepend to the item if it supports the icon.

+

Kind: global function

+
ParamTypeDefaultDescription
callbackfunctionReturn a string representing the HTML, a jQuery object or DOM node, or undefined. If undefined, nothing is prepended to the list item and the default or an available icon will be used.
[priority]number0optional priority. 0 being lowest. The icons with the highest priority wins if there are multiple callback providers attached. icon providers of the same priority first valid response wins.
+ +

addClassesProvider(callback, [priority])

+

Adds a CSS class provider, invoked before each working set item is created or updated. When called +to update an existing item, all previously applied classes have been cleared.

+

Kind: global function

+
ParamTypeDescription
callbackfunctionReturn a string containing space-separated CSS class(es) to add, or undefined to leave CSS unchanged.
[priority]numberoptional priority. 0 being lowest. The class with the highest priority wins if there are multiple callback classes attached. class providers of the same priority will be appended.
+ +

rerenderTree()

+

Forces the file tree to rerender. Typically, the tree only rerenders the portions of the +tree that have changed data. If an extension that augments the tree has changes that it +needs to display, calling rerenderTree will cause the components for the whole tree to +be rerendered.

+

Kind: global function

+ + \ No newline at end of file diff --git a/api/API-Reference/project/ProjectManager/index.html b/api/API-Reference/project/ProjectManager/index.html new file mode 100644 index 00000000..48078a07 --- /dev/null +++ b/api/API-Reference/project/ProjectManager/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/project/ProjectModel.html b/api/API-Reference/project/ProjectModel.html new file mode 100644 index 00000000..77e183b4 --- /dev/null +++ b/api/API-Reference/project/ProjectModel.html @@ -0,0 +1,141 @@ + + + + + +ProjectModel | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

ProjectModel

Import :

+
const ProjectModel = brackets.getModule("project/ProjectModel")
+ +

The ProjectModel provides methods for accessing information about the current open project.

+

It also manages the view model to display a FileTreeView of the project.

+

Events:

+
    +
  • EVENT_CHANGE (change) - Fired when theres a change that should refresh the UI
  • +
  • EVENT_SHOULD_SELECT (select) - Fired when a selection has been made in the file tree and the file tree should be selected
  • +
  • EVENT_SHOULD_FOCUS (focus)
  • +
  • ERROR_CREATION (creationError) - Triggered when theres a problem creating a file +Kind: global class
  • +
+ +

InMemoryFile

+

Provides the data source for a project and manages the view model for the FileTreeView.

+

Kind: global variable

+ +

EVENT_CHANGE : string

+

Triggered when change occurs.

+

Kind: global constant

+ +

EVENT_SHOULD_SELECT : string

+

Triggered when item should be selected.

+

Kind: global constant

+ +

EVENT_SHOULD_FOCUS : string

+

Triggered when item should receive focus.

+

Kind: global constant

+ +

EVENT_FS_RENAME_STARTED : string

+

Triggered when file system rename operation starts.

+

Kind: global constant

+ +

EVENT_FS_RENAME_END : string

+

Triggered when file system rename operation ends.

+

Kind: global constant

+ +

ERROR_CREATION : string

+

Error during creation.

+

Kind: global constant

+ +

ERROR_INVALID_FILENAME : string

+

Error because of Invalid filename

+

Kind: global constant

+ +

ERROR_NOT_IN_PROJECT : string

+

Error when an item is not in a project

+

Kind: global constant

+ +

defaultIgnoreGlobs

+

Glob definition of files and folders that should be excluded directly +inside node domain watching with chokidar

+

Kind: global constant

+ +

FILE_RENAMING : number

+

File renaming

+

Kind: global constant

+ +

FILE_CREATING : number

+

File creating

+

Kind: global constant

+ +

RENAME_CANCELLED : number

+

Rename cancelled

+

Kind: global constant

+ +

isValidFilename(filename) ⇒ boolean

+

Returns true if this matches valid filename specifications. +See http://msdn.microsoft.com/en-us/library/windows/desktop/aa365247(v=vs.85).aspx

+

TODO: This likely belongs in FileUtils.

+

Kind: global function
+Returns: boolean - true if the filename is valid

+
ParamTypeDescription
filenamestringto check
+ +

isValidPath(path) ⇒ boolean

+

Returns true if given path is valid.

+

Kind: global function
+Returns: boolean - true if the filename is valid

+
ParamTypeDescription
pathstringto check
+ +

shouldShow(entry) ⇒ boolean

+

Returns false for files and directories that are not commonly useful to display.

+

Kind: global function
+Returns: boolean - true if the file should be displayed

+
ParamTypeDescription
entryFileSystemEntryFile or directory to filter
+ +

shouldIndex(entry) ⇒ boolean

+

Returns false for files and directories that should not be indexed for search or code hints. +If the entry is a directory, its children should be indexed too.

+

Kind: global function
+Returns: boolean - true if the file should be displayed

+
ParamTypeDescription
entryFileSystemEntryFile or directory to filter
+ +

doCreate(path, isFolder) ⇒ $.Promise

+

Creates a new file or folder at the given path. The returned promise is rejected if the filename +is invalid, the new path already exists or some other filesystem error comes up.

+

Kind: global function
+Returns: $.Promise - resolved when the file or directory has been created.

+
ParamTypeDescription
pathstringpath to create
isFolderbooleantrue if the new entry is a folder
+ + \ No newline at end of file diff --git a/api/API-Reference/project/ProjectModel/index.html b/api/API-Reference/project/ProjectModel/index.html new file mode 100644 index 00000000..1e9a8cbc --- /dev/null +++ b/api/API-Reference/project/ProjectModel/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/project/SidebarView.html b/api/API-Reference/project/SidebarView.html new file mode 100644 index 00000000..52408ceb --- /dev/null +++ b/api/API-Reference/project/SidebarView.html @@ -0,0 +1,76 @@ + + + + + +SidebarView | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

SidebarView

Import :

+
const SidebarView = brackets.getModule("project/SidebarView")
+ +

AppInit

+

The view that controls the showing and hiding of the sidebar.

+

Although the sidebar view doesn't dispatch any events directly, it is a +resizable element (../utils/Resizer.js), which means it can dispatch Resizer +events. For example, if you want to listen for the sidebar showing +or hiding itself, set up listeners for the corresponding Resizer events, +panelCollapsed and panelExpanded:

+

$("#sidebar").on("panelCollapsed", ...); +$("#sidebar").on("panelExpanded", ...);

+

Kind: global variable

+ +

toggle()

+

Toggle sidebar visibility.

+

Kind: global function

+ +

show()

+

Show the sidebar.

+

Kind: global function

+ +

hide()

+

Hide the sidebar.

+

Kind: global function

+ +

isVisible() ⇒ boolean

+

Returns the visibility state of the sidebar.

+

Kind: global function
+Returns: boolean - true if element is visible, false if it is not visible

+ +

resize(width)

+

Programmatically resize the sidebar to the given width. Persists +the new size so it is restored on reload, resyncs the drag handle, +and fires panelResizeEnd.

+

Kind: global function

+
ParamTypeDescription
widthnumberDesired sidebar width in pixels
+ +

getWidth() ⇒ number

+

Get the current sidebar width in pixels. Returns the CSS width +even if the sidebar is hidden (so the value can be restored later).

+

Kind: global function

+ + \ No newline at end of file diff --git a/api/API-Reference/project/SidebarView/index.html b/api/API-Reference/project/SidebarView/index.html new file mode 100644 index 00000000..728d037c --- /dev/null +++ b/api/API-Reference/project/SidebarView/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/project/WorkingSetSort.html b/api/API-Reference/project/WorkingSetSort.html new file mode 100644 index 00000000..1ce384d8 --- /dev/null +++ b/api/API-Reference/project/WorkingSetSort.html @@ -0,0 +1,103 @@ + + + + + +WorkingSetSort | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

WorkingSetSort

Import :

+
const WorkingSetSort = brackets.getModule("project/WorkingSetSort")
+ +

Sort

+

Kind: global class

+ + +

new Sort(commandID, compareFn, events)

+
ParamTypeDescription
commandIDstringA valid command identifier.
compareFnfunctionA valid sort function (see register for a longer explanation).
eventsstringSpace-separated WorkingSetSort possible events ending with ".sort".
+ +

sort.getCommandID() ⇒ string

+

The Command ID

+

Kind: instance method of Sort

+ +

sort.getCompareFn() ⇒ function

+

The compare function

+

Kind: instance method of Sort

+ +

sort.getEvents() ⇒ string

+

Gets the event that this sort object is listening to

+

Kind: instance method of Sort

+ +

sort.setChecked(value)

+

Checks/Unchecks the command which will show a check in the menu

+

Kind: instance method of Sort

+
ParamType
valueboolean
+ +

sort.execute()

+

Performs the sort and makes it the current sort method.

+

Kind: instance method of Sort

+ +

sort.sort()

+

Only performs the working set sort if this is the current sort.

+

Kind: instance method of Sort

+ +

Commands

+

Manages the workingSetList sort methods.

+

Kind: global variable

+ +

get(command) ⇒ Sort

+

Retrieves a Sort object by id

+

Kind: global function

+
ParamTypeDescription
commandstring | CommandA command ID or a command object.
+ +

getAutomatic() ⇒ boolean

+

Kind: global function
+Returns: boolean - Enabled state of Automatic Sort.

+ +

setAutomatic(enable)

+

Enables/Disables Automatic Sort depending on the value.

+

Kind: global function

+
ParamTypeDescription
enablebooleanTrue to enable, false to disable.
+ +

register(command, compareFn, events) ⇒ Sort

+

Registers a working set sort method.

+

Kind: global function

+
ParamTypeDescription
commandstring | CommandA command ID or a command object
compareFnfunctionThe function that will be used inside JavaScript's sort function. The return a value should be >0 (sort a to a lower index than b), =0 (leaves a and b unchanged with respect to each other) or < 0 (sort b to a lower index than a) and must always returns the same value when given a specific pair of elements a and b as its two arguments. Documentation at: https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/sort
eventsstringOne or more space-separated event types that DocumentManger uses. Each event passed will trigger the automatic sort. If no events are passed, the automatic sort will be disabled for that sort method.
+ + \ No newline at end of file diff --git a/api/API-Reference/project/WorkingSetSort/index.html b/api/API-Reference/project/WorkingSetSort/index.html new file mode 100644 index 00000000..d2d7f6dc --- /dev/null +++ b/api/API-Reference/project/WorkingSetSort/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/project/WorkingSetView.html b/api/API-Reference/project/WorkingSetView.html new file mode 100644 index 00000000..60ef44c6 --- /dev/null +++ b/api/API-Reference/project/WorkingSetView.html @@ -0,0 +1,65 @@ + + + + + +WorkingSetView | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

WorkingSetView

Import :

+
const WorkingSetView = brackets.getModule("project/WorkingSetView")
+ +

refresh()

+

Refreshes all Pane View List Views

+

Kind: global function

+ +

syncSelectionIndicator()

+

Synchronizes the selection indicator for all views

+

Kind: global function

+ +

createWorkingSetViewForPane($container, paneId)

+

Creates a new WorkingSetView object for the specified pane

+

Kind: global function

+
ParamTypeDescription
$containerjQuerythe WorkingSetView's DOM parent node
paneIdstringthe id of the pane the view is being created for
+ +

addIconProvider(callback, [priority])

+

Adds an icon provider. The callback is invoked before each working set item is created, and can +return content to prepend to the item if it supports the icon.

+

Kind: global function

+
ParamTypeDefaultDescription
callbackfunctionReturn a string representing the HTML, a jQuery object or DOM node, or undefined. If undefined, nothing is prepended to the list item and the default or an available icon will be used.
[priority]number0optional priority. 0 being lowest. The icons with the highest priority wins if there are multiple callback providers attached. icon providers of the same priority first valid response wins.
+ +

addClassProvider(callback, [priority])

+

Adds a CSS class provider, invoked before each working set item is created or updated. When called +to update an existing item, all previously applied classes have been cleared.

+

Kind: global function

+
ParamTypeDefaultDescription
callbackfunctionReturn a string containing space-separated CSS class(es) to add, or undefined to leave CSS unchanged.
[priority]number0optional priority. 0 being lowest. The class with the highest priority wins if there are multiple callback classes attached. class providers of the same priority will be appended.
+ +

getContext()

+

Gets the filesystem object for the current context in the working set.

+

Kind: global function

+ + \ No newline at end of file diff --git a/api/API-Reference/project/WorkingSetView/index.html b/api/API-Reference/project/WorkingSetView/index.html new file mode 100644 index 00000000..fde9a04d --- /dev/null +++ b/api/API-Reference/project/WorkingSetView/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/search/FileFilters.html b/api/API-Reference/search/FileFilters.html new file mode 100644 index 00000000..20d5f36e --- /dev/null +++ b/api/API-Reference/search/FileFilters.html @@ -0,0 +1,102 @@ + + + + + +FileFilters | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

FileFilters

Import :

+
const FileFilters = brackets.getModule("search/FileFilters")
+ + +

Utilities for managing file-set filters, as used in Find in Files. +Includes both UI for selecting/editing filters, as well as the actual file-filtering implementation.

+

Kind: global constant

+ +

FILTER_TYPE_EXCLUDE : string

+

Kind: global constant

+ +

FILTER_TYPE_INCLUDE : string

+

Kind: global constant

+ +

FILTER_TYPE_NO_FILTER : string

+

Kind: global constant

+ +

getActiveFilter() ⇒ Object

+

A search filter is an array of one or more glob strings. The filter must be 'compiled' via compile() +before passing to filterPath()/filterFileList().

+

Kind: global function
+Returns: Object - a globeFilter filter that can be passed to filterPath()/filterFileList().

+ +

setActiveFilter(filter, [filterType])

+

Sets and save the index of the active filter. Automatically set when editFilter() is completed. +If no filter is passed in, then clear the last active filter index by setting it to -1.

+

Kind: global function

+
ParamTypeDescription
filterObject | stringa globeFilter filter that can be passed to filterPath()/filterFileList().
[filterType]stringoptional, one of FileFilters.FILTER_TYPE_*.
+ +

compile(userFilterString) ⇒ Object

+

Converts a user-specified filter object (as chosen in picker or retrieved from getFilters()) to a 'compiled' form +that can be used with filterPath()/filterFileList().

+

Kind: global function
+Returns: Object - a globeFilter filter that can be passed to filterPath()/filterFileList().

+
ParamType
userFilterStringstring
+ +

filterPath(compiledFilter, fullPath) ⇒ boolean

+

Returns false if the given path matches any of the exclusion globs in the given filter. Returns true +if the path does not match any of the globs. If filtering many paths at once, use filterFileList() +for much better performance.

+

Kind: global function

+
ParamTypeDescription
compiledFilterobject'Compiled' filter object as returned by compile(), or null to no-op
fullPathstring
+ +

filterFileList(compiledFilter, files) ⇒ Array.<File>

+

Returns a copy of 'files' filtered to just those that don't match any of the exclusion globs in the filter.

+

Kind: global function

+
ParamTypeDescription
compiledFilterobject'Compiled' filter object as returned by compile(), or null to no-op
filesArray.<File>
+ +

getPathsMatchingFilter(compiledFilter, An) ⇒ Array.<string>

+

Returns a copy of 'file path' strings that match any of the exclusion globs in the filter.

+

Kind: global function

+
ParamTypeDescription
compiledFilterobject'Compiled' filter object as returned by compile(), or null to no-op
AnArray.<string>array with a list of full file paths that matches atleast one of the filter.
+ +

createFilterPicker() ⇒ jQueryObject

+

Creates a UI element for selecting a filter. The picker is populated with a list of recently used filters, +an option to edit the selected filter, and another option to create a new filter. The client should call +commitDropdown() when the UI containing the filter picker is confirmed, which updates the Most Recently +Used (MRU) order, and then use the returned filter object as needed.

+

Kind: global function
+Returns: jQueryObject - The Picker UI as a jQuery object.

+ +

showDropdown()

+

Allows unit tests to open the file filter dropdown list.

+

Kind: global function

+ +

closeDropdown()

+

Allows unit tests to close the file filter dropdown list.

+

Kind: global function

+ + \ No newline at end of file diff --git a/api/API-Reference/search/FileFilters/index.html b/api/API-Reference/search/FileFilters/index.html new file mode 100644 index 00000000..ca281109 --- /dev/null +++ b/api/API-Reference/search/FileFilters/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/search/FindBar.html b/api/API-Reference/search/FindBar.html new file mode 100644 index 00000000..a3af9b7d --- /dev/null +++ b/api/API-Reference/search/FindBar.html @@ -0,0 +1,165 @@ + + + + + +FindBar | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

FindBar

Import :

+
const FindBar = brackets.getModule("search/FindBar")
+ +

FindBar

+

Kind: global class

+ + +

new FindBar([scopeLabel])

+

Find Bar UI component, used for both single- and multi-file find/replace. This doesn't actually +create and add the FindBar to the DOM - for that, call open().

+

Dispatches these events:

+
    +
  • queryChange - when the user types in the input field or sets a query option. Use getQueryInfo() +to get the current query state.
  • +
  • doFind - when the user chooses to do a Find Previous or Find Next. +Parameters are: +shiftKey - boolean, false for Find Next, true for Find Previous
  • +
  • doReplace - when the user chooses to do a single replace. Use getReplaceText() to get the current replacement text.
  • +
  • doReplaceBatch - when the user chooses to initiate a Replace All. Use getReplaceText() to get the current replacement text.
  • +
  • doReplaceAll - when the user chooses to perform a Replace All. Use getReplaceText() to get the current replacement text.
  • +
  • close - when the find bar is closed
  • +
+
ParamTypeDescription
[options.multifile]booleantrue if this is a Find/Replace in Files (changes the behavior of Enter in the fields, hides the navigator controls, shows the scope/filter controls, and if in replace mode, hides the Replace button (so there's only Replace All)
[options.replace]booleantrue to show the Replace controls - default false
[options.queryPlaceholder]stringlabel to show in the Find field - default empty string
[options.initialQuery]stringquery to populate in the Find field on open - default empty string
[scopeLabel]stringHTML label to show for the scope of the search, expected to be already escaped - default empty string
+ +

findBar.open()

+

Opens the Find bar, closing any other existing Find bars.

+

Kind: instance method of FindBar

+ +

findBar.close(suppressAnimation)

+

Closes this Find bar. If already closed, does nothing.

+

Kind: instance method of FindBar

+
ParamTypeDescription
suppressAnimationbooleanIf true, don't do the standard closing animation. Default false.
+ +

findBar.isClosed() ⇒ boolean

+

Kind: instance method of FindBar
+Returns: boolean - true if this FindBar has been closed.

+ +

findBar.getOptions() ⇒ Object

+

Kind: instance method of FindBar
+Returns: Object - The options passed into the FindBar.

+ +

findBar.getQueryInfo() ⇒ Object

+

Returns the current query and parameters.

+

Kind: instance method of FindBar

+ +

findBar.showError(error, [isHTML], [isFilterError])

+

Show or clear an error message related to the query.

+

Kind: instance method of FindBar

+
ParamTypeDescription
errorstringThe error message to show, or null to hide the error display.
[isHTML]booleanWhether the error message is HTML that should remain unescaped.
[isFilterError]booleanWhether the error related to file filters
+ +

findBar.showFindCount(count)

+

Set the find count.

+

Kind: instance method of FindBar

+
ParamTypeDescription
countstringThe find count message to show. Can be the empty string to hide it.
+ +

findBar.showNoResults(showIndicator, showMessage)

+

Show or hide the no-results indicator and optional message. This is also used to +indicate regular expression errors.

+

Kind: instance method of FindBar

+
ParamType
showIndicatorboolean
showMessageboolean
+ +

findBar.getReplaceText() ⇒ string

+

Returns the current replace text.

+

Kind: instance method of FindBar

+ +

findBar.enable(enable)

+

Enables or disables the controls in the Find bar. Note that if enable is true, all controls will be +re-enabled, even if some were previously disabled using enableNavigation() or enableReplace(), so you +will need to refresh their enable state after calling this.

+

Kind: instance method of FindBar

+
ParamTypeDescription
enablebooleanWhether to enable or disable the controls.
+ +

findBar.isEnabled() ⇒ boolean

+

Kind: instance method of FindBar
+Returns: boolean - true if the FindBar is enabled.

+ +

findBar.isReplaceEnabled() ⇒ boolean

+

Kind: instance method of FindBar
+Returns: boolean - true if the Replace button is enabled.

+ +

findBar.enableNavigation(enable)

+

Enable or disable the navigation controls if present. Note that if the Find bar is currently disabled +(i.e. isEnabled() returns false), this will have no effect.

+

Kind: instance method of FindBar

+
ParamTypeDescription
enablebooleanWhether to enable the controls.
+ +

findBar.enableReplace(enable)

+

Enable or disable the replace controls if present. Note that if the Find bar is currently disabled +(i.e. isEnabled() returns false), this will have no effect.

+

Kind: instance method of FindBar

+
ParamTypeDescription
enablebooleanWhether to enable the controls.
+ +

findBar.focusQuery()

+

Sets focus to the query field and selects its text.

+

Kind: instance method of FindBar

+ +

findBar.focusReplace()

+

Sets focus to the replace field and selects its text.

+

Kind: instance method of FindBar

+ +

findBar.showIndexingSpinner()

+

The indexing spinner is usually shown when node is indexing files

+

Kind: instance method of FindBar

+ +

findBar.redoInstantSearch()

+

Force a search again

+

Kind: instance method of FindBar

+ + \ No newline at end of file diff --git a/api/API-Reference/search/FindBar/index.html b/api/API-Reference/search/FindBar/index.html new file mode 100644 index 00000000..5de538c6 --- /dev/null +++ b/api/API-Reference/search/FindBar/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/search/FindInFiles.html b/api/API-Reference/search/FindInFiles.html new file mode 100644 index 00000000..ae41437d --- /dev/null +++ b/api/API-Reference/search/FindInFiles.html @@ -0,0 +1,76 @@ + + + + + +FindInFiles | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

FindInFiles

Import :

+
const FindInFiles = brackets.getModule("search/FindInFiles")
+ +

searchModel : SearchModel

+

The search query and results model.

+

Kind: global variable

+ +

@type : Object

+

Token used to indicate a specific reason for zero search results

+

Kind: global constant

+ +

getCandidateFiles(scope) ⇒ $.Promise

+

Finds all candidate files to search in the given scope's subtree that are not binary content. Does NOT apply +the current filter yet.

+

Kind: global function
+Returns: $.Promise - A promise that will be resolved with the list of files in the scope. Never rejected.

+
ParamTypeDescription
scopeFileSystemEntrySearch scope, or null if whole project
+ +

doSearchInScope(queryInfo, scope, filter, replaceText, candidateFilesPromise) ⇒ $.Promise

+

Does a search in the given scope with the given filter. Used when you want to start a search +programmatically. Make sure that project indexing is complete by calling isProjectIndexingComplete() +Else, an empty result will be returned if search is invoked before any files are indexed.

+

Kind: global function
+Returns: $.Promise - A promise that's resolved with the search results or rejected when the find competes.

+
ParamTypeDescription
queryInfoObjectQuery info object
scopeEntryProject file/subfolder to search within; else searches whole project.
filterstringA "compiled" filter as returned by FileFilters.compile(), or null for no filter
replaceTextstringIf this is a replacement, the text to replace matches with. This is just stored in the model for later use - the replacement is not actually performed right now.
candidateFilesPromise$.PromiseIf specified, a promise that should resolve with the same set of files that getCandidateFiles(scope) would return.
+ +

doReplace(results, replaceText, options, item, error) ⇒ $.Promise

+

Replaces a set of search results with the specified replaceText, either on disk or in memory.

+

Kind: global function
+Returns: $.Promise - A promise that resolves when the replacement is finished or is rejected with an array of errors if any occur. +Each item in the array will be an object containing:

+
ParamTypeDescription
resultsObject- The list of results to replace, as returned from _doSearch.
replaceTextstringThe text to replace each result with.
optionsObjectAn options object:
options.forceFilesOpenbooleanWhether to open all files in editors and perform replacements there instead of on disk. Note that even if this is false, replacements will still occur in memory for files already open in editors.
options.isRegexpbooleanIndicates if the original query was a regular expression. If true, $-substitution is applied to the replaceText.
itemstringThe full path to the file that could not be updated.
errorstringEither a FileSystem error or one of the FindInFiles.ERROR_* constants.
+ +

getNextPageofSearchResults() ⇒ object

+

Gets the next page of search results to append to the result set.

+

Kind: global function
+Returns: object - A promise that's resolved with the search results or rejected when the find competes.

+ +

getAllSearchResults() ⇒ object

+

Get all the search results.

+

Kind: global function
+Returns: object - A promise that's resolved with the search results or rejected when the find competes.

+ + \ No newline at end of file diff --git a/api/API-Reference/search/FindInFiles/index.html b/api/API-Reference/search/FindInFiles/index.html new file mode 100644 index 00000000..691336ab --- /dev/null +++ b/api/API-Reference/search/FindInFiles/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/search/FindUtils.html b/api/API-Reference/search/FindUtils.html new file mode 100644 index 00000000..e8337cad --- /dev/null +++ b/api/API-Reference/search/FindUtils.html @@ -0,0 +1,154 @@ + + + + + +FindUtils | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

FindUtils

Import :

+
const FindUtils = brackets.getModule("search/FindUtils")
+ +

parseDollars(replaceWith, match) ⇒ string

+

Given a replace string that contains $-expressions, replace them with data from the given +regexp match info. +NOTE: we can't just use the ordinary replace() function here because the string has been +extracted from the original text and so might be missing some context that the regexp matched.

+

Kind: global function
+Returns: string - The replace text with the $-expressions substituted.

+
ParamTypeDescription
replaceWithstringThe string containing the $-expressions.
matchObjectThe match data from the regexp.
+ +

performReplacements(results, replaceText, options) ⇒ $.Promise

+

Given a set of search results, replaces them with the given replaceText, either on disk or in memory. +Checks timestamps to ensure replacements are not performed in files that have changed on disk since +the original search results were generated. However, does not check whether edits have been performed +in in-memory documents since the search; it's up to the caller to guarantee this hasn't happened. +(When called from the standard Find in Files UI, SearchResultsView guarantees this. If called headlessly, +the caller needs to track changes.)

+

Replacements in documents that are already open in memory at the start of the replacement are guaranteed to +happen synchronously; replacements in files on disk will return an error if the on-disk file changes between +the time performReplacements() is called and the time the replacement actually happens.

+

Kind: global function
+Returns: $.Promise - A promise that's resolved when the replacement is finished or rejected with an array of errors +if there were one or more errors. Each individual item in the array will be a {item: string, error: string} object, +where item is the full path to the file that could not be updated, and error is either a FileSystem error or one +of the FindUtils.ERROR_* constants.

+
ParamTypeDescription
resultsObjectThe list of results to replace, as returned from _doSearch.
replaceTextstringThe text to replace each result with.
optionsObjectAn options object:
[options.forceFilesOpen]booleanWhether to open all files in editors and do replacements there rather than doing the replacements on disk. Note that even if this is false, files that are already open in editors will have replacements done in memory.
[options.isRegexp]booleanWhether the original query was a regexp. If true, $-substitution is performed on the replaceText.
+ +

labelForScope(scope) ⇒ string

+

Returns label text to indicate the search scope. Already HTML-escaped.

+

Kind: global function

+
ParamType
scopeEntry
+ +

parseQueryInfo(queryInfo) ⇒ Object

+

Parses the given query into a regexp, and returns whether it was valid or not.

+

Kind: global function
+Returns: Object - queryExpr - the regexp representing the query +valid - set to true if query is a nonempty string or a valid regexp. +empty - set to true if query was empty. +error - set to an error string if valid is false and query is nonempty.

+
ParamType
queryInfoObject
+ +

prioritizeOpenFile(files, firstFile) ⇒ Array.<*>

+

Prioritizes the open file and then the working set files to the starting of the list of files

+

Kind: global function

+
ParamTypeDescription
filesArray.<*>An array of file paths or file objects to sort
firstFilestringIf specified, the path to the file that should be sorted to the top.
+ +

getOpenFilePath() ⇒ string

+

Returns the path of the currently open file or null if there isn't one open

+

Kind: global function

+ +

setInstantSearchDisabled(disable)

+

enable/disable instant search

+

Kind: global function

+
ParamTypeDescription
disablebooleantrue to disable web worker based search
+ +

isInstantSearchDisabled() ⇒ boolean

+

if instant search is disabled, this will return true we can only do instant search through worker

+

Kind: global function

+ +

setIndexingSuspended(suspended)

+

Set whether indexing has been suspended due to cache size limit

+

Kind: global function

+
ParamTypeDescription
suspendedbooleantrue if indexing was suspended
+ +

isIndexingSuspended() ⇒ boolean

+

Check if indexing was suspended due to cache size limit. +When true, Find in Files should not perform searches.

+

Kind: global function

+ +

isWorkerSearchInProgress() ⇒ Boolean

+

check if a search is progressing in worker

+

Kind: global function
+Returns: Boolean - true if search is processing in worker

+ +

notifyFileFiltersChanged()

+

Raises an event when the file filters applied to a search changes

+

Kind: global function

+ +

notifySearchScopeChanged()

+

Raises an event when the search scope changes[say search in a subdirectory in the project]

+

Kind: global function

+ +

notifyWorkerSearchStarted()

+

Notifies that a worker search has started so that we FindUtils can figure out +if any outstanding worker search requests are pending

+

Kind: global function

+ +

notifyWorkerSearchFinished()

+

Notifies that a worker search has finished so that we FindUtils can figure out +if any outstanding worker search requests are pending

+

Kind: global function

+ +

notifyIndexingStarted()

+

Notifies that a worker has started indexing the files

+

Kind: global function

+ +

notifyIndexingProgress()

+

Notifies that a worker has started indexing the files

+

Kind: global function

+ +

notifyIndexingFinished()

+

Notifies that a worker has finished indexing the files

+

Kind: global function

+ +

isIndexingInProgress() ⇒ boolean

+

Return true if indexing is in progress in worker

+

Kind: global function
+Returns: boolean - true if files are being indexed in worker

+ +

setCollapseResults(collapse)

+

Set if we need to collapse all results in the results pane

+

Kind: global function

+
ParamTypeDescription
collapsebooleantrue to collapse
+ +

isCollapsedResults() ⇒ boolean

+

check if results should be collapsed

+

Kind: global function
+Returns: boolean - true if results should be collapsed

+ + \ No newline at end of file diff --git a/api/API-Reference/search/FindUtils/index.html b/api/API-Reference/search/FindUtils/index.html new file mode 100644 index 00000000..de62ac67 --- /dev/null +++ b/api/API-Reference/search/FindUtils/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/search/QuickOpen.html b/api/API-Reference/search/QuickOpen.html new file mode 100644 index 00000000..e4c1cc40 --- /dev/null +++ b/api/API-Reference/search/QuickOpen.html @@ -0,0 +1,63 @@ + + + + + +QuickOpen | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

QuickOpen

Import :

+
const QuickOpen = brackets.getModule("search/QuickOpen")
+ +

SymbolKind : Object

+

Represents the symbol kind

+

Kind: global variable

+ +

QuickOpenPlugin()

+

Defines API for new QuickOpen plug-ins

+

Kind: global function

+ +

addQuickOpenPlugin(pluginDef)

+

Creates and registers a new QuickOpenPlugin

+

Kind: global function

+
ParamTypeDescription
pluginDefObjectPlugin definition object containing the following properties: {string} name - Plug-in name, must be unique. {Array(string)} languageIds - Language Ids array. Example: ["javascript", "css", "html"]. To allow any language, pass []. Required. {function()} [done] - Called when quick open is complete. Plug-in should clear its internal state. Optional. {function(string, StringMatch.StringMatcher): (Array(SearchResult
+ +

highlightMatch(item, matchClass, rangeFilter) ⇒ string

+

Formats item's label as properly escaped HTML text, highlighting sections that match 'query'. +If item is a SearchResult generated by stringMatch(), uses its metadata about which string ranges +matched; else formats the label with no highlighting.

+

Kind: global function
+Returns: string - bolded, HTML-escaped result

+
ParamTypeDescription
itemstring | SearchResult
matchClassstringCSS class for highlighting matched text
rangeFilterfunction
+ +

beginSearch(prefix, initialString)

+

Opens the Quick Open bar prepopulated with the given prefix (to select a mode) and optionally +with the given query text too. Updates text field contents if Quick Open already open.

+

Kind: global function

+
ParamType
prefixstring
initialStringstring
+ + \ No newline at end of file diff --git a/api/API-Reference/search/QuickOpen/index.html b/api/API-Reference/search/QuickOpen/index.html new file mode 100644 index 00000000..9fbcc07d --- /dev/null +++ b/api/API-Reference/search/QuickOpen/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/search/QuickOpenHelper.html b/api/API-Reference/search/QuickOpenHelper.html new file mode 100644 index 00000000..4a509ead --- /dev/null +++ b/api/API-Reference/search/QuickOpenHelper.html @@ -0,0 +1,52 @@ + + + + + +QuickOpenHelper | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

QuickOpenHelper

Import :

+
const QuickOpenHelper = brackets.getModule("search/QuickOpenHelper")
+ +

match(query, returns)

+

Kind: global function

+
ParamTypeDescription
querystringwhat the user is searching for
returnsbooleantrue if this plug-in wants to provide results for this query
+ +

itemFocus(selectedItem, query, explicit)

+

Scroll to the selected item in the current document (unless no query string entered yet, +in which case the topmost list item is irrelevant)

+

Kind: global function

+
ParamTypeDescription
selectedItemSearchResult
querystring
explicitbooleanFalse if this is only highlighted due to being at top of list after search()
+ +

itemSelect(selectedItem, query)

+

Scroll to the selected item in the current document (unless no query string entered yet, +in which case the topmost list item is irrelevant)

+

Kind: global function

+
ParamType
selectedItemSearchResult
querystring
+ + \ No newline at end of file diff --git a/api/API-Reference/search/QuickOpenHelper/index.html b/api/API-Reference/search/QuickOpenHelper/index.html new file mode 100644 index 00000000..eed18765 --- /dev/null +++ b/api/API-Reference/search/QuickOpenHelper/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/search/QuickSearchField.html b/api/API-Reference/search/QuickSearchField.html new file mode 100644 index 00000000..229f6560 --- /dev/null +++ b/api/API-Reference/search/QuickSearchField.html @@ -0,0 +1,92 @@ + + + + + +QuickSearchField | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

QuickSearchField

Import :

+
const QuickSearchField = brackets.getModule("search/QuickSearchField")
+ +

QuickSearchField

+

Kind: global class

+ + +

new QuickSearchField($input)

+

Attaches to an existing "input" tag

+
ParamTypeDescription
$inputjQueryObject
options.resultProviderfunctionGiven the current search text, returns an array of result objects, an error object, or a Promise that yields one of those. If the Promise is still outstanding when the query next changes, resultProvider() will be called again (without waiting for the earlier Promise), and the Promise's result will be ignored. If the provider yields [], or a non-null error string, input is decorated with ".no-results"; if the provider yields a null error string, input is not decorated.
options.formatterfunctionConverts one result object to a string of HTML text. Passed the item and the current query. The outermost element must be "li". The ".highlight" class can be ignored as it is applied automatically.
options.onCommitfunctionCalled when an item is selected by clicking or pressing Enter. Passed the committed item and the current query and its index. If the current result list is not up to date with the query text at the time Enter is pressed, waits until it is before running this callback. If Enter pressed with no results, passed null. The popup remains open after this event.
options.onHighlightfunctionCalled when an item is highlighted in the list. Passed the item, the current query, and a flag that is true if the item was highlighted explicitly (arrow keys), not simply due to a results list update. Since the top item in the list is always initially highlighted, every time the list is updated onHighlight() is called with the top item and with the explicit flag set to false.
options.onDeletefunctionCalled when delete key is pressed on a selected item in the list. Passed the item.
options.onDismissfunctionCalled when popup is dismissed with escape key press. Popup is not usable after this point.
options.maxResultsnumberMaximum number of items from resultProvider() to display in the popup.
options.verticalAdjustnumberNumber of pixels to position the popup below where $input is when constructor is called. Useful if UI is going to animate position after construction, but QuickSearchField may receive input before the animation is done.
options.$positionEljQueryObjectIf provided, the popup will be positioned based on this.
options.firstHighlightIndexnumberIndex of the result that is highlighted by default. null to not highlight any result.
options.focusLastActiveElementOnClosebooleanIf set to true, focuses the last active element on close. By default, the editor is always focused.
+ +

quickSearchField.options : Object

+

Kind: instance property of QuickSearchField

+ +

quickSearchField.$input : jQueryObject

+

Kind: instance property of QuickSearchField

+ +

quickSearchField.$positionEl : jQueryObject

+

Kind: instance property of QuickSearchField

+ +

quickSearchField.updateResults()

+

Refresh the results dropdown, as if the user had changed the search text. Useful for providers that +want to show cached data initially, then update the results with fresher data once available.

+

Kind: instance method of QuickSearchField

+ +

quickSearchField.setText(value)

+

Programmatically changes the search text and updates the results.

+

Kind: instance method of QuickSearchField

+
ParamType
valuestring
+ +

quickSearchField.destroy()

+

Closes the dropdown, and discards any pending Promises.

+

Kind: instance method of QuickSearchField

+ +

KeyEvent

+

Text field with attached dropdown list that is updated (based on a provider) whenever the text changes.

+

For styling, the DOM structure of the popup is as follows: +body +ol.quick-search-container +li +li.highlight +li +And the text field is: +input +input.no-results

+

Kind: global constant

+ + \ No newline at end of file diff --git a/api/API-Reference/search/QuickSearchField/index.html b/api/API-Reference/search/QuickSearchField/index.html new file mode 100644 index 00000000..4c2feeed --- /dev/null +++ b/api/API-Reference/search/QuickSearchField/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/search/SearchModel.html b/api/API-Reference/search/SearchModel.html new file mode 100644 index 00000000..a3f0a212 --- /dev/null +++ b/api/API-Reference/search/SearchModel.html @@ -0,0 +1,48 @@ + + + + + +SearchModel | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

SearchModel

Import :

+
const SearchModel = brackets.getModule("search/SearchModel")
+ +

Manages a set of search query and result data.

+

Dispatches these events: +change - whenever the results have been updated. Note that its up to people who +edit the model to call fireChange() when necessary - it doesnt automatically fire. +Kind: global class

+ +

Constant

+

Kind: global constant

+ + \ No newline at end of file diff --git a/api/API-Reference/search/SearchModel/index.html b/api/API-Reference/search/SearchModel/index.html new file mode 100644 index 00000000..9a0f8dc3 --- /dev/null +++ b/api/API-Reference/search/SearchModel/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/search/SearchResultsView.html b/api/API-Reference/search/SearchResultsView.html new file mode 100644 index 00000000..adbdfe3d --- /dev/null +++ b/api/API-Reference/search/SearchResultsView.html @@ -0,0 +1,54 @@ + + + + + +SearchResultsView | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

SearchResultsView

Import :

+
const SearchResultsView = brackets.getModule("search/SearchResultsView")
+ +

Handles the search results panel.

+

Dispatches the following events: +replaceBatch - when the Replace button is clicked. +close - when the panel is closed. +Kind: global class

+ +

new Handles the search results panel.

+

Dispatches the following events: +replaceBatch - when the Replace button is clicked. +close - when the panel is closed.(model, panelID, panelName, type, [title])

+
ParamTypeDescription
modelSearchModelThe model that this view is showing.
panelIDstringThe CSS ID to use for the panel.
panelNamestringThe name to use for the panel, as passed to WorkspaceManager.createBottomPanel().
typestringtype to identify if it is reference search or string match serach
[title]stringDisplay title for the panel tab.
+ + \ No newline at end of file diff --git a/api/API-Reference/search/SearchResultsView/index.html b/api/API-Reference/search/SearchResultsView/index.html new file mode 100644 index 00000000..770ab69f --- /dev/null +++ b/api/API-Reference/search/SearchResultsView/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/utils/AppInit.html b/api/API-Reference/utils/AppInit.html new file mode 100644 index 00000000..a8267d63 --- /dev/null +++ b/api/API-Reference/utils/AppInit.html @@ -0,0 +1,80 @@ + + + + + +AppInit | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

AppInit

Import :

+
const AppInit = brackets.getModule("utils/AppInit")
+ +

Metrics

+

Defines hooks to assist with module initialization.

+

This module defines 3 methods for client modules to attach callbacks:

+
    +
  • htmlReady - When the main application template is rendered
  • +
  • extensionsLoaded - When the extension manager has loaded all extensions
  • +
  • appReady - When Brackets completes loading all modules and extensions
  • +
+

These are not jQuery events. Each method is similar to $(document).ready +in that it will call the handler immediately if brackets is already done +loading.

+

Kind: global constant

+ +

HTML_READY : string

+

Fires when the base htmlContent/main-view.html is loaded

+

Kind: global constant

+ +

APP_READY : string

+

Fires when all extensions are loaded

+

Kind: global constant

+ +

EXTENSIONS_LOADED : string

+

Fires after extensions have been loaded

+

Kind: global constant

+ +

appReady(handler)

+

Adds a callback for the ready hook. Handlers are called after +htmlReady is done, the initial project is loaded, and all extensions are +loaded.

+

Kind: global function

+
ParamTypeDescription
handlerfunctioncallback function to call when the event is fired
+ +

htmlReady(handler)

+

Adds a callback for the htmlReady hook. Handlers are called after the +main application html template is rendered.

+

Kind: global function

+
ParamTypeDescription
handlerfunctioncallback function to call when the event is fired
+ +

extensionsLoaded(handler)

+

Adds a callback for the extensionsLoaded hook. Handlers are called after the +extensions have been loaded

+

Kind: global function

+
ParamTypeDescription
handlerfunctioncallback function to call when the event is fired
+ + \ No newline at end of file diff --git a/api/API-Reference/utils/AppInit/index.html b/api/API-Reference/utils/AppInit/index.html new file mode 100644 index 00000000..ea8363d2 --- /dev/null +++ b/api/API-Reference/utils/AppInit/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/utils/Async.html b/api/API-Reference/utils/Async.html new file mode 100644 index 00000000..7c24e615 --- /dev/null +++ b/api/API-Reference/utils/Async.html @@ -0,0 +1,221 @@ + + + + + +Async | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

Async

Import :

+
const Async = brackets.getModule("utils/Async")
+ +

PromiseQueue

+

Kind: global class

+ + +

new PromiseQueue()

+

Creates a queue of async operations that will be executed sequentially. Operations can be added to the +queue at any time. If the queue is empty and nothing is currently executing when an operation is added, +it will execute immediately. Otherwise, it will execute when the last operation currently in the queue +has finished.

+ +

promiseQueue.add(op)

+

Adds an operation to the queue. If nothing is currently executing, it will execute immediately (and +the next operation added to the queue will wait for it to complete). Otherwise, it will wait until +the last operation in the queue (or the currently executing operation if nothing is in the queue) is +finished. The operation must return a promise that will be resolved or rejected when it's finished; +the queue will continue with the next operation regardless of whether the current operation's promise +is resolved or rejected.

+

Kind: instance method of PromiseQueue

+
ParamTypeDescription
opfunctionThe operation to add to the queue.
+ +

promiseQueue.removeAll()

+

Removes all pending promises from the queue.

+

Kind: instance method of PromiseQueue

+ +

ERROR_TIMEOUT : Object

+

Value passed to fail() handlers that have been triggered due to withTimeout()'s timeout

+

Kind: global variable

+ +

doInParallel(items, beginProcessItem, failFast) ⇒ $.Promise

+

Executes a series of tasks in parallel, returning a "master" Promise that is resolved once +all the tasks have resolved. If one or more tasks fail, behavior depends on the failFast +flag:

+
    +
  • If true, the master Promise is rejected as soon as the first task fails. The remaining +tasks continue to completion in the background.
  • +
  • If false, the master Promise is rejected after all tasks have completed.
  • +
+

If nothing fails: (M = master promise; 1-4 = tasks; d = done; F = fail) +M ------------d +1 >---d . +2 >------d . +3 >---------d . +4 >------------d

+

With failFast = false: +M ------------F +1 >---d . . +2 >------d . . +3 >---------F . +4 >------------d

+

With failFast = true: -- equivalent to $.when() +M ---------F +1 >---d . +2 >------d . +3 >---------F +4 >------------d (#4 continues even though master Promise has failed) +(Note: if tasks finish synchronously, the behavior is more like failFast=false because you +won't get a chance to respond to the master Promise until after all items have been processed)

+

To perform task-specific work after an individual task completes, attach handlers to each +Promise before beginProcessItem() returns it.

+

Note: don't use this if individual tasks (or their done/fail handlers) could ever show a user- +visible dialog: because they run in parallel, you could show multiple dialogs atop each other.

+

Kind: global function

+
ParamType
itemsArray.<*>
beginProcessItemfunction
failFastboolean
+ +

doSequentially(items, beginProcessItem, failAndStopFast) ⇒ $.Promise

+

Executes a series of tasks in serial (task N does not begin until task N-1 has completed). +Returns a "master" Promise that is resolved once all the tasks have resolved. If one or more +tasks fail, behavior depends on the failAndStopFast flag:

+
    +
  • If true, the master Promise is rejected as soon as the first task fails. The remaining +tasks are never started (the serial sequence is stopped).
  • +
  • If false, the master Promise is rejected after all tasks have completed.
  • +
+

If nothing fails: +M ------------d +1 >---d . +2 >--d . +3 >--d . +4 >--d

+

With failAndStopFast = false: +M ------------F +1 >---d . . +2 >--d . . +3 >--F . +4 >--d

+

With failAndStopFast = true: +M ---------F +1 >---d . +2 >--d . +3 >--F +4 (#4 never runs)

+

To perform task-specific work after an individual task completes, attach handlers to each +Promise before beginProcessItem() returns it.

+

Kind: global function

+
ParamType
itemsArray.<*>
beginProcessItemfunction
failAndStopFastboolean
+ +

doSequentiallyInBackground(items, fnProcessItem, [maxBlockingTime], [idleTime]) ⇒ $.Promise

+

Executes a series of synchronous tasks sequentially spread over time-slices less than maxBlockingTime. +Processing yields by idleTime between time-slices.

+

Kind: global function

+
ParamTypeDescription
itemsArray.<*>
fnProcessItemfunctionFunction that synchronously processes one item
[maxBlockingTime]number
[idleTime]number
+ +

firstSequentially(items, beginProcessItem) ⇒ $.Promise

+

Executes a series of tasks in serial (task N does not begin until task N-1 has completed). +Returns a "master" Promise that is resolved when the first task has resolved. If all tasks +fail, the master Promise is rejected.

+

Kind: global function

+
ParamType
itemsArray.<*>
beginProcessItemfunction
+ +

doInParallel_aggregateErrors(items, beginProcessItem) ⇒ $.Promise

+

Executes a series of tasks in parallel, saving up error info from any that fail along the way. +Returns a Promise that is only resolved/rejected once all tasks are complete. This is +essentially a wrapper around doInParallel(..., false).

+

If one or more tasks failed, the entire "master" promise is rejected at the end - with one +argument: an array objects, one per failed task. Each error object contains:

+
    +
  • item -- the entry in items whose task failed
  • +
  • error -- the first argument passed to the fail() handler when the task failed
  • +
+

Kind: global function

+
ParamType
itemsArray.<*>
beginProcessItemfunction
+ +

withTimeout(promise, timeout, [resolveTimeout]) ⇒ $.Promise

+

Adds timeout-driven termination to a Promise: returns a new Promise that is resolved/rejected when +the given original Promise is resolved/rejected, OR is resolved/rejected after the given delay - +whichever happens first.

+

If the original Promise is resolved/rejected first, done()/fail() handlers receive arguments +piped from the original Promise. If the timeout occurs first instead, then resolve() or +fail() (with Async.ERROR_TIMEOUT) is called based on value of resolveTimeout.

+

Kind: global function

+
ParamTypeDescription
promise$.Promise
timeoutnumber
[resolveTimeout]booleanIf true, then resolve deferred on timeout, otherwise reject. Default is false.
+ +

waitForAll(promises, [failOnReject], [timeout]) ⇒ $.Promise

+

Allows waiting for all the promises to be either resolved or rejected. +Unlike $.when(), it does not call .fail() or .always() handlers on first +reject. The caller should take all the precaution to make sure all the +promises passed to this function are completed to avoid blocking.

+

If failOnReject is set to true, promise returned by the function will be +rejected if at least one of the promises was rejected. The default value +is false, which will cause the call to this function to be always +successfully resolved.

+

If timeout is specified, the promise will be rejected on timeout as per +Async.withTimeout.

+

Kind: global function
+Returns: $.Promise - A Promise which will be resolved once all dependent promises are resolved. +It is resolved with an array of results from the successfully resolved dependent promises. +The resulting array may not be in the same order or contain as many items as there were +promises to wait on and it will contain 'undefined' entries for those promises that resolve +without a result.

+
ParamTypeDescription
promisesArray.<$.Promise>Array of promises to wait for
[failOnReject]booleanWhether to reject or not if one of the promises has been rejected.
[timeout]numberNumber of milliseconds to wait until rejecting the promise
+ +

chain(functions, args) ⇒ jQuery.Promise

+

Chains a series of synchronous and asynchronous (jQuery promise-returning) functions +together, using the result of each successive function as the argument(s) to the next. +A promise is returned that resolves with the result of the final call if all calls +resolve or return normally. Otherwise, if any of the functions reject or throw, the +computation is halted immediately and the promise is rejected with this halting error.

+

Kind: global function
+Returns: jQuery.Promise - A promise that resolves with the result of the final call, or +rejects with the first error.

+
ParamTypeDescription
functionsArray.<function(*)>Functions to be chained
argsArrayArguments to call the first function with
+ +

promisify(obj, method, ...varargs) ⇒ $.Promise

+

Utility for converting a method that takes (error, callback) to one that returns a promise; +useful for using FileSystem methods (or other Node-style API methods) in a promise-oriented +workflow. For example, instead of

+
     var deferred = new $.Deferred();
file.read(function (err, contents) {
if (err) {
deferred.reject(err);
} else {
// ...process the contents...
deferred.resolve();
}
}
return deferred.promise();
+

you can just do

+

return Async.promisify(file, "read").then(function (contents) );

+

The object/method are passed as an object/string pair so that we can +properly call the method without the caller having to deal with "bind" all the time.

+

Kind: global function
+Returns: $.Promise - A promise that is resolved with the arguments that were passed to the +errback (not including the err argument) if err is null, or rejected with the err if +non-null.

+
ParamTypeDescription
objObjectThe object to call the method on.
methodstringThe name of the method. The method should expect the errback as its last parameter.
...varargsObjectThe arguments you would have normally passed to the method (excluding the errback itself).
+ + \ No newline at end of file diff --git a/api/API-Reference/utils/Async/index.html b/api/API-Reference/utils/Async/index.html new file mode 100644 index 00000000..4b58a928 --- /dev/null +++ b/api/API-Reference/utils/Async/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/utils/ColorUtils.html b/api/API-Reference/utils/ColorUtils.html new file mode 100644 index 00000000..d16fd322 --- /dev/null +++ b/api/API-Reference/utils/ColorUtils.html @@ -0,0 +1,54 @@ + + + + + +ColorUtils | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

ColorUtils

Import :

+
const ColorUtils = brackets.getModule("utils/ColorUtils")
+ +

@type : Array

+

Sorted array of all the color names in the CSS Color Module Level 3 (http://www.w3.org/TR/css3-color/) +and "rebeccapurple" from CSS Color Module Level 4

+

Kind: global constant

+ +

@type : RegExp

+

Regular expression that matches reasonably well-formed colors in hex format (3 or 6 digits), +rgb()/rgba() function format, hsl()/hsla() function format, 0x notation format +or color name format according to CSS Color Module Level 3 (http://www.w3.org/TR/css3-color/) +or "rebeccapurple" from CSS Color Module Level 4.

+

Kind: global constant

+ +

formatColorHint($hintObj, color) ⇒ jQuery

+

Adds a color swatch to code hints where this is supported.

+

Kind: global function
+Returns: jQuery - jQuery object with the correct class and/or style applied

+
ParamTypeDescription
$hintObjjQuerylist item where the swatch will be in
colorstringcolor the swatch should have, or null to add extra left margin to align with the other hints
+ + \ No newline at end of file diff --git a/api/API-Reference/utils/ColorUtils/index.html b/api/API-Reference/utils/ColorUtils/index.html new file mode 100644 index 00000000..26b7e55c --- /dev/null +++ b/api/API-Reference/utils/ColorUtils/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/utils/DeprecationWarning.html b/api/API-Reference/utils/DeprecationWarning.html new file mode 100644 index 00000000..ac7b300c --- /dev/null +++ b/api/API-Reference/utils/DeprecationWarning.html @@ -0,0 +1,57 @@ + + + + + +DeprecationWarning | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

DeprecationWarning

Import :

+
const DeprecationWarning = brackets.getModule("utils/DeprecationWarning")
+ +

EventDispatcher

+

Utilities functions to display deprecation warning in the console.

+

Kind: global variable

+ +

deprecationWarning(message, [oncePerCaller], [callerStackPos])

+

Show deprecation warning with the call stack if it +has never been displayed before.

+

Kind: global function

+
ParamTypeDescription
messagestringThe deprecation message to be displayed.
[oncePerCaller]booleanIf true, displays the message once for each unique call location. If false (the default), only displays the message once no matter where it's called from. Note that setting this to true can cause a slight performance hit (because it has to generate a stack trace), so don't set this for functions that you expect to be called from performance- sensitive code (e.g. tight loops).
[callerStackPos]numberOnly used if oncePerCaller=true. Overrides the Error().stack depth where the client-code caller can be found. Only needed if extra shim layers are involved.
+ +

deprecateEvent(outbound, inbound, oldEventName, newEventName, [canonicalOutboundName], [canonicalInboundName])

+

Show a deprecation warning if there are listeners for the event

+
   DeprecationWarning.deprecateEvent(exports,
MainViewManager,
"workingSetAdd",
"workingSetAdd",
"DocumentManager.workingSetAdd",
"MainViewManager.workingSetAdd");
+

Kind: global function

+
ParamTypeDescription
outboundObjectthe object with the old event to dispatch
inboundObjectthe object with the new event to map to the old event
oldEventNamestringthe name of the old event
newEventNamestringthe name of the new event
[canonicalOutboundName]stringthe canonical name of the old event
[canonicalInboundName]stringthe canonical name of the new event
+ +

deprecateConstant(obj, oldId, newId)

+

Create a deprecation warning and action for updated constants

+

Kind: global function

+
ParamTypeDescription
objObject
oldIdstringMenu Id
newIdstringMenu Id
+ + \ No newline at end of file diff --git a/api/API-Reference/utils/DeprecationWarning/index.html b/api/API-Reference/utils/DeprecationWarning/index.html new file mode 100644 index 00000000..2c53f408 --- /dev/null +++ b/api/API-Reference/utils/DeprecationWarning/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/utils/DragAndDrop.html b/api/API-Reference/utils/DragAndDrop.html new file mode 100644 index 00000000..ea9b205e --- /dev/null +++ b/api/API-Reference/utils/DragAndDrop.html @@ -0,0 +1,54 @@ + + + + + +DragAndDrop | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

DragAndDrop

Import :

+
const DragAndDrop = brackets.getModule("utils/DragAndDrop")
+ +

isValidDrop(items) ⇒ boolean

+

Returns true if the drag and drop items contains valid drop objects.

+

Kind: global function
+Returns: boolean - True if one or more items can be dropped.

+
ParamTypeDescription
itemsArray.<DataTransferItem>Array of items being dragged
+ +

openDroppedFiles(paths) ⇒ Promise

+

Open dropped files

+

Kind: global function
+Returns: Promise - Promise that is resolved if all files are opened, or rejected +if there was an error.

+
ParamTypeDescription
pathsArray.<string>Array of file paths dropped on the application.
+ +

attachHandlers()

+

Attaches global drag & drop handlers to this window. This enables dropping files/folders to open them, and also +protects the Brackets app from being replaced by the browser trying to load the dropped file in its place.

+

Kind: global function

+ + \ No newline at end of file diff --git a/api/API-Reference/utils/DragAndDrop/index.html b/api/API-Reference/utils/DragAndDrop/index.html new file mode 100644 index 00000000..802e6cdc --- /dev/null +++ b/api/API-Reference/utils/DragAndDrop/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/utils/DropdownEventHandler.html b/api/API-Reference/utils/DropdownEventHandler.html new file mode 100644 index 00000000..14ed3faf --- /dev/null +++ b/api/API-Reference/utils/DropdownEventHandler.html @@ -0,0 +1,81 @@ + + + + + +DropdownEventHandler | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

DropdownEventHandler

Import :

+
const DropdownEventHandler = brackets.getModule("utils/DropdownEventHandler")
+ + +

Kind: global class

+ + +

new DropdownEventHandler($list, selectionCallback, closeCallback, keyDownCallback)

+

Object to handle events for a dropdown list.

+

DropdownEventHandler handles these events:

+

Mouse:

+
    +
  • click - execute selection callback and dismiss list
  • +
  • mouseover - highlight item
  • +
  • mouseleave - remove mouse highlighting
  • +
+

Keyboard:

+
    +
  • Enter - execute selection callback and dismiss list
  • +
  • Esc - dismiss list
  • +
  • Up/Down - change selection
  • +
  • PageUp/Down - change selection
  • +
+

Items whose "a" has the .disabled class do not respond to selection.

+
ParamTypeDescription
$listjQueryObjectassociated list object
selectionCallbackfunctionfunction called when list item is selected.
closeCallbackfunctionfunction called when list item is selected.
keyDownCallbackfunctionfunction called when list item is selected.
+ + +

Public open method

+

Kind: instance method of DropdownEventHandler

+ + +

Public close method

+

Kind: instance method of DropdownEventHandler

+ + +

Re-register mouse event handlers

+

Kind: instance method of DropdownEventHandler

+
ParamTypeDescription
$listjQueryObjectnewly updated list object
+ + \ No newline at end of file diff --git a/api/API-Reference/utils/DropdownEventHandler/index.html b/api/API-Reference/utils/DropdownEventHandler/index.html new file mode 100644 index 00000000..0b0bc4ea --- /dev/null +++ b/api/API-Reference/utils/DropdownEventHandler/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/utils/EventDispatcher.html b/api/API-Reference/utils/EventDispatcher.html new file mode 100644 index 00000000..28345fd7 --- /dev/null +++ b/api/API-Reference/utils/EventDispatcher.html @@ -0,0 +1,169 @@ + + + + + +EventDispatcher | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

EventDispatcher

Import :

+
const EventDispatcher = brackets.getModule("utils/EventDispatcher")
+ +

utils/EventDispatcher

+

Implements a jQuery-like event dispatch pattern for non-DOM objects (works in web workers and phoenix node as well):

+
    +
  • Listeners are attached via on()/one() & detached via off()
  • +
  • Listeners can use namespaces for easy removal
  • +
  • Listeners can attach to multiple events at once via a space-separated list
  • +
  • Events are fired via trigger()
  • +
  • The same listener can be attached twice, and will be called twice; but off() will detach all +duplicate copies at once ('duplicate' means '===' equality - see http://jsfiddle.net/bf4p29g5/1/)
  • +
+

But it has some important differences from jQuery's non-DOM event mechanism:

+
    +
  • More robust to listeners that throw exceptions (other listeners will still be called, and +trigger() will still return control to its caller).
  • +
  • Events can be marked deprecated, causing on() to issue warnings
  • +
  • Easier to debug, since the dispatch code is much simpler
  • +
  • Faster, for the same reason
  • +
  • Uses less memory, since $(nonDOMObj).on() leaks memory in jQuery
  • +
  • API is simplified: +
      +
    • Event handlers do not have 'this' set to the event dispatcher object
    • +
    • Event object passed to handlers only has 'type' and 'target' fields
    • +
    • trigger() uses a simpler argument-list signature (like Promise APIs), rather than requiring +an Array arg and ignoring additional args
    • +
    • trigger() does not support namespaces
    • +
    • For simplicity, on() does not accept a map of multiple events -> multiple handlers, nor a +missing arg standing in for a bare 'return false' handler.
    • +
    +
  • +
+

For now, Brackets uses a jQuery patch to ensure $(obj).on() and obj.on() (etc.) are identical +for any obj that has the EventDispatcher pattern. In the future, this may be deprecated.

+

To add EventDispatcher methods to any object, call EventDispatcher.makeEventDispatcher(obj).

+

Usage

+

Importing from an extension

+

Example

+
const EventDispatcher = brackets.getModule("utils/EventDispatcher");
+

Using the global object

+

The EventDispatcher Object is available within the global context, be it phoenix or phoenix core web workers or node. +Example

+
window.EventDispatcher.makeEventDispatcher(exports); // within phoenix require module
self.EventDispatcher.makeEventDispatcher(object); // within web worker
global.EventDispatcher.makeEventDispatcher(exports); // within node module that has an export
+

If you wish to import event dispatcher to your custom web worker, use the following +Example

+
importScripts('<relative path from your extension>/utils/EventDispatcher');
// this will add the global EventDispatcher to your web-worker. Note that the EventDispatcher in the web worker
// and node is a separate domain and cannot raise or listen to events in phoenix/other workers. For triggering events
// between different domains like between node and phcode, see `nodeConnector.triggerPeer` or
// `WorkerComm.triggerPeer` API for communication between phcode and web workers.
self.EventDispatcher.trigger("someEvent"); // within web worker
+

Sample Usage within extension

+

Example

+
// in your extension js file.
define (function (require, exports, module) {
const EventDispatcher = brackets.getModule("utils/EventDispatcher");
EventDispatcher.makeEventDispatcher(exports); // This extension triggers some events
let eventHandler = function (event, paramObject, paramVal) {
console.log(event, paramObject, paramVal);
};
exports.on("sampleEvent", eventHandler); // listen to our own event for demo
exports.trigger("sampleEvent", { // trigger a sample event. This will activate the above listener 'on' function.
param: 1,
param2: "sample"
}, "value");
// If needed, the event listener can be removed with `off`. But it is not a requirement at shutdown.
exports.off("sampleEvent", eventHandler);
}
+ + +

utils/EventDispatcher.splitNs(eventStr) ⇒ Object

+

Split "event.namespace" string into its two parts; both parts are optional.

+

Kind: inner method of utils/EventDispatcher
+Returns: Object - Uses "" for missing parts.

+
ParamTypeDescription
eventStrstringEvent name and/or trailing ".namespace"
+ +

utils/EventDispatcher.setLeakThresholdForEvent(eventName, threshold) : function

+

By default, we consider any events having more than 15 listeners to be leaky. But sometimes there may be +genuine use cases where an event can have a large number of listeners. For those events, it is recommended +to increase the leaky warning threshold individually with this API.

+

Kind: inner method of utils/EventDispatcher

+
ParamTypeDescription
eventNamestring
thresholdnumberThe new threshold to set. Will only be set if the new threshold is greater than the current threshold.
+ +

utils/EventDispatcher.on(events, fn) : function

+

Adds the given handler function to 'events': a space-separated list of one or more event names, each +with an optional ".namespace" (used by off() - see below). If the handler is already listening to this +event, a duplicate copy is added.

+

Kind: inner method of utils/EventDispatcher

+
ParamType
eventsstring
fnfunction
+ +

utils/EventDispatcher.off(events, fn) : function

+

Removes one or more handler functions based on the space-separated 'events' list. Each item in +'events' can be: bare event name, bare .namespace, or event.namespace pair. This yields a set of +matching handlers. If 'fn' is omitted, all these handlers are removed. If 'fn' is provided, +only handlers exactly equal to 'fn' are removed (there may still be >1, if duplicates were added).

+

Kind: inner method of utils/EventDispatcher

+
ParamType
eventsstring
fnfunction
+ +

utils/EventDispatcher.one(events, fn) : function

+

Attaches a handler so it's only called once (per event in the 'events' list).

+

Kind: inner method of utils/EventDispatcher

+
ParamType
eventsstring
fnfunction
+ +

utils/EventDispatcher.trigger(eventName) : function

+

Invokes all handlers for the given event (in the order they were added).

+

Kind: inner method of utils/EventDispatcher

+
ParamTypeDescription
eventNamestring
...*Any additional args are passed to the event handler after the event object
+ +

utils/EventDispatcher.makeEventDispatcher(obj) : function

+

Adds the EventDispatcher APIs to the given object: on(), one(), off(), and trigger(). May also be +called on a prototype object - each instance will still behave independently.

+

Kind: inner method of utils/EventDispatcher

+
ParamTypeDescription
objObjectObject to add event-dispatch methods to
+ +

utils/EventDispatcher.triggerWithArray(dispatcher, eventName, argsArray) : function

+

Utility for calling on() with an array of arguments to pass to event handlers (rather than a varargs +list). makeEventDispatcher() must have previously been called on 'dispatcher'.

+

Kind: inner method of utils/EventDispatcher

+
ParamType
dispatcherObject
eventNamestring
argsArrayArray.<*>
+ +

utils/EventDispatcher.on_duringInit(futureDispatcher, events, fn) : function

+

Utility for attaching an event handler to an object that has not YET had makeEventDispatcher() called +on it, but will in the future. Once 'futureDispatcher' becomes a real event dispatcher, any handlers +attached here will be retained.

+

Useful with core modules that have circular dependencies (one module initially gets an empty copy of the +other, with no on() API present yet). Unlike other strategies like waiting for htmlReady(), this helper +guarantees you won't miss any future events, regardless of how soon the other module finishes init and +starts calling trigger().

+

Kind: inner method of utils/EventDispatcher

+
ParamType
futureDispatcherObject
eventsstring
fnfunction
+ +

utils/EventDispatcher.markDeprecated(obj, eventName, [insteadStr]) : function

+

Mark a given event name as deprecated, such that on() will emit warnings when called with it. +May be called before makeEventDispatcher(). May be called on a prototype where makeEventDispatcher() +is called separately per instance (i.e. in the constructor). Should be called before clients have +a chance to start calling on().

+

Kind: inner method of utils/EventDispatcher

+
ParamTypeDescription
objObjectEvent dispatcher object
eventNamestringName of deprecated event
[insteadStr]stringSuggested thing to use instead
+ + \ No newline at end of file diff --git a/api/API-Reference/utils/EventDispatcher/index.html b/api/API-Reference/utils/EventDispatcher/index.html new file mode 100644 index 00000000..b9fe2602 --- /dev/null +++ b/api/API-Reference/utils/EventDispatcher/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/utils/EventManager.html b/api/API-Reference/utils/EventManager.html new file mode 100644 index 00000000..406590f4 --- /dev/null +++ b/api/API-Reference/utils/EventManager.html @@ -0,0 +1,96 @@ + + + + + +EventManager | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

EventManager

Import :

+
const EventManager = brackets.getModule("utils/EventManager")
+ +

utils/EventManager

+

The global EventManager can be used to register named EventDispatchers so that events +can be triggered from anywhere without using require context. This should also be used to handle custom +window.onmessage handlers.

+

A global window.EventManager object is made available in phoenix that can be called anytime after AppStart.

+

Usage

+

For Eg. Let's say we have an extension drawImage installed that wants to expose custom functionality to phoenix. +The Extension will first register named EventHandler like this:

+

Example

+
// in drawImage/someExtensionModule.js module within the extension, do the following:
const EventDispatcher = brackets.getModule("utils/EventDispatcher"),
EventManager = brackets.getModule("utils/EventManager");
EventDispatcher.makeEventDispatcher(exports);

EventManager.registerEventHandler("drawImage-Handler", exports);
+

Once the event handler is registered, we can trigger events on the named handler anywhere in phoenix +(inside or outside the extension) by using: +Example

+
EventManager.triggerEvent("drawImage-Handler", "someEventName", "param1", "param2", ...);
+ + +

utils/EventManager.registerEventHandler(handlerName, eventDispatcher) ⇒ boolean

+

Registers a named EventHandler. Event handlers are created using the call: +EventDispatcher.makeEventDispatcher(Command.prototype);

+

To register a close dialogue event handler in an extension: +// in close-dialogue.js module winthin the extension, do the following: +const EventDispatcher = brackets.getModule("utils/EventDispatcher"), +EventDispatcher.makeEventDispatcher(exports); +const EventManager = brackets.getModule("utils/EventManager");

+

// Note: for event handler names, please change the extensionName to your extension name +// to prevent collisions. EventHandlers starting with ph- and br- are reserved as system handlers +// and not available for use in extensions. +EventManager.registerEventHandler("extensionName-closeDialogueHandler", exports); +// Once the event handler is registered, see triggerEvent API on how to raise events

+

Kind: inner method of utils/EventManager

+
ParamTypeDescription
handlerNamestringa unique name of the handler.
eventDispatcherobjectAn EventDispatcher that will be used to trigger events.
+ +

utils/EventManager.isExistsEventHandler(handlerName) ⇒ boolean

+

Returns true is an EventHandler of the given name exists.

+

Kind: inner method of utils/EventManager

+
ParamType
handlerNamestring
+ +

utils/EventManager.triggerEvent(handlerName, eventName, ...eventParams) : function

+

Triggers an event on the named event handler.

+

To trigger an event to the closeDialogue event handler registered above +// anywhere in code, do the following: +const EventManager = brackets.getModule("utils/EventManager"); +EventManager.triggerEvent("closeDialogueHandler", "someEvent", "param1", "param2", ...);

+

Kind: inner method of utils/EventManager

+
ParamTypeDescription
handlerNamestring
eventNamethe event name as recognised by the handler. this is usually a string.
...eventParamsCan be a comma seperated list of args or a single argument.
+ +

utils/EventManager.setTrustedOrigin(origin, isTrusted)

+

add or remove a domain, in the list of trusted origin

+

Kind: inner method of utils/EventManager

+
ParamTypeDescription
originstringthe origin to be added or removed
isTrustedbooleanif true adds the origin to the list, else removes it.
+ + \ No newline at end of file diff --git a/api/API-Reference/utils/EventManager/index.html b/api/API-Reference/utils/EventManager/index.html new file mode 100644 index 00000000..f0e647c9 --- /dev/null +++ b/api/API-Reference/utils/EventManager/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/utils/ExtensionInterface.html b/api/API-Reference/utils/ExtensionInterface.html new file mode 100644 index 00000000..493b1ad1 --- /dev/null +++ b/api/API-Reference/utils/ExtensionInterface.html @@ -0,0 +1,88 @@ + + + + + +ExtensionInterface | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

ExtensionInterface

Import :

+
const ExtensionInterface = brackets.getModule("utils/ExtensionInterface")
+ +

utils/ExtensionInterface

+

ExtensionInterface defines utility methods for communicating between extensions safely. +A global window.ExtensionInterface object is made available in phoenix that can be called anytime after AppStart.

+

Usage

+

For Eg. You may have two extensions installed say angular extension which has to call functions made available by +angular-cli Extension.

+

For Making this possible, the angular-cli extension makes a named interface available with the ExtensionInterface +module and angular extension can get hold of the interface as and when the extension gets loaded.

+

Example

+
// in angular-cli extension, make a file say cli-interface.js module within the extension, do the following:
const ExtensionInterface = brackets.getModule("utils/ExtensionInterface"),
// You can replace exports with any object you want to expose outside the extension really.
ExtensionInterface.registerExtensionInterface("angularCli", exports);
+

Once the interface is registered, the angular extension can get hold of the interface with the following code +(inside or outside the extension) by using: +Example

+
let angularCli;
ExtensionInterface.waitAndGetExtensionInterface("angularCli").then(interfaceObj=> angularCli = interfaceObj);
if(angularCli){ // check if angular cli is avilable
angularCli.callSomeFunction();
}
+

Note that the angularCli interface is async populated as and when the cli extension is loaded and the +interface made available.

+

NBB: Do Not use await waitAndGetExtensionInterface on tol level require as the module loading might fail.

+ + +

utils/ExtensionInterface.EVENT_EXTENSION_INTERFACE_REGISTERED : string

+

Extension interface registered event

+

Kind: inner constant of utils/ExtensionInterface

+ +

utils/ExtensionInterface.registerExtensionInterface(extensionInterfaceName, interfaceObject) : function

+

Registers a named extension interface. Will overwrite if an interface of the same name is already present.

+

To register an interface angularCli +ExtensionInterface.registerExtensionInterface("angularCli", exports);

+

Kind: inner method of utils/ExtensionInterface

+
ParamType
extensionInterfaceNamestring
interfaceObjectObject
+ +

utils/ExtensionInterface.isExistsExtensionInterface(extensionInterfaceName) ⇒ boolean

+

Returns true is an interface of the given name exists.

+

Kind: inner method of utils/ExtensionInterface

+
ParamType
extensionInterfaceNamestring
+ +

utils/ExtensionInterface.waitAndGetExtensionInterface(extensionInterfaceName) ⇒ Promise

+

Returns a promise that gets resolved only when an ExtensionInterface of the given name is registered. Use this +getter to get hold of extensions interface predictably.

+

To get a registered interface angularCli

+
let angularCli;
ExtensionInterface.waitAndGetExtensionInterface("angularCli").then(interfaceObj=> angularCli = interfaceObj);
if(angularCli){ // check if angular cli is avilable
angularCli.callSomeFunction();
}
+

Kind: inner method of utils/ExtensionInterface

+
Param
extensionInterfaceName
+ + \ No newline at end of file diff --git a/api/API-Reference/utils/ExtensionInterface/index.html b/api/API-Reference/utils/ExtensionInterface/index.html new file mode 100644 index 00000000..c7e572a8 --- /dev/null +++ b/api/API-Reference/utils/ExtensionInterface/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/utils/ExtensionLoader.html b/api/API-Reference/utils/ExtensionLoader.html new file mode 100644 index 00000000..da6dce40 --- /dev/null +++ b/api/API-Reference/utils/ExtensionLoader.html @@ -0,0 +1,124 @@ + + + + + +ExtensionLoader | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

ExtensionLoader

Import :

+
const ExtensionLoader = brackets.getModule("utils/ExtensionLoader")
+ +

EVENT_EXTENSION_LOADED : string

+

Extension loaded event

+

Kind: global constant

+ +

EVENT_EXTENSION_DISABLED : string

+

Extension disabled event

+

Kind: global constant

+ +

EVENT_EXTENSION_LOAD_FAILED : string

+

Extension load failed event

+

Kind: global constant

+ +

getDefaultExtensionPath() ⇒ string

+

Responsible to get the default extension path

+

Kind: global function

+ +

getUserExtensionPath()

+

Returns the full path of the default user extensions directory. This is in the users +application support directory, which is typically +/Users/"user"/Application Support/Brackets/extensions/user on the mac, and +C:\Users"user"\AppData\Roaming\Brackets\extensions\user on windows.

+

Kind: global function

+ +

getRequireContextForExtension(name) ⇒ Object

+

Returns the require.js require context used to load an extension

+

Kind: global function
+Returns: Object - A require.js require object used to load the extension, or undefined if +there is no require object with that name

+
ParamTypeDescription
namestringused to identify the extension
+ +

loadExtension(name, config, entryPoint) ⇒ $.Promise

+

Loads the extension that lives at baseUrl into its own Require.js context

+

Kind: global function
+Returns: $.Promise - A promise object that is resolved when the extension is loaded, or rejected +if the extension fails to load or throws an exception immediately when loaded. +(Note: if extension contains a JS syntax error, promise is resolved not rejected).

+
ParamTypeDescription
namestringused to identify the extension
configObjectobject with baseUrl property containing absolute path of extension
entryPointstringname of the main js file to load
+ +

testExtension(name, config, entryPoint) ⇒ $.Promise

+

Runs unit tests for the extension that lives at baseUrl into its own Require.js context

+

Kind: global function
+Returns: $.Promise - A promise object that is resolved when all extensions complete loading.

+
ParamTypeDescription
namestringused to identify the extension
configObjectobject with baseUrl property containing absolute path of extension
entryPointstringname of the main js file to load
+ +

loadAllDefaultExtensions() ⇒ $.Promise

+

Loads All brackets default extensions from brackets base https URL.

+

Kind: global function
+Returns: $.Promise - A promise object that is resolved when all extensions complete loading.

+ +

loadAllExtensionsInNativeDirectory(directory) ⇒ $.Promise

+

Loads the extension that lives at baseUrl into its own Require.js context

+

Kind: global function
+Returns: $.Promise - A promise object that is resolved when all extensions complete loading.

+
ParamTypeDescription
directorystringan absolute native path that contains a directory of extensions. each subdirectory is interpreted as an independent extension
+ +

loadExtensionFromNativeDirectory(directory) ⇒ Promise

+

Loads a given extension at the path from virtual fs. Used by debug menu> load project as extension

+

Kind: global function

+
Param
directory
+ +

testAllExtensionsInNativeDirectory(directory) ⇒ $.Promise

+

Runs unit test for the extension that lives at baseUrl into its own Require.js context

+

Kind: global function
+Returns: $.Promise - A promise object that is resolved when all extensions complete loading.

+
ParamTypeDescription
directorystringan absolute native path that contains a directory of extensions. each subdirectory is interpreted as an independent extension
+ +

testAllDefaultExtensions() ⇒ $.Promise

+

Runs unit test for the extension that lives at baseUrl into its own Require.js context

+

Kind: global function
+Returns: $.Promise - A promise object that is resolved when all extensions complete loading.

+ +

getSourcePathForExtension(extensionPath) ⇒ string

+

To get the source path for extension

+

Kind: global function

+
Param
extensionPath
+ +

init(A) ⇒ $.Promise

+

Load extensions.

+

Kind: global function
+Returns: $.Promise - A promise object that is resolved when all extensions complete loading.

+
ParamTypeDescription
AArray.<string>list containing references to extension source location. A source location may be either (a) a folder name inside src/extensions or (b) an absolute path.
+ +

uninstallExtension(extensionID) ⇒ Promise

+

Uninstall a deprecated extension

+

Kind: global function
+Returns: Promise - A promise that resolves when the extension is uninstalled successfully

+
ParamTypeDescription
extensionIDstringThe ID of the extension to uninstall
+ + \ No newline at end of file diff --git a/api/API-Reference/utils/ExtensionLoader/index.html b/api/API-Reference/utils/ExtensionLoader/index.html new file mode 100644 index 00000000..3bd25083 --- /dev/null +++ b/api/API-Reference/utils/ExtensionLoader/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/utils/ExtensionUtils.html b/api/API-Reference/utils/ExtensionUtils.html new file mode 100644 index 00000000..2c338a44 --- /dev/null +++ b/api/API-Reference/utils/ExtensionUtils.html @@ -0,0 +1,97 @@ + + + + + +ExtensionUtils | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

ExtensionUtils

Import :

+
const ExtensionUtils = brackets.getModule("utils/ExtensionUtils")
+ +

FileSystem

+

ExtensionUtils defines utility methods for implementing extensions.

+

Kind: global constant

+ +

addEmbeddedStyleSheet(css) ⇒ HTMLStyleElement

+

Appends a "style" tag to the document's head.

+

Kind: global function
+Returns: HTMLStyleElement - The generated HTML node

+
ParamTypeDescription
cssstringCSS code to use as the tag's content
+ +

addLinkedStyleSheet(url, [deferred]) ⇒ HTMLLinkElement

+

Appends a "link" tag to the document's head.

+

Kind: global function
+Returns: HTMLLinkElement - The generated HTML node

+
ParamTypeDescription
urlstringURL to a style sheet
[deferred]$.DeferredOptionally check for load and error events
+ +

parseLessCode(code, url) ⇒ $.Promise

+

Parses LESS code and returns a promise that resolves with plain CSS code.

+

Pass the link url argument to resolve relative URLs contained in the code. +Make sure URLs in the code are wrapped in quotes, like so: +background-image: url("image.png");

+

Kind: global function
+Returns: $.Promise - A promise object that is resolved with CSS code if the LESS code can be parsed

+
ParamTypeDescription
codestringLESS code to parse
urlstringURL to the file containing the code
+ +

getModulePath(module, path) ⇒ string

+

Returns a path to an extension module.

+

Kind: global function
+Returns: string - The path to the module's folder

+
ParamTypeDescription
modulemoduleModule provided by RequireJS
pathstringRelative path from the extension folder to a file
+ +

getModuleUrl(module, path) ⇒ string

+

Returns a URL to an extension module.

+

Kind: global function
+Returns: string - The URL to the module's folder

+
ParamTypeDescription
modulemoduleModule provided by RequireJS
pathstringRelative path from the extension folder to a file
+ +

loadFile(module, path) ⇒ $.Promise

+

Performs a GET request using a path relative to an extension module.

+

The resulting URL can be retrieved in the resolve callback by accessing

+

Kind: global function
+Returns: $.Promise - A promise object that is resolved with the contents of the requested file

+
ParamTypeDescription
modulemoduleModule provided by RequireJS
pathstringRelative path from the extension folder to a file
+ +

loadStyleSheet(module, path) ⇒ $.Promise

+

Loads a style sheet (CSS or LESS) relative to the extension module.

+

Kind: global function
+Returns: $.Promise - A promise object that is resolved with an HTML node if the file can be loaded.

+
ParamTypeDescription
modulemoduleModule provided by RequireJS
pathstringRelative path from the extension folder to a CSS or LESS file
+ +

loadMetadata(metadataURL, extensionName) ⇒ $.Promise

+

Loads the package.json file in the given extension folder as well as any additional +metadata for default extensions in the source directory.

+

If there's a .disabled file in the extension directory, then the content of package.json +will be augmented with disabled property set to true. It will override whatever value of +disabled might be set.

+

Kind: global function
+Returns: $.Promise - A promise object that is resolved with the parsed contents of the package.json file, +or rejected if there is no package.json with the boolean indicating whether .disabled file exists.

+
ParamTypeDescription
metadataURLstringThe extension folder/base url for default extensions.
extensionNamestringname of the extension
+ + \ No newline at end of file diff --git a/api/API-Reference/utils/ExtensionUtils/index.html b/api/API-Reference/utils/ExtensionUtils/index.html new file mode 100644 index 00000000..7885bf5f --- /dev/null +++ b/api/API-Reference/utils/ExtensionUtils/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/utils/FeatureGate.html b/api/API-Reference/utils/FeatureGate.html new file mode 100644 index 00000000..03d43266 --- /dev/null +++ b/api/API-Reference/utils/FeatureGate.html @@ -0,0 +1,100 @@ + + + + + +FeatureGate | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

FeatureGate

Import :

+
const FeatureGate = brackets.getModule("utils/FeatureGate")
+ +

utils/FeatureGate

+

FeatureGate defines util methods for enabling or disabling features in development based on a flag in local storage. +A global window.FeatureGate object is made available in phoenix that can be called anytime after AppStart.

+

Usage

+

For Eg. You may have an extensions in development that colors phoenix in red. But you are working on a new feature +that makes other colors available, but not yet ready for use. So put the extension behind a named feature gate +so that only people who want to test the extension will be able to use it.

+

creating a feature gate

+

Example

+
// within extensions
const FeatureGate = brackets.getModule("utils/FeatureGate"); // replace with `require` for core modules.
const FEATURE_NEW_COLORS = 'myExtension.newColors';
FeatureGate.registerFeatureGate(FEATURE_NEW_COLORS, false); // false is the default value
+

checking if a feature is gated

+

Once the feature is registered, use the below code to check if the feature can be safely enabled. For Eg., if +you want to enable fancy colors based on the example above: +Example

+
if(FeatureGate.isFeatureEnabled(FEATURE_NEW_COLORS)){
// do fancy colors here
}
+

Enabling features for testing

+
    +
  1. Open developer tools > local storage
  2. +
  3. Add a new key with the key you have specified for the feature gate. +In the above Eg., the key is myExtension.newColors
  4. +
  5. set the value in local storage to enabled to enable the feature or anything else to disable.
  6. +
+ + +

utils/FeatureGate.FEATURE_REGISTERED : string

+

Feature gate registered

+

Kind: inner constant of utils/FeatureGate

+ +

utils/FeatureGate.registerFeatureGate(featureName, enabledDefault) : function

+

Registers a named feature with the default enabled state. +To register a feature gate with name myExtension.newColors +const FEATURE_NEW_COLORS = 'myExtension.newColors'; +FeatureGate.registerFeatureGate(FEATURE_NEW_COLORS, false); // false is the default value here

+

Kind: inner method of utils/FeatureGate

+
ParamType
featureNamestring
enabledDefaultboolean
+ +

utils/FeatureGate.getAllRegisteredFeatures() ⇒ Array.<string>

+

Returns an array of all named registered feature gates.

+

Kind: inner method of utils/FeatureGate
+Returns: Array.<string> - list of registered features

+ +

utils/FeatureGate.isFeatureEnabled(featureName) ⇒ boolean

+

Returns true is an featureGate is enabled either by default or overridden by the user using local storage. +To check if the feature myExtension.newColors is enabled +const FEATURE_NEW_COLORS = 'myExtension.newColors'; +if(FeatureGate.isFeatureEnabled(FEATURE_NEW_COLORS))

+

Kind: inner method of utils/FeatureGate

+
ParamType
featureNamestring
+ +

utils/FeatureGate.setFeatureEnabled(featureName, isEnabled)

+

Sets the enabled state of a specific feature in the application.

+

Kind: inner method of utils/FeatureGate

+
ParamTypeDescription
featureNamestringThe name of the feature to be modified.
isEnabledbooleanA boolean flag indicating whether the feature should be enabled (true) or disabled (false).
+ + \ No newline at end of file diff --git a/api/API-Reference/utils/FeatureGate/index.html b/api/API-Reference/utils/FeatureGate/index.html new file mode 100644 index 00000000..8beb0424 --- /dev/null +++ b/api/API-Reference/utils/FeatureGate/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/utils/KeyEvent.html b/api/API-Reference/utils/KeyEvent.html new file mode 100644 index 00000000..38abd377 --- /dev/null +++ b/api/API-Reference/utils/KeyEvent.html @@ -0,0 +1,36 @@ + + + + + +KeyEvent | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/utils/KeyEvent/index.html b/api/API-Reference/utils/KeyEvent/index.html new file mode 100644 index 00000000..601ddbf6 --- /dev/null +++ b/api/API-Reference/utils/KeyEvent/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/utils/LocalizationUtils.html b/api/API-Reference/utils/LocalizationUtils.html new file mode 100644 index 00000000..986b7db0 --- /dev/null +++ b/api/API-Reference/utils/LocalizationUtils.html @@ -0,0 +1,66 @@ + + + + + +LocalizationUtils | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

LocalizationUtils

Import :

+
const LocalizationUtils = brackets.getModule("utils/LocalizationUtils")
+ +

getLocalizedLabel(locale) ⇒ string

+

Converts a language code to its written name, if possible. +If not possible, the language code is simply returned.

+

Kind: global function
+Returns: string - The language's name or the given language code

+
ParamTypeDescription
localestringThe two-char language code
+ +

getFormattedDateTime([date], [lang], [dateTimeFormat]) ⇒ string

+

Formats a given date object into a locale-aware date and time string.

+

Kind: global function
+Returns: string - - The formatted date and time string (e.g., "Dec 24, 2024, 10:30 AM").

+
ParamTypeDescription
[date]DateThe date object to format. If not provided, the current date and time will be used.
[lang]stringOptional language code to use for formatting (e.g., 'en', 'fr'). If not provided, defaults to the application locale or 'en'.
[dateTimeFormat]ObjectOptional object specifying the date and time formatting options. Defaults to { dateStyle: 'medium', timeStyle: 'short' }.
[dateTimeFormat.dateStyle]stringSpecifies the date format style. One of: DATE_TIME_STYLE.*
[dateTimeFormat.timeStyle]stringSpecifies the time format style. One of: DATE_TIME_STYLE.*
+ +

dateTimeFromNow([date], [lang], [fromDate]) ⇒ string

+

Returns a relative time string (e.g., "2 days ago", "in 3 hours") based on the difference between the given date and now.

+

Kind: global function
+Returns: string - - A human-readable relative time string (e.g., "2 days ago", "in 3 hours").

+
ParamTypeDescription
[date]DateThe date to compare with the current date and time. If not given, defaults to now.
[lang]stringOptional language code to use for formatting (e.g., 'en', 'fr'). If not provided, defaults to the application locale or 'en'.
[fromDate]DateOptional date to use instead of now to compute the relative dateTime from.
+ +

dateTimeFromNowFriendly(date, [lang], [fromDate]) ⇒ string

+

Returns an intelligent date string.

+
    +
  • For dates within the last 30 days or the future: relative time (e.g., "2 days ago", "in 3 hours").
  • +
  • For dates earlier this year: formatted date (e.g., "Jan 5").
  • +
  • For dates not in the current year: formatted date with year (e.g., "Jan 5, 2023").
  • +
+

Kind: global function
+Returns: string - - An intelligently formatted date string.

+
ParamTypeDescription
dateDateThe date to compare and format.
[lang]stringOptional language code to use for formatting (e.g., 'en', 'fr').
[fromDate]DateOptional date to use instead of now to compute the relative dateTime from.
+ + \ No newline at end of file diff --git a/api/API-Reference/utils/LocalizationUtils/index.html b/api/API-Reference/utils/LocalizationUtils/index.html new file mode 100644 index 00000000..199676d8 --- /dev/null +++ b/api/API-Reference/utils/LocalizationUtils/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/utils/NativeApp.html b/api/API-Reference/utils/NativeApp.html new file mode 100644 index 00000000..500d7246 --- /dev/null +++ b/api/API-Reference/utils/NativeApp.html @@ -0,0 +1,65 @@ + + + + + +NativeApp | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

NativeApp

Import :

+
const NativeApp = brackets.getModule("utils/NativeApp")
+ +

Async

+

Virtualized NativeApp apis that works cross-platform, and in the browser.

+

Kind: global variable

+ +

openLiveBrowser(url, [enableRemoteDebugging]) ⇒ $.Promise

+

openLiveBrowser +Open the given URL in the user's system browser, optionally enabling debugging.

+

Kind: global function

+
ParamTypeDescription
urlstringThe URL to open.
[enableRemoteDebugging]booleanWhether to turn on remote debugging. Default false.
+ +

closeLiveBrowser() ⇒ $.Promise

+

closeLiveBrowser

+

Kind: global function

+ +

closeAllLiveBrowsers() ⇒ $.Promise

+

closeAllLiveBrowsers +Closes all the browsers that were tracked on open

+

TODO: does not seem to work on Windows

+

Kind: global function

+ +

openURLInDefaultBrowser(url, tabIdentifier)

+

Opens a URL in the system default browser.

+

Kind: global function

+
ParamTypeDescription
urlstring
tabIdentifierstringAn optional tab identifier can be set to group the tabs. Maps to target option in browser. Doesn't do anything in tauri.
+ +

getApplicationSupportDirectory()

+

Gets the path to the application's support directory

+

Kind: global function

+ + \ No newline at end of file diff --git a/api/API-Reference/utils/NativeApp/index.html b/api/API-Reference/utils/NativeApp/index.html new file mode 100644 index 00000000..9a8333da --- /dev/null +++ b/api/API-Reference/utils/NativeApp/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/utils/NodeUtils.html b/api/API-Reference/utils/NodeUtils.html new file mode 100644 index 00000000..0cba4726 --- /dev/null +++ b/api/API-Reference/utils/NodeUtils.html @@ -0,0 +1,145 @@ + + + + + +NodeUtils | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

NodeUtils

Import :

+
const NodeUtils = brackets.getModule("utils/NodeUtils")
+ +

isNodeReady ⇒ boolean

+

checks if Node connector is ready

+

Kind: global variable
+Returns: boolean - returns true if it's ready, otherwise false

+ +

Strings

+

Generic node util APIs connector. see src-node/utils.js for node peer

+

Kind: global constant

+ +

fetchURLText(url, encoding) ⇒ Promise.<string>

+

Fetches text content from a URL +This is only available in the native app

+

Kind: global function

+
ParamType
urlstring
encodingstring
+ +

getPhoenixBinaryVersion() ⇒ Promise.<string>

+

Gets the version of the Phoenix binary +This is only available in the native app

+

Kind: global function

+ +

getLinuxOSFlavorName() ⇒ Promise.<(string|null)>

+

Retrieves the Linux OS flavor name +This is only available in the native app on Linux

+

Kind: global function

+ +

openUrlInBrowser(url, browserName)

+

Opens a URL in the default browser. +This is only available in the native app.

+

Kind: global function

+
ParamType
urlstring
browserNamestring
+ +

getEnvironmentVariable(varName) ⇒ Promise.<string>

+

Gets an environment variable's value +This is only available in the native app

+

Kind: global function

+
ParamType
varNamestring
+ +

ESLintFile(text, fullFilePath, projectFullPath)

+

Runs ESLint on a file +This is only available in the native app

+

Kind: global function

+
ParamType
textstring
fullFilePathstring
projectFullPathstring
+ +

openNativeTerminal(cwd, [usePowerShell])

+

Runs ESLint on a file +This is only available in the native app

+

Kind: global function

+
ParamTypeDefaultDescription
cwdstringthe working directory of terminal
[usePowerShell]booleanfalse
+ +

openInDefaultApp(fullPath) ⇒ Promise.<void>

+

Opens a file in the default application for its type on Windows, macOS, and Linux.

+

Kind: global function
+Returns: Promise.<void> - - Resolves if the file/folder is opened successfully, rejects otherwise.

+
ParamTypeDescription
fullPathstringThe path to the file/folder to open.
+ +

getDeviceID() ⇒ Promise.<(string|null)>

+

gets the os device id. this usually won't change till os reinstall.

+

Kind: global function
+Returns: Promise.<(string|null)> - - Resolves with the os identifier or null
+Throws:

+
    +
  • Error - If called from the browser
  • +
+ +

addDeviceLicenseSystemWide() ⇒ Promise.<boolean>

+

Enables device license by creating a system-wide license file. +On Windows, macOS, and Linux this will request elevation if needed.

+

Kind: global function
+Returns: Promise.<boolean> - - Resolves true if system wide defile file added, else false.
+Throws:

+
    +
  • Error - If called from the browser
  • +
+ +

removeDeviceLicenseSystemWide() ⇒ Promise.<boolean>

+

Removes the system-wide device license file. +On Windows, macOS, and Linux this will request elevation if needed.

+

Kind: global function
+Returns: Promise.<boolean> - - Resolves true if system wide defile file removed, else false.
+Throws:

+
    +
  • Error - If called from the browser
  • +
+ +

isLicensedDeviceSystemWide() ⇒ Promise.<boolean>

+

Checks if the current machine is configured to check for system-wide device license for all users at app start. +This validates that the system-wide license file exists, contains valid JSON, and has licensedDevice: true.

+

Kind: global function
+Returns: Promise.<boolean> - - Resolves with true if the device is licensed, false otherwise.

+ +

getOSUserName() ⇒ Promise.<string>

+

Retrieves the operating system username of the current user. +This method is only available in native apps.

+

Kind: global function
+Returns: Promise.<string> - A promise that resolves to the OS username of the current user.
+Throws:

+
    +
  • Error Throws an error if called in a browser environment.
  • +
+ +

getSystemSettingsDir() ⇒ Promise.<string>

+

Retrieves the directory path for system settings. This method is applicable to native apps only.

+

Kind: global function
+Returns: Promise.<string> - A promise that resolves to the path of the system settings directory.
+Throws:

+
    +
  • Error If the method is called in browser app.
  • +
+ + \ No newline at end of file diff --git a/api/API-Reference/utils/NodeUtils/index.html b/api/API-Reference/utils/NodeUtils/index.html new file mode 100644 index 00000000..d4046e75 --- /dev/null +++ b/api/API-Reference/utils/NodeUtils/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/utils/PerfUtils.html b/api/API-Reference/utils/PerfUtils.html new file mode 100644 index 00000000..d04fa9e3 --- /dev/null +++ b/api/API-Reference/utils/PerfUtils.html @@ -0,0 +1,120 @@ + + + + + +PerfUtils | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

PerfUtils

Import :

+
const PerfUtils = brackets.getModule("utils/PerfUtils")
+ +

_

+

This is a collection of utility functions for gathering performance data.

+

Kind: global variable

+ +

createPerfMeasurement(id, name)

+

Create a new PerfMeasurement key. Adds itself to the module export. +Can be accessed on the module, e.g. PerfUtils.MY_PERF_KEY.

+

Kind: global function

+
ParamTypeDescription
idstringUnique ID for this measurement name
namenameA short name for this measurement
+ +

markStart(name) ⇒ Object | Array.<Object>

+

Start a new named timer. The name should be as descriptive as possible, since +this name will appear as an entry in the performance report. +For example: "Open file: /Users/brackets/src/ProjectManager.js"

+

Multiple timers can be opened simultaneously.

+

Returns an opaque set of timer ids which can be stored and used for calling +addMeasurement(). Since name is often creating via concatenating strings this +return value allows clients to construct the name once.

+

Kind: global function
+Returns: Object | Array.<Object> - Opaque timer id or array of timer ids.

+
ParamTypeDescription
namestring | Array.<string>Single name or an Array of names.
+ +

addMeasurement(id)

+

Stop a timer and add its measurements to the performance data.

+

Multiple measurements can be stored for any given name. If there are +multiple values for a name, they are stored in an Array.

+

If markStart() was not called for the specified timer, the +measured time is relative to app startup.

+

Kind: global function

+
ParamTypeDescription
idObjectTimer id.
+ +

updateMeasurement(id)

+

This function is similar to addMeasurement(), but it allows timing the +last event, when you don't know which event will be the last one.

+

Tests that are in the activeTests list, have not yet been added, so add +measurements to the performance data, and move test to updatableTests list. +A test is moved to the updatable list so that it no longer passes isActive().

+

Tests that are already in the updatableTests list are updated.

+

Caller must explicitly remove test from the updatableTests list using +finalizeMeasurement().

+

If markStart() was not called for the specified timer, there is no way to +determine if this is the first or subsequent call, so the measurement is +not updatable, and it is handled in addMeasurement().

+

Kind: global function

+
ParamTypeDescription
idObjectTimer id.
+ +

finalizeMeasurement(id)

+

Remove timer from lists so next action starts a new measurement

+

updateMeasurement may not have been called, so timer may be +in either or neither list, but should never be in both.

+

Kind: global function

+
ParamTypeDescription
idObjectTimer id.
+ +

isActive(id) ⇒ boolean

+

Returns whether a timer is active or not, where "active" means that +timer has been started with addMark(), but has not been added to perfdata +with addMeasurement().

+

Kind: global function
+Returns: boolean - Whether a timer is active or not.

+
ParamTypeDescription
idObjectTimer id.
+ +

getDelimitedPerfData() ⇒ string

+

Returns the performance data as a tab delimited string

+

Kind: global function

+ +

getData(id)

+

Returns the measured value for the given measurement name.

+

Kind: global function

+
ParamTypeDescription
idObjectThe measurement to retrieve.
+ +

getHealthReport() ⇒ Object

+

Returns the Performance metrics to be logged for health report

+

Kind: global function
+Returns: Object - An object with the health data logs to be sent

+ +

searchData(regExp) ⇒ Array

+

To search data given the regular expression

+

Kind: global function

+
ParamTypeDescription
regExpRegExpthe regular expression
+ +

clear()

+

Clear all logs including metric data and active tests.

+

Kind: global function

+ + \ No newline at end of file diff --git a/api/API-Reference/utils/PerfUtils/index.html b/api/API-Reference/utils/PerfUtils/index.html new file mode 100644 index 00000000..a57184e0 --- /dev/null +++ b/api/API-Reference/utils/PerfUtils/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/utils/Resizer.html b/api/API-Reference/utils/Resizer.html new file mode 100644 index 00000000..d3df98a0 --- /dev/null +++ b/api/API-Reference/utils/Resizer.html @@ -0,0 +1,143 @@ + + + + + +Resizer | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

Resizer

Import :

+
const Resizer = brackets.getModule("utils/Resizer")
+ +

DIRECTION_VERTICAL : string

+

Represents the vertical direction.

+

Kind: global variable

+ +

DIRECTION_HORIZONTAL : string

+

Represents the horizontal direction.

+

Kind: global variable

+ +

POSITION_TOP : string

+

Indicates the top position.

+

Kind: global variable

+ +

POSITION_BOTTOM : string

+

Indicates the bottom position.

+

Kind: global variable

+ +

POSITION_LEFT : string

+

Indicates the left position.

+

Kind: global variable

+ +

POSITION_RIGHT : string

+

Indicates the right position.

+

Kind: global variable

+ +

PREFS_PURE_CODE : string

+

Preference for a distraction-free mode.

+

Kind: global variable

+ +

EVENT_PANEL_COLLAPSED : string

+

Event triggered when a panel is collapsed.

+

Kind: global constant

+ +

EVENT_PANEL_EXPANDED : string

+

Event triggered when a panel is expanded.

+

Kind: global constant

+ +

EVENT_PANEL_RESIZE_START : string

+

Event triggered at the start of panel resizing.

+

Kind: global constant

+ +

EVENT_PANEL_RESIZE_UPDATE : string

+

Event triggered during panel resizing updates.

+

Kind: global constant

+ +

EVENT_PANEL_RESIZE_END : string

+

Event triggered at the end of panel resizing.

+

Kind: global constant

+ +

show(element)

+

Shows a resizable element.

+

Kind: global function

+
ParamTypeDescription
elementDOMNodeHtml element to show if possible
+ +

hide(element)

+

Hides a resizable element.

+

Kind: global function

+
ParamTypeDescription
elementDOMNodeHtml element to hide if possible
+ +

toggle(element)

+

Changes the visibility state of a resizable element. The toggle +functionality is added when an element is made resizable.

+

Kind: global function

+
ParamTypeDescription
elementDOMNodeHtml element to toggle
+ +

removeSizable(element)

+

Removes the resizability of an element if it's resizable

+

Kind: global function

+
ParamTypeDescription
elementDOMNodeHtml element in which to remove sizing
+ +

resyncSizer(element)

+

Updates the sizing div by resyncing to the sizing edge of the element +Call this method after manually changing the size of the element

+

Kind: global function

+
ParamTypeDescription
elementDOMNodeHtml element whose sizer should be resynchronized
+ +

isVisible(element) ⇒ boolean

+

Returns the visibility state of a resizable element.

+

Kind: global function
+Returns: boolean - true if element is visible, false if it is not visible

+
ParamTypeDescription
elementDOMNodeHtml element to toggle
+ +

makeResizable(element, direction, position, minSize, collapsible, forceLeft, createdByWorkspaceManager, usePercentages, forceRight, _attachToParent, [initialSize])

+

Adds resizing and (optionally) expand/collapse capabilities to a given html element. The element's size +& visibility are automatically saved & restored as a view-state preference.

+

Resizing can be configured in two directions:

+
    +
  • Vertical ("vert"): Resizes the height of the element
  • +
  • Horizontal ("horz"): Resizes the width of the element
  • +
+

Resizer handlers can be positioned on the element at:

+
    +
  • Top ("top") or bottom ("bottom") for vertical resizing
  • +
  • Left ("left") or right ("right") for horizontal resizing
  • +
+

A resizable element triggers the following events while resizing:

+
    +
  • panelResizeStart: When the resize starts. Passed the new size.
  • +
  • panelResizeUpdate: When the resize gets updated. Passed the new size.
  • +
  • panelResizeEnd: When the resize ends. Passed the final size.
  • +
  • panelCollapsed: When the panel gets collapsed (or hidden). Passed the last size +before collapse. May occur without any resize events.
  • +
  • panelExpanded: When the panel gets expanded (or shown). Passed the initial size. +May occur without any resize events.
  • +
+

Kind: global function

+
ParamTypeDescription
elementDOMNodeDOM element which should be made resizable. Must have an id attribute, for use as a preferences key.
directionstringDirection of the resize action: one of the DIRECTION_* constants.
positionstringWhich side of the element can be dragged: one of the POSITION_* constants (TOP/BOTTOM for vertical resizing or LEFT/RIGHT for horizontal).
minSizenumberMinimum size (width or height) of the element's outer dimensions, including border & padding. Defaults to DEFAULT_MIN_SIZE.
collapsiblebooleanIndicates the panel is collapsible on double click on the resizer. Defaults to false.
forceLeftstringCSS selector indicating element whose 'left' should be locked to the the resizable element's size (useful for siblings laid out to the right of the element). Must lie in element's parent's subtree.
createdByWorkspaceManagerbooleanFor internal use only
usePercentagesbooleanMaintain the size of the element as a percentage of its parent the default is to maintain the size of the element in pixels
forceRightstringCSS selector indicating element whose 'right' should be locked to the the resizable element's size (useful for siblings laid out to the left of the element). Must lie in element's parent's subtree.
_attachToParentbooleanAttaches the resizer element to parent of the element rather than to element itself. Attach the resizer to the parent ONLY if element has the same offset as parent otherwise the resizer will be incorrectly positioned. FOR INTERNAL USE ONLY
[initialSize]numberOptional Initial size of panel in px. If not given, panel will use minsize or current size.
+ + \ No newline at end of file diff --git a/api/API-Reference/utils/Resizer/index.html b/api/API-Reference/utils/Resizer/index.html new file mode 100644 index 00000000..5cb5c25d --- /dev/null +++ b/api/API-Reference/utils/Resizer/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/utils/StringMatch.html b/api/API-Reference/utils/StringMatch.html new file mode 100644 index 00000000..ac1016db --- /dev/null +++ b/api/API-Reference/utils/StringMatch.html @@ -0,0 +1,106 @@ + + + + + +StringMatch | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

StringMatch

Import :

+
const StringMatch = brackets.getModule("utils/StringMatch")
+ +

SearchResult()

+

Object representing a search result with associated metadata (added as extra ad hoc fields)

+

Kind: global function

+ +

stringMatch(str, query, options, special) ⇒ Object

+

Match str against the query using the QuickOpen algorithm provided by +the functions above. The general idea is to prefer matches of "special" characters and, +optionally, matches that occur in the "last segment" (generally, the filename). stringMatch +will try to provide the best match and produces a "matchGoodness" score +to allow for relative ranking.

+

The result object returned includes "stringRanges" which can be used to highlight +the matched portions of the string, in addition to the "matchGoodness" +mentioned above. If DEBUG_SCORES is true, scoreDebug is set on the result +to provide insight into the score.

+

The matching is done in a case-insensitive manner.

+

Kind: global function
+Returns: Object - matched ranges and score

+
ParamTypeDescription
strstringThe string to search
querystringThe query string to find in string
optionsObjectto control search behavior. preferPrefixMatches puts an exact case-insensitive prefix match ahead of all other matches, even short-circuiting the match logic. This option implies segmentedSearch=false. When segmentedSearch is true, the string is broken into segments by "/" characters and the last segment is searched first and matches there are scored higher.
specialObject(optional) the specials data from findSpecialCharacters, if already known This is generally just used by StringMatcher for optimization.
+ +

multiFieldSort(searchResults, fieldSpec)

+

Sorts an array of SearchResult objects on a primary field, followed by secondary fields +in case of ties. 'fieldSpec' provides the priority order for fields, where the first entry is the primary field, for example: +multiFieldSort(bugList, [ "milestone", "severity" ]); +Would sort a bug list by milestone, and within each milestone sort bugs by severity.

+

fieldSpec can also include comparator functions of the form normally used by the sort() +function.

+

Any fields that have a string value are compared case-insensitively. Fields used should be +present on all SearchResult objects (no optional/undefined fields).

+

Kind: global function

+
ParamType
searchResultsArray.<SearchResult>
fieldSpecArray.<string, function()>
+ +

basicMatchSort()

+

Sorts search results generated by stringMatch(): results are sorted into several +tiers based on how well they matched the search query, then sorted alphabetically +within each tier.

+

Kind: global function

+ +

codeHintsSort(query, choices, [options]) ⇒ Array.<string>

+

Retrieves the matching code hints based on the given query and choices array.

+

Kind: global function
+Returns: Array.<string> - - An array of matching code hints.

+
ParamTypeDescription
querystringThe search query to match against choices.
choicesArray.<string>The list of possible code hints.
[options]objectAn optional object to specify additional search options.
options.limitnumberMaximum number of results to return
options.boostPrefixListArray.<string>Optional, Will rank matching items in the choices to top if query starts with the array. EG: on typing b, we have to show background-color to top. So we pass in ["background-color"] as boost prefix option along with other css properties that we want to boost.
options.onlyContiguousbooleanis set, will only include contiguous results.
+ +

StringMatcher(options)

+

A StringMatcher provides an interface to the stringMatch function with built-in +caching. You should use a StringMatcher for the lifetime of queries over a +single data set.

+

You are free to store other data on this object to assist in higher-level caching. +(This object's caches are all stored in "_" prefixed properties.)

+

Kind: global function

+
ParamTypeDescription
optionsObjectto control search behavior. preferPrefixMatches puts an exact case-insensitive prefix match ahead of all other matches, even short-circuiting the match logic. This option implies segmentedSearch=false. segmentedSearch treats segments of the string specially.
+ + +

stringMatcher.reset()

+

Clears the caches. Use this in the event that the caches may be invalid.

+

Kind: instance method of StringMatcher

+ +

stringMatcher.match(str, query) ⇒ Object

+

Performs a single match using the stringMatch function. See stringMatch for full documentation.

+

Kind: instance method of StringMatcher
+Returns: Object - matched ranges and score

+
ParamTypeDescription
strstringThe string to search
querystringThe query string to find in string
+ + \ No newline at end of file diff --git a/api/API-Reference/utils/StringMatch/index.html b/api/API-Reference/utils/StringMatch/index.html new file mode 100644 index 00000000..1ac21ad9 --- /dev/null +++ b/api/API-Reference/utils/StringMatch/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/utils/StringUtils.html b/api/API-Reference/utils/StringUtils.html new file mode 100644 index 00000000..3419d596 --- /dev/null +++ b/api/API-Reference/utils/StringUtils.html @@ -0,0 +1,149 @@ + + + + + +StringUtils | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

StringUtils

Import :

+
const StringUtils = brackets.getModule("utils/StringUtils")
+ +

utils/StringUtils

+

Utilities functions related to string manipulation

+ + +

utils/StringUtils.format(str, Arguments) ⇒ string

+

Format a string by replacing placeholder symbols with passed in arguments.

+

Example: var formatted = StringUtils.format("Hello 0", "World");

+

Kind: inner method of utils/StringUtils
+Returns: string - Formatted string

+
ParamTypeDescription
strstringThe base string
Argumentsrestto be substituted into the string
+ +

utils/StringUtils.regexEscape(str) ⇒ string

+

Regex escape

+

Kind: inner method of utils/StringUtils

+
ParamType
strstring
+ +

utils/StringUtils.jQueryIdEscape(str) ⇒ string

+

Periods (aka "dots") are allowed in HTML identifiers, but jQuery interprets +them as the start of a class selector, so they need to be escaped

+

Kind: inner method of utils/StringUtils

+
ParamType
strstring
+ +

utils/StringUtils.getLines(text) ⇒ Array.<string>

+

Splits the text by new line characters and returns an array of lines

+

Kind: inner method of utils/StringUtils
+Returns: Array.<string> - lines

+
ParamType
textstring
+ +

utils/StringUtils.offsetToLineNum(textOrLines, offset) ⇒ number

+

Returns a line number corresponding to an offset in some text. The text can +be specified as a single string or as an array of strings that correspond to +the lines of the string.

+

Specify the text in lines when repeatedly calling the function on the same +text in a loop. Use getLines() to divide the text into lines, then repeatedly call +this function to compute a line number from the offset.

+

Kind: inner method of utils/StringUtils
+Returns: number - line number

+
ParamTypeDescription
textOrLinesstring | Array.<string>string or array of lines from which to compute the line number from the offset
offsetnumber
+ +

utils/StringUtils.startsWith(str, prefix) ⇒ Boolean

+

Returns true if the given string starts with the given prefix.

+

Kind: inner method of utils/StringUtils

+
ParamType
strString
prefixString
+ +

utils/StringUtils.endsWith(str, suffix)

+

Returns true if the given string ends with the given suffix.

+

Kind: inner method of utils/StringUtils

+
ParamType
strstring
suffixstring
+ +

utils/StringUtils.urlSort(a, b) ⇒ number

+

sort two urls alphabetically +ensure folders appear before files on windows

+

Kind: inner method of utils/StringUtils

+
ParamType
astring
bstring
+ +

utils/StringUtils.breakableUrl(url) ⇒ string

+

Return an escaped path or URL string that can be broken near path separators.

+

Kind: inner method of utils/StringUtils
+Returns: string - the formatted path or URL

+
ParamTypeDescription
urlstringthe path or URL to format
+ +

utils/StringUtils.prettyPrintBytes(bytes, precision) ⇒ string

+

Converts number of bytes into human readable format. +If param bytes is negative it returns the number without any changes.

+

Kind: inner method of utils/StringUtils

+
ParamTypeDescription
bytesnumberNumber of bytes to convert
precisionnumberNumber of digits after the decimal separator
+ +

utils/StringUtils.truncate(str, len) ⇒ string

+

Truncate text to specified length.

+

Kind: inner method of utils/StringUtils
+Returns: string - Returns truncated text only if it was changed

+
ParamTypeDescription
strstringText to be truncated.
lennumberLength to which text should be truncated
+ +

utils/StringUtils.hashCode(str) ⇒ number

+

Computes a 32bit hash from the given string +Taken from http://stackoverflow.com/questions/7616461/generate-a-hash-from-string-in-javascript-jquery

+

Kind: inner method of utils/StringUtils
+Returns: number - The 32-bit hash
+Cc: wiki attribution: esmiralha

+
ParamTypeDescription
strstringThe string for which hash is to be computed
+ +

utils/StringUtils.randomString(stringLength, [prefix]) ⇒ string

+

Generates a random nonce string of the specified length.

+

!!!Should not be used for crypto secure workflows.!!!

+

Kind: inner method of utils/StringUtils
+Returns: string - - The randomly generated nonce.

+
ParamTypeDefaultDescription
stringLengthnumber10The length of the nonce in bytes. default 10.
[prefix]stringoptional prefix
+ +

utils/StringUtils.isNumber(value) ⇒ boolean

+

Check if value is a valid number

+

Kind: inner method of utils/StringUtils
+Returns: boolean - true if value is valid number, else false

+
ParamType
valuestring
+ + \ No newline at end of file diff --git a/api/API-Reference/utils/StringUtils/index.html b/api/API-Reference/utils/StringUtils/index.html new file mode 100644 index 00000000..8ec8808f --- /dev/null +++ b/api/API-Reference/utils/StringUtils/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/utils/TokenUtils.html b/api/API-Reference/utils/TokenUtils.html new file mode 100644 index 00000000..c21b018c --- /dev/null +++ b/api/API-Reference/utils/TokenUtils.html @@ -0,0 +1,91 @@ + + + + + +TokenUtils | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

TokenUtils

Import :

+
const TokenUtils = brackets.getModule("utils/TokenUtils")
+ +

_

+

Functions for iterating through tokens in the current editor buffer. Useful for doing +light parsing that can rely purely on information gathered by the code coloring mechanism.

+

Kind: global variable

+ +

getTokenAt(cm, pos, precise) ⇒ Object

+

Like cm.getTokenAt, but with caching. Way more performant for long lines.

+

Kind: global function
+Returns: Object - Token for position

+
ParamTypeDescription
cmCodeMirror
posObject
precisebooleanIf given, results in more current results. Suppresses caching.
+ +

getInitialContext(cm, pos) ⇒ Object

+

Creates a context object for the given editor and position, suitable for passing to the +move functions.

+

Kind: global function

+
ParamType
cmCodeMirror
posObject
+ +

movePrevToken(ctx, [precise]) ⇒ boolean

+

Moves the given context backwards by one token.

+

Kind: global function
+Returns: boolean - whether the context changed

+
ParamTypeDescription
ctxObject
[precise]booleanIf code is being edited, use true (default) for accuracy. If parsing unchanging code, use false to use cache for performance.
+ +

isAtStart(ctx) ⇒ boolean

+

Kind: global function
+Returns: boolean - true if movePrevToken() would return false without changing pos

+
ParamType
ctxObject
+ +

moveNextToken(ctx, [precise]) ⇒ boolean

+

Moves the given context forward by one token.

+

Kind: global function
+Returns: boolean - whether the context changed

+
ParamTypeDescription
ctxObject
[precise]booleanIf code is being edited, use true (default) for accuracy. If parsing unchanging code, use false to use cache for performance.
+ +

isAtEnd(ctx) ⇒ boolean

+

Kind: global function
+Returns: boolean - true if moveNextToken() would return false without changing pos

+
ParamType
ctxObject
+ +

moveSkippingWhitespace(moveFxn, ctx) ⇒ boolean

+

Moves the given context in the given direction, skipping any whitespace it hits.

+

Kind: global function
+Returns: boolean - whether the context changed

+
ParamTypeDescription
moveFxnfunctionthe function to move the context
ctxObject
+ +

offsetInToken(context) ⇒ number

+

In the given context, get the character offset of pos from the start of the token.

+

Kind: global function

+
ParamType
contextObject
+ +

getModeAt(cm, pos, precise) ⇒ Object

+

Returns the mode object and mode name string at a given position

+

Kind: global function

+
ParamTypeDescription
cmCodeMirrorCodeMirror instance
posObjectPosition to query for mode
precisebooleanIf given, results in more current results. Suppresses caching.
+ + \ No newline at end of file diff --git a/api/API-Reference/utils/TokenUtils/index.html b/api/API-Reference/utils/TokenUtils/index.html new file mode 100644 index 00000000..7e5062fb --- /dev/null +++ b/api/API-Reference/utils/TokenUtils/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/utils/ValidationUtils.html b/api/API-Reference/utils/ValidationUtils.html new file mode 100644 index 00000000..23cda028 --- /dev/null +++ b/api/API-Reference/utils/ValidationUtils.html @@ -0,0 +1,56 @@ + + + + + +ValidationUtils | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

ValidationUtils

Import :

+
const ValidationUtils = brackets.getModule("utils/ValidationUtils")
+ +

isInteger(value) ⇒ boolean

+

Used to validate whether type of unknown value is an integer.

+

Kind: global function
+Returns: boolean - true if value is a finite integer

+
ParamTypeDescription
value*Value for which to validate its type
+ +

isIntegerInRange(value, [lowerLimit], [upperLimit]) ⇒ boolean

+

Used to validate whether type of unknown value is an integer, and, if so, +is it within the option lower and upper limits.

+

Kind: global function
+Returns: boolean - true if value is an interger, and optionally in specified range.

+
ParamTypeDescription
value*Value for which to validate its type
[lowerLimit]numberOptional lower limit (inclusive)
[upperLimit]numberOptional upper limit (inclusive)
+ +

isWithinRange(value, [lowerLimit], [upperLimit]) ⇒ boolean

+

Used to validate whether type of unknown value is a number (including decimals), +and, if so, is it within the optional lower and upper limits.

+

Kind: global function
+Returns: boolean - true if value is a finite number, and optionally in specified range.

+
ParamTypeDescription
value*Value for which to validate its type
[lowerLimit]numberOptional lower limit (inclusive)
[upperLimit]numberOptional upper limit (inclusive)
+ + \ No newline at end of file diff --git a/api/API-Reference/utils/ValidationUtils/index.html b/api/API-Reference/utils/ValidationUtils/index.html new file mode 100644 index 00000000..b0ea02b8 --- /dev/null +++ b/api/API-Reference/utils/ValidationUtils/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/utils/ViewUtils.html b/api/API-Reference/utils/ViewUtils.html new file mode 100644 index 00000000..58c42bdc --- /dev/null +++ b/api/API-Reference/utils/ViewUtils.html @@ -0,0 +1,107 @@ + + + + + +ViewUtils | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

ViewUtils

Import :

+
const ViewUtils = brackets.getModule("utils/ViewUtils")
+ +

addScrollerShadow(displayElement, scrollElement, showBottom)

+

Installs event handlers for updatng shadow background elements to indicate vertical scrolling.

+

Kind: global function

+
ParamTypeDescription
displayElementDOMElementthe DOMElement that displays the shadow. Must fire "contentChanged" events when the element is resized or repositioned.
scrollElementObjectthe object that is scrolled. Must fire "scroll" events when the element is scrolled. If null, the displayElement is used.
showBottombooleanoptionally show the bottom shadow
+ +

removeScrollerShadow(displayElement, scrollElement)

+

Remove scroller-shadow effect.

+

Kind: global function

+
ParamTypeDescription
displayElementDOMElementthe DOMElement that displays the shadow
scrollElementObjectthe object that is scrolled
+ +

toggleClass($domElement, className, addClass)

+

Utility function to replace jQuery.toggleClass when used with the second argument, which needs to be a true boolean for jQuery

+

Kind: global function

+
ParamTypeDescription
$domElementjQueryObjectThe jQueryObject to toggle the Class on
classNamestringClass name or names (separated by spaces) to toggle
addClassbooleanA truthy value to add the class and a falsy value to remove the class
+ +

sidebarList(scrollElement, selectedClassName)

+

Within a scrolling DOMElement, creates and positions a styled selection +div to align a single selected list item from a ul list element.

+

Assumptions:

+
    +
  • scrollerElement is a child of the #sidebar div
  • +
  • ul list element fires a "selectionChanged" event after the +selectedClassName is assigned to a new list item
  • +
+

Kind: global function

+
ParamTypeDescription
scrollElementDOMElementA DOMElement containing a ul list element
selectedClassNamestringA CSS class name on at most one list item in the contained list
+ +

getElementClipSize($view, elementRect) ⇒ Object

+

Determine how much of an element rect is clipped in view.

+

Kind: global function
+Returns: Object - amount element rect is clipped in each direction

+
ParamTypeDescription
$viewDOMElementA jQuery scrolling container
elementRectObjectrectangle of element's default position/size
+ +

scrollElementIntoView($view, $element, scrollHorizontal)

+

Within a scrolling DOMElement, if necessary, scroll element into viewport.

+

To Perform the minimum amount of scrolling necessary, cases should be handled as follows:

+
    +
  • element already completely in view : no scrolling
  • +
  • element above viewport : scroll view so element is at top
  • +
  • element left of viewport : scroll view so element is at left
  • +
  • element below viewport : scroll view so element is at bottom
  • +
  • element right of viewport : scroll view so element is at right
  • +
+

Assumptions:

+
    +
  • $view is a scrolling container
  • +
+

Kind: global function

+
ParamTypeDescription
$viewDOMElementA jQuery scrolling container
$elementDOMElementA jQuery element
scrollHorizontalbooleanwhether to also scroll horizontally
+ +

getFileEntryDisplay(entry) ⇒ string

+

HTML formats a file entry name for display in the sidebar.

+

Kind: global function
+Returns: string - HTML formatted string

+
ParamTypeDescription
entryFileFile entry to display
+ +

getDirNamesForDuplicateFiles(files) ⇒ Array.<string>

+

Determine the minimum directory path to distinguish duplicate file names +for each file in list.

+

Kind: global function
+Returns: Array.<string> - directory paths to match list of files

+
ParamTypeDescription
filesArray.<File>list of Files with the same filename
+ +

hideMainToolBar()

+

Hides the main toolbar

+

Kind: global function

+ +

showMainToolBar()

+

Shows the main toolbar

+

Kind: global function

+ + \ No newline at end of file diff --git a/api/API-Reference/utils/ViewUtils/index.html b/api/API-Reference/utils/ViewUtils/index.html new file mode 100644 index 00000000..eac3a65f --- /dev/null +++ b/api/API-Reference/utils/ViewUtils/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/utils/ZipUtils.html b/api/API-Reference/utils/ZipUtils.html new file mode 100644 index 00000000..640532ef --- /dev/null +++ b/api/API-Reference/utils/ZipUtils.html @@ -0,0 +1,52 @@ + + + + + +ZipUtils | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

ZipUtils

Import :

+
const ZipUtils = brackets.getModule("utils/ZipUtils")
+ +

unzipBinDataToLocation(zipData, projectDir, flattenFirstLevel, [progressControlCallback]) ⇒ Promise

+

Extracts a given binary zip data array to a specified location.

+

Kind: global function
+Returns: Promise - - A promise that resolves when extraction is complete.

+
ParamTypeDefaultDescription
zipDataUInt8ArrayBinary zip data.
projectDirstringDirectory to extract to.
flattenFirstLevelbooleanfalseIf set to true, then if zip contents are nested inside a directory, the nested directory will be removed in the path structure in the destination. For example, some zip may contain a contents folder inside the zip which has all the files. If we blindly extract the zip, all the contents will be placed inside a contents folder in the root instead of the root directory itself. See a sample zip file here: https://api.github.com/repos/StartBootstrap/startbootstrap-grayscales/zipball
[progressControlCallback]functionA function that can be used to view the progress and stop further extraction. The function will be invoked with (doneCount, totalCount). The function should return false if further extraction needs to be stopped. If nothing or true is returned, it will continue extraction.
+ +

zipFolder(fullPath) ⇒ Promise.<JSZip>

+

Zips a given folder located at path to a jsZip object.

+

Kind: global function
+Returns: Promise.<JSZip> - zip object

+
ParamTypeDescription
fullPathstringto zip
+ +

unzipURLToLocation(url, projectDir, flattenFirstLevel) ⇒ Promise

+

Kind: global function

+
ParamDefaultDescription
urlthe zip fle URL
projectDirTo extract to
flattenFirstLevelfalseif set to true, then if zip contents are nested inside a directory, the nexted dir will be removed in the path structure in destination. For Eg. some Zip may contain a contents folder inside the zip which has all the contents. If we blindly extract the zio, all the contents will be placed inside a contents folder in root and not the root dir itself. See a sample zip file here: https://api.github.com/repos/StartBootstrap/startbootstrap-grayscales/zipball
+ + \ No newline at end of file diff --git a/api/API-Reference/utils/ZipUtils/index.html b/api/API-Reference/utils/ZipUtils/index.html new file mode 100644 index 00000000..4a75aab7 --- /dev/null +++ b/api/API-Reference/utils/ZipUtils/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/view/MainViewFactory.html b/api/API-Reference/view/MainViewFactory.html new file mode 100644 index 00000000..57f1f828 --- /dev/null +++ b/api/API-Reference/view/MainViewFactory.html @@ -0,0 +1,73 @@ + + + + + +MainViewFactory | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

MainViewFactory

Import :

+
const MainViewFactory = brackets.getModule("view/MainViewFactory")
+ +

view/MainViewFactory

+

MainViewFactory is a singleton for managing view factories.

+

Registering a view factory:

+
     registerViewFactory({
canOpenFile: function (fullPath) {
return (fullPath.slice(-4) === ".ico");
},
openFile: function(file, pane) {
return createIconView(file, pane);
}
});
+

The openFile method is used to open the file and construct +a view of it. Implementation should add the view to the pane

+
     function createIconView(file, pane) {
// IconView will construct its DOM and append
// it to pane.$el
var view = new IconView(file, pane.$el);
// Then tell the pane to add it to
// its view map and show it
pane.addView(view, true);
return new $.Deferred().resolve().promise();
}
+

Factories should only create 1 view of a file per pane. Brackets currently only supports 1 view of +a file open at a given time but that may change to allow the same file open in more than 1 pane. Therefore +Factories can do a simple check to see if a view already exists and show it before creating a new one:

+
     var view = pane.getViewForPath(file.fullPath);
if (view) {
pane.showView(view);
} else {
return createIconView(file, pane);
}
+ + +

view/MainViewFactory.registerViewFactory(factory)

+

Registers a view factory

+

Kind: inner method of view/MainViewFactory

+
ParamTypeDescription
factoryFactoryThe view factory to register.
+ +

view/MainViewFactory.findSuitableFactoryForPath(fullPath) ⇒ Factory

+

Finds a factory that can open the specified file

+

Kind: inner method of view/MainViewFactory
+Returns: Factory - A factory that can create a view for the path or undefined if there isn't one.

+
ParamTypeDescription
fullPathstringThe file to open.
+ +

view/MainViewFactory.Factory : Object

+

Kind: inner typedef of view/MainViewFactory
+Properties

+
NameTypeDescription
canOpenFilefunctionChecks if the factory can open the file by its path.
openFilefunctionFunction to open the file and return a promise.
+ + \ No newline at end of file diff --git a/api/API-Reference/view/MainViewFactory/index.html b/api/API-Reference/view/MainViewFactory/index.html new file mode 100644 index 00000000..9ef4955f --- /dev/null +++ b/api/API-Reference/view/MainViewFactory/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/view/MainViewManager.html b/api/API-Reference/view/MainViewManager.html new file mode 100644 index 00000000..6d5f429b --- /dev/null +++ b/api/API-Reference/view/MainViewManager.html @@ -0,0 +1,316 @@ + + + + + +MainViewManager | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

MainViewManager

Import :

+
const MainViewManager = brackets.getModule("view/MainViewManager")
+ +

view/MainViewManager

+

MainViewManager manages the arrangement of all open panes as well as provides the controller +logic behind all views in the MainView (e.g. ensuring that a file doesn't appear in 2 lists)

+

Each pane contains one or more views wich are created by a view factory and inserted into a pane list. +There may be several panes managed by the MainViewManager with each pane containing a list of views. +The panes are always visible and the layout is determined by the MainViewManager and the user.

+

Currently we support only 2 panes.

+

All of the WorkingSet APIs take a paneId Argument. This can be an actual pane Id, ALL_PANES (in most cases) +or ACTIVE_PANE. ALL_PANES may not be supported for some APIs. See the API for details.

+

This module dispatches several events:

+
    +
  • activePaneChange - When the active pane changes. There will always be an active pane. +(e, newPaneId:string, oldPaneId:string)
  • +
  • currentFileChange -- When the user has switched to another pane, file, document. When the user closes a view +and there are no other views to show the current file will be null. +(e, newFile:File, newPaneId:string, oldFile:File, oldPaneId:string)
  • +
  • paneLayoutChange -- When Orientation changes. +(e, orientation:string)
  • +
  • paneCreate -- When a pane is created +(e, paneId:string)
  • +
  • paneDestroy -- When a pane is destroyed +(e, paneId:string)
  • +
+

To listen for working set changes, you must listen to all of these events:

+
    +
  • workingSetAdd -- When a file is added to the working set +(e, fileAdded:File, index:number, paneId:string)
  • +
  • workingSetAddList -- When multiple files are added to the working set +(e, fileAdded:Array."File", paneId:string)
  • +
  • workingSetMove - When a File has moved to a different working set +(e, File:FILE, sourcePaneId:string, destinationPaneId:string)
  • +
  • workingSetRemove -- When a file is removed from the working set +(e, fileRemoved:File, suppressRedraw:boolean, paneId:string)
  • +
  • workingSetRemoveList -- When multiple files are removed from the working set +(e, filesRemoved:Array."File", paneId:string)
  • +
  • workingSetSort -- When a pane's view array is reordered without additions or removals. +(e, paneId:string)
  • +
  • workingSetUpdate -- When changes happen due to system events such as a file being deleted. +listeners should discard all working set info and rebuilt it from the pane +by calling getWorkingSet() +(e, paneId:string)
  • +
  • _workingSetDisableAutoSort -- When the working set is reordered by manually dragging a file. +(e, paneId:string) For Internal Use Only.
  • +
+

To listen for events, do something like this: (see EventDispatcher for details on this pattern) +MainViewManager.on("eventname", handler);

+ + +

view/MainViewManager.EVENT_CURRENT_FILE_CHANGE : string

+

Event current file change

+

Kind: inner constant of view/MainViewManager

+ +

view/MainViewManager.ALL_PANES

+

Special paneId shortcut that can be used to specify that +all panes should be targeted by the API. +Not all APIs support this constnant. +Check the API documentation before use.

+

Kind: inner constant of view/MainViewManager

+ +

view/MainViewManager.ACTIVE_PANE

+

Special paneId shortcut that can be used to specify that +the API should target the focused pane only. +All APIs support this shortcut.

+

Kind: inner constant of view/MainViewManager

+ +

view/MainViewManager.isExclusiveToPane(File) ⇒ Object

+

Checks whether a file is listed exclusively in the provided pane

+

Kind: inner method of view/MainViewManager

+
ParamTypeDescription
FileFilethe file
+ +

view/MainViewManager.getActivePaneId() ⇒ string

+

Retrieves the currently active Pane Id

+

Kind: inner method of view/MainViewManager
+Returns: string - Active Pane's ID.

+ +

view/MainViewManager.focusActivePane()

+

Focuses the current pane. If the current pane has a current view, then the pane will focus the view.

+

Kind: inner method of view/MainViewManager

+ +

view/MainViewManager.setActivePaneId(paneId)

+

Switch active pane to the specified pane id (or ACTIVE_PANE/ALL_PANES, in which case this +call does nothing).

+

Kind: inner method of view/MainViewManager

+
ParamTypeDescription
paneIdstringthe id of the pane to activate
+ +

view/MainViewManager.getCurrentlyViewedFile(paneId) ⇒ File

+

Retrieves the currently viewed file of the specified paneId

+

Kind: inner method of view/MainViewManager
+Returns: File - File object of the currently viewed file, or null if there isn't one or there's no such pane

+
ParamTypeDescription
paneIdstringthe id of the pane in which to retrieve the currently viewed file
+ +

view/MainViewManager.getCurrentlyViewedEditor(paneId) ⇒ Editor

+

Retrieves the currently viewed editor of the specified paneId

+

Kind: inner method of view/MainViewManager
+Returns: Editor - currently editor, or null if there isn't one or there's no such pane

+
ParamTypeDescription
paneIdstringthe id of the pane in which to retrieve the currently viewed editor
+ +

view/MainViewManager.getAllViewedEditors() ⇒ Object

+

Gets an array of editors open in panes with their pane IDs. +Can return an empty array if no editors are open.

+

Kind: inner method of view/MainViewManager
+Returns: Object - An array of objects, each containing an editor and its corresponding pane ID.

+ +

view/MainViewManager.getCurrentlyViewedPath(paneId) ⇒ string

+

Retrieves the currently viewed path of the pane specified by paneId

+

Kind: inner method of view/MainViewManager
+Returns: string - the path of the currently viewed file or null if there isn't one

+
ParamTypeDescription
paneIdstringthe id of the pane in which to retrieve the currently viewed path
+ +

view/MainViewManager.cacheScrollState(paneId)

+

Caches the specified pane's current scroll state +If there was already cached state for the specified pane, it is discarded and overwritten

+

Kind: inner method of view/MainViewManager

+
ParamTypeDescription
paneIdstringid of the pane in which to cache the scroll state, ALL_PANES or ACTIVE_PANE
+ +

view/MainViewManager.restoreAdjustedScrollState(paneId, heightDelta)

+

Restores the scroll state from cache and applies the heightDelta +The view implementation is responsible for applying or ignoring the heightDelta. +This is used primarily when a modal bar opens to keep the editor from scrolling the current +page out of view in order to maintain the appearance. +The state is removed from the cache after calling this function.

+

Kind: inner method of view/MainViewManager

+
ParamTypeDescription
paneIdstringid of the pane in which to adjust the scroll state, ALL_PANES or ACTIVE_PANE
heightDeltanumberdelta H to apply to the scroll state
+ +

view/MainViewManager.getWorkingSet(paneId) ⇒ Array.<File>

+

Retrieves the WorkingSet for the given paneId not including temporary views

+

Kind: inner method of view/MainViewManager

+
ParamTypeDescription
paneIdstringid of the pane in which to get the view list, ALL_PANES or ACTIVE_PANE
+ +

view/MainViewManager.getAllOpenFiles() ⇒ array.<File>

+

Retrieves the list of all open files including temporary views

+

Kind: inner method of view/MainViewManager
+Returns: array.<File> - the list of all open files in all open panes

+ +

view/MainViewManager.getPaneIdList() ⇒ array.<string>

+

Retrieves the list of all open pane ids

+

Kind: inner method of view/MainViewManager
+Returns: array.<string> - the list of all open panes

+ +

view/MainViewManager.getWorkingSetSize(paneId) ⇒ number

+

Retrieves the size of the selected pane's view list

+

Kind: inner method of view/MainViewManager
+Returns: number - the number of items in the specified pane

+
ParamTypeDescription
paneIdstringid of the pane in which to get the workingset size. Can use ALL_PANES or ACTIVE_PANE
+ +

view/MainViewManager.getPaneTitle(paneId) ⇒ string

+

Retrieves the title to display in the workingset view

+

Kind: inner method of view/MainViewManager
+Returns: string - title

+
ParamTypeDescription
paneIdstringid of the pane in which to get the title
+ +

view/MainViewManager.getPaneCount() ⇒ number

+

Retrieves the number of panes

+

Kind: inner method of view/MainViewManager

+ +

view/MainViewManager.findInAllWorkingSets(fullPath) ⇒ Object

+

Finds all instances of the specified file in all working sets. +If there is a temporary view of the file, it is not part of the result set

+

Kind: inner method of view/MainViewManager
+Returns: Object - an array of paneId/index records

+
ParamTypeDescription
fullPathstringpath of the file to find views of
+ +

view/MainViewManager.findInOpenPane(fullPath) ⇒ Object

+

Returns the pane IDs and editors (if present) of the given file in any open and viewable pane. +If the same file is open in multiple panes, all matching panes will be returned. +If not found in any panes, an empty array will be returned.

+

Kind: inner method of view/MainViewManager
+Returns: Object - An array of objects, each containing the pane ID and the corresponding editor, if present.

+
ParamTypeDescription
fullPathstringThe full path of the file to search for.
+ +

view/MainViewManager.findInWorkingSet(paneId, fullPath) ⇒ number

+

Gets the index of the file matching fullPath in the workingset

+

Kind: inner method of view/MainViewManager
+Returns: number - index, -1 if not found.

+
ParamTypeDescription
paneIdstringid of the pane in which to search or ALL_PANES or ACTIVE_PANE
fullPathstringfull path of the file to search for
+ +

view/MainViewManager.findInWorkingSetByAddedOrder(paneId, fullPath) ⇒ number

+

Gets the index of the file matching fullPath in the added order workingset

+

Kind: inner method of view/MainViewManager
+Returns: number - index, -1 if not found.

+
ParamTypeDescription
paneIdstringid of the pane in which to search or ALL_PANES or ACTIVE_PANE
fullPathstringfull path of the file to search for
+ +

view/MainViewManager.findInWorkingSetByMRUOrder(paneId, fullPath) ⇒ number

+

Gets the index of the file matching fullPath in the MRU order workingset

+

Kind: inner method of view/MainViewManager
+Returns: number - index, -1 if not found.

+
ParamTypeDescription
paneIdstringid of the pane in which to search or ALL_PANES or ACTIVE_PANE
fullPathstringfull path of the file to search for
+ +

view/MainViewManager.addToWorkingSet(paneId, file, [index], [forceRedraw])

+

Adds the given file to the end of the workingset, if it is not already there. +This API does not create a view of the file, it just adds it to the working set +Views of files in the working set are persisted and are not destroyed until the user +closes the file using FILE_CLOSE; Views are created using FILE_OPEN and, when opened, are +made the current view. If a File is already opened then the file is just made current +and its view is shown.

+

Kind: inner method of view/MainViewManager

+
ParamTypeDescription
paneIdstringThe id of the pane in which to add the file object to or ACTIVE_PANE
fileFileThe File object to add to the workingset
[index]numberPosition to add to list (defaults to last); -1 is ignored
[forceRedraw]booleanIf true, a workingset change notification is always sent (useful if suppressRedraw was used with removeView() earlier)
+ +

view/MainViewManager.addListToWorkingSet(paneId, fileList)

+

Adds the given file list to the end of the workingset.

+

Kind: inner method of view/MainViewManager

+
ParamTypeDescription
paneIdstringThe id of the pane in which to add the file object to or ACTIVE_PANE
fileListArray.<File>Array of files to add to the pane
+ +

view/MainViewManager.switchPaneFocus()

+

Switch between panes

+

Kind: inner method of view/MainViewManager

+ +

view/MainViewManager.traverseToNextViewByMRU(direction) ⇒ Object

+

Get the next or previous file in the MRU list.

+

Kind: inner method of view/MainViewManager
+Returns: Object - The File object of the next item in the traversal order or null if there aren't any files to traverse. +May return current file if there are no other files to traverse.

+
ParamTypeDescription
directionnumberMust be 1 or -1 to traverse forward or backward
+ +

view/MainViewManager.traverseToNextViewInListOrder(direction) ⇒ Object

+

Get the next or previous file in list order.

+

Kind: inner method of view/MainViewManager
+Returns: Object - The File object of the next item in the traversal order or null if there aren't any files to traverse. +May return current file if there are no other files to traverse.

+
ParamTypeDescription
directionnumberMust be 1 or -1 to traverse forward or backward
+ +

view/MainViewManager.beginTraversal()

+

Indicates that traversal has begun. +Can be called any number of times.

+

Kind: inner method of view/MainViewManager

+ +

view/MainViewManager.endTraversal()

+

Un-freezes the MRU list after one or more beginTraversal() calls. +Whatever file is current is bumped to the front of the MRU list.

+

Kind: inner method of view/MainViewManager

+ +

view/MainViewManager.setLayoutScheme(rows, columns)

+

Changes the layout scheme

+

Kind: inner method of view/MainViewManager
+Summay: Rows or Columns may be 1 or 2 but both cannot be 2. 1x2, 2x1 or 1x1 are the legal values

+
ParamTypeDescription
rowsnumber(may be 1 or 2)
columnsnumber(may be 1 or 2)
+ +

view/MainViewManager.getLayoutScheme() ⇒ Object

+

Retrieves the current layout scheme.

+

Kind: inner method of view/MainViewManager
+Returns: Object - - An object containing the number of rows and columns in the layout.

+ + \ No newline at end of file diff --git a/api/API-Reference/view/MainViewManager/index.html b/api/API-Reference/view/MainViewManager/index.html new file mode 100644 index 00000000..f29f904f --- /dev/null +++ b/api/API-Reference/view/MainViewManager/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/view/Pane.html b/api/API-Reference/view/Pane.html new file mode 100644 index 00000000..43a1b5b1 --- /dev/null +++ b/api/API-Reference/view/Pane.html @@ -0,0 +1,459 @@ + + + + + +Pane | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

Pane

Import :

+
const Pane = brackets.getModule("view/Pane")
+ +

view/Pane

+

Pane objects host views of files, editors, etc... Clients cannot access +Pane objects directly. Instead the implementation is protected by the +MainViewManager -- however View Factories are given a Pane object which +they can use to add views. References to Pane objects should not be kept +as they may be destroyed and removed from the DOM.

+

To get a custom view, there are two components:

+
    +
  1. A View Factory
  2. +
  3. A View Object
  4. +
+

View objects are anonymous object that have a particular interface.

+

Views can be added to a pane but do not have to exist in the Pane object's view list. +Such views are "temporary views". Temporary views are not serialized with the Pane state +or reconstituted when the pane is serialized from disk. They are destroyed at the earliest +opportunity.

+

Temporary views are added by calling Pane.showView() and passing it the view object. The view +will be destroyed when the next view is shown, the pane is mereged with another pane or the "Close All" +command is exectuted on the Pane. Temporary Editor Views do not contain any modifications and are +added to the workingset (and are no longer tempoary views) once the document has been modified. They +will remain in the working set until closed from that point on.

+

Views that have a longer life span are added by calling addView to associate the view with a +filename in the _views object. These views are not destroyed until they are removed from the pane +by calling one of the following: removeView, removeViews, or _reset

+

Pane Object Events:

+
    +
  • +

    viewListChange - Whenever there is a file change to a file in the working set. These 2 events: DocumentManager.pathRemove +and DocumentManager.fileNameChange will cause a viewListChange event so the WorkingSetView can update.

    +
  • +
  • +

    currentViewChange - Whenever the current view changes. +(e, newView:View, oldView:View)

    +
  • +
  • +

    viewDestroy - Whenever a view has been destroyed +(e, view:View)

    +
  • +
+

View Interface:

+

The view is an anonymous object which has the following method signatures. see ImageViewer for an example or the sample +provided with Brackets src/extensions/samples/BracketsConfigCentral

+
    {
$el:jQuery
getFile: function ():!File
updateLayout: function(forceRefresh:boolean)
destroy: function()
getScrollPos: function():*=
adjustScrollPos: function(state:Object=, heightDelta:number)=
notifyContainerChange: function()=
notifyVisibilityChange: function(boolean)=
focus:function()=
}
+

When views are created they can be added to the pane by calling pane.addView(). +Views can be created and parented by attaching directly to pane.$el

+

this._codeMirror = new CodeMirror(pane.$el, ...)

+

Factories can create a view that's initially hidden by calling pane.addView(view) and passing false for the show parameter. +Hidden views can be later shown by calling pane.showView(view)

+

$el:jQuery!

+

property that stores the jQuery wrapped DOM element of the view. All views must have one so pane objects can manipulate the DOM +element when necessary (e.g. showView, _reparent, etc...)

+

getFile():File!

+

Called throughout the life of a View when the current file is queried by the system.

+

updateLayout(forceRefresh:boolean)

+

Called to notify the view that it should be resized to fit its parent container. This may be called several times +or only once. Views can ignore the forceRefresh flag. It is used for editor views to force a relayout of the editor +which probably isn't necessary for most views. Views should implement their html to be dynamic and not rely on this +function to be called whenever possible.

+

destroy()

+

Views must implement a destroy method to remove their DOM element at the very least. There is no default +implementation and views are hidden before this method is called. The Pane object doesn't make assumptions +about when it is safe to remove a node. In some instances other cleanup must take place before a the DOM +node is destroyed so the implementation details are left to the view.

+

Views can implement a simple destroy by calling

+

this.$el.remove()

+

These members are optional and need not be implemented by Views

+

getScrollPos() +adjustScrollPos()

+

The system at various times will want to save and restore a view's scroll position. The data returned by getScrollPos() +is specific to the view and will be passed back to adjustScrollPos() when the scroll position needs to be restored.

+

When Modal Bars are invoked, the system calls getScrollPos() so that the current scroll psotion of all visible Views can be cached. +That cached scroll position is later passed to adjustScrollPos() along with a height delta. The height delta is used to +scroll the view so that it doesn't appear to have "jumped" when invoking the Modal Bar.

+

Height delta will be a positive when the Modal Bar is being shown and negative number when the Modal Bar is being hidden.

+

getViewState() is another optional member that is used to cache a view's state when hiding or destroying a view or closing the project. +The data returned by this member is stored in ViewStateManager and is saved with the project.

+

Views or View Factories are responsible for restoring the view state when the view of that file is created by recalling the cached state

+

var view = createIconView(file, pane); +view.restoreViewState(ViewStateManager.getViewState(file.fullPath));

+

Notifications +The following optional methods receive notifications from the Pane object when certain events take place which affect the view:

+

notifyContainerChange()

+

Optional Notification callback called when the container changes. The view can perform any synchronization or state update +it needs to do when its parent container changes.

+

notifyVisiblityChange()

+

Optional Notification callback called when the view's vsibility changes. The view can perform any synchronization or +state update it needs to do when its visiblity state changes.

+ + +

view/Pane.Pane

+

Kind: inner class of view/Pane
+See: MainViewManager for more information

+ + +

new Pane(id, $container)

+

Pane Objects are constructed by the MainViewManager object when a Pane view is needed.

+
ParamTypeDescription
idstringThe id to use to identify this pane.
$containerjQueryThe parent jQuery container to place the pane view.
+ +

pane.id : string

+

id of the pane

+

Kind: instance property of Pane
+Read only: true

+ +

pane.$container : JQuery

+

container where the pane lives

+

Kind: instance property of Pane
+Read only: true

+ +

pane.$el : JQuery

+

the wrapped DOM node of this pane

+

Kind: instance property of Pane
+Read only: true

+ +

pane.$header : JQuery

+

the wrapped DOM node container that contains name of current view and the switch view button, or informational string if there is no view

+

Kind: instance property of Pane
+Read only: true

+ +

pane.$headerText : JQuery

+

the wrapped DOM node that contains name of current view, or informational string if there is no view

+

Kind: instance property of Pane
+Read only: true

+ +

pane.$headerFlipViewBtn : JQuery

+

the wrapped DOM node that is used to flip the view to another pane

+

Kind: instance property of Pane
+Read only: true

+ +

pane.$headerCloseBtn : JQuery

+

close button of the pane

+

Kind: instance property of Pane
+Read only: true

+ +

pane.$content : JQuery

+

the wrapped DOM node that contains views

+

Kind: instance property of Pane
+Read only: true

+ +

pane.ITEM_NOT_FOUND

+

Return value from reorderItem when the Item was not found

+

Kind: instance constant of Pane
+See: Pane#reorderItem

+ +

pane.ITEM_FOUND_NO_SORT

+

Return value from reorderItem when the Item was found at its natural index +and the workingset does not need to be resorted

+

Kind: instance constant of Pane
+See: Pane#reorderItem

+ +

pane.ITEM_FOUND_NEEDS_SORT

+

Return value from reorderItem when the Item was found and reindexed +and the workingset needs to be resorted

+

Kind: instance constant of Pane
+See: Pane#reorderItem

+ +

pane.mergeFrom(other)

+

Merges the another Pane object's contents into this Pane

+

Kind: instance method of Pane

+
ParamTypeDescription
otherPanePane from which to copy
+ +

pane.destroy()

+

Removes the DOM node for the Pane, removes all +event handlers and _resets all internal data structures

+

Kind: instance method of Pane

+ +

pane.getViewList() ⇒ Array.<File>

+

Returns a copy of the view file list

+

Kind: instance method of Pane

+ +

pane.getViewListSize() ⇒ number

+

Returns the number of entries in the view file list

+

Kind: instance method of Pane

+ +

pane.findInViewList(fullPath) ⇒ number

+

Returns the index of the item in the view file list

+

Kind: instance method of Pane
+Returns: number - index of the item or -1 if not found

+
ParamTypeDescription
fullPathstringthe full path of the item to look for
+ +

pane.findInViewListAddedOrder(fullPath) ⇒ number

+

Returns the order in which the item was added

+

Kind: instance method of Pane
+Returns: number - order of the item or -1 if not found

+
ParamTypeDescription
fullPathstringthe full path of the item to look for
+ +

pane.findInViewListMRUOrder(fullPath) ⇒ number

+

Returns the order in which the item was last used

+

Kind: instance method of Pane
+Returns: number - order of the item or -1 if not found. +0 indicates most recently used, followed by 1 and so on...

+
ParamTypeDescription
fullPathstringthe full path of the item to look for
+ +

pane.reorderItem(file, [index], [force]) ⇒ number

+

reorders the specified file in the view list to the desired position

+

Kind: instance method of Pane
+Returns: number - this function returns one of the following manifest constants: +ITEM_NOT_FOUND : The request file object was not found +ITEM_FOUND_NO_SORT : The request file object was found but it was already at the requested index +ITEM_FOUND_NEEDS_SORT : The request file object was found and moved to a new index and the list should be resorted

+
ParamTypeDescription
fileFilethe file object of the item to reorder
[index]numberthe new position of the item
[force]booleantrue to force the item into that position, false otherwise. (Requires an index be requested)
+ +

pane.addToViewList(file, [index]) ⇒ number

+

Adds the given file to the end of the workingset, if it is not already in the list +Does not change which document is currently open in the editor. Completes synchronously.

+

Kind: instance method of Pane
+Returns: number - index of where the item was added

+
ParamTypeDescription
fileFilefile to add
[index]numberposition where to add the item
+ +

pane.addListToViewList(fileList) ⇒ Array.<File>

+

Adds the given file list to the end of the workingset.

+

Kind: instance method of Pane
+Returns: Array.<File> - list of files added to the list

+
ParamType
fileListArray.<File>
+ +

pane.makeViewMostRecent(file)

+

Moves the specified file to the front of the MRU (Most Recently Used) list.

+

Kind: instance method of Pane

+
ParamTypeDescription
fileFileThe file to move to the front of the MRU list.
+ +

pane.sortViewList(compareFn)

+

Sorts items in the pane's view list.

+

Kind: instance method of Pane

+
ParamTypeDescription
compareFnfunctionThe function used to compare items in the view list.
+ +

pane.swapViewListIndexes(index1, index2) ⇒ boolean

+

Swaps two items in the file view list (used while dragging items in the working set view)

+

Kind: instance method of Pane
+Returns: boolean - } true

+
ParamTypeDescription
index1numberthe index of the first item to swap
index2numberthe index of the second item to swap
+ +

pane.traverseViewListByMRU(direction, [current]) ⇒ File

+

Traverses the list and returns the File object of the next item in the MRU order

+

Kind: instance method of Pane
+Returns: File - The File object of the next item in the travesal order or null if there isn't one.

+
ParamTypeDescription
directionnumberMust be 1 or -1 to traverse forward or backward
[current]stringthe fullPath of the item where traversal is to start. If this parameter is omitted then the path of the current view is used. If the current view is a temporary view then the first item in the MRU list is returned
+ +

pane.showInterstitial(show)

+

Shows the pane's interstitial page

+

Kind: instance method of Pane

+
ParamTypeDescription
showbooleanshow or hide the interstitial page
+ +

pane.getViewForPath(path) ⇒ boolean

+

retrieves the view object for the given path

+

Kind: instance method of Pane
+Returns: boolean - show - show or hide the interstitial page

+
ParamTypeDescription
pathstringthe fullPath of the view to retrieve
+ +

pane.addView(view, show)

+

Adds a view to the pane

+

Kind: instance method of Pane

+
ParamTypeDescription
viewViewthe View object to add
showbooleantrue to show the view right away, false otherwise
+ +

pane.showView(view)

+

Swaps the current view with the requested view. +If the interstitial page is shown, it is hidden. +If the currentView is a temporary view, it is destroyed.

+

Kind: instance method of Pane

+
ParamTypeDescription
viewViewthe to show
+ +

pane.updateLayout(forceRefresh)

+

Sets pane content height. Updates the layout causing the current view to redraw itself

+

Kind: instance method of Pane

+
ParamTypeDescription
forceRefreshbooleantrue to force a resize and refresh of the current view, false if just to resize forceRefresh is only used by Editor views to force a relayout of all editor DOM elements. Custom View implementations should just ignore this flag.
+ +

pane.getCurrentlyViewedFile() ⇒ File

+

Retrieves the File object of the current view

+

Kind: instance method of Pane
+Returns: File - the File object of the current view or null if there isn't one

+ +

pane.getCurrentlyViewedEditor() ⇒ File

+

Retrieves the File object of the current view

+

Kind: instance method of Pane
+Returns: File - the File object of the current view or null if there isn't one

+ +

pane.getCurrentlyViewedPath() ⇒ string

+

Retrieves the path of the current view

+

Kind: instance method of Pane
+Returns: string - the path of the current view or null if there isn't one

+ +

pane.destroyViewIfNotNeeded(view)

+

destroys the view if it isn't needed

+

Kind: instance method of Pane

+
ParamTypeDescription
viewViewthe view to destroy
+ +

pane.removeView(file, suppressOpenNextFile, preventViewChange) ⇒ boolean

+

Removes the view and opens the next view

+

Kind: instance method of Pane
+Returns: boolean - true if the file was removed from the working set +This function will remove a temporary view of a file but will return false in that case

+
ParamTypeDescription
fileFilethe file to close
suppressOpenNextFilebooleansuppresses opening the next file in MRU order
preventViewChangebooleanif suppressOpenNextFile is truthy, this flag can be used to prevent the current view from being destroyed. Ignored if suppressOpenNextFile is falsy
+ +

pane.removeViews(list) ⇒ Array.<File>

+

Removes the specifed file from all internal lists, destroys the view of the file (if there is one) +and shows the interstitial page if the current view is destroyed.

+

Kind: instance method of Pane
+Returns: Array.<File> - Array of File objects removed from the working set. +This function will remove temporary views but the file objects for those views will not be found +in the result set. Only the file objects removed from the working set are returned.

+
ParamTypeDescription
listArray.<File>Array of files to remove
+ +

pane.focus()

+

Gives focus to the last thing that had focus, the current view or the pane in that order

+

Kind: instance method of Pane

+ +

pane.loadState(state) ⇒ jQuery.Promise

+

serializes the pane state from JSON

+

Kind: instance method of Pane
+Returns: jQuery.Promise - A promise which resolves to {fullPath:string, paneId:string} which can be passed as command data to FILE_OPEN

+
ParamTypeDescription
stateObjectthe state to load
+ +

pane.saveState() ⇒ Object

+

Returns the JSON-ified state of the object so it can be serialize

+

Kind: instance method of Pane
+Returns: Object - state - the state to save

+ +

pane.getScrollState() ⇒ Object

+

gets the current view's scroll state data

+

Kind: instance method of Pane
+Returns: Object - scroll state - the current scroll state

+ +

pane.restoreAndAdjustScrollState([state], [heightDelta])

+

tells the current view to restore its scroll state from cached data and apply a height delta

+

Kind: instance method of Pane

+
ParamTypeDescription
[state]Objectthe current scroll state
[heightDelta]numberthe amount to add or subtract from the state
+ + \ No newline at end of file diff --git a/api/API-Reference/view/Pane/index.html b/api/API-Reference/view/Pane/index.html new file mode 100644 index 00000000..4737d8e1 --- /dev/null +++ b/api/API-Reference/view/Pane/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/view/PanelView.html b/api/API-Reference/view/PanelView.html new file mode 100644 index 00000000..15816e81 --- /dev/null +++ b/api/API-Reference/view/PanelView.html @@ -0,0 +1,290 @@ + + + + + +PanelView | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

PanelView

Import :

+
const PanelView = brackets.getModule("view/PanelView")
+ +

_panelMap : Object.<string, Panel>

+

Maps panel ID to Panel instance

+

Kind: global variable

+ +

_$container : jQueryObject

+

The single container wrapping all bottom panels

+

Kind: global variable

+ +

_$tabBar : jQueryObject

+

The tab bar inside the container

+

Kind: global variable

+ +

_$tabsOverflow : jQueryObject

+

Scrollable area holding the tab elements

+

Kind: global variable

+ +

_openIds : Array.<string>

+

Ordered list of currently open (tabbed) panel IDs

+

Kind: global variable

+ +

_activeId : string | null

+

The panel ID of the currently visible (active) tab

+

Kind: global variable

+ +

_isMaximized : boolean

+

Whether the bottom panel is currently maximized

+

Kind: global variable

+ +

_preMaximizeHeight : number | null

+

The panel height before maximize, for restore

+

Kind: global variable

+ +

_$editorHolder : jQueryObject

+

The editor holder element, passed from WorkspaceManager

+

Kind: global variable

+ +

_recomputeLayout : function

+

recomputeLayout callback from WorkspaceManager

+

Kind: global variable

+ +

_defaultPanelId : string | null

+

The default/quick-access panel ID

+

Kind: global variable

+ +

_$overflowBtn : jQueryObject

+

Overflow dropdown button

+

Kind: global variable

+ +

_overflowDropdown : DropdownButton.DropdownButton

+

Kind: global variable

+ +

EVENT_PANEL_HIDDEN : string

+

Event when panel is hidden

+

Kind: global constant

+ +

EVENT_PANEL_SHOWN : string

+

Event when panel is shown

+

Kind: global constant

+ +

PANEL_TYPE_BOTTOM_PANEL : string

+

type for bottom panel

+

Kind: global constant

+ +

MAXIMIZE_THRESHOLD : number

+

Pixel threshold for detecting near-maximize state during resize. +If the editor holder height is within this many pixels of zero, the +panel is treated as maximized. Keeps the maximize icon responsive +during drag without being overly sensitive.

+

Kind: global constant

+ +

MIN_PANEL_HEIGHT : number

+

Minimum panel height (matches Resizer minSize) used as a floor +when computing a sensible restore height.

+

Kind: global constant

+ +

PREF_BOTTOM_PANEL_MAXIMIZED

+

Preference key for persisting the maximize state across reloads.

+

Kind: global constant

+ +

Panel($panel, id, [title], [options])

+

Kind: global function

+
ParamTypeDescription
$paneljQueryObject
idstring
[title]string
[options]Object
[options.iconSvg]stringPath to an SVG icon (e.g. "styles/images/icon.svg").
+ + +

panel.$panel : jQueryObject

+

Dom node holding the rendered panel

+

Kind: instance property of Panel

+ +

panel.isVisible() ⇒ boolean

+

Determines if the panel is visible

+

Kind: instance method of Panel
+Returns: boolean - true if visible, false if not

+ +

panel.registerCanBeShownHandler(canShowHandlerFn) ⇒ boolean

+

Registers a call back function that will be called just before panel is shown. The handler should return true +if the panel can be shown, else return false and the panel will not be shown.

+

Kind: instance method of Panel
+Returns: boolean - true if visible, false if not

+
ParamTypeDescription
canShowHandlerFnfunction | nullfunction that should return true of false if the panel can be shown/not. or null to clear the handler.
+ +

panel.canBeShown() ⇒ boolean

+

Returns true if th panel can be shown, else false.

+

Kind: instance method of Panel

+ +

panel.registerOnCloseRequestedHandler(handler)

+

Registers an async handler that is called before the panel is closed via user interaction (e.g. clicking the +tab close button). The handler should return true to allow the close, or false to prevent it.

+

Kind: instance method of Panel

+
ParamTypeDescription
handlerfunction | nullAn async function returning a boolean, or null to clear the handler.
+ +

panel.requestClose() ⇒ Promise.<boolean>

+

Requests this panel's tab to close, invoking the registered +onCloseRequested handler first (if any). If the handler returns false, +the tab stays open. Otherwise, closeTab() is called.

+

Kind: instance method of Panel
+Returns: Promise.<boolean> - Resolves to true if the tab was closed, false if prevented.

+ +

panel.show()

+

Shows the panel

+

Kind: instance method of Panel

+ +

panel.addToTabBar()

+

Adds the panel to the tab bar and open set without showing the container. +Use this during startup to restore a panel's tab when the container +was collapsed by the user — avoids forcing the bottom panel open.

+

Kind: instance method of Panel

+ +

panel.hide()

+

Hides this panel: removes its tab from the tab bar, and if this was +the active tab, collapses the bottom panel container. The panel stays +registered — call show() to bring it back.

+

For tab-bar UX where closing the active tab should switch to the next +sibling tab (like clicking the X on a tab), use closeTab() instead. +For permanent removal, use destroy().

+

Kind: instance method of Panel

+ +

panel.closeTab()

+

Closes this tab: removes its tab from the tab bar. If this was the +active tab, switches to the next sibling tab; if no other tab is open, +collapses the bottom panel container instead. The panel stays +registered — call show() to bring it back.

+

For a programmatic hide that always collapses (no auto-switch to a +sibling tab), use hide(). For permanent removal, use destroy().

+

Kind: instance method of Panel

+ +

panel.focus() ⇒ boolean

+

Attempts to focus the panel. Override this in panels that support focus +(e.g. terminal). The default implementation returns false.

+

Kind: instance method of Panel
+Returns: boolean - true if the panel accepted focus, false otherwise

+ +

panel.setVisible(visible)

+

Sets the panel's visibility state

+

Kind: instance method of Panel

+
ParamTypeDescription
visiblebooleantrue to show, false to hide
+ +

panel.setTitle(newTitle)

+

Updates the display title shown in the tab bar for this panel.

+

Kind: instance method of Panel

+
ParamTypeDescription
newTitlestringThe new title to display.
+ +

panel.destroy()

+

Destroys the panel, removing it from the tab bar, internal maps, and the DOM. +After calling this, the Panel instance should not be reused.

+

Kind: instance method of Panel

+ +

panel.getPanelType() ⇒ string

+

gets the Panel's type

+

Kind: instance method of Panel

+ +

init($container, $tabBar, $tabsOverflow, $editorHolder, recomputeLayoutFn, defaultPanelId)

+

Initializes the PanelView module with references to the bottom panel container DOM elements. +Called by WorkspaceManager during htmlReady.

+

Kind: global function

+
ParamTypeDescription
$containerjQueryObjectThe bottom panel container element.
$tabBarjQueryObjectThe tab bar element inside the container.
$tabsOverflowjQueryObjectThe scrollable area holding tab elements.
$editorHolderjQueryObjectThe editor holder element (for maximize height calculation).
recomputeLayoutFnfunctionCallback to trigger workspace layout recomputation.
defaultPanelIdstringThe ID of the default/quick-access panel.
+ +

exitMaximizeOnResize()

+

Exit maximize state without resizing (for external callers like drag-resize). +Clears internal maximize state and resets the button icon.

+

Kind: global function

+ +

enterMaximizeOnResize()

+

Enter maximize state during a drag-resize that reaches the maximum +height. No pre-maximize height is stored because the user arrived +here via continuous dragging; a sensible default will be computed if +they later click the Restore button.

+

Kind: global function

+ +

restoreIfMaximized()

+

Restore the container's CSS height to the pre-maximize value and clear maximize state. +Must be called BEFORE Resizer.hide() so the Resizer reads the correct height. +If not maximized, this is a no-op. +When the saved height is near-max or unknown, a sensible default is used.

+

Kind: global function

+ +

isMaximized() ⇒ boolean

+

Returns true if the bottom panel is currently maximized.

+

Kind: global function

+ +

collapseContainer()

+

Collapse the bottom panel container (transient hide) without touching +which panel is logically active. Fires EVENT_PANEL_HIDDEN with the +default panel id as a "container collapsed" signal so toolbar icons +and menu items that mirror container visibility deselect. +No-op if the container is already hidden.

+

Kind: global function

+ +

restoreContainer()

+

Re-show the bottom panel container after a previous collapse, with the +previously active panel still mounted. Fires EVENT_PANEL_SHOWN for the +active panel id so toolbar icons / menu items that mirror visibility +re-select. No-op if the container is already visible or there's no +active panel to restore.

+

Kind: global function

+ +

getOpenBottomPanelIDs() ⇒ Array.<string>

+

Returns a copy of the currently open bottom panel IDs in tab order.

+

Kind: global function

+ +

hideAllOpenPanels() ⇒ Array.<string>

+

Hides every open bottom panel tab in a single batch

+

Kind: global function
+Returns: Array.<string> - The IDs of panels that were open (useful for restoring later).

+ +

getActiveBottomPanel() ⇒ Panel | null

+

Returns the currently active (visible) bottom panel, or null if none.

+

Kind: global function

+ +

showNextPanel() ⇒ boolean

+

Cycle to the next open bottom panel tab. If the container is hidden +or no panels are open, does nothing and returns false.

+

Kind: global function
+Returns: boolean - true if a panel switch occurred

+ + \ No newline at end of file diff --git a/api/API-Reference/view/PanelView/index.html b/api/API-Reference/view/PanelView/index.html new file mode 100644 index 00000000..8d12f69c --- /dev/null +++ b/api/API-Reference/view/PanelView/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/view/PluginPanelView.html b/api/API-Reference/view/PluginPanelView.html new file mode 100644 index 00000000..69631e0b --- /dev/null +++ b/api/API-Reference/view/PluginPanelView.html @@ -0,0 +1,122 @@ + + + + + +PluginPanelView | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

PluginPanelView

Import :

+
const PluginPanelView = brackets.getModule("view/PluginPanelView")
+ +

Panel

+

Kind: global class

+ + +

new Panel($panel, id, $toolbarIcon, [minWidth], [initialSize])

+

Represents a panel below the editor area (a child of ".content").

+
ParamTypeDescription
$paneljQueryObjectThe entire panel, including any chrome, already in the DOM.
idstringUnique id for this panel. Use package-style naming, e.g. "myextension.panelname". will overwrite an existing panel id if present.
$toolbarIconjQueryObjectAn icon that should be present in main-toolbar to associate this panel to. The panel will be shown only if the icon is visible on the toolbar and the user clicks on the icon.
[minWidth]numberMinimum width of panel in px.
[initialSize]numberOptional Initial size of panel in px. If not given, panel will use minsize or current size.
+ +

panel.$panel : jQueryObject

+

Dom node holding the rendered panel

+

Kind: instance property of Panel

+ +

panel.isVisible() ⇒ boolean

+

Determines if the panel is visible

+

Kind: instance method of Panel
+Returns: boolean - true if visible, false if not

+ +

panel.registerCanBeShownHandler(canShowHandlerFn) ⇒ boolean

+

Registers a call back function that will be called just before panel is shown. The handler should return true +if the panel can be shown, else return false and the panel will not be shown.

+

Kind: instance method of Panel
+Returns: boolean - true if visible, false if not

+
ParamTypeDescription
canShowHandlerFnfunction | nullfunction that should return true of false if the panel can be shown/not. or null to clear the handler.
+ +

panel.canBeShown() ⇒ boolean

+

Returns true if th panel can be shown, else false.

+

Kind: instance method of Panel

+ +

panel.registerOnCloseRequestedHandler(handler)

+

Registers an async handler that is called before the panel is closed via user interaction. +The handler should return true to allow the close, or false to prevent it.

+

Kind: instance method of Panel

+
ParamTypeDescription
handlerfunction | nullAn async function returning a boolean, or null to clear the handler.
+ +

panel.requestClose() ⇒ Promise.<boolean>

+

Requests the panel to hide, invoking the registered onCloseRequested handler first (if any). +If the handler returns false, the panel stays open. If it returns true or no handler is +registered, hide() is called.

+

Kind: instance method of Panel
+Returns: Promise.<boolean> - Resolves to true if the panel was hidden, false if prevented.

+ +

panel.show()

+

Shows the panel

+

Kind: instance method of Panel

+ +

panel.hide()

+

Hides the panel

+

Kind: instance method of Panel

+ +

panel.setVisible(visible)

+

Sets the panel's visibility state

+

Kind: instance method of Panel

+
ParamTypeDescription
visiblebooleantrue to show, false to hide
+ +

panel.getPanelType() ⇒ string

+

gets the Panel's type

+

Kind: instance method of Panel

+ +

EVENT_PANEL_HIDDEN : string

+

Event when panel is hidden

+

Kind: global constant

+ +

EVENT_PANEL_SHOWN : string

+

Event when panel is shown

+

Kind: global constant

+ +

PANEL_TYPE_PLUGIN_PANEL : string

+

type for plugin panel

+

Kind: global constant

+ + \ No newline at end of file diff --git a/api/API-Reference/view/PluginPanelView/index.html b/api/API-Reference/view/PluginPanelView/index.html new file mode 100644 index 00000000..7463cbd1 --- /dev/null +++ b/api/API-Reference/view/PluginPanelView/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/view/SidebarTabs.html b/api/API-Reference/view/SidebarTabs.html new file mode 100644 index 00000000..3fe16d03 --- /dev/null +++ b/api/API-Reference/view/SidebarTabs.html @@ -0,0 +1,134 @@ + + + + + +SidebarTabs | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

SidebarTabs

Import :

+
const SidebarTabs = brackets.getModule("view/SidebarTabs")
+ +

view/SidebarTabs

+

SidebarTabs manages multiple tab panes within the sidebar. It inserts a +#navTabBar element after #mainNavBar and provides an API for registering +tabs, associating DOM content with tabs, and switching between them.

+

Existing sidebar children that are not explicitly associated with a tab via +addToTab are treated as belonging to the default "Files" tab. This means +extensions that add DOM nodes to the sidebar will continue to work without +any code changes.

+

Tab switching works purely by toggling the .sidebar-tab-hidden CSS class +(display: none !important). No DOM reparenting or detaching occurs, so +cached jQuery/DOM references held by extensions remain valid.

+ + +

view/SidebarTabs.SIDEBAR_TAB_FILES : string

+

The built-in Files tab id.

+

Kind: inner constant of view/SidebarTabs

+ +

view/SidebarTabs.AI_TAB_GOOD_WIDTH : number

+

Preferred sidebar width (px) when a non-files tab (e.g. AI) is +first activated. Applied once if the current width is narrower.

+

Kind: inner constant of view/SidebarTabs

+ +

view/SidebarTabs.PREF_AI_WIDTH_SET_INITIAL

+

Preference key used to track whether the initial width bump has been applied.

+

Kind: inner constant of view/SidebarTabs

+ +

view/SidebarTabs.EVENT_TAB_ADDED : string

+

Fired when a new tab is registered via addTab.

+

Kind: inner constant of view/SidebarTabs

+ +

view/SidebarTabs.EVENT_TAB_REMOVED : string

+

Fired when a tab is removed via removeTab.

+

Kind: inner constant of view/SidebarTabs

+ +

view/SidebarTabs.EVENT_TAB_CHANGED : string

+

Fired when the active tab changes via setActiveTab.

+

Kind: inner constant of view/SidebarTabs

+ +

view/SidebarTabs.addTab(id, label, iconClass, [options])

+

Register a new sidebar tab.

+

Kind: inner method of view/SidebarTabs

+
ParamTypeDefaultDescription
idstringUnique tab identifier
labelstringDisplay text shown in the tab bar
iconClassstringFontAwesome (or other) icon class string
[options]Object
[options.priority]number100Lower values appear further left
+ +

view/SidebarTabs.addToTab(tabId, $content)

+

Associate a DOM node (or jQuery element) with a tab. If the node is not +already a child of #sidebar, it is appended. If the tab is not the +currently active tab, the node is immediately hidden.

+

Kind: inner method of view/SidebarTabs

+
ParamTypeDescription
tabIdstringThe tab to associate with
$contentjQuery | ElementDOM node or jQuery wrapper
+ +

view/SidebarTabs.removeFromTab(tabId, $content)

+

Remove a DOM node's association with a tab. If the node was appended by +addToTab (was not originally in the sidebar) and is no longer +associated with any tab, it is also removed from the DOM.

+

Kind: inner method of view/SidebarTabs

+
ParamTypeDescription
tabIdstringThe tab to disassociate from
$contentjQuery | ElementDOM node or jQuery wrapper
+ +

view/SidebarTabs.removeTab(id) ⇒ boolean

+

Remove a tab entirely. Only succeeds if all content has been removed via +removeFromTab first. Returns false if content still exists.

+

Kind: inner method of view/SidebarTabs
+Returns: boolean - true if removed, false if content still associated

+
ParamTypeDescription
idstringThe tab id to remove
+ +

view/SidebarTabs.setActiveTab(id)

+

Switch the active sidebar tab. Shows nodes associated with the target +tab, hides all others.

+

Kind: inner method of view/SidebarTabs

+
ParamTypeDescription
idstringThe tab id to activate
+ +

view/SidebarTabs.getActiveTab() ⇒ string

+

Get the currently active tab id.

+

Kind: inner method of view/SidebarTabs

+ +

view/SidebarTabs.TabDescriptor ⇒ Array.<TabDescriptor>

+

Get an array of all registered tab descriptors.

+

Kind: inner typedef of view/SidebarTabs
+Properties

+
NameTypeDescription
idstringUnique tab identifier
labelstringDisplay text shown in the tab bar
iconClassstringIcon class string
prioritynumberSort priority (lower = further left)
+ + \ No newline at end of file diff --git a/api/API-Reference/view/SidebarTabs/index.html b/api/API-Reference/view/SidebarTabs/index.html new file mode 100644 index 00000000..125cd3f4 --- /dev/null +++ b/api/API-Reference/view/SidebarTabs/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/view/ThemeManager.html b/api/API-Reference/view/ThemeManager.html new file mode 100644 index 00000000..b433b5a7 --- /dev/null +++ b/api/API-Reference/view/ThemeManager.html @@ -0,0 +1,81 @@ + + + + + +ThemeManager | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

ThemeManager

Import :

+
const ThemeManager = brackets.getModule("view/ThemeManager")
+ +

EVENT_THEME_CHANGE : string

+

Event when theme is changed

+

Kind: global constant

+ +

EVENT_THEME_LOADED : string

+

Event when theme is loaded

+

Kind: global constant

+ +

getCurrentTheme() ⇒ Theme

+

Get current theme object that is loaded in the editor.

+

Kind: global function
+Returns: Theme - the current theme instance

+ +

getAllThemes() ⇒ Array.<Theme>

+

Gets all available themes

+

Kind: global function
+Returns: Array.<Theme> - collection of all available themes

+ +

refresh(force)

+

Refresh current theme in the editor

+

Kind: global function

+
ParamTypeDescription
forcebooleanForces a reload of the current theme. It reloads the theme file.
+ +

loadFile(fileName, options) ⇒ $.Promise

+

Loads a theme from a file.

+

Kind: global function
+Returns: $.Promise - promise object resolved with the theme to be loaded from fileName

+
ParamTypeDescription
fileNamestringis the full path to the file to be opened
optionsObjectis an optional parameter to specify metadata for the theme.
+ +

loadPackage(themePackage) ⇒ $.Promise

+

Loads a theme from an extension package.

+

Kind: global function
+Returns: $.Promise - promise object resolved with the theme to be loaded from the pacakge

+
ParamTypeDescription
themePackageObjectis a package from the extension manager for the theme to be loaded.
+ +

isOSInDarkTheme()

+

Detects if the os settings is set to dark theme or not

+

Kind: global function

+ +

setCurrentTheme(themeID) ⇒ boolean

+

Sets the current theme for the given theme id if present.

+

Kind: global function
+Returns: boolean - true if the theme was applied, else false

+
ParamType
themeIDstring
+ + \ No newline at end of file diff --git a/api/API-Reference/view/ThemeManager/index.html b/api/API-Reference/view/ThemeManager/index.html new file mode 100644 index 00000000..97f74b9e --- /dev/null +++ b/api/API-Reference/view/ThemeManager/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/view/VideoPlayer.html b/api/API-Reference/view/VideoPlayer.html new file mode 100644 index 00000000..fe27c18b --- /dev/null +++ b/api/API-Reference/view/VideoPlayer.html @@ -0,0 +1,67 @@ + + + + + +VideoPlayer | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

VideoPlayer

Import :

+
const VideoPlayer = brackets.getModule("view/VideoPlayer")
+ +

Strings

+

Tiny shared HTML5 <video> widget. Two entry points:

+

createPlayer(options) — returns a configured <video> wrapper the +caller can drop anywhere in their UI.

+

renderFullScreenPlayer(srcElement, options) — opens a viewport- +covering overlay with a large auto-playing player that +expands out of srcElement (genie-style) and contracts back +on close. Useful when an inline thumbnail should expand into +a focused fullscreen view on click.

+

Kind: global constant

+ +

createPlayer(options) ⇒ jQuery

+

Build a <video> element wrapped in a div with sensible Phoenix +defaults. Returns the wrapper as a jQuery object; the caller appends +and disposes it.

+

Kind: global function
+Returns: jQuery - <div class="phx-video-player ..."><video.../></div>

+
ParamTypeDefaultDescription
optionsObject
options.srcstringVideo URL (required).
[options.poster]stringOptional poster image URL.
[options.controls]booleantrueShow native player controls.
[options.muted]booleantrueStart muted.
[options.autoplay]booleanfalseAutoplay on insert (browsers only honour this when also muted).
[options.loop]booleanfalse
[options.preload]string"&quot;metadata&quot;"One of "none", "metadata", "auto". Use "auto" when you want the bytes to fetch in the background after the poster paints.
[options.className]stringExtra class on the wrapper.
+ +

renderFullScreenPlayer(srcElement, options) ⇒ Object

+

Open a viewport-covering overlay with a large autoplaying video that +expands out of srcElement (Mac-dock-genie style) and contracts +back to it on close. Click on the dimmed backdrop, the close (×) +button, or pressing Escape closes the overlay.

+

Defaults: muted, autoplay, controls, preload="auto" (so the bytes +stream while the open animation runs and the user can hit play +straight away). Override via options.

+

Kind: global function
+Returns: Object - Handle exposing a programmatic close.

+
ParamTypeDescription
srcElementHTMLElement | jQueryElement the lightbox should expand from / contract back to. Used only for the source rect; not modified.
optionsObjectSee createPlayer's options; additionally honours all the same player flags. src required.
+ + \ No newline at end of file diff --git a/api/API-Reference/view/VideoPlayer/index.html b/api/API-Reference/view/VideoPlayer/index.html new file mode 100644 index 00000000..7ee810f6 --- /dev/null +++ b/api/API-Reference/view/VideoPlayer/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/view/ViewCommandHandlers.html b/api/API-Reference/view/ViewCommandHandlers.html new file mode 100644 index 00000000..4ea3a8aa --- /dev/null +++ b/api/API-Reference/view/ViewCommandHandlers.html @@ -0,0 +1,79 @@ + + + + + +ViewCommandHandlers | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

ViewCommandHandlers

Import :

+
const ViewCommandHandlers = brackets.getModule("view/ViewCommandHandlers")
+ +

Commands

+

The ViewCommandHandlers object dispatches the following event(s):

+
    +
  • fontSizeChange -- Triggered when the font size is changed via the +Increase Font Size, Decrease Font Size, or Restore Font Size commands. +The 2nd arg to the listener is the amount of the change. The 3rd arg +is a string containing the new font size after applying the change.
  • +
+

Kind: global variable

+ +

validFontSizeRegExpStr

+

Font sizes should be validated by this regexp

+

Kind: global variable

+ +

setFontSize(fontSize)

+

Font size setter to set the font size for the document editor

+

Kind: global function

+
ParamTypeDescription
fontSizestringThe font size with size unit as 'px' or 'em'
+ +

getFontSize() ⇒ string

+

Font size getter to get the current font size for the document editor

+

Kind: global function
+Returns: string - Font size with size unit as 'px' or 'em'

+ +

setFontFamily(fontFamily)

+

Font family setter to set the font family for the document editor

+

Kind: global function

+
ParamTypeDescription
fontFamilystringThe font family to be set. It can be a string with multiple comma separated fonts
+ +

getFontFamily() ⇒ string

+

Font family getter to get the currently configured font family for the document editor

+

Kind: global function
+Returns: string - The font family for the document editor

+ +

restoreFontSize()

+

Restores the font size using the saved style and migrates the old fontSizeAdjustment +view state to the new fontSize, when required

+

Kind: global function

+ +

restoreFonts()

+

Restores the font size and font family back to factory settings.

+

Kind: global function

+ + \ No newline at end of file diff --git a/api/API-Reference/view/ViewCommandHandlers/index.html b/api/API-Reference/view/ViewCommandHandlers/index.html new file mode 100644 index 00000000..16dfdefe --- /dev/null +++ b/api/API-Reference/view/ViewCommandHandlers/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/view/ViewStateManager.html b/api/API-Reference/view/ViewStateManager.html new file mode 100644 index 00000000..716155f5 --- /dev/null +++ b/api/API-Reference/view/ViewStateManager.html @@ -0,0 +1,75 @@ + + + + + +ViewStateManager | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

ViewStateManager

Import :

+
const ViewStateManager = brackets.getModule("view/ViewStateManager")
+ +

view/ViewStateManager

+

ViewStateManager is a singleton for views to park their global viwe state. The state is saved +with project data but the View or View Factory is responsible for restoring the view state +when the view is created.

+

Views should implement getViewState() so that the view state can be saved and that data is cached +for later use.

+

Views or View Factories are responsible for restoring the view state when the view of that file is created +by recalling the cached state. Views determine what data is store in the view state and how to restore it.

+ + +

view/ViewStateManager.reset()

+

resets the view state cache

+

Kind: inner method of view/ViewStateManager

+ +

view/ViewStateManager.updateViewState(view, viewState)

+

Updates the view state for the specified view

+

Kind: inner method of view/ViewStateManager

+
ParamTypeDescription
viewObjectthe to save state
viewState*any data that the view needs to restore the view state.
+ +

view/ViewStateManager.getViewState(file) ⇒ *

+

gets the view state for the specified file

+

Kind: inner method of view/ViewStateManager
+Returns: * - whatever data that was saved earlier with a call setViewState

+
ParamTypeDescription
fileFilethe file to record the view state for
+ +

view/ViewStateManager.addViewStates(viewStates)

+

adds an array of view states

+

Kind: inner method of view/ViewStateManager

+
ParamTypeDescription
viewStatesobject.<string, *>View State object to append to the current set of view states
+ + \ No newline at end of file diff --git a/api/API-Reference/view/ViewStateManager/index.html b/api/API-Reference/view/ViewStateManager/index.html new file mode 100644 index 00000000..f855a807 --- /dev/null +++ b/api/API-Reference/view/ViewStateManager/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/view/WorkspaceManager.html b/api/API-Reference/view/WorkspaceManager.html new file mode 100644 index 00000000..c5a9189a --- /dev/null +++ b/api/API-Reference/view/WorkspaceManager.html @@ -0,0 +1,194 @@ + + + + + +WorkspaceManager | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

WorkspaceManager

Import :

+
const WorkspaceManager = brackets.getModule("view/WorkspaceManager")
+ +

view/WorkspaceManager

+

Manages layout of panels surrounding the editor area, and size of the editor area (but not its contents).

+

Updates panel sizes when the window is resized. Maintains the max resizing limits for panels, based on +currently available window size.

+

Events: +workspaceUpdateLayout When workspace size changes for any reason (including panel show/hide panel resize, or the window resize). +The 2nd arg is the available workspace height. +The 3rd arg is a refreshHint flag for internal use (passed in to recomputeLayout)

+ + +

view/WorkspaceManager.PANEL_TYPE_BOTTOM_PANEL : string

+

Constant representing the type of bottom panel

+

Kind: static property of view/WorkspaceManager

+ +

view/WorkspaceManager.PANEL_TYPE_PLUGIN_PANEL : string

+

Constant representing the type of plugin panel

+

Kind: static property of view/WorkspaceManager

+ +

view/WorkspaceManager.$bottomPanelContainer : jQueryObject

+

The single container wrapping all bottom panels

+

Kind: inner property of view/WorkspaceManager

+ +

view/WorkspaceManager.$statusBarPanelToggle : jQueryObject

+

Chevron toggle in the status bar

+

Kind: inner property of view/WorkspaceManager

+ +

view/WorkspaceManager._statusBarToggleInProgress : boolean

+

True while the status bar toggle button is handling a click

+

Kind: inner property of view/WorkspaceManager

+ +

view/WorkspaceManager.EVENT_WORKSPACE_UPDATE_LAYOUT

+

Event triggered when the workspace layout updates.

+

Kind: inner constant of view/WorkspaceManager

+ +

view/WorkspaceManager.EVENT_WORKSPACE_PANEL_SHOWN

+

Event triggered when a panel is shown.

+

Kind: inner constant of view/WorkspaceManager

+ +

view/WorkspaceManager.EVENT_WORKSPACE_PANEL_HIDDEN

+

Event triggered when a panel is hidden.

+

Kind: inner constant of view/WorkspaceManager

+ +

view/WorkspaceManager.EVENT_WORKSPACE_DESIGN_MODE_CHANGE

+

Event triggered when design mode (editor collapsed, full live preview) is +entered or exited. Payload: (active: boolean).

+

Kind: inner constant of view/WorkspaceManager

+ +

view/WorkspaceManager.createBottomPanel(id, $panel, [minSize], [title], [options]) ⇒ Panel

+

Creates a new resizable panel beneath the editor area and above the status bar footer. Panel is initially invisible. +The panel's size & visibility are automatically saved & restored as a view-state preference.

+

Kind: inner method of view/WorkspaceManager

+
ParamTypeDescription
idstringUnique id for this panel. Use package-style naming, e.g. "myextension.feature.panelname"
$paneljQueryObjectDOM content to use as the panel. Need not be in the document yet. Must have an id attribute, for use as a preferences key.
[minSize]number@deprecated No longer used. Pass undefined.
[title]stringDisplay title shown in the bottom panel tab bar.
[options]ObjectOptional settings: - iconSvg (string): Path to an SVG icon for the panel tab (e.g. "styles/images/icon.svg"). If omitted, a generic default icon is used.
+ +

view/WorkspaceManager.destroyBottomPanel(id)

+

Destroys a bottom panel, removing it from internal registries, the tab bar, and the DOM. +After calling this, the panel ID is no longer valid and the Panel instance should not be reused.

+

Kind: inner method of view/WorkspaceManager

+
ParamTypeDescription
idstringThe panel ID that was passed to createBottomPanel.
+ +

view/WorkspaceManager.createPluginPanel(id, $panel, [minSize], $toolbarIcon, [initialSize]) ⇒ Panel

+

Creates a new resizable plugin panel associated with the given toolbar icon. Panel is initially invisible. +The panel's size & visibility are automatically saved & restored. Only one panel can be associated with a +toolbar icon.

+

Kind: inner method of view/WorkspaceManager

+
ParamTypeDescription
idstringUnique id for this panel. Use package-style naming, e.g. "myextension.panelname". will overwrite an existing panel id if present.
$paneljQueryObjectDOM content to use as the panel. Need not be in the document yet. Must have an id attribute, for use as a preferences key.
[minSize]numberMinimum height of panel in px.
$toolbarIconjQueryObjectAn icon that should be present in main-toolbar to associate this panel to. The panel will be shown only if the icon is visible on the toolbar and the user clicks on the icon.
[initialSize]numberOptional Initial size of panel in px. If not given, panel will use minsize or current size.
+ +

view/WorkspaceManager.getAllPanelIDs() ⇒ Array

+

Returns an array of all panel ID's

+

Kind: inner method of view/WorkspaceManager
+Returns: Array - List of ID's of all bottom panels

+ +

view/WorkspaceManager.getPanelForID(panelID) ⇒ Object

+

Gets the Panel interface for the given ID. Can return undefined if no panel with the ID is found.

+

Kind: inner method of view/WorkspaceManager
+Returns: Object - Panel object for the ID or undefined

+
ParamType
panelIDstring
+ +

view/WorkspaceManager.recomputeLayout(refreshHint)

+

Called when an external widget has appeared and needs some of the space occupied +by the mainview manager

+

Kind: inner method of view/WorkspaceManager

+
ParamTypeDescription
refreshHintbooleantrue to refresh the editor, false if not
+ +

view/WorkspaceManager.isPanelVisible(panelID) ⇒ boolean

+

Responsible to check if the panel is visible or not. +Returns true if visible else false.

+

Kind: inner method of view/WorkspaceManager

+
Param
panelID
+ +

view/WorkspaceManager.setPluginPanelWidth(width)

+

Programmatically sets the plugin panel content width to the given value in pixels. +The total toolbar width is adjusted to account for the plugin icons bar. +If the requested width doesn't fit, the sidebar is progressively shrunk +(and collapsed if necessary) before clamping. +No-op if no panel is currently visible.

+

Kind: inner method of view/WorkspaceManager

+
ParamTypeDescription
widthnumberDesired content width in pixels
+ +

view/WorkspaceManager.isInDesignMode() ⇒ boolean

+

Returns true while the workspace is in design mode (editor collapsed and +live preview expanded to fill the editor area).

+

Kind: inner method of view/WorkspaceManager

+ +

view/WorkspaceManager.setDesignMode(active)

+

Sets the design-mode flag and fires EVENT_WORKSPACE_DESIGN_MODE_CHANGE when +the value actually changes. Intended to be called by the control bar; other +callers should use the dedicated toggle command instead.

+

Kind: inner method of view/WorkspaceManager

+
ParamType
activeboolean
+ +

view/WorkspaceManager.addEscapeKeyEventHandler(consumerName, eventHandler) ⇒ boolean

+

If any widgets related to the editor needs to handle the escape key event, add it here. returning true from the +registered handler will prevent primary escape key toggle panel behavior of phoenix. Note that returning true +will no stop the event bubbling, that has to be controlled with the event parameter forwarded to the handler.

+

Kind: inner method of view/WorkspaceManager
+Returns: boolean - true if added

+
ParamTypeDescription
consumerNamestringa unique name for your consumer
eventHandlerfunctionIf the eventHandler returns true for this callback, the escape key event will not lead to panel toggle default behavior.
+ +

view/WorkspaceManager.removeEscapeKeyEventHandler(consumerName) ⇒ boolean

+

Removing the escape key event consumer.

+

Kind: inner method of view/WorkspaceManager
+Returns: boolean - true if removed

+
ParamTypeDescription
consumerNamestringused to register the consumer.
+ + \ No newline at end of file diff --git a/api/API-Reference/view/WorkspaceManager/index.html b/api/API-Reference/view/WorkspaceManager/index.html new file mode 100644 index 00000000..2783fbca --- /dev/null +++ b/api/API-Reference/view/WorkspaceManager/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/widgets/DefaultDialogs.html b/api/API-Reference/widgets/DefaultDialogs.html new file mode 100644 index 00000000..34e270e1 --- /dev/null +++ b/api/API-Reference/widgets/DefaultDialogs.html @@ -0,0 +1,76 @@ + + + + + +DefaultDialogs | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

DefaultDialogs

Import :

+
const DefaultDialogs = brackets.getModule("widgets/DefaultDialogs")
+ +

DefaultDialogs

+

Constants representing dialog IDs +These IDs are used to identify different types of dialogs

+ + +

DefaultDialogs.DIALOG_ID_ERROR : string

+

ID for error dialog

+

Kind: static constant of DefaultDialogs

+ +

DefaultDialogs.DIALOG_ID_INFO : string

+

ID for information dialog (currently uses the same template as DIALOG_ID_ERROR)

+

Kind: static constant of DefaultDialogs

+ +

DefaultDialogs.DIALOG_ID_SAVE_CLOSE : string

+

ID for save and close dialog

+

Kind: static constant of DefaultDialogs

+ +

DefaultDialogs.DIALOG_ID_EXT_CHANGED : string

+

ID for external change detected dialog

+

Kind: static constant of DefaultDialogs

+ +

DefaultDialogs.DIALOG_ID_EXT_DELETED : string

+

ID for external deletion detected dialog

+

Kind: static constant of DefaultDialogs

+ +

DefaultDialogs.DIALOG_ID_CHANGE_EXTENSIONS : string

+

ID for change extensions dialog

+

Kind: static constant of DefaultDialogs

+ + \ No newline at end of file diff --git a/api/API-Reference/widgets/DefaultDialogs/index.html b/api/API-Reference/widgets/DefaultDialogs/index.html new file mode 100644 index 00000000..f387af3e --- /dev/null +++ b/api/API-Reference/widgets/DefaultDialogs/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/widgets/Dialogs.html b/api/API-Reference/widgets/Dialogs.html new file mode 100644 index 00000000..b58585b6 --- /dev/null +++ b/api/API-Reference/widgets/Dialogs.html @@ -0,0 +1,113 @@ + + + + + +Dialogs | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

Dialogs

Import :

+
const Dialogs = brackets.getModule("widgets/Dialogs")
+ +

DIALOG_BTN_CANCEL : string

+

CANCEL dialog button ID

+

Kind: global constant

+ +

DIALOG_BTN_OK : string

+

OK dialog button ID

+

Kind: global constant

+ +

DIALOG_BTN_DONTSAVE : string

+

DONT SAVE dialog button ID

+

Kind: global constant

+ +

DIALOG_BTN_SAVE_AS : string

+

SAVE AS dialog button ID

+

Kind: global constant

+ +

DIALOG_CANCELED : string

+

CANCELED dialog button ID

+

Kind: global constant

+ +

DIALOG_BTN_DOWNLOAD : string

+

DOWNLOAD dialog button ID

+

Kind: global constant

+ +

DIALOG_BTN_CLASS_PRIMARY : string

+

Primary button class name

+

Kind: global constant

+ +

DIALOG_BTN_CLASS_NORMAL : string

+

Normal button class name

+

Kind: global constant

+ +

DIALOG_BTN_CLASS_LEFT : string

+

Left-aligned button class name

+

Kind: global constant

+ +

showModalDialogUsingTemplate(template, [autoDismiss], [closeToElement]) ⇒ Dialog

+

Creates a new modal dialog from a given template. +The template can either be a string or a jQuery object representing a DOM node that is not in the current DOM.

+

Kind: global function

+
ParamTypeDescription
templatestringA string template or jQuery object to use as the dialog HTML.
[autoDismiss]booleanWhether to automatically dismiss the dialog when one of the buttons is clicked. Default true. If false, you'll need to manually handle button clicks and the Esc key, and dismiss the dialog yourself when ready by calling close() on the returned dialog.
[closeToElement]stringA CSS selector for a target element. If specified, the dialog will animate open from and close toward the target element (a "woosh" effect). If the target is not found or not visible, the dialog opens/closes normally.
+ +

showModalDialog(dlgClass, [title], [message], buttons, [autoDismiss]) ⇒ Dialog

+

Creates a new general purpose modal dialog using the default template and the template variables given +as parameters as described.

+

Kind: global function

+
ParamTypeDescription
dlgClassstringA class name identifier for the dialog. Typically one of DefaultDialogs.*
[title]stringThe title of the dialog. Can contain HTML markup. Defaults to "".
[message]stringThe message to display in the dialog. Can contain HTML markup. Defaults to "".
buttonsArray.<Object>An array of buttons where each button has a class, id tooltip, and text property. The id is used in "data-button-id". Defaults to a single Ok button. Typically className is one of DIALOG_BTN_CLASS_, id is one of DIALOG_BTN_
[autoDismiss]booleanWhether to automatically dismiss the dialog when one of the buttons is clicked. Default true. If false, you'll need to manually handle button clicks and the Esc key, and dismiss the dialog yourself when ready by calling close() on the returned dialog.
+ +

showConfirmDialog(title, message, [autoDismiss]) ⇒ Dialog

+

Display a confirmation dialog with OK and CANCEL button

+

Kind: global function
+Returns: Dialog - the created dialog instance

+
ParamTypeDescription
titlestringdialog title
messagestringmessage to display in the dialog
[autoDismiss]booleanwhether to automatically dismiss the dialog or not
+ +

showInfoDialog(title, message, [autoDismiss]) ⇒ Dialog

+

Display information dialog

+

Kind: global function
+Returns: Dialog - the created dialog instance

+
ParamTypeDescription
titlestringdialog title
messagestringmessage to display in the dialog
[autoDismiss]booleanwhether to automatically dismiss the dialog or not
+ +

showErrorDialog(title, message, [autoDismiss]) ⇒ Dialog

+

Display error dialog

+

Kind: global function
+Returns: Dialog - the created dialog instance

+
ParamTypeDescription
titlestringdialog title
messagestringmessage to display in the dialog
[autoDismiss]booleanwhether to automatically dismiss the dialog or not
+ +

cancelModalDialogIfOpen(dlgClass, [buttonId])

+

Immediately closes any dialog instances with the given class. The dialog callback for each instance will +be called with the special buttonId DIALOG_CANCELED (note: callback is run asynchronously).

+

Kind: global function

+
ParamTypeDescription
dlgClassstringThe class name identifier for the dialog.
[buttonId]stringThe button id to use when closing the dialog. Defaults to DIALOG_CANCELED
+ +

addLinkTooltips(elementOrDialog)

+

Ensures that all anchor tags with a URL have a tooltip showing the same URL

+

Kind: global function

+
ParamTypeDescription
elementOrDialogjQueryObject | DialogDialog intance, or root of other DOM tree to add tooltips to
+ + \ No newline at end of file diff --git a/api/API-Reference/widgets/Dialogs/index.html b/api/API-Reference/widgets/Dialogs/index.html new file mode 100644 index 00000000..42d1e15e --- /dev/null +++ b/api/API-Reference/widgets/Dialogs/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/widgets/DropdownButton.html b/api/API-Reference/widgets/DropdownButton.html new file mode 100644 index 00000000..e96d85be --- /dev/null +++ b/api/API-Reference/widgets/DropdownButton.html @@ -0,0 +1,147 @@ + + + + + +DropdownButton | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

DropdownButton

Import :

+
const DropdownButton = brackets.getModule("widgets/DropdownButton")
+ +

EVENT_SELECTED : string

+

Event triggered when an item is selected.

+

Kind: global constant

+ +

EVENT_LIST_RENDERED : string

+

Event triggered when the list is rendered.

+

Kind: global constant

+ +

EVENT_DROPDOWN_SHOWN : string

+

Event triggered when the dropdown is shown.

+

Kind: global constant

+ +

EVENT_DROPDOWN_CLOSED : string

+

Event triggered when the dropdown is closed.

+

Kind: global constant

+ + +

Creates a single dropdown-button instance. The DOM node is created but not attached to +the document anywhere - clients should append this.$button to the appropriate location.

+

DropdownButton dispatches the following events:

+
    +
  • "select" - triggered when an option in the dropdown is clicked. Passed item object and index.
  • +
+

Kind: global function

+
ParamTypeDefaultDescription
labelstringThe label to display on the button.
itemsArray.<*>Items in the dropdown list. Items can have any type/value. An item with the value "---" will be treated as a divider, which is not clickable, and itemRenderer() will not be called for it.
[itemRenderer]functionOptional function to convert a single item to HTML. If not provided, items are assumed to be plain text strings. The function receives the item and its index.
[options]ObjectAdditional options for the dropdown.
[options.enableFilter]booleanfalseSet to true to enable filtering by typing.
[options.cssClasses]stringA space-separated list of CSS classes to apply to the button.
[options.customFilter]functionOptional. When enableFilter is enabled, this function is used as a custom filtering callback. It receives the user's search text, the text of the element being filtered, and the element's index. Return true to display the list item, or false to hide it.
+ + + +

Items in dropdown list - may be changed any time dropdown isn't open

+

Kind: instance property of DropdownButton

+ + +

This is filter text corresponding to each items. it will be used to filter the items based on +the keyboard key presses the user does to enter search filter in popup.

+

Kind: instance property of DropdownButton

+ + +

The clickable button. Available as soon as the DropdownButton is constructed.

+

Kind: instance property of DropdownButton

+ + +

The dropdown element. Only non-null while open.

+

Kind: instance property of DropdownButton

+ + +

Extra CSS class(es) to apply to $dropdown

+

Kind: instance property of DropdownButton

+ + +

Update the button label.

+

Kind: instance method of DropdownButton

+
ParamType
labelstring
+ + +

returns true if the dropdown is open

+

Kind: instance method of DropdownButton

+ + +

Called for each item when rendering the dropdown.

+

Kind: instance method of DropdownButton
+Returns: string | Object - Formatted & escaped HTML, either as a simple string +or as the 'html' field in an object that also conveys enabled state. Disabled items inherit gray +text color and cannot be selected.

+
ParamTypeDescription
item*from items array
indexnumberin items array
+ + +

Refresh the dropdown list by removing and re-creating all list items. +Call this after deleting/adding any item in the dropdown list.

+

Kind: instance method of DropdownButton

+ + +

Check/Uncheck the list item of the given index.

+

Kind: instance method of DropdownButton

+
ParamTypeDescription
indexnumberThe index of the list item to be checked or unchecked
checkedbooleanTrue if the list item is to be checked, false to get check mark removed.
+ + +

Pops open the dropdown if currently closed. Does nothing if items.length == 0

+

Kind: instance method of DropdownButton

+ + +

hides all elements in popup that doesn't match the given search string, also shows the search bar in popup

+

Kind: instance method of DropdownButton

+
Param
searchString
+ + +

Closes the dropdown if currently open

+

Kind: instance method of DropdownButton

+ + +

Opens the dropdown if closed; closes it if open

+

Kind: instance method of DropdownButton

+ + \ No newline at end of file diff --git a/api/API-Reference/widgets/DropdownButton/index.html b/api/API-Reference/widgets/DropdownButton/index.html new file mode 100644 index 00000000..21e80123 --- /dev/null +++ b/api/API-Reference/widgets/DropdownButton/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/widgets/ModalBar.html b/api/API-Reference/widgets/ModalBar.html new file mode 100644 index 00000000..c66d74c7 --- /dev/null +++ b/api/API-Reference/widgets/ModalBar.html @@ -0,0 +1,99 @@ + + + + + +ModalBar | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

ModalBar

Import :

+
const ModalBar = brackets.getModule("widgets/ModalBar")
+ +

ModalBar

+

Kind: global class

+ + +

new ModalBar(template, autoClose, animate)

+

Creates a modal bar whose contents are the given template.

+

Dispatches one event:

+
    +
  • close - When the bar is closed, either via close() or via autoClose. After this event, the +bar may remain visible and in the DOM while its closing animation is playing. However, +by the time "close" is fired, the bar has been "popped out" of the layout and the +editor scroll position has already been restored. +Second argument is the reason for closing (one of ModalBar.CLOSE_*). +Third argument is the Promise that close() will be returning.
  • +
+
ParamTypeDescription
templatestringThe HTML contents of the modal bar.
autoClosebooleanIf true, then close the dialog if the user hits Esc or if the bar loses focus.
animatebooleanIf true (the default), animate the dialog closed, otherwise close it immediately.
+ +

modalBar.isLockedOpen : function

+

Allows client code to block autoClose from closing the ModalBar: if set, this function is called whenever +autoClose would normally close the ModalBar. Returning true prevents the close from occurring. Programmatically +calling close() will still close the bar, however.

+

Kind: instance property of ModalBar

+ +

modalBar.height() ⇒ number

+

Kind: instance method of ModalBar
+Returns: number - Height of the modal bar in pixels, if open.

+ +

modalBar.prepareClose([restoreScrollPos])

+

Prepares the ModalBar for closing by popping it out of the main flow and resizing/ +rescrolling the Editor to maintain its current apparent code position. Useful if +you want to do that as a separate operation from actually animating the ModalBar +closed and removing it (for example, if you need to switch full editors in between). +If you don't call this explicitly, it will get called at the beginning of close().

+

Kind: instance method of ModalBar

+
ParamTypeDescription
[restoreScrollPos]booleanIf true (the default), adjust the scroll position of the editor to account for the ModalBar disappearing. If not set, the caller should do it immediately on return of this function (before the animation completes), because the editor will already have been resized.
+ +

modalBar.close([restoreScrollPos], [animate], [_reason]) ⇒ $.Promise

+

Closes the modal bar and returns focus to the active editor. Returns a promise that is +resolved when the bar is fully closed and the container is removed from the DOM.

+

Kind: instance method of ModalBar
+Returns: $.Promise - promise resolved when close is finished

+
ParamTypeDescription
[restoreScrollPos]booleanIf true (the default), adjust the scroll position of the editor to account for the ModalBar disappearing. If not set, the caller should do it immediately on return of this function (before the animation completes), because the editor will already have been resized. Note that this is ignored if prepareClose() was already called (you need to pass the parameter to that function if you call it first).
[animate]booleanIf true (the default), animate the closing of the ModalBar, otherwise close it immediately.
[_reason]stringFor internal use only.
+ +

modalBar.getRoot() ⇒ jQueryObject

+

Kind: instance method of ModalBar
+Returns: jQueryObject - A jQuery object representing the root of the ModalBar.

+ +

MainViewManager

+

A "modal bar" component. This is a lightweight replacement for modal dialogs that +appears at the top of the editor area for operations like Find and Quick Open.

+

Kind: global variable

+ + \ No newline at end of file diff --git a/api/API-Reference/widgets/ModalBar/index.html b/api/API-Reference/widgets/ModalBar/index.html new file mode 100644 index 00000000..9639eaf6 --- /dev/null +++ b/api/API-Reference/widgets/ModalBar/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/widgets/NotificationUI.html b/api/API-Reference/widgets/NotificationUI.html new file mode 100644 index 00000000..adb4a1eb --- /dev/null +++ b/api/API-Reference/widgets/NotificationUI.html @@ -0,0 +1,116 @@ + + + + + +NotificationUI | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

NotificationUI

Import :

+
const NotificationUI = brackets.getModule("widgets/NotificationUI")
+ +

widgets/NotificationUI

+

The global NotificationUI can be used to create popup notifications over dom elements or generics app notifications.

+

A global window.EventManager object is made available in phoenix that can be called anytime after AppStart. +This global can be triggered from anywhere without using require context.

+

Usage

+

Simple example

+

For Eg. Let's say we have to create a popup notification over the HTML element with ID showInfileTree. +We can do this with the following

+

Example

+
const NotificationUI = brackets.getModule("widgets/NotificationUI");
// or use window.NotificationUI global object has the same effect.
let notification = NotificationUI.createFromTemplate("Click me to locate the file in file tree", "showInfileTree",{});
notification.done(()=>{
console.log("notification is closed in ui.");
})
+

Advanced example

+

Another advanced example where you can specify html and interactive components in the notification +Example

+
// note that you can even provide an HTML Element node with
// custom event handlers directly here instead of HTML text.
let notification1 = NotificationUI.createFromTemplate(
"<div>Click me to locate the file in file tree</div>", "showInfileTree",{
allowedPlacements: ['top', 'bottom'],
dismissOnClick: false,
autoCloseTimeS: 300 // auto close the popup after 5 minutes
});
// do stuff
notification1.done((closeReason)=>{
console.log("notification is closed in ui reason:", closeReason);
})
+

The createFromTemplate API can be configured with numerous options. See API options below.

+ + +

widgets/NotificationUI.API

+

This section outlines the properties and methods available in this module

+

Kind: inner property of widgets/NotificationUI

+ +

widgets/NotificationUI.NOTIFICATION_STYLES_CSS_CLASS : enum

+

CSS class names for notification styles.

+

Kind: inner enum of widgets/NotificationUI
+Properties

+
NameTypeDefault
INFOstring"style-info"
WARNINGstring"style-warning"
SUCCESSstring"style-success"
ERRORstring"style-error"
DANGERstring"style-danger"
SUBTLEstring"style-subtle"
+ +

widgets/NotificationUI.CLOSE_REASON : enum

+

Closing notification reason.

+

Kind: inner enum of widgets/NotificationUI
+Properties

+
NameTypeDefault
TIMEOUTstring"closeTimeout"
CLICK_DISMISSstring"clickDismiss"
CLOSE_BTN_CLICKstring"closeBtnClick"
+ +

widgets/NotificationUI.createFromTemplate(title, template, [elementID], [options]) ⇒ Notification

+

Creates a new notification popup from given template. +The template can either be a string or a jQuery object representing a DOM node that is not in the current DOM.

+

Creating a notification popup

+
// note that you can even provide an HTML Element node with
// custom event handlers directly here instead of HTML text.
let notification1 = NotificationUI.createFromTemplate(
"<div>Click me to locate the file in file tree</div>", "showInfileTree",{
allowedPlacements: ['top', 'bottom'],
dismissOnClick: false,
autoCloseTimeS: 300 // auto close the popup after 5 minutes
});
+

Kind: inner method of widgets/NotificationUI
+Returns: Notification - Object with a done handler that resolves when the notification closes.

+
ParamTypeDescription
titlestringThe title for the notification.
templatestring | ElementA string template or HTML Element to use as the dialog HTML.
[elementID]Stringoptional id string if provided will show the notification pointing to the element. If no element is specified, it will be managed as a generic notification.
[options]Objectoptional, supported * options are: * allowedPlacements - Optional String array with values restricting where the notification will be shown. Values can be a mix of ['top', 'bottom', 'left', 'right'] * autoCloseTimeS - Time in seconds after which the notification should be auto closed. Default is never. * dismissOnClick - when clicked, the notification is closed. Default is true(dismiss). * toastStyle - To style the toast notification for error, warning, info etc. Can be one of NotificationUI.NOTIFICATION_STYLES_CSS_CLASS.* or your own css class name.
+ +

widgets/NotificationUI.createToastFromTemplate(title, template, [options]) ⇒ Notification

+

Creates a new toast notification popup from given title and html message. +The message can either be a string or a jQuery object representing a DOM node that is not in the current DOM.

+

Creating a toast notification popup

+
// note that you can even provide an HTML Element node with
// custom event handlers directly here instead of HTML text.
let notification1 = NotificationUI.createToastFromTemplate( "Title here",
"<div>Click me to locate the file in file tree</div>", {
dismissOnClick: false,
autoCloseTimeS: 300 // auto close the popup after 5 minutes
});
+

Kind: inner method of widgets/NotificationUI
+Returns: Notification - Object with a done handler that resolves when the notification closes.

+
ParamTypeDescription
titlestringThe title for the notification.
templatestring | ElementA string template or HTML Element to use as the dialog HTML.
[options]Objectoptional, supported * options are: * autoCloseTimeS - Time in seconds after which the notification should be auto closed. Default is never. * dismissOnClick - when clicked, the notification is closed. Default is true(dismiss). * toastStyle - To style the toast notification for error, warning, info etc. Can be one of NotificationUI.NOTIFICATION_STYLES_CSS_CLASS.* or your own css class name. * instantOpen - To instantly open the popup without any open animation delays
+ +

widgets/NotificationUI.showToastOn(containerOrSelector, template, [options]) ⇒ Notification

+

Shows a small, transient inline toast notification inside a given DOM container. +The toast is centered at the bottom of the container and auto-dismisses.

+
NotificationUI.showToastOn(document.getElementById("my-panel"), "Hello!", {
autoCloseTimeS: 5,
dismissOnClick: true
});
+

Kind: inner method of widgets/NotificationUI
+Returns: Notification - Object with a done handler that resolves when the toast closes.

+
ParamTypeDescription
containerOrSelectorElement | stringA DOM element or CSS selector for the parent container. The container should have position: relative or absolute so the toast is positioned correctly.
templatestring | ElementHTML string or DOM Element for the toast content.
[options]Objectoptional, supported options: * autoCloseTimeS - Time in seconds after which the toast auto-closes. Default is 5. * dismissOnClick - If true, clicking the toast dismisses it. Default is true.
+ +

widgets/NotificationUI.showHUD(iconClass, label, [options]) ⇒ Notification

+

Shows a large, centered HUD overlay (like macOS volume/brightness indicator) with an icon and label. +The HUD fades in/out and auto-dismisses. Only one HUD is shown at a time — calling this while a +previous HUD is visible replaces it instantly.

+
NotificationUI.showHUD("fa-solid fa-magnifying-glass-plus", "110%");
+

Kind: inner method of widgets/NotificationUI
+Returns: Notification - Object with a done handler that resolves when the HUD closes.

+
ParamTypeDescription
iconClassstringFont Awesome class string for the icon (e.g. "fa-solid fa-magnifying-glass-plus").
labelstringText to display below the icon (e.g. "110%").
[options]Objectoptional, supported options: * autoCloseTimeS - Time in seconds after which the HUD auto-closes. Default is 1.
+ + \ No newline at end of file diff --git a/api/API-Reference/widgets/NotificationUI/index.html b/api/API-Reference/widgets/NotificationUI/index.html new file mode 100644 index 00000000..0640cf98 --- /dev/null +++ b/api/API-Reference/widgets/NotificationUI/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/widgets/PopUpManager.html b/api/API-Reference/widgets/PopUpManager.html new file mode 100644 index 00000000..f2ca58a0 --- /dev/null +++ b/api/API-Reference/widgets/PopUpManager.html @@ -0,0 +1,68 @@ + + + + + +PopUpManager | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

PopUpManager

Import :

+
const PopUpManager = brackets.getModule("widgets/PopUpManager")
+ +

AppInit

+

Utilities for managing pop-ups.

+

Kind: global variable

+ +

addPopUp($popUp, removeHandler, autoRemove, options)

+

Add Esc key handling for a popup DOM element.

+

Kind: global function

+
ParamTypeDescription
$popUpjQueryjQuery object for the DOM element pop-up
removeHandlerfunctionPop-up specific remove (e.g. display:none or DOM removal)
autoRemoveBooleanSpecify true to indicate the PopUpManager should remove the popup from the _popUps array when the popup is closed. Specify false when the popup is always persistant in the _popUps array.
optionsobject
[options.popupManagesFocus]booleanset to true if the popup manages focus restore on close
[options.closeCurrentPopups]booleanset to true if you want to dismiss all exiting popups before adding this. Useful when this should be the only popup visible.
+ +

removePopUp($popUp)

+

Remove Esc key handling for a pop-up. Removes the pop-up from the DOM +if the pop-up is currently visible and was not originally attached.

+

Kind: global function

+
ParamType
$popUpjQuery
+ +

_filterDropdown($popup, searchString)

+

hides all elements in popup that doesn't match the given search string, also shows the search bar in popup

+

Kind: global function

+
Param
$popup
searchString
+ +

selectNextItem(direction, $popUp)

+

Selects the next or previous item in the popup.

+

Kind: global function

+
ParamTypeDescription
directionnumber+1 for next, -1 for prev
$popUp
+ +

listenToContextMenu(contextMenu)

+

Context menus are also created in AppInit.htmlReady(), so they may not +yet have been created when we get our AppInit.htmlReady() callback, so +we provide this method to tell us when to start listening for their events

+

Kind: global function

+
ParamType
contextMenuContextMenu
+ + \ No newline at end of file diff --git a/api/API-Reference/widgets/PopUpManager/index.html b/api/API-Reference/widgets/PopUpManager/index.html new file mode 100644 index 00000000..57243e7a --- /dev/null +++ b/api/API-Reference/widgets/PopUpManager/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/widgets/StatusBar.html b/api/API-Reference/widgets/StatusBar.html new file mode 100644 index 00000000..f5b1e8a4 --- /dev/null +++ b/api/API-Reference/widgets/StatusBar.html @@ -0,0 +1,94 @@ + + + + + +StatusBar | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

StatusBar

Import :

+
const StatusBar = brackets.getModule("widgets/StatusBar")
+ +

AppInit

+

A status bar with support for file information and busy and status indicators. This is a semi-generic +container; for the code that decides what content appears in the status bar, see client modules like +EditorStatusBar. (Although in practice StatusBar's HTML structure and initialization +assume it's only used for this one purpose, and all the APIs are on a singleton).

+

Kind: global variable

+ +

showBusyIndicator(updateCursor)

+

Shows the 'busy' indicator

+

Kind: global function

+
ParamTypeDescription
updateCursorbooleanSets the cursor to "wait"
+ +

hideBusyIndicator()

+

Hides the 'busy' indicator

+

Kind: global function

+ +

addIndicator(id, [indicator], [visible], [style], [tooltip], [insertBefore])

+

Registers a new status indicator

+

Kind: global function

+
ParamTypeDescription
idstringRegistration id of the indicator to be updated.
[indicator]DOMNode | jQueryObjectOptional DOMNode for the indicator
[visible]booleanShows or hides the indicator over the statusbar.
[style]stringSets the attribute "class" of the indicator.
[tooltip]stringSets the attribute "title" of the indicator.
[insertBefore]stringAn id of an existing status bar indicator. The new indicator will be inserted before (i.e. to the left of) the indicator specified by this parameter.
+ +

updateIndicator(id, visible, [style], [tooltip])

+

Updates a status indicator

+

Kind: global function

+
ParamTypeDescription
idstringRegistration id of the indicator to be updated.
visiblebooleanShows or hides the indicator over the statusbar.
[style]stringSets the attribute "class" of the indicator.
[tooltip]stringSets the attribute "title" of the indicator.
+ +

hideInformation()

+

Hide the statusbar Information Panel

+

Kind: global function

+ +

showInformation()

+

Show the statusbar Information Panel

+

Kind: global function

+ +

hideIndicators()

+

Hide the statusbar Indicators

+

Kind: global function

+ +

showIndicators()

+

Show the statusbar Indicators

+

Kind: global function

+ +

hideAllPanes()

+

Hides all panels but not the status bar

+

Kind: global function

+ +

showAllPanes()

+

Shows all panels (will not show a hidden statusbar)

+

Kind: global function

+ +

hide()

+

Hide the statusbar

+

Kind: global function

+ +

show()

+

Show the statusbar

+

Kind: global function

+ + \ No newline at end of file diff --git a/api/API-Reference/widgets/StatusBar/index.html b/api/API-Reference/widgets/StatusBar/index.html new file mode 100644 index 00000000..4bb3cbb9 --- /dev/null +++ b/api/API-Reference/widgets/StatusBar/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/worker/IndexingWorker.html b/api/API-Reference/worker/IndexingWorker.html new file mode 100644 index 00000000..87db7dbe --- /dev/null +++ b/api/API-Reference/worker/IndexingWorker.html @@ -0,0 +1,101 @@ + + + + + +IndexingWorker | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

IndexingWorker

Import :

+
const IndexingWorker = brackets.getModule("worker/IndexingWorker")
+ +

worker/IndexingWorker

+

Phoenix houses a file indexing worker which caches all cacheable files of a project in memory. +This module can be used to communicate with the Index and extend it by attaching new js worker scripts to the +indexing worker as discussed below. Any extension that works on a large number of files should use the indexing +worker cache to free up the main thread of heavy file access.

+
    +
  • Extensions performing large compute tasks should create their own worker and may use easy util methods in +worker/WorkerComm to communicate with the web worker.
  • +
+

Extending the indexing worker

+

You can add your own custom scripts to the indexing worker by following the below example. Suppose you have an +extension folder with the following structure:

+
myExtensionFolder
│ my_worker.js // the script that you need to attach to the web worker
│ main.js
+

In main.js extension module, we can import my_worker.js script into IndexingWorker by:

+

Example

+
let ExtensionUtils = brackets.getModule("utils/ExtensionUtils");
let workerPath = ExtensionUtils.getModulePath(module, "my_worker.js")
IndexingWorker.loadScriptInWorker(workerPath);
+

Once the worker script is loaded with the above step:

+
    +
  • Phoenix can communicate with worker using the IndexingWorker reference in Phoenix.
  • +
  • Worker can communicate with Phoenix with the global WorkerComm reference within the Indexing worker. +All utility methods in module worker/WorkerComm can be used for worker communication.
  • +
+

A global constant Phoenix.baseURL is available in the worker context to get the base url from which phoenix was +launched.

+

NB: You can use all util methods available in worker/WorkerComm as IndexingWorker internally uses WorkerComm +to communicate with the underlying worker thread.

+ + +

worker/IndexingWorker.WorkerComm

+

To communicate between the IndexingWorker and Phoenix, the following methods are available: +loadScriptInWorker, execPeer, setExecHandler, triggerPeer and other APIs described +in module worker/WorkerComm. +The above methods can be used with either IndexingWorker reference within Phoenix +or the global WorkerComm reference within the Indexing worker. (See example below.)

+

See worker/WorkerComm for detailed API docs.

+
// To Execute a named function `extensionName.sayHello` in the worker from phoenix

// in my_worker.js. It is a good practice to prefix your `[extensionName]`
// to exec handler to prevent name collisions with other extensions.

WorkerComm.setExecHandler("extensionName.sayHello", (arg)=>{
console.log("hello from worker ", arg); // prints "hello from worker phoenix"
return "Hello Phoenix";
});

// In Phoenix/extension
let workerMessage = await IndexingWorker.execPeer("extensionName.sayHello", "phoenix");
console.log(workerMessage); // prints "Hello Phoenix"
+

Kind: inner property of worker/IndexingWorker

+ +

"EVENT_CRAWL_STARTED"

+

Raised when crawling started in the indexing worker.

+

Kind: event emitted by worker/IndexingWorker

+ +

"EVENT_CRAWL_PROGRESS"

+

Raised when crawling in progressing within the worker. The handler will receive the +following properties as parameter.

+

Kind: event emitted by worker/IndexingWorker
+Properties

+
NameTypeDescription
processednumberThe number of files cached till now.
totalnumberNumber of files to cache.
+ +

"EVENT_CRAWL_COMPLETE"

+

Raised when crawling is complete within the worker. The handler will receive the +following properties as parameter.

+

Kind: event emitted by worker/IndexingWorker
+Properties

+
NameTypeDescription
numFilesCachednumber
cacheSizeBytesnumber
crawlTimeMsnumberin milliseconds.
+ + \ No newline at end of file diff --git a/api/API-Reference/worker/IndexingWorker/index.html b/api/API-Reference/worker/IndexingWorker/index.html new file mode 100644 index 00000000..1cd4b60e --- /dev/null +++ b/api/API-Reference/worker/IndexingWorker/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/API-Reference/worker/WorkerComm.html b/api/API-Reference/worker/WorkerComm.html new file mode 100644 index 00000000..58529640 --- /dev/null +++ b/api/API-Reference/worker/WorkerComm.html @@ -0,0 +1,77 @@ + + + + + +WorkerComm | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

WorkerComm

Import :

+
const WorkerComm = brackets.getModule("worker/WorkerComm")
+ +

worker/WorkerComm

+

WorkerComm provides util methods to communicate between web workers and Phoenix. +This module can be loaded from within web-workers and a phoenix extension that loads the web-worker.

+

Creating a WebWorker from your extension and attaching WorkerComm to it.

+

See an example extension code below that creates its own web worker and uses WorkerComm for communication.

+

Example

+
// from within an extension
const WorkerComm = brackets.getModule("worker/WorkerComm"),
EventDispatcher = brackets.getModule("utils/EventDispatcher"),
ExtensionUtils = brackets.getModule("utils/ExtensionUtils");

// figure out the path of the web worker relative to your extension
let workerPath = ExtensionUtils.getModulePath(module, "my_worker_path_within_extension.js")

// we need to pass in the `workerCommUrl` so that the web-worker can
// load`WorkerComm` within the worker context as described below.
let workerCommUrl = `${Phoenix.baseURL}worker/WorkerComm.js`;
let eventDispatcherURL = `${Phoenix.baseURL}utils/EventDispatcher.js`;

// load the worker
const _myWorker = new Worker(
`${workerPath}?workerCommUrl=${workerCommUrl}&eventDispatcherURL=${eventDispatcherURL}`);

// Not create a `WorkerComm` object and attach to your extension module exports.
EventDispatcher.makeEventDispatcher(exports);
// all WorkerComm objects needs to be an EventDispatcher.
WorkerComm.createWorkerComm(_myWorker, exports);

// Now `exports` can be used to communicate with the web-worker
// using `WorkerComm` APIs listed below.
+

Loading WorkerComm from within your webWorker

+

The Web Worker we created above also needs to load WorkerComm to be able to communicate with the WorkerComm +instance in Phoenix. For this, we need to load WorkerComm from the URL parameters. +(WorkerComm.js lib url needs to passed in while creating the web worker from Phoenix). +Example

+
const urlParams = new URLSearchParams(location.search);
importScripts(urlParams.get('workerCommUrl'));
importScripts(urlParams.get('eventDispatcherURL'));
// After this, a global `WorkerComm` object will be available within the
// web-worker that can be used to communicate with Phoenix.
+

APIs

+ + +

worker/WorkerComm.createWorkerComm(postTarget, eventDispatcher) : function

+

Adds support for WorkerComm APIs to the provided web-Worker instance. Only available in the main thread. +This API should be called immediately after creating the worker in main thread. +Create a web-worker with WorkerComm in an extension. +// load the worker [See API docs for full sample] +const _myWorker = new Worker( +${workerPath}?workerCommUrl=${workerCommUrl}&eventDispatcherURL=${eventDispatcherURL});

+

// Now create a WorkerComm object and attach to your extension module exports. +EventDispatcher.makeEventDispatcher(exports); +// all WorkerComm objects needs to be an EventDispatcher. +WorkerComm.createWorkerComm(_myWorker, exports);

+

Kind: inner method of worker/WorkerComm

+
ParamTypeDescription
postTargetstringThe web-worker reference.
eventDispatcherobjectcreated with util/EventDispatcher.
+ +

"EVENT_WORKER_COMM_INIT_COMPLETE"

+

Raised on main thread when WorkerComm is loaded in the web-worker and is ready.

+

Kind: event emitted by worker/WorkerComm

+ + \ No newline at end of file diff --git a/api/API-Reference/worker/WorkerComm/index.html b/api/API-Reference/worker/WorkerComm/index.html new file mode 100644 index 00000000..249448bf --- /dev/null +++ b/api/API-Reference/worker/WorkerComm/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/How-To/Dialogs.html b/api/How-To/Dialogs.html new file mode 100644 index 00000000..279282b5 --- /dev/null +++ b/api/How-To/Dialogs.html @@ -0,0 +1,113 @@ + + + + + +Show Dialogs | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

Show Dialogs

This document outlines the basic features of working with Dialogs, including:

+ +

Adding a Dialog Box and Buttons

+

To add a dialog box, follow these steps:

+
    +
  1. Import the required modules. +Import the Dialogs and DefaultDialogs modules along with other necessary modules:
  2. +
+
const DefaultDialogs = brackets.getModule("widgets/DefaultDialogs"),
Dialogs = brackets.getModule("widgets/Dialogs");

// other modules you may require
const AppInit = brackets.getModule("utils/AppInit"),
CommandManager = brackets.getModule("command/CommandManager"),
Menus = brackets.getModule("command/Menus");

+
    +
  1. +

    Create a function to show the dialog

    +

    To create a dialog you can use the specialized dialog APIs such as Dialogs.showConfirmDialog, Dialogs.showInfoDialog and Dialogs.showErrorDialog provided by the Dialogs module:

    +
  2. +
+
function handleHelloWorld() {
Dialogs.showInfoDialog(
"hello", // Title
"world" // Message
);
}
+

The Dialogs.showInfoDialog() method is the preferred way to display information messages.

+

Similarly, you can use Dialogs.showErrorDialog() for error messages:

+
function handleError() {
Dialogs.showErrorDialog(
"Error",
"Something went wrong!"
);
}
+

You can also close the dialog programmatically using the Dialog.close() method.

+
function handleHelloWorld() {
const dialog = Dialogs.showInfoDialog(
"hello",
"world"
);

// Close the dialog after 2 seconds
setTimeout(() => {
dialog.close();
}, 2000);
}
+

This will automatically close the dialog after 2 seconds.

+

These specialized dialog methods handle the common use cases.

+

Click on the functions to read more about them : showConfirmDialog(), showInfoDialog, showErrorDialog.

+

If you require custom buttons or advanced functionality, you can use the generic showModalDialog() method.

+

Click here to read more about creating custom dialog boxes.

+
    +
  1. Register the command +Register a command that will trigger the dialog:
  2. +
+
const MY_COMMAND_ID = "helloworld_sayhello";
CommandManager.register("Hello World", MY_COMMAND_ID, handleHelloWorld);
+
    +
  1. Add the menu item +Add a menu item that will execute the command:
  2. +
+
const menu = Menus.getMenu(Menus.AppMenuBar.FILE_MENU);
menu.addMenuItem(MY_COMMAND_ID);
+

Full Code Example:

+
define(function (require, exports, module) {
"use strict";

// Brackets modules
const AppInit = brackets.getModule("utils/AppInit"),
DefaultDialogs = brackets.getModule("widgets/DefaultDialogs"),
Dialogs = brackets.getModule("widgets/Dialogs"),
CommandManager = brackets.getModule("command/CommandManager"),
Menus = brackets.getModule("command/Menus");

// Function to run when the menu item is clicked
function handleHelloWorld() {
Dialogs.showInfoDialog(
"hello",
"world"
);
}

// Register command
const MY_COMMAND_ID = "helloworld_sayhello";
CommandManager.register("Hello World", MY_COMMAND_ID, handleHelloWorld);

// Add menu item
const menu = Menus.getMenu(Menus.AppMenuBar.FILE_MENU);
menu.addMenuItem(MY_COMMAND_ID);

// Initialize extension
AppInit.appReady(function () {
console.log("hello world");
});
});
+

Expected Output:

+

When the menu item is clicked, a dialog box appears:

+

Dialog box

+

Creating Custom Dialog Boxes

+

While the specialized dialog methods like showInfoDialog(), showConfirmDialog() and showErrorDialog() cover the common use cases, you can also create more complex custom dialog boxes using showModalDialog(). Here's how:

+
const dialog = Dialogs.showModalDialog(
DefaultDialogs.DIALOG_ID_INFO,
"Custom Dialog",
// Custom HTML content with CSS styling
'<div class="custom-dialog">' +
'<p style="text-align: center">This is a custom message</p>' +
'<input style="width: 97%" type="text" id="custom-input" placeholder="Enter some text...">' +
"</div>",
[
// For buttons
{
className: Dialogs.DIALOG_BTN_CLASS_PRIMARY,
id: Dialogs.DIALOG_BTN_OK,
text: "OK",
},
{
className: Dialogs.DIALOG_BTN_CLASS_NORMAL,
id: Dialogs.DIALOG_BTN_CANCEL,
text: "Cancel",
},
]
);
+

The showModalDialog() method provides more flexibility, allowing you to create custom dialog boxes with HTML content and buttons. However, it's recommended to use the specialized dialog APIs like showInfoDialog(), showConfirmDialog() and showErrorDialog() whenever possible, as they provide a simpler and more standardized interface for the most common dialog types.

+

Visual Reference

+

Custom Dialog Box

+

Click Here to read more about showModalDialog().

+

→ Each button object can have:

+
    +
  • className: Button styling class
  • +
  • id: Button identifier
  • +
  • text: Button label text
  • +
+

→ Available Button Classes:

+
    +
  • Dialogs.DIALOG_BTN_CLASS_PRIMARY: Primary action button
  • +
  • Dialogs.DIALOG_BTN_CLASS_NORMAL: Normal button
  • +
  • Dialogs.DIALOG_BTN_CLASS_LEFT: Left-aligned button
  • +
+

→ Common Button IDs:

+
    +
  • Dialogs.DIALOG_BTN_OK
  • +
  • Dialogs.DIALOG_BTN_CANCEL
  • +
  • Dialogs.DIALOG_BTN_SAVE_AS
  • +
  • Dialogs.DIALOG_BTN_DONTSAVE
  • +
  • Dialogs.DIALOG_BTN_DOWNLOAD
  • +
+

Handle Button Clicks

+

You can handle button clicks using the dialog's promise:

+
dialog.done(function (buttonId) {
if (buttonId === Dialogs.DIALOG_BTN_OK) {
const inputValue = $input.val();
alert("Input value: " + inputValue);
}
});
+

Complete Code Block with Custom Dialog Box and handling the button clicks.

+
define(function (require, exports, module) {
"use strict";

const AppInit = brackets.getModule("utils/AppInit"),
DefaultDialogs = brackets.getModule("widgets/DefaultDialogs"),
Dialogs = brackets.getModule("widgets/Dialogs"),
CommandManager = brackets.getModule("command/CommandManager"),
Menus = brackets.getModule("command/Menus");

function showCustomDialog() {
const dialog = Dialogs.showModalDialog(
DefaultDialogs.DIALOG_ID_INFO,
"Custom Dialog",
// Custom HTML content
'<div class="custom-dialog">' +
'<p style="text-align: center">This is a custom message</p>' +
'<input style="width: 97%" type="text" id="custom-input" placeholder="Enter some text...">' +
"</div>",
[
{
className: Dialogs.DIALOG_BTN_CLASS_PRIMARY,
id: Dialogs.DIALOG_BTN_OK,
text: "OK"
},
{
className: Dialogs.DIALOG_BTN_CLASS_NORMAL,
id: Dialogs.DIALOG_BTN_CANCEL,
text: "Cancel"
}
]
);

// Get dialog element and ensure input is accessible
const $dlg = dialog.getElement();
const $input = $dlg.find("#custom-input");

if (!$input.length) {
console.error("Failed to find input element in dialog");
return;
}

// Handle dialog button clicks
dialog.done(function (buttonId) {
if (buttonId === Dialogs.DIALOG_BTN_OK) {
const inputValue = $input.val();
alert("Input value: " + inputValue);
}
});
}

// Register command
const MY_COMMAND_ID = "test_customdialog";
CommandManager.register("Show Custom Dialog", MY_COMMAND_ID, showCustomDialog);

// Add menu item
const menu = Menus.getMenu(Menus.AppMenuBar.FILE_MENU);
menu.addMenuItem(MY_COMMAND_ID);

// Initialize extension
AppInit.appReady(function () {
console.log("Custom dialog extension loaded");
});
});
+

Visual Reference

+

Custom-dialog-box-gif

+ + \ No newline at end of file diff --git a/api/How-To/Dialogs/index.html b/api/How-To/Dialogs/index.html new file mode 100644 index 00000000..652e117d --- /dev/null +++ b/api/How-To/Dialogs/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/How-To/Menus.html b/api/How-To/Menus.html new file mode 100644 index 00000000..8d3cf66e --- /dev/null +++ b/api/How-To/Menus.html @@ -0,0 +1,205 @@ + + + + + +Add Menus, Menu items and Keyboard Shortcuts | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

Add Menus, Menu items and Keyboard Shortcuts

This document outlines the basic features of working with Menus, including:

+ +

Adding a Menu

+

To add a custom menu, follow these steps :-

+
    +
  1. +

    Import the Menus module. +To use the menu functionality, import the Menus module:

    +
    const Menus = brackets.getModule("command/Menus");
    +
  2. +
  3. +

    Create the menu.

    +

    Use Menus.addMenu() to add a menu to the menu bar. Provide the display name and the identifier. The identifier must be written in snake_case.

    +
    +
    +

    Providing the identifier is necessary to display the menu on the menu bar. This identifier may later be used to add menu items inside it or even remove the menu if needed.

    +
    +
    // Add a menu to the menu bar
    const menu = Menus.addMenu('Test', 'Test_Extension_Docs');
    +
  4. +
+
+

For a detailed description, refer to this link.

+
+

Full Code Example :-

+
define(function (require, exports, module) {
"use strict";

// Brackets modules
const AppInit = brackets.getModule("utils/AppInit"),
Menus = brackets.getModule("command/Menus");

// Add a menu to the menu bar
const menu = Menus.addMenu('Test', 'Test_Extension_Docs');

// Initialize extension once shell is finished initializing.
AppInit.appReady(function () {
console.log("hello world");
});
});
+

Expected Output :-

+

Adding a menu

+

Adding a Menu Item

+

To add a menu item, follow these steps :-

+
    +
  1. +

    Import the Menus and CommandManager module.

    +

    These modules allow you to register commands and add items to menus:

    +
    const CommandManager = brackets.getModule("command/CommandManager");
    const Menus = brackets.getModule("command/Menus");
    +
  2. +
  3. +

    Register the Command

    +
  4. +
+

Use CommandManager.register() to associate an ID with a function:

+
function handleTestExtension() {
alert("Test menu item");
}

// The `CommandID` must be written in snake_case
const MY_COMMAND_ID = "test_menuitem";
CommandManager.register("Test", MY_COMMAND_ID, handleTestExtension);
+
    +
  • The first argument is the label for the menu item.
  • +
  • The second argument is a unique command ID.
  • +
  • The third argument is the handler function to execute when the item is clicked.
  • +
+
    +
  1. +

    Add the Menu Item +To add the menu item, use menu.addMenuItem(). For instance, if you wish to add an item to the File menu, you can write:

    +
    const menu = Menus.getMenu(Menus.AppMenuBar.FILE_MENU);
    menu.addMenuItem(MY_COMMAND_ID);
    +
  2. +
+
+

These are some of the menus available by default :-

+
+
    +
  • FILE_MENU : ‘file-menu’
  • +
  • EDIT_MENU : ‘edit-menu’
  • +
  • FIND_MENU : ‘find-menu’
  • +
  • VIEW_MENU : ‘view-menu’
  • +
  • NAVIGATE_MENU : ‘navigate-menu’
  • +
+

You can also add menu items to any custom menus you create.

+
+

For a detailed description, refer to this link.

+
+

Full Code Example :-

+
define(function (require, exports, module) {
"use strict";

// Brackets modules
const AppInit = brackets.getModule("utils/AppInit"),
CommandManager = brackets.getModule("command/CommandManager"),
Menus = brackets.getModule("command/Menus");

// Function to run when the menu item is clicked
function handleTestExtension() {
alert("Test menu item");
}

// The `CommandID` must be written in snake_case
const MY_COMMAND_ID = "test_menuitem";
CommandManager.register("Test", MY_COMMAND_ID, handleTestExtension);

// Add Menu item
const menu = Menus.getMenu(Menus.AppMenuBar.FILE_MENU);
menu.addMenuItem(MY_COMMAND_ID);

// Initialize extension once shell is finished initializing.
AppInit.appReady(function () {
console.log("hello world");
});
});
+

Expected Output :-

+

Menu Item Example

+

Menu Item Dialog

+

The alert box that appears when the Test menu item is clicked!

+

Position the Menu Item

+

You can position the menu item to make it appear at the first, last or before/after a given item.

+

To position the menu item at the top, use

+
// second parameter is for keyboard shortcut. Empty string means no shortcut.
menu.addMenuItem(MY_COMMAND_ID, "", Menus.FIRST);
+

Menu Item at first

+

Menus.FIRST is used to position it before every other item. Note: It is recommended to avoid using this and prefer relative menu IDs for better positioning.*

+

Menus.LAST is used to position it at the end. It is the Default value.

+

To position the menu item before or after any item, use

+
// second parameter is for keyboard shortcut. Empty string means no shortcut.
menu.addMenuItem(MY_COMMAND_ID, "", Menus.BEFORE, Commands.FILE_SAVE_AS);
+
    +
  • Third parameter must specify BEFORE or AFTER the item should be set.
  • +
  • Fourth parameter must specify the “relativeID” of the menu item to set the position.
  • +
+

Menu Item before/after

+

Here, the menu item is set before the Save As... option.

+

To get the list of all the RelativeIDs available by default, refer to this link.

+

Attach a keyboard shortcut to a Menu Item

+

You can assign a keyboard shortcut to your menu item.

+

Note: Only add shortcuts if they're essential and frequently used, ensuring compatibility across platforms. Users can set custom shortcuts, so default shortcuts should be reserved only for high-use actions.

+

To add the keyboard shortcut, use :-

+
    +
  1. +

    Import the KeyBindingManager module.

    +
    const KeyBindingManager = brackets.getModule("command/KeyBindingManager");
    +
  2. +
  3. +

    Add the keyboard shortcut to addMenuItem. The keyboard shortcut will be displayed next to the menu item in the UI.

    +
    +

    Ensure that the keyboard shortcut you choose doesn't conflict with any existing shortcuts already in use.

    +
    +
    menu.addMenuItem(MY_COMMAND_ID, "Ctrl-Alt-T", Menus.FIRST);
    +

    Menu Item keyboard shortcut

    +
  4. +
  5. +

    Register the keyboard shortcut. To register use addBinding(). The first parameter will be the CommandID of the menu item and the second parameter will be the keyboard shortcut.

    +
    KeyBindingManager.addBinding(MY_COMMAND_ID, "Ctrl-Alt-T");
    +
  6. +
+

That's it! Now, pressing the assigned keyboard shortcut will trigger the corresponding menu item.

+
+

For a detailed description, refer to this link.

+
+

Full Code Example :-

+
define(function (require, exports, module) {
"use strict";

// Brackets modules
const AppInit = brackets.getModule("utils/AppInit"),
CommandManager = brackets.getModule("command/CommandManager"),
Menus = brackets.getModule("command/Menus"),
KeyBindingManager = brackets.getModule("command/KeyBindingManager");

// Function to run when the menu item is clicked
function handleTestExtension() {
alert("Test menu item");
}

const MY_COMMAND_ID = "test_menuitem";
CommandManager.register("Test", MY_COMMAND_ID, handleTestExtension);

// Add Menu item
const menu = Menus.getMenu(Menus.AppMenuBar.FILE_MENU);

menu.addMenuItem(MY_COMMAND_ID, "Ctrl-Alt-T", Menus.FIRST);

// Register the keyboard shortcut
KeyBindingManager.addBinding(MY_COMMAND_ID, "Ctrl-Alt-T");

// Initialize extension once shell is finished initializing.
AppInit.appReady(function () {
console.log("hello world");
});
});
+

Adding a Sub Menu

+

To add a submenu to an existing menu item, follow these steps:

+
    +
  1. Import the Menus and CommandManager modules
  2. +
+
const CommandManager = brackets.getModule("command/CommandManager");
const Menus = brackets.getModule("command/Menus");
+
    +
  1. Create and register the main command +First, create a command that will serve as the parent menu item:
  2. +
+
function handleTestExtension() {
alert("Test menu item");
}

const MY_COMMAND_ID = "Test";
CommandManager.register("Test", MY_COMMAND_ID, handleTestExtension);
+
    +
  1. Get the parent menu and create the submenu +Use menu.addSubMenu() to create a submenu under an existing menu:
  2. +
+
const menu = Menus.getMenu(Menus.AppMenuBar.FILE_MENU);
const subMenu = menu.addSubMenu(MY_COMMAND_ID, "Test_Sub_Menu");
+
    +
  • First parameter is the command ID of the parent menu item
  • +
  • Second parameter is the identifier for the submenu (must be in snake_case)
  • +
+
    +
  1. Create and register submenu commands +Register commands for each submenu item:
  2. +
+
const SUB_COMMAND_1 = "Test_SubCommand1";
const SUB_COMMAND_2 = "Test_SubCommand2";

CommandManager.register("Sub Item 1", SUB_COMMAND_1, function() {
alert("Sub Item 1 clicked");
});
CommandManager.register("Sub Item 2", SUB_COMMAND_2, function() {
alert("Sub Item 2 clicked");
});
+
    +
  1. Add items to the submenu +Use addMenuItem() to add the registered commands to your submenu:
  2. +
+
subMenu.addMenuItem(SUB_COMMAND_1);
subMenu.addMenuDivider(); // Add a separator line
subMenu.addMenuItem(SUB_COMMAND_2);
+
+

For visual separation between menu items, you can add a divider using addMenuDivider().

+
+

→ For a detailed description, refer to this link.

+

Full Code Example:

+
define(function (require, exports, module) {
"use strict";

// Brackets modules
const AppInit = brackets.getModule("utils/AppInit"),
CommandManager = brackets.getModule("command/CommandManager"),
Menus = brackets.getModule("command/Menus");

// Function to run when the menu item is clicked
function handleTestExtension() {
alert("Test menu item");
}

// Main command
const MY_COMMAND_ID = "Test";
CommandManager.register("Test", MY_COMMAND_ID, handleTestExtension);

// Add menu item
const menu = Menus.getMenu(Menus.AppMenuBar.FILE_MENU);

// Add sub menu
const subMenu = menu.addSubMenu(MY_COMMAND_ID, "Test_Sub_Menu");

// Additional submenu commands
const SUB_COMMAND_1 = "Test_SubCommand1";
const SUB_COMMAND_2 = "Test_SubCommand2";

// Register new commands
CommandManager.register("Sub Item 1", SUB_COMMAND_1, function() {
alert("Sub Item 1 clicked");
});
CommandManager.register("Sub Item 2", SUB_COMMAND_2, function() {
alert("Sub Item 2 clicked");
});

// Add items inside sub menu
subMenu.addMenuItem(SUB_COMMAND_1);
subMenu.addMenuDivider(); // Add separator
subMenu.addMenuItem(SUB_COMMAND_2);

// Initialize extension once shell is finished initializing.
AppInit.appReady(function () {
console.log("hello world");
});
});

+

Expected Output:

+

Sub Menu

+

When a submenu item is clicked, it will show an alert box with the corresponding message.

+
+

Note: Make sure all command IDs are unique throughout your extension to avoid conflicts.

+
+
+

You can add as many submenu items as needed by repeating steps 4 and 5 for each new item. You can even create nested submenu items.

+
+
+

Submenu items can have their own keyboard shortcuts using the same method described in the "Attach a keyboard shortcut to a menu item" section.

+
+ + \ No newline at end of file diff --git a/api/How-To/Menus/index.html b/api/How-To/Menus/index.html new file mode 100644 index 00000000..8b31f169 --- /dev/null +++ b/api/How-To/Menus/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/How-To/Panels.html b/api/How-To/Panels.html new file mode 100644 index 00000000..f8eae458 --- /dev/null +++ b/api/How-To/Panels.html @@ -0,0 +1,163 @@ + + + + + +How to create Panels | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

How to create Panels

In Phoenix Code, Panels are of two types :- Plugin Panel and Bottom Panel.

+

Plugin Panel appears on the side of the screen, generally the left side. For Example :- Live Preview feature uses the Plugin Panel.

+

Plugin Panel Example

+

Bottom Panel appears on the bottom of the screen as a tab. Multiple bottom panels share a tabbed interface where each panel gets its own tab with an icon and title. For Example :- Git, Terminal, Problems panel and many more use the Bottom Panel.

+

Bottom Panel Example

+

This document outlines the basic features of working with Panels.

+ +

Creating a Plugin Panel

+

To create a plugin panel, follow these steps:

+
    +
  1. +

    Import the WorkSpaceManager modules

    +
    const WorkspaceManager = brackets.getModule("view/WorkspaceManager");
    +
  2. +
  3. +

    Create panel content +Create a jQuery object containing your panel's HTML content:

    +
    const $panel = $("<div>")
    .attr("id", "my-extension-panel")
    .html("<h3>My Plugin Panel</h3><p>Hello from the panel!</p>");
    +
  4. +
  5. +

    Create toolbar icon +Create a toolbar icon to toggle the panel.

    +
    +

    Creating a toolbar icon is mandatory, else the panel won't show up.

    +
    +
  6. +
  7. +

    Create the plugin panel +Use WorkspaceManager.createPluginPanel() to create your panel:

    +
    const pluginPanel = WorkspaceManager.createPluginPanel(
    "myextension.panel", // Unique ID using package-style naming
    $panel, // jQuery object for panel content
    200, // minSize in pixels
    $toolbarIcon, // toolbar icon
    400 // initialSize in pixels (optional)
    );
    +
  8. +
+
+

For a detailed description, refer to this link.

+
+

Full Code Example:

+
define(function (require, exports, module) {
"use strict";

// Brackets modules
const AppInit = brackets.getModule("utils/AppInit"),
CommandManager = brackets.getModule("command/CommandManager"),
Menus = brackets.getModule("command/Menus"),
WorkspaceManager = brackets.getModule("view/WorkspaceManager");

let pluginPanel; // Store panel reference

// Function to run when the menu item is clicked
function handleTestExtension() {
if (!pluginPanel) {
// Create panel content
const $panel = $("<div>")
.attr("id", "my-extension-panel")
.html("<h3>My Plugin Panel</h3><p>Hello from the panel!</p>");

// Create toolbar icon
const $toolbarIcon = $("#panel");

// Create the plugin panel
pluginPanel = WorkspaceManager.createPluginPanel(
"myextension.panel",
$panel,
200,
$toolbarIcon,
400
);
pluginPanel.show();
}
}

// Register command
const MY_COMMAND_ID = "test_menuitem";
CommandManager.register("Toggle Panel", MY_COMMAND_ID, handleTestExtension);

// Add Menu item
const menu = Menus.getMenu(Menus.AppMenuBar.FILE_MENU);
menu.addMenuItem(MY_COMMAND_ID);

// Initialize extension
AppInit.appReady(function () {
console.log("Panel extension initialized");
});
});
+

Visual Reference +Plugin Panel

+

Managing Plugin Panel State

+

You can control the visibility and state of your plugin panel:

+
    +
  1. +

    Show/Hide Panel

    +
    // Show panel
    pluginPanel.show();

    // Hide panel
    pluginPanel.hide();
    +
  2. +
  3. +

    Check Panel Visibility

    +
    const isVisible = pluginPanel.isVisible();
    +
  4. +
  5. +

    Toggle Panel Visibility

    +
    function togglePanel() {
    if (pluginPanel.isVisible()) {
    pluginPanel.hide();
    } else {
    pluginPanel.show();
    }
    }
    +
  6. +
+

Creating a Bottom Panel

+

Bottom panels are created similarly to plugin panels but use different methods:

+
+

For Bottom Panels creating a toolbar icon is not required. Each bottom panel appears as a tab in the shared tab bar.

+
+
    +
  1. +

    Import required modules

    +
    const WorkspaceManager = brackets.getModule("view/WorkspaceManager");
    +
  2. +
  3. +

    Create the bottom panel

    +
    const bottomPanel = WorkspaceManager.createBottomPanel(
    "myextension.panel", // Unique ID using package-style naming
    $panel, // jQuery object for panel content
    undefined, // minSize (deprecated, pass undefined)
    "My Panel", // Title shown on the tab
    {
    iconSvg: "path/to/icon.svg" // SVG icon for the tab
    }
    );
    +
      +
    • title: The text shown on the panel's tab. If not provided, Phoenix Code uses the text from a .toolbar .title element inside your panel, or derives it from the panel ID.
    • +
    • iconSvg: Path to an SVG file used as the tab icon. The icon automatically adapts to light and dark themes. If not provided, a default icon is used.
    • +
    +
  4. +
+
+

The minSize parameter (third argument) is deprecated and no longer used. Pass undefined for this parameter.

+
+
+

For a detailed description, refer to this link.

+
+

Full Code Example for Bottom Panel:

+
    define(function (require, exports, module) {
"use strict";

// Brackets modules
const AppInit = brackets.getModule("utils/AppInit"),
CommandManager = brackets.getModule("command/CommandManager"),
Menus = brackets.getModule("command/Menus"),
WorkspaceManager = brackets.getModule("view/WorkspaceManager");

let bottomPanel; // Store panel reference

// Function to run when the menu item is clicked
function handleTestExtension() {
if (!bottomPanel) {
// Create panel content
const $panel = $("<div>")
.attr("id", "my-extension-panel")
.html("<h3>My Bottom Panel</h3><p>Hello from the panel!</p>");

// Create the bottom panel
bottomPanel = WorkspaceManager.createBottomPanel(
"myextension.panel",
$panel,
undefined,
"My Panel",
{ iconSvg: "styles/images/panel-icon-default.svg" }
);
bottomPanel.show();
}
}

// Register command
const MY_COMMAND_ID = "test_menuitem";
CommandManager.register("Toggle Panel", MY_COMMAND_ID, handleTestExtension);

// Add Menu item
const menu = Menus.getMenu(Menus.AppMenuBar.FILE_MENU);
menu.addMenuItem(MY_COMMAND_ID);

// Initialize extension
AppInit.appReady(function () {
console.log("Panel extension initialized");
});
});
+

Visual Reference +Bottom Panel

+

Managing Bottom Panel State

+

Bottom panels support similar state management to plugin panels:

+
    +
  1. +

    Show/Hide Panel

    +
    // Show panel
    bottomPanel.show();

    // Hide panel
    bottomPanel.hide();
    +
  2. +
  3. +

    Check Panel Visibility

    +
    const isVisible = bottomPanel.isVisible();
    +
  4. +
  5. +

    Toggle Panel Visibility

    +
    function togglePanel() {
    if (bottomPanel.isVisible()) {
    bottomPanel.hide();
    } else {
    bottomPanel.show();
    }
    }
    +
  6. +
  7. +

    Update Tab Title

    +
    bottomPanel.setTitle("New Title");
    +
  8. +
  9. +

    Handle Close Confirmation

    +

    If your panel has unsaved state or running processes, you can register a handler that runs before the panel closes. Return false to prevent closing.

    +
    bottomPanel.registerOnCloseRequestedHandler(async function () {
    if (hasUnsavedChanges) {
    const confirmed = await showConfirmDialog("Discard changes?");
    return confirmed; // true to close, false to cancel
    }
    return true;
    });
    +

    To programmatically close a panel while respecting its close handler, use requestClose():

    +
    const wasClosed = await bottomPanel.requestClose();
    +
  10. +
+

Best Practices

+
    +
  1. +

    Always use unique, package-style IDs (e.g., "yourextension.panel-name") to avoid conflicts with other extensions.

    +
  2. +
  3. +

    Save panel state (e.g., visibility, size) in preferences if needed, to restore state when the extension is reloaded.

    +
  4. +
+
+

For more information about the WorkSpace Manager API, refer to the Phoenix Code API documentation.

+
+ + \ No newline at end of file diff --git a/api/How-To/Panels/index.html b/api/How-To/Panels/index.html new file mode 100644 index 00000000..598afef2 --- /dev/null +++ b/api/How-To/Panels/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/How-To/StatusBar.html b/api/How-To/StatusBar.html new file mode 100644 index 00000000..954487bd --- /dev/null +++ b/api/How-To/StatusBar.html @@ -0,0 +1,60 @@ + + + + + +Add an indicator icon on the status bar | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

Add an indicator icon on the status bar

This document outlines the basic features of working with Status Bar, including:

+ +

Adding a button on Status Bar

+
    +
  1. +

    Import the StatusBar module.

    +
    const StatusBar = brackets.getModule("widgets/StatusBar");
    +
  2. +
  3. +

    Register the command.

    +

    Register the command that will trigger the clicking.

    +
    var MY_COMMAND_ID = "helloworld_sayhello";
    CommandManager.register("Hello World", MY_COMMAND_ID, handleHelloWorld);
    +
  4. +
  5. +

    Add the button to the StatusBar.

    +

    To add the button to StatusBar, use addIndicator() :-

    +
  6. +
+
StatusBar.addIndicator(
MY_COMMAND_ID, // unique ID for this indicator
$("<div>Test</div>").click(handleHelloWorld), // Optional DOMNode for the indicator
true, // show the indicator
"hello-world-status", // CSS class
"tooltip", // tooltip text
);
+

→ The parameters of the addIndicator() method :-

+
ParamTypeDescription
idstringRegistration id of the indicator to be updated.
[indicator]DOMNode or jQueryObjectOptional DOMNode for the indicator
[visible]booleanShows or hides the indicator over the statusbar.
[style]stringSets the attribute "class" of the indicator.
[tooltip]stringSets the attribute "title" of the indicator.
[insertBefore]stringAn id of an existing status bar indicator. The new indicator will be inserted before (i.e. to the left of) the indicator specified by this parameter.
+
+

For a detailed description, refer to this link.

+
+ + \ No newline at end of file diff --git a/api/How-To/StatusBar/index.html b/api/How-To/StatusBar/index.html new file mode 100644 index 00000000..350cd117 --- /dev/null +++ b/api/How-To/StatusBar/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/available-standard-libs.html b/api/available-standard-libs.html new file mode 100644 index 00000000..386508ff --- /dev/null +++ b/api/available-standard-libs.html @@ -0,0 +1,81 @@ + + + + + +Available Standard Libraries | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

Available Standard Libraries

The following standard libraries are available inside Phoenix Code:

+

jquery

+

jQuery is a JavaScript library designed to simplify HTML DOM tree traversal and manipulation, as well as event handling, CSS animations, and Ajax.

+ +

fontawesome

+

Fontawesome is used for iconography in Phoenix Code.

+ +

Usage

+
<!-- This example uses <i> element with: 
1. the `fa-solid` style class for solid style
2. the `user` icon with the `fa-` prefix -->
<i class="fa-solid fa-user"></i>

<!-- Or you can use a <span> element, with classes applied in the same way -->
<span class="fa-solid fa-user"></span>
+

Reference: https://fontawesome.com/docs/web/add-icons/how-to

+

See the following urls for available icons:

+
    +
  1. https://fontawesome.com/v5/cheatsheet/free/solid
  2. +
  3. https://fontawesome.com/v5/cheatsheet/free/regular
  4. +
  5. https://fontawesome.com/v5/cheatsheet/free/brands
  6. +
+

devicon

+

devicon is used for iconography in Phoenix Code.

+
+

usage: similar to fontawesome

+
+ +

file-icons

+

file-icon is used for iconography in Phoenix Code.

+
+

usage: similar to fontawesome

+
+ +

Additional icon sources

+

This is not included in Phoenix, but you can get icons from

+
    +
  1. Ionicons
  2. +
+

Usage

+
<!-- This example uses <i> element -->
<i class="devicon-devicon-plain"></i>
+

NB: Svg icons are not integrated in source.

+

Reference: https://www.npmjs.com/package/devicon

+

See the following urls for available icons: +https://devicon.dev/

+ + \ No newline at end of file diff --git a/api/available-standard-libs/index.html b/api/available-standard-libs/index.html new file mode 100644 index 00000000..1ae5a595 --- /dev/null +++ b/api/available-standard-libs/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/creating-extensions.html b/api/creating-extensions.html new file mode 100644 index 00000000..aaef0443 --- /dev/null +++ b/api/creating-extensions.html @@ -0,0 +1,79 @@ + + + + + +Creating Extensions | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

Creating Extensions

This document outlines how to write your own extensions for Phoenix Code.

+

How to create a new Extension

+

Click on the link below and follow the instructions there to start: +Create an Extension

+

API docs

+

Please refer to the links below for extension API docs and code references.

+ +

Running and Debugging your Extension

+

Follow the steps below to run and debug your extension:

+
    +
  • +

    Clone your extension repository onto the machine.

    +
  • +
  • +

    Go to https://create.phcode.dev. This is a development-focused version of phcode.dev which shows non minified JS/CSS files in the browser developer tools.

    +
  • +
  • +

    Now, open the cloned folder in create.phcode.dev.

    +
  • +
+
+

Refer to this guide to see how to open a folder in Phoenix Code.

+
+
    +
  • Select Debug > Load Project As Extension
  • +
+

Debug Menu Image

+
    +
  • +

    The extension will be loaded in Phoenix Code.

    +
  • +
  • +

    You can now make code changes and live preview them.

    +
  • +
+
+

You can also select Debug > Reload Project As Extension to test the new code changes.

+
+
    +
  • When you are done developing the extension, select Debug > Unload Project As Extension to unload the extension.
  • +
+

You can use the browser developer tools to debug the extension.

+ + \ No newline at end of file diff --git a/api/creating-extensions/index.html b/api/creating-extensions/index.html new file mode 100644 index 00000000..46d29e7d --- /dev/null +++ b/api/creating-extensions/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/creating-node-extensions.html b/api/creating-node-extensions.html new file mode 100644 index 00000000..90ba9a9b --- /dev/null +++ b/api/creating-node-extensions.html @@ -0,0 +1,67 @@ + + + + + +Use node.js from your extension | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

Use node.js from your extension

This document outlines how to create node extensions for Phoenix Code.

+

What is a Node Extension?

+

Node Extensions in Phoenix Code bring the power of Node.js to your desktop development environment, unlocking access to the vast npm ecosystem for building feature-rich extensions. By leveraging Node.js runtime capabilities, these extensions can perform system-level operations like executing commands, accessing local files, or integrating with external applications – functionalities that aren't possible in traditional browser-based extensions.

+

One of the key advantages of Node Extensions is their ability to handle computationally intensive tasks without impacting the editor's performance. While browser-based extensions run in the main thread and can potentially freeze the UI during heavy processing, Node Extensions can offload these operations to separate processes. This makes them ideal for scenarios involving extensive image processing, code analysis, or other resource-demanding tasks. Whether you're building a system integration tool or implementing complex background processing, Node Extensions provide the perfect foundation for creating powerful, responsive extensions in Phoenix Code's desktop environment. +For cross-platform compatibility between desktop and browser environments, you can alternatively use Web Workers to handle computation-intensive tasks. This approach requires bundling any npm dependencies using webpack or similar tools before they can run in the browser. Check out our Web Worker Communication guide for detailed instructions on implementing and managing Web Workers in your extension.

+

Important: When using Node Extensions for heavy computational tasks, make sure to fork a separate Node.js process or worker rather than running operations in the main Node.js process. This separation ensures optimal performance and stability of your extension within Phoenix Code.

+

How to create a Node Extension

+

To create a new node extension for Phoenix Code, use this template. This template extension works in the browser as well as desktop builds. In browser, it will not use node, and node.js based functionalities are not available. Desktop builds can use node capabilities.

+

In desktop builds, there is an additional capability to execute node.js code. This is helpful if you want to extend the functionality of Phoenix Code using the vast npm library.

+

For creating extensions that do not need node, use: https://github.com/phcode-dev/extension-template

+

Setting up node extensions

+

In package.json, add the following section

+
{
"nodeConfig": {
"nodeIsRequired": false,
"main": "node/index.js",
"npmInstall": "node/"
}
}
+

nodeConfig Object

+

The nodeConfig object indicates that this is a Node extension.

+

nodeIsRequired Field

+

Set this field to true if the extension relies on Node and won't function without it. +If set to false or omitted, the extension can still be loaded in browser versions of Phoenix code without Node support, but it will use Node in native builds. +It will be shown in the extension manager dialog in browser builds as well.

+

main Field

+

Specifies the main entry point for the Node.js component of the extension. +Should point to the main JavaScript file for the Node part of the extension. +Example: "main": "node/index.js"

+

npmInstall Field (Optional)

+

Specifies the path to run npm install when the user installs the extension from the extension manager. +It's advisable not to package node_modules inside the extension. Only the package lock file should be distributed. +Example: "npmInstall": "node/"

+

Communicating between node.js and Phoenix Code

+

Use the NodeConnector-API to call functions and send events between your node.js and Phoenix Code extension components.

+

This is available as a global object global.createNodeConnector.

+

EventDispatcher-API is also available in the global context as global.EventDispatcher for event trigger/listen within node.

+

Using this template

+

Click Here for the instructions on how to use this template.

+ + \ No newline at end of file diff --git a/api/creating-node-extensions/index.html b/api/creating-node-extensions/index.html new file mode 100644 index 00000000..4526f3fe --- /dev/null +++ b/api/creating-node-extensions/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/creating-themes.html b/api/creating-themes.html new file mode 100644 index 00000000..4036fdec --- /dev/null +++ b/api/creating-themes.html @@ -0,0 +1,66 @@ + + + + + +Creating Themes | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

Creating Themes

This document outlines how to create your own themes for Phoenix Code.

+

Follow these steps to create a new theme:

+

Step 1:

+

Open this link Theme-Template. +This is the default Phoenix Code theme template repository.

+

Theme Template Repo Image

+

Step 2:

+

Use the template to create your repository.

+
+

Step 3:

+

Clone the repository you created in Step 2 to your local machine.

+

Go to https://create.phcode.dev. This is a development-focused version of phcode.dev which shows non minified JS/CSS files in the browser developer tools.

+

Now, open the cloned folder in create.phcode.dev. Refer to this guide to see how to open a folder in Phoenix Code.

+

Cloned Repo Image

+

Step 4:

+

Now, go to package.json file and update the values accordingly.

+

Here is a quick reference :-

+
FieldDescription
titleReplace "Name of the theme" with the actual title of your theme.
nameChange github-<owner>-<repo> to your specific package name, formatted as github-yourusername-repositoryname.
descriptionUpdate to a brief, relevant description about your theme.
versionStart with "0.0.1" or update to reflect your current version following semantic versioning.
licenseConfirm "MIT" is suitable or specify another license, if necessary.
authorReplace with your name and a link to your GitHub profile or another URL.
homepageSet to the URL of your project’s homepage or GitHub repository.
enginesEnsure compatibility with the required Brackets version, e.g., ">=3.0.0".
categoriesUpdate "demo" with relevant categories that fit your theme.
keywordsUpdate or append additional keywords that describe your theme. Example :- ‘dark-theme’, ‘aesthetic’, ‘blue’.
themeMake sure all necessary theme files and folders are included. Set “Dark” to true if its a dark theme, else false.
+

Save the file after making all the changes.

+

Step 5:

+

Now, go to my-theme.less file. Click on Debug in the Menu bar and select Load Project As Extension.

+

Debug Menu Image

+

This should be the default output.

+

Default Theme Image

+

This file contains all the UI elements as variables. You can modify the colors as per your needs and live preview them.

+
+
+

You can also select Debug > Reload Project As Extension to test the new code changes.

+
+

When you are done developing the theme, select Debug > Unload Project As Extension to unload the theme.

+

Once the theme is complete, you can publish it to phcode.dev extension repository.

+

Refer to this link to see how to publish the theme.

+ + \ No newline at end of file diff --git a/api/creating-themes/index.html b/api/creating-themes/index.html new file mode 100644 index 00000000..a2326b27 --- /dev/null +++ b/api/creating-themes/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/debugging-extensions.html b/api/debugging-extensions.html new file mode 100644 index 00000000..7de000b5 --- /dev/null +++ b/api/debugging-extensions.html @@ -0,0 +1,83 @@ + + + + + +Debugging Extensions | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

Debugging Extensions

The Debug menu provides several options for extension development.

+

Debug Menu

+

Phoenix Code Developer Tools

+

The Phoenix Code Developer Tools option (shortcut: F12) opens up the DevTools. Use this to inspect the DOM, preview logs and debug scripts.

+

Phoenix Code Developer Tools

+

Phoenix Code Diagnostic Tools

+

To open Phoenix Code Diagnostic tools, click on the Debug menu on the menu bar and navigate to the Phoenix Code Diagnostic Tools option. This section provides several tools for debugging purposes.

+

Phoenix Code Diagnostic Tools

+

Available Diagnostic Tools

+
    +
  1. +

    Run Phoenix Code Tests +Executes built-in tests to verify the functionality of Phoenix Code.

    +
  2. +
  3. +

    Build Editor Tests +Builds and runs tests specifically for the editor environment.

    +
  4. +
  5. +

    Enable Detailed Logs +Activates verbose logging for better insight into extension behavior. Use this to identify errors or unexpected behaviors during development.

    +
  6. +
  7. +

    Enable PhNode Inspector +Launches the PhNode inspector, allowing in-depth inspection of the extension runtime environment.

    +
  8. +
  9. +

    How to Inspect PhNode +Provides a guide to effectively use the PhNode Inspector. +Inspect Phnode

    +
  10. +
  11. +

    Live Preview Logs +Displays real-time logs for active live previews, helping debug changes dynamically.

    +
  12. +
  13. +

    Show Performance Data +Generates performance metrics to identify bottlenecks or performance issues within the extension.

    +
  14. +
  15. +

    Open Virtual File System +Opens and inspects the virtual file system used by Phoenix Code.

    +
  16. +
+

FAQs

+

Q. Why is console.log not displaying?

+
    +
  • By default, console logs are disabled. To enable them, click on Enable Detailed Logs under Phoenix Code Diagnostic Tools.
  • +
+ + \ No newline at end of file diff --git a/api/debugging-extensions/index.html b/api/debugging-extensions/index.html new file mode 100644 index 00000000..ed0e3eec --- /dev/null +++ b/api/debugging-extensions/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/getting-started.html b/api/getting-started.html new file mode 100644 index 00000000..e4e19073 --- /dev/null +++ b/api/getting-started.html @@ -0,0 +1,54 @@ + + + + + +Getting Started | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

Getting Started

This guide provides an overview on the documentation structure and how to get started with the Phoenix Code API documentation!

+

Documentation Structure

+

The Phoenix Code API documentation is organized into sections for easy navigation. Here’s a quick overview of the key sections:

+

Creating Themes

+

This page provides guidelines on how to create custom Themes for Phoenix Code.

+

Creating Extensions

+

This page provides guidelines on how to write Extensions for Phoenix Code.

+

Use Node.js from extension

+

This page explains how to use Node.js inside Phoenix Code extensions.

+

Debugging Extensions

+

This page provides a detailed guide on efficiently debugging your Phoenix Code extensions.

+

Publishing Themes & Extensions

+

This page provides guidelines on how to publish Themes/Extensions to Phoenix Code.

+

Available Standard Libraries

+

This page lists all the standard libraries that are available for use inside Phoenix Code.

+

API Reference

+

The API-Reference directory contains detailed reference documentation for each part of the Phoenix Code API. Each page here corresponds to different components, functions, or modules of the API, providing explanations, usage examples, and detailed parameter descriptions.

+
+

This documentation is automatically generated from the source code. To learn more about how these docs are generated, refer to this link.

+
+ + \ No newline at end of file diff --git a/api/getting-started/index.html b/api/getting-started/index.html new file mode 100644 index 00000000..ee4a0f15 --- /dev/null +++ b/api/getting-started/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/api/publishing-extensions.html b/api/publishing-extensions.html new file mode 100644 index 00000000..a241d636 --- /dev/null +++ b/api/publishing-extensions.html @@ -0,0 +1,108 @@ + + + + + +Publishing Themes & Extensions | Phoenix Code Docs + + + + + + + + + + + + + + + + + + + + + + + + + + +

Publishing Themes & Extensions

This document outlines how to publish your Extensions/Themes to Phoenix Code Extension store.

+

Publishing Extensions/Themes.

+

Extensions created from the Phoenix Code extension/theme template can be easily published from your GitHub repository to the store.

+

Follow these steps:

+
    +
  1. Increment the version field in package.json file before publishing, if needed.
  2. +
  3. Compress the extension folder into a zip file with name extension.zip.
  4. +
+
+

It is important to name the file as exactly extension.zip

+
+

Compress folder Image

+
    +
  1. +

    Create a new release in GitHub and attach the above extension.zip file in the release.

    +
      +
    1. On GitHub.com, navigate to the main page of the repository.
    2. +
    3. To the right of the list of files, click Releases.
    4. +
    +

    Github Releases Image

    +
      +
    1. Click on Draft a new release.
    2. +
    +

    Draft New Release Image

    +
      +
    1. Select choose a tag and type in your new extension version and Create new tag.
    2. +
    +

    Create New Tag

    +
      +
    1. Fill out all the remaining fields.
    2. +
    3. Drag and drop the extension.zip file to the release.
    4. +
    +

    Drag-Drop-Zip-File

    +
      +
    1. Click on Publish release button.
    2. +
    +
    +

    See Release Example: https://github.com/phcode-dev/extension-template/releases/tag/0.0.1

    +
    +
  2. +
  3. +

    You will get an issue in your issue tab regarding the publishing status of the extension/theme.

    +
    +

    See Example: https://github.com/phcode-dev/extension-template/issues/2

    +
    +
  4. +
  5. +

    If there are any errors in publishing, please visit the link in the issue to see the errors. Fix and retry publishing the release.

    +

    Publish Failed Image

    +
  6. +
  7. +

    Once published, your extension will appear in the Phoenix Code Extension Store at https://phcode.dev.

    +

    Extension Store Image

    +
  8. +
+

Publishing legacy Brackets extensions

+
+

Follow this section only for old brackets extensions.

+
+

To publish Extensions/themes that are not created from the above theme and extension template +or old Brackets extensions, please follow the steps below:

+
    +
  1. Create a GitHub repository for your extension if it is not present.
  2. +
  3. Create a file .github/workflows/publishToPhcode.yml in your repo with the following contents: https://github.com/phcode-dev/theme-template/blob/main/.github/workflows/publishToPhcode.yml
  4. +
+

That's all, you can now follow the above Publishing to the extension/theme store section.

+

FAQ

+

Why is my extension not being published?

+

Your repository must be public to be able to be published to the Phoenix Code Extension store. +See this link on understanding how to change repository visibility to public in GitHub.

+

How can I get a Verified Badge for my extension?

+

The verified extension badge(tick mark) will be automatically granted to verified GitHub Organizations.

+

How do I delete my extension from the store

+

Please raise an issue here: https://github.com/phcode-dev/phoenix/issues/new/choose, mention your extension repository.

+ + \ No newline at end of file diff --git a/api/publishing-extensions/index.html b/api/publishing-extensions/index.html new file mode 100644 index 00000000..411ce15a --- /dev/null +++ b/api/publishing-extensions/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/app-links.js b/app-links.js deleted file mode 100644 index ccb8c59e..00000000 --- a/app-links.js +++ /dev/null @@ -1,163 +0,0 @@ -/** - * @file Phoenix “App Links” redirect map for Docusaurus. - * - * Integrates with: @docusaurus/plugin-client-redirects (>= 3.7.0) - * - * WHAT THIS IS - * ------------ - * A central, stable index of URLs the Phoenix app (desktop/browser) and docs - * can safely link to as: https://docs.phcode.dev/app-links/* - * - * You can also use these entries to **predefine placeholder URLs** - * before the corresponding documentation exists — this allows wiring - * links into the Phoenix app early, while keeping URLs stable for when - * docs are added later. - * - * The idea: the `from` side never changes; you’re free to restructure docs and - * simply update the `to` target here—no broken links in the app or shared docs. - * - * DEV VS BUILD - * ------------ - * - `npm run start` (Docusaurus dev server): redirect pages are NOT generated. - * You will NOT see /app-links/* work here. - * - To verify redirects end-to-end: - * 1) `npm run build` → generates static pages for each redirect - * 2) `npm run serve` → serves the built site with working redirects - * - * SCHEMA - * ------ - * Each entry: { from: string, to: string } - * - `from` MUST be an absolute path starting with `/app-links/...` - * - `to` can be: - * • an internal path (e.g. `/docs/editing-text#line-height`) - * • a full external URL (e.g. `https://google.com`) - * - * CONVENTIONS & TIPS - * ------------------ - * - Keep all stable links under `/app-links/*` to make deprecations easy. - * - Use leading slashes for internal `to` values; include hash anchors if needed. - * - External URLs are supported; the plugin will create a client page that - * performs a redirect (meta refresh + JS). - * - * EXTERNAL REDIRECT EXAMPLE - * ------------------------- - * { - * from: '/app-links/google-search', - * to: 'https://google.com', - * } - * - * TEST CHECKLIST - * -------------- - * - After updating this file: - * - Run `npm run build` then `npm run serve` - * - Open a few /app-links/* routes and confirm they land on the right pages - */ - - -/** @type {Array<{from: string, to: string}>} */ -export const appLinks = [ - { - from: '/app-links/extn-line-height', // https://docs.phcode.dev/app-links/extn-line-height - to: '/docs/customizing-editor#line-height', // https://docs.phcode.dev/docs/customizing-editor#line-height - }, - { - from: '/app-links/live-preview', - to: '/docs/Features/Live Preview', - }, - { - from: '/app-links/keyboard-shortcuts', - to: '/docs/Features/keyboard-shortcuts', - }, - { - from: '/app-links/auto-rename-tag', - to: '/docs/editing-text#auto-rename-tag', - }, - { - from: '/app-links/indent-guide-lines', - to: '/docs/customizing-editor#indent-guide-lines', - }, - { - from: '/app-links/emmet', - to: '/docs/Features/emmet', - }, - { - from: '/app-links/git', - to: '/docs/Features/git', - }, - { - from: '/app-links/color-preview', - to: '/docs/editing-colors#color-preview', - }, - { - from: '/app-links/auto-space-detection', - to: '/docs/editing-text#auto-space-detection', - }, - { - from: '/app-links/html-lint', - to: '/docs/Features/Problems Panel/html-lint', - }, - { - from: '/app-links/ESLint', - to: '/docs/Features/Problems Panel/ESLint', - }, - { - from: '/app-links/live-preview-settings', - to: '/docs/Features/Live Preview/live-preview-settings', - }, - { - from: '/app-links/editor-rulers', - to: '/docs/customizing-editor#editor-rulers', - }, - { - from: '/app-links/find-in-files', - to: '/docs/Features/find-in-files', - }, - { - from: '/app-links/custom-snippets', - to: '/docs/Features/custom-snippets', - }, - { - from: '/app-links/edu-pro', - to: '/docs/phoenix-pro-school', - }, - { - from: '/app-links/live-preview-edit', - to: '/docs/Pro Features/live-preview-edit', - }, - { - from: '/app-links/tab-bar', - to: '/docs/file-management#tab-bar', - }, - { - from: '/app-links/claude-code-integration', - to: '/docs/Pro Features/ai-chat', - }, - { - from: '/app-links/claude-code-config', - to: '/docs/Pro Features/ai-chat', - }, - { - from: '/app-links/design-mode', - to: '/docs/design-mode', - }, - { - from: '/app-links/ai-chat', - to: '/docs/Pro Features/ai-chat', - }, - { - from: '/app-links/markdown-editor', - to: '/docs/Pro Features/markdown-editor', - }, - { - from: '/app-links/resize-ruler', - to: '/docs/Pro Features/device-preview', - }, - { - from: '/app-links/terminal', - to: '/docs/Features/terminal', - }, - { - from: '/app-links/themes', - to: '/docs/customizing-editor#themes', - } -]; diff --git a/app-links/ESLint/index.html b/app-links/ESLint/index.html new file mode 100644 index 00000000..65db2b7a --- /dev/null +++ b/app-links/ESLint/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/app-links/ai-chat/index.html b/app-links/ai-chat/index.html new file mode 100644 index 00000000..e7d71e32 --- /dev/null +++ b/app-links/ai-chat/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/app-links/auto-rename-tag/index.html b/app-links/auto-rename-tag/index.html new file mode 100644 index 00000000..d1a83ef1 --- /dev/null +++ b/app-links/auto-rename-tag/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/app-links/auto-space-detection/index.html b/app-links/auto-space-detection/index.html new file mode 100644 index 00000000..d6ddc4c0 --- /dev/null +++ b/app-links/auto-space-detection/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/app-links/claude-code-config/index.html b/app-links/claude-code-config/index.html new file mode 100644 index 00000000..e7d71e32 --- /dev/null +++ b/app-links/claude-code-config/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/app-links/claude-code-integration/index.html b/app-links/claude-code-integration/index.html new file mode 100644 index 00000000..e7d71e32 --- /dev/null +++ b/app-links/claude-code-integration/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/app-links/color-preview/index.html b/app-links/color-preview/index.html new file mode 100644 index 00000000..cc37d09d --- /dev/null +++ b/app-links/color-preview/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/app-links/custom-snippets/index.html b/app-links/custom-snippets/index.html new file mode 100644 index 00000000..ba8c747c --- /dev/null +++ b/app-links/custom-snippets/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/app-links/design-mode/index.html b/app-links/design-mode/index.html new file mode 100644 index 00000000..2f27f055 --- /dev/null +++ b/app-links/design-mode/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/app-links/editor-rulers/index.html b/app-links/editor-rulers/index.html new file mode 100644 index 00000000..2834b188 --- /dev/null +++ b/app-links/editor-rulers/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/app-links/edu-pro/index.html b/app-links/edu-pro/index.html new file mode 100644 index 00000000..be5eed85 --- /dev/null +++ b/app-links/edu-pro/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/app-links/emmet/index.html b/app-links/emmet/index.html new file mode 100644 index 00000000..51bdc823 --- /dev/null +++ b/app-links/emmet/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/app-links/extn-line-height/index.html b/app-links/extn-line-height/index.html new file mode 100644 index 00000000..ad731983 --- /dev/null +++ b/app-links/extn-line-height/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/app-links/find-in-files/index.html b/app-links/find-in-files/index.html new file mode 100644 index 00000000..9e810b52 --- /dev/null +++ b/app-links/find-in-files/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/app-links/git/index.html b/app-links/git/index.html new file mode 100644 index 00000000..72d05f80 --- /dev/null +++ b/app-links/git/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/app-links/html-lint/index.html b/app-links/html-lint/index.html new file mode 100644 index 00000000..1614c61e --- /dev/null +++ b/app-links/html-lint/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/app-links/indent-guide-lines/index.html b/app-links/indent-guide-lines/index.html new file mode 100644 index 00000000..bd1795d9 --- /dev/null +++ b/app-links/indent-guide-lines/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/app-links/keyboard-shortcuts/index.html b/app-links/keyboard-shortcuts/index.html new file mode 100644 index 00000000..0e0b272a --- /dev/null +++ b/app-links/keyboard-shortcuts/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/app-links/live-preview-edit/index.html b/app-links/live-preview-edit/index.html new file mode 100644 index 00000000..b58f6e30 --- /dev/null +++ b/app-links/live-preview-edit/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/app-links/live-preview-settings/index.html b/app-links/live-preview-settings/index.html new file mode 100644 index 00000000..d318b6df --- /dev/null +++ b/app-links/live-preview-settings/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/app-links/live-preview/index.html b/app-links/live-preview/index.html new file mode 100644 index 00000000..761c43c5 --- /dev/null +++ b/app-links/live-preview/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/app-links/markdown-editor/index.html b/app-links/markdown-editor/index.html new file mode 100644 index 00000000..c8eaf550 --- /dev/null +++ b/app-links/markdown-editor/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/app-links/resize-ruler/index.html b/app-links/resize-ruler/index.html new file mode 100644 index 00000000..2b3f2e48 --- /dev/null +++ b/app-links/resize-ruler/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/app-links/tab-bar/index.html b/app-links/tab-bar/index.html new file mode 100644 index 00000000..07194db0 --- /dev/null +++ b/app-links/tab-bar/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/app-links/terminal/index.html b/app-links/terminal/index.html new file mode 100644 index 00000000..a83d609b --- /dev/null +++ b/app-links/terminal/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/app-links/themes/index.html b/app-links/themes/index.html new file mode 100644 index 00000000..141e38bb --- /dev/null +++ b/app-links/themes/index.html @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/assets/css/styles.3c4d133b.css b/assets/css/styles.3c4d133b.css new file mode 100644 index 00000000..c5d8dc59 --- /dev/null +++ b/assets/css/styles.3c4d133b.css @@ -0,0 +1 @@ +.col,.container{padding:0 var(--ifm-spacing-horizontal);width:100%}.markdown>h2,.markdown>h3,.markdown>h4,.markdown>h5,.markdown>h6{margin-bottom:calc(var(--ifm-heading-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown li,body{word-wrap:break-word}body,ol ol,ol ul,ul ol,ul ul{margin:0}pre,table{overflow:auto}blockquote,pre{margin:0 0 var(--ifm-spacing-vertical)}.breadcrumbs__link,.button{transition-timing-function:var(--ifm-transition-timing-default)}.button,code{vertical-align:middle}.button--outline.button--active,.button--outline:active,.button--outline:hover,:root{--ifm-button-color:var(--ifm-font-color-base-inverse)}.avatar__photo,.card,.text--truncate{overflow:hidden}.menu__link:hover,a{transition:color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.navbar--dark,:root{--ifm-navbar-link-hover-color:var(--ifm-color-primary)}.menu,.navbar-sidebar{overflow-x:hidden}:root,html[data-theme=dark]{--ifm-color-emphasis-500:var(--ifm-color-gray-500);--docsearch-error-color:#ef5350;--shimmer-bg:linear-gradient(90deg,#e0e3e8 0%,var(--docsearch-muted-color) 20%,var(--docsearch-muted-color) 60%,#e0e3e8 95%);--docsearch-dropdown-menu-background:var(--docsearch-hit-background);--docsearch-dropdown-menu-item-hover-background:var(--docsearch-modal-background)}*,.DocSearch-Container,.DocSearch-Container *{box-sizing:border-box}.DocSearch-Hit-AskAIButton-title,.DocSearch-Hit-AskAIButton-title-query,.DocSearch-Hit-content-wrapper,.text--truncate{text-overflow:ellipsis;white-space:nowrap}.DocSearch-Footer,.DocSearch-Markdown-Content hr{border-block-start:1px solid var(--docsearch-subtle-color)}.toggleButton_gllP,html{-webkit-tap-highlight-color:transparent}:root{--ifm-color-scheme:light;--ifm-dark-value:10%;--ifm-darker-value:15%;--ifm-darkest-value:30%;--ifm-light-value:15%;--ifm-lighter-value:30%;--ifm-lightest-value:50%;--ifm-contrast-background-value:90%;--ifm-contrast-foreground-value:70%;--ifm-contrast-background-dark-value:70%;--ifm-contrast-foreground-dark-value:90%;--ifm-color-primary:#3578e5;--ifm-color-secondary:#ebedf0;--ifm-color-success:#00a400;--ifm-color-info:#54c7ec;--ifm-color-warning:#ffba00;--ifm-color-danger:#fa383e;--ifm-color-primary-dark:#306cce;--ifm-color-primary-darker:#2d66c3;--ifm-color-primary-darkest:#2554a0;--ifm-color-primary-light:#538ce9;--ifm-color-primary-lighter:#72a1ed;--ifm-color-primary-lightest:#9abcf2;--ifm-color-primary-contrast-background:#ebf2fc;--ifm-color-primary-contrast-foreground:#102445;--ifm-color-secondary-dark:#d4d5d8;--ifm-color-secondary-darker:#c8c9cc;--ifm-color-secondary-darkest:#a4a6a8;--ifm-color-secondary-light:#eef0f2;--ifm-color-secondary-lighter:#f1f2f5;--ifm-color-secondary-lightest:#f5f6f8;--ifm-color-secondary-contrast-background:#fdfdfe;--ifm-color-secondary-contrast-foreground:#474748;--ifm-color-success-dark:#009400;--ifm-color-success-darker:#008b00;--ifm-color-success-darkest:#007300;--ifm-color-success-light:#26b226;--ifm-color-success-lighter:#4dbf4d;--ifm-color-success-lightest:#80d280;--ifm-color-success-contrast-background:#e6f6e6;--ifm-color-success-contrast-foreground:#003100;--ifm-color-info-dark:#4cb3d4;--ifm-color-info-darker:#47a9c9;--ifm-color-info-darkest:#3b8ba5;--ifm-color-info-light:#6ecfef;--ifm-color-info-lighter:#87d8f2;--ifm-color-info-lightest:#aae3f6;--ifm-color-info-contrast-background:#eef9fd;--ifm-color-info-contrast-foreground:#193c47;--ifm-color-warning-dark:#e6a700;--ifm-color-warning-darker:#d99e00;--ifm-color-warning-darkest:#b38200;--ifm-color-warning-light:#ffc426;--ifm-color-warning-lighter:#ffcf4d;--ifm-color-warning-lightest:#ffdd80;--ifm-color-warning-contrast-background:#fff8e6;--ifm-color-warning-contrast-foreground:#4d3800;--ifm-color-danger-dark:#e13238;--ifm-color-danger-darker:#d53035;--ifm-color-danger-darkest:#af272b;--ifm-color-danger-light:#fb565b;--ifm-color-danger-lighter:#fb7478;--ifm-color-danger-lightest:#fd9c9f;--ifm-color-danger-contrast-background:#ffebec;--ifm-color-danger-contrast-foreground:#4b1113;--ifm-color-white:#fff;--ifm-color-black:#000;--ifm-color-gray-0:var(--ifm-color-white);--ifm-color-gray-100:#f5f6f7;--ifm-color-gray-200:#ebedf0;--ifm-color-gray-300:#dadde1;--ifm-color-gray-400:#ccd0d5;--ifm-color-gray-500:#bec3c9;--ifm-color-gray-600:#8d949e;--ifm-color-gray-700:#606770;--ifm-color-gray-800:#444950;--ifm-color-gray-900:#1c1e21;--ifm-color-gray-1000:var(--ifm-color-black);--ifm-color-emphasis-0:var(--ifm-color-gray-0);--ifm-color-emphasis-100:var(--ifm-color-gray-100);--ifm-color-emphasis-200:var(--ifm-color-gray-200);--ifm-color-emphasis-300:var(--ifm-color-gray-300);--ifm-color-emphasis-400:var(--ifm-color-gray-400);--ifm-color-emphasis-600:var(--ifm-color-gray-600);--ifm-color-emphasis-700:var(--ifm-color-gray-700);--ifm-color-emphasis-800:var(--ifm-color-gray-800);--ifm-color-emphasis-900:var(--ifm-color-gray-900);--ifm-color-emphasis-1000:var(--ifm-color-gray-1000);--ifm-color-content:var(--ifm-color-emphasis-900);--ifm-color-content-inverse:var(--ifm-color-emphasis-0);--ifm-color-content-secondary:#525860;--ifm-background-color:#0000;--ifm-background-surface-color:var(--ifm-color-content-inverse);--ifm-global-border-width:1px;--ifm-global-radius:0.4rem;--ifm-hover-overlay:#0000000d;--ifm-font-color-base:var(--ifm-color-content);--ifm-font-color-base-inverse:var(--ifm-color-content-inverse);--ifm-font-color-secondary:var(--ifm-color-content-secondary);--ifm-font-family-base:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--ifm-font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--ifm-font-size-base:100%;--ifm-font-weight-light:300;--ifm-font-weight-normal:400;--ifm-font-weight-semibold:500;--ifm-font-weight-bold:700;--ifm-font-weight-base:var(--ifm-font-weight-normal);--ifm-line-height-base:1.65;--ifm-global-spacing:1rem;--ifm-spacing-vertical:var(--ifm-global-spacing);--ifm-spacing-horizontal:var(--ifm-global-spacing);--ifm-transition-fast:200ms;--ifm-transition-slow:400ms;--ifm-transition-timing-default:cubic-bezier(0.08,0.52,0.52,1);--ifm-global-shadow-lw:0 1px 2px 0 #0000001a;--ifm-global-shadow-md:0 5px 40px #0003;--ifm-global-shadow-tl:0 12px 28px 0 #0003,0 2px 4px 0 #0000001a;--ifm-z-index-dropdown:100;--ifm-z-index-fixed:200;--ifm-z-index-overlay:400;--ifm-container-width:1140px;--ifm-container-width-xl:1320px;--ifm-code-background:#f6f7f8;--ifm-code-border-radius:var(--ifm-global-radius);--ifm-code-font-size:90%;--ifm-code-padding-horizontal:0.1rem;--ifm-code-padding-vertical:0.1rem;--ifm-pre-background:var(--ifm-code-background);--ifm-pre-border-radius:var(--ifm-code-border-radius);--ifm-pre-color:inherit;--ifm-pre-line-height:1.45;--ifm-pre-padding:1rem;--ifm-heading-color:inherit;--ifm-heading-margin-top:0;--ifm-heading-margin-bottom:var(--ifm-spacing-vertical);--ifm-heading-font-family:var(--ifm-font-family-base);--ifm-heading-font-weight:var(--ifm-font-weight-bold);--ifm-heading-line-height:1.25;--ifm-h1-font-size:2rem;--ifm-h2-font-size:1.5rem;--ifm-h3-font-size:1.25rem;--ifm-h4-font-size:1rem;--ifm-h5-font-size:0.875rem;--ifm-h6-font-size:0.85rem;--ifm-image-alignment-padding:1.25rem;--ifm-leading-desktop:1.25;--ifm-leading:calc(var(--ifm-leading-desktop)*1rem);--ifm-list-left-padding:2rem;--ifm-list-margin:1rem;--ifm-list-item-margin:0.25rem;--ifm-list-paragraph-margin:1rem;--ifm-table-cell-padding:0.75rem;--ifm-table-background:#0000;--ifm-table-stripe-background:#00000008;--ifm-table-border-width:1px;--ifm-table-border-color:var(--ifm-color-emphasis-300);--ifm-table-head-background:inherit;--ifm-table-head-color:inherit;--ifm-table-head-font-weight:var(--ifm-font-weight-bold);--ifm-table-cell-color:inherit;--ifm-link-color:var(--ifm-color-primary);--ifm-link-decoration:none;--ifm-link-hover-color:var(--ifm-link-color);--ifm-link-hover-decoration:underline;--ifm-paragraph-margin-bottom:var(--ifm-leading);--ifm-blockquote-font-size:var(--ifm-font-size-base);--ifm-blockquote-border-left-width:2px;--ifm-blockquote-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-blockquote-padding-vertical:0;--ifm-blockquote-shadow:none;--ifm-blockquote-color:var(--ifm-color-emphasis-800);--ifm-blockquote-border-color:var(--ifm-color-emphasis-300);--ifm-hr-background-color:var(--ifm-color-emphasis-500);--ifm-hr-height:1px;--ifm-hr-margin-vertical:1.5rem;--ifm-scrollbar-size:7px;--ifm-scrollbar-track-background-color:#f1f1f1;--ifm-scrollbar-thumb-background-color:silver;--ifm-scrollbar-thumb-hover-background-color:#a7a7a7;--ifm-alert-background-color:inherit;--ifm-alert-border-color:inherit;--ifm-alert-border-radius:var(--ifm-global-radius);--ifm-alert-border-width:0px;--ifm-alert-border-left-width:5px;--ifm-alert-color:var(--ifm-font-color-base);--ifm-alert-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-alert-padding-vertical:var(--ifm-spacing-vertical);--ifm-alert-shadow:var(--ifm-global-shadow-lw);--ifm-avatar-intro-margin:1rem;--ifm-avatar-intro-alignment:inherit;--ifm-avatar-photo-size:3rem;--ifm-badge-background-color:inherit;--ifm-badge-border-color:inherit;--ifm-badge-border-radius:var(--ifm-global-radius);--ifm-badge-border-width:var(--ifm-global-border-width);--ifm-badge-color:var(--ifm-color-white);--ifm-badge-padding-horizontal:calc(var(--ifm-spacing-horizontal)*0.5);--ifm-badge-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-breadcrumb-border-radius:1.5rem;--ifm-breadcrumb-spacing:0.5rem;--ifm-breadcrumb-color-active:var(--ifm-color-primary);--ifm-breadcrumb-item-background-active:var(--ifm-hover-overlay);--ifm-breadcrumb-padding-horizontal:0.8rem;--ifm-breadcrumb-padding-vertical:0.4rem;--ifm-breadcrumb-size-multiplier:1;--ifm-breadcrumb-separator:url('data:image/svg+xml;utf8,');--ifm-breadcrumb-separator-filter:none;--ifm-breadcrumb-separator-size:0.5rem;--ifm-breadcrumb-separator-size-multiplier:1.25;--ifm-button-background-color:inherit;--ifm-button-border-color:var(--ifm-button-background-color);--ifm-button-border-width:var(--ifm-global-border-width);--ifm-button-font-weight:var(--ifm-font-weight-bold);--ifm-button-padding-horizontal:1.5rem;--ifm-button-padding-vertical:0.375rem;--ifm-button-size-multiplier:1;--ifm-button-transition-duration:var(--ifm-transition-fast);--ifm-button-border-radius:calc(var(--ifm-global-radius)*var(--ifm-button-size-multiplier));--ifm-button-group-spacing:2px;--ifm-card-background-color:var(--ifm-background-surface-color);--ifm-card-border-radius:calc(var(--ifm-global-radius)*2);--ifm-card-horizontal-spacing:var(--ifm-global-spacing);--ifm-card-vertical-spacing:var(--ifm-global-spacing);--ifm-toc-border-color:var(--ifm-color-emphasis-300);--ifm-toc-link-color:var(--ifm-color-content-secondary);--ifm-toc-padding-vertical:0.5rem;--ifm-toc-padding-horizontal:0.5rem;--ifm-dropdown-background-color:var(--ifm-background-surface-color);--ifm-dropdown-font-weight:var(--ifm-font-weight-semibold);--ifm-dropdown-link-color:var(--ifm-font-color-base);--ifm-dropdown-hover-background-color:var(--ifm-hover-overlay);--ifm-footer-background-color:var(--ifm-color-emphasis-100);--ifm-footer-color:inherit;--ifm-footer-link-color:var(--ifm-color-emphasis-700);--ifm-footer-link-hover-color:var(--ifm-color-primary);--ifm-footer-link-horizontal-spacing:0.5rem;--ifm-footer-padding-horizontal:calc(var(--ifm-spacing-horizontal)*2);--ifm-footer-padding-vertical:calc(var(--ifm-spacing-vertical)*2);--ifm-footer-title-color:inherit;--ifm-footer-logo-max-width:min(30rem,90vw);--ifm-hero-background-color:var(--ifm-background-surface-color);--ifm-hero-text-color:var(--ifm-color-emphasis-800);--ifm-menu-color:var(--ifm-color-emphasis-700);--ifm-menu-color-active:var(--ifm-color-primary);--ifm-menu-color-background-active:var(--ifm-hover-overlay);--ifm-menu-color-background-hover:var(--ifm-hover-overlay);--ifm-menu-link-padding-horizontal:0.75rem;--ifm-menu-link-padding-vertical:0.375rem;--ifm-menu-link-sublist-icon:url('data:image/svg+xml;utf8,');--ifm-menu-link-sublist-icon-filter:none;--ifm-navbar-background-color:var(--ifm-background-surface-color);--ifm-navbar-height:3.75rem;--ifm-navbar-item-padding-horizontal:0.75rem;--ifm-navbar-item-padding-vertical:0.25rem;--ifm-navbar-link-color:var(--ifm-font-color-base);--ifm-navbar-link-active-color:var(--ifm-link-color);--ifm-navbar-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-navbar-padding-vertical:calc(var(--ifm-spacing-vertical)*0.5);--ifm-navbar-shadow:var(--ifm-global-shadow-lw);--ifm-navbar-search-input-background-color:var(--ifm-color-emphasis-200);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-800);--ifm-navbar-search-input-placeholder-color:var(--ifm-color-emphasis-500);--ifm-navbar-search-input-icon:url('data:image/svg+xml;utf8,');--ifm-navbar-sidebar-width:83vw;--ifm-pagination-border-radius:var(--ifm-global-radius);--ifm-pagination-color-active:var(--ifm-color-primary);--ifm-pagination-font-size:1rem;--ifm-pagination-item-active-background:var(--ifm-hover-overlay);--ifm-pagination-page-spacing:0.2em;--ifm-pagination-padding-horizontal:calc(var(--ifm-spacing-horizontal)*1);--ifm-pagination-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-pagination-nav-border-radius:var(--ifm-global-radius);--ifm-pagination-nav-color-hover:var(--ifm-color-primary);--ifm-pills-color-active:var(--ifm-color-primary);--ifm-pills-color-background-active:var(--ifm-hover-overlay);--ifm-pills-spacing:0.125rem;--ifm-tabs-color:var(--ifm-font-color-secondary);--ifm-tabs-color-active:var(--ifm-color-primary);--ifm-tabs-color-active-border:var(--ifm-tabs-color-active);--ifm-tabs-padding-horizontal:1rem;--ifm-tabs-padding-vertical:1rem;--docusaurus-progress-bar-color:var(--ifm-color-primary)}.badge--danger,.badge--info,.badge--primary,.badge--secondary,.badge--success,.badge--warning{--ifm-badge-border-color:var(--ifm-badge-background-color)}.button--link,.button--outline{--ifm-button-background-color:#0000}html{background-color:var(--ifm-background-color);color:var(--ifm-font-color-base);color-scheme:var(--ifm-color-scheme);font:var(--ifm-font-size-base)/var(--ifm-line-height-base) var(--ifm-font-family-base);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;-webkit-text-size-adjust:100%;text-size-adjust:100%}iframe{border:0;color-scheme:auto}.container{margin:0 auto;max-width:var(--ifm-container-width)}.container--fluid{max-width:inherit}.row{display:flex;flex-wrap:wrap;margin:0 calc(var(--ifm-spacing-horizontal)*-1)}.margin-bottom--none,.margin-vert--none,.markdown>:last-child{margin-bottom:0!important}.margin-top--none,.margin-vert--none,.tabItem_LNqP{margin-top:0!important}.row--no-gutters{margin-left:0;margin-right:0}.margin-horiz--none,.margin-right--none{margin-right:0!important}.row--no-gutters>.col{padding-left:0;padding-right:0}.row--align-top{align-items:flex-start}.row--align-bottom{align-items:flex-end}.menuExternalLink_NmtK,.row--align-center{align-items:center}.row--align-stretch{align-items:stretch}.row--align-baseline{align-items:baseline}.col{--ifm-col-width:100%;flex:1 0;margin-left:0;max-width:var(--ifm-col-width)}.padding-bottom--none,.padding-vert--none{padding-bottom:0!important}.padding-top--none,.padding-vert--none{padding-top:0!important}.padding-horiz--none,.padding-left--none{padding-left:0!important}.padding-horiz--none,.padding-right--none{padding-right:0!important}.col[class*=col--]{flex:0 0 var(--ifm-col-width)}.col--1{--ifm-col-width:8.33333%}.col--offset-1{margin-left:8.33333%}.col--2{--ifm-col-width:16.66667%}.col--offset-2{margin-left:16.66667%}.col--3{--ifm-col-width:25%}.col--offset-3{margin-left:25%}.col--4{--ifm-col-width:33.33333%}.col--offset-4{margin-left:33.33333%}.col--5{--ifm-col-width:41.66667%}.col--offset-5{margin-left:41.66667%}.col--6{--ifm-col-width:50%}.col--offset-6{margin-left:50%}.col--7{--ifm-col-width:58.33333%}.col--offset-7{margin-left:58.33333%}.col--8{--ifm-col-width:66.66667%}.col--offset-8{margin-left:66.66667%}.col--9{--ifm-col-width:75%}.col--offset-9{margin-left:75%}.col--10{--ifm-col-width:83.33333%}.col--offset-10{margin-left:83.33333%}.col--11{--ifm-col-width:91.66667%}.col--offset-11{margin-left:91.66667%}.col--12{--ifm-col-width:100%}.col--offset-12{margin-left:100%}.margin-horiz--none,.margin-left--none{margin-left:0!important}.margin--none{margin:0!important}.margin-bottom--xs,.margin-vert--xs{margin-bottom:.25rem!important}.margin-top--xs,.margin-vert--xs{margin-top:.25rem!important}.margin-horiz--xs,.margin-left--xs{margin-left:.25rem!important}.margin-horiz--xs,.margin-right--xs{margin-right:.25rem!important}.margin--xs{margin:.25rem!important}.margin-bottom--sm,.margin-vert--sm{margin-bottom:.5rem!important}.margin-top--sm,.margin-vert--sm{margin-top:.5rem!important}.margin-horiz--sm,.margin-left--sm{margin-left:.5rem!important}.margin-horiz--sm,.margin-right--sm{margin-right:.5rem!important}.margin--sm{margin:.5rem!important}.margin-bottom--md,.margin-vert--md{margin-bottom:1rem!important}.margin-top--md,.margin-vert--md{margin-top:1rem!important}.margin-horiz--md,.margin-left--md{margin-left:1rem!important}.margin-horiz--md,.margin-right--md{margin-right:1rem!important}.margin--md{margin:1rem!important}.margin-bottom--lg,.margin-vert--lg{margin-bottom:2rem!important}.margin-top--lg,.margin-vert--lg{margin-top:2rem!important}.margin-horiz--lg,.margin-left--lg{margin-left:2rem!important}.margin-horiz--lg,.margin-right--lg{margin-right:2rem!important}.margin--lg{margin:2rem!important}.margin-bottom--xl,.margin-vert--xl{margin-bottom:5rem!important}.margin-top--xl,.margin-vert--xl{margin-top:5rem!important}.margin-horiz--xl,.margin-left--xl{margin-left:5rem!important}.margin-horiz--xl,.margin-right--xl{margin-right:5rem!important}.margin--xl{margin:5rem!important}.padding--none{padding:0!important}.padding-bottom--xs,.padding-vert--xs{padding-bottom:.25rem!important}.padding-top--xs,.padding-vert--xs{padding-top:.25rem!important}.padding-horiz--xs,.padding-left--xs{padding-left:.25rem!important}.padding-horiz--xs,.padding-right--xs{padding-right:.25rem!important}.padding--xs{padding:.25rem!important}.padding-bottom--sm,.padding-vert--sm{padding-bottom:.5rem!important}.padding-top--sm,.padding-vert--sm{padding-top:.5rem!important}.padding-horiz--sm,.padding-left--sm{padding-left:.5rem!important}.padding-horiz--sm,.padding-right--sm{padding-right:.5rem!important}.padding--sm{padding:.5rem!important}.padding-bottom--md,.padding-vert--md{padding-bottom:1rem!important}.padding-top--md,.padding-vert--md{padding-top:1rem!important}.padding-horiz--md,.padding-left--md{padding-left:1rem!important}.padding-horiz--md,.padding-right--md{padding-right:1rem!important}.padding--md{padding:1rem!important}.padding-bottom--lg,.padding-vert--lg{padding-bottom:2rem!important}.padding-top--lg,.padding-vert--lg{padding-top:2rem!important}.padding-horiz--lg,.padding-left--lg{padding-left:2rem!important}.padding-horiz--lg,.padding-right--lg{padding-right:2rem!important}.padding--lg{padding:2rem!important}.padding-bottom--xl,.padding-vert--xl{padding-bottom:5rem!important}.padding-top--xl,.padding-vert--xl{padding-top:5rem!important}.padding-horiz--xl,.padding-left--xl{padding-left:5rem!important}.padding-horiz--xl,.padding-right--xl{padding-right:5rem!important}.padding--xl{padding:5rem!important}code{background-color:var(--ifm-code-background);border:.1rem solid #0000001a;border-radius:var(--ifm-code-border-radius);font-family:var(--ifm-font-family-monospace);font-size:var(--ifm-code-font-size);padding:var(--ifm-code-padding-vertical) var(--ifm-code-padding-horizontal)}a code{color:inherit}pre{background-color:var(--ifm-pre-background);border-radius:var(--ifm-pre-border-radius);color:var(--ifm-pre-color);font:var(--ifm-code-font-size)/var(--ifm-pre-line-height) var(--ifm-font-family-monospace);padding:var(--ifm-pre-padding)}pre code{background-color:initial;border:none;font-size:100%;line-height:inherit;padding:0}kbd{background-color:var(--ifm-color-emphasis-0);border:1px solid var(--ifm-color-emphasis-400);border-radius:.2rem;box-shadow:inset 0 -1px 0 var(--ifm-color-emphasis-400);color:var(--ifm-color-emphasis-800);font:80% var(--ifm-font-family-monospace);padding:.15rem .3rem}h1,h2,h3,h4,h5,h6{color:var(--ifm-heading-color);font-family:var(--ifm-heading-font-family);font-weight:var(--ifm-heading-font-weight);line-height:var(--ifm-heading-line-height);margin:var(--ifm-heading-margin-top) 0 var(--ifm-heading-margin-bottom) 0}h1{font-size:var(--ifm-h1-font-size)}h2{font-size:var(--ifm-h2-font-size)}h3{font-size:var(--ifm-h3-font-size)}h4{font-size:var(--ifm-h4-font-size)}h5{font-size:var(--ifm-h5-font-size)}h6{font-size:var(--ifm-h6-font-size)}.container_lyt7,.container_lyt7>svg,img{max-width:100%}img[align=right]{padding-left:var(--image-alignment-padding)}img[align=left]{padding-right:var(--image-alignment-padding)}.markdown{--ifm-h1-vertical-rhythm-top:3;--ifm-h2-vertical-rhythm-top:2;--ifm-h3-vertical-rhythm-top:1.5;--ifm-heading-vertical-rhythm-top:1.25;--ifm-h1-vertical-rhythm-bottom:1.25;--ifm-heading-vertical-rhythm-bottom:1}.markdown:after,.markdown:before{content:"";display:table}.markdown:after{clear:both}.markdown h1:first-child{--ifm-h1-font-size:3rem;margin-bottom:calc(var(--ifm-h1-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown>h2{--ifm-h2-font-size:2rem;margin-top:calc(var(--ifm-h2-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h3{--ifm-h3-font-size:1.5rem;margin-top:calc(var(--ifm-h3-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h4,.markdown>h5,.markdown>h6{margin-top:calc(var(--ifm-heading-vertical-rhythm-top)*var(--ifm-leading))}.markdown>p,.markdown>pre,.markdown>ul,.tabList__CuJ{margin-bottom:var(--ifm-leading)}.markdown li>p{margin-top:var(--ifm-list-paragraph-margin)}.markdown li+li{margin-top:var(--ifm-list-item-margin)}ol,ul{margin:0 0 var(--ifm-list-margin);padding-left:var(--ifm-list-left-padding)}ol ol,ul ol{list-style-type:lower-roman}ol ol ol,ol ul ol,ul ol ol,ul ul ol{list-style-type:lower-alpha}table{border-collapse:collapse;display:block;margin-bottom:var(--ifm-spacing-vertical)}table thead tr{border-bottom:2px solid var(--ifm-table-border-color)}table thead,table tr:nth-child(2n){background-color:var(--ifm-table-stripe-background)}table tr{background-color:var(--ifm-table-background);border-top:var(--ifm-table-border-width) solid var(--ifm-table-border-color)}table td,table th{border:var(--ifm-table-border-width) solid var(--ifm-table-border-color);padding:var(--ifm-table-cell-padding)}table th{background-color:var(--ifm-table-head-background);color:var(--ifm-table-head-color);font-weight:var(--ifm-table-head-font-weight)}table td{color:var(--ifm-table-cell-color)}strong{font-weight:var(--ifm-font-weight-bold)}a{color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}a:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button:hover,.text--no-decoration,.text--no-decoration:hover,a:not([href]){-webkit-text-decoration:none;text-decoration:none}p{margin:0 0 var(--ifm-paragraph-margin-bottom)}blockquote{border-left:var(--ifm-blockquote-border-left-width) solid var(--ifm-blockquote-border-color);box-shadow:var(--ifm-blockquote-shadow);color:var(--ifm-blockquote-color);font-size:var(--ifm-blockquote-font-size);padding:var(--ifm-blockquote-padding-vertical) var(--ifm-blockquote-padding-horizontal)}blockquote>:first-child{margin-top:0}blockquote>:last-child{margin-bottom:0}hr{background-color:var(--ifm-hr-background-color);border:0;height:var(--ifm-hr-height);margin:var(--ifm-hr-margin-vertical) 0}.shadow--lw{box-shadow:var(--ifm-global-shadow-lw)!important}.shadow--md{box-shadow:var(--ifm-global-shadow-md)!important}.shadow--tl{box-shadow:var(--ifm-global-shadow-tl)!important}.text--primary,.wordWrapButtonEnabled_uzNF .wordWrapButtonIcon_b1P5{color:var(--ifm-color-primary)}.text--secondary{color:var(--ifm-color-secondary)}.text--success{color:var(--ifm-color-success)}.text--info{color:var(--ifm-color-info)}.text--warning{color:var(--ifm-color-warning)}.text--danger{color:var(--ifm-color-danger)}.text--center{text-align:center}.text--left{text-align:left}.text--justify{text-align:justify}.text--right{text-align:right}.text--capitalize{text-transform:capitalize}.text--lowercase{text-transform:lowercase}.DocSearch-Escape-Key,.admonitionHeading_Gvgb,.alert__heading,.playgroundHeader_EIHj,.text--uppercase{text-transform:uppercase}.text--light{font-weight:var(--ifm-font-weight-light)}.text--normal{font-weight:var(--ifm-font-weight-normal)}.text--semibold{font-weight:var(--ifm-font-weight-semibold)}.text--bold{font-weight:var(--ifm-font-weight-bold)}.text--italic{font-style:italic}.text--break{word-wrap:break-word!important;word-break:break-word!important}.clean-btn{background:none;border:none;color:inherit;cursor:pointer;font-family:inherit;padding:0}.alert,.alert .close{color:var(--ifm-alert-foreground-color)}.clean-list{list-style:none;padding-left:0}.alert--primary{--ifm-alert-background-color:var(--ifm-color-primary-contrast-background);--ifm-alert-background-color-highlight:#3578e526;--ifm-alert-foreground-color:var(--ifm-color-primary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-primary-dark)}.alert--secondary{--ifm-alert-background-color:var(--ifm-color-secondary-contrast-background);--ifm-alert-background-color-highlight:#ebedf026;--ifm-alert-foreground-color:var(--ifm-color-secondary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-secondary-dark)}.alert--success{--ifm-alert-background-color:var(--ifm-color-success-contrast-background);--ifm-alert-background-color-highlight:#00a40026;--ifm-alert-foreground-color:var(--ifm-color-success-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-success-dark)}.alert--info{--ifm-alert-background-color:var(--ifm-color-info-contrast-background);--ifm-alert-background-color-highlight:#54c7ec26;--ifm-alert-foreground-color:var(--ifm-color-info-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-info-dark)}.alert--warning{--ifm-alert-background-color:var(--ifm-color-warning-contrast-background);--ifm-alert-background-color-highlight:#ffba0026;--ifm-alert-foreground-color:var(--ifm-color-warning-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-warning-dark)}.alert--danger{--ifm-alert-background-color:var(--ifm-color-danger-contrast-background);--ifm-alert-background-color-highlight:#fa383e26;--ifm-alert-foreground-color:var(--ifm-color-danger-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-danger-dark)}.alert{--ifm-code-background:var(--ifm-alert-background-color-highlight);--ifm-link-color:var(--ifm-alert-foreground-color);--ifm-link-hover-color:var(--ifm-alert-foreground-color);--ifm-link-decoration:underline;--ifm-tabs-color:var(--ifm-alert-foreground-color);--ifm-tabs-color-active:var(--ifm-alert-foreground-color);--ifm-tabs-color-active-border:var(--ifm-alert-border-color);background-color:var(--ifm-alert-background-color);border:var(--ifm-alert-border-width) solid var(--ifm-alert-border-color);border-left-width:var(--ifm-alert-border-left-width);border-radius:var(--ifm-alert-border-radius);box-shadow:var(--ifm-alert-shadow);padding:var(--ifm-alert-padding-vertical) var(--ifm-alert-padding-horizontal)}.alert__heading{align-items:center;display:flex;font:700 var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);margin-bottom:.5rem}.alert__icon{display:inline-flex;margin-right:.4em}.alert__icon svg{fill:var(--ifm-alert-foreground-color);stroke:var(--ifm-alert-foreground-color);stroke-width:0}.alert .close{margin:calc(var(--ifm-alert-padding-vertical)*-1) calc(var(--ifm-alert-padding-horizontal)*-1) 0 0;opacity:.75}.alert .close:focus,.alert .close:hover{opacity:1}.alert a{text-decoration-color:var(--ifm-alert-border-color)}.alert a:hover{text-decoration-thickness:2px}.avatar{column-gap:var(--ifm-avatar-intro-margin);display:flex}.avatar__photo{border-radius:50%;display:block;height:var(--ifm-avatar-photo-size);width:var(--ifm-avatar-photo-size)}.card--full-height,.navbar__logo img{height:100%}.avatar__photo--sm{--ifm-avatar-photo-size:2rem}.avatar__photo--lg{--ifm-avatar-photo-size:4rem}.avatar__photo--xl{--ifm-avatar-photo-size:6rem}.avatar__intro{display:flex;flex:1 1;flex-direction:column;justify-content:center;text-align:var(--ifm-avatar-intro-alignment)}.badge,.breadcrumbs__item,.breadcrumbs__link,.button,.dropdown>.navbar__link:after{display:inline-block}.avatar__name{font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base)}.avatar__subtitle{margin-top:.25rem}.avatar--vertical{--ifm-avatar-intro-alignment:center;--ifm-avatar-intro-margin:0.5rem;align-items:center;flex-direction:column}.badge{background-color:var(--ifm-badge-background-color);border:var(--ifm-badge-border-width) solid var(--ifm-badge-border-color);border-radius:var(--ifm-badge-border-radius);color:var(--ifm-badge-color);font-size:75%;font-weight:var(--ifm-font-weight-bold);line-height:1;padding:var(--ifm-badge-padding-vertical) var(--ifm-badge-padding-horizontal)}.badge--primary{--ifm-badge-background-color:var(--ifm-color-primary)}.badge--secondary{--ifm-badge-background-color:var(--ifm-color-secondary);color:var(--ifm-color-black)}.breadcrumbs__link,.button.button--secondary.button--outline:not(.button--active):not(:hover){color:var(--ifm-font-color-base)}.badge--success{--ifm-badge-background-color:var(--ifm-color-success)}.badge--info{--ifm-badge-background-color:var(--ifm-color-info)}.badge--warning{--ifm-badge-background-color:var(--ifm-color-warning)}.badge--danger{--ifm-badge-background-color:var(--ifm-color-danger)}.breadcrumbs{margin-bottom:0;padding-left:0}.breadcrumbs__item:not(:last-child):after{background:var(--ifm-breadcrumb-separator) center;content:" ";display:inline-block;filter:var(--ifm-breadcrumb-separator-filter);height:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier));margin:0 var(--ifm-breadcrumb-spacing);opacity:.5;width:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier))}.breadcrumbs__item--active .breadcrumbs__link{background:var(--ifm-breadcrumb-item-background-active);color:var(--ifm-breadcrumb-color-active)}.breadcrumbs__link{border-radius:var(--ifm-breadcrumb-border-radius);font-size:calc(1rem*var(--ifm-breadcrumb-size-multiplier));padding:calc(var(--ifm-breadcrumb-padding-vertical)*var(--ifm-breadcrumb-size-multiplier)) calc(var(--ifm-breadcrumb-padding-horizontal)*var(--ifm-breadcrumb-size-multiplier));transition-duration:var(--ifm-transition-fast);transition-property:background,color}.breadcrumbs__link:any-link:hover,.breadcrumbs__link:link:hover,.breadcrumbs__link:visited:hover,area[href].breadcrumbs__link:hover{background:var(--ifm-breadcrumb-item-background-active);-webkit-text-decoration:none;text-decoration:none}.breadcrumbs--sm{--ifm-breadcrumb-size-multiplier:0.8}.breadcrumbs--lg{--ifm-breadcrumb-size-multiplier:1.2}.button{background-color:var(--ifm-button-background-color);border:var(--ifm-button-border-width) solid var(--ifm-button-border-color);border-radius:var(--ifm-button-border-radius);cursor:pointer;font-size:calc(.875rem*var(--ifm-button-size-multiplier));font-weight:var(--ifm-button-font-weight);line-height:1.5;padding:calc(var(--ifm-button-padding-vertical)*var(--ifm-button-size-multiplier)) calc(var(--ifm-button-padding-horizontal)*var(--ifm-button-size-multiplier));text-align:center;transition-duration:var(--ifm-button-transition-duration);transition-property:color,background,border-color;-webkit-user-select:none;user-select:none;white-space:nowrap}.button,.button:hover{color:var(--ifm-button-color)}.button--outline{--ifm-button-color:var(--ifm-button-border-color)}.button--outline:hover{--ifm-button-background-color:var(--ifm-button-border-color)}.button--link{--ifm-button-border-color:#0000;color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}.button--link.button--active,.button--link:active,.button--link:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.DocSearch-Container a,.DocSearch-Hit-AskAIButton-title mark,.dropdown__link--active,.dropdown__link:hover,.menu__link:hover,.navbar__brand:hover,.navbar__link--active,.navbar__link:hover,.pagination-nav__link:hover,.pagination__link:hover,.sidebarItemLink_mo7H:hover{-webkit-text-decoration:none;text-decoration:none}.button.disabled,.button:disabled,.button[disabled]{opacity:.65;pointer-events:none}.button--sm{--ifm-button-size-multiplier:0.8}.button--lg{--ifm-button-size-multiplier:1.35}.button--block{display:block;width:100%}.button.button--secondary{color:var(--ifm-color-gray-900)}:where(.button--primary){--ifm-button-background-color:var(--ifm-color-primary);--ifm-button-border-color:var(--ifm-color-primary)}:where(.button--primary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-primary-dark);--ifm-button-border-color:var(--ifm-color-primary-dark)}.button--primary.button--active,.button--primary:active{--ifm-button-background-color:var(--ifm-color-primary-darker);--ifm-button-border-color:var(--ifm-color-primary-darker)}:where(.button--secondary){--ifm-button-background-color:var(--ifm-color-secondary);--ifm-button-border-color:var(--ifm-color-secondary)}:where(.button--secondary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-secondary-dark);--ifm-button-border-color:var(--ifm-color-secondary-dark)}.button--secondary.button--active,.button--secondary:active{--ifm-button-background-color:var(--ifm-color-secondary-darker);--ifm-button-border-color:var(--ifm-color-secondary-darker)}:where(.button--success){--ifm-button-background-color:var(--ifm-color-success);--ifm-button-border-color:var(--ifm-color-success)}:where(.button--success):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-success-dark);--ifm-button-border-color:var(--ifm-color-success-dark)}.button--success.button--active,.button--success:active{--ifm-button-background-color:var(--ifm-color-success-darker);--ifm-button-border-color:var(--ifm-color-success-darker)}:where(.button--info){--ifm-button-background-color:var(--ifm-color-info);--ifm-button-border-color:var(--ifm-color-info)}:where(.button--info):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-info-dark);--ifm-button-border-color:var(--ifm-color-info-dark)}.button--info.button--active,.button--info:active{--ifm-button-background-color:var(--ifm-color-info-darker);--ifm-button-border-color:var(--ifm-color-info-darker)}:where(.button--warning){--ifm-button-background-color:var(--ifm-color-warning);--ifm-button-border-color:var(--ifm-color-warning)}:where(.button--warning):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-warning-dark);--ifm-button-border-color:var(--ifm-color-warning-dark)}.button--warning.button--active,.button--warning:active{--ifm-button-background-color:var(--ifm-color-warning-darker);--ifm-button-border-color:var(--ifm-color-warning-darker)}:where(.button--danger){--ifm-button-background-color:var(--ifm-color-danger);--ifm-button-border-color:var(--ifm-color-danger)}:where(.button--danger):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-danger-dark);--ifm-button-border-color:var(--ifm-color-danger-dark)}.button--danger.button--active,.button--danger:active{--ifm-button-background-color:var(--ifm-color-danger-darker);--ifm-button-border-color:var(--ifm-color-danger-darker)}.button-group{display:inline-flex;gap:var(--ifm-button-group-spacing)}.button-group>.button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.button-group>.button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.button-group--block{display:flex;justify-content:stretch}.button-group--block>.button{flex-grow:1}.card{background-color:var(--ifm-card-background-color);border-radius:var(--ifm-card-border-radius);box-shadow:var(--ifm-global-shadow-lw);display:flex;flex-direction:column}.card__image{padding-top:var(--ifm-card-vertical-spacing)}.card__image:first-child{padding-top:0}.card__body,.card__footer,.card__header{padding:var(--ifm-card-vertical-spacing) var(--ifm-card-horizontal-spacing)}.card__body:not(:last-child),.card__footer:not(:last-child),.card__header:not(:last-child){padding-bottom:0}.card__body>:last-child,.card__footer>:last-child,.card__header>:last-child{margin-bottom:0}.card__footer{margin-top:auto}.table-of-contents{font-size:.8rem;margin-bottom:0;padding:var(--ifm-toc-padding-vertical) 0}.table-of-contents,.table-of-contents ul{list-style:none;padding-left:var(--ifm-toc-padding-horizontal)}.table-of-contents li{margin:var(--ifm-toc-padding-vertical) var(--ifm-toc-padding-horizontal)}.table-of-contents__left-border{border-left:1px solid var(--ifm-toc-border-color)}.table-of-contents__link{color:var(--ifm-toc-link-color);display:block}.table-of-contents__link--active,.table-of-contents__link--active code,.table-of-contents__link:hover,.table-of-contents__link:hover code{color:var(--ifm-color-primary);-webkit-text-decoration:none;text-decoration:none}.close{color:var(--ifm-color-black);float:right;font-size:1.5rem;font-weight:var(--ifm-font-weight-bold);line-height:1;opacity:.5;padding:1rem;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.close:hover{opacity:.7}.close:focus{opacity:.8}.dropdown{display:inline-flex;font-weight:var(--ifm-dropdown-font-weight);position:relative;vertical-align:top}.dropdown--hoverable:hover .dropdown__menu,.dropdown--show .dropdown__menu{opacity:1;pointer-events:all;transform:translateY(-1px);visibility:visible}#nprogress,.dropdown__menu,.navbar__item.dropdown .navbar__link:not([href]),.shimmer{pointer-events:none}.dropdown--right .dropdown__menu{left:inherit;right:0}.dropdown--nocaret .navbar__link:after{content:none!important}.dropdown__menu{background-color:var(--ifm-dropdown-background-color);border-radius:var(--ifm-global-radius);box-shadow:var(--ifm-global-shadow-md);left:0;list-style:none;max-height:80vh;min-width:10rem;opacity:0;overflow-y:auto;padding:.5rem;position:absolute;top:calc(100% - var(--ifm-navbar-item-padding-vertical) + .3rem);transform:translateY(-.625rem);transition-duration:var(--ifm-transition-fast);transition-property:opacity,transform,visibility;transition-timing-function:var(--ifm-transition-timing-default);visibility:hidden;z-index:var(--ifm-z-index-dropdown)}.menu__caret,.menu__link,.menu__list-item-collapsible{border-radius:.25rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.dropdown__link{border-radius:.25rem;color:var(--ifm-dropdown-link-color);display:block;font-size:.875rem;margin-top:.2rem;padding:.25rem .5rem;white-space:nowrap}.dropdown__link--active,.dropdown__link:hover{background-color:var(--ifm-dropdown-hover-background-color);color:var(--ifm-dropdown-link-color)}.dropdown__link--active,.dropdown__link--active:hover{--ifm-dropdown-link-color:var(--ifm-link-color)}.dropdown>.navbar__link:after{border-color:currentcolor #0000;border-style:solid;border-width:.4em .4em 0;content:"";margin-left:.3em;position:relative;top:2px;transform:translateY(-50%)}.footer{background-color:var(--ifm-footer-background-color);color:var(--ifm-footer-color);padding:var(--ifm-footer-padding-vertical) var(--ifm-footer-padding-horizontal)}.footer--dark{--ifm-footer-background-color:#303846;--ifm-footer-color:var(--ifm-footer-link-color);--ifm-footer-link-color:var(--ifm-color-secondary);--ifm-footer-title-color:var(--ifm-color-white)}.footer__links{margin-bottom:1rem}.footer__link-item{color:var(--ifm-footer-link-color);line-height:2}.footer__link-item:hover{color:var(--ifm-footer-link-hover-color)}.footer__link-separator{margin:0 var(--ifm-footer-link-horizontal-spacing)}.footer__logo{margin-top:1rem;max-width:var(--ifm-footer-logo-max-width)}.footer__title{color:var(--ifm-footer-title-color);font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base);margin-bottom:var(--ifm-heading-margin-bottom)}.menu,.navbar__link{font-weight:var(--ifm-font-weight-semibold)}.docItemContainer_Djhp article>:first-child,.docItemContainer_Djhp header+*,.footer__item{margin-top:0}.admonitionContent_BuS1>:last-child,.collapsibleContent_i85q p:last-child,.details_lb9f>summary>p:last-child,.footer__items,.tabItem_Ymn6>:last-child{margin-bottom:0}[type=checkbox]{padding:0}.hero{align-items:center;background-color:var(--ifm-hero-background-color);color:var(--ifm-hero-text-color);display:flex;padding:4rem 2rem}.hero--primary{--ifm-hero-background-color:var(--ifm-color-primary);--ifm-hero-text-color:var(--ifm-font-color-base-inverse)}.hero--dark{--ifm-hero-background-color:#303846;--ifm-hero-text-color:var(--ifm-color-white)}.hero__title,.title_f1Hy{font-size:3rem}.hero__subtitle{font-size:1.5rem}.menu__list{list-style:none;margin:0;padding-left:0}.menu__caret,.menu__link{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu__list .menu__list{flex:0 0 100%;margin-top:.25rem;padding-left:var(--ifm-menu-link-padding-horizontal)}.menu__list-item:not(:first-child){margin-top:.25rem}.menu__list-item--collapsed .menu__list{height:0;overflow:hidden}.details_lb9f[data-collapsed=false].isBrowser_bmU9>summary:before,.details_lb9f[open]:not(.isBrowser_bmU9)>summary:before,.menu__list-item--collapsed .menu__caret:before,.menu__list-item--collapsed .menu__link--sublist:after{transform:rotate(90deg)}.menu__list-item-collapsible{display:flex;flex-wrap:wrap;position:relative}.menu__caret:hover,.menu__link:hover,.menu__list-item-collapsible--active,.menu__list-item-collapsible:hover{background:var(--ifm-menu-color-background-hover)}.menu__list-item-collapsible .menu__link--active,.menu__list-item-collapsible .menu__link:hover{background:none!important}.menu__caret,.menu__link{align-items:center;display:flex}.navbar-sidebar,.navbar-sidebar__backdrop{bottom:0;opacity:0;transition-duration:var(--ifm-transition-fast);transition-timing-function:ease-in-out;left:0;top:0;visibility:hidden}.menu__link{color:var(--ifm-menu-color);flex:1;line-height:1.25}.menu__link:hover{color:var(--ifm-menu-color)}.menu__caret:before,.menu__link--sublist-caret:after{content:"";height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast) linear;width:1.25rem;filter:var(--ifm-menu-link-sublist-icon-filter)}.menu__link--sublist-caret:after{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem;margin-left:auto;min-width:1.25rem}.menu__link--active,.menu__link--active:hover{color:var(--ifm-menu-color-active)}.navbar__brand,.navbar__link{color:var(--ifm-navbar-link-color)}.menu__link--active:not(.menu__link--sublist){background-color:var(--ifm-menu-color-background-active)}.menu__caret:before{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem}.navbar--dark,html[data-theme=dark]{--ifm-menu-link-sublist-icon-filter:invert(100%) sepia(94%) saturate(17%) hue-rotate(223deg) brightness(104%) contrast(98%)}.navbar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-navbar-shadow);height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar,.navbar>.container,.navbar>.container-fluid{display:flex}.navbar--fixed-top{position:sticky;top:0;z-index:var(--ifm-z-index-fixed)}.navbar__inner{display:flex;flex-wrap:wrap;justify-content:space-between;width:100%}.navbar__brand{align-items:center;display:flex;margin-right:1rem;min-width:0}.navbar__brand:hover{color:var(--ifm-navbar-link-hover-color)}.announcementBarContent_xLdY,.navbar__title{flex:1 1 auto}.navbar__toggle{display:none;margin-right:.5rem}.navbar__logo{flex:0 0 auto;height:2rem;margin-right:.5rem}.navbar__items{align-items:center;display:flex;flex:1;min-width:0}.navbar__items--center{flex:0 0 auto}.navbar__items--center .navbar__brand{margin:0}.navbar__items--center+.navbar__items--right{flex:1}.navbar__items--right{flex:0 0 auto;justify-content:flex-end}.navbar__item{display:inline-block;padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.navbar__link--active,.navbar__link:hover{color:var(--ifm-navbar-link-hover-color)}.navbar--dark,.navbar--primary{--ifm-menu-color:var(--ifm-color-gray-300);--ifm-navbar-link-color:var(--ifm-color-gray-100);--ifm-navbar-search-input-background-color:#ffffff1a;--ifm-navbar-search-input-placeholder-color:#ffffff80;color:var(--ifm-color-white)}.navbar--dark{--ifm-navbar-background-color:#242526;--ifm-menu-color-background-active:#ffffff0d;--ifm-navbar-search-input-color:var(--ifm-color-white)}.navbar--primary{--ifm-navbar-background-color:var(--ifm-color-primary);--ifm-navbar-link-hover-color:var(--ifm-color-white);--ifm-menu-color-active:var(--ifm-color-white);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-500)}.navbar__search-input{appearance:none;background:var(--ifm-navbar-search-input-background-color) var(--ifm-navbar-search-input-icon) no-repeat .75rem center/1rem 1rem;border:none;border-radius:2rem;color:var(--ifm-navbar-search-input-color);cursor:text;display:inline-block;font-size:1rem;height:2rem;padding:0 .5rem 0 2.25rem;width:12.5rem}.navbar__search-input::placeholder{color:var(--ifm-navbar-search-input-placeholder-color)}.navbar-sidebar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-global-shadow-md);position:fixed;transform:translate3d(-100%,0,0);transition-property:opacity,visibility,transform;width:var(--ifm-navbar-sidebar-width)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar__items{transform:translateZ(0)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar--show .navbar-sidebar__backdrop{opacity:1;visibility:visible}.navbar-sidebar__backdrop{background-color:#0009;position:fixed;right:0;transition-property:opacity,visibility}.navbar-sidebar__brand{align-items:center;box-shadow:var(--ifm-navbar-shadow);display:flex;flex:1;height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar-sidebar__items{display:flex;height:calc(100% - var(--ifm-navbar-height));transition:transform var(--ifm-transition-fast) ease-in-out}.navbar-sidebar__items--show-secondary{transform:translate3d(calc((var(--ifm-navbar-sidebar-width))*-1),0,0)}.navbar-sidebar__item{flex-shrink:0;padding:.5rem;width:calc(var(--ifm-navbar-sidebar-width))}.navbar-sidebar__back{background:var(--ifm-menu-color-background-active);font-size:15px;font-weight:var(--ifm-button-font-weight);margin:0 0 .2rem -.5rem;padding:.6rem 1.5rem;position:relative;text-align:left;top:-.5rem;width:calc(100% + 1rem)}.navbar-sidebar__close{display:flex;margin-left:auto}.pagination{column-gap:var(--ifm-pagination-page-spacing);display:flex;font-size:var(--ifm-pagination-font-size);padding-left:0}.pagination--sm{--ifm-pagination-font-size:0.8rem;--ifm-pagination-padding-horizontal:0.8rem;--ifm-pagination-padding-vertical:0.2rem}.pagination--lg{--ifm-pagination-font-size:1.2rem;--ifm-pagination-padding-horizontal:1.2rem;--ifm-pagination-padding-vertical:0.3rem}.pagination__item{display:inline-flex}.pagination__item>span{padding:var(--ifm-pagination-padding-vertical)}.pagination__item--active .pagination__link{color:var(--ifm-pagination-color-active)}.pagination__item--active .pagination__link,.pagination__item:not(.pagination__item--active):hover .pagination__link{background:var(--ifm-pagination-item-active-background)}.pagination__item--disabled,.pagination__item[disabled]{opacity:.25;pointer-events:none}.pagination__link{border-radius:var(--ifm-pagination-border-radius);color:var(--ifm-font-color-base);display:inline-block;padding:var(--ifm-pagination-padding-vertical) var(--ifm-pagination-padding-horizontal);transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination-nav{display:grid;grid-gap:var(--ifm-spacing-horizontal);gap:var(--ifm-spacing-horizontal);grid-template-columns:repeat(2,1fr)}.pagination-nav__link{border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-pagination-nav-border-radius);display:block;height:100%;line-height:var(--ifm-heading-line-height);padding:var(--ifm-global-spacing);transition:border-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination-nav__link:hover{border-color:var(--ifm-pagination-nav-color-hover)}.pagination-nav__link--next{grid-column:2/3;text-align:right}.pagination-nav__label{font-size:var(--ifm-h4-font-size);font-weight:var(--ifm-heading-font-weight);word-break:break-word}.pagination-nav__link--prev .pagination-nav__label:before{content:"« "}.pagination-nav__link--next .pagination-nav__label:after{content:" »"}.pagination-nav__sublabel{color:var(--ifm-color-content-secondary);font-size:var(--ifm-h5-font-size);font-weight:var(--ifm-font-weight-semibold);margin-bottom:.25rem}.pills__item,.tabs{font-weight:var(--ifm-font-weight-bold)}.pills{display:flex;gap:var(--ifm-pills-spacing);padding-left:0}.pills__item{border-radius:.5rem;cursor:pointer;display:inline-block;padding:.25rem 1rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs,:not(.containsTaskList_mC6p>li)>.containsTaskList_mC6p{padding-left:0}.pills__item--active{color:var(--ifm-pills-color-active)}.pills__item--active,.pills__item:not(.pills__item--active):hover{background:var(--ifm-pills-color-background-active)}.pills--block{justify-content:stretch}.pills--block .pills__item{flex-grow:1;text-align:center}.tabs{color:var(--ifm-tabs-color);display:flex;margin-bottom:0;overflow-x:auto}.tabs__item{border-bottom:3px solid #0000;border-radius:var(--ifm-global-radius);cursor:pointer;display:inline-flex;padding:var(--ifm-tabs-padding-vertical) var(--ifm-tabs-padding-horizontal);transition:background-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs__item--active{border-bottom-color:var(--ifm-tabs-color-active-border);border-bottom-left-radius:0;border-bottom-right-radius:0;color:var(--ifm-tabs-color-active)}.tabs__item:hover{background-color:var(--ifm-hover-overlay)}.tabs--block{justify-content:stretch}.tabs--block .tabs__item{flex-grow:1;justify-content:center}html[data-theme=dark]{--ifm-color-scheme:dark;--ifm-color-emphasis-0:var(--ifm-color-gray-1000);--ifm-color-emphasis-100:var(--ifm-color-gray-900);--ifm-color-emphasis-200:var(--ifm-color-gray-800);--ifm-color-emphasis-300:var(--ifm-color-gray-700);--ifm-color-emphasis-400:var(--ifm-color-gray-600);--ifm-color-emphasis-600:var(--ifm-color-gray-400);--ifm-color-emphasis-700:var(--ifm-color-gray-300);--ifm-color-emphasis-800:var(--ifm-color-gray-200);--ifm-color-emphasis-900:var(--ifm-color-gray-100);--ifm-color-emphasis-1000:var(--ifm-color-gray-0);--ifm-background-color:#1b1b1d;--ifm-background-surface-color:#242526;--ifm-hover-overlay:#ffffff0d;--ifm-color-content:#e3e3e3;--ifm-color-content-secondary:#fff;--ifm-breadcrumb-separator-filter:invert(64%) sepia(11%) saturate(0%) hue-rotate(149deg) brightness(99%) contrast(95%);--ifm-code-background:#ffffff1a;--ifm-scrollbar-track-background-color:#444;--ifm-scrollbar-thumb-background-color:#686868;--ifm-scrollbar-thumb-hover-background-color:#7a7a7a;--ifm-table-stripe-background:#ffffff12;--ifm-toc-border-color:var(--ifm-color-emphasis-200);--ifm-color-primary-contrast-background:#102445;--ifm-color-primary-contrast-foreground:#ebf2fc;--ifm-color-secondary-contrast-background:#474748;--ifm-color-secondary-contrast-foreground:#fdfdfe;--ifm-color-success-contrast-background:#003100;--ifm-color-success-contrast-foreground:#e6f6e6;--ifm-color-info-contrast-background:#193c47;--ifm-color-info-contrast-foreground:#eef9fd;--ifm-color-warning-contrast-background:#4d3800;--ifm-color-warning-contrast-foreground:#fff8e6;--ifm-color-danger-contrast-background:#4b1113;--ifm-color-danger-contrast-foreground:#ffebec;--docsearch-text-color:#c4c7dc;--docsearch-secondary-text-color:#b6b7d5;--docsearch-subtle-color:#212139;--docsearch-success-color:#43a04733;--docsearch-highlight-color:#457aff;--docsearch-focus-color:#9ac8ff;--docsearch-background-color:#36395a;--docsearch-icon-color:#b6b7d5;--docsearch-container-background:#090a11cc;--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#000000a6;--docsearch-searchbox-focus-background:#000000a6;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-background:#36395a;--docsearch-key-color:#b6b7d5;--docsearch-key-pressed-shadow:inset 0 2px 4px #0c0d1466;--docsearch-footer-background:#000000a6;--docsearch-footer-shadow:inset 0 1px 0 0 #494c6a80,0 -4px 8px 0 #0003;--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497;--docsearch-search-button-background:var(--docsearch-modal-background);--docsearch-search-button-text-color:var(--docsearch-text-color)}#nprogress .bar{background:var(--docusaurus-progress-bar-color);height:2px;left:0;position:fixed;top:0;width:100%;z-index:1031}#nprogress .peg{box-shadow:0 0 10px var(--docusaurus-progress-bar-color),0 0 5px var(--docusaurus-progress-bar-color);height:100%;opacity:1;position:absolute;right:0;transform:rotate(3deg) translateY(-4px);width:100px}[data-theme=dark]{--ifm-color-primary:#f8a949;--ifm-color-primary-dark:#c96f2a;--ifm-color-primary-darker:#b26425;--ifm-color-primary-darkest:#a2571e;--ifm-color-primary-light:#4d3c30;--ifm-color-primary-lighter:#3a2e24;--ifm-color-primary-lightest:#2c221b;--docusaurus-highlighted-code-line-bg:#e76f0033}.askai-suggestions{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px;padding:12px 0}.askai-suggestion-btn{appearance:none;background:var(--docsearch-hit-background,#fff);border:1px solid var(--docsearch-muted-color,#969faf);border-radius:16px;color:var(--docsearch-text-color,#1c1e21);cursor:pointer;font-family:inherit;font-size:13px;line-height:1.4;min-height:36px;padding:6px 14px;transition:background .15s,border-color .15s}.askai-suggestion-btn:hover{background:var(--docsearch-hit-highlight-color,#003dff1a);border-color:var(--docsearch-primary-color,#003dff)}.askai-suggestion-btn:focus-visible{outline:2px solid var(--docsearch-primary-color,#003dff);outline-offset:2px}.askai-suggestion-btn:active{background:var(--docsearch-hit-highlight-color,#003dff26)}.askai-sr-only{height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;clip:rect(0,0,0,0);border:0}nav[class*=sidebar_].thin-scrollbar{scrollbar-width:none;-ms-overflow-style:none}nav[class*=sidebar_].thin-scrollbar::-webkit-scrollbar{display:none}.backToTopButton_sjWU{background-color:var(--ifm-color-emphasis-200);border-radius:50%;bottom:1.3rem;box-shadow:var(--ifm-global-shadow-lw);height:3rem;opacity:0;position:fixed;right:1.3rem;transform:scale(0);transition:all var(--ifm-transition-fast) var(--ifm-transition-timing-default);visibility:hidden;width:3rem;z-index:calc(var(--ifm-z-index-fixed) - 1)}.backToTopButton_sjWU:after{background-color:var(--ifm-color-emphasis-1000);content:" ";display:inline-block;height:100%;-webkit-mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;width:100%}.backToTopButtonShow_xfvO{opacity:1;transform:scale(1);visibility:visible}:root{--ifm-color-primary:#e76f00;--ifm-color-primary-dark:#cc6400;--ifm-color-primary-darker:#b35900;--ifm-color-primary-darkest:#994c00;--ifm-color-primary-light:#fce4d6;--ifm-color-primary-lighter:#fdfaf5;--ifm-color-primary-lightest:#fff;--ifm-code-font-size:95%;--docusaurus-highlighted-code-line-bg:#e76f001a;--docsearch-primary-color:#003dff;--docsearch-soft-primary-color:#003dff1a;--docsearch-subtle-color:#d6d6e7;--docsearch-text-color:#36395a;--docsearch-success-color:#e8f5e9;--docsearch-secondary-text-color:#5a5e9a;--docsearch-background-color:#f5f5fa;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-focus-color:#005fcc;--docsearch-highlight-color:#003dff;--docsearch-muted-color:#9698c3;--docsearch-muted-color-darker:#787aa540;--docsearch-icon-color:#5a5e9a;--docsearch-container-background:#656c85cc;--docsearch-logo-color:#003dff;--docsearch-border-radius:4px;--docsearch-search-button-background:#fff;--docsearch-search-button-text-color:var(--docsearch-secondary-text-color);--docsearch-modal-width:800px;--docsearch-modal-height:600px;--docsearch-modal-variable-height:60dvh;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:#0003 0px 12px 28px 0px,#0000001a 0px 2px 4px 0px,#ffffff0d 0px 0px 0px 1px inset;--docsearch-searchbox-height:56px;--docsearch-searchbox-initial-height:56px;--docsearch-searchbox-background:#ffffffa6;--docsearch-searchbox-focus-background:#ffffffa6;--docsearch-actions-width:99px;--docsearch-actions-height:44px;--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-highlight-color:#003dff1a;--docsearch-hit-background:#fff;--docsearch-key-background:#f5f5fa;--docsearch-key-color:#5a5e9a;--docsearch-key-pressed-shadow:inset 0 2px 4px #787aa540;--docsearch-footer-height:52px;--docsearch-footer-background:#ffffffa6;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 #45629b1f;--fav-out-dur:160ms;--del-dur:150ms;--ease-smooth:cubic-bezier(0.25,0.8,0.4,1);--ease-fast:cubic-bezier(0.45,0.15,0.6,0.9);--shadow-pop:0 4px 12px #0000000f;--docsearch-primary-color:var(--ifm-color-primary);--docsearch-text-color:var(--ifm-font-color-base);--docusaurus-announcement-bar-height:auto;--docusaurus-collapse-button-bg:#0000;--docusaurus-collapse-button-bg-hover:#0000001a;--doc-sidebar-width:300px;--doc-sidebar-hidden-width:30px;--docusaurus-blog-social-icon-size:1rem;--docusaurus-tag-list-border:var(--ifm-color-emphasis-300)}.DocSearch-Button{all:unset;align-items:center;background-color:var(--docsearch-search-button-background);border:1px solid var(--docsearch-subtle-color);border-radius:.5rem;color:var(--docsearch-search-button-text-color);cursor:pointer;display:flex;height:36px;justify-content:space-between;padding:0 8px;-webkit-user-select:none;user-select:none}.DocSearch-Button-Container{align-items:center;display:flex;height:100%}.DocSearch-Button-Container svg{color:currentColor}.DocSearch-Back-Icon,.DocSearch-Search-Icon{color:var(--docsearch-highlight-color);stroke-width:1.6}.DocSearch-Action,.DocSearch-AskAi-Return,.DocSearch-Hit-Tree,.DocSearch-Hit-action,.DocSearch-Hit-icon{stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Button-Placeholder{color:currentColor;display:inline-block;font-size:1rem;line-height:normal;padding-block:0;padding-inline:8px 12px}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-background);border:0;border-radius:4px;box-shadow:none!important;color:var(--docsearch-key-color);display:flex;font-family:system-ui,-apple-system,sans-serif;font-size:14px;height:24px;justify-content:center;position:relative;transition-duration:.1s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);width:24px}.DocSearch-Link,.DocSearch-SearchBar-Magnifier{color:var(--docsearch-highlight-color)}@supports (color:color-mix(in lch,red,blue)){.DocSearch-Button-Key{border:1px solid color-mix(in srgb,var(--docsearch-subtle-color) 20%,#0000)}}.DocSearch-Button-Key--ctrl{width:33px}.DocSearch-Button-Key:first-child{margin-inline-end:.4em}.DocSearch-Button-Key--pressed{box-shadow:var(--docsearch-key-pressed-shadow)!important;transform:translateY(1px)}.DocSearch--active{overflow:hidden!important}.DocSearch-Container{backdrop-filter:blur(4px);background-color:var(--docsearch-container-background);height:100vh;inset-block-start:0;inset-inline-start:0;position:fixed;width:100vw;z-index:400}.DocSearch-Form,.DocSearch-Hit,.DocSearch-Modal{display:flex;position:relative}.DocSearch-Hit mark,.DocSearch-Prefill:focus,.DocSearch-Prefill:hover,.DocSearch-ThreadDepthError-Link{-webkit-text-decoration:underline;text-decoration:underline}.DocSearch-Link{appearance:none;background:none;border:0;cursor:pointer;font:inherit;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:4px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width)}.DocSearch-Logo a,.DocSearch-Menu-content.open,.DocSearch-SearchBar,.searchLogoColumn_rJIA a{display:flex}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-block-end:1px solid var(--docsearch-subtle-color);border-radius:4px 4px 0 0;height:var(--docsearch-searchbox-height,var(--docsearch-searchbox-initial-height));margin:0;min-height:var(--docsearch-searchbox-initial-height);padding-block:var(--docsearch-spacing);padding-inline:16px;width:100%}.DocSearch-Input,.DocSearch-Modal-heading{appearance:none;background:#0000;border:0;color:var(--docsearch-text-color);flex:1;font:inherit;font-size:1.2em;font-weight:300;height:100%;line-height:1.4;outline:0;overflow-y:hidden;padding-block-start:0;padding-inline-start:8px;resize:none;width:80%}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-Actions{align-items:center;display:flex;gap:8px;height:var(--docsearch-actions-height);justify-content:flex-end;padding:0 2px;width:var(--docsearch-actions-width)}.DocSearch-Divider{border-inline-start:1px solid var(--docsearch-subtle-color);height:16px}.DocSearch-Action{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center;min-height:24px;min-width:24px}.DocSearch-Action,.DocSearch-AskAi-Return,.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel{margin:0;padding:0}.DocSearch-AskAi-Return,.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Action,.DocSearch-AskAi-Return{animation:.1s ease-in forwards a;appearance:none;background:none;border:none;border-radius:var(--docsearch-border-radius);color:var(--docsearch-icon-color);cursor:pointer;inset-inline-end:0;padding:2px}.DocSearch-AskAi-Return[hidden],.DocSearch-Close[hidden],.DocSearch-Input[hidden],.DocSearch-StreamingIndicator[hidden],svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Action:hover,.DocSearch-AskAi-Return:hover{background:var(--docsearch-soft-primary-color);color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{color:var(--docsearch-icon-color);height:24px;width:24px}.DocSearch-Clear,.DocSearch-Form:focus-within .DocSearch-MagnifierLabel svg{color:var(--docsearch-highlight-color)}.DocSearch-Clear{appearance:none;background:none;border:0;cursor:pointer;flex:none;font:inherit;font-size:.9em;font-weight:300;height:28px;margin-inline-start:var(--docsearch-spacing);outline:0;overflow:hidden;padding:0;-webkit-user-select:none;user-select:none;white-space:nowrap}.DocSearch-Clear:focus-visible,.DocSearch-Close:focus-visible{border-radius:4px;outline:2px solid var(--docsearch-focus-color);outline-offset:1px}.DocSearch-Dropdown{height:var(--docsearch-modal-variable-height);max-height:calc(var(--docsearch-modal-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:#0000}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown-Container ul{list-style:none;margin:0;padding:0}.DocSearch-Label{color:var(--docsearch-secondary-text-color);font-size:.875em;font-weight:400;line-height:1.6em}.DocSearch-Help,.DocSearch-NoResults-Help{color:var(--docsearch-secondary-text-color);font-size:.8em;font-weight:300;line-height:1.5em;margin:0;-webkit-user-select:none;user-select:none}.DocSearch-Title{color:var(--docsearch-text-color);font-size:1.1em;font-weight:300;line-height:.5em;vertical-align:middle}.DocSearch-Title strong{font-weight:500}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-inline-start:8px}.DocSearch-Hits:last-of-type{margin-block-end:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{color:var(--docsearch-muted-color);display:flex;font-size:.85em;justify-content:center;margin-block-end:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-block-end:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;padding-block-end:4px;scroll-margin-block-start:40px}.DocSearch-Hit:first-of-type{margin-block-start:4px}.DocSearch-Hit a,.DocSearch-Hit--AskAI{background:var(--docsearch-hit-background);border-radius:4px;cursor:pointer;display:block;padding-inline-start:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-text-color);font-size:.9em;font-weight:600;inset-block-start:0;line-height:32px;margin:0 -4px;padding:8px 4px 4px;position:sticky;z-index:10}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;width:24px}.DocSearch-Hit-Container,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title{color:var(--docsearch-text-color)}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit--AskAI,.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-hit-highlight-color)}.DocSearch-Conversation-History .DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-hit-background)}.DocSearch-Hit mark{color:var(--docsearch-highlight-color);text-underline-offset:.3em}.DocSearch-Hit-Container{align-items:center;display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{color:var(--docsearch-secondary-text-color);height:20px;width:20px}.DocSearch-Hit-action{align-items:center;color:var(--docsearch-muted-color);display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-inline-start:6px}.DocSearch-Hit-action-button{appearance:none;background:none;border:0;border-radius:50%;color:inherit;cursor:pointer;padding:2px}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon,.tocCollapsibleContent_vkbj a{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:background-color .1s ease-in}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:400;gap:4px;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-secondary-text-color);font-size:.75em}.DocSearch-AskAiScreen-MessageContent-Tool-Query:hover svg,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-highlight-color)}.DocSearch-AskAiScreen,.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{align-items:center;color:var(--docsearch-secondary-text-color);display:flex;flex-direction:column;font-size:1.25em;font-weight:400;justify-content:center;margin:0 auto;text-align:center;width:80%}.DocSearch-AskAiScreen,.DocSearch-ErrorScreen,.DocSearch-NoResults{max-height:80%}.sidebar_re4s,.tableOfContents_bqdL{max-height:calc(100vh - var(--ifm-navbar-height) - 2rem)}.DocSearch-StartScreen,body,html{height:100%}.DocSearch-NoResults{gap:.8em;margin-block-start:2em}.DocSearch-NoResults--withAskAi{justify-content:flex-start;margin-block-start:0}.DocSearch-AskAiScreen,.DocSearch-ErrorScreen,.DocSearch-StartScreen{gap:24px}.DocSearch-StartScreen-Icon{height:64px;stroke:var(--docsearch-icon-color);width:64px}.DocSearch-AskAiScreen-MessageContent-Reasoning svg,.DocSearch-Screen-Icon{color:var(--docsearch-icon-color)}.DocSearch-NoResults-Prefill-List{display:flex;flex-direction:column;gap:12px;text-align:center}.DocSearch-NoResults-Prefill-List-Items{display:flex;flex-direction:column;gap:2px}.DocSearch-NoResults-Prefill-List-Items p{align-items:center;display:flex;margin:0;text-align:start}.DocSearch-Prefill{align-items:center;appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-flex;font-size:.8em;font-weight:300;gap:4px;height:40px;padding:0 4px}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:0}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 4px 4px;display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;-webkit-user-select:none;user-select:none;width:100%;z-index:300}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;gap:16px;list-style:none;margin:0;padding:0}.DocSearch-Commands li,.DocSearch-Commands-Key{align-items:center;display:flex}.DocSearch-Commands-Key{background-color:var(--docsearch-background-color);border:0;border-radius:2px;box-shadow:none!important;color:var(--docsearch-icon-color);height:24px;justify-content:center;margin-inline-end:4px;width:24px}.DocSearch-Commands-Key:last-of-type{margin-inline-end:8px}.DocSearch-Escape-Key{font-size:10px;font-weight:300;letter-spacing:normal;line-height:16px;text-align:center}.DocSearch-VisuallyHiddenForAccessibility{clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}.DocSearch-AskAi-Section{display:flex;flex-direction:column;gap:8px;padding:12px 0}.DocSearch-Hit-AskAIButton{align-items:center;color:var(--docsearch-text-color);display:flex;flex-direction:row}.DocSearch-Hit-AskAIButton-icon{color:var(--docsearch-icon-color);flex-shrink:0;margin-inline-end:12px}.DocSearch-Hit-AskAIButton-title{color:var(--docsearch-hit-color);display:flex;flex:1 1 auto;font-weight:400;gap:4px;overflow-x:hidden;position:relative;width:80%}.DocSearch-Hit-AskAIButton-title-query{background:none;margin-inline-start:4px;overflow:hidden}@keyframes a{0%{opacity:0}to{opacity:1}}.DocSearch-AskAiScreen-Container{display:flex;flex-direction:column;gap:0;height:100%;justify-content:flex-start;padding:0;text-align:start;width:100%}.DocSearch-AskAiScreen-Disclaimer{align-self:flex-start;display:flex;font-size:.6em;font-weight:300;margin:0;padding-block:1.5em .5em;padding-inline:0;text-align:start}.DocSearch-AskAiScreen-Body{gap:24px;width:100%}.DocSearch-AskAiScreen-Body,.DocSearch-AskAiScreen-Response,.DocSearch-AskAiScreen-Response-Container{display:flex;flex-direction:column}.DocSearch-AskAiScreen-Response{align-self:flex-start;background:var(--docsearch-hit-background);border-radius:4px;color:var(--docsearch-text-color);font-size:.8em;gap:1em;margin-block-end:8px;padding:24px;width:100%}.DocSearch-AskAiScreen-Query{font-size:1.25em;font-weight:600;line-break:loose;line-height:1.4;margin:0}.DocSearch-AskAiScreen-Answer{line-height:1.5}.DocSearch-AskAiScreen-Answer,.DocSearch-AskAiScreen-ThinkingDots{color:var(--docsearch-secondary-text-color);font-weight:400;margin:0}.DocSearch-AskAiScreen-Error,.DocSearch-AskAiScreen-Error .DocSearch-Markdown-Content{color:var(--docsearch-error-color)}.DocSearch-AskAiScreen-ThinkingDots{font-size:.8em}.DocSearch-AskAiScreen-Answer-Footer{align-items:center;display:flex;flex-direction:row;gap:8px;justify-content:space-between}.DocSearch-AskAiScreen-Actions{align-items:center;display:flex;flex-direction:row;gap:12px;margin-inline-start:auto}.DocSearch-AskAiScreen-ActionButton{align-items:center;background:none;border:none;border-radius:4px;cursor:pointer;display:flex;justify-content:center;margin:0;padding:4px;transition:background-color .2s;width:24px}.DocSearch-AskAiScreen-ActionButton:hover,.DocSearch-AskAiScreen-RelatedSources-Item-Link:hover{background:var(--docsearch-hit-highlight-color)}.DocSearch-AskAiScreen-ActionButton svg{color:var(--docsearch-icon-color);height:20px;stroke-width:1.5;width:20px}.DocSearch-AskAiScreen-CopyButton--copied{background-color:var(--docsearch-success-color);cursor:default}.DocSearch-AskAiScreen-MessageContent{display:flex;flex-direction:column;row-gap:1em}.DocSearch-AskAiScreen-Error{background-color:#ef53501a;border-radius:4px;flex-direction:row;font-size:1em;font-weight:400;gap:8px;padding:1em}.DocSearch-AskAiScreen-Error svg{margin-top:.25rem}.DocSearch-AskAiScreen-Error svg,.DocSearch-AskAiScreen-MessageContent-Tool svg{flex-shrink:0;height:16px;width:16px}.DocSearch-AskAiScreen-Error p{margin:0}.DocSearch-AskAiScreen-Error-Content{display:flex;flex:1 1 0%;flex-direction:column}.DocSearch-AskAiScreen-Error-Title{font-weight:700;margin-bottom:4px}.DocSearch-AskAiScreen-Error--ThreadDepth{animation:.3s ease-out b;border:1px solid #febdc5;color:var(--docsearch-text-color);font-size:12px;margin:12px 0 8px;width:100%}@keyframes b{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.DocSearch-ThreadDepthError-Link{background:none;border:none;color:var(--docsearch-highlight-color);cursor:pointer;font-family:inherit;font-size:inherit;padding:0}.DocSearch-AskAiScreen-RelatedSources-Item-Link,.DocSearch-Markdown-Content a,.tag_zVej:hover{-webkit-text-decoration:none;text-decoration:none}.DocSearch-CodeSnippet-CopyButton:hover,.DocSearch-ThreadDepthError-Link:hover,.theme-code-block-highlighted-line .codeLineNumber_Tfdd:before{opacity:.8}.DocSearch-ThreadDepthError-Link:active{color:#991b1b}.DocSearch-AskAiScreen-FeedbackText{color:var(--docsearch-muted-color);font-size:.7em;font-weight:400;margin:0}.DocSearch-AskAiScreen-FeedbackText--visible{animation:.3s ease-in forwards a}.DocSearch-AskAiScreen-RelatedSources{display:flex;flex-direction:column;gap:4px;width:100%}.DocSearch-AskAiScreen-RelatedSources-List{display:flex;flex-direction:row;flex-wrap:wrap;gap:12px;width:100%}.DocSearch-AskAiScreen-RelatedSources-Title{color:var(--docsearch-secondary-text-color);font-size:.7em;font-weight:400;margin:0;padding:6px 0}.DocSearch-AskAiScreen-RelatedSources-NoResults{color:var(--docsearch-text-color);font-size:.8rem;font-weight:400;margin:0}.DocSearch-AskAiScreen-RelatedSources-Error{color:var(--docsearch-error-color);font-size:.8rem;font-weight:400;margin:0}.DocSearch-AskAiScreen-RelatedSources-Item-Link{align-items:center;background:var(--docsearch-hit-background);border-radius:4px;color:var(--docsearch-text-color);display:flex;font-size:.75em;gap:6px;max-width:70%;padding:12px 8px;transition:background-color .2s}.DocSearch-AskAiScreen-RelatedSources-Item-Link svg{color:var(--docsearch-icon-color);flex-shrink:0;stroke-width:1.2}.DocSearch-AskAiScreen-RelatedSources-Item-Link span{flex:1 1 0;font-weight:500;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.DocSearch-AskAiScreen-ExchangesList{display:flex;flex-direction:column;gap:24px;margin:8px 0}.DocSearch-Markdown-Content{color:var(--docsearch-text-color);font-size:.9355em;line-height:1.6;word-wrap:break-word}.DocSearch-Markdown-Content--streaming{animation:.3s ease-in-out both a}.DocSearch-Markdown-Content p{margin:1em 0}.DocSearch-Markdown-Content p:last-child{margin-block-end:0}.DocSearch-Markdown-Content p:first-child{margin-block-start:0}.DocSearch-Markdown-Content code{border-radius:3px;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:.9em;letter-spacing:normal;margin:0;padding:.2em 0}.DocSearch-Markdown-Content code,.DocSearch-Markdown-Content pre{background-color:var(--docsearch-key-background);color:var(--docsearch-text-color)}.DocSearch-Markdown-Content pre{border-radius:6px;margin:1.5em 0;overflow-x:auto;padding:1.2em}.DocSearch-Markdown-Content pre code{background-color:initial;border-radius:0;color:inherit;font-size:.8em;margin:0;padding:0;white-space:pre-wrap;word-wrap:break-word;line-height:1.5}.DocSearch-Markdown-Content h1,.DocSearch-Markdown-Content h2,.DocSearch-Markdown-Content h3,.DocSearch-Markdown-Content h4,.DocSearch-Markdown-Content h5,.DocSearch-Markdown-Content h6{color:var(--docsearch-text-color);font-weight:600;letter-spacing:-.02em;line-height:1.3;margin:1em 0}.DocSearch-Markdown-Content h1{font-size:1.5em}.DocSearch-Markdown-Content h2{font-size:1.2em}.DocSearch-Markdown-Content h3{font-size:1em}.DocSearch-Markdown-Content h4{font-size:.9em}.DocSearch-Markdown-Content h5,.DocSearch-Markdown-Content h6{font-size:.8em}.DocSearch-Markdown-Content ol,.DocSearch-Markdown-Content ul{color:var(--docsearch-text-color);margin:1.2em 0;padding-inline-start:1.5em}.DocSearch-Markdown-Content ul{list-style-type:disc}.DocSearch-Markdown-Content ol{list-style-type:decimal}.DocSearch-Markdown-Content li{color:var(--docsearch-text-color);line-height:1.6;margin:.8em 0;padding-inline-start:.3em}.DocSearch-Markdown-Content li>ol,.DocSearch-Markdown-Content li>ul{margin:.5em}.DocSearch-Markdown-Content li::marker{color:var(--docsearch-muted-color)}.DocSearch-Markdown-Content a{color:var(--docsearch-highlight-color);transition:.2s}.DocSearch-Markdown-Content a:hover,.content_knG7 a{-webkit-text-decoration:underline;text-decoration:underline}.DocSearch-Markdown-Content a:hover{opacity:.9}.DocSearch-Markdown-Content blockquote{border-inline-start:4px solid var(--docsearch-hit-highlight-color);color:var(--docsearch-secondary-text-color);font-style:italic;margin:1.5em 0;padding-block:.5em;padding-inline:1em 0}.DocSearch-Markdown-Content hr{border:none;margin:1em 0}.DocSearch-Markdown-Content table{border-collapse:collapse;margin:1.5em 0;width:100%}.DocSearch-Markdown-Content td,.DocSearch-Markdown-Content th{border:1px solid var(--docsearch-subtle-color);padding:.75em;text-align:start}.DocSearch-Markdown-Content th{background-color:var(--docsearch-hit-background);font-weight:600}.DocSearch-AskAiScreen-MessageContent-Reasoning{align-items:center;color:var(--docsearch-muted-color);display:flex;font-size:1em;gap:4px}.DocSearch-AskAiScreen-MessageContent-Tool{align-items:center;color:var(--docsearch-muted-color);display:flex;line-height:1.2;width:100%}.DocSearch-AskAiScreen-MessageContent-Tool.Tool--Result{padding-block-start:0}.DocSearch-AskAiScreen-MessageContent-Tool>svg{color:var(--docsearch-icon-color);margin-inline-end:8px}.DocSearch-AskAiScreen-MessageContent-Tool-Query{color:var(--docsearch-muted-color);transition:box-shadow .2s}.DocSearch-AskAiScreen-MessageContent-Tool-Query svg{color:var(--docsearch-muted-color)}.DocSearch-AskAiScreen-MessageContent-Tool-Query:hover{box-shadow:0 1px 0 0 var(--docsearch-highlight-color);color:var(--docsearch-highlight-color);cursor:pointer}.DocSearck-AskAiScreen-MessageContent-Stopped{color:var(--docsearch-muted-color);font-style:italic;margin-block-start:1em}.DocSearch-AskAiScreen-SmallerLoadingIcon{height:16px;width:16px}.shimmer{background:var(--shimmer-bg);background-clip:text;-webkit-background-clip:text;background-size:200% auto;color:#0000;display:flex;-webkit-text-fill-color:#0000;animation:2.5s linear infinite c}@keyframes c{0%{background-position:200% 0}to{background-position:-200% 0}}.DocSearch-CodeSnippet,.DocSearch-Menu{position:relative}.DocSearch-CodeSnippet-CopyButton{align-items:center;background:var(--docsearch-key-background);border:none;border-radius:4px;color:var(--docsearch-text-color);cursor:pointer;display:flex;font-size:.75em;inset-block-start:8px;inset-inline-end:8px;padding:.2em .6em;position:absolute;transition:opacity .2s}.DocSearch-CodeSnippet-CopyButton:active{opacity:.6}.DocSearch-CodeSnippet-CopyButton svg{height:16px;margin-inline-end:4px;width:16px}#__docusaurus-base-url-issue-banner-container,.DocSearch-CodeSnippet-CheckIcon,.DocSearch-CodeSnippet-CopyButton--copied .DocSearch-CodeSnippet-CopyIcon,.DocSearch-Markdown-Content--streaming .DocSearch-CodeSnippet-CopyButton,.docSidebarContainer_YfHR,.navbarSearchContainer_Bca1:empty,.sidebarLogo_isFc,.themedComponent_mlkZ,.toggleIcon_g3eP,html[data-announcement-bar-initially-dismissed=true] .announcementBar_mb4j{display:none}.DocSearch-CodeSnippet-CopyButton--copied .DocSearch-CodeSnippet-CheckIcon{display:inline-block}.DocSearch-NewConversationScreen{padding:3em var(--docsearch-spacing)}.DocSearch-NewConversationScreen-Title{color:var(--docsearch-text-color);font-size:26px;font-weight:600;margin-block-end:.15em}.DocSearch-NewConversationScreen-Description{color:var(--docsearch-muted-color);font-size:14px}.DocSearch-NewConversationScreen-SuggestedQuestions{align-items:start;display:flex;flex-direction:column;gap:var(--docsearch-spacing);margin-block-start:1.5em}.DocSearch-NewConversationScreen-SuggestedQuestion{align-items:center;background-color:var(--docsearch-searchbox-background);border:1px solid var(--docsearch-subtle-color);border-radius:var(--docsearch-border-radius);color:var(--docsearch-text-color);cursor:pointer;display:inline-flex;height:40px;justify-content:center;padding:12px}.DocSearch-Menu-content{background-color:var(--docsearch-dropdown-menu-background);border-radius:var(--docsearch-border-radius);box-shadow:0 0 0 1px #21243d0d,0 8px 16px -4px #21243d40;display:none;flex-direction:column;inset-block-start:calc(100% + 12px);inset-inline-end:0;min-width:195px;padding:8px 0;position:absolute;z-index:422}.DocSearch-Container,.skipToContent_fXgn{z-index:calc(var(--ifm-z-index-fixed) + 1)}.DocSearch-Menu-item{align-items:center;background-color:initial;border:0;color:var(--docsearch-text-color);cursor:pointer;display:flex;font-size:14px;gap:8px;padding:10px 16px;white-space:nowrap}.DocSearch-Menu-item:hover{background-color:var(--docsearch-dropdown-menu-item-hover-background)}.DocSearch-Button{margin:0;transition:all var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.DocSearch-Button-Key,.codeBlockStandalone_MEMb{padding:0}.skipToContent_fXgn{background-color:var(--ifm-background-surface-color);color:var(--ifm-color-emphasis-900);left:100%;padding:calc(var(--ifm-global-spacing)/2) var(--ifm-global-spacing);position:fixed;top:1rem}.skipToContent_fXgn:focus{box-shadow:var(--ifm-global-shadow-md);left:1rem}.closeButton_CVFx{line-height:0;padding:0}.content_knG7{font-size:85%;padding:5px 0;text-align:center}.content_knG7 a{color:inherit}.announcementBar_mb4j{align-items:center;background-color:var(--ifm-color-white);border-bottom:1px solid var(--ifm-color-emphasis-100);color:var(--ifm-color-black);display:flex;height:var(--docusaurus-announcement-bar-height)}.announcementBarPlaceholder_vyr4{flex:0 0 10px}.announcementBarClose_gvF7{align-self:stretch;flex:0 0 30px}.toggle_vylO{height:2rem;width:2rem}.toggleButton_gllP{align-items:center;border-radius:50%;display:flex;height:100%;justify-content:center;transition:background var(--ifm-transition-fast);width:100%}.toggleButton_gllP:hover{background:var(--ifm-color-emphasis-200)}[data-theme-choice=dark] .darkToggleIcon_wfgR,[data-theme-choice=light] .lightToggleIcon_pyhR,[data-theme-choice=system] .systemToggleIcon_QzmC,[data-theme=dark] .themedComponent--dark_xIcU,[data-theme=light] .themedComponent--light_NVdE,html:not([data-theme]) .themedComponent--light_NVdE{display:initial}.toggleButtonDisabled_aARS{cursor:not-allowed}.darkNavbarColorModeToggle_X3D1:hover{background:var(--ifm-color-gray-800)}[data-theme=dark]:root{--docusaurus-collapse-button-bg:#ffffff0d;--docusaurus-collapse-button-bg-hover:#ffffff1a}.collapseSidebarButton_PEFL{display:none;margin:0}.categoryLinkLabel_W154,.linkLabel_WmDU{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical}.iconExternalLink_nPIU{margin-left:.3rem}.linkLabel_WmDU{line-clamp:2;-webkit-line-clamp:2}.categoryLink_byQd{overflow:hidden}.menu__link--sublist-caret:after{margin-left:var(--ifm-menu-link-padding-vertical)}.categoryLinkLabel_W154{flex:1;line-clamp:2;-webkit-line-clamp:2}.docMainContainer_TBSr,.docRoot_UBD9{display:flex;width:100%}.docsWrapper_hBAB{display:flex;flex:1 0 auto}.hash-link{opacity:0;padding-left:.5rem;transition:opacity var(--ifm-transition-fast);-webkit-user-select:none;user-select:none}.hash-link:before{content:"#"}.footerLogoLink_BH7S:hover,.hash-link:focus,:hover>.hash-link{opacity:1}.anchorTargetStickyNavbar_Vzrq{scroll-margin-top:calc(var(--ifm-navbar-height) + .5rem)}.anchorTargetHideOnScrollNavbar_vjPI{scroll-margin-top:.5rem}.dropdownNavbarItemMobile_J0Sd{cursor:pointer}.iconLanguage_nlXk{margin-right:5px;vertical-align:text-bottom}.navbarHideable_m1mJ{transition:transform var(--ifm-transition-fast) ease}.navbarHidden_jGov{transform:translate3d(0,calc(-100% - 2px),0)}.navbar__items--right>:last-child{padding-right:0}.errorBoundaryError_a6uf{color:red;white-space:pre-wrap}.errorBoundaryFallback_VBag{color:red;padding:.55rem}body:not(.navigation-with-keyboard) :not(input):focus{outline:0}.footerLogoLink_BH7S{opacity:.5;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.mainWrapper_z2l0{display:flex;flex:1 0 auto;flex-direction:column}.docusaurus-mt-lg{margin-top:3rem}#__docusaurus{display:flex;flex-direction:column;min-height:100%}.sidebar_re4s{overflow-y:auto;position:sticky;top:calc(var(--ifm-navbar-height) + 2rem)}.sidebarItemTitle_pO2u{font-size:var(--ifm-h3-font-size);font-weight:var(--ifm-font-weight-bold)}.container_mt6G,.sidebarItemList_Yudw{font-size:.9rem}.sidebarItem__DBe{margin-top:.7rem}.sidebarItemLink_mo7H{color:var(--ifm-font-color-base);display:block}.sidebarItemLinkActive_I1ZP{color:var(--ifm-color-primary)!important}.yearGroupHeading_rMGB{margin-bottom:.4rem;margin-top:1.6rem}.yearGroupHeading_QT03{margin:1rem .75rem .5rem}.searchQueryInput_u2C7,.searchVersionInput_m0Ui{background:var(--docsearch-searchbox-focus-background);border:2px solid var(--ifm-toc-border-color);border-radius:var(--ifm-global-radius);color:var(--docsearch-text-color);font:var(--ifm-font-size-base) var(--ifm-font-family-base);margin-bottom:.5rem;padding:.8rem;transition:border var(--ifm-transition-fast) ease;width:100%}.searchQueryInput_u2C7:focus,.searchVersionInput_m0Ui:focus{border-color:var(--docsearch-primary-color);outline:0}.searchQueryInput_u2C7::placeholder{color:var(--docsearch-muted-color)}.searchResultsColumn_JPFH{font-size:.9rem;font-weight:700}.searchLogoColumn_rJIA{align-items:center;display:flex;gap:.5rem;justify-content:flex-end}.searchLogoColumn_rJIA span{color:var(--docsearch-muted-color);font-weight:400}.searchResultItem_Tv2o{border-bottom:1px solid var(--ifm-toc-border-color);padding:1rem 0}.searchResultItemHeading_KbCB{font-weight:400;margin-bottom:0}.searchResultItemPath_lhe1{color:var(--ifm-color-content-secondary);font-size:.8rem;--ifm-breadcrumb-separator-size-multiplier:1}.searchResultItemSummary_AEaO{font-style:italic;margin:.5rem 0 0}.loadingSpinner_XVxU{animation:1s linear infinite d;border:.4em solid #eee;border-radius:50%;border-top:.4em solid var(--ifm-color-primary);height:3rem;margin:0 auto;width:3rem}.authorSocialIcon_XYv3,.authorSocialLink_owbf,.authorSocials_rSDt{height:var(--docusaurus-blog-social-icon-size)}.authorSocialIcon_XYv3,.authorSocialLink_owbf{width:var(--docusaurus-blog-social-icon-size)}@keyframes d{to{transform:rotate(1turn)}}.loader_vvXV{margin-top:2rem}.search-result-match{background:#ffd78e40;color:var(--docsearch-hit-color);padding:.09em 0}[data-theme=dark] .blueskySvg_AzZw,[data-theme=dark] .githubSvg_Uu4N,[data-theme=dark] .instagramSvg_YC40,[data-theme=dark] .linkedinSvg_FCgI,[data-theme=dark] .threadsSvg_PTXY,[data-theme=dark] .xSvg_y3PF{fill:var(--light)}[data-theme=light] .blueskySvg_AzZw,[data-theme=light] .githubSvg_Uu4N,[data-theme=light] .instagramSvg_YC40,[data-theme=light] .linkedinSvg_FCgI,[data-theme=light] .threadsSvg_PTXY,[data-theme=light] .xSvg_y3PF{fill:var(--dark)}.authorSocials_rSDt{align-items:center;display:flex;flex-wrap:wrap;overflow:hidden;line-clamp:1;-webkit-line-clamp:1;-webkit-box-orient:vertical}.authorSocialLink_owbf,.authorSocials_rSDt{line-height:0}.authorSocialLink_owbf{margin-right:.4rem}.authorImage_XqGP{--ifm-avatar-photo-size:3.6rem}.author-as-h1_n9oJ .authorImage_XqGP{--ifm-avatar-photo-size:7rem}.author-as-h2_gXvM .authorImage_XqGP{--ifm-avatar-photo-size:5.4rem}.authorDetails_lV9A{align-items:flex-start;display:flex;flex-direction:column;justify-content:space-around}.authorName_yefp{display:flex;flex-direction:row;font-size:1.1rem;line-height:1.1rem}.author-as-h1_n9oJ .authorName_yefp{display:inline;font-size:2.4rem;line-height:2.4rem}.author-as-h2_gXvM .authorName_yefp{display:inline;font-size:1.4rem;line-height:1.4rem}.authorTitle_nd0D{display:-webkit-box;font-size:.8rem;line-height:1rem;overflow:hidden;line-clamp:1;-webkit-line-clamp:1;-webkit-box-orient:vertical}.author-as-h1_n9oJ .authorTitle_nd0D{font-size:1.2rem;line-height:1.6rem}.author-as-h2_gXvM .authorTitle_nd0D{font-size:1rem;line-height:1.3rem}.authorBlogPostCount_iiJ5{background:var(--ifm-color-secondary);border-radius:var(--ifm-global-radius);color:var(--ifm-color-black);font-size:.8rem;line-height:1.2;margin-left:.3rem;padding:.1rem .4rem}.buttonGroup_M5ko button,.codeBlockContainer_Ckt0{background:var(--prism-background-color);color:var(--prism-color)}.authorListItem_n3yI{list-style-type:none;margin-bottom:2rem}.authorCol_Hf19{max-width:inherit!important}.imageOnlyAuthorRow_pa_O{display:flex;flex-flow:row wrap}.buttons_AeoN,.features_t9lD{align-items:center;display:flex}.imageOnlyAuthorCol_G86a{margin-left:.3rem;margin-right:.3rem}.features_t9lD{padding:2rem 0;width:100%}.featureSvg_GfXr{height:200px;width:200px}.heroBanner_qdFl{overflow:hidden;padding:4rem 0;position:relative;text-align:center}.buttons_AeoN{justify-content:center}.codeBlockContainer_Ckt0{border-radius:var(--ifm-code-border-radius);box-shadow:var(--ifm-global-shadow-lw);margin-bottom:var(--ifm-leading)}.codeBlock_bY9V{--ifm-pre-background:var(--prism-background-color);margin:0;padding:0}.codeBlockLines_e6Vv{float:left;font:inherit;min-width:100%;padding:var(--ifm-pre-padding)}.codeBlockLinesWithNumbering_o6Pm{display:table;padding:var(--ifm-pre-padding) 0}:where(:root){--docusaurus-highlighted-code-line-bg:#484d5b}:where([data-theme=dark]){--docusaurus-highlighted-code-line-bg:#646464}.theme-code-block-highlighted-line{background-color:var(--docusaurus-highlighted-code-line-bg);display:block;margin:0 calc(var(--ifm-pre-padding)*-1);padding:0 var(--ifm-pre-padding)}.codeLine_lJS_{counter-increment:line-count;display:table-row}.codeLineNumber_Tfdd{background:var(--ifm-pre-background);display:table-cell;left:0;overflow-wrap:normal;padding:0 var(--ifm-pre-padding);position:sticky;text-align:right;width:1%}.codeLineNumber_Tfdd:before{content:counter(line-count);opacity:.4}.codeLineContent_feaV{padding-right:var(--ifm-pre-padding)}.theme-code-block:hover .copyButtonCopied_Vdqa{opacity:1!important}.copyButtonIcons_IEyt{height:1.125rem;position:relative;width:1.125rem}.copyButtonIcon_TrPX,.copyButtonSuccessIcon_cVMy{left:0;position:absolute;top:0;fill:currentColor;height:inherit;opacity:inherit;transition:all var(--ifm-transition-fast) ease;width:inherit}.copyButtonSuccessIcon_cVMy{color:#00d600;left:50%;opacity:0;top:50%;transform:translate(-50%,-50%) scale(.33)}.copyButtonCopied_Vdqa .copyButtonIcon_TrPX{opacity:0;transform:scale(.33)}.copyButtonCopied_Vdqa .copyButtonSuccessIcon_cVMy{opacity:1;transform:translate(-50%,-50%) scale(1);transition-delay:75ms}.wordWrapButtonIcon_b1P5{height:1.2rem;width:1.2rem}.buttonGroup_M5ko{column-gap:.2rem;display:flex;position:absolute;right:calc(var(--ifm-pre-padding)/2);top:calc(var(--ifm-pre-padding)/2)}.buttonGroup_M5ko button{align-items:center;border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-global-radius);display:flex;line-height:0;opacity:0;padding:.4rem;transition:opacity var(--ifm-transition-fast) ease-in-out}.buttonGroup_M5ko button:focus-visible,.buttonGroup_M5ko button:hover{opacity:1!important}.theme-code-block:hover .buttonGroup_M5ko button{opacity:.4}.codeBlockContent_QJqH{border-radius:inherit;direction:ltr;position:relative}.codeBlockTitle_OeMC{border-bottom:1px solid var(--ifm-color-emphasis-300);border-top-left-radius:inherit;border-top-right-radius:inherit;font-size:var(--ifm-code-font-size);font-weight:500;padding:.75rem var(--ifm-pre-padding)}.codeBlockTitle_OeMC+.codeBlockContent_QJqH .codeBlock_a8dz{border-top-left-radius:0;border-top-right-radius:0}.playgroundContainer_XwyR{border-radius:var(--ifm-global-radius);box-shadow:var(--ifm-global-shadow-lw);margin-bottom:var(--ifm-leading);overflow:hidden}.playgroundHeader_EIHj{background:var(--ifm-color-emphasis-200);color:var(--ifm-color-content);font-size:var(--ifm-code-font-size);font-weight:700;letter-spacing:.08rem;padding:.75rem}.playgroundHeader_EIHj:first-of-type{background:var(--ifm-color-emphasis-700);color:var(--ifm-color-content-inverse)}.playgroundPreview_bYPY{background-color:var(--ifm-pre-background);padding:1rem}.playgroundEditor_L2Ll{direction:ltr;font:var(--ifm-code-font-size)/var(--ifm-pre-line-height) var(--ifm-font-family-monospace)!important}.playgroundEditor_L2Ll pre{border-radius:0}.tag_zVej{border:1px solid var(--docusaurus-tag-list-border);transition:border var(--ifm-transition-fast)}.tag_zVej:hover{--docusaurus-tag-list-border:var(--ifm-link-color)}.tagRegular_sFm0{border-radius:var(--ifm-global-radius);font-size:90%;padding:.2rem .5rem .3rem}.tagWithCount_h2kH{align-items:center;border-left:0;display:flex;padding:0 .5rem 0 1rem;position:relative}.tagWithCount_h2kH:after,.tagWithCount_h2kH:before{border:1px solid var(--docusaurus-tag-list-border);content:"";position:absolute;top:50%;transition:inherit}.tagWithCount_h2kH:before{border-bottom:0;border-right:0;height:1.18rem;right:100%;transform:translate(50%,-50%) rotate(-45deg);width:1.18rem}.tagWithCount_h2kH:after{border-radius:50%;height:.5rem;left:0;transform:translateY(-50%);width:.5rem}.tagWithCount_h2kH span{background:var(--ifm-color-secondary);border-radius:var(--ifm-global-radius);color:var(--ifm-color-black);font-size:.7rem;line-height:1.2;margin-left:.3rem;padding:.1rem .4rem}.tag_Nnez{display:inline-block;margin:.5rem .5rem 0 1rem}.details_lb9f{--docusaurus-details-summary-arrow-size:0.38rem;--docusaurus-details-transition:transform 200ms ease;--docusaurus-details-decoration-color:grey}.details_lb9f>summary{cursor:pointer;list-style:none;padding-left:1rem;position:relative}.details_lb9f>summary::-webkit-details-marker{display:none}.details_lb9f>summary:before{border-color:#0000 #0000 #0000 var(--docusaurus-details-decoration-color);border-style:solid;border-width:var(--docusaurus-details-summary-arrow-size);content:"";left:0;position:absolute;top:.45rem;transform:rotate(0);transform-origin:calc(var(--docusaurus-details-summary-arrow-size)/2) 50%;transition:var(--docusaurus-details-transition)}.collapsibleContent_i85q{border-top:1px solid var(--docusaurus-details-decoration-color);margin-top:1rem;padding-top:1rem}.tags_jXut{display:inline}.tag_QGVx{display:inline-block;margin:0 .4rem .5rem 0}.iconEdit_Z9Sw{margin-right:.3em;vertical-align:sub}.details_b_Ee{--docusaurus-details-decoration-color:var(--ifm-alert-border-color);--docusaurus-details-transition:transform var(--ifm-transition-fast) ease;border:1px solid var(--ifm-alert-border-color);margin:0 0 var(--ifm-spacing-vertical)}.lastUpdated_JAkA{font-size:smaller;font-style:italic;margin-top:.2rem}.tocCollapsibleButton_TO0P{align-items:center;display:flex;font-size:inherit;justify-content:space-between;padding:.4rem .8rem;width:100%}.tocCollapsibleButton_TO0P:after{background:var(--ifm-menu-link-sublist-icon) 50% 50%/2rem 2rem no-repeat;content:"";filter:var(--ifm-menu-link-sublist-icon-filter);height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast);width:1.25rem}.tocCollapsibleButtonExpanded_MG3E:after,.tocCollapsibleExpanded_sAul{transform:none}.tocCollapsible_ETCw{background-color:var(--ifm-menu-color-background-active);border-radius:var(--ifm-global-radius);margin:1rem 0}.tocCollapsibleContent_vkbj>ul{border-left:none;border-top:1px solid var(--ifm-color-emphasis-300);font-size:15px;padding:.2rem 0}.tocCollapsibleContent_vkbj ul li{margin:.4rem .8rem}.containsTaskList_mC6p{list-style:none}.img_ev3q{height:auto}.admonition_xJq3{margin-bottom:1em}.admonitionHeading_Gvgb{font:var(--ifm-heading-font-weight) var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family)}.admonitionHeading_Gvgb:not(:last-child){margin-bottom:.3rem}.admonitionHeading_Gvgb code{text-transform:none}.admonitionIcon_Rf37{display:inline-block;margin-right:.4em;vertical-align:middle}.admonitionIcon_Rf37 svg{display:inline-block;height:1.6em;width:1.6em;fill:var(--ifm-alert-foreground-color)}.tableOfContents_bqdL{overflow-y:auto;position:sticky;top:calc(var(--ifm-navbar-height) + 1rem)}.breadcrumbHomeIcon_YNFT{height:1.1rem;position:relative;top:1px;vertical-align:top;width:1.1rem}.breadcrumbsContainer_Z_bl{--ifm-breadcrumb-size-multiplier:0.8;margin-bottom:.8rem}.mdxPageWrapper_j9I6{justify-content:center}@media (min-width:997px){.collapseSidebarButton_PEFL,.expandButton_TmdG{background-color:var(--docusaurus-collapse-button-bg)}:root{--docusaurus-announcement-bar-height:30px}.announcementBarClose_gvF7,.announcementBarPlaceholder_vyr4{flex-basis:50px}.collapseSidebarButton_PEFL{border:1px solid var(--ifm-toc-border-color);border-radius:0;bottom:0;display:block!important;height:40px;position:sticky}.collapseSidebarButtonIcon_kv0_{margin-top:4px;transform:rotate(180deg)}.expandButtonIcon_i1dp,[dir=rtl] .collapseSidebarButtonIcon_kv0_{transform:rotate(0)}.collapseSidebarButton_PEFL:focus,.collapseSidebarButton_PEFL:hover,.expandButton_TmdG:focus,.expandButton_TmdG:hover{background-color:var(--docusaurus-collapse-button-bg-hover)}.menuHtmlItem_M9Kj{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu_SIkG{flex-grow:1;padding:.5rem}@supports (scrollbar-gutter:stable){.menu_SIkG{padding:.5rem 0 .5rem .5rem;scrollbar-gutter:stable}}.menuWithAnnouncementBar_GW3s{margin-bottom:var(--docusaurus-announcement-bar-height)}.sidebar_njMd{display:flex;flex-direction:column;height:100%;padding-top:var(--ifm-navbar-height);width:var(--doc-sidebar-width)}.sidebarWithHideableNavbar_wUlq{padding-top:0}.sidebarHidden_VK0M{opacity:0;visibility:hidden}.sidebarLogo_isFc{align-items:center;color:inherit!important;display:flex!important;margin:0 var(--ifm-navbar-padding-horizontal);max-height:var(--ifm-navbar-height);min-height:var(--ifm-navbar-height);-webkit-text-decoration:none!important;text-decoration:none!important}.sidebarLogo_isFc img{height:2rem;margin-right:.5rem}.expandButton_TmdG{align-items:center;display:flex;height:100%;justify-content:center;position:absolute;right:0;top:0;transition:background-color var(--ifm-transition-fast) ease;width:100%}[dir=rtl] .expandButtonIcon_i1dp{transform:rotate(180deg)}.docSidebarContainer_YfHR{border-right:1px solid var(--ifm-toc-border-color);clip-path:inset(0);display:block;margin-top:calc(var(--ifm-navbar-height)*-1);transition:width var(--ifm-transition-fast) ease;width:var(--doc-sidebar-width);will-change:width}.docSidebarContainerHidden_DPk8{cursor:pointer;width:var(--doc-sidebar-hidden-width)}.sidebarViewport_aRkj{height:100%;max-height:100vh;position:sticky;top:0}.docMainContainer_TBSr{flex-grow:1;max-width:calc(100% - var(--doc-sidebar-width))}.docMainContainerEnhanced_lQrH{max-width:calc(100% - var(--doc-sidebar-hidden-width))}.docItemWrapperEnhanced_JWYK{max-width:calc(var(--ifm-container-width) + var(--doc-sidebar-width))!important}.navbarSearchContainer_Bca1{padding:0 var(--ifm-navbar-item-padding-horizontal)}.lastUpdated_JAkA{text-align:right}.tocMobile_ITEo{display:none}.docItemCol_VOVn{max-width:75%!important}}@media (min-width:1440px){.container{max-width:var(--ifm-container-width-xl)}}@media (max-width:996px){.col{--ifm-col-width:100%;flex-basis:var(--ifm-col-width);margin-left:0}.footer{--ifm-footer-padding-horizontal:0}.colorModeToggle_DEke,.footer__link-separator,.navbar__item,.sidebar_re4s,.tableOfContents_bqdL{display:none}.footer__col{margin-bottom:calc(var(--ifm-spacing-vertical)*3)}.footer__link-item{display:block;width:max-content}.hero{padding-left:0;padding-right:0}.navbar>.container,.navbar>.container-fluid{padding:0}.navbar__toggle{display:inherit}.navbar__search-input{width:9rem}.pills--block,.tabs--block{flex-direction:column}.navbarSearchContainer_Bca1{position:absolute;right:var(--ifm-navbar-padding-horizontal)}.docItemContainer_F8PC{padding:0 .3rem}}@media only screen and (max-width:996px){.searchQueryColumn_RTkw,.searchResultsColumn_JPFH{max-width:60%!important}.searchLogoColumn_rJIA,.searchVersionColumn_ypXd{max-width:40%!important}.searchLogoColumn_rJIA{padding-left:0!important}}@media screen and (max-width:996px){.heroBanner_qdFl{padding:2rem}}@media (max-width:768px){.DocSearch-Button{width:auto}.DocSearch-Button-Keys,.DocSearch-Button-Placeholder,.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}:root{--docsearch-spacing:10px;--docsearch-footer-height:48px}.DocSearch-Input{font-size:1rem}.DocSearch-Hit-AskAIButton-icon{margin-inline-end:8px}body:has(.DocSearch-Container){overflow:hidden;position:fixed}.DocSearch-Dropdown{height:100%;max-height:none}.DocSearch-Container{height:calc(var(--docsearch-vh,1vh)*100);height:100dvh}.DocSearch-Footer{border-radius:0;inset-block-end:0;position:static}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:calc(var(--docsearch-vh,1vh)*100);height:100dvh;margin:0;max-width:100%;width:100%}.DocSearch-AskAiScreen-Response-Container{flex-direction:column}.DocSearch-AskAiScreen-RelatedSources,.DocSearch-AskAiScreen-Response{width:100%}}@media (max-width:640px){.askai-suggestions{flex-direction:column}.askai-suggestion-btn{min-height:44px;text-align:left;width:100%}}@media (max-width:576px){.markdown h1:first-child{--ifm-h1-font-size:2rem}.markdown>h2{--ifm-h2-font-size:1.5rem}.markdown>h3{--ifm-h3-font-size:1.25rem}.title_f1Hy{font-size:2rem}}@media screen and (max-width:576px){.searchQueryColumn_RTkw{max-width:100%!important}.searchVersionColumn_ypXd{max-width:100%!important;padding-left:var(--ifm-spacing-horizontal)!important}}@media (hover:hover){.backToTopButton_sjWU:hover{background-color:var(--ifm-color-emphasis-300)}}@media (pointer:fine){.thin-scrollbar{scrollbar-width:thin}.thin-scrollbar::-webkit-scrollbar{height:var(--ifm-scrollbar-size);width:var(--ifm-scrollbar-size)}.thin-scrollbar::-webkit-scrollbar-track{background:var(--ifm-scrollbar-track-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb{background:var(--ifm-scrollbar-thumb-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb:hover{background:var(--ifm-scrollbar-thumb-hover-background-color)}}@media (prefers-reduced-motion:no-preference){.askai-suggestion-btn{animation:.3s forwards e;opacity:0;transform:translateY(8px)}.askai-suggestion-btn:nth-child(2){animation-delay:75ms}.askai-suggestion-btn:nth-child(3){animation-delay:.15s}.askai-suggestion-btn:nth-child(4){animation-delay:225ms}@keyframes e{to{opacity:1;transform:translateY(0)}}}@media (prefers-reduced-motion:reduce){:root{--ifm-transition-fast:0ms;--ifm-transition-slow:0ms}}@media (prefers-reduced-motion){.DocSearch-Button-Key{transition:none}}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Action{animation:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;inset-inline-end:0;stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:none}}@media print{.announcementBar_mb4j,.footer,.menu,.navbar,.noPrint_WFHX,.pagination-nav,.table-of-contents,.tocMobile_ITEo{display:none}.tabs{page-break-inside:avoid}.codeBlockLines_e6Vv{white-space:pre-wrap}} \ No newline at end of file diff --git a/docs/images/popular-extensions/1-2-3.gif b/assets/images/1-2-3-2baddde7c9b006e7c84dfaf449d2f2c9.gif similarity index 100% rename from docs/images/popular-extensions/1-2-3.gif rename to assets/images/1-2-3-2baddde7c9b006e7c84dfaf449d2f2c9.gif diff --git a/docs/images/beautifyCode/Beautify-Code-after-save.png b/assets/images/Beautify-Code-after-save-82acb2723da86a54d9302d0874831c2b.png similarity index 100% rename from docs/images/beautifyCode/Beautify-Code-after-save.png rename to assets/images/Beautify-Code-after-save-82acb2723da86a54d9302d0874831c2b.png diff --git a/docs/images/beautifyCode/Context-Menu.png b/assets/images/Context-Menu-8173aa5d559f358ddc3fd6054581e178.png similarity index 100% rename from docs/images/beautifyCode/Context-Menu.png rename to assets/images/Context-Menu-8173aa5d559f358ddc3fd6054581e178.png diff --git a/docs/images/popular-extensions/Func-Docr.gif b/assets/images/Func-Docr-c8a17e10862c5855bc4e241cd40cd548.gif similarity index 100% rename from docs/images/popular-extensions/Func-Docr.gif rename to assets/images/Func-Docr-c8a17e10862c5855bc4e241cd40cd548.gif diff --git a/docs/images/popular-extensions/Show-Whitespace.png b/assets/images/Show-Whitespace-7af1837294998ace257ae52aeeebb935.png similarity index 100% rename from docs/images/popular-extensions/Show-Whitespace.png rename to assets/images/Show-Whitespace-7af1837294998ace257ae52aeeebb935.png diff --git a/docs/images/edu/activate-edu-license.png b/assets/images/activate-edu-license-4e9f1f80f1c2a90bc87aedca55403203.png similarity index 100% rename from docs/images/edu/activate-edu-license.png rename to assets/images/activate-edu-license-4e9f1f80f1c2a90bc87aedca55403203.png diff --git a/docs/images/CustomSnippets/add-snippet.png b/assets/images/add-snippet-7ccf5b31a43851dbe05ec38ca6733d93.png similarity index 100% rename from docs/images/CustomSnippets/add-snippet.png rename to assets/images/add-snippet-7ccf5b31a43851dbe05ec38ca6733d93.png diff --git a/docs/images/CustomSnippets/add-snippet-panel.png b/assets/images/add-snippet-panel-7a57a0f2198b515d9c00f99425bc0b03.png similarity index 100% rename from docs/images/CustomSnippets/add-snippet-panel.png rename to assets/images/add-snippet-panel-7a57a0f2198b515d9c00f99425bc0b03.png diff --git a/docs/images/CustomSnippets/after-edit-snippet.png b/assets/images/after-edit-snippet-3dd8215740509bc5caa57f481aadcdca.png similarity index 100% rename from docs/images/CustomSnippets/after-edit-snippet.png rename to assets/images/after-edit-snippet-3dd8215740509bc5caa57f481aadcdca.png diff --git a/docs/images/pro/ai-attach-dropdown.png b/assets/images/ai-attach-dropdown-784ff31d32b89626ad3e713ea4003537.png similarity index 100% rename from docs/images/pro/ai-attach-dropdown.png rename to assets/images/ai-attach-dropdown-784ff31d32b89626ad3e713ea4003537.png diff --git a/docs/images/pro/ai-chat-panel.png b/assets/images/ai-chat-panel-b0b0d9b641a0101804099ea7afc7313b.png similarity index 100% rename from docs/images/pro/ai-chat-panel.png rename to assets/images/ai-chat-panel-b0b0d9b641a0101804099ea7afc7313b.png diff --git a/docs/images/pro/ai-chips.png b/assets/images/ai-chips-0b33a8c34b1201fe4489dfa2ce9e7ead.png similarity index 100% rename from docs/images/pro/ai-chips.png rename to assets/images/ai-chips-0b33a8c34b1201fe4489dfa2ce9e7ead.png diff --git a/docs/images/pro/ai-diff.png b/assets/images/ai-diff-d8e662b0eed142007395e8f7f4301e15.png similarity index 100% rename from docs/images/pro/ai-diff.png rename to assets/images/ai-diff-d8e662b0eed142007395e8f7f4301e15.png diff --git a/docs/images/pro/ai-history.png b/assets/images/ai-history-d817a0b975a1ea768e4aa6d5500a8864.png similarity index 100% rename from docs/images/pro/ai-history.png rename to assets/images/ai-history-d817a0b975a1ea768e4aa6d5500a8864.png diff --git a/docs/images/pro/ai-permissions.png b/assets/images/ai-permissions-4a614c6b00f5c955c6ea7a7ba79104ed.png similarity index 100% rename from docs/images/pro/ai-permissions.png rename to assets/images/ai-permissions-4a614c6b00f5c955c6ea7a7ba79104ed.png diff --git a/docs/images/pro/ai-screenshot-dropdown.png b/assets/images/ai-screenshot-dropdown-739f02b4602fe7a0cd6a1bf08b1814c6.png similarity index 100% rename from docs/images/pro/ai-screenshot-dropdown.png rename to assets/images/ai-screenshot-dropdown-739f02b4602fe7a0cd6a1bf08b1814c6.png diff --git a/docs/images/pro/ai-settings.png b/assets/images/ai-settings-87168e345e0d965d0a66bfa1403dfdcd.png similarity index 100% rename from docs/images/pro/ai-settings.png rename to assets/images/ai-settings-87168e345e0d965d0a66bfa1403dfdcd.png diff --git a/docs/images/pro/ai-settings-dialog.png b/assets/images/ai-settings-dialog-2db5a84268eac13befff6d988b5486b9.png similarity index 100% rename from docs/images/pro/ai-settings-dialog.png rename to assets/images/ai-settings-dialog-2db5a84268eac13befff6d988b5486b9.png diff --git a/docs/images/pro/ai-stop.png b/assets/images/ai-stop-3d1698784f0e06c84de3ad18133c3ae0.png similarity index 100% rename from docs/images/pro/ai-stop.png rename to assets/images/ai-stop-3d1698784f0e06c84de3ad18133c3ae0.png diff --git a/docs/images/pro/ai-undo.png b/assets/images/ai-undo-63f2cbf78b22e66a28ec0df67a16f7f2.png similarity index 100% rename from docs/images/pro/ai-undo.png rename to assets/images/ai-undo-63f2cbf78b22e66a28ec0df67a16f7f2.png diff --git a/docs/images/keyboard/assign.png b/assets/images/assign-f7883c143ca6438f8c7afc27beae385c.png similarity index 100% rename from docs/images/keyboard/assign.png rename to assets/images/assign-f7883c143ca6438f8c7afc27beae385c.png diff --git a/docs/images/editingText/auto-rename-tag.png b/assets/images/auto-rename-tag-be192184dd67f581688f906ca00eddaf.png similarity index 100% rename from docs/images/editingText/auto-rename-tag.png rename to assets/images/auto-rename-tag-be192184dd67f581688f906ca00eddaf.png diff --git a/docs/images/editingText/auto-spacing.png b/assets/images/auto-spacing-f95f4ad94872c5fbbee504a125215035.png similarity index 100% rename from docs/images/editingText/auto-spacing.png rename to assets/images/auto-spacing-f95f4ad94872c5fbbee504a125215035.png diff --git a/api/08-How-To/images/bottom-panel.png b/assets/images/bottom-panel-84e2d0bb50feeac59a7f228347e97015.png similarity index 100% rename from api/08-How-To/images/bottom-panel.png rename to assets/images/bottom-panel-84e2d0bb50feeac59a7f228347e97015.png diff --git a/api/08-How-To/images/bottom-panel-example.png b/assets/images/bottom-panel-example-d7b102fe2a72cdf87672dde01cf97705.png similarity index 100% rename from api/08-How-To/images/bottom-panel-example.png rename to assets/images/bottom-panel-example-d7b102fe2a72cdf87672dde01cf97705.png diff --git a/docs/images/beautifyCode/bracketSameLine-false.png b/assets/images/bracketSameLine-false-5cddd00f353ce49fe53bc4a15e92a4d8.png similarity index 100% rename from docs/images/beautifyCode/bracketSameLine-false.png rename to assets/images/bracketSameLine-false-5cddd00f353ce49fe53bc4a15e92a4d8.png diff --git a/docs/images/beautifyCode/bracketSameLine-true.png b/assets/images/bracketSameLine-true-49e7c4cffaa9809a9cd50a55cedf707f.png similarity index 100% rename from docs/images/beautifyCode/bracketSameLine-true.png rename to assets/images/bracketSameLine-true-49e7c4cffaa9809a9cd50a55cedf707f.png diff --git a/docs/images/editingColors/colorHints.png b/assets/images/colorHints-2b430e5fb6f41382012636317a7fe8ca.png similarity index 100% rename from docs/images/editingColors/colorHints.png rename to assets/images/colorHints-2b430e5fb6f41382012636317a7fe8ca.png diff --git a/docs/images/editingColors/colorPicker.png b/assets/images/colorPicker-5fb509811cd885dc6bad0b903c558e95.png similarity index 100% rename from docs/images/editingColors/colorPicker.png rename to assets/images/colorPicker-5fb509811cd885dc6bad0b903c558e95.png diff --git a/docs/images/editingColors/colorPreview.png b/assets/images/colorPreview-0c906adc6f19225724362382e11afd2a.png similarity index 100% rename from docs/images/editingColors/colorPreview.png rename to assets/images/colorPreview-0c906adc6f19225724362382e11afd2a.png diff --git a/docs/images/editingColors/colorPreviewHover.png b/assets/images/colorPreviewHover-c67ffee8b9c6e6de0eaeef2e43102438.png similarity index 100% rename from docs/images/editingColors/colorPreviewHover.png rename to assets/images/colorPreviewHover-c67ffee8b9c6e6de0eaeef2e43102438.png diff --git a/docs/images/git-images/commit-dialog.png b/assets/images/commit-dialog-58df3dd71e62d5199135e6ef01bc5421.png similarity index 100% rename from docs/images/git-images/commit-dialog.png rename to assets/images/commit-dialog-58df3dd71e62d5199135e6ef01bc5421.png diff --git a/api/images/publishing-extensions/compress-to-zip.png b/assets/images/compress-to-zip-c4c9896983e9859f5f1a40a39bcc5fa2.png similarity index 100% rename from api/images/publishing-extensions/compress-to-zip.png rename to assets/images/compress-to-zip-c4c9896983e9859f5f1a40a39bcc5fa2.png diff --git a/docs/images/pro/control-box.png b/assets/images/control-box-c1ae95fb08a3548ffa4739cb5762a236.png similarity index 100% rename from docs/images/pro/control-box.png rename to assets/images/control-box-c1ae95fb08a3548ffa4739cb5762a236.png diff --git a/api/images/publishing-extensions/create-new-tag.png b/assets/images/create-new-tag-e6e42d0ef9e8feae8b11c9449b42e0ab.png similarity index 100% rename from api/images/publishing-extensions/create-new-tag.png rename to assets/images/create-new-tag-e6e42d0ef9e8feae8b11c9449b42e0ab.png diff --git a/api/08-How-To/images/custom-dialog-box-gif.gif b/assets/images/custom-dialog-box-gif-11573dfb6efabd5555e4bb9f6b5c73ee.gif similarity index 100% rename from api/08-How-To/images/custom-dialog-box-gif.gif rename to assets/images/custom-dialog-box-gif-11573dfb6efabd5555e4bb9f6b5c73ee.gif diff --git a/api/08-How-To/images/custom-dialog.png b/assets/images/custom-dialog-fb30b696c3fa6e2736f84a24e76e1e6f.png similarity index 100% rename from api/08-How-To/images/custom-dialog.png rename to assets/images/custom-dialog-fb30b696c3fa6e2736f84a24e76e1e6f.png diff --git a/docs/images/CustomSnippets/custom-snippet-example.png b/assets/images/custom-snippet-example-83489ee1ec306855c06ad2ac43604316.png similarity index 100% rename from docs/images/CustomSnippets/custom-snippet-example.png rename to assets/images/custom-snippet-example-83489ee1ec306855c06ad2ac43604316.png diff --git a/docs/images/CustomSnippets/custom-snippet-icon.png b/assets/images/custom-snippet-icon-ffdc5bff906637ae27de8086e58c5b0b.png similarity index 100% rename from docs/images/CustomSnippets/custom-snippet-icon.png rename to assets/images/custom-snippet-icon-ffdc5bff906637ae27de8086e58c5b0b.png diff --git a/docs/images/CustomSnippets/custom-snippets-count.png b/assets/images/custom-snippets-count-d424aa3b6b9ad340e3fcbc522d362227.png similarity index 100% rename from docs/images/CustomSnippets/custom-snippets-count.png rename to assets/images/custom-snippets-count-d424aa3b6b9ad340e3fcbc522d362227.png diff --git a/docs/images/CustomSnippets/custom-snippets-empty-panel.png b/assets/images/custom-snippets-empty-panel-d8d8cfb85aaf8e0176d7fa08347acd5d.png similarity index 100% rename from docs/images/CustomSnippets/custom-snippets-empty-panel.png rename to assets/images/custom-snippets-empty-panel-d8d8cfb85aaf8e0176d7fa08347acd5d.png diff --git a/docs/images/CustomSnippets/custom-snippets-menu-item.png b/assets/images/custom-snippets-menu-item-f963aee4552d131878e5d81238c6a149.png similarity index 100% rename from docs/images/CustomSnippets/custom-snippets-menu-item.png rename to assets/images/custom-snippets-menu-item-f963aee4552d131878e5d81238c6a149.png diff --git a/api/images/creating-themes/debug-menu.png b/assets/images/debug-menu-23e79f25995442a5665046bc8c8d6bb4.png similarity index 100% rename from api/images/creating-themes/debug-menu.png rename to assets/images/debug-menu-23e79f25995442a5665046bc8c8d6bb4.png diff --git a/api/images/debugging-extensions/debug-menu.png b/assets/images/debug-menu-7e3985c7795c1611a028d64bfcf78d1b.png similarity index 100% rename from api/images/debugging-extensions/debug-menu.png rename to assets/images/debug-menu-7e3985c7795c1611a028d64bfcf78d1b.png diff --git a/api/images/creating-themes/default-theme.png b/assets/images/default-theme-64592ea9b5bd9a0ef9c5e59115a8c5c2.png similarity index 100% rename from api/images/creating-themes/default-theme.png rename to assets/images/default-theme-64592ea9b5bd9a0ef9c5e59115a8c5c2.png diff --git a/docs/images/git-images/delete-branch.png b/assets/images/delete-branch-830998fd338a5d691c06276d8b9d81ee.png similarity index 100% rename from docs/images/git-images/delete-branch.png rename to assets/images/delete-branch-830998fd338a5d691c06276d8b9d81ee.png diff --git a/docs/images/CustomSnippets/delete-snippet.png b/assets/images/delete-snippet-8576a735d0b8387f4569dcc95c790ec8.png similarity index 100% rename from docs/images/CustomSnippets/delete-snippet.png rename to assets/images/delete-snippet-8576a735d0b8387f4569dcc95c790ec8.png diff --git a/docs/images/designMode/design-mode-layout.png b/assets/images/design-mode-layout-42488219328638520697b7c6a63b9b2c.png similarity index 100% rename from docs/images/designMode/design-mode-layout.png rename to assets/images/design-mode-layout-42488219328638520697b7c6a63b9b2c.png diff --git a/docs/images/designMode/design-mode-toggle.png b/assets/images/design-mode-toggle-6cb723b6f8e48a9c1785ecd96f8b2923.png similarity index 100% rename from docs/images/designMode/design-mode-toggle.png rename to assets/images/design-mode-toggle-6cb723b6f8e48a9c1785ecd96f8b2923.png diff --git a/api/images/debugging-extensions/dev-tools.png b/assets/images/dev-tools-fa3423a19be0adb8f15e7a86fe980484.png similarity index 100% rename from api/images/debugging-extensions/dev-tools.png rename to assets/images/dev-tools-fa3423a19be0adb8f15e7a86fe980484.png diff --git a/docs/images/pro/device-size-dropdown.png b/assets/images/device-size-dropdown-0fd90b6ab85ae938853591b254bcd7a7.png similarity index 100% rename from docs/images/pro/device-size-dropdown.png rename to assets/images/device-size-dropdown-0fd90b6ab85ae938853591b254bcd7a7.png diff --git a/api/images/debugging-extensions/diagnostic-tools.png b/assets/images/diagnostic-tools-d4d75e4236de3d3d8ae52cfe5f76fd37.png similarity index 100% rename from api/images/debugging-extensions/diagnostic-tools.png rename to assets/images/diagnostic-tools-d4d75e4236de3d3d8ae52cfe5f76fd37.png diff --git a/docs/images/fileManagement/disable-tab-bar-1.png b/assets/images/disable-tab-bar-1-cebe5cbc905e0db85b6bda6675a74302.png similarity index 100% rename from docs/images/fileManagement/disable-tab-bar-1.png rename to assets/images/disable-tab-bar-1-cebe5cbc905e0db85b6bda6675a74302.png diff --git a/docs/images/fileManagement/disable-tab-bar-2.png b/assets/images/disable-tab-bar-2-64fb27b6f4f5e685286a97e9b0fcc6d4.png similarity index 100% rename from docs/images/fileManagement/disable-tab-bar-2.png rename to assets/images/disable-tab-bar-2-64fb27b6f4f5e685286a97e9b0fcc6d4.png diff --git a/docs/images/fileManagement/disable-working-files.png b/assets/images/disable-working-files-60ebca46987836c2bc0a9e6524433b64.png similarity index 100% rename from docs/images/fileManagement/disable-working-files.png rename to assets/images/disable-working-files-60ebca46987836c2bc0a9e6524433b64.png diff --git a/docs/images/git-images/discard-all-changes.png b/assets/images/discard-all-changes-c8b7b745866759d1ffbe6a1b1986c560.png similarity index 100% rename from docs/images/git-images/discard-all-changes.png rename to assets/images/discard-all-changes-c8b7b745866759d1ffbe6a1b1986c560.png diff --git a/docs/images/git-images/discard-changes.png b/assets/images/discard-changes-b01df6d57b21e9a2c307efe9ecc24412.png similarity index 100% rename from docs/images/git-images/discard-changes.png rename to assets/images/discard-changes-b01df6d57b21e9a2c307efe9ecc24412.png diff --git a/docs/images/Website/download.png b/assets/images/download-9d5503efc2ad929ae758ab9712c31b47.png similarity index 100% rename from docs/images/Website/download.png rename to assets/images/download-9d5503efc2ad929ae758ab9712c31b47.png diff --git a/docs/images/Website/downloadOptions.png b/assets/images/downloadOptions-59fa63c46fc30b1c8bfac73a5895926d.png similarity index 100% rename from docs/images/Website/downloadOptions.png rename to assets/images/downloadOptions-59fa63c46fc30b1c8bfac73a5895926d.png diff --git a/api/images/publishing-extensions/draft-new-release.png b/assets/images/draft-new-release-d98ab78386636a766c7921acd265bef4.png similarity index 100% rename from api/images/publishing-extensions/draft-new-release.png rename to assets/images/draft-new-release-d98ab78386636a766c7921acd265bef4.png diff --git a/api/images/publishing-extensions/drag-drop.gif b/assets/images/drag-drop-946ba662d98f0acdd52c5e1d60795e2e.gif similarity index 100% rename from api/images/publishing-extensions/drag-drop.gif rename to assets/images/drag-drop-946ba662d98f0acdd52c5e1d60795e2e.gif diff --git a/docs/images/CustomSnippets/edit-snippet.png b/assets/images/edit-snippet-cc007f151f132d865283e7c03f418c75.png similarity index 100% rename from docs/images/CustomSnippets/edit-snippet.png rename to assets/images/edit-snippet-cc007f151f132d865283e7c03f418c75.png diff --git a/docs/images/pro/element-properties.png b/assets/images/element-properties-042058b9f6ae7071eae412d838980f8c.png similarity index 100% rename from docs/images/pro/element-properties.png rename to assets/images/element-properties-042058b9f6ae7071eae412d838980f8c.png diff --git a/docs/images/Emmet/emmet-link-mdn.png b/assets/images/emmet-link-mdn-7dad55e620c8c0f3fd8de43f852418d8.png similarity index 100% rename from docs/images/Emmet/emmet-link-mdn.png rename to assets/images/emmet-link-mdn-7dad55e620c8c0f3fd8de43f852418d8.png diff --git a/docs/images/pro/enable-show-measurements.png b/assets/images/enable-show-measurements-6269f78f8c6fe1d060fd682ebe2d4cbb.png similarity index 100% rename from docs/images/pro/enable-show-measurements.png rename to assets/images/enable-show-measurements-6269f78f8c6fe1d060fd682ebe2d4cbb.png diff --git a/docs/images/extensions/extension-manager-button.png b/assets/images/extension-manager-button-467fe5a1b8e23ada40a5990a2cffa081.png similarity index 100% rename from docs/images/extensions/extension-manager-button.png rename to assets/images/extension-manager-button-467fe5a1b8e23ada40a5990a2cffa081.png diff --git a/api/images/publishing-extensions/extension-store.png b/assets/images/extension-store-55e5afd0adb2291385a92325ac98317e.png similarity index 100% rename from api/images/publishing-extensions/extension-store.png rename to assets/images/extension-store-55e5afd0adb2291385a92325ac98317e.png diff --git a/docs/images/find/fif.png b/assets/images/fif-750c256065fa01ad80939c7aab57a891.png similarity index 100% rename from docs/images/find/fif.png rename to assets/images/fif-750c256065fa01ad80939c7aab57a891.png diff --git a/docs/images/editingText/file-association.png b/assets/images/file-association-fe9fbd627e34eaad9b5f0add2c39e169.png similarity index 100% rename from docs/images/editingText/file-association.png rename to assets/images/file-association-fe9fbd627e34eaad9b5f0add2c39e169.png diff --git a/docs/images/editingText/file-encoding.png b/assets/images/file-encoding-c19da2809b2fa0272b04962466b77ea1.png similarity index 100% rename from docs/images/editingText/file-encoding.png rename to assets/images/file-encoding-c19da2809b2fa0272b04962466b77ea1.png diff --git a/docs/images/fileManagement/file-recovery.png b/assets/images/file-recovery-5a5349b0f89a7b80569b77ed7b04cd98.png similarity index 100% rename from docs/images/fileManagement/file-recovery.png rename to assets/images/file-recovery-5a5349b0f89a7b80569b77ed7b04cd98.png diff --git a/docs/images/fileManagement/file-tree.png b/assets/images/file-tree-892c570f63e758bd6e1b4a24c4658a71.png similarity index 100% rename from docs/images/fileManagement/file-tree.png rename to assets/images/file-tree-892c570f63e758bd6e1b4a24c4658a71.png diff --git a/docs/images/fileManagement/file-tree-context-menu-key-shortcut.png b/assets/images/file-tree-context-menu-key-shortcut-4fbbcca0c1c778a4f4753b28626ae337.png similarity index 100% rename from docs/images/fileManagement/file-tree-context-menu-key-shortcut.png rename to assets/images/file-tree-context-menu-key-shortcut-4fbbcca0c1c778a4f4753b28626ae337.png diff --git a/docs/images/fileManagement/file-tree-sort-folders-option.png b/assets/images/file-tree-sort-folders-option-94c171a477281d7c88dac73bb8ddbcc6.png similarity index 100% rename from docs/images/fileManagement/file-tree-sort-folders-option.png rename to assets/images/file-tree-sort-folders-option-94c171a477281d7c88dac73bb8ddbcc6.png diff --git a/docs/images/fileManagement/file-tree-sorted.png b/assets/images/file-tree-sorted-b12e9c2853aaed30418feb10cf19eb57.png similarity index 100% rename from docs/images/fileManagement/file-tree-sorted.png rename to assets/images/file-tree-sorted-b12e9c2853aaed30418feb10cf19eb57.png diff --git a/docs/images/CustomSnippets/filter-snippet.png b/assets/images/filter-snippet-3f007c72da08c28f513d70181731b521.png similarity index 100% rename from docs/images/CustomSnippets/filter-snippet.png rename to assets/images/filter-snippet-3f007c72da08c28f513d70181731b521.png diff --git a/docs/images/find/folder.png b/assets/images/folder-1d082044530ff0ee5776a2f2255f6f49.png similarity index 100% rename from docs/images/find/folder.png rename to assets/images/folder-1d082044530ff0ee5776a2f2255f6f49.png diff --git a/docs/images/pro/folder-selection-button.png b/assets/images/folder-selection-button-9211a4549bb50539a4ee0ffd63b8975a.png similarity index 100% rename from docs/images/pro/folder-selection-button.png rename to assets/images/folder-selection-button-9211a4549bb50539a4ee0ffd63b8975a.png diff --git a/docs/images/pro/folder-selection-dialog.png b/assets/images/folder-selection-dialog-64a3c2fb5003b60bc8eea3f419fedebe.png similarity index 100% rename from docs/images/pro/folder-selection-dialog.png rename to assets/images/folder-selection-dialog-64a3c2fb5003b60bc8eea3f419fedebe.png diff --git a/docs/images/pro/formatting-more.png b/assets/images/formatting-more-c0aa5b3a0757252c42110637508c1aa3.png similarity index 100% rename from docs/images/pro/formatting-more.png rename to assets/images/formatting-more-c0aa5b3a0757252c42110637508c1aa3.png diff --git a/docs/images/pro/formatting-toolbar.png b/assets/images/formatting-toolbar-e8a66820b21615991d02f3bb8e187306.png similarity index 100% rename from docs/images/pro/formatting-toolbar.png rename to assets/images/formatting-toolbar-e8a66820b21615991d02f3bb8e187306.png diff --git a/docs/images/git-images/get-from-git.png b/assets/images/get-from-git-c9f09b8c00dda57695fc065ace4a08ba.png similarity index 100% rename from docs/images/git-images/get-from-git.png rename to assets/images/get-from-git-c9f09b8c00dda57695fc065ace4a08ba.png diff --git a/docs/images/git-images/get-from-git-dialog.png b/assets/images/get-from-git-dialog-ca73be7458b6ad7dfbc5b9458562abf0.png similarity index 100% rename from docs/images/git-images/get-from-git-dialog.png rename to assets/images/get-from-git-dialog-ca73be7458b6ad7dfbc5b9458562abf0.png diff --git a/docs/images/git-images/git-branch.png b/assets/images/git-branch-6d1ce95f746409044e152b8944194c7a.png similarity index 100% rename from docs/images/git-images/git-branch.png rename to assets/images/git-branch-6d1ce95f746409044e152b8944194c7a.png diff --git a/docs/images/git-images/git-clone-dialog.png b/assets/images/git-clone-dialog-e5966df936decf6d03618a3123d295c3.png similarity index 100% rename from docs/images/git-images/git-clone-dialog.png rename to assets/images/git-clone-dialog-e5966df936decf6d03618a3123d295c3.png diff --git a/docs/images/git-images/git-clone-more-options.png b/assets/images/git-clone-more-options-647157d400324163161cd7663c125812.png similarity index 100% rename from docs/images/git-images/git-clone-more-options.png rename to assets/images/git-clone-more-options-647157d400324163161cd7663c125812.png diff --git a/docs/images/git-images/git-commit.png b/assets/images/git-commit-cadf7ef1960a86877135ff05f7ee5165.png similarity index 100% rename from docs/images/git-images/git-commit.png rename to assets/images/git-commit-cadf7ef1960a86877135ff05f7ee5165.png diff --git a/docs/images/git-images/git-commit-errors.png b/assets/images/git-commit-errors-95987108d89e710113b68e357fc75a7d.png similarity index 100% rename from docs/images/git-images/git-commit-errors.png rename to assets/images/git-commit-errors-95987108d89e710113b68e357fc75a7d.png diff --git a/docs/images/git-images/git-delete-remote.png b/assets/images/git-delete-remote-bf2fa7eaf6e0742800a5a54074dbaf13.png similarity index 100% rename from docs/images/git-images/git-delete-remote.png rename to assets/images/git-delete-remote-bf2fa7eaf6e0742800a5a54074dbaf13.png diff --git a/docs/images/git-images/git-diff-dialog.png b/assets/images/git-diff-dialog-64e6728aa787d37e8dad2b4edd767cda.png similarity index 100% rename from docs/images/git-images/git-diff-dialog.png rename to assets/images/git-diff-dialog-64e6728aa787d37e8dad2b4edd767cda.png diff --git a/docs/images/git-images/git-diff-icon.png b/assets/images/git-diff-icon-99207ec802e288d371a92b9e1acd452a.png similarity index 100% rename from docs/images/git-images/git-diff-icon.png rename to assets/images/git-diff-icon-99207ec802e288d371a92b9e1acd452a.png diff --git a/docs/images/git-images/git-fetch.png b/assets/images/git-fetch-fc0c766770f3d1ac3573ef0cc9794ae9.png similarity index 100% rename from docs/images/git-images/git-fetch.png rename to assets/images/git-fetch-fc0c766770f3d1ac3573ef0cc9794ae9.png diff --git a/docs/images/git-images/git-init.png b/assets/images/git-init-8b4fa883030b8b0018a2c3f9250886da.png similarity index 100% rename from docs/images/git-images/git-init.png rename to assets/images/git-init-8b4fa883030b8b0018a2c3f9250886da.png diff --git a/docs/images/git-images/git-menu.png b/assets/images/git-menu-7abfadf236379bc301d27968ef61713b.png similarity index 100% rename from docs/images/git-images/git-menu.png rename to assets/images/git-menu-7abfadf236379bc301d27968ef61713b.png diff --git a/docs/images/git-images/git-menu-from-panel.png b/assets/images/git-menu-from-panel-21267375e96c076f640af93cf6e12042.png similarity index 100% rename from docs/images/git-images/git-menu-from-panel.png rename to assets/images/git-menu-from-panel-21267375e96c076f640af93cf6e12042.png diff --git a/docs/images/git-images/git-new-branch-dialog.png b/assets/images/git-new-branch-dialog-9c263752ef9dd7e258c869ebacadf00a.png similarity index 100% rename from docs/images/git-images/git-new-branch-dialog.png rename to assets/images/git-new-branch-dialog-9c263752ef9dd7e258c869ebacadf00a.png diff --git a/docs/images/git-images/git-overview.png b/assets/images/git-overview-f251dd919a3c527f94c7efe809f2356a.png similarity index 100% rename from docs/images/git-images/git-overview.png rename to assets/images/git-overview-f251dd919a3c527f94c7efe809f2356a.png diff --git a/docs/images/git-images/git-panel.png b/assets/images/git-panel-5b7c8f0ab36655f000ddf30410ba85a0.png similarity index 100% rename from docs/images/git-images/git-panel.png rename to assets/images/git-panel-5b7c8f0ab36655f000ddf30410ba85a0.png diff --git a/docs/images/git-images/git-pull-dialog.png b/assets/images/git-pull-dialog-abea69ac10247830d71eff48deeacb56.png similarity index 100% rename from docs/images/git-images/git-pull-dialog.png rename to assets/images/git-pull-dialog-abea69ac10247830d71eff48deeacb56.png diff --git a/docs/images/git-images/git-pull.png b/assets/images/git-pull-f110a922be3a7e21825b38e523614345.png similarity index 100% rename from docs/images/git-images/git-pull.png rename to assets/images/git-pull-f110a922be3a7e21825b38e523614345.png diff --git a/docs/images/git-images/git-push.png b/assets/images/git-push-90a5d6275eedb65ae98f4cfac79d910f.png similarity index 100% rename from docs/images/git-images/git-push.png rename to assets/images/git-push-90a5d6275eedb65ae98f4cfac79d910f.png diff --git a/docs/images/git-images/git-push-error.png b/assets/images/git-push-error-0c2f8b9c01bf563461a57818f3664b51.png similarity index 100% rename from docs/images/git-images/git-push-error.png rename to assets/images/git-push-error-0c2f8b9c01bf563461a57818f3664b51.png diff --git a/docs/images/git-images/git-push-more-options.png b/assets/images/git-push-more-options-096e949f021dbca54f9e909497e6987e.png similarity index 100% rename from docs/images/git-images/git-push-more-options.png rename to assets/images/git-push-more-options-096e949f021dbca54f9e909497e6987e.png diff --git a/docs/images/git-images/git-remote.png b/assets/images/git-remote-801d26af448dead2b5299ec59b3656fd.png similarity index 100% rename from docs/images/git-images/git-remote.png rename to assets/images/git-remote-801d26af448dead2b5299ec59b3656fd.png diff --git a/docs/images/git-images/git-remote-name.png b/assets/images/git-remote-name-d561e5dcb0e2f0f503b3098067f0b890.png similarity index 100% rename from docs/images/git-images/git-remote-name.png rename to assets/images/git-remote-name-d561e5dcb0e2f0f503b3098067f0b890.png diff --git a/docs/images/git-images/git-settings-dialog.png b/assets/images/git-settings-dialog-32f4dccda01b84f0a80c85bcc061a7cd.png similarity index 100% rename from docs/images/git-images/git-settings-dialog.png rename to assets/images/git-settings-dialog-32f4dccda01b84f0a80c85bcc061a7cd.png diff --git a/docs/images/git-images/git-settings-from-file-menu.png b/assets/images/git-settings-from-file-menu-7fdb38e7382abf7402f34b461cc3fe2a.png similarity index 100% rename from docs/images/git-images/git-settings-from-file-menu.png rename to assets/images/git-settings-from-file-menu-7fdb38e7382abf7402f34b461cc3fe2a.png diff --git a/docs/images/git-images/git-settings-from-panel.png b/assets/images/git-settings-from-panel-3e504985b2d407e84c53d40bc2670908.png similarity index 100% rename from docs/images/git-images/git-settings-from-panel.png rename to assets/images/git-settings-from-panel-3e504985b2d407e84c53d40bc2670908.png diff --git a/docs/images/git-images/history-viewer.png b/assets/images/history-viewer-516735aaf90f434d2baf5e95c6c897ef.png similarity index 100% rename from docs/images/git-images/history-viewer.png rename to assets/images/history-viewer-516735aaf90f434d2baf5e95c6c897ef.png diff --git a/docs/images/git-images/history-viewer-expanded.png b/assets/images/history-viewer-expanded-94f7059b441632b9cfbf7d41af1147c3.png similarity index 100% rename from docs/images/git-images/history-viewer-expanded.png rename to assets/images/history-viewer-expanded-94f7059b441632b9cfbf7d41af1147c3.png diff --git a/docs/images/pro/hover-box.png b/assets/images/hover-box-85f3ed7552a13e5f30d85c6d8b7397f0.png similarity index 100% rename from docs/images/pro/hover-box.png rename to assets/images/hover-box-85f3ed7552a13e5f30d85c6d8b7397f0.png diff --git a/docs/images/pro/image-gallery.png b/assets/images/image-gallery-89de2617a5355346bf28b21246e90025.png similarity index 100% rename from docs/images/pro/image-gallery.png rename to assets/images/image-gallery-89de2617a5355346bf28b21246e90025.png diff --git a/docs/images/pro/image-size-dropdown.png b/assets/images/image-size-dropdown-0c5954234e73f686f9fb96d8d1972732.png similarity index 100% rename from docs/images/pro/image-size-dropdown.png rename to assets/images/image-size-dropdown-0c5954234e73f686f9fb96d8d1972732.png diff --git a/docs/images/editingText/indent-display.png b/assets/images/indent-display-6b6313994236e9d96a00e1c77684d83a.png similarity index 100% rename from docs/images/editingText/indent-display.png rename to assets/images/indent-display-6b6313994236e9d96a00e1c77684d83a.png diff --git a/docs/images/editingText/indent-lines.png b/assets/images/indent-lines-70d9e82eca5f62913c73453579959fb3.png similarity index 100% rename from docs/images/editingText/indent-lines.png rename to assets/images/indent-lines-70d9e82eca5f62913c73453579959fb3.png diff --git a/docs/images/editingColors/inlineColorEditor.png b/assets/images/inlineColorEditor-610c5be7bc6c236829f5a4a800883ceb.png similarity index 100% rename from docs/images/editingColors/inlineColorEditor.png rename to assets/images/inlineColorEditor-610c5be7bc6c236829f5a4a800883ceb.png diff --git a/docs/images/pro/insert-element.png b/assets/images/insert-element-2b7c020e0a7a55d500ed7529a171b883.png similarity index 100% rename from docs/images/pro/insert-element.png rename to assets/images/insert-element-2b7c020e0a7a55d500ed7529a171b883.png diff --git a/docs/images/pro/insert-element-custom.png b/assets/images/insert-element-custom-2d99e6a2fb736cd774ffcebbbace2db3.png similarity index 100% rename from docs/images/pro/insert-element-custom.png rename to assets/images/insert-element-custom-2d99e6a2fb736cd774ffcebbbace2db3.png diff --git a/docs/images/pro/inspect-element-hover.png b/assets/images/inspect-element-hover-7ce4a08eab7f5896b2ac7bc32e09a281.png similarity index 100% rename from docs/images/pro/inspect-element-hover.png rename to assets/images/inspect-element-hover-7ce4a08eab7f5896b2ac7bc32e09a281.png diff --git a/api/images/debugging-extensions/inspect-phnode.png b/assets/images/inspect-phnode-63ccd0f9e855fff8702bdaff5d26f029.png similarity index 100% rename from api/images/debugging-extensions/inspect-phnode.png rename to assets/images/inspect-phnode-63ccd0f9e855fff8702bdaff5d26f029.png diff --git a/docs/images/terminal/integrated-terminal-context-menu.png b/assets/images/integrated-terminal-context-menu-b8078ea73080b9ebeaa1c9919fa3fea5.png similarity index 100% rename from docs/images/terminal/integrated-terminal-context-menu.png rename to assets/images/integrated-terminal-context-menu-b8078ea73080b9ebeaa1c9919fa3fea5.png diff --git a/docs/images/Website/linuxCmd.png b/assets/images/linuxCmd-a6e2843eeb5e2b2c29d9521cc38aa05d.png similarity index 100% rename from docs/images/Website/linuxCmd.png rename to assets/images/linuxCmd-a6e2843eeb5e2b2c29d9521cc38aa05d.png diff --git a/docs/images/livePreview/lp-bolt.png b/assets/images/lp-bolt-5e56836e6a826c2bf76e1672c2f4b642.png similarity index 100% rename from docs/images/livePreview/lp-bolt.png rename to assets/images/lp-bolt-5e56836e6a826c2bf76e1672c2f4b642.png diff --git a/docs/images/livePreview/lp-browsers.png b/assets/images/lp-browsers-e82dcf48651e31731b271187ea94c283.png similarity index 100% rename from docs/images/livePreview/lp-browsers.png rename to assets/images/lp-browsers-e82dcf48651e31731b271187ea94c283.png diff --git a/docs/images/livePreview/lp-central.png b/assets/images/lp-central-4a522f465e618b9db824fa7a8d6dc664.png similarity index 100% rename from docs/images/livePreview/lp-central.png rename to assets/images/lp-central-4a522f465e618b9db824fa7a8d6dc664.png diff --git a/docs/images/livePreview/lp-left.png b/assets/images/lp-left-5df2df93e03b09497cbcf33548654f4e.png similarity index 100% rename from docs/images/livePreview/lp-left.png rename to assets/images/lp-left-5df2df93e03b09497cbcf33548654f4e.png diff --git a/docs/images/livePreview/lp-menu.png b/assets/images/lp-menu-d0dd11ec7c4873ba2c1b901a4897cb7b.png similarity index 100% rename from docs/images/livePreview/lp-menu.png rename to assets/images/lp-menu-d0dd11ec7c4873ba2c1b901a4897cb7b.png diff --git a/docs/images/livePreview/lp-mode.png b/assets/images/lp-mode-ac20eab6478729ef3661377fc0533495.png similarity index 100% rename from docs/images/livePreview/lp-mode.png rename to assets/images/lp-mode-ac20eab6478729ef3661377fc0533495.png diff --git a/docs/images/livePreview/lp-right.png b/assets/images/lp-right-826911aa582d2e6da60f63d856916800.png similarity index 100% rename from docs/images/livePreview/lp-right.png rename to assets/images/lp-right-826911aa582d2e6da60f63d856916800.png diff --git a/docs/images/livePreview/lp-toolbar.png b/assets/images/lp-toolbar-002533c583afe550035a0b5b1b9b2ae4.png similarity index 100% rename from docs/images/livePreview/lp-toolbar.png rename to assets/images/lp-toolbar-002533c583afe550035a0b5b1b9b2ae4.png diff --git a/docs/images/pro/markdown-blocks-lists.png b/assets/images/markdown-blocks-lists-05f6e56c1c32777650d6bac292ffdfcb.png similarity index 100% rename from docs/images/pro/markdown-blocks-lists.png rename to assets/images/markdown-blocks-lists-05f6e56c1c32777650d6bac292ffdfcb.png diff --git a/docs/images/pro/markdown-edit-button.png b/assets/images/markdown-edit-button-c7617e36423b479db1329cc9047b3b09.png similarity index 100% rename from docs/images/pro/markdown-edit-button.png rename to assets/images/markdown-edit-button-c7617e36423b479db1329cc9047b3b09.png diff --git a/docs/images/pro/markdown-format-bar.png b/assets/images/markdown-format-bar-4e9463570a7dbde89055cf7fa37387ff.png similarity index 100% rename from docs/images/pro/markdown-format-bar.png rename to assets/images/markdown-format-bar-4e9463570a7dbde89055cf7fa37387ff.png diff --git a/docs/images/pro/markdown-image-options.png b/assets/images/markdown-image-options-4c255a61d000ea632a1432bc33e9535c.png similarity index 100% rename from docs/images/pro/markdown-image-options.png rename to assets/images/markdown-image-options-4c255a61d000ea632a1432bc33e9535c.png diff --git a/docs/images/livePreview/markdown-preview.png b/assets/images/markdown-preview-61539cdd0c30736b4f8c7c5088b12912.png similarity index 100% rename from docs/images/livePreview/markdown-preview.png rename to assets/images/markdown-preview-61539cdd0c30736b4f8c7c5088b12912.png diff --git a/docs/images/pro/markdown-slash-menu.png b/assets/images/markdown-slash-menu-489e1dcbdb1f213ecdaabb3e5ccb0aed.png similarity index 100% rename from docs/images/pro/markdown-slash-menu.png rename to assets/images/markdown-slash-menu-489e1dcbdb1f213ecdaabb3e5ccb0aed.png diff --git a/docs/images/pro/markdown-theme-toggle.png b/assets/images/markdown-theme-toggle-dedf458a2f30b1ec49a46e79dffb751b.png similarity index 100% rename from docs/images/pro/markdown-theme-toggle.png rename to assets/images/markdown-theme-toggle-dedf458a2f30b1ec49a46e79dffb751b.png diff --git a/docs/images/pro/measurements.png b/assets/images/measurements-b9b5af176bc880f6e7c0f8042c8df901.png similarity index 100% rename from docs/images/pro/measurements.png rename to assets/images/measurements-b9b5af176bc880f6e7c0f8042c8df901.png diff --git a/docs/images/keyboard/menu.png b/assets/images/menu-28052aafcbb7fd7dffdde7e3d78a5a7b.png similarity index 100% rename from docs/images/keyboard/menu.png rename to assets/images/menu-28052aafcbb7fd7dffdde7e3d78a5a7b.png diff --git a/api/08-How-To/images/menu-item-before-after.png b/assets/images/menu-item-before-after-cbc0862108df63e0adb2b72ce2c286e5.png similarity index 100% rename from api/08-How-To/images/menu-item-before-after.png rename to assets/images/menu-item-before-after-cbc0862108df63e0adb2b72ce2c286e5.png diff --git a/api/08-How-To/images/menu-item-example.png b/assets/images/menu-item-example-178f27b8a6a5c928f60fb836bd1ec8c6.png similarity index 100% rename from api/08-How-To/images/menu-item-example.png rename to assets/images/menu-item-example-178f27b8a6a5c928f60fb836bd1ec8c6.png diff --git a/api/08-How-To/images/menu-item-first.png b/assets/images/menu-item-first-92bc1b5b3f6a6480eef573a493681ded.png similarity index 100% rename from api/08-How-To/images/menu-item-first.png rename to assets/images/menu-item-first-92bc1b5b3f6a6480eef573a493681ded.png diff --git a/docs/images/git-images/merge-branch.png b/assets/images/merge-branch-6869bb2da694746451b0ccad893ca783.png similarity index 100% rename from docs/images/git-images/merge-branch.png rename to assets/images/merge-branch-6869bb2da694746451b0ccad893ca783.png diff --git a/docs/images/git-images/merge-branch-dialog.png b/assets/images/merge-branch-dialog-1c07f61b94640c7ea80c133d2d4cfaac.png similarity index 100% rename from docs/images/git-images/merge-branch-dialog.png rename to assets/images/merge-branch-dialog-1c07f61b94640c7ea80c133d2d4cfaac.png diff --git a/docs/images/popular-extensions/minimap.png b/assets/images/minimap-0f5bc4e16371590e00a86db9fd97f112.png similarity index 100% rename from docs/images/popular-extensions/minimap.png rename to assets/images/minimap-0f5bc4e16371590e00a86db9fd97f112.png diff --git a/docs/images/editingText/modify-preferences.png b/assets/images/modify-preferences-6994d4190d47635929047a8206eeb539.png similarity index 100% rename from docs/images/editingText/modify-preferences.png rename to assets/images/modify-preferences-6994d4190d47635929047a8206eeb539.png diff --git a/docs/images/pro/more-options-dropdown.png b/assets/images/more-options-dropdown-2b02c463ead75eb94a7591daabc09e03.png similarity index 100% rename from docs/images/pro/more-options-dropdown.png rename to assets/images/more-options-dropdown-2b02c463ead75eb94a7591daabc09e03.png diff --git a/docs/images/git-images/move-to-next-change.png b/assets/images/move-to-next-change-e5d4a9e30f81267735c3bb2542bf2948.png similarity index 100% rename from docs/images/git-images/move-to-next-change.png rename to assets/images/move-to-next-change-e5d4a9e30f81267735c3bb2542bf2948.png diff --git a/docs/images/git-images/move-to-previous-change.png b/assets/images/move-to-previous-change-da5a34c57064f6eb4ed6f64d5e509caf.png similarity index 100% rename from docs/images/git-images/move-to-previous-change.png rename to assets/images/move-to-previous-change-da5a34c57064f6eb4ed6f64d5e509caf.png diff --git a/docs/images/find/new-exclusion.png b/assets/images/new-exclusion-581fe6d26f53116e0f5267c53bc985ef.png similarity index 100% rename from docs/images/find/new-exclusion.png rename to assets/images/new-exclusion-581fe6d26f53116e0f5267c53bc985ef.png diff --git a/docs/images/editingText/no-distractions.png b/assets/images/no-distractions-55a29450d30f7cd7c911ef741ee35278.png similarity index 100% rename from docs/images/editingText/no-distractions.png rename to assets/images/no-distractions-55a29450d30f7cd7c911ef741ee35278.png diff --git a/docs/images/number-dial.gif b/assets/images/number-dial-a65a9e9c4dde31e902c401a5d20b3e3e.gif similarity index 100% rename from docs/images/number-dial.gif rename to assets/images/number-dial-a65a9e9c4dde31e902c401a5d20b3e3e.gif diff --git a/api/images/creating-themes/open-cloned-repo.png b/assets/images/open-cloned-repo-c85f200e030581f71736637564dc05ed.png similarity index 100% rename from api/images/creating-themes/open-cloned-repo.png rename to assets/images/open-cloned-repo-c85f200e030581f71736637564dc05ed.png diff --git a/docs/images/quickStartProject/open-folder.png b/assets/images/open-folder-1e8feedd8865ec8bec14d3989fe0eceb.png similarity index 100% rename from docs/images/quickStartProject/open-folder.png rename to assets/images/open-folder-1e8feedd8865ec8bec14d3989fe0eceb.png diff --git a/docs/images/fileManagement/overflow-button.png b/assets/images/overflow-button-6f38035e9a745d362c320de06294c560.png similarity index 100% rename from docs/images/fileManagement/overflow-button.png rename to assets/images/overflow-button-6f38035e9a745d362c320de06294c560.png diff --git a/docs/images/keyboard/panel.png b/assets/images/panel-3e18440614aedd37e8697bfb6f7b8ff5.png similarity index 100% rename from docs/images/keyboard/panel.png rename to assets/images/panel-3e18440614aedd37e8697bfb6f7b8ff5.png diff --git a/docs/images/phpLivePreview/phpCustomServer.png b/assets/images/phpCustomServer-23ae891bea40924e86bafd7273ac64b3.png similarity index 100% rename from docs/images/phpLivePreview/phpCustomServer.png rename to assets/images/phpCustomServer-23ae891bea40924e86bafd7273ac64b3.png diff --git a/api/08-How-To/images/plugin-panel-example.png b/assets/images/plugin-panel-example-cdf9fbb9ccd3db750380862996b1d82c.png similarity index 100% rename from api/08-How-To/images/plugin-panel-example.png rename to assets/images/plugin-panel-example-cdf9fbb9ccd3db750380862996b1d82c.png diff --git a/api/08-How-To/images/plugin-panel.png b/assets/images/plugin-panel-ffdc0e6edeff5e1b9c10db5957ee911b.png similarity index 100% rename from api/08-How-To/images/plugin-panel.png rename to assets/images/plugin-panel-ffdc0e6edeff5e1b9c10db5957ee911b.png diff --git a/docs/images/editingText/preferences.png b/assets/images/preferences-ebc0e5bb9a61d63304ec17b66910ee4d.png similarity index 100% rename from docs/images/editingText/preferences.png rename to assets/images/preferences-ebc0e5bb9a61d63304ec17b66910ee4d.png diff --git a/docs/images/fileManagement/preview-tab.png b/assets/images/preview-tab-7e30256eb0916b472a190e95afba3d7c.png similarity index 100% rename from docs/images/fileManagement/preview-tab.png rename to assets/images/preview-tab-7e30256eb0916b472a190e95afba3d7c.png diff --git a/docs/images/editingColors/previously-used-colors.png b/assets/images/previously-used-colors-abb1767404546f7b8c3b552a626efbee.png similarity index 100% rename from docs/images/editingColors/previously-used-colors.png rename to assets/images/previously-used-colors-abb1767404546f7b8c3b552a626efbee.png diff --git a/api/images/publishing-extensions/publish-failed.png b/assets/images/publish-failed-ce5fb40d3fb2a7179f6faec794bf46f9.png similarity index 100% rename from api/images/publishing-extensions/publish-failed.png rename to assets/images/publish-failed-ce5fb40d3fb2a7179f6faec794bf46f9.png diff --git a/docs/images/git-images/push-dialog.png b/assets/images/push-dialog-17783f22101f31e587f9ae5b94a65bbb.png similarity index 100% rename from docs/images/git-images/push-dialog.png rename to assets/images/push-dialog-17783f22101f31e587f9ae5b94a65bbb.png diff --git a/docs/images/editingText/quick-docs.png b/assets/images/quick-docs-f23cc8636c9a7f8aaec899a6196ed91d.png similarity index 100% rename from docs/images/editingText/quick-docs.png rename to assets/images/quick-docs-f23cc8636c9a7f8aaec899a6196ed91d.png diff --git a/docs/images/QuickEdit/quickedit.png b/assets/images/quickedit-aee08cd2747b91204c7586c408f3d331.png similarity index 100% rename from docs/images/QuickEdit/quickedit.png rename to assets/images/quickedit-aee08cd2747b91204c7586c408f3d331.png diff --git a/docs/images/QuickEdit/quickeditPanel.png b/assets/images/quickeditPanel-606ea89d20a31a1bb0c145ce3ec87ec5.png similarity index 100% rename from docs/images/QuickEdit/quickeditPanel.png rename to assets/images/quickeditPanel-606ea89d20a31a1bb0c145ce3ec87ec5.png diff --git a/docs/images/QuickEdit/quickeditcontext.png b/assets/images/quickeditcontext-326718e201139fde2f79c6cf0111d6ac.png similarity index 100% rename from docs/images/QuickEdit/quickeditcontext.png rename to assets/images/quickeditcontext-326718e201139fde2f79c6cf0111d6ac.png diff --git a/docs/images/fileManagement/recent-files.png b/assets/images/recent-files-a9fa5e954b0315e12950f7f5b391c16c.png similarity index 100% rename from docs/images/fileManagement/recent-files.png rename to assets/images/recent-files-a9fa5e954b0315e12950f7f5b391c16c.png diff --git a/docs/images/quickStartProject/recent-projects.png b/assets/images/recent-projects-b5fe1561288247533c92ef8847c086ff.png similarity index 100% rename from docs/images/quickStartProject/recent-projects.png rename to assets/images/recent-projects-b5fe1561288247533c92ef8847c086ff.png diff --git a/docs/images/git-images/refresh-panel.png b/assets/images/refresh-panel-a55c088bfc0cb3d6537b80d7a4584af6.png similarity index 100% rename from docs/images/git-images/refresh-panel.png rename to assets/images/refresh-panel-a55c088bfc0cb3d6537b80d7a4584af6.png diff --git a/api/images/publishing-extensions/release-github.png b/assets/images/release-github-f4cc9b3b5f249a7ba91c2d5d2a3d6ac9.png similarity index 100% rename from api/images/publishing-extensions/release-github.png rename to assets/images/release-github-f4cc9b3b5f249a7ba91c2d5d2a3d6ac9.png diff --git a/docs/images/quickStartProject/reopen-start-project-dialog.png b/assets/images/reopen-start-project-dialog-34f189a313925385538f545d50b35287.png similarity index 100% rename from docs/images/quickStartProject/reopen-start-project-dialog.png rename to assets/images/reopen-start-project-dialog-34f189a313925385538f545d50b35287.png diff --git a/docs/images/keyboard/reset.png b/assets/images/reset-474204405c457189d9fcacffde8b7cc7.png similarity index 100% rename from docs/images/keyboard/reset.png rename to assets/images/reset-474204405c457189d9fcacffde8b7cc7.png diff --git a/docs/images/fileManagement/save-file-dialog.png b/assets/images/save-file-dialog-694af7f69c0561a55f0cee916b5e5fe6.png similarity index 100% rename from docs/images/fileManagement/save-file-dialog.png rename to assets/images/save-file-dialog-694af7f69c0561a55f0cee916b5e5fe6.png diff --git a/docs/images/find/search_in_files.png b/assets/images/search_in_files-1e116404456666ade0eed9fa1c542502.png similarity index 100% rename from docs/images/find/search_in_files.png rename to assets/images/search_in_files-1e116404456666ade0eed9fa1c542502.png diff --git a/docs/images/pro/select-from-device.png b/assets/images/select-from-device-97660034efd5953feeb9ced80cef956b.png similarity index 100% rename from docs/images/pro/select-from-device.png rename to assets/images/select-from-device-97660034efd5953feeb9ced80cef956b.png diff --git a/docs/images/pro/select-parent.png b/assets/images/select-parent-daaae173d47bdb6c7922f4d73bdf7d92.png similarity index 100% rename from docs/images/pro/select-parent.png rename to assets/images/select-parent-daaae173d47bdb6c7922f4d73bdf7d92.png diff --git a/docs/images/livePreview/settings-dialog.png b/assets/images/settings-dialog-5b320c38bc8850879db44d36b26a5af4.png similarity index 100% rename from docs/images/livePreview/settings-dialog.png rename to assets/images/settings-dialog-5b320c38bc8850879db44d36b26a5af4.png diff --git a/docs/images/livePreview/settings-gear.png b/assets/images/settings-gear-97bc597b071bd9f9087b0f3a358867ee.png similarity index 100% rename from docs/images/livePreview/settings-gear.png rename to assets/images/settings-gear-97bc597b071bd9f9087b0f3a358867ee.png diff --git a/docs/images/livePreview/settings-menu.png b/assets/images/settings-menu-667c5d35a84a0c582170399457c0560b.png similarity index 100% rename from docs/images/livePreview/settings-menu.png rename to assets/images/settings-menu-667c5d35a84a0c582170399457c0560b.png diff --git a/docs/images/git-images/show-file-history.png b/assets/images/show-file-history-5376f680661735e52ad853c9b7801a6f.png similarity index 100% rename from docs/images/git-images/show-file-history.png rename to assets/images/show-file-history-5376f680661735e52ad853c9b7801a6f.png diff --git a/docs/images/git-images/show-history.png b/assets/images/show-history-41f42182e71c7a1041d0d3cc564b5d81.png similarity index 100% rename from docs/images/git-images/show-history.png rename to assets/images/show-history-41f42182e71c7a1041d0d3cc564b5d81.png diff --git a/docs/images/beautifyCode/singleAttributePerLine-false.png b/assets/images/singleAttributePerLine-false-2813438e4f99ec944ceb3f903ba7dd9f.png similarity index 100% rename from docs/images/beautifyCode/singleAttributePerLine-false.png rename to assets/images/singleAttributePerLine-false-2813438e4f99ec944ceb3f903ba7dd9f.png diff --git a/docs/images/beautifyCode/singleAttributePerLine-true.png b/assets/images/singleAttributePerLine-true-16ca7e6cae6aa418a6a57e214175630b.png similarity index 100% rename from docs/images/beautifyCode/singleAttributePerLine-true.png rename to assets/images/singleAttributePerLine-true-16ca7e6cae6aa418a6a57e214175630b.png diff --git a/docs/images/beautifyCode/singleQuotes-false.png b/assets/images/singleQuotes-false-2ebb32c4c58a77cd4ef3e8a9f7c06cf7.png similarity index 100% rename from docs/images/beautifyCode/singleQuotes-false.png rename to assets/images/singleQuotes-false-2ebb32c4c58a77cd4ef3e8a9f7c06cf7.png diff --git a/docs/images/beautifyCode/singleQuotes-true.png b/assets/images/singleQuotes-true-cfa5db909f6d80e807c8b75697db6c45.png similarity index 100% rename from docs/images/beautifyCode/singleQuotes-true.png rename to assets/images/singleQuotes-true-cfa5db909f6d80e807c8b75697db6c45.png diff --git a/docs/images/CustomSnippets/snippet-cursor.png b/assets/images/snippet-cursor-00a4a6a76bb23749a4673c91bbbe485b.png similarity index 100% rename from docs/images/CustomSnippets/snippet-cursor.png rename to assets/images/snippet-cursor-00a4a6a76bb23749a4673c91bbbe485b.png diff --git a/docs/images/fileManagement/split-panes-tabs.png b/assets/images/split-panes-tabs-d27187f22855c61ac5a8b03e20ef7a54.png similarity index 100% rename from docs/images/fileManagement/split-panes-tabs.png rename to assets/images/split-panes-tabs-d27187f22855c61ac5a8b03e20ef7a54.png diff --git a/docs/images/git-images/stage-files.png b/assets/images/stage-files-e8f3109e21e3324ced10f59ce47933cf.png similarity index 100% rename from docs/images/git-images/stage-files.png rename to assets/images/stage-files-e8f3109e21e3324ced10f59ce47933cf.png diff --git a/docs/images/git-images/start-project.png b/assets/images/start-project-b427bc5dc33af5911c515ba0cd68b519.png similarity index 100% rename from docs/images/git-images/start-project.png rename to assets/images/start-project-b427bc5dc33af5911c515ba0cd68b519.png diff --git a/docs/images/quickStartProject/start-project-dialog.png b/assets/images/start-project-dialog-462f0136960138e7e86cba28aa176598.png similarity index 100% rename from docs/images/quickStartProject/start-project-dialog.png rename to assets/images/start-project-dialog-462f0136960138e7e86cba28aa176598.png diff --git a/api/08-How-To/images/submenu.png b/assets/images/submenu-e57b65d4816fd199d92649f2031c9d9d.png similarity index 100% rename from api/08-How-To/images/submenu.png rename to assets/images/submenu-e57b65d4816fd199d92649f2031c9d9d.png diff --git a/docs/images/syntaxHighlighting/syntax-highlighting-add.png b/assets/images/syntax-highlighting-add-771104a73d6b3a3a81b2ff8d63bd44bc.png similarity index 100% rename from docs/images/syntaxHighlighting/syntax-highlighting-add.png rename to assets/images/syntax-highlighting-add-771104a73d6b3a3a81b2ff8d63bd44bc.png diff --git a/docs/images/syntaxHighlighting/syntax-highlighting.png b/assets/images/syntax-highlighting-fdcfc81f787064eca7617b65b29c3163.png similarity index 100% rename from docs/images/syntaxHighlighting/syntax-highlighting.png rename to assets/images/syntax-highlighting-fdcfc81f787064eca7617b65b29c3163.png diff --git a/docs/images/syntaxHighlighting/syntax-highlighting-material-color-light-theme.png b/assets/images/syntax-highlighting-material-color-light-theme-0d0b1e4517b57cbc081c3c4d7a0712f2.png similarity index 100% rename from docs/images/syntaxHighlighting/syntax-highlighting-material-color-light-theme.png rename to assets/images/syntax-highlighting-material-color-light-theme-0d0b1e4517b57cbc081c3c4d7a0712f2.png diff --git a/docs/images/syntaxHighlighting/syntax-highlighting-monokai-dark-soda-theme.png b/assets/images/syntax-highlighting-monokai-dark-soda-theme-89b2be9da19f7aa850d3024a76c94007.png similarity index 100% rename from docs/images/syntaxHighlighting/syntax-highlighting-monokai-dark-soda-theme.png rename to assets/images/syntax-highlighting-monokai-dark-soda-theme-89b2be9da19f7aa850d3024a76c94007.png diff --git a/docs/images/fileManagement/tab-bar.png b/assets/images/tab-bar-801b0cfbb476f004a8e738a49d8ae35a.png similarity index 100% rename from docs/images/fileManagement/tab-bar.png rename to assets/images/tab-bar-801b0cfbb476f004a8e738a49d8ae35a.png diff --git a/docs/images/fileManagement/tab-bar-context-menu.png b/assets/images/tab-bar-context-menu-e8bc3b175a557e12e75204d3e9c626b8.png similarity index 100% rename from docs/images/fileManagement/tab-bar-context-menu.png rename to assets/images/tab-bar-context-menu-e8bc3b175a557e12e75204d3e9c626b8.png diff --git a/docs/images/fileManagement/tab-bar-git.png b/assets/images/tab-bar-git-811c82fa61907d6bd9ad9fdd7876e9bf.png similarity index 100% rename from docs/images/fileManagement/tab-bar-git.png rename to assets/images/tab-bar-git-811c82fa61907d6bd9ad9fdd7876e9bf.png diff --git a/docs/images/fileManagement/tab-bar-main.png b/assets/images/tab-bar-main-b5cca0dc25c6c679dab5b475a790df04.png similarity index 100% rename from docs/images/fileManagement/tab-bar-main.png rename to assets/images/tab-bar-main-b5cca0dc25c6c679dab5b475a790df04.png diff --git a/docs/images/terminal/terminal-tabs.png b/assets/images/terminal-tabs-024d68ec2b11e757bebb7293503e4457.png similarity index 100% rename from docs/images/terminal/terminal-tabs.png rename to assets/images/terminal-tabs-024d68ec2b11e757bebb7293503e4457.png diff --git a/api/images/creating-themes/theme-template-repo.png b/assets/images/theme-template-repo-8f28670371a15845e05568947b6a8ae2.png similarity index 100% rename from api/images/creating-themes/theme-template-repo.png rename to assets/images/theme-template-repo-8f28670371a15845e05568947b6a8ae2.png diff --git a/docs/images/editingText/themes-settings-font.png b/assets/images/themes-settings-font-c1bd03068320c72db68189255677bc3e.png similarity index 100% rename from docs/images/editingText/themes-settings-font.png rename to assets/images/themes-settings-font-c1bd03068320c72db68189255677bc3e.png diff --git a/docs/images/editingText/themes-settings-line-height.png b/assets/images/themes-settings-line-height-19fc715ce5632a4fcb08ebcd78598900.png similarity index 100% rename from docs/images/editingText/themes-settings-line-height.png rename to assets/images/themes-settings-line-height-19fc715ce5632a4fcb08ebcd78598900.png diff --git a/docs/images/editingText/themes-settings-scroll-sensitivity.png b/assets/images/themes-settings-scroll-sensitivity-c79a1bcf395d79dc3c603733ce5e8279.png similarity index 100% rename from docs/images/editingText/themes-settings-scroll-sensitivity.png rename to assets/images/themes-settings-scroll-sensitivity-c79a1bcf395d79dc3c603733ce5e8279.png diff --git a/docs/images/editingText/themes-settings-theme.png b/assets/images/themes-settings-theme-36806d853065f560f3336d8d64b3462c.png similarity index 100% rename from docs/images/editingText/themes-settings-theme.png rename to assets/images/themes-settings-theme-36806d853065f560f3336d8d64b3462c.png diff --git a/docs/images/extensions/themes-tab.png b/assets/images/themes-tab-8a777fbb22571d147609b325b6c18273.png similarity index 100% rename from docs/images/extensions/themes-tab.png rename to assets/images/themes-tab-8a777fbb22571d147609b325b6c18273.png diff --git a/docs/images/Emmet/toggle-emmet.png b/assets/images/toggle-emmet-9566153c219ead2bc651fb62d58853f6.png similarity index 100% rename from docs/images/Emmet/toggle-emmet.png rename to assets/images/toggle-emmet-9566153c219ead2bc651fb62d58853f6.png diff --git a/docs/images/pro/tools.png b/assets/images/tools-4da783777a189880077404fa13ec5b8e.png similarity index 100% rename from docs/images/pro/tools.png rename to assets/images/tools-4da783777a189880077404fa13ec5b8e.png diff --git a/docs/images/beautifyCode/trailingComma-all.png b/assets/images/trailingComma-all-d7612732831ca0714af8ed936c6aa2fb.png similarity index 100% rename from docs/images/beautifyCode/trailingComma-all.png rename to assets/images/trailingComma-all-d7612732831ca0714af8ed936c6aa2fb.png diff --git a/docs/images/beautifyCode/trailingComma-es5.png b/assets/images/trailingComma-es5-bab95c16817f40598bc90a5d50ae0e2e.png similarity index 100% rename from docs/images/beautifyCode/trailingComma-es5.png rename to assets/images/trailingComma-es5-bab95c16817f40598bc90a5d50ae0e2e.png diff --git a/docs/images/beautifyCode/trailingComma-none.png b/assets/images/trailingComma-none-8968557a47087024c5a4121896440004.png similarity index 100% rename from docs/images/beautifyCode/trailingComma-none.png rename to assets/images/trailingComma-none-8968557a47087024c5a4121896440004.png diff --git a/docs/images/git-images/view-authors.png b/assets/images/view-authors-3819eabc8819a8af5e8f2d38ad7628de.png similarity index 100% rename from docs/images/git-images/view-authors.png rename to assets/images/view-authors-3819eabc8819a8af5e8f2d38ad7628de.png diff --git a/docs/images/edu/vol-license.png b/assets/images/vol-license-70d2acf87c6f61d4db2b4d598f6b7979.png similarity index 100% rename from docs/images/edu/vol-license.png rename to assets/images/vol-license-70d2acf87c6f61d4db2b4d598f6b7979.png diff --git a/docs/images/pro/width-ruler.png b/assets/images/width-ruler-8790707bec88b6ec20c43dfa30d64b67.png similarity index 100% rename from docs/images/pro/width-ruler.png rename to assets/images/width-ruler-8790707bec88b6ec20c43dfa30d64b67.png diff --git a/docs/images/fileManagement/working-files-context-menu.png b/assets/images/working-files-context-menu-2b8e8e731f0099a09504e0a395506965.png similarity index 100% rename from docs/images/fileManagement/working-files-context-menu.png rename to assets/images/working-files-context-menu-2b8e8e731f0099a09504e0a395506965.png diff --git a/docs/images/fileManagement/working-files.png b/assets/images/working-files-f14ea4ee59954cf357a0ef3f973326c8.png similarity index 100% rename from docs/images/fileManagement/working-files.png rename to assets/images/working-files-f14ea4ee59954cf357a0ef3f973326c8.png diff --git a/docs/images/fileManagement/working-files-split-panes.png b/assets/images/working-files-split-panes-7e6ad66f3b93bbf1c1fba9d9f191aa19.png similarity index 100% rename from docs/images/fileManagement/working-files-split-panes.png rename to assets/images/working-files-split-panes-7e6ad66f3b93bbf1c1fba9d9f191aa19.png diff --git a/assets/js/0058b4c6.c389e68a.js b/assets/js/0058b4c6.c389e68a.js new file mode 100644 index 00000000..5f701221 --- /dev/null +++ b/assets/js/0058b4c6.c389e68a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[849],{86164:e=>{e.exports=JSON.parse('{"version":{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"tutorialSidebar":[{"type":"category","label":"Getting Started","collapsible":true,"collapsed":true,"items":[{"type":"link","href":"/docs/intro","label":"Installation Guide","docId":"Getting Started/installation","unlisted":false},{"type":"link","href":"/docs/quick-start-project","label":"Quick Start Project","docId":"Getting Started/quick-start-project","unlisted":false}],"href":"/docs/what-is-phoenix-code"},{"type":"category","label":"Live Preview","collapsible":true,"collapsed":true,"items":[{"type":"link","href":"/docs/design-mode","label":"Design Mode","docId":"Live Preview/design-mode","unlisted":false},{"type":"link","href":"/docs/Pro Features/live-preview-edit","label":"Live Preview Edit","docId":"Live Preview/live-preview-edit","unlisted":false},{"type":"link","href":"/docs/Pro Features/device-preview","label":"Device Preview","docId":"Live Preview/device-preview","unlisted":false},{"type":"link","href":"/docs/Pro Features/measurements","label":"Measurements","docId":"Live Preview/measurements","unlisted":false},{"type":"link","href":"/docs/Pro Features/image-gallery","label":"Image Gallery","docId":"Live Preview/image-gallery","unlisted":false},{"type":"link","href":"/docs/Pro Features/markdown-editor","label":"Markdown Editor","docId":"Live Preview/markdown-editor","unlisted":false},{"type":"link","href":"/docs/Features/Live Preview/php-live-preview","label":"PHP Live Preview Setup","docId":"Live Preview/php-live-preview","unlisted":false},{"type":"link","href":"/docs/Features/Live Preview/live-preview-settings","label":"Custom Live Preview Server","docId":"Live Preview/live-preview-settings","unlisted":false}],"href":"/docs/Features/Live Preview"},{"type":"link","href":"/docs/Pro Features/ai-chat","label":"AI","docId":"ai","unlisted":false},{"type":"category","label":"Editing & Code","collapsible":true,"collapsed":true,"items":[{"type":"link","href":"/docs/editing-text","label":"Editing Text","docId":"Editing & Code/editing-text","unlisted":false},{"type":"link","href":"/docs/editing-colors","label":"Editing Colors","docId":"Editing & Code/editing-colors","unlisted":false},{"type":"link","href":"/docs/Features/quick-edit","label":"Quick Edit","docId":"Editing & Code/quick-edit","unlisted":false},{"type":"link","href":"/docs/Features/syntax-highlighting","label":"Syntax Highlighting","docId":"Editing & Code/syntax-highlighting","unlisted":false},{"type":"link","href":"/docs/Features/emmet","label":"Emmet","docId":"Editing & Code/emmet","unlisted":false},{"type":"link","href":"/docs/Features/custom-snippets","label":"Custom Snippets","docId":"Editing & Code/custom-snippets","unlisted":false},{"type":"link","href":"/docs/Features/beautify-code","label":"Beautify Code","docId":"Editing & Code/beautify-code","unlisted":false}]},{"type":"category","label":"Workspace","collapsible":true,"collapsed":true,"items":[{"type":"link","href":"/docs/file-management","label":"File Management","docId":"Workspace/file-management","unlisted":false},{"type":"link","href":"/docs/Features/find-in-files","label":"Find In Files","docId":"Workspace/find-in-files","unlisted":false},{"type":"link","href":"/docs/customizing-editor","label":"Customizing the Editor","docId":"Workspace/customizing-editor","unlisted":false},{"type":"link","href":"/docs/Features/keyboard-shortcuts","label":"Keyboard Shortcuts","docId":"Workspace/keyboard-shortcuts","unlisted":false},{"type":"link","href":"/docs/Features/terminal","label":"Terminal","docId":"Workspace/terminal","unlisted":false},{"type":"link","href":"/docs/Features/git","label":"Git","docId":"Workspace/git","unlisted":false},{"type":"link","href":"/docs/extensions","label":"Extensions","docId":"Workspace/extensions","unlisted":false}]},{"type":"category","label":"Code Quality","collapsible":true,"collapsed":true,"items":[{"type":"link","href":"/docs/Features/Problems Panel/html-lint","label":"HTML Validator","docId":"Code Quality/html-lint","unlisted":false},{"type":"link","href":"/docs/Features/Problems Panel/ESLint","label":"ESLint for Javascript Problems","docId":"Code Quality/ESLint","unlisted":false}]},{"type":"category","label":"Schools & Workplaces","collapsible":true,"collapsed":true,"items":[{"type":"link","href":"/docs/phoenix-pro-school","label":"Phoenix Pro for Education (Free)","docId":"Schools & Workplaces/phoenix-pro-for-education","unlisted":false},{"type":"link","href":"/docs/control-ai","label":"AI Control For School And Work","docId":"Schools & Workplaces/ai-control","unlisted":false}]}]},"docs":{"ai":{"id":"ai","title":"AI","description":"Upgrade to Phoenix Code Pro to access this feature.","sidebar":"tutorialSidebar"},"Code Quality/ESLint":{"id":"Code Quality/ESLint","title":"ESLint for Javascript Problems","description":"Phoenix Code provides a comprehensive interface for identifying and resolving","sidebar":"tutorialSidebar"},"Code Quality/html-lint":{"id":"Code Quality/html-lint","title":"HTML Validator","description":"HTML Validator helps you find errors when you open or edit an HTML file. E.g.","sidebar":"tutorialSidebar"},"Editing & Code/beautify-code":{"id":"Editing & Code/beautify-code","title":"Beautify Code","description":"The Beautify Code feature ensures your code is consistently formatted, improving readability and maintainability. It automatically aligns your code with your preferred style, taking into account indentation, spacing, and other formatting rules.","sidebar":"tutorialSidebar"},"Editing & Code/custom-snippets":{"id":"Editing & Code/custom-snippets","title":"Custom Snippets","description":"Custom Snippets let you create your own reusable code hints. You can define short abbreviations that expand into full code snippets when selected from the code hints that appear as you type. In the code hint, Phoenix Code displays a small Snippet label on the right, indicating that the hint comes from custom snippets.","sidebar":"tutorialSidebar"},"Editing & Code/editing-colors":{"id":"Editing & Code/editing-colors","title":"Editing Colors","description":"This section provides an overview of the core color editing features in Phoenix Code.","sidebar":"tutorialSidebar"},"Editing & Code/editing-text":{"id":"Editing & Code/editing-text","title":"Editing Text","description":"This section provides an overview of the core text and code editing features in Phoenix Code.","sidebar":"tutorialSidebar"},"Editing & Code/emmet":{"id":"Editing & Code/emmet","title":"Emmet","description":"Emmet helps you quickly expand shorthand abbreviations into full code blocks. When you type an Emmet-compatible abbreviation, Phoenix Code displays a code hint with the abbreviation text and a small Emmet icon on the right, indicating that the hint comes from Emmet. Selecting the hint expands it into a complete code snippet.","sidebar":"tutorialSidebar"},"Editing & Code/quick-edit":{"id":"Editing & Code/quick-edit","title":"Quick Edit","description":"The Quick Edit feature in Phoenix Code allows you to edit CSS files directly within HTML files. This integration helps you focus on one file at a time, reducing distractions. Using Quick Edit with the Live Preview function provides immediate feedback on your changes, allowing you to adjust your CSS efficiently.","sidebar":"tutorialSidebar"},"Editing & Code/syntax-highlighting":{"id":"Editing & Code/syntax-highlighting","title":"Syntax Highlighting","description":"Syntax highlighting improves code readability by coloring different syntax elements in your code. This feature helps you quickly identify keywords, variables, and other code components, aiding in error detection and code comprehension.","sidebar":"tutorialSidebar"},"Getting Started/index":{"id":"Getting Started/index","title":"What is Phoenix Code?","description":"Phoenix Code is a lightweight, web-first code editor built by the same team behind Brackets. It\'s a front-end editor centered on Live Preview: edit your HTML and CSS and watch the page render as you type, or edit the rendered page directly and let Phoenix Code update your source code automatically.","sidebar":"tutorialSidebar"},"Getting Started/installation":{"id":"Getting Started/installation","title":"Installation Guide","description":"Phoenix Code is a text editor designed to make coding as intuitive and fun as playing a video game \u2014 specially crafted for web developers, designers, and students. This guide walks you through downloading and installing Phoenix Code on Windows, macOS, and Linux, or running it straight from your browser with no install at all.","sidebar":"tutorialSidebar"},"Getting Started/quick-start-project":{"id":"Getting Started/quick-start-project","title":"Quick Start Project","description":"This section provides an overview of how to create and manage projects using the Start Project Dialog in Phoenix Code.","sidebar":"tutorialSidebar"},"Live Preview/design-mode":{"id":"Live Preview/design-mode","title":"Design Mode","description":"Design Mode is a layout that hides the code editor and gives that entire space to your Live Preview. It is built for visual-first work: chatting with the AI while you watch changes land in the preview, editing your page directly in Live Preview Edit Mode, or testing how your design looks at different device sizes.","sidebar":"tutorialSidebar"},"Live Preview/device-preview":{"id":"Live Preview/device-preview","title":"Device Preview","description":"Upgrade to Phoenix Code Pro to access this feature.","sidebar":"tutorialSidebar"},"Live Preview/image-gallery":{"id":"Live Preview/image-gallery","title":"Image Gallery","description":"Upgrade to Phoenix Code Pro to access this feature.","sidebar":"tutorialSidebar"},"Live Preview/index":{"id":"Live Preview/index","title":"Live Preview","description":"The Live Preview feature in Phoenix Code provides instant feedback on changes made to HTML and CSS files, letting you see your edits in real-time.","sidebar":"tutorialSidebar"},"Live Preview/live-preview-edit":{"id":"Live Preview/live-preview-edit","title":"Live Preview Edit","description":"Upgrade to Phoenix Code Pro to access this feature.","sidebar":"tutorialSidebar"},"Live Preview/live-preview-settings":{"id":"Live Preview/live-preview-settings","title":"Custom Live Preview Server","description":"Phoenix Code now allows you to integrate your custom development server directly into the editor, enabling a Live Preview of your project as it would appear when served by your server. This is especially useful for dynamic projects that rely on server-side languages like PHP or frameworks like React that supports hot reloading.","sidebar":"tutorialSidebar"},"Live Preview/markdown-editor":{"id":"Live Preview/markdown-editor","title":"Markdown Editor","description":"When you open a Markdown file (.md), Live Preview shows a nicely formatted version of your document \u2014 with syntax-highlighted code blocks, rendered Mermaid diagrams, and more. As you type in the editor, the preview updates in real time. With Phoenix Pro, you can go a step further and edit your Markdown directly in the preview with a full rich text editor.","sidebar":"tutorialSidebar"},"Live Preview/measurements":{"id":"Live Preview/measurements","title":"Measurements","description":"Upgrade to Phoenix Code Pro to access this feature.","sidebar":"tutorialSidebar"},"Live Preview/php-live-preview":{"id":"Live Preview/php-live-preview","title":"PHP Live Preview Setup","description":"Setting up Live Preview for PHP projects is straightforward with Apache and XAMPP. Below are the installation and configuration steps for each operating system:","sidebar":"tutorialSidebar"},"Schools & Workplaces/ai-control":{"id":"Schools & Workplaces/ai-control","title":"AI Control For School And Work","description":"\ud83d\udd10 Disable or manage AI features in Phoenix Code for educational and enterprise environments.","sidebar":"tutorialSidebar"},"Schools & Workplaces/phoenix-pro-for-education":{"id":"Schools & Workplaces/phoenix-pro-for-education","title":"Phoenix Pro for Education (Free)","description":"A large portion of the Phoenix Code community comes from schools and universities, where students and teachers value ease of use and a low learning curve. Education has always been central to our mission, and we want every student to have access to the full Phoenix Pro feature set without barriers.","sidebar":"tutorialSidebar"},"Workspace/customizing-editor":{"id":"Workspace/customizing-editor","title":"Customizing the Editor","description":"This section provides an overview of the editor appearance and display settings in Phoenix Code.","sidebar":"tutorialSidebar"},"Workspace/extensions":{"id":"Workspace/extensions","title":"Extensions","description":"Phoenix Code supports extensions for adding features, themes, and language support. Everything is managed through the built-in Extension Manager.","sidebar":"tutorialSidebar"},"Workspace/file-management":{"id":"Workspace/file-management","title":"File Management","description":"This section covers how Phoenix Code lets you manage, organize, and navigate files and folders within your projects.","sidebar":"tutorialSidebar"},"Workspace/find-in-files":{"id":"Workspace/find-in-files","title":"Find In Files","description":"The Find in Files feature in Phoenix Code is a powerful tool to quickly search for specific text across multiple files within a project. This feature is useful for developers working on large codebases to find references, variable names, or specific lines of code.","sidebar":"tutorialSidebar"},"Workspace/git":{"id":"Workspace/git","title":"Git","description":"Getting Started with Git in Phoenix Code","sidebar":"tutorialSidebar"},"Workspace/keyboard-shortcuts":{"id":"Workspace/keyboard-shortcuts","title":"Keyboard Shortcuts","description":"Now you can make your own shortcuts for any menu, so you don\'t have to memorize a bunch of different ones for every app. It\'s like customizing your game controls to play your way!","sidebar":"tutorialSidebar"},"Workspace/terminal":{"id":"Workspace/terminal","title":"Terminal","description":"Phoenix Code has a built-in terminal so you can run commands without leaving the editor.","sidebar":"tutorialSidebar"}}}}')}}]); \ No newline at end of file diff --git a/assets/js/01a85c17.f5fd27cb.js b/assets/js/01a85c17.f5fd27cb.js new file mode 100644 index 00000000..eb4a91e0 --- /dev/null +++ b/assets/js/01a85c17.f5fd27cb.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8209],{44096:(e,t,a)=>{a.d(t,{in:()=>c,OU:()=>P,Ki:()=>A,kJ:()=>b,x:()=>l,e7:()=>m,J_:()=>f,Gx:()=>y});var s=a(96540),n=a(89532),i=a(36803),r=a(74848);function l(){const e=(0,i.A)(),t=e?.data?.blogMetadata;if(!t)throw new Error("useBlogMetadata() can't be called on the current route because the blog metadata could not be found in route context");return t}const o=s.createContext(null);function c({children:e,content:t,isBlogPostPage:a=!1}){const n=function({content:e,isBlogPostPage:t}){return(0,s.useMemo)((()=>({metadata:e.metadata,frontMatter:e.frontMatter,assets:e.assets,toc:e.toc,isBlogPostPage:t})),[e,t])}({content:t,isBlogPostPage:a});return(0,r.jsx)(o.Provider,{value:n,children:e})}function m(){const e=(0,s.useContext)(o);if(null===e)throw new n.dV("BlogPostProvider");return e}var d=a(86025),u=a(44586);const g=e=>new Date(e).toISOString();function h(e){const t=e.map(x);return{author:1===t.length?t[0]:t}}function p(e,t,a){return e?{image:j({imageUrl:t(e,{absolute:!0}),caption:`title image for the blog post: ${a}`})}:{}}function b(e){const{siteConfig:t}=(0,u.A)(),{withBaseUrl:a}=(0,d.hH)(),{metadata:{blogDescription:s,blogTitle:n,permalink:i}}=e,r=`${t.url}${i}`;return{"@context":"https://schema.org","@type":"Blog","@id":r,mainEntityOfPage:r,headline:n,description:s,blogPost:e.items.map((e=>function(e,t,a){const{assets:s,frontMatter:n,metadata:i}=e,{date:r,title:l,description:o,lastUpdatedAt:c}=i,m=s.image??n.image,d=n.keywords??[],u=`${t.url}${i.permalink}`,b=c?g(c):void 0;return{"@type":"BlogPosting","@id":u,mainEntityOfPage:u,url:u,headline:l,name:l,description:o,datePublished:r,...b?{dateModified:b}:{},...h(i.authors),...p(m,a,l),...d?{keywords:d}:{}}}(e.content,t,a)))}}function f(){const e=l(),{assets:t,metadata:a}=m(),{siteConfig:s}=(0,u.A)(),{withBaseUrl:n}=(0,d.hH)(),{date:i,title:r,description:o,frontMatter:c,lastUpdatedAt:b}=a,f=t.image??c.image,x=c.keywords??[],j=b?g(b):void 0,N=`${s.url}${a.permalink}`;return{"@context":"https://schema.org","@type":"BlogPosting","@id":N,mainEntityOfPage:N,url:N,headline:r,name:r,description:o,datePublished:i,...j?{dateModified:j}:{},...h(a.authors),...p(f,n,r),...x?{keywords:x}:{},isPartOf:{"@type":"Blog","@id":`${s.url}${e.blogBasePath}`,name:e.blogTitle}}}function x(e){return{"@type":"Person",...e.name?{name:e.name}:{},...e.title?{description:e.title}:{},...e.url?{url:e.url}:{},...e.email?{email:e.email}:{},...e.imageURL?{image:e.imageURL}:{}}}function j({imageUrl:e,caption:t}){return{"@type":"ImageObject","@id":e,url:e,contentUrl:e,caption:t}}var N=a(56347),v=a(28774),C=a(31682),k=a(99169);function y(e){const{pathname:t}=(0,N.zy)();return(0,s.useMemo)((()=>e.filter((e=>function(e,t){return!(e.unlisted&&!(0,k.ys)(e.permalink,t))}(e,t)))),[e,t])}function A(e){const t=(0,C.$z)(e,(e=>`${new Date(e.date).getFullYear()}`)),a=Object.entries(t);return a.reverse(),a}function P({items:e,ulClassName:t,liClassName:a,linkClassName:s,linkActiveClassName:n}){return(0,r.jsx)("ul",{className:t,children:e.map((e=>(0,r.jsx)("li",{className:a,children:(0,r.jsx)(v.A,{isNavLink:!0,to:e.permalink,className:s,activeClassName:n,children:e.title})},e.permalink)))})}},28027:(e,t,a)=>{a.d(t,{A:()=>O});var s=a(96540),n=a(34164),i=a(36882),r=a(24581),l=a(21312),o=a(44096),c=a(6342),m=a(51107),d=a(74848);function u({year:e,yearGroupHeadingClassName:t,children:a}){return(0,d.jsxs)("div",{role:"group",children:[(0,d.jsx)(m.A,{as:"h3",className:t,children:e}),a]})}function g({items:e,yearGroupHeadingClassName:t,ListComponent:a}){if((0,c.p)().blog.sidebar.groupByYear){const s=(0,o.Ki)(e);return(0,d.jsx)(d.Fragment,{children:s.map((([e,s])=>(0,d.jsx)(u,{year:e,yearGroupHeadingClassName:t,children:(0,d.jsx)(a,{items:s})},e)))})}return(0,d.jsx)(a,{items:e})}const h=(0,s.memo)(g),p="sidebar_re4s",b="sidebarItemTitle_pO2u",f="sidebarItemList_Yudw",x="sidebarItem__DBe",j="sidebarItemLink_mo7H",N="sidebarItemLinkActive_I1ZP",v="yearGroupHeading_rMGB",C=({items:e})=>(0,d.jsx)(o.OU,{items:e,ulClassName:(0,n.A)(f,"clean-list"),liClassName:x,linkClassName:j,linkActiveClassName:N});function k({sidebar:e}){const t=(0,o.Gx)(e.items);return(0,d.jsx)("aside",{className:"col col--3",children:(0,d.jsxs)("nav",{className:(0,n.A)(p,"thin-scrollbar"),"aria-label":(0,l.T)({id:"theme.blog.sidebar.navAriaLabel",message:"Blog recent posts navigation",description:"The ARIA label for recent posts in the blog sidebar"}),children:[(0,d.jsx)("div",{className:(0,n.A)(b,"margin-bottom--md"),children:e.title}),(0,d.jsx)(h,{items:t,ListComponent:C,yearGroupHeadingClassName:v})]})})}const y=(0,s.memo)(k);var A=a(75600);const P={yearGroupHeading:"yearGroupHeading_QT03"},_=({items:e})=>(0,d.jsx)(o.OU,{items:e,ulClassName:"menu__list",liClassName:"menu__list-item",linkClassName:"menu__link",linkActiveClassName:"menu__link--active"});function w({sidebar:e}){const t=(0,o.Gx)(e.items);return(0,d.jsx)(h,{items:t,ListComponent:_,yearGroupHeadingClassName:P.yearGroupHeading})}function B(e){return(0,d.jsx)(A.GX,{component:w,props:e})}const G=(0,s.memo)(B);function H({sidebar:e}){const t=(0,r.l)();return e?.items.length?"mobile"===t?(0,d.jsx)(G,{sidebar:e}):(0,d.jsx)(y,{sidebar:e}):null}function O(e){const{sidebar:t,toc:a,children:s,...r}=e,l=t&&t.items.length>0;return(0,d.jsx)(i.A,{...r,children:(0,d.jsx)("div",{className:"container margin-vert--lg",children:(0,d.jsxs)("div",{className:"row",children:[(0,d.jsx)(H,{sidebar:t}),(0,d.jsx)("main",{className:(0,n.A)("col",{"col--7":l,"col--9 col--offset-1":!l}),children:s}),a&&(0,d.jsx)("div",{className:"col col--2",children:a})]})})})}},69158:(e,t,a)=>{a.r(t),a.d(t,{default:()=>b});a(96540);var s=a(34164),n=a(21312);const i=()=>(0,n.T)({id:"theme.tags.tagsPageTitle",message:"Tags",description:"The title of the tag list page"});var r=a(45500),l=a(17559),o=a(28027),c=a(56133),m=a(51107);const d={tag:"tag_Nnez"};var u=a(74848);function g({letterEntry:e}){return(0,u.jsxs)("article",{children:[(0,u.jsx)(m.A,{as:"h2",id:e.letter,children:e.letter}),(0,u.jsx)("ul",{className:"padding--none",children:e.tags.map((e=>(0,u.jsx)("li",{className:d.tag,children:(0,u.jsx)(c.A,{...e})},e.permalink)))}),(0,u.jsx)("hr",{})]})}function h({tags:e}){const t=function(e){const t={};return Object.values(e).forEach((e=>{const a=function(e){return e[0].toUpperCase()}(e.label);t[a]??=[],t[a].push(e)})),Object.entries(t).sort((([e],[t])=>e.localeCompare(t))).map((([e,t])=>({letter:e,tags:t.sort(((e,t)=>e.label.localeCompare(t.label)))})))}(e);return(0,u.jsx)("section",{className:"margin-vert--lg",children:t.map((e=>(0,u.jsx)(g,{letterEntry:e},e.letter)))})}var p=a(41463);function b({tags:e,sidebar:t}){const a=i();return(0,u.jsxs)(r.e3,{className:(0,s.A)(l.G.wrapper.blogPages,l.G.page.blogTagsListPage),children:[(0,u.jsx)(r.be,{title:a}),(0,u.jsx)(p.A,{tag:"blog_tags_list"}),(0,u.jsxs)(o.A,{sidebar:t,children:[(0,u.jsx)(m.A,{as:"h1",children:a}),(0,u.jsx)(h,{tags:e})]})]})}},56133:(e,t,a)=>{a.d(t,{A:()=>l});a(96540);var s=a(34164),n=a(28774);const i={tag:"tag_zVej",tagRegular:"tagRegular_sFm0",tagWithCount:"tagWithCount_h2kH"};var r=a(74848);function l({permalink:e,label:t,count:a,description:l}){return(0,r.jsxs)(n.A,{rel:"tag",href:e,title:l,className:(0,s.A)(i.tag,a?i.tagWithCount:i.tagRegular),children:[t,a&&(0,r.jsx)("span",{children:a})]})}}}]); \ No newline at end of file diff --git a/assets/js/01eab772.250e0b90.js b/assets/js/01eab772.250e0b90.js new file mode 100644 index 00000000..a0ca24e8 --- /dev/null +++ b/assets/js/01eab772.250e0b90.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8698],{58167:a=>{a.exports=JSON.parse('{"tag":{"label":"Phoenix Pro","permalink":"/blog/tags/phoenix-pro","allTagsPath":"/blog/tags","count":2,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/phoenix-pro","page":1,"postsPerPage":10,"totalPages":1,"totalCount":2,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]); \ No newline at end of file diff --git a/assets/js/020967ce.8203f28d.js b/assets/js/020967ce.8203f28d.js new file mode 100644 index 00000000..9c3a96c6 --- /dev/null +++ b/assets/js/020967ce.8203f28d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5389],{84246:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>d,contentTitle:()=>a,default:()=>x,frontMatter:()=>h,metadata:()=>t,toc:()=>c});const t=JSON.parse('{"id":"Workspace/extensions","title":"Extensions","description":"Phoenix Code supports extensions for adding features, themes, and language support. Everything is managed through the built-in Extension Manager.","source":"@site/docs/05-Workspace/07-extensions.md","sourceDirName":"05-Workspace","slug":"/extensions","permalink":"/docs/extensions","draft":false,"unlisted":false,"editUrl":"https://github.com/phcode-dev/docs/blob/main/docs/05-Workspace/07-extensions.md","tags":[],"version":"current","sidebarPosition":7,"frontMatter":{"title":"Extensions","slug":"/extensions"},"sidebar":"tutorialSidebar","previous":{"title":"Git","permalink":"/docs/Features/git"},"next":{"title":"HTML Validator","permalink":"/docs/Features/Problems Panel/html-lint"}}');var i=s(74848),r=s(28453),o=(s(96540),s(56399));const h={title:"Extensions",slug:"/extensions"},a=void 0,d={},c=[{value:"Themes",id:"themes",level:2},{value:"Create your own",id:"create-your-own",level:2},{value:"Popular extensions",id:"popular-extensions",level:2},{value:"Minimap",id:"minimap",level:3},{value:"Show Whitespace",id:"show-whitespace",level:3},{value:"1-2-3",id:"1-2-3",level:3},{value:"FuncDocr",id:"funcdocr",level:3},{value:"Remove Comments",id:"remove-comments",level:3},{value:"Autosave Files on Window Blur",id:"autosave-files-on-window-blur",level:3}];function l(e){const n={a:"a",code:"code",h2:"h2",h3:"h3",img:"img",li:"li",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(n.p,{children:["Phoenix Code supports extensions for adding features, themes, and language support. Everything is managed through the built-in ",(0,i.jsx)(n.strong,{children:"Extension Manager"}),"."]}),"\n",(0,i.jsx)(n.p,{children:"To open the Extension Manager, click the extension icon on the right-hand toolbar, as shown below."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Extension Manager icon location on the right toolbar",src:s(28124).A+"",title:"Click the Extension Manager icon on the right toolbar",width:"1920",height:"1080"})}),"\n",(0,i.jsx)(n.p,{children:"The dialog has four tabs:"}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Tab"}),(0,i.jsx)(n.th,{children:"Contents"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.strong,{children:"Available"})}),(0,i.jsx)(n.td,{children:"Marketplace extensions. A search box at the top filters the list."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.strong,{children:"Themes"})}),(0,i.jsx)(n.td,{children:"Marketplace themes."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.strong,{children:"Installed"})}),(0,i.jsx)(n.td,{children:"Everything you've installed. Apply, update, or remove from here."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:(0,i.jsx)(n.strong,{children:"Default"})}),(0,i.jsx)(n.td,{children:"Built-in extensions that ship with Phoenix Code."})]})]})]}),"\n",(0,i.jsxs)(n.p,{children:["A ",(0,i.jsx)(n.strong,{children:"Sort"})," dropdown at the top of the dialog orders the list by ",(0,i.jsx)(n.strong,{children:"Last Updated"})," (most recently published first), ",(0,i.jsx)(n.strong,{children:"Downloads"})," (most-installed first), ",(0,i.jsx)(n.strong,{children:"Star Rating"})," (highest GitHub stars), or ",(0,i.jsx)(n.strong,{children:"Verified"})," (Phoenix-verified extensions first)."]}),"\n",(0,i.jsx)(o.A,{src:"https://docs-images.phcode.dev/videos/extensions/extension-manager.mp4"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Install"}),": pick an item from ",(0,i.jsx)(n.strong,{children:"Available"})," or ",(0,i.jsx)(n.strong,{children:"Themes"})," and click ",(0,i.jsx)(n.strong,{children:"Install"}),"."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Update"}),": when a newer version is available, an ",(0,i.jsx)(n.strong,{children:"Update"})," button appears on the extension's card in ",(0,i.jsx)(n.strong,{children:"Installed"}),"."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Remove"}),": click ",(0,i.jsx)(n.strong,{children:"Remove"})," on the card in ",(0,i.jsx)(n.strong,{children:"Installed"}),", then confirm with ",(0,i.jsx)(n.strong,{children:"Remove Extensions and Reload"}),"."]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"themes",children:"Themes"}),"\n",(0,i.jsxs)(n.p,{children:["Themes use the same flow under the ",(0,i.jsx)(n.strong,{children:"Themes"})," tab."]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Themes tab in the Extension Manager",src:s(81586).A+"",title:"Themes tab in the Extension Manager",width:"1140",height:"766"})}),"\n",(0,i.jsxs)(n.p,{children:["To switch to an installed theme, either pick it from ",(0,i.jsx)(n.code,{children:"View > Themes..."})," (see ",(0,i.jsx)(n.a,{href:"./customizing-editor#themes",children:"Customizing the Editor \u2192 Themes"}),") or click ",(0,i.jsx)(n.strong,{children:"Apply"})," next to the theme in ",(0,i.jsx)(n.strong,{children:"Installed"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"create-your-own",children:"Create your own"}),"\n",(0,i.jsx)(n.p,{children:"For authoring extensions and themes, see the API section:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"/api/creating-themes",children:"Creating Themes"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"/api/creating-extensions",children:"Creating Extensions"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"/api/creating-node-extensions",children:"Creating Node Extensions"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"/api/debugging-extensions",children:"Debugging Extensions"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"/api/publishing-extensions",children:"Publishing Extensions"})}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"popular-extensions",children:"Popular extensions"}),"\n",(0,i.jsx)(n.p,{children:"A curated list of community extensions worth checking out."}),"\n",(0,i.jsx)(n.h3,{id:"minimap",children:"Minimap"}),"\n",(0,i.jsxs)(n.p,{children:["Created by: ",(0,i.jsx)(n.a,{href:"https://github.com/zorgzerg",children:"Zorgzerg"})]}),"\n",(0,i.jsx)(n.p,{children:"This extension adds a minimap preview of your code on the side of your editor, making it easier to navigate and get an overview of your code structure."}),"\n",(0,i.jsxs)(n.p,{children:["For more details, visit the ",(0,i.jsx)(n.a,{href:"https://github.com/zorgzerg/brackets-minimap",children:"GitHub repository"})," of the extension."]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"Minimap"})," in action :-"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Minimap",src:s(63569).A+"",width:"1919",height:"1112"})}),"\n",(0,i.jsx)(n.h3,{id:"show-whitespace",children:"Show Whitespace"}),"\n",(0,i.jsxs)(n.p,{children:["Created by: ",(0,i.jsx)(n.a,{href:"https://github.com/DennisKehrig",children:"Dennis Kehrig"})]}),"\n",(0,i.jsx)(n.p,{children:"This extension allows users to visualize spaces and tabs, making code more readable and helping maintain formatting consistency."}),"\n",(0,i.jsxs)(n.p,{children:["For more details, visit the ",(0,i.jsx)(n.a,{href:"https://github.com/DennisKehrig/brackets-show-whitespace",children:"GitHub repository"})," of the extension."]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"Show Whitespace"})," in action :-"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Show Whitespace",src:s(13707).A+"",width:"1840",height:"929"})}),"\n",(0,i.jsx)(n.h3,{id:"1-2-3",children:"1-2-3"}),"\n",(0,i.jsxs)(n.p,{children:["Created by: ",(0,i.jsx)(n.a,{href:"https://github.com/michaljerabek",children:"Michal Je\u0159\xe1bek"})]}),"\n",(0,i.jsx)(n.p,{children:"This extension generates number sequences directly in your editor, making it easy to create ordered lists or numbered markers with minimal effort."}),"\n",(0,i.jsxs)(n.p,{children:["For more details, visit the ",(0,i.jsx)(n.a,{href:"https://github.com/michaljerabek/1-2-3",children:"GitHub repository"})," of the extension."]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"1-2-3"})," in action :-"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"1-2-3",src:s(65367).A+"",width:"640",height:"360"})}),"\n",(0,i.jsx)(n.h3,{id:"funcdocr",children:"FuncDocr"}),"\n",(0,i.jsxs)(n.p,{children:["Created by: ",(0,i.jsx)(n.a,{href:"https://github.com/Wikunia",children:"Ole Kr\xf6ger"})]}),"\n",(0,i.jsx)(n.p,{children:"This extension generates JS/PHPDocs for your functions, keeping your code documented and organized."}),"\n",(0,i.jsxs)(n.p,{children:["For more details, visit the ",(0,i.jsx)(n.a,{href:"https://github.com/wikunia/brackets-funcdocr",children:"GitHub repository"})," of the extension."]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"FuncDocr"})," in action :-"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"FuncDocr",src:s(96924).A+"",width:"548",height:"320"})}),"\n",(0,i.jsx)(n.h3,{id:"remove-comments",children:"Remove Comments"}),"\n",(0,i.jsxs)(n.p,{children:["Created by: ",(0,i.jsx)(n.a,{href:"https://github.com/devvaannsh",children:"Pluto"})]}),"\n",(0,i.jsx)(n.p,{children:"This extension allows you to remove unwanted comments from your code. You can delete all comments at once or only those within a selected section."}),"\n",(0,i.jsxs)(n.p,{children:["For more details, visit the ",(0,i.jsx)(n.a,{href:"https://github.com/devvaannsh/Remove-Comments",children:"GitHub repository"})," of the extension."]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"Remove Comments"})," in action :-"]}),"\n",(0,i.jsx)(o.A,{src:"https://docs-images.phcode.dev/videos/popular-extensions/Remove-Comments.mp4"}),"\n",(0,i.jsx)(n.h3,{id:"autosave-files-on-window-blur",children:"Autosave Files on Window Blur"}),"\n",(0,i.jsxs)(n.p,{children:["Created by: ",(0,i.jsx)(n.a,{href:"https://github.com/martypenner",children:"Marty Penner"})]}),"\n",(0,i.jsx)(n.p,{children:"This extension automatically saves all unsaved files whenever Phoenix Code loses focus (for example, when you switch to another application)."}),"\n",(0,i.jsxs)(n.p,{children:["For more details, visit the ",(0,i.jsx)(n.a,{href:"https://github.com/martypenner/brackets-autosave-files-on-window-blur",children:"GitHub repository"})," of the extension."]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"Autosave Files on Window Blur"})," in action :-"]}),"\n",(0,i.jsx)(o.A,{src:"https://docs-images.phcode.dev/videos/popular-extensions/autosave.mp4"})]})}function x(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(l,{...e})}):l(e)}},56399:(e,n,s)=>{s.d(n,{A:()=>r});var t=s(96540),i=s(74848);const r=({src:e,winLinuxTitle:n,macTitle:s})=>{const[r,o]=(0,t.useState)("");(0,t.useEffect)((()=>{navigator.platform.toLowerCase().includes("mac")?o(s):o(n)}),[n,s]);return(0,i.jsxs)("div",{style:{maxHeight:"68vh",width:"100%",display:"flex",justifyContent:"center",alignItems:"center",flexDirection:"column"},children:[(0,i.jsxs)("video",{style:{height:"90%",width:"100%"},controls:!0,autoPlay:!0,muted:!0,loop:!0,children:[(0,i.jsx)("source",{src:e,type:"video/mp4"}),"Your browser does not support the video tag."]}),(0,i.jsx)("div",{style:{width:"100%",textAlign:"center",fontSize:"1em",marginTop:"10px"},children:r})]})}},28124:(e,n,s)=>{s.d(n,{A:()=>t});const t=s.p+"assets/images/extension-manager-button-467fe5a1b8e23ada40a5990a2cffa081.png"},81586:(e,n,s)=>{s.d(n,{A:()=>t});const t=s.p+"assets/images/themes-tab-8a777fbb22571d147609b325b6c18273.png"},65367:(e,n,s)=>{s.d(n,{A:()=>t});const t=s.p+"assets/images/1-2-3-2baddde7c9b006e7c84dfaf449d2f2c9.gif"},96924:(e,n,s)=>{s.d(n,{A:()=>t});const t=s.p+"assets/images/Func-Docr-c8a17e10862c5855bc4e241cd40cd548.gif"},13707:(e,n,s)=>{s.d(n,{A:()=>t});const t=s.p+"assets/images/Show-Whitespace-7af1837294998ace257ae52aeeebb935.png"},63569:(e,n,s)=>{s.d(n,{A:()=>t});const t=s.p+"assets/images/minimap-0f5bc4e16371590e00a86db9fd97f112.png"},28453:(e,n,s)=>{s.d(n,{R:()=>o,x:()=>h});var t=s(96540);const i={},r=t.createContext(i);function o(e){const n=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function h(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),t.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/031fbf0b.cd712cca.js b/assets/js/031fbf0b.cd712cca.js new file mode 100644 index 00000000..74fc1544 --- /dev/null +++ b/assets/js/031fbf0b.cd712cca.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3151],{7619:t=>{t.exports=JSON.parse('{"tag":{"label":"Continued","permalink":"/blog/tags/continued","allTagsPath":"/blog/tags","count":1,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/continued","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]); \ No newline at end of file diff --git a/assets/js/04f2eb81.741ad7d1.js b/assets/js/04f2eb81.741ad7d1.js new file mode 100644 index 00000000..776a8850 --- /dev/null +++ b/assets/js/04f2eb81.741ad7d1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8451],{15334:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>d,contentTitle:()=>i,default:()=>c,frontMatter:()=>l,metadata:()=>r,toc:()=>u});const r=JSON.parse('{"id":"API-Reference/utils/FeatureGate","title":"FeatureGate","description":"Import :","source":"@site/api/API-Reference/utils/FeatureGate.md","sourceDirName":"API-Reference/utils","slug":"/API-Reference/utils/FeatureGate","permalink":"/api/API-Reference/utils/FeatureGate","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"ExtensionUtils","permalink":"/api/API-Reference/utils/ExtensionUtils"},"next":{"title":"KeyEvent","permalink":"/api/API-Reference/utils/KeyEvent"}}');var n=a(74848),s=a(28453);const l={},i=void 0,d={},u=[{value:"Import :",id:"import-",level:3},{value:"utils/FeatureGate",id:"utilsfeaturegate",level:2},{value:"Usage",id:"usage",level:2},{value:"creating a feature gate",id:"creating-a-feature-gate",level:3},{value:"checking if a feature is gated",id:"checking-if-a-feature-is-gated",level:3},{value:"Enabling features for testing",id:"enabling-features-for-testing",level:3},{value:"utils/FeatureGate.FEATURE_REGISTERED : string",id:"utilsfeaturegatefeature_registered--string",level:3},{value:"utils/FeatureGate.registerFeatureGate(featureName, enabledDefault) : function",id:"utilsfeaturegateregisterfeaturegatefeaturename-enableddefault--function",level:3},{value:"utils/FeatureGate.getAllRegisteredFeatures() \u21d2 Array.<string>",id:"utilsfeaturegategetallregisteredfeatures--arraystring",level:3},{value:"utils/FeatureGate.isFeatureEnabled(featureName) \u21d2 boolean",id:"utilsfeaturegateisfeatureenabledfeaturename--boolean",level:3},{value:"utils/FeatureGate.setFeatureEnabled(featureName, isEnabled)",id:"utilsfeaturegatesetfeatureenabledfeaturename-isenabled",level:3}];function o(e){const t={a:"a",br:"br",code:"code",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.h3,{id:"import-",children:"Import :"}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-js",children:'const FeatureGate = brackets.getModule("utils/FeatureGate")\n'})}),"\n",(0,n.jsx)("a",{name:"module_utils/FeatureGate"}),"\n",(0,n.jsx)(t.h2,{id:"utilsfeaturegate",children:"utils/FeatureGate"}),"\n",(0,n.jsxs)(t.p,{children:["FeatureGate defines util methods for enabling or disabling features in development based on a flag in local storage.\nA global ",(0,n.jsx)(t.code,{children:"window.FeatureGate"})," object is made available in phoenix that can be called anytime after AppStart."]}),"\n",(0,n.jsx)(t.h2,{id:"usage",children:"Usage"}),"\n",(0,n.jsx)(t.p,{children:"For Eg. You may have an extensions in development that colors phoenix in red. But you are working on a new feature\nthat makes other colors available, but not yet ready for use. So put the extension behind a named feature gate\nso that only people who want to test the extension will be able to use it."}),"\n",(0,n.jsx)(t.h3,{id:"creating-a-feature-gate",children:"creating a feature gate"}),"\n",(0,n.jsx)(t.p,{children:(0,n.jsx)(t.strong,{children:"Example"})}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-js",children:"// within extensions\nconst FeatureGate = brackets.getModule(\"utils/FeatureGate\"); // replace with `require` for core modules.\nconst FEATURE_NEW_COLORS = 'myExtension.newColors';\nFeatureGate.registerFeatureGate(FEATURE_NEW_COLORS, false); // false is the default value\n"})}),"\n",(0,n.jsx)(t.h3,{id:"checking-if-a-feature-is-gated",children:"checking if a feature is gated"}),"\n",(0,n.jsxs)(t.p,{children:["Once the feature is registered, use the below code to check if the feature can be safely enabled. For Eg., if\nyou want to enable fancy colors based on the example above:\n",(0,n.jsx)(t.strong,{children:"Example"})]}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-js",children:"if(FeatureGate.isFeatureEnabled(FEATURE_NEW_COLORS)){\n // do fancy colors here\n}\n"})}),"\n",(0,n.jsx)(t.h3,{id:"enabling-features-for-testing",children:"Enabling features for testing"}),"\n",(0,n.jsxs)(t.ol,{children:["\n",(0,n.jsx)(t.li,{children:"Open developer tools > local storage"}),"\n",(0,n.jsxs)(t.li,{children:["Add a new key with the key you have specified for the feature gate.\nIn the above Eg., the key is ",(0,n.jsx)(t.code,{children:"myExtension.newColors"})]}),"\n",(0,n.jsxs)(t.li,{children:["set the value in local storage to ",(0,n.jsx)(t.code,{children:"enabled"})," to enable the feature or anything else to disable."]}),"\n"]}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.a,{href:"#module_utils/FeatureGate",children:"utils/FeatureGate"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.a,{href:"#module_utils/FeatureGate..FEATURE_REGISTERED",children:".FEATURE_REGISTERED"})," : ",(0,n.jsx)("code",{children:"string"})]}),"\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.a,{href:"#module_utils/FeatureGate..registerFeatureGate",children:".registerFeatureGate(featureName, enabledDefault)"})," : ",(0,n.jsx)("code",{children:"function"})]}),"\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.a,{href:"#module_utils/FeatureGate..getAllRegisteredFeatures",children:".getAllRegisteredFeatures()"})," \u21d2 ",(0,n.jsx)("code",{children:"Array."})]}),"\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.a,{href:"#module_utils/FeatureGate..isFeatureEnabled",children:".isFeatureEnabled(featureName)"})," \u21d2 ",(0,n.jsx)("code",{children:"boolean"})]}),"\n",(0,n.jsx)(t.li,{children:(0,n.jsx)(t.a,{href:"#module_utils/FeatureGate..setFeatureEnabled",children:".setFeatureEnabled(featureName, isEnabled)"})}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,n.jsx)("a",{name:"module_utils/FeatureGate..FEATURE_REGISTERED"}),"\n",(0,n.jsxs)(t.h3,{id:"utilsfeaturegatefeature_registered--string",children:["utils/FeatureGate.FEATURE_REGISTERED : ",(0,n.jsx)("code",{children:"string"})]}),"\n",(0,n.jsx)(t.p,{children:"Feature gate registered"}),"\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"Kind"}),": inner constant of ",(0,n.jsx)(t.a,{href:"#module_utils/FeatureGate",children:(0,n.jsx)("code",{children:"utils/FeatureGate"})})]}),"\n",(0,n.jsx)("a",{name:"module_utils/FeatureGate..registerFeatureGate"}),"\n",(0,n.jsxs)(t.h3,{id:"utilsfeaturegateregisterfeaturegatefeaturename-enableddefault--function",children:["utils/FeatureGate.registerFeatureGate(featureName, enabledDefault) : ",(0,n.jsx)("code",{children:"function"})]}),"\n",(0,n.jsxs)(t.p,{children:["Registers a named feature with the default enabled state.\nTo register a feature gate with name ",(0,n.jsx)(t.code,{children:"myExtension.newColors"}),"\nconst FEATURE_NEW_COLORS = 'myExtension.newColors';\nFeatureGate.registerFeatureGate(FEATURE_NEW_COLORS, false); // false is the default value here"]}),"\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"Kind"}),": inner method of ",(0,n.jsx)(t.a,{href:"#module_utils/FeatureGate",children:(0,n.jsx)("code",{children:"utils/FeatureGate"})})]}),"\n",(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Param"}),(0,n.jsx)(t.th,{children:"Type"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"featureName"}),(0,n.jsx)(t.td,{children:(0,n.jsx)("code",{children:"string"})})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"enabledDefault"}),(0,n.jsx)(t.td,{children:(0,n.jsx)("code",{children:"boolean"})})]})]})]}),"\n",(0,n.jsx)("a",{name:"module_utils/FeatureGate..getAllRegisteredFeatures"}),"\n",(0,n.jsxs)(t.h3,{id:"utilsfeaturegategetallregisteredfeatures--arraystring",children:["utils/FeatureGate.getAllRegisteredFeatures() \u21d2 ",(0,n.jsx)("code",{children:"Array."})]}),"\n",(0,n.jsx)(t.p,{children:"Returns an array of all named registered feature gates."}),"\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"Kind"}),": inner method of ",(0,n.jsx)(t.a,{href:"#module_utils/FeatureGate",children:(0,n.jsx)("code",{children:"utils/FeatureGate"})}),(0,n.jsx)(t.br,{}),"\n",(0,n.jsx)(t.strong,{children:"Returns"}),": ",(0,n.jsx)("code",{children:"Array."})," - list of registered features"]}),"\n",(0,n.jsx)("a",{name:"module_utils/FeatureGate..isFeatureEnabled"}),"\n",(0,n.jsxs)(t.h3,{id:"utilsfeaturegateisfeatureenabledfeaturename--boolean",children:["utils/FeatureGate.isFeatureEnabled(featureName) \u21d2 ",(0,n.jsx)("code",{children:"boolean"})]}),"\n",(0,n.jsxs)(t.p,{children:["Returns true is an featureGate is enabled either by default or overridden by the user using local storage.\nTo check if the feature ",(0,n.jsx)(t.code,{children:"myExtension.newColors"})," is enabled\nconst FEATURE_NEW_COLORS = 'myExtension.newColors';\nif(FeatureGate.isFeatureEnabled(FEATURE_NEW_COLORS))"]}),"\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"Kind"}),": inner method of ",(0,n.jsx)(t.a,{href:"#module_utils/FeatureGate",children:(0,n.jsx)("code",{children:"utils/FeatureGate"})})]}),"\n",(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Param"}),(0,n.jsx)(t.th,{children:"Type"})]})}),(0,n.jsx)(t.tbody,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"featureName"}),(0,n.jsx)(t.td,{children:(0,n.jsx)("code",{children:"string"})})]})})]}),"\n",(0,n.jsx)("a",{name:"module_utils/FeatureGate..setFeatureEnabled"}),"\n",(0,n.jsx)(t.h3,{id:"utilsfeaturegatesetfeatureenabledfeaturename-isenabled",children:"utils/FeatureGate.setFeatureEnabled(featureName, isEnabled)"}),"\n",(0,n.jsx)(t.p,{children:"Sets the enabled state of a specific feature in the application."}),"\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"Kind"}),": inner method of ",(0,n.jsx)(t.a,{href:"#module_utils/FeatureGate",children:(0,n.jsx)("code",{children:"utils/FeatureGate"})})]}),"\n",(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Param"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"featureName"}),(0,n.jsx)(t.td,{children:(0,n.jsx)("code",{children:"string"})}),(0,n.jsx)(t.td,{children:"The name of the feature to be modified."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"isEnabled"}),(0,n.jsx)(t.td,{children:(0,n.jsx)("code",{children:"boolean"})}),(0,n.jsx)(t.td,{children:"A boolean flag indicating whether the feature should be enabled (true) or disabled (false)."})]})]})]})]})}function c(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(o,{...e})}):o(e)}},28453:(e,t,a)=>{a.d(t,{R:()=>l,x:()=>i});var r=a(96540);const n={},s=r.createContext(n);function l(e){const t=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:l(e.components),r.createElement(s.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/0829e0b2.b96f4893.js b/assets/js/0829e0b2.b96f4893.js new file mode 100644 index 00000000..d61c2599 --- /dev/null +++ b/assets/js/0829e0b2.b96f4893.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5435],{54345:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>d,default:()=>a,frontMatter:()=>t,metadata:()=>i,toc:()=>c});const i=JSON.parse('{"id":"API-Reference/utils/NodeUtils","title":"NodeUtils","description":"Import :","source":"@site/api/API-Reference/utils/NodeUtils.md","sourceDirName":"API-Reference/utils","slug":"/API-Reference/utils/NodeUtils","permalink":"/api/API-Reference/utils/NodeUtils","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"NativeApp","permalink":"/api/API-Reference/utils/NativeApp"},"next":{"title":"PerfUtils","permalink":"/api/API-Reference/utils/PerfUtils"}}');var r=s(74848),l=s(28453);const t={},d=void 0,o={},c=[{value:"Import :",id:"import-",level:3},{value:"isNodeReady \u21d2 boolean",id:"isnodeready--boolean",level:2},{value:"Strings",id:"strings",level:2},{value:"fetchURLText(url, encoding) \u21d2 Promise.<string>",id:"fetchurltexturl-encoding--promisestring",level:2},{value:"getPhoenixBinaryVersion() \u21d2 Promise.<string>",id:"getphoenixbinaryversion--promisestring",level:2},{value:"getLinuxOSFlavorName() \u21d2 Promise.<(string|null)>",id:"getlinuxosflavorname--promisestringnull",level:2},{value:"openUrlInBrowser(url, browserName)",id:"openurlinbrowserurl-browsername",level:2},{value:"getEnvironmentVariable(varName) \u21d2 Promise.<string>",id:"getenvironmentvariablevarname--promisestring",level:2},{value:"ESLintFile(text, fullFilePath, projectFullPath)",id:"eslintfiletext-fullfilepath-projectfullpath",level:2},{value:"openNativeTerminal(cwd, [usePowerShell])",id:"opennativeterminalcwd-usepowershell",level:2},{value:"openInDefaultApp(fullPath) \u21d2 Promise.<void>",id:"openindefaultappfullpath--promisevoid",level:2},{value:"getDeviceID() \u21d2 Promise.<(string|null)>",id:"getdeviceid--promisestringnull",level:2},{value:"addDeviceLicenseSystemWide() \u21d2 Promise.<boolean>",id:"adddevicelicensesystemwide--promiseboolean",level:2},{value:"removeDeviceLicenseSystemWide() \u21d2 Promise.<boolean>",id:"removedevicelicensesystemwide--promiseboolean",level:2},{value:"isLicensedDeviceSystemWide() \u21d2 Promise.<boolean>",id:"islicenseddevicesystemwide--promiseboolean",level:2},{value:"getOSUserName() \u21d2 Promise.<string>",id:"getosusername--promisestring",level:2},{value:"getSystemSettingsDir() \u21d2 Promise.<string>",id:"getsystemsettingsdir--promisestring",level:2}];function h(e){const n={br:"br",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,l.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"import-",children:"Import :"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-js",children:'const NodeUtils = brackets.getModule("utils/NodeUtils")\n'})}),"\n",(0,r.jsx)("a",{name:"isNodeReady"}),"\n",(0,r.jsxs)(n.h2,{id:"isnodeready--boolean",children:["isNodeReady \u21d2 ",(0,r.jsx)("code",{children:"boolean"})]}),"\n",(0,r.jsx)(n.p,{children:"checks if Node connector is ready"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global variable",(0,r.jsx)(n.br,{}),"\n",(0,r.jsx)(n.strong,{children:"Returns"}),": ",(0,r.jsx)("code",{children:"boolean"})," - returns true if it's ready, otherwise false"]}),"\n",(0,r.jsx)("a",{name:"Strings"}),"\n",(0,r.jsx)(n.h2,{id:"strings",children:"Strings"}),"\n",(0,r.jsxs)(n.p,{children:["Generic node util APIs connector. see ",(0,r.jsx)(n.code,{children:"src-node/utils.js"})," for node peer"]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,r.jsx)("a",{name:"fetchURLText"}),"\n",(0,r.jsxs)(n.h2,{id:"fetchurltexturl-encoding--promisestring",children:["fetchURLText(url, encoding) \u21d2 ",(0,r.jsx)("code",{children:"Promise."})]}),"\n",(0,r.jsx)(n.p,{children:"Fetches text content from a URL\nThis is only available in the native app"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Param"}),(0,r.jsx)(n.th,{children:"Type"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"url"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"string"})})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"encoding"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"string"})})]})]})]}),"\n",(0,r.jsx)("a",{name:"getPhoenixBinaryVersion"}),"\n",(0,r.jsxs)(n.h2,{id:"getphoenixbinaryversion--promisestring",children:["getPhoenixBinaryVersion() \u21d2 ",(0,r.jsx)("code",{children:"Promise."})]}),"\n",(0,r.jsx)(n.p,{children:"Gets the version of the Phoenix binary\nThis is only available in the native app"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,r.jsx)("a",{name:"getLinuxOSFlavorName"}),"\n",(0,r.jsxs)(n.h2,{id:"getlinuxosflavorname--promisestringnull",children:["getLinuxOSFlavorName() \u21d2 ",(0,r.jsx)("code",{children:"Promise.<(string|null)>"})]}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the Linux OS flavor name\nThis is only available in the native app on Linux"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,r.jsx)("a",{name:"openUrlInBrowser"}),"\n",(0,r.jsx)(n.h2,{id:"openurlinbrowserurl-browsername",children:"openUrlInBrowser(url, browserName)"}),"\n",(0,r.jsx)(n.p,{children:"Opens a URL in the default browser.\nThis is only available in the native app."}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Param"}),(0,r.jsx)(n.th,{children:"Type"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"url"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"string"})})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"browserName"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"string"})})]})]})]}),"\n",(0,r.jsx)("a",{name:"getEnvironmentVariable"}),"\n",(0,r.jsxs)(n.h2,{id:"getenvironmentvariablevarname--promisestring",children:["getEnvironmentVariable(varName) \u21d2 ",(0,r.jsx)("code",{children:"Promise."})]}),"\n",(0,r.jsx)(n.p,{children:"Gets an environment variable's value\nThis is only available in the native app"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Param"}),(0,r.jsx)(n.th,{children:"Type"})]})}),(0,r.jsx)(n.tbody,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"varName"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"string"})})]})})]}),"\n",(0,r.jsx)("a",{name:"ESLintFile"}),"\n",(0,r.jsx)(n.h2,{id:"eslintfiletext-fullfilepath-projectfullpath",children:"ESLintFile(text, fullFilePath, projectFullPath)"}),"\n",(0,r.jsx)(n.p,{children:"Runs ESLint on a file\nThis is only available in the native app"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Param"}),(0,r.jsx)(n.th,{children:"Type"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"text"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"string"})})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"fullFilePath"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"string"})})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"projectFullPath"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"string"})})]})]})]}),"\n",(0,r.jsx)("a",{name:"openNativeTerminal"}),"\n",(0,r.jsx)(n.h2,{id:"opennativeterminalcwd-usepowershell",children:"openNativeTerminal(cwd, [usePowerShell])"}),"\n",(0,r.jsx)(n.p,{children:"Runs ESLint on a file\nThis is only available in the native app"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Param"}),(0,r.jsx)(n.th,{children:"Type"}),(0,r.jsx)(n.th,{children:"Default"}),(0,r.jsx)(n.th,{children:"Description"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"cwd"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"string"})}),(0,r.jsx)(n.td,{}),(0,r.jsx)(n.td,{children:"the working directory of terminal"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"[usePowerShell]"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"boolean"})}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"false"})}),(0,r.jsx)(n.td,{})]})]})]}),"\n",(0,r.jsx)("a",{name:"openInDefaultApp"}),"\n",(0,r.jsxs)(n.h2,{id:"openindefaultappfullpath--promisevoid",children:["openInDefaultApp(fullPath) \u21d2 ",(0,r.jsx)("code",{children:"Promise."})]}),"\n",(0,r.jsx)(n.p,{children:"Opens a file in the default application for its type on Windows, macOS, and Linux."}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global function",(0,r.jsx)(n.br,{}),"\n",(0,r.jsx)(n.strong,{children:"Returns"}),": ",(0,r.jsx)("code",{children:"Promise."})," - - Resolves if the file/folder is opened successfully, rejects otherwise."]}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Param"}),(0,r.jsx)(n.th,{children:"Type"}),(0,r.jsx)(n.th,{children:"Description"})]})}),(0,r.jsx)(n.tbody,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"fullPath"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"string"})}),(0,r.jsx)(n.td,{children:"The path to the file/folder to open."})]})})]}),"\n",(0,r.jsx)("a",{name:"getDeviceID"}),"\n",(0,r.jsxs)(n.h2,{id:"getdeviceid--promisestringnull",children:["getDeviceID() \u21d2 ",(0,r.jsx)("code",{children:"Promise.<(string|null)>"})]}),"\n",(0,r.jsx)(n.p,{children:"gets the os device id. this usually won't change till os reinstall."}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global function",(0,r.jsx)(n.br,{}),"\n",(0,r.jsx)(n.strong,{children:"Returns"}),": ",(0,r.jsx)("code",{children:"Promise.<(string|null)>"})," - - Resolves with the os identifier or null",(0,r.jsx)(n.br,{}),"\n",(0,r.jsx)(n.strong,{children:"Throws"}),":"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)("code",{children:"Error"})," - If called from the browser"]}),"\n"]}),"\n",(0,r.jsx)("a",{name:"addDeviceLicenseSystemWide"}),"\n",(0,r.jsxs)(n.h2,{id:"adddevicelicensesystemwide--promiseboolean",children:["addDeviceLicenseSystemWide() \u21d2 ",(0,r.jsx)("code",{children:"Promise."})]}),"\n",(0,r.jsx)(n.p,{children:"Enables device license by creating a system-wide license file.\nOn Windows, macOS, and Linux this will request elevation if needed."}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global function",(0,r.jsx)(n.br,{}),"\n",(0,r.jsx)(n.strong,{children:"Returns"}),": ",(0,r.jsx)("code",{children:"Promise."})," - - Resolves true if system wide defile file added, else false.",(0,r.jsx)(n.br,{}),"\n",(0,r.jsx)(n.strong,{children:"Throws"}),":"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)("code",{children:"Error"})," - If called from the browser"]}),"\n"]}),"\n",(0,r.jsx)("a",{name:"removeDeviceLicenseSystemWide"}),"\n",(0,r.jsxs)(n.h2,{id:"removedevicelicensesystemwide--promiseboolean",children:["removeDeviceLicenseSystemWide() \u21d2 ",(0,r.jsx)("code",{children:"Promise."})]}),"\n",(0,r.jsx)(n.p,{children:"Removes the system-wide device license file.\nOn Windows, macOS, and Linux this will request elevation if needed."}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global function",(0,r.jsx)(n.br,{}),"\n",(0,r.jsx)(n.strong,{children:"Returns"}),": ",(0,r.jsx)("code",{children:"Promise."})," - - Resolves true if system wide defile file removed, else false.",(0,r.jsx)(n.br,{}),"\n",(0,r.jsx)(n.strong,{children:"Throws"}),":"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)("code",{children:"Error"})," - If called from the browser"]}),"\n"]}),"\n",(0,r.jsx)("a",{name:"isLicensedDeviceSystemWide"}),"\n",(0,r.jsxs)(n.h2,{id:"islicenseddevicesystemwide--promiseboolean",children:["isLicensedDeviceSystemWide() \u21d2 ",(0,r.jsx)("code",{children:"Promise."})]}),"\n",(0,r.jsxs)(n.p,{children:["Checks if the current machine is configured to check for system-wide device license for all users at app start.\nThis validates that the system-wide license file exists, contains valid JSON, and has ",(0,r.jsx)(n.code,{children:"licensedDevice: true"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global function",(0,r.jsx)(n.br,{}),"\n",(0,r.jsx)(n.strong,{children:"Returns"}),": ",(0,r.jsx)("code",{children:"Promise."})," - - Resolves with ",(0,r.jsx)(n.code,{children:"true"})," if the device is licensed, ",(0,r.jsx)(n.code,{children:"false"})," otherwise."]}),"\n",(0,r.jsx)("a",{name:"getOSUserName"}),"\n",(0,r.jsxs)(n.h2,{id:"getosusername--promisestring",children:["getOSUserName() \u21d2 ",(0,r.jsx)("code",{children:"Promise."})]}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the operating system username of the current user.\nThis method is only available in native apps."}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global function",(0,r.jsx)(n.br,{}),"\n",(0,r.jsx)(n.strong,{children:"Returns"}),": ",(0,r.jsx)("code",{children:"Promise."})," - A promise that resolves to the OS username of the current user.",(0,r.jsx)(n.br,{}),"\n",(0,r.jsx)(n.strong,{children:"Throws"}),":"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)("code",{children:"Error"})," Throws an error if called in a browser environment."]}),"\n"]}),"\n",(0,r.jsx)("a",{name:"getSystemSettingsDir"}),"\n",(0,r.jsxs)(n.h2,{id:"getsystemsettingsdir--promisestring",children:["getSystemSettingsDir() \u21d2 ",(0,r.jsx)("code",{children:"Promise."})]}),"\n",(0,r.jsx)(n.p,{children:"Retrieves the directory path for system settings. This method is applicable to native apps only."}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global function",(0,r.jsx)(n.br,{}),"\n",(0,r.jsx)(n.strong,{children:"Returns"}),": ",(0,r.jsx)("code",{children:"Promise."})," - A promise that resolves to the path of the system settings directory.",(0,r.jsx)(n.br,{}),"\n",(0,r.jsx)(n.strong,{children:"Throws"}),":"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)("code",{children:"Error"})," If the method is called in browser app."]}),"\n"]})]})}function a(e={}){const{wrapper:n}={...(0,l.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},28453:(e,n,s)=>{s.d(n,{R:()=>t,x:()=>d});var i=s(96540);const r={},l=i.createContext(r);function t(e){const n=i.useContext(l);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:t(e.components),i.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/08a857c2.00f23e7a.js b/assets/js/08a857c2.00f23e7a.js new file mode 100644 index 00000000..18b34c16 --- /dev/null +++ b/assets/js/08a857c2.00f23e7a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1711],{54784:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>d,default:()=>h,frontMatter:()=>s,metadata:()=>r,toc:()=>o});const r=JSON.parse('{"id":"API-Reference/preferences/StateManager","title":"StateManager","description":"Import :","source":"@site/api/API-Reference/preferences/StateManager.md","sourceDirName":"API-Reference/preferences","slug":"/API-Reference/preferences/StateManager","permalink":"/api/API-Reference/preferences/StateManager","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"PreferencesManager","permalink":"/api/API-Reference/preferences/PreferencesManager"},"next":{"title":"FileSyncManager","permalink":"/api/API-Reference/project/FileSyncManager"}}');var i=t(74848),c=t(28453);const s={},d=void 0,l={},o=[{value:"Import :",id:"import-",level:3},{value:"_",id:"_",level:2},{value:"PROJECT_CONTEXT : string",id:"project_context--string",level:2},{value:"GLOBAL_CONTEXT : string",id:"global_context--string",level:2},{value:"PROJECT_THEN_GLOBAL_CONTEXT : string",id:"project_then_global_context--string",level:2},{value:"getVal(id, [context])",id:"getvalid-context",level:2},{value:"setVal(id, value, [context])",id:"setvalid-value-context",level:2},{value:"definePreferenceInternal(id, type, initial, options) \u21d2 Object",id:"definepreferenceinternalid-type-initial-options--object",level:2},{value:"getPreferenceInternal(id) \u21d2 Object",id:"getpreferenceinternalid--object",level:2},{value:"createExtensionStateManager(extensionID) \u21d2 object",id:"createextensionstatemanagerextensionid--object",level:2}];function a(e){const n={br:"br",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,c.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h3,{id:"import-",children:"Import :"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-js",children:'const StateManager = brackets.getModule("preferences/StateManager")\n'})}),"\n",(0,i.jsx)("a",{name:"_"}),"\n",(0,i.jsx)(n.h2,{id:"_",children:"_"}),"\n",(0,i.jsx)(n.p,{children:"StateManager"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,i.jsx)("a",{name:"PROJECT_CONTEXT"}),"\n",(0,i.jsxs)(n.h2,{id:"project_context--string",children:["PROJECT_CONTEXT : ",(0,i.jsx)("code",{children:"string"})]}),"\n",(0,i.jsx)(n.p,{children:"Project specific context"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,i.jsx)("a",{name:"GLOBAL_CONTEXT"}),"\n",(0,i.jsxs)(n.h2,{id:"global_context--string",children:["GLOBAL_CONTEXT : ",(0,i.jsx)("code",{children:"string"})]}),"\n",(0,i.jsx)(n.p,{children:"Global context"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,i.jsx)("a",{name:"PROJECT_THEN_GLOBAL_CONTEXT"}),"\n",(0,i.jsxs)(n.h2,{id:"project_then_global_context--string",children:["PROJECT_THEN_GLOBAL_CONTEXT : ",(0,i.jsx)("code",{children:"string"})]}),"\n",(0,i.jsx)(n.p,{children:"Project or global context"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,i.jsx)("a",{name:"getVal"}),"\n",(0,i.jsx)(n.h2,{id:"getvalid-context",children:"getVal(id, [context])"}),"\n",(0,i.jsx)(n.p,{children:"Convenience function that gets a view state"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"id"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(n.td,{children:"preference to get"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"[context]"}),(0,i.jsxs)(n.td,{children:[(0,i.jsx)("code",{children:"Object"})," | ",(0,i.jsx)("code",{children:"string"})]}),(0,i.jsx)(n.td,{children:"Optional additional information about the request, can be: - ScopeManager.PROJECT_CONTEXT if you want to get project specific value or - ScopeManager.GLOBAL_CONTEXT if you want to get it from global context and not the project context. - null/undefined if you want to get from project context first, and then global context if not found in project context."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"[context.scope]"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(n.td,{children:"Eg. user - deprecated, do not use"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"[context.layer]"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(n.td,{children:"Eg. project - deprecated, do not use"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"[context.layerID]"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(n.td,{children:"Eg. /tauri/path/to/project - deprecated, do not use"})]})]})]}),"\n",(0,i.jsx)("a",{name:"setVal"}),"\n",(0,i.jsx)(n.h2,{id:"setvalid-value-context",children:"setVal(id, value, [context])"}),"\n",(0,i.jsx)(n.p,{children:"Convenience function that sets a view state and then saves the file"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"id"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(n.td,{children:"preference to set"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"value"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"*"})}),(0,i.jsx)(n.td,{children:"new value for the preference"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"[context]"}),(0,i.jsxs)(n.td,{children:[(0,i.jsx)("code",{children:"Object"})," | ",(0,i.jsx)("code",{children:"string"})]}),(0,i.jsx)(n.td,{children:"Optional additional information about the request, can be: ScopeManager.PROJECT_CONTEXT if you want to get project specific value or ScopeManager.GLOBAL_CONTEXT or null if you want to set globally."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"[context.scope]"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(n.td,{children:"Eg. user - deprecated, do not use"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"[context.layer]"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(n.td,{children:"Eg. project - deprecated, do not use"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"[context.layerID]"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(n.td,{children:"Eg. /tauri/path/to/project - deprecated, do not use"})]})]})]}),"\n",(0,i.jsx)("a",{name:"definePreferenceInternal"}),"\n",(0,i.jsxs)(n.h2,{id:"definepreferenceinternalid-type-initial-options--object",children:["definePreferenceInternal(id, type, initial, options) \u21d2 ",(0,i.jsx)("code",{children:"Object"})]}),"\n",(0,i.jsxs)(n.p,{children:["returns a preference instance that can be listened ",(0,i.jsx)(n.code,{children:'.on("change", cbfn(changeType))'})," . The callback fucntion will be called\nwhenever there is a change in the supplied id with a changeType argument. The change type can be one of the two:\nCHANGE_TYPE_INTERNAL - if change is made within the current app window/browser tap\nCHANGE_TYPE_EXTERNAL - if change is made in a different app window/browser tab"]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsx)(n.tr,{children:(0,i.jsx)(n.th,{children:"Param"})})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsx)(n.tr,{children:(0,i.jsx)(n.td,{children:"id"})}),(0,i.jsx)(n.tr,{children:(0,i.jsx)(n.td,{children:"type"})}),(0,i.jsx)(n.tr,{children:(0,i.jsx)(n.td,{children:"initial"})}),(0,i.jsx)(n.tr,{children:(0,i.jsx)(n.td,{children:"options"})})]})]}),"\n",(0,i.jsx)("a",{name:"getPreferenceInternal"}),"\n",(0,i.jsxs)(n.h2,{id:"getpreferenceinternalid--object",children:["getPreferenceInternal(id) \u21d2 ",(0,i.jsx)("code",{children:"Object"})]}),"\n",(0,i.jsx)(n.p,{children:"Get the preference instance for the given ID."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"})]})}),(0,i.jsx)(n.tbody,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"id"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})})]})})]}),"\n",(0,i.jsx)("a",{name:"createExtensionStateManager"}),"\n",(0,i.jsxs)(n.h2,{id:"createextensionstatemanagerextensionid--object",children:["createExtensionStateManager(extensionID) \u21d2 ",(0,i.jsx)("code",{children:"object"})]}),"\n",(0,i.jsx)(n.p,{children:"create a state manager for an extension.\nensure that the IDs are unique."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function",(0,i.jsx)(n.br,{}),"\n",(0,i.jsx)(n.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"object"})," - Object with methods to manage the extension's state and preferences."]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"get(id, context)"}),": Get the value from the extension's state."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"set(id, value, context)"}),": Set the value in the extension's state."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"definePreference(id, type, initial, options)"}),": define a preference for the extension."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"getPreference(id)"}),": retrieve a defined preference."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"PROJECT_CONTEXT"}),", ",(0,i.jsx)(n.code,{children:"GLOBAL_CONTEXT"}),", ",(0,i.jsx)(n.code,{children:"PROJECT_THEN_GLOBAL_CONTEXT"}),": constant for context management."]}),"\n"]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"})]})}),(0,i.jsx)(n.tbody,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"extensionID"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})})]})})]})]})}function h(e={}){const{wrapper:n}={...(0,c.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(a,{...e})}):a(e)}},28453:(e,n,t)=>{t.d(n,{R:()=>s,x:()=>d});var r=t(96540);const i={},c=r.createContext(i);function s(e){const n=r.useContext(c);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:s(e.components),r.createElement(c.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/09d9f6f3.ca4ae693.js b/assets/js/09d9f6f3.ca4ae693.js new file mode 100644 index 00000000..2fbbb212 --- /dev/null +++ b/assets/js/09d9f6f3.ca4ae693.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9710],{58529:(e,i,t)=>{t.r(i),t.d(i,{assets:()=>l,contentTitle:()=>d,default:()=>o,frontMatter:()=>c,metadata:()=>n,toc:()=>h});const n=JSON.parse('{"id":"API-Reference/search/QuickSearchField","title":"QuickSearchField","description":"Import :","source":"@site/api/API-Reference/search/QuickSearchField.md","sourceDirName":"API-Reference/search","slug":"/API-Reference/search/QuickSearchField","permalink":"/api/API-Reference/search/QuickSearchField","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"QuickOpenHelper","permalink":"/api/API-Reference/search/QuickOpenHelper"},"next":{"title":"SearchModel","permalink":"/api/API-Reference/search/SearchModel"}}');var s=t(74848),r=t(28453);const c={},d=void 0,l={},h=[{value:"Import :",id:"import-",level:3},{value:"QuickSearchField",id:"quicksearchfield",level:2},{value:"new QuickSearchField($input)",id:"new-quicksearchfieldinput",level:3},{value:"quickSearchField.options : Object",id:"quicksearchfieldoptions--object",level:3},{value:"quickSearchField.$input : jQueryObject",id:"quicksearchfieldinput--jqueryobject",level:3},{value:"quickSearchField.$positionEl : jQueryObject",id:"quicksearchfieldpositionel--jqueryobject",level:3},{value:"quickSearchField.updateResults()",id:"quicksearchfieldupdateresults",level:3},{value:"quickSearchField.setText(value)",id:"quicksearchfieldsettextvalue",level:3},{value:"quickSearchField.destroy()",id:"quicksearchfielddestroy",level:3},{value:"KeyEvent",id:"keyevent",level:2}];function a(e){const i={a:"a",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,r.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(i.h3,{id:"import-",children:"Import :"}),"\n",(0,s.jsx)(i.pre,{children:(0,s.jsx)(i.code,{className:"language-js",children:'const QuickSearchField = brackets.getModule("search/QuickSearchField")\n'})}),"\n",(0,s.jsx)("a",{name:"QuickSearchField"}),"\n",(0,s.jsx)(i.h2,{id:"quicksearchfield",children:"QuickSearchField"}),"\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.strong,{children:"Kind"}),": global class"]}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.a,{href:"#QuickSearchField",children:"QuickSearchField"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsx)(i.li,{children:(0,s.jsx)(i.a,{href:"#new_QuickSearchField_new",children:"new QuickSearchField($input)"})}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.a,{href:"#QuickSearchField+options",children:".options"})," : ",(0,s.jsx)("code",{children:"Object"})]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.a,{href:"#QuickSearchField+$input",children:".$input"})," : ",(0,s.jsx)("code",{children:"jQueryObject"})]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.a,{href:"#QuickSearchField+$positionEl",children:".$positionEl"})," : ",(0,s.jsx)("code",{children:"jQueryObject"})]}),"\n",(0,s.jsx)(i.li,{children:(0,s.jsx)(i.a,{href:"#QuickSearchField+updateResults",children:".updateResults()"})}),"\n",(0,s.jsx)(i.li,{children:(0,s.jsx)(i.a,{href:"#QuickSearchField+setText",children:".setText(value)"})}),"\n",(0,s.jsx)(i.li,{children:(0,s.jsx)(i.a,{href:"#QuickSearchField+destroy",children:".destroy()"})}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)("a",{name:"new_QuickSearchField_new"}),"\n",(0,s.jsx)(i.h3,{id:"new-quicksearchfieldinput",children:"new QuickSearchField($input)"}),"\n",(0,s.jsx)(i.p,{children:'Attaches to an existing "input" tag'}),"\n",(0,s.jsxs)(i.table,{children:[(0,s.jsx)(i.thead,{children:(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.th,{children:"Param"}),(0,s.jsx)(i.th,{children:"Type"}),(0,s.jsx)(i.th,{children:"Description"})]})}),(0,s.jsxs)(i.tbody,{children:[(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"$input"}),(0,s.jsx)(i.td,{children:(0,s.jsx)("code",{children:"jQueryObject"})}),(0,s.jsx)(i.td,{})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"options.resultProvider"}),(0,s.jsx)(i.td,{children:(0,s.jsx)("code",{children:"function"})}),(0,s.jsx)(i.td,{children:'Given the current search text, returns an array of result objects, an error object, or a Promise that yields one of those. If the Promise is still outstanding when the query next changes, resultProvider() will be called again (without waiting for the earlier Promise), and the Promise\'s result will be ignored. If the provider yields [], or a non-null error string, input is decorated with ".no-results"; if the provider yields a null error string, input is not decorated.'})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"options.formatter"}),(0,s.jsx)(i.td,{children:(0,s.jsx)("code",{children:"function"})}),(0,s.jsx)(i.td,{children:'Converts one result object to a string of HTML text. Passed the item and the current query. The outermost element must be "li". The ".highlight" class can be ignored as it is applied automatically.'})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"options.onCommit"}),(0,s.jsx)(i.td,{children:(0,s.jsx)("code",{children:"function"})}),(0,s.jsx)(i.td,{children:"Called when an item is selected by clicking or pressing Enter. Passed the committed item and the current query and its index. If the current result list is not up to date with the query text at the time Enter is pressed, waits until it is before running this callback. If Enter pressed with no results, passed null. The popup remains open after this event."})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"options.onHighlight"}),(0,s.jsx)(i.td,{children:(0,s.jsx)("code",{children:"function"})}),(0,s.jsx)(i.td,{children:"Called when an item is highlighted in the list. Passed the item, the current query, and a flag that is true if the item was highlighted explicitly (arrow keys), not simply due to a results list update. Since the top item in the list is always initially highlighted, every time the list is updated onHighlight() is called with the top item and with the explicit flag set to false."})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"options.onDelete"}),(0,s.jsx)(i.td,{children:(0,s.jsx)("code",{children:"function"})}),(0,s.jsx)(i.td,{children:"Called when delete key is pressed on a selected item in the list. Passed the item."})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"options.onDismiss"}),(0,s.jsx)(i.td,{children:(0,s.jsx)("code",{children:"function"})}),(0,s.jsx)(i.td,{children:"Called when popup is dismissed with escape key press. Popup is not usable after this point."})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"options.maxResults"}),(0,s.jsx)(i.td,{children:(0,s.jsx)("code",{children:"number"})}),(0,s.jsx)(i.td,{children:"Maximum number of items from resultProvider() to display in the popup."})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"options.verticalAdjust"}),(0,s.jsx)(i.td,{children:(0,s.jsx)("code",{children:"number"})}),(0,s.jsx)(i.td,{children:"Number of pixels to position the popup below where $input is when constructor is called. Useful if UI is going to animate position after construction, but QuickSearchField may receive input before the animation is done."})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"options.$positionEl"}),(0,s.jsx)(i.td,{children:(0,s.jsx)("code",{children:"jQueryObject"})}),(0,s.jsx)(i.td,{children:"If provided, the popup will be positioned based on this."})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"options.firstHighlightIndex"}),(0,s.jsx)(i.td,{children:(0,s.jsx)("code",{children:"number"})}),(0,s.jsx)(i.td,{children:"Index of the result that is highlighted by default. null to not highlight any result."})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"options.focusLastActiveElementOnClose"}),(0,s.jsx)(i.td,{children:(0,s.jsx)("code",{children:"boolean"})}),(0,s.jsx)(i.td,{children:"If set to true, focuses the last active element on close. By default, the editor is always focused."})]})]})]}),"\n",(0,s.jsx)("a",{name:"QuickSearchField+options"}),"\n",(0,s.jsxs)(i.h3,{id:"quicksearchfieldoptions--object",children:["quickSearchField.options : ",(0,s.jsx)("code",{children:"Object"})]}),"\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.strong,{children:"Kind"}),": instance property of ",(0,s.jsx)(i.a,{href:"#QuickSearchField",children:(0,s.jsx)("code",{children:"QuickSearchField"})})]}),"\n",(0,s.jsx)("a",{name:"QuickSearchField+$input"}),"\n",(0,s.jsxs)(i.h3,{id:"quicksearchfieldinput--jqueryobject",children:["quickSearchField.$input : ",(0,s.jsx)("code",{children:"jQueryObject"})]}),"\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.strong,{children:"Kind"}),": instance property of ",(0,s.jsx)(i.a,{href:"#QuickSearchField",children:(0,s.jsx)("code",{children:"QuickSearchField"})})]}),"\n",(0,s.jsx)("a",{name:"QuickSearchField+$positionEl"}),"\n",(0,s.jsxs)(i.h3,{id:"quicksearchfieldpositionel--jqueryobject",children:["quickSearchField.$positionEl : ",(0,s.jsx)("code",{children:"jQueryObject"})]}),"\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.strong,{children:"Kind"}),": instance property of ",(0,s.jsx)(i.a,{href:"#QuickSearchField",children:(0,s.jsx)("code",{children:"QuickSearchField"})})]}),"\n",(0,s.jsx)("a",{name:"QuickSearchField+updateResults"}),"\n",(0,s.jsx)(i.h3,{id:"quicksearchfieldupdateresults",children:"quickSearchField.updateResults()"}),"\n",(0,s.jsx)(i.p,{children:"Refresh the results dropdown, as if the user had changed the search text. Useful for providers that\nwant to show cached data initially, then update the results with fresher data once available."}),"\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.strong,{children:"Kind"}),": instance method of ",(0,s.jsx)(i.a,{href:"#QuickSearchField",children:(0,s.jsx)("code",{children:"QuickSearchField"})})]}),"\n",(0,s.jsx)("a",{name:"QuickSearchField+setText"}),"\n",(0,s.jsx)(i.h3,{id:"quicksearchfieldsettextvalue",children:"quickSearchField.setText(value)"}),"\n",(0,s.jsx)(i.p,{children:"Programmatically changes the search text and updates the results."}),"\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.strong,{children:"Kind"}),": instance method of ",(0,s.jsx)(i.a,{href:"#QuickSearchField",children:(0,s.jsx)("code",{children:"QuickSearchField"})})]}),"\n",(0,s.jsxs)(i.table,{children:[(0,s.jsx)(i.thead,{children:(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.th,{children:"Param"}),(0,s.jsx)(i.th,{children:"Type"})]})}),(0,s.jsx)(i.tbody,{children:(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"value"}),(0,s.jsx)(i.td,{children:(0,s.jsx)("code",{children:"string"})})]})})]}),"\n",(0,s.jsx)("a",{name:"QuickSearchField+destroy"}),"\n",(0,s.jsx)(i.h3,{id:"quicksearchfielddestroy",children:"quickSearchField.destroy()"}),"\n",(0,s.jsx)(i.p,{children:"Closes the dropdown, and discards any pending Promises."}),"\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.strong,{children:"Kind"}),": instance method of ",(0,s.jsx)(i.a,{href:"#QuickSearchField",children:(0,s.jsx)("code",{children:"QuickSearchField"})})]}),"\n",(0,s.jsx)("a",{name:"KeyEvent"}),"\n",(0,s.jsx)(i.h2,{id:"keyevent",children:"KeyEvent"}),"\n",(0,s.jsx)(i.p,{children:"Text field with attached dropdown list that is updated (based on a provider) whenever the text changes."}),"\n",(0,s.jsx)(i.p,{children:"For styling, the DOM structure of the popup is as follows:\nbody\nol.quick-search-container\nli\nli.highlight\nli\nAnd the text field is:\ninput\ninput.no-results"}),"\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.strong,{children:"Kind"}),": global constant"]})]})}function o(e={}){const{wrapper:i}={...(0,r.R)(),...e.components};return i?(0,s.jsx)(i,{...e,children:(0,s.jsx)(a,{...e})}):a(e)}},28453:(e,i,t)=>{t.d(i,{R:()=>c,x:()=>d});var n=t(96540);const s={},r=n.createContext(s);function c(e){const i=n.useContext(r);return n.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function d(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:c(e.components),n.createElement(r.Provider,{value:i},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/0b7c8f83.f4ac1996.js b/assets/js/0b7c8f83.f4ac1996.js new file mode 100644 index 00000000..7d7c1893 --- /dev/null +++ b/assets/js/0b7c8f83.f4ac1996.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2566],{45956:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>a,contentTitle:()=>d,default:()=>c,frontMatter:()=>r,metadata:()=>t,toc:()=>l});var t=i(61247),o=i(74848),s=i(28453);const r={slug:"release-3.10",title:"Editor Experience Release (November-2024, V-3.10) is now Live",description:"Phoenix Code 3.10 improves the editor UI with indent guide lines, better performance, and visual feedback. Updated extension developer docs.",authors:["arun","charly","devvaannsh","phoenixBot"],tags:["Editor Experience","UI Improvements","Windows","Linux","Mac","Release"]},d=void 0,a={authorsImageUrls:[void 0,void 0,void 0,void 0]},l=[{value:"Indent Guide Lines",id:"indent-guide-lines",level:2},{value:"Customizable Editor Line Height",id:"customizable-editor-line-height",level:2},{value:"Line:Col Indicator Relocation",id:"linecol-indicator-relocation",level:2},{value:"Performance Tweaks",id:"performance-tweaks",level:2},{value:"Stability Improvements",id:"stability-improvements",level:2},{value:"Documentation Updates",id:"documentation-updates",level:2},{value:"All changes",id:"all-changes",level:2},{value:"A Request from the Phoenix Team:",id:"a-request-from-the-phoenix-team",level:2}];function h(e){const n={a:"a",code:"code",h2:"h2",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(n.p,{children:["November release(3.10) of Phoenix Code is now available for download at ",(0,o.jsx)(n.a,{href:"https://phcode.io",children:"phcode.io"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["This month's core theme is ",(0,o.jsx)(n.code,{children:"Editor UI improvements"}),". We have fine-tuned the editing experience for better\nperformance and visual feedback.\nWe've also made substantial improvements to ",(0,o.jsx)(n.a,{href:"https://docs.phcode.dev",children:"docs.phcode.dev"})," to better support extension\ndevelopers."]}),"\n",(0,o.jsx)(n.h2,{id:"indent-guide-lines",children:"Indent Guide Lines"}),"\n",(0,o.jsxs)(n.p,{children:["Phoenix Code now supports indent guidelines to help you better visualize code structure. This feature can\nbe toggled via ",(0,o.jsx)(n.code,{children:"View > Indent Guide Lines"}),". ",(0,o.jsx)(n.a,{href:"https://docs.phcode.dev/docs/editing-text#indent-guide-lines",children:"Read more..."})]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{src:"https://github.com/user-attachments/assets/3d9d0c55-3c9e-4ab3-bbc0-53b563d19e39",alt:"image"})}),"\n",(0,o.jsx)(n.h2,{id:"customizable-editor-line-height",children:"Customizable Editor Line Height"}),"\n",(0,o.jsxs)(n.p,{children:["Theme Settings (",(0,o.jsx)(n.code,{children:"View > Themes..."}),") now has a new ",(0,o.jsx)(n.code,{children:"Line Height"})," slider. Adjust the editor line height between 1x and 3x to find your\nperfect balance of readability and screen real estate. ",(0,o.jsx)(n.a,{href:"https://docs.phcode.dev/docs/editing-text#line-height",children:"Read more..."})]}),"\n",(0,o.jsxs)(n.p,{children:["Also added a ",(0,o.jsx)(n.code,{children:"Get More..."})," button to the Themes dialog, linking directly to the themes section in Extension Manager."]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{src:"https://github.com/user-attachments/assets/97a46d9a-e971-401d-8a77-015afa6d5972",alt:"image"})}),"\n",(0,o.jsxs)(n.h2,{id:"linecol-indicator-relocation",children:[(0,o.jsx)(n.code,{children:"Line:Col"})," Indicator Relocation"]}),"\n",(0,o.jsxs)(n.p,{children:["Moved to the right of the status bar, accommodating future status bar extensions. Click on the ",(0,o.jsx)(n.code,{children:"line:col"})," section in the\nstatusbar to jump to specific lines."]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{src:"https://github.com/user-attachments/assets/540ea992-dda0-4a2c-8042-3c6228616636",alt:"image"})}),"\n",(0,o.jsx)(n.h2,{id:"performance-tweaks",children:"Performance Tweaks"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.a,{href:"https://github.com/phcode-dev/phoenix/pull/1943",children:"Major improvements to editor rendering"})," with better editor scroll\nconsistency and performance, especially on Safari and macOS."]}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"https://github.com/phcode-dev/phoenix/pull/1937",children:"Faster startup of extension manager."})}),"\n"]}),"\n",(0,o.jsx)(n.h2,{id:"stability-improvements",children:"Stability Improvements"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"https://github.com/phcode-dev/phoenix/pull/1889",children:"File recovery now does integrity checks for more reliable crash recovery."})}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"https://github.com/phcode-dev/phoenix/pull/1838",children:"Fixed Markdown image link handling within href tags."})}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"https://github.com/phcode-dev/phoenix/pull/1932",children:"Improved extension registry management to prevent quota issues on Mac/Linux."})}),"\n"]}),"\n",(0,o.jsx)(n.h2,{id:"documentation-updates",children:"Documentation Updates"}),"\n",(0,o.jsxs)(n.p,{children:["Our documentation site - ",(0,o.jsx)(n.a,{href:"https://docs.phcode.dev",children:"docs.phcode.dev"})," has received a major overhaul:"]}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:["Updated user guide: ",(0,o.jsx)(n.a,{href:"https://docs.phcode.dev/docs/intro",children:"docs.phcode.dev/docs/intro"})]}),"\n",(0,o.jsxs)(n.li,{children:["New API documentation for extension developers: ",(0,o.jsx)(n.a,{href:"https://docs.phcode.dev/api/getting-started",children:"docs.phcode.dev/api/getting-started"})]}),"\n"]}),"\n",(0,o.jsx)(n.h2,{id:"all-changes",children:"All changes"}),"\n",(0,o.jsxs)(n.p,{children:["Please see ",(0,o.jsx)(n.a,{href:"https://github.com/phcode-dev/phoenix/commits/main/?since=2024-09-11&until=2024-11-24",children:"this link"})," for a full list of changes\nin GitHub."]}),"\n",(0,o.jsx)(n.h2,{id:"a-request-from-the-phoenix-team",children:"A Request from the Phoenix Team:"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Share your feedback:"})," ",(0,o.jsx)(n.a,{href:"https://github.com/orgs/phcode-dev/discussions",children:"https://github.com/orgs/phcode-dev/discussions"})]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Spread the word"})," about Phoenix to friends and colleagues."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsxs)(n.a,{href:"https://github.com/sponsors/phcode-dev",children:[(0,o.jsx)(n.strong,{children:"Consider supporting us"})," on GitHub Sponsors"]}),". Every contribution helps us\nto keep improving Phoenix Code."]}),"\n"]}),"\n",(0,o.jsx)(n.p,{children:"With gratitude,"}),"\n",(0,o.jsx)(n.p,{children:"The Phoenix Team"})]})}function c(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(h,{...e})}):h(e)}},28453:(e,n,i)=>{i.d(n,{R:()=>r,x:()=>d});var t=i(96540);const o={},s=t.createContext(o);function r(e){const n=t.useContext(s);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),t.createElement(s.Provider,{value:n},e.children)}},61247:e=>{e.exports=JSON.parse('{"permalink":"/blog/release-3.10","editUrl":"https://github.com/phcode-dev/docs/blob/main/blog/2024-11-24-Release-3.10/index.md","source":"@site/blog/2024-11-24-Release-3.10/index.md","title":"Editor Experience Release (November-2024, V-3.10) is now Live","description":"Phoenix Code 3.10 improves the editor UI with indent guide lines, better performance, and visual feedback. Updated extension developer docs.","date":"2024-11-24T00:00:00.000Z","tags":[{"inline":true,"label":"Editor Experience","permalink":"/blog/tags/editor-experience"},{"inline":true,"label":"UI Improvements","permalink":"/blog/tags/ui-improvements"},{"inline":true,"label":"Windows","permalink":"/blog/tags/windows"},{"inline":true,"label":"Linux","permalink":"/blog/tags/linux"},{"inline":true,"label":"Mac","permalink":"/blog/tags/mac"},{"inline":true,"label":"Release","permalink":"/blog/tags/release"}],"readingTime":2.09,"hasTruncateMarker":false,"authors":[{"name":"Arun Bose","title":"Co-Founder, Phoenix Code","url":"https://github.com/abose","imageURL":"https://github.com/abose.png","key":"arun","page":null},{"name":"Charly P Abraham","title":"Co-Founder, Phoenix Code","url":"https://github.com/charlypa","imageURL":"https://github.com/charlypa.png","key":"charly","page":null},{"name":"Devansh Agarwal","title":"Founding Engineer, Phoenix Code","url":"https://github.com/devvaannsh","imageURL":"https://github.com/devvaannsh.png","key":"devvaannsh","page":null},{"name":"Phoenix Code Bot","title":"Our little elf who keeps the whole place together","url":"https://github.com/phoenixide","imageURL":"https://github.com/phoenixide.png","key":"phoenixBot","page":null}],"frontMatter":{"slug":"release-3.10","title":"Editor Experience Release (November-2024, V-3.10) is now Live","description":"Phoenix Code 3.10 improves the editor UI with indent guide lines, better performance, and visual feedback. Updated extension developer docs.","authors":["arun","charly","devvaannsh","phoenixBot"],"tags":["Editor Experience","UI Improvements","Windows","Linux","Mac","Release"]},"unlisted":false,"prevItem":{"title":"Phoenix Code: The Legacy of Brackets - Continued","permalink":"/blog/Blog-Legacy"},"nextItem":{"title":"HTML Workflows and stability Release (September-2024, V-3.9) is now Live","permalink":"/blog/release-3.9"}}')}}]); \ No newline at end of file diff --git a/assets/js/0d1709d8.348e6b8b.js b/assets/js/0d1709d8.348e6b8b.js new file mode 100644 index 00000000..8d65dfc7 --- /dev/null +++ b/assets/js/0d1709d8.348e6b8b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[138],{4536:(e,n,a)=>{a.r(n),a.d(n,{assets:()=>r,contentTitle:()=>o,default:()=>h,frontMatter:()=>i,metadata:()=>t,toc:()=>c});const t=JSON.parse('{"id":"How-To/Panels","title":"How to create Panels","description":"In Phoenix Code, Panels are of two types :- Plugin Panel and Bottom Panel.","source":"@site/api/08-How-To/Panels.md","sourceDirName":"08-How-To","slug":"/How-To/Panels","permalink":"/api/How-To/Panels","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"How to create Panels"},"sidebar":"tutorialSidebar","previous":{"title":"Add Menus, Menu items and Keyboard Shortcuts","permalink":"/api/How-To/Menus"},"next":{"title":"Add an indicator icon on the status bar","permalink":"/api/How-To/StatusBar"}}');var s=a(74848),l=a(28453);const i={title:"How to create Panels"},o=void 0,r={},c=[{value:"Creating a Plugin Panel",id:"creating-a-plugin-panel",level:2},{value:"Managing Plugin Panel State",id:"managing-plugin-panel-state",level:2},{value:"Creating a Bottom Panel",id:"creating-a-bottom-panel",level:2},{value:"Managing Bottom Panel State",id:"managing-bottom-panel-state",level:2},{value:"Best Practices",id:"best-practices",level:2}];function d(e){const n={a:"a",blockquote:"blockquote",code:"code",em:"em",h2:"h2",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,l.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.p,{children:["In Phoenix Code, Panels are of two types :- ",(0,s.jsx)(n.code,{children:"Plugin Panel"})," and ",(0,s.jsx)(n.code,{children:"Bottom Panel"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Plugin Panel"})," appears on the side of the screen, generally the left side. For Example :- ",(0,s.jsx)(n.em,{children:"Live Preview"})," feature uses the ",(0,s.jsx)(n.code,{children:"Plugin Panel"}),"."]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"Plugin Panel Example",src:a(97925).A+"",width:"1919",height:"1099"})}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Bottom Panel"})," appears on the bottom of the screen as a tab. Multiple bottom panels share a tabbed interface where each panel gets its own tab with an icon and title. For Example :- ",(0,s.jsx)(n.em,{children:"Git"}),", ",(0,s.jsx)(n.em,{children:"Terminal"}),", ",(0,s.jsx)(n.em,{children:"Problems"})," panel and many more use the ",(0,s.jsx)(n.code,{children:"Bottom Panel"}),"."]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"Bottom Panel Example",src:a(12053).A+"",width:"1919",height:"1105"})}),"\n",(0,s.jsx)(n.p,{children:"This document outlines the basic features of working with Panels."}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"#creating-a-plugin-panel",children:"How to create a Plugin Panel"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"#managing-plugin-panel-state",children:"How to manage Plugin Panel state"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"#creating-a-bottom-panel",children:"How to create a Bottom Panel"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"#managing-bottom-panel-state",children:"How to manage Bottom Panel state"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"#best-practices",children:"Best Practices for Panels"})}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"creating-a-plugin-panel",children:"Creating a Plugin Panel"}),"\n",(0,s.jsx)(n.p,{children:"To create a plugin panel, follow these steps:"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:(0,s.jsxs)(n.strong,{children:["Import the ",(0,s.jsx)(n.code,{children:"WorkSpaceManager"})," modules"]})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-jsx",children:'const WorkspaceManager = brackets.getModule("view/WorkspaceManager");\n'})}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Create panel content"}),"\nCreate a jQuery object containing your panel's HTML content:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-jsx",children:'const $panel = $("
")\n .attr("id", "my-extension-panel")\n .html("

My Plugin Panel

Hello from the panel!

");\n'})}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Create toolbar icon"}),"\nCreate a toolbar icon to toggle the panel."]}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsx)(n.p,{children:"Creating a toolbar icon is mandatory, else the panel won't show up."}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Create the plugin panel"}),"\nUse ",(0,s.jsx)(n.code,{children:"WorkspaceManager.createPluginPanel()"})," to create your panel:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-jsx",children:'const pluginPanel = WorkspaceManager.createPluginPanel(\n "myextension.panel", // Unique ID using package-style naming\n $panel, // jQuery object for panel content\n 200, // minSize in pixels\n $toolbarIcon, // toolbar icon\n 400 // initialSize in pixels (optional)\n);\n'})}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsxs)(n.p,{children:["For a detailed description, refer to ",(0,s.jsx)(n.a,{href:"https://docs.phcode.dev/api/API-Reference/view/WorkspaceManager#createPluginPanel",children:"this link"}),"."]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"Full Code Example:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-jsx",children:'define(function (require, exports, module) {\n "use strict";\n \n // Brackets modules\n const AppInit = brackets.getModule("utils/AppInit"),\n CommandManager = brackets.getModule("command/CommandManager"),\n Menus = brackets.getModule("command/Menus"),\n WorkspaceManager = brackets.getModule("view/WorkspaceManager");\n \n let pluginPanel; // Store panel reference\n \n // Function to run when the menu item is clicked\n function handleTestExtension() {\n if (!pluginPanel) {\n // Create panel content\n const $panel = $("
")\n .attr("id", "my-extension-panel")\n .html("

My Plugin Panel

Hello from the panel!

");\n \n // Create toolbar icon\n const $toolbarIcon = $("#panel");\n \n // Create the plugin panel\n pluginPanel = WorkspaceManager.createPluginPanel(\n "myextension.panel",\n $panel,\n 200,\n $toolbarIcon,\n 400\n );\n pluginPanel.show();\n }\n }\n \n // Register command\n const MY_COMMAND_ID = "test_menuitem";\n CommandManager.register("Toggle Panel", MY_COMMAND_ID, handleTestExtension);\n \n // Add Menu item\n const menu = Menus.getMenu(Menus.AppMenuBar.FILE_MENU);\n menu.addMenuItem(MY_COMMAND_ID);\n \n // Initialize extension\n AppInit.appReady(function () {\n console.log("Panel extension initialized");\n });\n});\n'})}),"\n",(0,s.jsxs)(n.p,{children:["Visual Reference\n",(0,s.jsx)(n.img,{alt:"Plugin Panel",src:a(16968).A+"",width:"1919",height:"1098"})]}),"\n",(0,s.jsx)(n.h2,{id:"managing-plugin-panel-state",children:"Managing Plugin Panel State"}),"\n",(0,s.jsx)(n.p,{children:"You can control the visibility and state of your plugin panel:"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Show/Hide Panel"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-jsx",children:"// Show panel\npluginPanel.show();\n\n// Hide panel\npluginPanel.hide();\n"})}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Check Panel Visibility"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-jsx",children:"const isVisible = pluginPanel.isVisible();\n"})}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Toggle Panel Visibility"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-jsx",children:"function togglePanel() {\n if (pluginPanel.isVisible()) {\n pluginPanel.hide();\n } else {\n pluginPanel.show();\n }\n}\n"})}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"creating-a-bottom-panel",children:"Creating a Bottom Panel"}),"\n",(0,s.jsx)(n.p,{children:"Bottom panels are created similarly to plugin panels but use different methods:"}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsxs)(n.p,{children:["For ",(0,s.jsx)(n.code,{children:"Bottom Panels"})," creating a toolbar icon is not required. Each bottom panel appears as a tab in the shared tab bar."]}),"\n"]}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Import required modules"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-jsx",children:'const WorkspaceManager = brackets.getModule("view/WorkspaceManager");\n'})}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Create the bottom panel"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-jsx",children:'const bottomPanel = WorkspaceManager.createBottomPanel(\n "myextension.panel", // Unique ID using package-style naming\n $panel, // jQuery object for panel content\n undefined, // minSize (deprecated, pass undefined)\n "My Panel", // Title shown on the tab\n {\n iconSvg: "path/to/icon.svg" // SVG icon for the tab\n }\n);\n'})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.code,{children:"title"})}),": The text shown on the panel's tab. If not provided, Phoenix Code uses the text from a ",(0,s.jsx)(n.code,{children:".toolbar .title"})," element inside your panel, or derives it from the panel ID."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.code,{children:"iconSvg"})}),": Path to an SVG file used as the tab icon. The icon automatically adapts to light and dark themes. If not provided, a default icon is used."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsxs)(n.p,{children:["The ",(0,s.jsx)(n.code,{children:"minSize"})," parameter (third argument) is deprecated and no longer used. Pass ",(0,s.jsx)(n.code,{children:"undefined"})," for this parameter."]}),"\n"]}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsxs)(n.p,{children:["For a detailed description, refer to ",(0,s.jsx)(n.a,{href:"https://docs.phcode.dev/api/API-Reference/view/WorkspaceManager#createBottomPanel",children:"this link"}),"."]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"Full Code Example for Bottom Panel:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-jsx",children:' define(function (require, exports, module) {\n "use strict";\n \n // Brackets modules\n const AppInit = brackets.getModule("utils/AppInit"),\n CommandManager = brackets.getModule("command/CommandManager"),\n Menus = brackets.getModule("command/Menus"),\n WorkspaceManager = brackets.getModule("view/WorkspaceManager");\n \n let bottomPanel; // Store panel reference\n \n // Function to run when the menu item is clicked\n function handleTestExtension() {\n if (!bottomPanel) {\n // Create panel content\n const $panel = $("
")\n .attr("id", "my-extension-panel")\n .html("

My Bottom Panel

Hello from the panel!

");\n \n // Create the bottom panel\n bottomPanel = WorkspaceManager.createBottomPanel(\n "myextension.panel",\n $panel,\n undefined,\n "My Panel",\n { iconSvg: "styles/images/panel-icon-default.svg" }\n );\n bottomPanel.show();\n }\n }\n \n // Register command\n const MY_COMMAND_ID = "test_menuitem";\n CommandManager.register("Toggle Panel", MY_COMMAND_ID, handleTestExtension);\n \n // Add Menu item\n const menu = Menus.getMenu(Menus.AppMenuBar.FILE_MENU);\n menu.addMenuItem(MY_COMMAND_ID);\n \n // Initialize extension\n AppInit.appReady(function () {\n console.log("Panel extension initialized");\n });\n });\n'})}),"\n",(0,s.jsxs)(n.p,{children:["Visual Reference\n",(0,s.jsx)(n.img,{alt:"Bottom Panel",src:a(89880).A+"",width:"1919",height:"1125"})]}),"\n",(0,s.jsx)(n.h2,{id:"managing-bottom-panel-state",children:"Managing Bottom Panel State"}),"\n",(0,s.jsx)(n.p,{children:"Bottom panels support similar state management to plugin panels:"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Show/Hide Panel"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-jsx",children:"// Show panel\nbottomPanel.show();\n\n// Hide panel\nbottomPanel.hide();\n"})}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Check Panel Visibility"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-jsx",children:"const isVisible = bottomPanel.isVisible();\n"})}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Toggle Panel Visibility"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-jsx",children:"function togglePanel() {\n if (bottomPanel.isVisible()) {\n bottomPanel.hide();\n } else {\n bottomPanel.show();\n }\n}\n"})}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Update Tab Title"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-jsx",children:'bottomPanel.setTitle("New Title");\n'})}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Handle Close Confirmation"})}),"\n",(0,s.jsxs)(n.p,{children:["If your panel has unsaved state or running processes, you can register a handler that runs before the panel closes. Return ",(0,s.jsx)(n.code,{children:"false"})," to prevent closing."]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-jsx",children:'bottomPanel.registerOnCloseRequestedHandler(async function () {\n if (hasUnsavedChanges) {\n const confirmed = await showConfirmDialog("Discard changes?");\n return confirmed; // true to close, false to cancel\n }\n return true;\n});\n'})}),"\n",(0,s.jsxs)(n.p,{children:["To programmatically close a panel while respecting its close handler, use ",(0,s.jsx)(n.code,{children:"requestClose()"}),":"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-jsx",children:"const wasClosed = await bottomPanel.requestClose();\n"})}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"best-practices",children:"Best Practices"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:'Always use unique, package-style IDs (e.g., "yourextension.panel-name") to avoid conflicts with other extensions.'}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"Save panel state (e.g., visibility, size) in preferences if needed, to restore state when the extension is reloaded."}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsxs)(n.p,{children:["For more information about the WorkSpace Manager API, refer to the ",(0,s.jsx)(n.a,{href:"https://docs.phcode.dev/api/API-Reference/view/WorkspaceManager",children:"Phoenix Code API documentation"}),"."]}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,l.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},12053:(e,n,a)=>{a.d(n,{A:()=>t});const t=a.p+"assets/images/bottom-panel-example-d7b102fe2a72cdf87672dde01cf97705.png"},89880:(e,n,a)=>{a.d(n,{A:()=>t});const t=a.p+"assets/images/bottom-panel-84e2d0bb50feeac59a7f228347e97015.png"},97925:(e,n,a)=>{a.d(n,{A:()=>t});const t=a.p+"assets/images/plugin-panel-example-cdf9fbb9ccd3db750380862996b1d82c.png"},16968:(e,n,a)=>{a.d(n,{A:()=>t});const t=a.p+"assets/images/plugin-panel-ffdc0e6edeff5e1b9c10db5957ee911b.png"},28453:(e,n,a)=>{a.d(n,{R:()=>i,x:()=>o});var t=a(96540);const s={},l=t.createContext(s);function i(e){const n=t.useContext(l);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),t.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/0dbd8ed0.3fc59dd5.js b/assets/js/0dbd8ed0.3fc59dd5.js new file mode 100644 index 00000000..2ce09c9b --- /dev/null +++ b/assets/js/0dbd8ed0.3fc59dd5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3316],{87237:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>a,contentTitle:()=>l,default:()=>o,frontMatter:()=>t,metadata:()=>r,toc:()=>h});const r=JSON.parse('{"id":"API-Reference/view/Pane","title":"Pane","description":"Import :","source":"@site/api/API-Reference/view/Pane.md","sourceDirName":"API-Reference/view","slug":"/API-Reference/view/Pane","permalink":"/api/API-Reference/view/Pane","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"MainViewManager","permalink":"/api/API-Reference/view/MainViewManager"},"next":{"title":"PanelView","permalink":"/api/API-Reference/view/PanelView"}}');var d=i(74848),s=i(28453);const t={},l=void 0,a={},h=[{value:"Import :",id:"import-",level:3},{value:"view/Pane",id:"viewpane",level:2},{value:"view/Pane.Pane",id:"viewpanepane",level:3},{value:"new Pane(id, $container)",id:"new-paneid-container",level:4},{value:"pane.id : string",id:"paneid--string",level:4},{value:"pane.$container : JQuery",id:"panecontainer--jquery",level:4},{value:"pane.$el : JQuery",id:"paneel--jquery",level:4},{value:"pane.$header : JQuery",id:"paneheader--jquery",level:4},{value:"pane.$headerText : JQuery",id:"paneheadertext--jquery",level:4},{value:"pane.$headerFlipViewBtn : JQuery",id:"paneheaderflipviewbtn--jquery",level:4},{value:"pane.$headerCloseBtn : JQuery",id:"paneheaderclosebtn--jquery",level:4},{value:"pane.$content : JQuery",id:"panecontent--jquery",level:4},{value:"pane.ITEM_NOT_FOUND",id:"paneitem_not_found",level:4},{value:"pane.ITEM_FOUND_NO_SORT",id:"paneitem_found_no_sort",level:4},{value:"pane.ITEM_FOUND_NEEDS_SORT",id:"paneitem_found_needs_sort",level:4},{value:"pane.mergeFrom(other)",id:"panemergefromother",level:4},{value:"pane.destroy()",id:"panedestroy",level:4},{value:"pane.getViewList() \u21d2 Array.<File>",id:"panegetviewlist--arrayfile",level:4},{value:"pane.getViewListSize() \u21d2 number",id:"panegetviewlistsize--number",level:4},{value:"pane.findInViewList(fullPath) \u21d2 number",id:"panefindinviewlistfullpath--number",level:4},{value:"pane.findInViewListAddedOrder(fullPath) \u21d2 number",id:"panefindinviewlistaddedorderfullpath--number",level:4},{value:"pane.findInViewListMRUOrder(fullPath) \u21d2 number",id:"panefindinviewlistmruorderfullpath--number",level:4},{value:"pane.reorderItem(file, [index], [force]) \u21d2 number",id:"panereorderitemfile-index-force--number",level:4},{value:"pane.addToViewList(file, [index]) \u21d2 number",id:"paneaddtoviewlistfile-index--number",level:4},{value:"pane.addListToViewList(fileList) \u21d2 Array.<File>",id:"paneaddlisttoviewlistfilelist--arrayfile",level:4},{value:"pane.makeViewMostRecent(file)",id:"panemakeviewmostrecentfile",level:4},{value:"pane.sortViewList(compareFn)",id:"panesortviewlistcomparefn",level:4},{value:"pane.swapViewListIndexes(index1, index2) \u21d2 boolean",id:"paneswapviewlistindexesindex1-index2--boolean",level:4},{value:"pane.traverseViewListByMRU(direction, [current]) \u21d2 File",id:"panetraverseviewlistbymrudirection-current--file",level:4},{value:"pane.showInterstitial(show)",id:"paneshowinterstitialshow",level:4},{value:"pane.getViewForPath(path) \u21d2 boolean",id:"panegetviewforpathpath--boolean",level:4},{value:"pane.addView(view, show)",id:"paneaddviewview-show",level:4},{value:"pane.showView(view)",id:"paneshowviewview",level:4},{value:"pane.updateLayout(forceRefresh)",id:"paneupdatelayoutforcerefresh",level:4},{value:"pane.getCurrentlyViewedFile() \u21d2 File",id:"panegetcurrentlyviewedfile--file",level:4},{value:"pane.getCurrentlyViewedEditor() \u21d2 File",id:"panegetcurrentlyviewededitor--file",level:4},{value:"pane.getCurrentlyViewedPath() \u21d2 string",id:"panegetcurrentlyviewedpath--string",level:4},{value:"pane.destroyViewIfNotNeeded(view)",id:"panedestroyviewifnotneededview",level:4},{value:"pane.removeView(file, suppressOpenNextFile, preventViewChange) \u21d2 boolean",id:"paneremoveviewfile-suppressopennextfile-preventviewchange--boolean",level:4},{value:"pane.removeViews(list) \u21d2 Array.<File>",id:"paneremoveviewslist--arrayfile",level:4},{value:"pane.focus()",id:"panefocus",level:4},{value:"pane.loadState(state) \u21d2 jQuery.Promise",id:"paneloadstatestate--jquerypromise",level:4},{value:"pane.saveState() \u21d2 Object",id:"panesavestate--object",level:4},{value:"pane.getScrollState() \u21d2 Object",id:"panegetscrollstate--object",level:4},{value:"pane.restoreAndAdjustScrollState([state], [heightDelta])",id:"panerestoreandadjustscrollstatestate-heightdelta",level:4}];function c(e){const n={a:"a",br:"br",code:"code",h2:"h2",h3:"h3",h4:"h4",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(n.h3,{id:"import-",children:"Import :"}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-js",children:'const Pane = brackets.getModule("view/Pane")\n'})}),"\n",(0,d.jsx)("a",{name:"module_view/Pane"}),"\n",(0,d.jsx)(n.h2,{id:"viewpane",children:"view/Pane"}),"\n",(0,d.jsx)(n.p,{children:"Pane objects host views of files, editors, etc... Clients cannot access\nPane objects directly. Instead the implementation is protected by the\nMainViewManager -- however View Factories are given a Pane object which\nthey can use to add views. References to Pane objects should not be kept\nas they may be destroyed and removed from the DOM."}),"\n",(0,d.jsx)(n.p,{children:"To get a custom view, there are two components:"}),"\n",(0,d.jsxs)(n.ol,{children:["\n",(0,d.jsx)(n.li,{children:"A View Factory"}),"\n",(0,d.jsx)(n.li,{children:"A View Object"}),"\n"]}),"\n",(0,d.jsx)(n.p,{children:"View objects are anonymous object that have a particular interface."}),"\n",(0,d.jsx)(n.p,{children:'Views can be added to a pane but do not have to exist in the Pane object\'s view list.\nSuch views are "temporary views". Temporary views are not serialized with the Pane state\nor reconstituted when the pane is serialized from disk. They are destroyed at the earliest\nopportunity.'}),"\n",(0,d.jsxs)(n.p,{children:["Temporary views are added by calling ",(0,d.jsx)(n.code,{children:"Pane.showView()"}),' and passing it the view object. The view\nwill be destroyed when the next view is shown, the pane is mereged with another pane or the "Close All"\ncommand is exectuted on the Pane. Temporary Editor Views do not contain any modifications and are\nadded to the workingset (and are no longer tempoary views) once the document has been modified. They\nwill remain in the working set until closed from that point on.']}),"\n",(0,d.jsx)(n.p,{children:"Views that have a longer life span are added by calling addView to associate the view with a\nfilename in the _views object. These views are not destroyed until they are removed from the pane\nby calling one of the following: removeView, removeViews, or _reset"}),"\n",(0,d.jsx)(n.p,{children:"Pane Object Events:"}),"\n",(0,d.jsxs)(n.ul,{children:["\n",(0,d.jsxs)(n.li,{children:["\n",(0,d.jsxs)(n.p,{children:["viewListChange - Whenever there is a file change to a file in the working set. These 2 events: ",(0,d.jsx)(n.code,{children:"DocumentManager.pathRemove"}),"\nand ",(0,d.jsx)(n.code,{children:"DocumentManager.fileNameChange"})," will cause a ",(0,d.jsx)(n.code,{children:"viewListChange"})," event so the WorkingSetView can update."]}),"\n"]}),"\n",(0,d.jsxs)(n.li,{children:["\n",(0,d.jsxs)(n.p,{children:["currentViewChange - Whenever the current view changes.\n(e, newView",":View",", oldView",":View",")"]}),"\n"]}),"\n",(0,d.jsxs)(n.li,{children:["\n",(0,d.jsxs)(n.p,{children:["viewDestroy - Whenever a view has been destroyed\n(e, view",":View",")"]}),"\n"]}),"\n"]}),"\n",(0,d.jsx)(n.p,{children:"View Interface:"}),"\n",(0,d.jsxs)(n.p,{children:["The view is an anonymous object which has the following method signatures. see ImageViewer for an example or the sample\nprovided with Brackets ",(0,d.jsx)(n.code,{children:"src/extensions/samples/BracketsConfigCentral"})]}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-js",children:" {\n $el:jQuery\n getFile: function ():!File\n updateLayout: function(forceRefresh:boolean)\n destroy: function()\n getScrollPos: function():*=\n adjustScrollPos: function(state:Object=, heightDelta:number)=\n notifyContainerChange: function()=\n notifyVisibilityChange: function(boolean)=\n focus:function()=\n }\n"})}),"\n",(0,d.jsxs)(n.p,{children:["When views are created they can be added to the pane by calling ",(0,d.jsx)(n.code,{children:"pane.addView()"}),".\nViews can be created and parented by attaching directly to ",(0,d.jsx)(n.code,{children:"pane.$el"})]}),"\n",(0,d.jsx)(n.p,{children:"this._codeMirror = new CodeMirror(pane.$el, ...)"}),"\n",(0,d.jsxs)(n.p,{children:["Factories can create a view that's initially hidden by calling ",(0,d.jsx)(n.code,{children:"pane.addView(view)"})," and passing ",(0,d.jsx)(n.code,{children:"false"})," for the show parameter.\nHidden views can be later shown by calling ",(0,d.jsx)(n.code,{children:"pane.showView(view)"})]}),"\n",(0,d.jsx)(n.p,{children:(0,d.jsx)(n.code,{children:"$el:jQuery!"})}),"\n",(0,d.jsxs)(n.p,{children:["property that stores the jQuery wrapped DOM element of the view. All views must have one so pane objects can manipulate the DOM\nelement when necessary (e.g. ",(0,d.jsx)(n.code,{children:"showView"}),", ",(0,d.jsx)(n.code,{children:"_reparent"}),", etc...)"]}),"\n",(0,d.jsx)(n.p,{children:(0,d.jsx)(n.code,{children:"getFile():File!"})}),"\n",(0,d.jsx)(n.p,{children:"Called throughout the life of a View when the current file is queried by the system."}),"\n",(0,d.jsx)(n.p,{children:(0,d.jsx)(n.code,{children:"updateLayout(forceRefresh:boolean)"})}),"\n",(0,d.jsxs)(n.p,{children:["Called to notify the view that it should be resized to fit its parent container. This may be called several times\nor only once. Views can ignore the ",(0,d.jsx)(n.code,{children:"forceRefresh"})," flag. It is used for editor views to force a relayout of the editor\nwhich probably isn't necessary for most views. Views should implement their html to be dynamic and not rely on this\nfunction to be called whenever possible."]}),"\n",(0,d.jsx)(n.p,{children:(0,d.jsx)(n.code,{children:"destroy()"})}),"\n",(0,d.jsx)(n.p,{children:"Views must implement a destroy method to remove their DOM element at the very least. There is no default\nimplementation and views are hidden before this method is called. The Pane object doesn't make assumptions\nabout when it is safe to remove a node. In some instances other cleanup must take place before a the DOM\nnode is destroyed so the implementation details are left to the view."}),"\n",(0,d.jsx)(n.p,{children:"Views can implement a simple destroy by calling"}),"\n",(0,d.jsx)(n.p,{children:"this.$el.remove()"}),"\n",(0,d.jsx)(n.p,{children:"These members are optional and need not be implemented by Views"}),"\n",(0,d.jsx)(n.p,{children:"getScrollPos()\nadjustScrollPos()"}),"\n",(0,d.jsxs)(n.p,{children:["The system at various times will want to save and restore a view's scroll position. The data returned by ",(0,d.jsx)(n.code,{children:"getScrollPos()"}),"\nis specific to the view and will be passed back to ",(0,d.jsx)(n.code,{children:"adjustScrollPos()"})," when the scroll position needs to be restored."]}),"\n",(0,d.jsxs)(n.p,{children:["When Modal Bars are invoked, the system calls ",(0,d.jsx)(n.code,{children:"getScrollPos()"})," so that the current scroll psotion of all visible Views can be cached.\nThat cached scroll position is later passed to ",(0,d.jsx)(n.code,{children:"adjustScrollPos()"}),' along with a height delta. The height delta is used to\nscroll the view so that it doesn\'t appear to have "jumped" when invoking the Modal Bar.']}),"\n",(0,d.jsx)(n.p,{children:"Height delta will be a positive when the Modal Bar is being shown and negative number when the Modal Bar is being hidden."}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.code,{children:"getViewState()"})," is another optional member that is used to cache a view's state when hiding or destroying a view or closing the project.\nThe data returned by this member is stored in ",(0,d.jsx)(n.code,{children:"ViewStateManager"})," and is saved with the project."]}),"\n",(0,d.jsx)(n.p,{children:"Views or View Factories are responsible for restoring the view state when the view of that file is created by recalling the cached state"}),"\n",(0,d.jsx)(n.p,{children:"var view = createIconView(file, pane);\nview.restoreViewState(ViewStateManager.getViewState(file.fullPath));"}),"\n",(0,d.jsx)(n.p,{children:"Notifications\nThe following optional methods receive notifications from the Pane object when certain events take place which affect the view:"}),"\n",(0,d.jsx)(n.p,{children:(0,d.jsx)(n.code,{children:"notifyContainerChange()"})}),"\n",(0,d.jsx)(n.p,{children:"Optional Notification callback called when the container changes. The view can perform any synchronization or state update\nit needs to do when its parent container changes."}),"\n",(0,d.jsx)(n.p,{children:(0,d.jsx)(n.code,{children:"notifyVisiblityChange()"})}),"\n",(0,d.jsx)(n.p,{children:"Optional Notification callback called when the view's vsibility changes. The view can perform any synchronization or\nstate update it needs to do when its visiblity state changes."}),"\n",(0,d.jsxs)(n.ul,{children:["\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#module_view/Pane",children:"view/Pane"}),"\n",(0,d.jsxs)(n.ul,{children:["\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane",children:".Pane"}),"\n",(0,d.jsxs)(n.ul,{children:["\n",(0,d.jsx)(n.li,{children:(0,d.jsx)(n.a,{href:"#new_module_view/Pane..Pane_new",children:"new Pane(id, $container)"})}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+id",children:".id"})," : ",(0,d.jsx)("code",{children:"string"})]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+$container",children:".$container"})," : ",(0,d.jsx)("code",{children:"JQuery"})]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+$el",children:".$el"})," : ",(0,d.jsx)("code",{children:"JQuery"})]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+$header",children:".$header"})," : ",(0,d.jsx)("code",{children:"JQuery"})]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+$headerText",children:".$headerText"})," : ",(0,d.jsx)("code",{children:"JQuery"})]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+$headerFlipViewBtn",children:".$headerFlipViewBtn"})," : ",(0,d.jsx)("code",{children:"JQuery"})]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+$headerCloseBtn",children:".$headerCloseBtn"})," : ",(0,d.jsx)("code",{children:"JQuery"})]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+$content",children:".$content"})," : ",(0,d.jsx)("code",{children:"JQuery"})]}),"\n",(0,d.jsx)(n.li,{children:(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+ITEM_NOT_FOUND",children:".ITEM_NOT_FOUND"})}),"\n",(0,d.jsx)(n.li,{children:(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+ITEM_FOUND_NO_SORT",children:".ITEM_FOUND_NO_SORT"})}),"\n",(0,d.jsx)(n.li,{children:(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+ITEM_FOUND_NEEDS_SORT",children:".ITEM_FOUND_NEEDS_SORT"})}),"\n",(0,d.jsx)(n.li,{children:(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+mergeFrom",children:".mergeFrom(other)"})}),"\n",(0,d.jsx)(n.li,{children:(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+destroy",children:".destroy()"})}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+getViewList",children:".getViewList()"})," \u21d2 ",(0,d.jsx)("code",{children:"Array."})]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+getViewListSize",children:".getViewListSize()"})," \u21d2 ",(0,d.jsx)("code",{children:"number"})]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+findInViewList",children:".findInViewList(fullPath)"})," \u21d2 ",(0,d.jsx)("code",{children:"number"})]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+findInViewListAddedOrder",children:".findInViewListAddedOrder(fullPath)"})," \u21d2 ",(0,d.jsx)("code",{children:"number"})]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+findInViewListMRUOrder",children:".findInViewListMRUOrder(fullPath)"})," \u21d2 ",(0,d.jsx)("code",{children:"number"})]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+reorderItem",children:".reorderItem(file, [index], [force])"})," \u21d2 ",(0,d.jsx)("code",{children:"number"})]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+addToViewList",children:".addToViewList(file, [index])"})," \u21d2 ",(0,d.jsx)("code",{children:"number"})]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+addListToViewList",children:".addListToViewList(fileList)"})," \u21d2 ",(0,d.jsx)("code",{children:"Array."})]}),"\n",(0,d.jsx)(n.li,{children:(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+makeViewMostRecent",children:".makeViewMostRecent(file)"})}),"\n",(0,d.jsx)(n.li,{children:(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+sortViewList",children:".sortViewList(compareFn)"})}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+swapViewListIndexes",children:".swapViewListIndexes(index1, index2)"})," \u21d2 ",(0,d.jsx)("code",{children:"boolean"})]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+traverseViewListByMRU",children:".traverseViewListByMRU(direction, [current])"})," \u21d2 ",(0,d.jsx)("code",{children:"File"})]}),"\n",(0,d.jsx)(n.li,{children:(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+showInterstitial",children:".showInterstitial(show)"})}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+getViewForPath",children:".getViewForPath(path)"})," \u21d2 ",(0,d.jsx)("code",{children:"boolean"})]}),"\n",(0,d.jsx)(n.li,{children:(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+addView",children:".addView(view, show)"})}),"\n",(0,d.jsx)(n.li,{children:(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+showView",children:".showView(view)"})}),"\n",(0,d.jsx)(n.li,{children:(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+updateLayout",children:".updateLayout(forceRefresh)"})}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+getCurrentlyViewedFile",children:".getCurrentlyViewedFile()"})," \u21d2 ",(0,d.jsx)("code",{children:"File"})]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+getCurrentlyViewedEditor",children:".getCurrentlyViewedEditor()"})," \u21d2 ",(0,d.jsx)("code",{children:"File"})]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+getCurrentlyViewedPath",children:".getCurrentlyViewedPath()"})," \u21d2 ",(0,d.jsx)("code",{children:"string"})]}),"\n",(0,d.jsx)(n.li,{children:(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+destroyViewIfNotNeeded",children:".destroyViewIfNotNeeded(view)"})}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+removeView",children:".removeView(file, suppressOpenNextFile, preventViewChange)"})," \u21d2 ",(0,d.jsx)("code",{children:"boolean"})]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+removeViews",children:".removeViews(list)"})," \u21d2 ",(0,d.jsx)("code",{children:"Array."})]}),"\n",(0,d.jsx)(n.li,{children:(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+focus",children:".focus()"})}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+loadState",children:".loadState(state)"})," \u21d2 ",(0,d.jsx)("code",{children:"jQuery.Promise"})]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+saveState",children:".saveState()"})," \u21d2 ",(0,d.jsx)("code",{children:"Object"})]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+getScrollState",children:".getScrollState()"})," \u21d2 ",(0,d.jsx)("code",{children:"Object"})]}),"\n",(0,d.jsx)(n.li,{children:(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+restoreAndAdjustScrollState",children:".restoreAndAdjustScrollState([state], [heightDelta])"})}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,d.jsx)("a",{name:"module_view/Pane..Pane"}),"\n",(0,d.jsx)(n.h3,{id:"viewpanepane",children:"view/Pane.Pane"}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Kind"}),": inner class of ",(0,d.jsx)(n.a,{href:"#module_view/Pane",children:(0,d.jsx)("code",{children:"view/Pane"})}),(0,d.jsx)(n.br,{}),"\n",(0,d.jsx)(n.strong,{children:"See"}),": ",(0,d.jsx)(n.a,{href:"MainViewManager",children:"MainViewManager"})," for more information"]}),"\n",(0,d.jsxs)(n.ul,{children:["\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane",children:".Pane"}),"\n",(0,d.jsxs)(n.ul,{children:["\n",(0,d.jsx)(n.li,{children:(0,d.jsx)(n.a,{href:"#new_module_view/Pane..Pane_new",children:"new Pane(id, $container)"})}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+id",children:".id"})," : ",(0,d.jsx)("code",{children:"string"})]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+$container",children:".$container"})," : ",(0,d.jsx)("code",{children:"JQuery"})]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+$el",children:".$el"})," : ",(0,d.jsx)("code",{children:"JQuery"})]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+$header",children:".$header"})," : ",(0,d.jsx)("code",{children:"JQuery"})]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+$headerText",children:".$headerText"})," : ",(0,d.jsx)("code",{children:"JQuery"})]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+$headerFlipViewBtn",children:".$headerFlipViewBtn"})," : ",(0,d.jsx)("code",{children:"JQuery"})]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+$headerCloseBtn",children:".$headerCloseBtn"})," : ",(0,d.jsx)("code",{children:"JQuery"})]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+$content",children:".$content"})," : ",(0,d.jsx)("code",{children:"JQuery"})]}),"\n",(0,d.jsx)(n.li,{children:(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+ITEM_NOT_FOUND",children:".ITEM_NOT_FOUND"})}),"\n",(0,d.jsx)(n.li,{children:(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+ITEM_FOUND_NO_SORT",children:".ITEM_FOUND_NO_SORT"})}),"\n",(0,d.jsx)(n.li,{children:(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+ITEM_FOUND_NEEDS_SORT",children:".ITEM_FOUND_NEEDS_SORT"})}),"\n",(0,d.jsx)(n.li,{children:(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+mergeFrom",children:".mergeFrom(other)"})}),"\n",(0,d.jsx)(n.li,{children:(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+destroy",children:".destroy()"})}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+getViewList",children:".getViewList()"})," \u21d2 ",(0,d.jsx)("code",{children:"Array."})]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+getViewListSize",children:".getViewListSize()"})," \u21d2 ",(0,d.jsx)("code",{children:"number"})]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+findInViewList",children:".findInViewList(fullPath)"})," \u21d2 ",(0,d.jsx)("code",{children:"number"})]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+findInViewListAddedOrder",children:".findInViewListAddedOrder(fullPath)"})," \u21d2 ",(0,d.jsx)("code",{children:"number"})]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+findInViewListMRUOrder",children:".findInViewListMRUOrder(fullPath)"})," \u21d2 ",(0,d.jsx)("code",{children:"number"})]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+reorderItem",children:".reorderItem(file, [index], [force])"})," \u21d2 ",(0,d.jsx)("code",{children:"number"})]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+addToViewList",children:".addToViewList(file, [index])"})," \u21d2 ",(0,d.jsx)("code",{children:"number"})]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+addListToViewList",children:".addListToViewList(fileList)"})," \u21d2 ",(0,d.jsx)("code",{children:"Array."})]}),"\n",(0,d.jsx)(n.li,{children:(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+makeViewMostRecent",children:".makeViewMostRecent(file)"})}),"\n",(0,d.jsx)(n.li,{children:(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+sortViewList",children:".sortViewList(compareFn)"})}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+swapViewListIndexes",children:".swapViewListIndexes(index1, index2)"})," \u21d2 ",(0,d.jsx)("code",{children:"boolean"})]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+traverseViewListByMRU",children:".traverseViewListByMRU(direction, [current])"})," \u21d2 ",(0,d.jsx)("code",{children:"File"})]}),"\n",(0,d.jsx)(n.li,{children:(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+showInterstitial",children:".showInterstitial(show)"})}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+getViewForPath",children:".getViewForPath(path)"})," \u21d2 ",(0,d.jsx)("code",{children:"boolean"})]}),"\n",(0,d.jsx)(n.li,{children:(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+addView",children:".addView(view, show)"})}),"\n",(0,d.jsx)(n.li,{children:(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+showView",children:".showView(view)"})}),"\n",(0,d.jsx)(n.li,{children:(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+updateLayout",children:".updateLayout(forceRefresh)"})}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+getCurrentlyViewedFile",children:".getCurrentlyViewedFile()"})," \u21d2 ",(0,d.jsx)("code",{children:"File"})]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+getCurrentlyViewedEditor",children:".getCurrentlyViewedEditor()"})," \u21d2 ",(0,d.jsx)("code",{children:"File"})]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+getCurrentlyViewedPath",children:".getCurrentlyViewedPath()"})," \u21d2 ",(0,d.jsx)("code",{children:"string"})]}),"\n",(0,d.jsx)(n.li,{children:(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+destroyViewIfNotNeeded",children:".destroyViewIfNotNeeded(view)"})}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+removeView",children:".removeView(file, suppressOpenNextFile, preventViewChange)"})," \u21d2 ",(0,d.jsx)("code",{children:"boolean"})]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+removeViews",children:".removeViews(list)"})," \u21d2 ",(0,d.jsx)("code",{children:"Array."})]}),"\n",(0,d.jsx)(n.li,{children:(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+focus",children:".focus()"})}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+loadState",children:".loadState(state)"})," \u21d2 ",(0,d.jsx)("code",{children:"jQuery.Promise"})]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+saveState",children:".saveState()"})," \u21d2 ",(0,d.jsx)("code",{children:"Object"})]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+getScrollState",children:".getScrollState()"})," \u21d2 ",(0,d.jsx)("code",{children:"Object"})]}),"\n",(0,d.jsx)(n.li,{children:(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane+restoreAndAdjustScrollState",children:".restoreAndAdjustScrollState([state], [heightDelta])"})}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,d.jsx)("a",{name:"new_module_view/Pane..Pane_new"}),"\n",(0,d.jsx)(n.h4,{id:"new-paneid-container",children:"new Pane(id, $container)"}),"\n",(0,d.jsx)(n.p,{children:"Pane Objects are constructed by the MainViewManager object when a Pane view is needed."}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Param"}),(0,d.jsx)(n.th,{children:"Type"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsxs)(n.tbody,{children:[(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:"id"}),(0,d.jsx)(n.td,{children:(0,d.jsx)("code",{children:"string"})}),(0,d.jsx)(n.td,{children:"The id to use to identify this pane."})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:"$container"}),(0,d.jsx)(n.td,{children:(0,d.jsx)("code",{children:"jQuery"})}),(0,d.jsx)(n.td,{children:"The parent jQuery container to place the pane view."})]})]})]}),"\n",(0,d.jsx)("a",{name:"module_view/Pane..Pane+id"}),"\n",(0,d.jsxs)(n.h4,{id:"paneid--string",children:["pane.id : ",(0,d.jsx)("code",{children:"string"})]}),"\n",(0,d.jsx)(n.p,{children:"id of the pane"}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Kind"}),": instance property of ",(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane",children:(0,d.jsx)("code",{children:"Pane"})}),(0,d.jsx)(n.br,{}),"\n",(0,d.jsx)(n.strong,{children:"Read only"}),": true"]}),"\n",(0,d.jsx)("a",{name:"module_view/Pane..Pane+$container"}),"\n",(0,d.jsxs)(n.h4,{id:"panecontainer--jquery",children:["pane.$container : ",(0,d.jsx)("code",{children:"JQuery"})]}),"\n",(0,d.jsx)(n.p,{children:"container where the pane lives"}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Kind"}),": instance property of ",(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane",children:(0,d.jsx)("code",{children:"Pane"})}),(0,d.jsx)(n.br,{}),"\n",(0,d.jsx)(n.strong,{children:"Read only"}),": true"]}),"\n",(0,d.jsx)("a",{name:"module_view/Pane..Pane+$el"}),"\n",(0,d.jsxs)(n.h4,{id:"paneel--jquery",children:["pane.$el : ",(0,d.jsx)("code",{children:"JQuery"})]}),"\n",(0,d.jsx)(n.p,{children:"the wrapped DOM node of this pane"}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Kind"}),": instance property of ",(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane",children:(0,d.jsx)("code",{children:"Pane"})}),(0,d.jsx)(n.br,{}),"\n",(0,d.jsx)(n.strong,{children:"Read only"}),": true"]}),"\n",(0,d.jsx)("a",{name:"module_view/Pane..Pane+$header"}),"\n",(0,d.jsxs)(n.h4,{id:"paneheader--jquery",children:["pane.$header : ",(0,d.jsx)("code",{children:"JQuery"})]}),"\n",(0,d.jsx)(n.p,{children:"the wrapped DOM node container that contains name of current view and the switch view button, or informational string if there is no view"}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Kind"}),": instance property of ",(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane",children:(0,d.jsx)("code",{children:"Pane"})}),(0,d.jsx)(n.br,{}),"\n",(0,d.jsx)(n.strong,{children:"Read only"}),": true"]}),"\n",(0,d.jsx)("a",{name:"module_view/Pane..Pane+$headerText"}),"\n",(0,d.jsxs)(n.h4,{id:"paneheadertext--jquery",children:["pane.$headerText : ",(0,d.jsx)("code",{children:"JQuery"})]}),"\n",(0,d.jsx)(n.p,{children:"the wrapped DOM node that contains name of current view, or informational string if there is no view"}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Kind"}),": instance property of ",(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane",children:(0,d.jsx)("code",{children:"Pane"})}),(0,d.jsx)(n.br,{}),"\n",(0,d.jsx)(n.strong,{children:"Read only"}),": true"]}),"\n",(0,d.jsx)("a",{name:"module_view/Pane..Pane+$headerFlipViewBtn"}),"\n",(0,d.jsxs)(n.h4,{id:"paneheaderflipviewbtn--jquery",children:["pane.$headerFlipViewBtn : ",(0,d.jsx)("code",{children:"JQuery"})]}),"\n",(0,d.jsx)(n.p,{children:"the wrapped DOM node that is used to flip the view to another pane"}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Kind"}),": instance property of ",(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane",children:(0,d.jsx)("code",{children:"Pane"})}),(0,d.jsx)(n.br,{}),"\n",(0,d.jsx)(n.strong,{children:"Read only"}),": true"]}),"\n",(0,d.jsx)("a",{name:"module_view/Pane..Pane+$headerCloseBtn"}),"\n",(0,d.jsxs)(n.h4,{id:"paneheaderclosebtn--jquery",children:["pane.$headerCloseBtn : ",(0,d.jsx)("code",{children:"JQuery"})]}),"\n",(0,d.jsx)(n.p,{children:"close button of the pane"}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Kind"}),": instance property of ",(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane",children:(0,d.jsx)("code",{children:"Pane"})}),(0,d.jsx)(n.br,{}),"\n",(0,d.jsx)(n.strong,{children:"Read only"}),": true"]}),"\n",(0,d.jsx)("a",{name:"module_view/Pane..Pane+$content"}),"\n",(0,d.jsxs)(n.h4,{id:"panecontent--jquery",children:["pane.$content : ",(0,d.jsx)("code",{children:"JQuery"})]}),"\n",(0,d.jsx)(n.p,{children:"the wrapped DOM node that contains views"}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Kind"}),": instance property of ",(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane",children:(0,d.jsx)("code",{children:"Pane"})}),(0,d.jsx)(n.br,{}),"\n",(0,d.jsx)(n.strong,{children:"Read only"}),": true"]}),"\n",(0,d.jsx)("a",{name:"module_view/Pane..Pane+ITEM_NOT_FOUND"}),"\n",(0,d.jsx)(n.h4,{id:"paneitem_not_found",children:"pane.ITEM_NOT_FOUND"}),"\n",(0,d.jsx)(n.p,{children:"Return value from reorderItem when the Item was not found"}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Kind"}),": instance constant of ",(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane",children:(0,d.jsx)("code",{children:"Pane"})}),(0,d.jsx)(n.br,{}),"\n",(0,d.jsx)(n.strong,{children:"See"}),": ",(0,d.jsx)(n.a,{href:"Pane#reorderItem",children:"Pane#reorderItem"})]}),"\n",(0,d.jsx)("a",{name:"module_view/Pane..Pane+ITEM_FOUND_NO_SORT"}),"\n",(0,d.jsx)(n.h4,{id:"paneitem_found_no_sort",children:"pane.ITEM_FOUND_NO_SORT"}),"\n",(0,d.jsx)(n.p,{children:"Return value from reorderItem when the Item was found at its natural index\nand the workingset does not need to be resorted"}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Kind"}),": instance constant of ",(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane",children:(0,d.jsx)("code",{children:"Pane"})}),(0,d.jsx)(n.br,{}),"\n",(0,d.jsx)(n.strong,{children:"See"}),": ",(0,d.jsx)(n.a,{href:"Pane#reorderItem",children:"Pane#reorderItem"})]}),"\n",(0,d.jsx)("a",{name:"module_view/Pane..Pane+ITEM_FOUND_NEEDS_SORT"}),"\n",(0,d.jsx)(n.h4,{id:"paneitem_found_needs_sort",children:"pane.ITEM_FOUND_NEEDS_SORT"}),"\n",(0,d.jsx)(n.p,{children:"Return value from reorderItem when the Item was found and reindexed\nand the workingset needs to be resorted"}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Kind"}),": instance constant of ",(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane",children:(0,d.jsx)("code",{children:"Pane"})}),(0,d.jsx)(n.br,{}),"\n",(0,d.jsx)(n.strong,{children:"See"}),": ",(0,d.jsx)(n.a,{href:"Pane#reorderItem",children:"Pane#reorderItem"})]}),"\n",(0,d.jsx)("a",{name:"module_view/Pane..Pane+mergeFrom"}),"\n",(0,d.jsx)(n.h4,{id:"panemergefromother",children:"pane.mergeFrom(other)"}),"\n",(0,d.jsx)(n.p,{children:"Merges the another Pane object's contents into this Pane"}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane",children:(0,d.jsx)("code",{children:"Pane"})})]}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Param"}),(0,d.jsx)(n.th,{children:"Type"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsx)(n.tbody,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:"other"}),(0,d.jsx)(n.td,{children:(0,d.jsx)("code",{children:"Pane"})}),(0,d.jsx)(n.td,{children:"Pane from which to copy"})]})})]}),"\n",(0,d.jsx)("a",{name:"module_view/Pane..Pane+destroy"}),"\n",(0,d.jsx)(n.h4,{id:"panedestroy",children:"pane.destroy()"}),"\n",(0,d.jsx)(n.p,{children:"Removes the DOM node for the Pane, removes all\nevent handlers and _resets all internal data structures"}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane",children:(0,d.jsx)("code",{children:"Pane"})})]}),"\n",(0,d.jsx)("a",{name:"module_view/Pane..Pane+getViewList"}),"\n",(0,d.jsxs)(n.h4,{id:"panegetviewlist--arrayfile",children:["pane.getViewList() \u21d2 ",(0,d.jsx)("code",{children:"Array."})]}),"\n",(0,d.jsx)(n.p,{children:"Returns a copy of the view file list"}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane",children:(0,d.jsx)("code",{children:"Pane"})})]}),"\n",(0,d.jsx)("a",{name:"module_view/Pane..Pane+getViewListSize"}),"\n",(0,d.jsxs)(n.h4,{id:"panegetviewlistsize--number",children:["pane.getViewListSize() \u21d2 ",(0,d.jsx)("code",{children:"number"})]}),"\n",(0,d.jsx)(n.p,{children:"Returns the number of entries in the view file list"}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane",children:(0,d.jsx)("code",{children:"Pane"})})]}),"\n",(0,d.jsx)("a",{name:"module_view/Pane..Pane+findInViewList"}),"\n",(0,d.jsxs)(n.h4,{id:"panefindinviewlistfullpath--number",children:["pane.findInViewList(fullPath) \u21d2 ",(0,d.jsx)("code",{children:"number"})]}),"\n",(0,d.jsx)(n.p,{children:"Returns the index of the item in the view file list"}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane",children:(0,d.jsx)("code",{children:"Pane"})}),(0,d.jsx)(n.br,{}),"\n",(0,d.jsx)(n.strong,{children:"Returns"}),": ",(0,d.jsx)("code",{children:"number"})," - index of the item or -1 if not found"]}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Param"}),(0,d.jsx)(n.th,{children:"Type"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsx)(n.tbody,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:"fullPath"}),(0,d.jsx)(n.td,{children:(0,d.jsx)("code",{children:"string"})}),(0,d.jsx)(n.td,{children:"the full path of the item to look for"})]})})]}),"\n",(0,d.jsx)("a",{name:"module_view/Pane..Pane+findInViewListAddedOrder"}),"\n",(0,d.jsxs)(n.h4,{id:"panefindinviewlistaddedorderfullpath--number",children:["pane.findInViewListAddedOrder(fullPath) \u21d2 ",(0,d.jsx)("code",{children:"number"})]}),"\n",(0,d.jsx)(n.p,{children:"Returns the order in which the item was added"}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane",children:(0,d.jsx)("code",{children:"Pane"})}),(0,d.jsx)(n.br,{}),"\n",(0,d.jsx)(n.strong,{children:"Returns"}),": ",(0,d.jsx)("code",{children:"number"})," - order of the item or -1 if not found"]}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Param"}),(0,d.jsx)(n.th,{children:"Type"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsx)(n.tbody,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:"fullPath"}),(0,d.jsx)(n.td,{children:(0,d.jsx)("code",{children:"string"})}),(0,d.jsx)(n.td,{children:"the full path of the item to look for"})]})})]}),"\n",(0,d.jsx)("a",{name:"module_view/Pane..Pane+findInViewListMRUOrder"}),"\n",(0,d.jsxs)(n.h4,{id:"panefindinviewlistmruorderfullpath--number",children:["pane.findInViewListMRUOrder(fullPath) \u21d2 ",(0,d.jsx)("code",{children:"number"})]}),"\n",(0,d.jsx)(n.p,{children:"Returns the order in which the item was last used"}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane",children:(0,d.jsx)("code",{children:"Pane"})}),(0,d.jsx)(n.br,{}),"\n",(0,d.jsx)(n.strong,{children:"Returns"}),": ",(0,d.jsx)("code",{children:"number"})," - order of the item or -1 if not found.\n0 indicates most recently used, followed by 1 and so on..."]}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Param"}),(0,d.jsx)(n.th,{children:"Type"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsx)(n.tbody,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:"fullPath"}),(0,d.jsx)(n.td,{children:(0,d.jsx)("code",{children:"string"})}),(0,d.jsx)(n.td,{children:"the full path of the item to look for"})]})})]}),"\n",(0,d.jsx)("a",{name:"module_view/Pane..Pane+reorderItem"}),"\n",(0,d.jsxs)(n.h4,{id:"panereorderitemfile-index-force--number",children:["pane.reorderItem(file, [index], [force]) \u21d2 ",(0,d.jsx)("code",{children:"number"})]}),"\n",(0,d.jsx)(n.p,{children:"reorders the specified file in the view list to the desired position"}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane",children:(0,d.jsx)("code",{children:"Pane"})}),(0,d.jsx)(n.br,{}),"\n",(0,d.jsx)(n.strong,{children:"Returns"}),": ",(0,d.jsx)("code",{children:"number"})," - this function returns one of the following manifest constants:\nITEM_NOT_FOUND : The request file object was not found\nITEM_FOUND_NO_SORT : The request file object was found but it was already at the requested index\nITEM_FOUND_NEEDS_SORT : The request file object was found and moved to a new index and the list should be resorted"]}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Param"}),(0,d.jsx)(n.th,{children:"Type"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsxs)(n.tbody,{children:[(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:"file"}),(0,d.jsx)(n.td,{children:(0,d.jsx)("code",{children:"File"})}),(0,d.jsx)(n.td,{children:"the file object of the item to reorder"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:"[index]"}),(0,d.jsx)(n.td,{children:(0,d.jsx)("code",{children:"number"})}),(0,d.jsx)(n.td,{children:"the new position of the item"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:"[force]"}),(0,d.jsx)(n.td,{children:(0,d.jsx)("code",{children:"boolean"})}),(0,d.jsx)(n.td,{children:"true to force the item into that position, false otherwise. (Requires an index be requested)"})]})]})]}),"\n",(0,d.jsx)("a",{name:"module_view/Pane..Pane+addToViewList"}),"\n",(0,d.jsxs)(n.h4,{id:"paneaddtoviewlistfile-index--number",children:["pane.addToViewList(file, [index]) \u21d2 ",(0,d.jsx)("code",{children:"number"})]}),"\n",(0,d.jsx)(n.p,{children:"Adds the given file to the end of the workingset, if it is not already in the list\nDoes not change which document is currently open in the editor. Completes synchronously."}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane",children:(0,d.jsx)("code",{children:"Pane"})}),(0,d.jsx)(n.br,{}),"\n",(0,d.jsx)(n.strong,{children:"Returns"}),": ",(0,d.jsx)("code",{children:"number"})," - index of where the item was added"]}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Param"}),(0,d.jsx)(n.th,{children:"Type"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsxs)(n.tbody,{children:[(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:"file"}),(0,d.jsx)(n.td,{children:(0,d.jsx)("code",{children:"File"})}),(0,d.jsx)(n.td,{children:"file to add"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:"[index]"}),(0,d.jsx)(n.td,{children:(0,d.jsx)("code",{children:"number"})}),(0,d.jsx)(n.td,{children:"position where to add the item"})]})]})]}),"\n",(0,d.jsx)("a",{name:"module_view/Pane..Pane+addListToViewList"}),"\n",(0,d.jsxs)(n.h4,{id:"paneaddlisttoviewlistfilelist--arrayfile",children:["pane.addListToViewList(fileList) \u21d2 ",(0,d.jsx)("code",{children:"Array."})]}),"\n",(0,d.jsx)(n.p,{children:"Adds the given file list to the end of the workingset."}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane",children:(0,d.jsx)("code",{children:"Pane"})}),(0,d.jsx)(n.br,{}),"\n",(0,d.jsx)(n.strong,{children:"Returns"}),": ",(0,d.jsx)("code",{children:"Array."})," - list of files added to the list"]}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Param"}),(0,d.jsx)(n.th,{children:"Type"})]})}),(0,d.jsx)(n.tbody,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:"fileList"}),(0,d.jsx)(n.td,{children:(0,d.jsx)("code",{children:"Array."})})]})})]}),"\n",(0,d.jsx)("a",{name:"module_view/Pane..Pane+makeViewMostRecent"}),"\n",(0,d.jsx)(n.h4,{id:"panemakeviewmostrecentfile",children:"pane.makeViewMostRecent(file)"}),"\n",(0,d.jsx)(n.p,{children:"Moves the specified file to the front of the MRU (Most Recently Used) list."}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane",children:(0,d.jsx)("code",{children:"Pane"})})]}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Param"}),(0,d.jsx)(n.th,{children:"Type"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsx)(n.tbody,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:"file"}),(0,d.jsx)(n.td,{children:(0,d.jsx)("code",{children:"File"})}),(0,d.jsx)(n.td,{children:"The file to move to the front of the MRU list."})]})})]}),"\n",(0,d.jsx)("a",{name:"module_view/Pane..Pane+sortViewList"}),"\n",(0,d.jsx)(n.h4,{id:"panesortviewlistcomparefn",children:"pane.sortViewList(compareFn)"}),"\n",(0,d.jsx)(n.p,{children:"Sorts items in the pane's view list."}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane",children:(0,d.jsx)("code",{children:"Pane"})})]}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Param"}),(0,d.jsx)(n.th,{children:"Type"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsx)(n.tbody,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:"compareFn"}),(0,d.jsx)(n.td,{children:(0,d.jsx)("code",{children:"function"})}),(0,d.jsx)(n.td,{children:"The function used to compare items in the view list."})]})})]}),"\n",(0,d.jsx)("a",{name:"module_view/Pane..Pane+swapViewListIndexes"}),"\n",(0,d.jsxs)(n.h4,{id:"paneswapviewlistindexesindex1-index2--boolean",children:["pane.swapViewListIndexes(index1, index2) \u21d2 ",(0,d.jsx)("code",{children:"boolean"})]}),"\n",(0,d.jsx)(n.p,{children:"Swaps two items in the file view list (used while dragging items in the working set view)"}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane",children:(0,d.jsx)("code",{children:"Pane"})}),(0,d.jsx)(n.br,{}),"\n",(0,d.jsx)(n.strong,{children:"Returns"}),": ",(0,d.jsx)("code",{children:"boolean"})," - } true"]}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Param"}),(0,d.jsx)(n.th,{children:"Type"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsxs)(n.tbody,{children:[(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:"index1"}),(0,d.jsx)(n.td,{children:(0,d.jsx)("code",{children:"number"})}),(0,d.jsx)(n.td,{children:"the index of the first item to swap"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:"index2"}),(0,d.jsx)(n.td,{children:(0,d.jsx)("code",{children:"number"})}),(0,d.jsx)(n.td,{children:"the index of the second item to swap"})]})]})]}),"\n",(0,d.jsx)("a",{name:"module_view/Pane..Pane+traverseViewListByMRU"}),"\n",(0,d.jsxs)(n.h4,{id:"panetraverseviewlistbymrudirection-current--file",children:["pane.traverseViewListByMRU(direction, [current]) \u21d2 ",(0,d.jsx)("code",{children:"File"})]}),"\n",(0,d.jsx)(n.p,{children:"Traverses the list and returns the File object of the next item in the MRU order"}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane",children:(0,d.jsx)("code",{children:"Pane"})}),(0,d.jsx)(n.br,{}),"\n",(0,d.jsx)(n.strong,{children:"Returns"}),": ",(0,d.jsx)("code",{children:"File"})," - The File object of the next item in the travesal order or null if there isn't one."]}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Param"}),(0,d.jsx)(n.th,{children:"Type"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsxs)(n.tbody,{children:[(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:"direction"}),(0,d.jsx)(n.td,{children:(0,d.jsx)("code",{children:"number"})}),(0,d.jsx)(n.td,{children:"Must be 1 or -1 to traverse forward or backward"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:"[current]"}),(0,d.jsx)(n.td,{children:(0,d.jsx)("code",{children:"string"})}),(0,d.jsx)(n.td,{children:"the fullPath of the item where traversal is to start. If this parameter is omitted then the path of the current view is used. If the current view is a temporary view then the first item in the MRU list is returned"})]})]})]}),"\n",(0,d.jsx)("a",{name:"module_view/Pane..Pane+showInterstitial"}),"\n",(0,d.jsx)(n.h4,{id:"paneshowinterstitialshow",children:"pane.showInterstitial(show)"}),"\n",(0,d.jsx)(n.p,{children:"Shows the pane's interstitial page"}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane",children:(0,d.jsx)("code",{children:"Pane"})})]}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Param"}),(0,d.jsx)(n.th,{children:"Type"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsx)(n.tbody,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:"show"}),(0,d.jsx)(n.td,{children:(0,d.jsx)("code",{children:"boolean"})}),(0,d.jsx)(n.td,{children:"show or hide the interstitial page"})]})})]}),"\n",(0,d.jsx)("a",{name:"module_view/Pane..Pane+getViewForPath"}),"\n",(0,d.jsxs)(n.h4,{id:"panegetviewforpathpath--boolean",children:["pane.getViewForPath(path) \u21d2 ",(0,d.jsx)("code",{children:"boolean"})]}),"\n",(0,d.jsx)(n.p,{children:"retrieves the view object for the given path"}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane",children:(0,d.jsx)("code",{children:"Pane"})}),(0,d.jsx)(n.br,{}),"\n",(0,d.jsx)(n.strong,{children:"Returns"}),": ",(0,d.jsx)("code",{children:"boolean"})," - show - show or hide the interstitial page"]}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Param"}),(0,d.jsx)(n.th,{children:"Type"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsx)(n.tbody,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:"path"}),(0,d.jsx)(n.td,{children:(0,d.jsx)("code",{children:"string"})}),(0,d.jsx)(n.td,{children:"the fullPath of the view to retrieve"})]})})]}),"\n",(0,d.jsx)("a",{name:"module_view/Pane..Pane+addView"}),"\n",(0,d.jsx)(n.h4,{id:"paneaddviewview-show",children:"pane.addView(view, show)"}),"\n",(0,d.jsx)(n.p,{children:"Adds a view to the pane"}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane",children:(0,d.jsx)("code",{children:"Pane"})})]}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Param"}),(0,d.jsx)(n.th,{children:"Type"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsxs)(n.tbody,{children:[(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:"view"}),(0,d.jsx)(n.td,{children:(0,d.jsx)("code",{children:"View"})}),(0,d.jsx)(n.td,{children:"the View object to add"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:"show"}),(0,d.jsx)(n.td,{children:(0,d.jsx)("code",{children:"boolean"})}),(0,d.jsx)(n.td,{children:"true to show the view right away, false otherwise"})]})]})]}),"\n",(0,d.jsx)("a",{name:"module_view/Pane..Pane+showView"}),"\n",(0,d.jsx)(n.h4,{id:"paneshowviewview",children:"pane.showView(view)"}),"\n",(0,d.jsx)(n.p,{children:"Swaps the current view with the requested view.\nIf the interstitial page is shown, it is hidden.\nIf the currentView is a temporary view, it is destroyed."}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane",children:(0,d.jsx)("code",{children:"Pane"})})]}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Param"}),(0,d.jsx)(n.th,{children:"Type"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsx)(n.tbody,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:"view"}),(0,d.jsx)(n.td,{children:(0,d.jsx)("code",{children:"View"})}),(0,d.jsx)(n.td,{children:"the to show"})]})})]}),"\n",(0,d.jsx)("a",{name:"module_view/Pane..Pane+updateLayout"}),"\n",(0,d.jsx)(n.h4,{id:"paneupdatelayoutforcerefresh",children:"pane.updateLayout(forceRefresh)"}),"\n",(0,d.jsx)(n.p,{children:"Sets pane content height. Updates the layout causing the current view to redraw itself"}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane",children:(0,d.jsx)("code",{children:"Pane"})})]}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Param"}),(0,d.jsx)(n.th,{children:"Type"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsx)(n.tbody,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:"forceRefresh"}),(0,d.jsx)(n.td,{children:(0,d.jsx)("code",{children:"boolean"})}),(0,d.jsx)(n.td,{children:"true to force a resize and refresh of the current view, false if just to resize forceRefresh is only used by Editor views to force a relayout of all editor DOM elements. Custom View implementations should just ignore this flag."})]})})]}),"\n",(0,d.jsx)("a",{name:"module_view/Pane..Pane+getCurrentlyViewedFile"}),"\n",(0,d.jsxs)(n.h4,{id:"panegetcurrentlyviewedfile--file",children:["pane.getCurrentlyViewedFile() \u21d2 ",(0,d.jsx)("code",{children:"File"})]}),"\n",(0,d.jsx)(n.p,{children:"Retrieves the File object of the current view"}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane",children:(0,d.jsx)("code",{children:"Pane"})}),(0,d.jsx)(n.br,{}),"\n",(0,d.jsx)(n.strong,{children:"Returns"}),": ",(0,d.jsx)("code",{children:"File"})," - the File object of the current view or null if there isn't one"]}),"\n",(0,d.jsx)("a",{name:"module_view/Pane..Pane+getCurrentlyViewedEditor"}),"\n",(0,d.jsxs)(n.h4,{id:"panegetcurrentlyviewededitor--file",children:["pane.getCurrentlyViewedEditor() \u21d2 ",(0,d.jsx)("code",{children:"File"})]}),"\n",(0,d.jsx)(n.p,{children:"Retrieves the File object of the current view"}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane",children:(0,d.jsx)("code",{children:"Pane"})}),(0,d.jsx)(n.br,{}),"\n",(0,d.jsx)(n.strong,{children:"Returns"}),": ",(0,d.jsx)("code",{children:"File"})," - the File object of the current view or null if there isn't one"]}),"\n",(0,d.jsx)("a",{name:"module_view/Pane..Pane+getCurrentlyViewedPath"}),"\n",(0,d.jsxs)(n.h4,{id:"panegetcurrentlyviewedpath--string",children:["pane.getCurrentlyViewedPath() \u21d2 ",(0,d.jsx)("code",{children:"string"})]}),"\n",(0,d.jsx)(n.p,{children:"Retrieves the path of the current view"}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane",children:(0,d.jsx)("code",{children:"Pane"})}),(0,d.jsx)(n.br,{}),"\n",(0,d.jsx)(n.strong,{children:"Returns"}),": ",(0,d.jsx)("code",{children:"string"})," - the path of the current view or null if there isn't one"]}),"\n",(0,d.jsx)("a",{name:"module_view/Pane..Pane+destroyViewIfNotNeeded"}),"\n",(0,d.jsx)(n.h4,{id:"panedestroyviewifnotneededview",children:"pane.destroyViewIfNotNeeded(view)"}),"\n",(0,d.jsx)(n.p,{children:"destroys the view if it isn't needed"}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane",children:(0,d.jsx)("code",{children:"Pane"})})]}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Param"}),(0,d.jsx)(n.th,{children:"Type"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsx)(n.tbody,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:"view"}),(0,d.jsx)(n.td,{children:(0,d.jsx)("code",{children:"View"})}),(0,d.jsx)(n.td,{children:"the view to destroy"})]})})]}),"\n",(0,d.jsx)("a",{name:"module_view/Pane..Pane+removeView"}),"\n",(0,d.jsxs)(n.h4,{id:"paneremoveviewfile-suppressopennextfile-preventviewchange--boolean",children:["pane.removeView(file, suppressOpenNextFile, preventViewChange) \u21d2 ",(0,d.jsx)("code",{children:"boolean"})]}),"\n",(0,d.jsx)(n.p,{children:"Removes the view and opens the next view"}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane",children:(0,d.jsx)("code",{children:"Pane"})}),(0,d.jsx)(n.br,{}),"\n",(0,d.jsx)(n.strong,{children:"Returns"}),": ",(0,d.jsx)("code",{children:"boolean"})," - true if the file was removed from the working set\nThis function will remove a temporary view of a file but will return false in that case"]}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Param"}),(0,d.jsx)(n.th,{children:"Type"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsxs)(n.tbody,{children:[(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:"file"}),(0,d.jsx)(n.td,{children:(0,d.jsx)("code",{children:"File"})}),(0,d.jsx)(n.td,{children:"the file to close"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:"suppressOpenNextFile"}),(0,d.jsx)(n.td,{children:(0,d.jsx)("code",{children:"boolean"})}),(0,d.jsx)(n.td,{children:"suppresses opening the next file in MRU order"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:"preventViewChange"}),(0,d.jsx)(n.td,{children:(0,d.jsx)("code",{children:"boolean"})}),(0,d.jsx)(n.td,{children:"if suppressOpenNextFile is truthy, this flag can be used to prevent the current view from being destroyed. Ignored if suppressOpenNextFile is falsy"})]})]})]}),"\n",(0,d.jsx)("a",{name:"module_view/Pane..Pane+removeViews"}),"\n",(0,d.jsxs)(n.h4,{id:"paneremoveviewslist--arrayfile",children:["pane.removeViews(list) \u21d2 ",(0,d.jsx)("code",{children:"Array."})]}),"\n",(0,d.jsx)(n.p,{children:"Removes the specifed file from all internal lists, destroys the view of the file (if there is one)\nand shows the interstitial page if the current view is destroyed."}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane",children:(0,d.jsx)("code",{children:"Pane"})}),(0,d.jsx)(n.br,{}),"\n",(0,d.jsx)(n.strong,{children:"Returns"}),": ",(0,d.jsx)("code",{children:"Array."})," - Array of File objects removed from the working set.\nThis function will remove temporary views but the file objects for those views will not be found\nin the result set. Only the file objects removed from the working set are returned."]}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Param"}),(0,d.jsx)(n.th,{children:"Type"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsx)(n.tbody,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:"list"}),(0,d.jsx)(n.td,{children:(0,d.jsx)("code",{children:"Array."})}),(0,d.jsx)(n.td,{children:"Array of files to remove"})]})})]}),"\n",(0,d.jsx)("a",{name:"module_view/Pane..Pane+focus"}),"\n",(0,d.jsx)(n.h4,{id:"panefocus",children:"pane.focus()"}),"\n",(0,d.jsx)(n.p,{children:"Gives focus to the last thing that had focus, the current view or the pane in that order"}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane",children:(0,d.jsx)("code",{children:"Pane"})})]}),"\n",(0,d.jsx)("a",{name:"module_view/Pane..Pane+loadState"}),"\n",(0,d.jsxs)(n.h4,{id:"paneloadstatestate--jquerypromise",children:["pane.loadState(state) \u21d2 ",(0,d.jsx)("code",{children:"jQuery.Promise"})]}),"\n",(0,d.jsx)(n.p,{children:"serializes the pane state from JSON"}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane",children:(0,d.jsx)("code",{children:"Pane"})}),(0,d.jsx)(n.br,{}),"\n",(0,d.jsx)(n.strong,{children:"Returns"}),": ",(0,d.jsx)("code",{children:"jQuery.Promise"})," - A promise which resolves to {fullPath",":string",", paneId",":string","} which can be passed as command data to FILE_OPEN"]}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Param"}),(0,d.jsx)(n.th,{children:"Type"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsx)(n.tbody,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:"state"}),(0,d.jsx)(n.td,{children:(0,d.jsx)("code",{children:"Object"})}),(0,d.jsx)(n.td,{children:"the state to load"})]})})]}),"\n",(0,d.jsx)("a",{name:"module_view/Pane..Pane+saveState"}),"\n",(0,d.jsxs)(n.h4,{id:"panesavestate--object",children:["pane.saveState() \u21d2 ",(0,d.jsx)("code",{children:"Object"})]}),"\n",(0,d.jsx)(n.p,{children:"Returns the JSON-ified state of the object so it can be serialize"}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane",children:(0,d.jsx)("code",{children:"Pane"})}),(0,d.jsx)(n.br,{}),"\n",(0,d.jsx)(n.strong,{children:"Returns"}),": ",(0,d.jsx)("code",{children:"Object"})," - state - the state to save"]}),"\n",(0,d.jsx)("a",{name:"module_view/Pane..Pane+getScrollState"}),"\n",(0,d.jsxs)(n.h4,{id:"panegetscrollstate--object",children:["pane.getScrollState() \u21d2 ",(0,d.jsx)("code",{children:"Object"})]}),"\n",(0,d.jsx)(n.p,{children:"gets the current view's scroll state data"}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane",children:(0,d.jsx)("code",{children:"Pane"})}),(0,d.jsx)(n.br,{}),"\n",(0,d.jsx)(n.strong,{children:"Returns"}),": ",(0,d.jsx)("code",{children:"Object"})," - scroll state - the current scroll state"]}),"\n",(0,d.jsx)("a",{name:"module_view/Pane..Pane+restoreAndAdjustScrollState"}),"\n",(0,d.jsx)(n.h4,{id:"panerestoreandadjustscrollstatestate-heightdelta",children:"pane.restoreAndAdjustScrollState([state], [heightDelta])"}),"\n",(0,d.jsx)(n.p,{children:"tells the current view to restore its scroll state from cached data and apply a height delta"}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,d.jsx)(n.a,{href:"#module_view/Pane..Pane",children:(0,d.jsx)("code",{children:"Pane"})})]}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Param"}),(0,d.jsx)(n.th,{children:"Type"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsxs)(n.tbody,{children:[(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:"[state]"}),(0,d.jsx)(n.td,{children:(0,d.jsx)("code",{children:"Object"})}),(0,d.jsx)(n.td,{children:"the current scroll state"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:"[heightDelta]"}),(0,d.jsx)(n.td,{children:(0,d.jsx)("code",{children:"number"})}),(0,d.jsx)(n.td,{children:"the amount to add or subtract from the state"})]})]})]})]})}function o(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,d.jsx)(n,{...e,children:(0,d.jsx)(c,{...e})}):c(e)}},28453:(e,n,i)=>{i.d(n,{R:()=>t,x:()=>l});var r=i(96540);const d={},s=r.createContext(d);function t(e){const n=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(d):e.components||d:t(e.components),r.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/0ec2da41.5cf6ffc2.js b/assets/js/0ec2da41.5cf6ffc2.js new file mode 100644 index 00000000..42f599bb --- /dev/null +++ b/assets/js/0ec2da41.5cf6ffc2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[661],{94125:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>l,default:()=>c,frontMatter:()=>i,metadata:()=>r,toc:()=>o});const r=JSON.parse('{"id":"API-Reference/utils/EventManager","title":"EventManager","description":"Import :","source":"@site/api/API-Reference/utils/EventManager.md","sourceDirName":"API-Reference/utils","slug":"/API-Reference/utils/EventManager","permalink":"/api/API-Reference/utils/EventManager","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"EventDispatcher","permalink":"/api/API-Reference/utils/EventDispatcher"},"next":{"title":"ExtensionInterface","permalink":"/api/API-Reference/utils/ExtensionInterface"}}');var s=t(74848),a=t(28453);const i={},l=void 0,d={},o=[{value:"Import :",id:"import-",level:3},{value:"utils/EventManager",id:"utilseventmanager",level:2},{value:"Usage",id:"usage",level:2},{value:"utils/EventManager.registerEventHandler(handlerName, eventDispatcher) \u21d2 boolean",id:"utilseventmanagerregistereventhandlerhandlername-eventdispatcher--boolean",level:3},{value:"utils/EventManager.isExistsEventHandler(handlerName) \u21d2 boolean",id:"utilseventmanagerisexistseventhandlerhandlername--boolean",level:3},{value:"utils/EventManager.triggerEvent(handlerName, eventName, ...eventParams) : function",id:"utilseventmanagertriggereventhandlername-eventname-eventparams--function",level:3},{value:"utils/EventManager.setTrustedOrigin(origin, isTrusted)",id:"utilseventmanagersettrustedoriginorigin-istrusted",level:3}];function h(e){const n={a:"a",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,a.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h3,{id:"import-",children:"Import :"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-js",children:'const EventManager = brackets.getModule("utils/EventManager")\n'})}),"\n",(0,s.jsx)("a",{name:"module_utils/EventManager"}),"\n",(0,s.jsx)(n.h2,{id:"utilseventmanager",children:"utils/EventManager"}),"\n",(0,s.jsxs)(n.p,{children:["The global EventManager can be used to register named EventDispatchers so that events\ncan be triggered from anywhere without using require context. This should also be used to handle custom\n",(0,s.jsx)(n.code,{children:"window.onmessage"})," handlers."]}),"\n",(0,s.jsxs)(n.p,{children:["A global ",(0,s.jsx)(n.code,{children:"window.EventManager"})," object is made available in phoenix that can be called anytime after AppStart."]}),"\n",(0,s.jsx)(n.h2,{id:"usage",children:"Usage"}),"\n",(0,s.jsxs)(n.p,{children:["For Eg. Let's say we have an extension ",(0,s.jsx)(n.code,{children:"drawImage"})," installed that wants to expose custom functionality to phoenix.\nThe Extension will first register named EventHandler like this:"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Example"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-js",children:'// in drawImage/someExtensionModule.js module within the extension, do the following:\nconst EventDispatcher = brackets.getModule("utils/EventDispatcher"),\nEventManager = brackets.getModule("utils/EventManager");\nEventDispatcher.makeEventDispatcher(exports);\n\nEventManager.registerEventHandler("drawImage-Handler", exports);\n'})}),"\n",(0,s.jsxs)(n.p,{children:["Once the event handler is registered, we can trigger events on the named handler anywhere in phoenix\n(inside or outside the extension) by using:\n",(0,s.jsx)(n.strong,{children:"Example"})]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-js",children:'EventManager.triggerEvent("drawImage-Handler", "someEventName", "param1", "param2", ...);\n'})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"#module_utils/EventManager",children:"utils/EventManager"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"#module_utils/EventManager..registerEventHandler",children:".registerEventHandler(handlerName, eventDispatcher)"})," \u21d2 ",(0,s.jsx)("code",{children:"boolean"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"#module_utils/EventManager..isExistsEventHandler",children:".isExistsEventHandler(handlerName)"})," \u21d2 ",(0,s.jsx)("code",{children:"boolean"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"#module_utils/EventManager..triggerEvent",children:".triggerEvent(handlerName, eventName, ...eventParams)"})," : ",(0,s.jsx)("code",{children:"function"})]}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"#module_utils/EventManager..setTrustedOrigin",children:".setTrustedOrigin(origin, isTrusted)"})}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)("a",{name:"module_utils/EventManager..registerEventHandler"}),"\n",(0,s.jsxs)(n.h3,{id:"utilseventmanagerregistereventhandlerhandlername-eventdispatcher--boolean",children:["utils/EventManager.registerEventHandler(handlerName, eventDispatcher) \u21d2 ",(0,s.jsx)("code",{children:"boolean"})]}),"\n",(0,s.jsxs)(n.p,{children:["Registers a named EventHandler. Event handlers are created using the call:\n",(0,s.jsx)(n.code,{children:"EventDispatcher.makeEventDispatcher(Command.prototype);"})]}),"\n",(0,s.jsx)(n.p,{children:'To register a close dialogue event handler in an extension:\n// in close-dialogue.js module winthin the extension, do the following:\nconst EventDispatcher = brackets.getModule("utils/EventDispatcher"),\nEventDispatcher.makeEventDispatcher(exports);\nconst EventManager = brackets.getModule("utils/EventManager");'}),"\n",(0,s.jsxs)(n.p,{children:["// Note: for event handler names, please change the ",(0,s.jsx)(n.code,{children:"extensionName"})," to your extension name\n// to prevent collisions. EventHandlers starting with ",(0,s.jsx)(n.code,{children:"ph-"})," and ",(0,s.jsx)(n.code,{children:"br-"}),' are reserved as system handlers\n// and not available for use in extensions.\nEventManager.registerEventHandler("',(0,s.jsx)(n.code,{children:"extensionName"}),'-closeDialogueHandler", exports);\n// Once the event handler is registered, see triggerEvent API on how to raise events']}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,s.jsx)(n.a,{href:"#module_utils/EventManager",children:(0,s.jsx)("code",{children:"utils/EventManager"})})]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"handlerName"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(n.td,{children:"a unique name of the handler."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"eventDispatcher"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"object"})}),(0,s.jsx)(n.td,{children:"An EventDispatcher that will be used to trigger events."})]})]})]}),"\n",(0,s.jsx)("a",{name:"module_utils/EventManager..isExistsEventHandler"}),"\n",(0,s.jsxs)(n.h3,{id:"utilseventmanagerisexistseventhandlerhandlername--boolean",children:["utils/EventManager.isExistsEventHandler(handlerName) \u21d2 ",(0,s.jsx)("code",{children:"boolean"})]}),"\n",(0,s.jsx)(n.p,{children:"Returns true is an EventHandler of the given name exists."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,s.jsx)(n.a,{href:"#module_utils/EventManager",children:(0,s.jsx)("code",{children:"utils/EventManager"})})]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"handlerName"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})})]})})]}),"\n",(0,s.jsx)("a",{name:"module_utils/EventManager..triggerEvent"}),"\n",(0,s.jsxs)(n.h3,{id:"utilseventmanagertriggereventhandlername-eventname-eventparams--function",children:["utils/EventManager.triggerEvent(handlerName, eventName, ...eventParams) : ",(0,s.jsx)("code",{children:"function"})]}),"\n",(0,s.jsx)(n.p,{children:"Triggers an event on the named event handler."}),"\n",(0,s.jsxs)(n.p,{children:["To trigger an event to the ",(0,s.jsx)(n.code,{children:"closeDialogue"}),' event handler registered above\n// anywhere in code, do the following:\nconst EventManager = brackets.getModule("utils/EventManager");\nEventManager.triggerEvent("closeDialogueHandler", "someEvent", "param1", "param2", ...);']}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,s.jsx)(n.a,{href:"#module_utils/EventManager",children:(0,s.jsx)("code",{children:"utils/EventManager"})})]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"handlerName"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(n.td,{})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"eventName"}),(0,s.jsx)(n.td,{}),(0,s.jsx)(n.td,{children:"the event name as recognised by the handler. this is usually a string."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"...eventParams"}),(0,s.jsx)(n.td,{}),(0,s.jsx)(n.td,{children:"Can be a comma seperated list of args or a single argument."})]})]})]}),"\n",(0,s.jsx)("a",{name:"module_utils/EventManager..setTrustedOrigin"}),"\n",(0,s.jsx)(n.h3,{id:"utilseventmanagersettrustedoriginorigin-istrusted",children:"utils/EventManager.setTrustedOrigin(origin, isTrusted)"}),"\n",(0,s.jsx)(n.p,{children:"add or remove a domain, in the list of trusted origin"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,s.jsx)(n.a,{href:"#module_utils/EventManager",children:(0,s.jsx)("code",{children:"utils/EventManager"})})]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"origin"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(n.td,{children:"the origin to be added or removed"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"isTrusted"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"boolean"})}),(0,s.jsxs)(n.td,{children:["if ",(0,s.jsx)(n.code,{children:"true"})," adds the origin to the list, else removes it."]})]})]})]})]})}function c(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},28453:(e,n,t)=>{t.d(n,{R:()=>i,x:()=>l});var r=t(96540);const s={},a=r.createContext(s);function i(e){const n=r.useContext(a);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),r.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/0fffd3f5.55e3f1f3.js b/assets/js/0fffd3f5.55e3f1f3.js new file mode 100644 index 00000000..ce3d3395 --- /dev/null +++ b/assets/js/0fffd3f5.55e3f1f3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8705],{80389:e=>{e.exports=JSON.parse('{"tag":{"label":"Emmet","permalink":"/blog/tags/emmet","allTagsPath":"/blog/tags","count":1,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/emmet","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]); \ No newline at end of file diff --git a/assets/js/1000.88313b7b.js b/assets/js/1000.88313b7b.js new file mode 100644 index 00000000..3137c2e9 --- /dev/null +++ b/assets/js/1000.88313b7b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1e3],{91e3:(e,s,c)=>{c.d(s,{createRadarServices:()=>a.f});var a=c(87846);c(87960)}}]); \ No newline at end of file diff --git a/assets/js/10b52b5f.22c76b47.js b/assets/js/10b52b5f.22c76b47.js new file mode 100644 index 00000000..f7ea66f8 --- /dev/null +++ b/assets/js/10b52b5f.22c76b47.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8470],{15401:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>o,contentTitle:()=>d,default:()=>h,frontMatter:()=>l,metadata:()=>a,toc:()=>c});const a=JSON.parse('{"id":"API-Reference/view/WorkspaceManager","title":"WorkspaceManager","description":"Import :","source":"@site/api/API-Reference/view/WorkspaceManager.md","sourceDirName":"API-Reference/view","slug":"/API-Reference/view/WorkspaceManager","permalink":"/api/API-Reference/view/WorkspaceManager","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"ViewStateManager","permalink":"/api/API-Reference/view/ViewStateManager"},"next":{"title":"DefaultDialogs","permalink":"/api/API-Reference/widgets/DefaultDialogs"}}');var i=r(74848),s=r(28453);const l={},d=void 0,o={},c=[{value:"Import :",id:"import-",level:3},{value:"view/WorkspaceManager",id:"viewworkspacemanager",level:2},{value:"view/WorkspaceManager.PANEL_TYPE_BOTTOM_PANEL : string",id:"viewworkspacemanagerpanel_type_bottom_panel--string",level:3},{value:"view/WorkspaceManager.PANEL_TYPE_PLUGIN_PANEL : string",id:"viewworkspacemanagerpanel_type_plugin_panel--string",level:3},{value:"view/WorkspaceManager.$bottomPanelContainer : jQueryObject",id:"viewworkspacemanagerbottompanelcontainer--jqueryobject",level:3},{value:"view/WorkspaceManager.$statusBarPanelToggle : jQueryObject",id:"viewworkspacemanagerstatusbarpaneltoggle--jqueryobject",level:3},{value:"view/WorkspaceManager._statusBarToggleInProgress : boolean",id:"viewworkspacemanager_statusbartoggleinprogress--boolean",level:3},{value:"view/WorkspaceManager.EVENT_WORKSPACE_UPDATE_LAYOUT",id:"viewworkspacemanagerevent_workspace_update_layout",level:3},{value:"view/WorkspaceManager.EVENT_WORKSPACE_PANEL_SHOWN",id:"viewworkspacemanagerevent_workspace_panel_shown",level:3},{value:"view/WorkspaceManager.EVENT_WORKSPACE_PANEL_HIDDEN",id:"viewworkspacemanagerevent_workspace_panel_hidden",level:3},{value:"view/WorkspaceManager.EVENT_WORKSPACE_DESIGN_MODE_CHANGE",id:"viewworkspacemanagerevent_workspace_design_mode_change",level:3},{value:"view/WorkspaceManager.createBottomPanel(id, $panel, [minSize], [title], [options]) \u21d2 Panel",id:"viewworkspacemanagercreatebottompanelid-panel-minsize-title-options--panel",level:3},{value:"view/WorkspaceManager.destroyBottomPanel(id)",id:"viewworkspacemanagerdestroybottompanelid",level:3},{value:"view/WorkspaceManager.createPluginPanel(id, $panel, [minSize], $toolbarIcon, [initialSize]) \u21d2 Panel",id:"viewworkspacemanagercreatepluginpanelid-panel-minsize-toolbaricon-initialsize--panel",level:3},{value:"view/WorkspaceManager.getAllPanelIDs() \u21d2 Array",id:"viewworkspacemanagergetallpanelids--array",level:3},{value:"view/WorkspaceManager.getPanelForID(panelID) \u21d2 Object",id:"viewworkspacemanagergetpanelforidpanelid--object",level:3},{value:"view/WorkspaceManager.recomputeLayout(refreshHint)",id:"viewworkspacemanagerrecomputelayoutrefreshhint",level:3},{value:"view/WorkspaceManager.isPanelVisible(panelID) \u21d2 boolean",id:"viewworkspacemanagerispanelvisiblepanelid--boolean",level:3},{value:"view/WorkspaceManager.setPluginPanelWidth(width)",id:"viewworkspacemanagersetpluginpanelwidthwidth",level:3},{value:"view/WorkspaceManager.isInDesignMode() \u21d2 boolean",id:"viewworkspacemanagerisindesignmode--boolean",level:3},{value:"view/WorkspaceManager.setDesignMode(active)",id:"viewworkspacemanagersetdesignmodeactive",level:3},{value:"view/WorkspaceManager.addEscapeKeyEventHandler(consumerName, eventHandler) \u21d2 boolean",id:"viewworkspacemanageraddescapekeyeventhandlerconsumername-eventhandler--boolean",level:3},{value:"view/WorkspaceManager.removeEscapeKeyEventHandler(consumerName) \u21d2 boolean",id:"viewworkspacemanagerremoveescapekeyeventhandlerconsumername--boolean",level:3}];function t(e){const n={a:"a",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h3,{id:"import-",children:"Import :"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-js",children:'const WorkspaceManager = brackets.getModule("view/WorkspaceManager")\n'})}),"\n",(0,i.jsx)("a",{name:"module_view/WorkspaceManager"}),"\n",(0,i.jsx)(n.h2,{id:"viewworkspacemanager",children:"view/WorkspaceManager"}),"\n",(0,i.jsx)(n.p,{children:"Manages layout of panels surrounding the editor area, and size of the editor area (but not its contents)."}),"\n",(0,i.jsx)(n.p,{children:"Updates panel sizes when the window is resized. Maintains the max resizing limits for panels, based on\ncurrently available window size."}),"\n",(0,i.jsxs)(n.p,{children:["Events:\n",(0,i.jsx)(n.code,{children:"workspaceUpdateLayout"})," When workspace size changes for any reason (including panel show/hide panel resize, or the window resize).\nThe 2nd arg is the available workspace height.\nThe 3rd arg is a refreshHint flag for internal use (passed in to recomputeLayout)"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"#module_view/WorkspaceManager",children:"view/WorkspaceManager"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.em,{children:"static"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"#module_view/WorkspaceManager.PANEL_TYPE_BOTTOM_PANEL",children:".PANEL_TYPE_BOTTOM_PANEL"})," : ",(0,i.jsx)("code",{children:"string"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"#module_view/WorkspaceManager.PANEL_TYPE_PLUGIN_PANEL",children:".PANEL_TYPE_PLUGIN_PANEL"})," : ",(0,i.jsx)("code",{children:"string"})]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.em,{children:"inner"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"#module_view/WorkspaceManager..$bottomPanelContainer",children:".$bottomPanelContainer"})," : ",(0,i.jsx)("code",{children:"jQueryObject"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"#module_view/WorkspaceManager..$statusBarPanelToggle",children:".$statusBarPanelToggle"})," : ",(0,i.jsx)("code",{children:"jQueryObject"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"#module_view/WorkspaceManager.._statusBarToggleInProgress",children:"._statusBarToggleInProgress"})," : ",(0,i.jsx)("code",{children:"boolean"})]}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"#module_view/WorkspaceManager..EVENT_WORKSPACE_UPDATE_LAYOUT",children:".EVENT_WORKSPACE_UPDATE_LAYOUT"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"#module_view/WorkspaceManager..EVENT_WORKSPACE_PANEL_SHOWN",children:".EVENT_WORKSPACE_PANEL_SHOWN"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"#module_view/WorkspaceManager..EVENT_WORKSPACE_PANEL_HIDDEN",children:".EVENT_WORKSPACE_PANEL_HIDDEN"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"#module_view/WorkspaceManager..EVENT_WORKSPACE_DESIGN_MODE_CHANGE",children:".EVENT_WORKSPACE_DESIGN_MODE_CHANGE"})}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"#module_view/WorkspaceManager..createBottomPanel",children:".createBottomPanel(id, $panel, [minSize], [title], [options])"})," \u21d2 ",(0,i.jsx)("code",{children:"Panel"})]}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"#module_view/WorkspaceManager..destroyBottomPanel",children:".destroyBottomPanel(id)"})}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"#module_view/WorkspaceManager..createPluginPanel",children:".createPluginPanel(id, $panel, [minSize], $toolbarIcon, [initialSize])"})," \u21d2 ",(0,i.jsx)("code",{children:"Panel"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"#module_view/WorkspaceManager..getAllPanelIDs",children:".getAllPanelIDs()"})," \u21d2 ",(0,i.jsx)("code",{children:"Array"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"#module_view/WorkspaceManager..getPanelForID",children:".getPanelForID(panelID)"})," \u21d2 ",(0,i.jsx)("code",{children:"Object"})]}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"#module_view/WorkspaceManager..recomputeLayout",children:".recomputeLayout(refreshHint)"})}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"#module_view/WorkspaceManager..isPanelVisible",children:".isPanelVisible(panelID)"})," \u21d2 ",(0,i.jsx)("code",{children:"boolean"})]}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"#module_view/WorkspaceManager..setPluginPanelWidth",children:".setPluginPanelWidth(width)"})}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"#module_view/WorkspaceManager..isInDesignMode",children:".isInDesignMode()"})," \u21d2 ",(0,i.jsx)("code",{children:"boolean"})]}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"#module_view/WorkspaceManager..setDesignMode",children:".setDesignMode(active)"})}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"#module_view/WorkspaceManager..addEscapeKeyEventHandler",children:".addEscapeKeyEventHandler(consumerName, eventHandler)"})," \u21d2 ",(0,i.jsx)("code",{children:"boolean"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"#module_view/WorkspaceManager..removeEscapeKeyEventHandler",children:".removeEscapeKeyEventHandler(consumerName)"})," \u21d2 ",(0,i.jsx)("code",{children:"boolean"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)("a",{name:"module_view/WorkspaceManager.PANEL_TYPE_BOTTOM_PANEL"}),"\n",(0,i.jsxs)(n.h3,{id:"viewworkspacemanagerpanel_type_bottom_panel--string",children:["view/WorkspaceManager.PANEL_TYPE_BOTTOM_PANEL : ",(0,i.jsx)("code",{children:"string"})]}),"\n",(0,i.jsx)(n.p,{children:"Constant representing the type of bottom panel"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": static property of ",(0,i.jsx)(n.a,{href:"#module_view/WorkspaceManager",children:(0,i.jsx)("code",{children:"view/WorkspaceManager"})})]}),"\n",(0,i.jsx)("a",{name:"module_view/WorkspaceManager.PANEL_TYPE_PLUGIN_PANEL"}),"\n",(0,i.jsxs)(n.h3,{id:"viewworkspacemanagerpanel_type_plugin_panel--string",children:["view/WorkspaceManager.PANEL_TYPE_PLUGIN_PANEL : ",(0,i.jsx)("code",{children:"string"})]}),"\n",(0,i.jsx)(n.p,{children:"Constant representing the type of plugin panel"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": static property of ",(0,i.jsx)(n.a,{href:"#module_view/WorkspaceManager",children:(0,i.jsx)("code",{children:"view/WorkspaceManager"})})]}),"\n",(0,i.jsx)("a",{name:"module_view/WorkspaceManager..$bottomPanelContainer"}),"\n",(0,i.jsxs)(n.h3,{id:"viewworkspacemanagerbottompanelcontainer--jqueryobject",children:["view/WorkspaceManager.$bottomPanelContainer : ",(0,i.jsx)("code",{children:"jQueryObject"})]}),"\n",(0,i.jsx)(n.p,{children:"The single container wrapping all bottom panels"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": inner property of ",(0,i.jsx)(n.a,{href:"#module_view/WorkspaceManager",children:(0,i.jsx)("code",{children:"view/WorkspaceManager"})})]}),"\n",(0,i.jsx)("a",{name:"module_view/WorkspaceManager..$statusBarPanelToggle"}),"\n",(0,i.jsxs)(n.h3,{id:"viewworkspacemanagerstatusbarpaneltoggle--jqueryobject",children:["view/WorkspaceManager.$statusBarPanelToggle : ",(0,i.jsx)("code",{children:"jQueryObject"})]}),"\n",(0,i.jsx)(n.p,{children:"Chevron toggle in the status bar"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": inner property of ",(0,i.jsx)(n.a,{href:"#module_view/WorkspaceManager",children:(0,i.jsx)("code",{children:"view/WorkspaceManager"})})]}),"\n",(0,i.jsx)("a",{name:"module_view/WorkspaceManager.._statusBarToggleInProgress"}),"\n",(0,i.jsxs)(n.h3,{id:"viewworkspacemanager_statusbartoggleinprogress--boolean",children:["view/WorkspaceManager._statusBarToggleInProgress : ",(0,i.jsx)("code",{children:"boolean"})]}),"\n",(0,i.jsx)(n.p,{children:"True while the status bar toggle button is handling a click"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": inner property of ",(0,i.jsx)(n.a,{href:"#module_view/WorkspaceManager",children:(0,i.jsx)("code",{children:"view/WorkspaceManager"})})]}),"\n",(0,i.jsx)("a",{name:"module_view/WorkspaceManager..EVENT_WORKSPACE_UPDATE_LAYOUT"}),"\n",(0,i.jsx)(n.h3,{id:"viewworkspacemanagerevent_workspace_update_layout",children:"view/WorkspaceManager.EVENT_WORKSPACE_UPDATE_LAYOUT"}),"\n",(0,i.jsx)(n.p,{children:"Event triggered when the workspace layout updates."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": inner constant of ",(0,i.jsx)(n.a,{href:"#module_view/WorkspaceManager",children:(0,i.jsx)("code",{children:"view/WorkspaceManager"})})]}),"\n",(0,i.jsx)("a",{name:"module_view/WorkspaceManager..EVENT_WORKSPACE_PANEL_SHOWN"}),"\n",(0,i.jsx)(n.h3,{id:"viewworkspacemanagerevent_workspace_panel_shown",children:"view/WorkspaceManager.EVENT_WORKSPACE_PANEL_SHOWN"}),"\n",(0,i.jsx)(n.p,{children:"Event triggered when a panel is shown."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": inner constant of ",(0,i.jsx)(n.a,{href:"#module_view/WorkspaceManager",children:(0,i.jsx)("code",{children:"view/WorkspaceManager"})})]}),"\n",(0,i.jsx)("a",{name:"module_view/WorkspaceManager..EVENT_WORKSPACE_PANEL_HIDDEN"}),"\n",(0,i.jsx)(n.h3,{id:"viewworkspacemanagerevent_workspace_panel_hidden",children:"view/WorkspaceManager.EVENT_WORKSPACE_PANEL_HIDDEN"}),"\n",(0,i.jsx)(n.p,{children:"Event triggered when a panel is hidden."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": inner constant of ",(0,i.jsx)(n.a,{href:"#module_view/WorkspaceManager",children:(0,i.jsx)("code",{children:"view/WorkspaceManager"})})]}),"\n",(0,i.jsx)("a",{name:"module_view/WorkspaceManager..EVENT_WORKSPACE_DESIGN_MODE_CHANGE"}),"\n",(0,i.jsx)(n.h3,{id:"viewworkspacemanagerevent_workspace_design_mode_change",children:"view/WorkspaceManager.EVENT_WORKSPACE_DESIGN_MODE_CHANGE"}),"\n",(0,i.jsxs)(n.p,{children:["Event triggered when design mode (editor collapsed, full live preview) is\nentered or exited. Payload: ",(0,i.jsx)(n.code,{children:"(active: boolean)"}),"."]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": inner constant of ",(0,i.jsx)(n.a,{href:"#module_view/WorkspaceManager",children:(0,i.jsx)("code",{children:"view/WorkspaceManager"})})]}),"\n",(0,i.jsx)("a",{name:"module_view/WorkspaceManager..createBottomPanel"}),"\n",(0,i.jsxs)(n.h3,{id:"viewworkspacemanagercreatebottompanelid-panel-minsize-title-options--panel",children:["view/WorkspaceManager.createBottomPanel(id, $panel, [minSize], [title], [options]) \u21d2 ",(0,i.jsx)("code",{children:"Panel"})]}),"\n",(0,i.jsx)(n.p,{children:"Creates a new resizable panel beneath the editor area and above the status bar footer. Panel is initially invisible.\nThe panel's size & visibility are automatically saved & restored as a view-state preference."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,i.jsx)(n.a,{href:"#module_view/WorkspaceManager",children:(0,i.jsx)("code",{children:"view/WorkspaceManager"})})]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"id"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(n.td,{children:'Unique id for this panel. Use package-style naming, e.g. "myextension.feature.panelname"'})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"$panel"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"jQueryObject"})}),(0,i.jsx)(n.td,{children:"DOM content to use as the panel. Need not be in the document yet. Must have an id attribute, for use as a preferences key."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"[minSize]"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"number"})}),(0,i.jsxs)(n.td,{children:["@deprecated No longer used. Pass ",(0,i.jsx)(n.code,{children:"undefined"}),"."]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"[title]"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(n.td,{children:"Display title shown in the bottom panel tab bar."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"[options]"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"Object"})}),(0,i.jsxs)(n.td,{children:["Optional settings: - ",(0,i.jsx)(n.code,{children:"iconSvg"}),' (string): Path to an SVG icon for the panel tab (e.g. "styles/images/icon.svg"). If omitted, a generic default icon is used.']})]})]})]}),"\n",(0,i.jsx)("a",{name:"module_view/WorkspaceManager..destroyBottomPanel"}),"\n",(0,i.jsx)(n.h3,{id:"viewworkspacemanagerdestroybottompanelid",children:"view/WorkspaceManager.destroyBottomPanel(id)"}),"\n",(0,i.jsx)(n.p,{children:"Destroys a bottom panel, removing it from internal registries, the tab bar, and the DOM.\nAfter calling this, the panel ID is no longer valid and the Panel instance should not be reused."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,i.jsx)(n.a,{href:"#module_view/WorkspaceManager",children:(0,i.jsx)("code",{children:"view/WorkspaceManager"})})]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsx)(n.tbody,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"id"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(n.td,{children:"The panel ID that was passed to createBottomPanel."})]})})]}),"\n",(0,i.jsx)("a",{name:"module_view/WorkspaceManager..createPluginPanel"}),"\n",(0,i.jsxs)(n.h3,{id:"viewworkspacemanagercreatepluginpanelid-panel-minsize-toolbaricon-initialsize--panel",children:["view/WorkspaceManager.createPluginPanel(id, $panel, [minSize], $toolbarIcon, [initialSize]) \u21d2 ",(0,i.jsx)("code",{children:"Panel"})]}),"\n",(0,i.jsx)(n.p,{children:"Creates a new resizable plugin panel associated with the given toolbar icon. Panel is initially invisible.\nThe panel's size & visibility are automatically saved & restored. Only one panel can be associated with a\ntoolbar icon."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,i.jsx)(n.a,{href:"#module_view/WorkspaceManager",children:(0,i.jsx)("code",{children:"view/WorkspaceManager"})})]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"id"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(n.td,{children:'Unique id for this panel. Use package-style naming, e.g. "myextension.panelname". will overwrite an existing panel id if present.'})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"$panel"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"jQueryObject"})}),(0,i.jsx)(n.td,{children:"DOM content to use as the panel. Need not be in the document yet. Must have an id attribute, for use as a preferences key."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"[minSize]"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"number"})}),(0,i.jsx)(n.td,{children:"Minimum height of panel in px."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"$toolbarIcon"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"jQueryObject"})}),(0,i.jsx)(n.td,{children:"An icon that should be present in main-toolbar to associate this panel to. The panel will be shown only if the icon is visible on the toolbar and the user clicks on the icon."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"[initialSize]"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"number"})}),(0,i.jsx)(n.td,{children:"Optional Initial size of panel in px. If not given, panel will use minsize or current size."})]})]})]}),"\n",(0,i.jsx)("a",{name:"module_view/WorkspaceManager..getAllPanelIDs"}),"\n",(0,i.jsxs)(n.h3,{id:"viewworkspacemanagergetallpanelids--array",children:["view/WorkspaceManager.getAllPanelIDs() \u21d2 ",(0,i.jsx)("code",{children:"Array"})]}),"\n",(0,i.jsx)(n.p,{children:"Returns an array of all panel ID's"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,i.jsx)(n.a,{href:"#module_view/WorkspaceManager",children:(0,i.jsx)("code",{children:"view/WorkspaceManager"})}),(0,i.jsx)(n.br,{}),"\n",(0,i.jsx)(n.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"Array"})," - List of ID's of all bottom panels"]}),"\n",(0,i.jsx)("a",{name:"module_view/WorkspaceManager..getPanelForID"}),"\n",(0,i.jsxs)(n.h3,{id:"viewworkspacemanagergetpanelforidpanelid--object",children:["view/WorkspaceManager.getPanelForID(panelID) \u21d2 ",(0,i.jsx)("code",{children:"Object"})]}),"\n",(0,i.jsx)(n.p,{children:"Gets the Panel interface for the given ID. Can return undefined if no panel with the ID is found."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,i.jsx)(n.a,{href:"#module_view/WorkspaceManager",children:(0,i.jsx)("code",{children:"view/WorkspaceManager"})}),(0,i.jsx)(n.br,{}),"\n",(0,i.jsx)(n.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"Object"})," - Panel object for the ID or undefined"]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"})]})}),(0,i.jsx)(n.tbody,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"panelID"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})})]})})]}),"\n",(0,i.jsx)("a",{name:"module_view/WorkspaceManager..recomputeLayout"}),"\n",(0,i.jsx)(n.h3,{id:"viewworkspacemanagerrecomputelayoutrefreshhint",children:"view/WorkspaceManager.recomputeLayout(refreshHint)"}),"\n",(0,i.jsx)(n.p,{children:"Called when an external widget has appeared and needs some of the space occupied\nby the mainview manager"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,i.jsx)(n.a,{href:"#module_view/WorkspaceManager",children:(0,i.jsx)("code",{children:"view/WorkspaceManager"})})]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsx)(n.tbody,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"refreshHint"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"boolean"})}),(0,i.jsx)(n.td,{children:"true to refresh the editor, false if not"})]})})]}),"\n",(0,i.jsx)("a",{name:"module_view/WorkspaceManager..isPanelVisible"}),"\n",(0,i.jsxs)(n.h3,{id:"viewworkspacemanagerispanelvisiblepanelid--boolean",children:["view/WorkspaceManager.isPanelVisible(panelID) \u21d2 ",(0,i.jsx)("code",{children:"boolean"})]}),"\n",(0,i.jsx)(n.p,{children:"Responsible to check if the panel is visible or not.\nReturns true if visible else false."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,i.jsx)(n.a,{href:"#module_view/WorkspaceManager",children:(0,i.jsx)("code",{children:"view/WorkspaceManager"})})]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsx)(n.tr,{children:(0,i.jsx)(n.th,{children:"Param"})})}),(0,i.jsx)(n.tbody,{children:(0,i.jsx)(n.tr,{children:(0,i.jsx)(n.td,{children:"panelID"})})})]}),"\n",(0,i.jsx)("a",{name:"module_view/WorkspaceManager..setPluginPanelWidth"}),"\n",(0,i.jsx)(n.h3,{id:"viewworkspacemanagersetpluginpanelwidthwidth",children:"view/WorkspaceManager.setPluginPanelWidth(width)"}),"\n",(0,i.jsx)(n.p,{children:"Programmatically sets the plugin panel content width to the given value in pixels.\nThe total toolbar width is adjusted to account for the plugin icons bar.\nIf the requested width doesn't fit, the sidebar is progressively shrunk\n(and collapsed if necessary) before clamping.\nNo-op if no panel is currently visible."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,i.jsx)(n.a,{href:"#module_view/WorkspaceManager",children:(0,i.jsx)("code",{children:"view/WorkspaceManager"})})]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsx)(n.tbody,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"width"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"number"})}),(0,i.jsx)(n.td,{children:"Desired content width in pixels"})]})})]}),"\n",(0,i.jsx)("a",{name:"module_view/WorkspaceManager..isInDesignMode"}),"\n",(0,i.jsxs)(n.h3,{id:"viewworkspacemanagerisindesignmode--boolean",children:["view/WorkspaceManager.isInDesignMode() \u21d2 ",(0,i.jsx)("code",{children:"boolean"})]}),"\n",(0,i.jsx)(n.p,{children:"Returns true while the workspace is in design mode (editor collapsed and\nlive preview expanded to fill the editor area)."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,i.jsx)(n.a,{href:"#module_view/WorkspaceManager",children:(0,i.jsx)("code",{children:"view/WorkspaceManager"})})]}),"\n",(0,i.jsx)("a",{name:"module_view/WorkspaceManager..setDesignMode"}),"\n",(0,i.jsx)(n.h3,{id:"viewworkspacemanagersetdesignmodeactive",children:"view/WorkspaceManager.setDesignMode(active)"}),"\n",(0,i.jsx)(n.p,{children:"Sets the design-mode flag and fires EVENT_WORKSPACE_DESIGN_MODE_CHANGE when\nthe value actually changes. Intended to be called by the control bar; other\ncallers should use the dedicated toggle command instead."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,i.jsx)(n.a,{href:"#module_view/WorkspaceManager",children:(0,i.jsx)("code",{children:"view/WorkspaceManager"})})]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"})]})}),(0,i.jsx)(n.tbody,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"active"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"boolean"})})]})})]}),"\n",(0,i.jsx)("a",{name:"module_view/WorkspaceManager..addEscapeKeyEventHandler"}),"\n",(0,i.jsxs)(n.h3,{id:"viewworkspacemanageraddescapekeyeventhandlerconsumername-eventhandler--boolean",children:["view/WorkspaceManager.addEscapeKeyEventHandler(consumerName, eventHandler) \u21d2 ",(0,i.jsx)("code",{children:"boolean"})]}),"\n",(0,i.jsx)(n.p,{children:"If any widgets related to the editor needs to handle the escape key event, add it here. returning true from the\nregistered handler will prevent primary escape key toggle panel behavior of phoenix. Note that returning true\nwill no stop the event bubbling, that has to be controlled with the event parameter forwarded to the handler."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,i.jsx)(n.a,{href:"#module_view/WorkspaceManager",children:(0,i.jsx)("code",{children:"view/WorkspaceManager"})}),(0,i.jsx)(n.br,{}),"\n",(0,i.jsx)(n.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"boolean"})," - true if added"]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"consumerName"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(n.td,{children:"a unique name for your consumer"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"eventHandler"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"function"})}),(0,i.jsx)(n.td,{children:"If the eventHandler returns true for this callback, the escape key event will not lead to panel toggle default behavior."})]})]})]}),"\n",(0,i.jsx)("a",{name:"module_view/WorkspaceManager..removeEscapeKeyEventHandler"}),"\n",(0,i.jsxs)(n.h3,{id:"viewworkspacemanagerremoveescapekeyeventhandlerconsumername--boolean",children:["view/WorkspaceManager.removeEscapeKeyEventHandler(consumerName) \u21d2 ",(0,i.jsx)("code",{children:"boolean"})]}),"\n",(0,i.jsx)(n.p,{children:"Removing the escape key event consumer."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,i.jsx)(n.a,{href:"#module_view/WorkspaceManager",children:(0,i.jsx)("code",{children:"view/WorkspaceManager"})}),(0,i.jsx)(n.br,{}),"\n",(0,i.jsx)(n.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"boolean"})," - true if removed"]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsx)(n.tbody,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"consumerName"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(n.td,{children:"used to register the consumer."})]})})]})]})}function h(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(t,{...e})}):t(e)}},28453:(e,n,r)=>{r.d(n,{R:()=>l,x:()=>d});var a=r(96540);const i={},s=a.createContext(i);function l(e){const n=a.useContext(s);return a.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:l(e.components),a.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/1149e606.272e1b68.js b/assets/js/1149e606.272e1b68.js new file mode 100644 index 00000000..36493a53 --- /dev/null +++ b/assets/js/1149e606.272e1b68.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3199],{92657:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>p,contentTitle:()=>d,default:()=>h,frontMatter:()=>o,metadata:()=>r,toc:()=>l});const r=JSON.parse('{"id":"API-Reference/widgets/PopUpManager","title":"PopUpManager","description":"Import :","source":"@site/api/API-Reference/widgets/PopUpManager.md","sourceDirName":"API-Reference/widgets","slug":"/API-Reference/widgets/PopUpManager","permalink":"/api/API-Reference/widgets/PopUpManager","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"NotificationUI","permalink":"/api/API-Reference/widgets/NotificationUI"},"next":{"title":"StatusBar","permalink":"/api/API-Reference/widgets/StatusBar"}}');var s=t(74848),i=t(28453);const o={},d=void 0,p={},l=[{value:"Import :",id:"import-",level:3},{value:"AppInit",id:"appinit",level:2},{value:"addPopUp($popUp, removeHandler, autoRemove, options)",id:"addpopuppopup-removehandler-autoremove-options",level:2},{value:"removePopUp($popUp)",id:"removepopuppopup",level:2},{value:"_filterDropdown($popup, searchString)",id:"_filterdropdownpopup-searchstring",level:2},{value:"selectNextItem(direction, $popUp)",id:"selectnextitemdirection-popup",level:2},{value:"listenToContextMenu(contextMenu)",id:"listentocontextmenucontextmenu",level:2}];function c(e){const n={code:"code",h2:"h2",h3:"h3",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h3,{id:"import-",children:"Import :"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-js",children:'const PopUpManager = brackets.getModule("widgets/PopUpManager")\n'})}),"\n",(0,s.jsx)("a",{name:"AppInit"}),"\n",(0,s.jsx)(n.h2,{id:"appinit",children:"AppInit"}),"\n",(0,s.jsx)(n.p,{children:"Utilities for managing pop-ups."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,s.jsx)("a",{name:"addPopUp"}),"\n",(0,s.jsx)(n.h2,{id:"addpopuppopup-removehandler-autoremove-options",children:"addPopUp($popUp, removeHandler, autoRemove, options)"}),"\n",(0,s.jsx)(n.p,{children:"Add Esc key handling for a popup DOM element."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"$popUp"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"jQuery"})}),(0,s.jsx)(n.td,{children:"jQuery object for the DOM element pop-up"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"removeHandler"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"function"})}),(0,s.jsxs)(n.td,{children:["Pop-up specific remove (e.g. display",":none"," or DOM removal)"]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"autoRemove"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"Boolean"})}),(0,s.jsx)(n.td,{children:"Specify true to indicate the PopUpManager should remove the popup from the _popUps array when the popup is closed. Specify false when the popup is always persistant in the _popUps array."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"options"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"object"})}),(0,s.jsx)(n.td,{})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"[options.popupManagesFocus]"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"boolean"})}),(0,s.jsx)(n.td,{children:"set to true if the popup manages focus restore on close"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"[options.closeCurrentPopups]"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"boolean"})}),(0,s.jsx)(n.td,{children:"set to true if you want to dismiss all exiting popups before adding this. Useful when this should be the only popup visible."})]})]})]}),"\n",(0,s.jsx)("a",{name:"removePopUp"}),"\n",(0,s.jsx)(n.h2,{id:"removepopuppopup",children:"removePopUp($popUp)"}),"\n",(0,s.jsx)(n.p,{children:"Remove Esc key handling for a pop-up. Removes the pop-up from the DOM\nif the pop-up is currently visible and was not originally attached."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"$popUp"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"jQuery"})})]})})]}),"\n",(0,s.jsx)("a",{name:"_filterDropdown"}),"\n",(0,s.jsx)(n.h2,{id:"_filterdropdownpopup-searchstring",children:"_filterDropdown($popup, searchString)"}),"\n",(0,s.jsx)(n.p,{children:"hides all elements in popup that doesn't match the given search string, also shows the search bar in popup"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsx)(n.tr,{children:(0,s.jsx)(n.th,{children:"Param"})})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsx)(n.tr,{children:(0,s.jsx)(n.td,{children:"$popup"})}),(0,s.jsx)(n.tr,{children:(0,s.jsx)(n.td,{children:"searchString"})})]})]}),"\n",(0,s.jsx)("a",{name:"selectNextItem"}),"\n",(0,s.jsx)(n.h2,{id:"selectnextitemdirection-popup",children:"selectNextItem(direction, $popUp)"}),"\n",(0,s.jsx)(n.p,{children:"Selects the next or previous item in the popup."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"direction"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"number"})}),(0,s.jsx)(n.td,{children:"+1 for next, -1 for prev"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"$popUp"}),(0,s.jsx)(n.td,{}),(0,s.jsx)(n.td,{})]})]})]}),"\n",(0,s.jsx)("a",{name:"listenToContextMenu"}),"\n",(0,s.jsx)(n.h2,{id:"listentocontextmenucontextmenu",children:"listenToContextMenu(contextMenu)"}),"\n",(0,s.jsx)(n.p,{children:"Context menus are also created in AppInit.htmlReady(), so they may not\nyet have been created when we get our AppInit.htmlReady() callback, so\nwe provide this method to tell us when to start listening for their events"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"contextMenu"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"ContextMenu"})})]})})]})]})}function h(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(c,{...e})}):c(e)}},28453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>d});var r=t(96540);const s={},i=r.createContext(s);function o(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/11bab730.6acd3738.js b/assets/js/11bab730.6acd3738.js new file mode 100644 index 00000000..0fcc5ba9 --- /dev/null +++ b/assets/js/11bab730.6acd3738.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2922],{10677:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>o,contentTitle:()=>a,default:()=>h,frontMatter:()=>r,metadata:()=>i,toc:()=>c});const i=JSON.parse('{"id":"API-Reference/filesystem/FileSystemStats","title":"FileSystemStats","description":"Import :","source":"@site/api/API-Reference/filesystem/FileSystemStats.md","sourceDirName":"API-Reference/filesystem","slug":"/API-Reference/filesystem/FileSystemStats","permalink":"/api/API-Reference/filesystem/FileSystemStats","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"FileSystemError","permalink":"/api/API-Reference/filesystem/FileSystemError"},"next":{"title":"RemoteFile","permalink":"/api/API-Reference/filesystem/RemoteFile"}}');var n=s(74848),l=s(28453);const r={},a=void 0,o={},c=[{value:"Import :",id:"import-",level:3},{value:"FileSystemStats",id:"filesystemstats",level:2},{value:"new FileSystemStats(options)",id:"new-filesystemstatsoptions",level:3},{value:"isFile : boolean",id:"isfile--boolean",level:2},{value:"isDirectory : boolean",id:"isdirectory--boolean",level:2},{value:"mtime : Date",id:"mtime--date",level:2},{value:"size : Number",id:"size--number",level:2},{value:"realPath : string",id:"realpath--string",level:2}];function d(e){const t={code:"code",h2:"h2",h3:"h3",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,l.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.h3,{id:"import-",children:"Import :"}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-js",children:'const FileSystemStats = brackets.getModule("filesystem/FileSystemStats")\n'})}),"\n",(0,n.jsx)("a",{name:"FileSystemStats"}),"\n",(0,n.jsx)(t.h2,{id:"filesystemstats",children:"FileSystemStats"}),"\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"Kind"}),": global class"]}),"\n",(0,n.jsx)("a",{name:"new_FileSystemStats_new"}),"\n",(0,n.jsx)(t.h3,{id:"new-filesystemstatsoptions",children:"new FileSystemStats(options)"}),"\n",(0,n.jsx)(t.p,{children:"The FileSystemStats represents a particular FileSystemEntry's stats."}),"\n",(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Param"}),(0,n.jsx)(t.th,{children:"Type"})]})}),(0,n.jsx)(t.tbody,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"options"}),(0,n.jsx)(t.td,{children:(0,n.jsx)("code",{children:"Object"})})]})})]}),"\n",(0,n.jsx)("a",{name:"isFile"}),"\n",(0,n.jsxs)(t.h2,{id:"isfile--boolean",children:["isFile : ",(0,n.jsx)("code",{children:"boolean"})]}),"\n",(0,n.jsx)(t.p,{children:"Whether or not this is a stats object for a file"}),"\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"Kind"}),": global variable"]}),"\n",(0,n.jsx)("a",{name:"isDirectory"}),"\n",(0,n.jsxs)(t.h2,{id:"isdirectory--boolean",children:["isDirectory : ",(0,n.jsx)("code",{children:"boolean"})]}),"\n",(0,n.jsx)(t.p,{children:"Whether or not this is a stats object for a directory"}),"\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"Kind"}),": global variable"]}),"\n",(0,n.jsx)("a",{name:"mtime"}),"\n",(0,n.jsxs)(t.h2,{id:"mtime--date",children:["mtime : ",(0,n.jsx)("code",{children:"Date"})]}),"\n",(0,n.jsx)(t.p,{children:"Modification time for a file"}),"\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"Kind"}),": global variable"]}),"\n",(0,n.jsx)("a",{name:"size"}),"\n",(0,n.jsxs)(t.h2,{id:"size--number",children:["size : ",(0,n.jsx)("code",{children:"Number"})]}),"\n",(0,n.jsx)(t.p,{children:"Size in bytes of a file"}),"\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"Kind"}),": global variable"]}),"\n",(0,n.jsx)("a",{name:"realPath"}),"\n",(0,n.jsxs)(t.h2,{id:"realpath--string",children:["realPath : ",(0,n.jsx)("code",{children:"string"})]}),"\n",(0,n.jsx)(t.p,{children:"The canonical path of this file or directory ONLY if it is a symbolic link,\nand null otherwise."}),"\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"Kind"}),": global variable"]})]})}function h(e={}){const{wrapper:t}={...(0,l.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(d,{...e})}):d(e)}},28453:(e,t,s)=>{s.d(t,{R:()=>r,x:()=>a});var i=s(96540);const n={},l=i.createContext(n);function r(e){const t=i.useContext(l);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:r(e.components),i.createElement(l.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/1203.2ab4f907.js b/assets/js/1203.2ab4f907.js new file mode 100644 index 00000000..50cd9bb2 --- /dev/null +++ b/assets/js/1203.2ab4f907.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1203],{51203:(t,e,i)=>{i.d(e,{diagram:()=>I});var a=i(67633),n=i(40797),s=i(70451),r=function(){var t=(0,n.K2)((function(t,e,i,a){for(i=i||{},a=t.length;a--;i[t[a]]=e);return i}),"o"),e=[1,3],i=[1,4],a=[1,5],s=[1,6],r=[1,7],o=[1,4,5,10,12,13,14,18,25,35,37,39,41,42,48,50,51,52,53,54,55,56,57,60,61,63,64,65,66,67],l=[1,4,5,10,12,13,14,18,25,28,35,37,39,41,42,48,50,51,52,53,54,55,56,57,60,61,63,64,65,66,67],h=[55,56,57],c=[2,36],d=[1,37],u=[1,36],x=[1,38],g=[1,35],f=[1,43],p=[1,41],y=[1,14],T=[1,23],m=[1,18],q=[1,19],A=[1,20],_=[1,21],b=[1,22],S=[1,24],k=[1,25],F=[1,26],P=[1,27],C=[1,28],L=[1,29],v=[1,32],I=[1,33],E=[1,34],D=[1,39],z=[1,40],w=[1,42],K=[1,44],U=[1,62],N=[1,61],R=[4,5,8,10,12,13,14,18,44,47,49,55,56,57,63,64,65,66,67],B=[1,65],W=[1,66],$=[1,67],Q=[1,68],O=[1,69],X=[1,70],H=[1,71],M=[1,72],Y=[1,73],j=[1,74],G=[1,75],V=[1,76],Z=[4,5,6,7,8,9,10,11,12,13,14,15,18],J=[1,90],tt=[1,91],et=[1,92],it=[1,99],at=[1,93],nt=[1,96],st=[1,94],rt=[1,95],ot=[1,97],lt=[1,98],ht=[1,102],ct=[10,55,56,57],dt=[4,5,6,8,10,11,13,17,18,19,20,55,56,57],ut={trace:(0,n.K2)((function(){}),"trace"),yy:{},symbols_:{error:2,idStringToken:3,ALPHA:4,NUM:5,NODE_STRING:6,DOWN:7,MINUS:8,DEFAULT:9,COMMA:10,COLON:11,AMP:12,BRKT:13,MULT:14,UNICODE_TEXT:15,styleComponent:16,UNIT:17,SPACE:18,STYLE:19,PCT:20,idString:21,style:22,stylesOpt:23,classDefStatement:24,CLASSDEF:25,start:26,eol:27,QUADRANT:28,document:29,line:30,statement:31,axisDetails:32,quadrantDetails:33,points:34,title:35,title_value:36,acc_title:37,acc_title_value:38,acc_descr:39,acc_descr_value:40,acc_descr_multiline_value:41,section:42,text:43,point_start:44,point_x:45,point_y:46,class_name:47,"X-AXIS":48,"AXIS-TEXT-DELIMITER":49,"Y-AXIS":50,QUADRANT_1:51,QUADRANT_2:52,QUADRANT_3:53,QUADRANT_4:54,NEWLINE:55,SEMI:56,EOF:57,alphaNumToken:58,textNoTagsToken:59,STR:60,MD_STR:61,alphaNum:62,PUNCTUATION:63,PLUS:64,EQUALS:65,DOT:66,UNDERSCORE:67,$accept:0,$end:1},terminals_:{2:"error",4:"ALPHA",5:"NUM",6:"NODE_STRING",7:"DOWN",8:"MINUS",9:"DEFAULT",10:"COMMA",11:"COLON",12:"AMP",13:"BRKT",14:"MULT",15:"UNICODE_TEXT",17:"UNIT",18:"SPACE",19:"STYLE",20:"PCT",25:"CLASSDEF",28:"QUADRANT",35:"title",36:"title_value",37:"acc_title",38:"acc_title_value",39:"acc_descr",40:"acc_descr_value",41:"acc_descr_multiline_value",42:"section",44:"point_start",45:"point_x",46:"point_y",47:"class_name",48:"X-AXIS",49:"AXIS-TEXT-DELIMITER",50:"Y-AXIS",51:"QUADRANT_1",52:"QUADRANT_2",53:"QUADRANT_3",54:"QUADRANT_4",55:"NEWLINE",56:"SEMI",57:"EOF",60:"STR",61:"MD_STR",63:"PUNCTUATION",64:"PLUS",65:"EQUALS",66:"DOT",67:"UNDERSCORE"},productions_:[0,[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[3,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[16,1],[21,1],[21,2],[22,1],[22,2],[23,1],[23,3],[24,5],[26,2],[26,2],[26,2],[29,0],[29,2],[30,2],[31,0],[31,1],[31,2],[31,1],[31,1],[31,1],[31,2],[31,2],[31,2],[31,1],[31,1],[34,4],[34,5],[34,5],[34,6],[32,4],[32,3],[32,2],[32,4],[32,3],[32,2],[33,2],[33,2],[33,2],[33,2],[27,1],[27,1],[27,1],[43,1],[43,2],[43,1],[43,1],[62,1],[62,2],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[58,1],[59,1],[59,1],[59,1]],performAction:(0,n.K2)((function(t,e,i,a,n,s,r){var o=s.length-1;switch(n){case 23:case 68:this.$=s[o];break;case 24:case 69:this.$=s[o-1]+""+s[o];break;case 26:this.$=s[o-1]+s[o];break;case 27:this.$=[s[o].trim()];break;case 28:s[o-2].push(s[o].trim()),this.$=s[o-2];break;case 29:this.$=s[o-4],a.addClass(s[o-2],s[o]);break;case 37:this.$=[];break;case 42:this.$=s[o].trim(),a.setDiagramTitle(this.$);break;case 43:this.$=s[o].trim(),a.setAccTitle(this.$);break;case 44:case 45:this.$=s[o].trim(),a.setAccDescription(this.$);break;case 46:a.addSection(s[o].substr(8)),this.$=s[o].substr(8);break;case 47:a.addPoint(s[o-3],"",s[o-1],s[o],[]);break;case 48:a.addPoint(s[o-4],s[o-3],s[o-1],s[o],[]);break;case 49:a.addPoint(s[o-4],"",s[o-2],s[o-1],s[o]);break;case 50:a.addPoint(s[o-5],s[o-4],s[o-2],s[o-1],s[o]);break;case 51:a.setXAxisLeftText(s[o-2]),a.setXAxisRightText(s[o]);break;case 52:s[o-1].text+=" \u27f6 ",a.setXAxisLeftText(s[o-1]);break;case 53:a.setXAxisLeftText(s[o]);break;case 54:a.setYAxisBottomText(s[o-2]),a.setYAxisTopText(s[o]);break;case 55:s[o-1].text+=" \u27f6 ",a.setYAxisBottomText(s[o-1]);break;case 56:a.setYAxisBottomText(s[o]);break;case 57:a.setQuadrant1Text(s[o]);break;case 58:a.setQuadrant2Text(s[o]);break;case 59:a.setQuadrant3Text(s[o]);break;case 60:a.setQuadrant4Text(s[o]);break;case 64:case 66:this.$={text:s[o],type:"text"};break;case 65:this.$={text:s[o-1].text+""+s[o],type:s[o-1].type};break;case 67:this.$={text:s[o],type:"markdown"}}}),"anonymous"),table:[{18:e,26:1,27:2,28:i,55:a,56:s,57:r},{1:[3]},{18:e,26:8,27:2,28:i,55:a,56:s,57:r},{18:e,26:9,27:2,28:i,55:a,56:s,57:r},t(o,[2,33],{29:10}),t(l,[2,61]),t(l,[2,62]),t(l,[2,63]),{1:[2,30]},{1:[2,31]},t(h,c,{30:11,31:12,24:13,32:15,33:16,34:17,43:30,58:31,1:[2,32],4:d,5:u,10:x,12:g,13:f,14:p,18:y,25:T,35:m,37:q,39:A,41:_,42:b,48:S,50:k,51:F,52:P,53:C,54:L,60:v,61:I,63:E,64:D,65:z,66:w,67:K}),t(o,[2,34]),{27:45,55:a,56:s,57:r},t(h,[2,37]),t(h,c,{24:13,32:15,33:16,34:17,43:30,58:31,31:46,4:d,5:u,10:x,12:g,13:f,14:p,18:y,25:T,35:m,37:q,39:A,41:_,42:b,48:S,50:k,51:F,52:P,53:C,54:L,60:v,61:I,63:E,64:D,65:z,66:w,67:K}),t(h,[2,39]),t(h,[2,40]),t(h,[2,41]),{36:[1,47]},{38:[1,48]},{40:[1,49]},t(h,[2,45]),t(h,[2,46]),{18:[1,50]},{4:d,5:u,10:x,12:g,13:f,14:p,43:51,58:31,60:v,61:I,63:E,64:D,65:z,66:w,67:K},{4:d,5:u,10:x,12:g,13:f,14:p,43:52,58:31,60:v,61:I,63:E,64:D,65:z,66:w,67:K},{4:d,5:u,10:x,12:g,13:f,14:p,43:53,58:31,60:v,61:I,63:E,64:D,65:z,66:w,67:K},{4:d,5:u,10:x,12:g,13:f,14:p,43:54,58:31,60:v,61:I,63:E,64:D,65:z,66:w,67:K},{4:d,5:u,10:x,12:g,13:f,14:p,43:55,58:31,60:v,61:I,63:E,64:D,65:z,66:w,67:K},{4:d,5:u,10:x,12:g,13:f,14:p,43:56,58:31,60:v,61:I,63:E,64:D,65:z,66:w,67:K},{4:d,5:u,8:U,10:x,12:g,13:f,14:p,18:N,44:[1,57],47:[1,58],58:60,59:59,63:E,64:D,65:z,66:w,67:K},t(R,[2,64]),t(R,[2,66]),t(R,[2,67]),t(R,[2,70]),t(R,[2,71]),t(R,[2,72]),t(R,[2,73]),t(R,[2,74]),t(R,[2,75]),t(R,[2,76]),t(R,[2,77]),t(R,[2,78]),t(R,[2,79]),t(R,[2,80]),t(o,[2,35]),t(h,[2,38]),t(h,[2,42]),t(h,[2,43]),t(h,[2,44]),{3:64,4:B,5:W,6:$,7:Q,8:O,9:X,10:H,11:M,12:Y,13:j,14:G,15:V,21:63},t(h,[2,53],{59:59,58:60,4:d,5:u,8:U,10:x,12:g,13:f,14:p,18:N,49:[1,77],63:E,64:D,65:z,66:w,67:K}),t(h,[2,56],{59:59,58:60,4:d,5:u,8:U,10:x,12:g,13:f,14:p,18:N,49:[1,78],63:E,64:D,65:z,66:w,67:K}),t(h,[2,57],{59:59,58:60,4:d,5:u,8:U,10:x,12:g,13:f,14:p,18:N,63:E,64:D,65:z,66:w,67:K}),t(h,[2,58],{59:59,58:60,4:d,5:u,8:U,10:x,12:g,13:f,14:p,18:N,63:E,64:D,65:z,66:w,67:K}),t(h,[2,59],{59:59,58:60,4:d,5:u,8:U,10:x,12:g,13:f,14:p,18:N,63:E,64:D,65:z,66:w,67:K}),t(h,[2,60],{59:59,58:60,4:d,5:u,8:U,10:x,12:g,13:f,14:p,18:N,63:E,64:D,65:z,66:w,67:K}),{45:[1,79]},{44:[1,80]},t(R,[2,65]),t(R,[2,81]),t(R,[2,82]),t(R,[2,83]),{3:82,4:B,5:W,6:$,7:Q,8:O,9:X,10:H,11:M,12:Y,13:j,14:G,15:V,18:[1,81]},t(Z,[2,23]),t(Z,[2,1]),t(Z,[2,2]),t(Z,[2,3]),t(Z,[2,4]),t(Z,[2,5]),t(Z,[2,6]),t(Z,[2,7]),t(Z,[2,8]),t(Z,[2,9]),t(Z,[2,10]),t(Z,[2,11]),t(Z,[2,12]),t(h,[2,52],{58:31,43:83,4:d,5:u,10:x,12:g,13:f,14:p,60:v,61:I,63:E,64:D,65:z,66:w,67:K}),t(h,[2,55],{58:31,43:84,4:d,5:u,10:x,12:g,13:f,14:p,60:v,61:I,63:E,64:D,65:z,66:w,67:K}),{46:[1,85]},{45:[1,86]},{4:J,5:tt,6:et,8:it,11:at,13:nt,16:89,17:st,18:rt,19:ot,20:lt,22:88,23:87},t(Z,[2,24]),t(h,[2,51],{59:59,58:60,4:d,5:u,8:U,10:x,12:g,13:f,14:p,18:N,63:E,64:D,65:z,66:w,67:K}),t(h,[2,54],{59:59,58:60,4:d,5:u,8:U,10:x,12:g,13:f,14:p,18:N,63:E,64:D,65:z,66:w,67:K}),t(h,[2,47],{22:88,16:89,23:100,4:J,5:tt,6:et,8:it,11:at,13:nt,17:st,18:rt,19:ot,20:lt}),{46:[1,101]},t(h,[2,29],{10:ht}),t(ct,[2,27],{16:103,4:J,5:tt,6:et,8:it,11:at,13:nt,17:st,18:rt,19:ot,20:lt}),t(dt,[2,25]),t(dt,[2,13]),t(dt,[2,14]),t(dt,[2,15]),t(dt,[2,16]),t(dt,[2,17]),t(dt,[2,18]),t(dt,[2,19]),t(dt,[2,20]),t(dt,[2,21]),t(dt,[2,22]),t(h,[2,49],{10:ht}),t(h,[2,48],{22:88,16:89,23:104,4:J,5:tt,6:et,8:it,11:at,13:nt,17:st,18:rt,19:ot,20:lt}),{4:J,5:tt,6:et,8:it,11:at,13:nt,16:89,17:st,18:rt,19:ot,20:lt,22:105},t(dt,[2,26]),t(h,[2,50],{10:ht}),t(ct,[2,28],{16:103,4:J,5:tt,6:et,8:it,11:at,13:nt,17:st,18:rt,19:ot,20:lt})],defaultActions:{8:[2,30],9:[2,31]},parseError:(0,n.K2)((function(t,e){if(!e.recoverable){var i=new Error(t);throw i.hash=e,i}this.trace(t)}),"parseError"),parse:(0,n.K2)((function(t){var e=this,i=[0],a=[],s=[null],r=[],o=this.table,l="",h=0,c=0,d=0,u=r.slice.call(arguments,1),x=Object.create(this.lexer),g={yy:{}};for(var f in this.yy)Object.prototype.hasOwnProperty.call(this.yy,f)&&(g.yy[f]=this.yy[f]);x.setInput(t,g.yy),g.yy.lexer=x,g.yy.parser=this,void 0===x.yylloc&&(x.yylloc={});var p=x.yylloc;r.push(p);var y=x.options&&x.options.ranges;function T(){var t;return"number"!=typeof(t=a.pop()||x.lex()||1)&&(t instanceof Array&&(t=(a=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,n.K2)((function(t){i.length=i.length-2*t,s.length=s.length-t,r.length=r.length-t}),"popStack"),(0,n.K2)(T,"lex");for(var m,q,A,_,b,S,k,F,P,C={};;){if(A=i[i.length-1],this.defaultActions[A]?_=this.defaultActions[A]:(null==m&&(m=T()),_=o[A]&&o[A][m]),void 0===_||!_.length||!_[0]){var L="";for(S in P=[],o[A])this.terminals_[S]&&S>2&&P.push("'"+this.terminals_[S]+"'");L=x.showPosition?"Parse error on line "+(h+1)+":\n"+x.showPosition()+"\nExpecting "+P.join(", ")+", got '"+(this.terminals_[m]||m)+"'":"Parse error on line "+(h+1)+": Unexpected "+(1==m?"end of input":"'"+(this.terminals_[m]||m)+"'"),this.parseError(L,{text:x.match,token:this.terminals_[m]||m,line:x.yylineno,loc:p,expected:P})}if(_[0]instanceof Array&&_.length>1)throw new Error("Parse Error: multiple actions possible at state: "+A+", token: "+m);switch(_[0]){case 1:i.push(m),s.push(x.yytext),r.push(x.yylloc),i.push(_[1]),m=null,q?(m=q,q=null):(c=x.yyleng,l=x.yytext,h=x.yylineno,p=x.yylloc,d>0&&d--);break;case 2:if(k=this.productions_[_[1]][1],C.$=s[s.length-k],C._$={first_line:r[r.length-(k||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-(k||1)].first_column,last_column:r[r.length-1].last_column},y&&(C._$.range=[r[r.length-(k||1)].range[0],r[r.length-1].range[1]]),void 0!==(b=this.performAction.apply(C,[l,c,h,g.yy,_[1],s,r].concat(u))))return b;k&&(i=i.slice(0,-1*k*2),s=s.slice(0,-1*k),r=r.slice(0,-1*k)),i.push(this.productions_[_[1]][0]),s.push(C.$),r.push(C._$),F=o[i[i.length-2]][i[i.length-1]],i.push(F);break;case 3:return!0}}return!0}),"parse")},xt=function(){return{EOF:1,parseError:(0,n.K2)((function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)}),"parseError"),setInput:(0,n.K2)((function(t,e){return this.yy=e||this.yy||{},this._input=t,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:(0,n.K2)((function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t}),"input"),unput:(0,n.K2)((function(t){var e=t.length,i=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;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),i.length-1&&(this.yylineno-=i.length-1);var n=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:i?(i.length===a.length?this.yylloc.first_column:0)+a[a.length-i.length].length-i[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[n[0],n[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this}),"unput"),more:(0,n.K2)((function(){return this._more=!0,this}),"more"),reject:(0,n.K2)((function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):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).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})}),"reject"),less:(0,n.K2)((function(t){this.unput(this.match.slice(t))}),"less"),pastInput:(0,n.K2)((function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")}),"pastInput"),upcomingInput:(0,n.K2)((function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")}),"upcomingInput"),showPosition:(0,n.K2)((function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"}),"showPosition"),test_match:(0,n.K2)((function(t,e){var i,a,n;if(this.options.backtrack_lexer&&(n={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&&(n.yylloc.range=this.yylloc.range.slice(0))),(a=t[0].match(/(?:\r\n?|\n).*/g))&&(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+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,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(t[0].length),this.matched+=t[0],i=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),i)return i;if(this._backtrack){for(var s in n)this[s]=n[s];return!1}return!1}),"test_match"),next:(0,n.K2)((function(){if(this.done)return this.EOF;var t,e,i,a;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var n=this._currentRules(),s=0;se[0].length)){if(e=i,a=s,this.options.backtrack_lexer){if(!1!==(t=this.test_match(i,n[s])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,n[a]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})}),"next"),lex:(0,n.K2)((function(){var t=this.next();return t||this.lex()}),"lex"),begin:(0,n.K2)((function(t){this.conditionStack.push(t)}),"begin"),popState:(0,n.K2)((function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]}),"popState"),_currentRules:(0,n.K2)((function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules}),"_currentRules"),topState:(0,n.K2)((function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"}),"topState"),pushState:(0,n.K2)((function(t){this.begin(t)}),"pushState"),stateStackSize:(0,n.K2)((function(){return this.conditionStack.length}),"stateStackSize"),options:{"case-insensitive":!0},performAction:(0,n.K2)((function(t,e,i,a){switch(i){case 0:case 1:case 3:break;case 2:return 55;case 4:return this.begin("title"),35;case 5:return this.popState(),"title_value";case 6:return this.begin("acc_title"),37;case 7:return this.popState(),"acc_title_value";case 8:return this.begin("acc_descr"),39;case 9:return this.popState(),"acc_descr_value";case 10:this.begin("acc_descr_multiline");break;case 11:case 23:case 25:case 31:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:return 48;case 14:return 50;case 15:return 49;case 16:return 51;case 17:return 52;case 18:return 53;case 19:return 54;case 20:return 25;case 21:this.begin("md_string");break;case 22:return"MD_STR";case 24:this.begin("string");break;case 26:return"STR";case 27:this.begin("class_name");break;case 28:return this.popState(),47;case 29:return this.begin("point_start"),44;case 30:return this.begin("point_x"),45;case 32:this.popState(),this.begin("point_y");break;case 33:return this.popState(),46;case 34:return 28;case 35:return 4;case 36:return 11;case 37:return 64;case 38:return 10;case 39:case 40:return 65;case 41:return 14;case 42:return 13;case 43:return 67;case 44:return 66;case 45:return 12;case 46:return 8;case 47:return 5;case 48:return 18;case 49:return 56;case 50:return 63;case 51:return 57}}),"anonymous"),rules:[/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:title\b)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?: *x-axis *)/i,/^(?: *y-axis *)/i,/^(?: *--+> *)/i,/^(?: *quadrant-1 *)/i,/^(?: *quadrant-2 *)/i,/^(?: *quadrant-3 *)/i,/^(?: *quadrant-4 *)/i,/^(?:classDef\b)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?::::)/i,/^(?:^\w+)/i,/^(?:\s*:\s*\[\s*)/i,/^(?:(1)|(0(.\d+)?))/i,/^(?:\s*\] *)/i,/^(?:\s*,\s*)/i,/^(?:(1)|(0(.\d+)?))/i,/^(?: *quadrantChart *)/i,/^(?:[A-Za-z]+)/i,/^(?::)/i,/^(?:\+)/i,/^(?:,)/i,/^(?:=)/i,/^(?:=)/i,/^(?:\*)/i,/^(?:#)/i,/^(?:[\_])/i,/^(?:\.)/i,/^(?:&)/i,/^(?:-)/i,/^(?:[0-9]+)/i,/^(?:\s)/i,/^(?:;)/i,/^(?:[!"#$%&'*+,-.`?\\_/])/i,/^(?:$)/i],conditions:{class_name:{rules:[28],inclusive:!1},point_y:{rules:[33],inclusive:!1},point_x:{rules:[32],inclusive:!1},point_start:{rules:[30,31],inclusive:!1},acc_descr_multiline:{rules:[11,12],inclusive:!1},acc_descr:{rules:[9],inclusive:!1},acc_title:{rules:[7],inclusive:!1},title:{rules:[5],inclusive:!1},md_string:{rules:[22,23],inclusive:!1},string:{rules:[25,26],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,6,8,10,13,14,15,16,17,18,19,20,21,24,27,29,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],inclusive:!0}}}}();function gt(){this.yy={}}return ut.lexer=xt,(0,n.K2)(gt,"Parser"),gt.prototype=ut,ut.Parser=gt,new gt}();r.parser=r;var o=r,l=(0,a.P$)(),h=class{constructor(){this.classes=new Map,this.config=this.getDefaultConfig(),this.themeConfig=this.getDefaultThemeConfig(),this.data=this.getDefaultData()}static{(0,n.K2)(this,"QuadrantBuilder")}getDefaultData(){return{titleText:"",quadrant1Text:"",quadrant2Text:"",quadrant3Text:"",quadrant4Text:"",xAxisLeftText:"",xAxisRightText:"",yAxisBottomText:"",yAxisTopText:"",points:[]}}getDefaultConfig(){return{showXAxis:!0,showYAxis:!0,showTitle:!0,chartHeight:a.UI.quadrantChart?.chartWidth||500,chartWidth:a.UI.quadrantChart?.chartHeight||500,titlePadding:a.UI.quadrantChart?.titlePadding||10,titleFontSize:a.UI.quadrantChart?.titleFontSize||20,quadrantPadding:a.UI.quadrantChart?.quadrantPadding||5,xAxisLabelPadding:a.UI.quadrantChart?.xAxisLabelPadding||5,yAxisLabelPadding:a.UI.quadrantChart?.yAxisLabelPadding||5,xAxisLabelFontSize:a.UI.quadrantChart?.xAxisLabelFontSize||16,yAxisLabelFontSize:a.UI.quadrantChart?.yAxisLabelFontSize||16,quadrantLabelFontSize:a.UI.quadrantChart?.quadrantLabelFontSize||16,quadrantTextTopPadding:a.UI.quadrantChart?.quadrantTextTopPadding||5,pointTextPadding:a.UI.quadrantChart?.pointTextPadding||5,pointLabelFontSize:a.UI.quadrantChart?.pointLabelFontSize||12,pointRadius:a.UI.quadrantChart?.pointRadius||5,xAxisPosition:a.UI.quadrantChart?.xAxisPosition||"top",yAxisPosition:a.UI.quadrantChart?.yAxisPosition||"left",quadrantInternalBorderStrokeWidth:a.UI.quadrantChart?.quadrantInternalBorderStrokeWidth||1,quadrantExternalBorderStrokeWidth:a.UI.quadrantChart?.quadrantExternalBorderStrokeWidth||2}}getDefaultThemeConfig(){return{quadrant1Fill:l.quadrant1Fill,quadrant2Fill:l.quadrant2Fill,quadrant3Fill:l.quadrant3Fill,quadrant4Fill:l.quadrant4Fill,quadrant1TextFill:l.quadrant1TextFill,quadrant2TextFill:l.quadrant2TextFill,quadrant3TextFill:l.quadrant3TextFill,quadrant4TextFill:l.quadrant4TextFill,quadrantPointFill:l.quadrantPointFill,quadrantPointTextFill:l.quadrantPointTextFill,quadrantXAxisTextFill:l.quadrantXAxisTextFill,quadrantYAxisTextFill:l.quadrantYAxisTextFill,quadrantTitleFill:l.quadrantTitleFill,quadrantInternalBorderStrokeFill:l.quadrantInternalBorderStrokeFill,quadrantExternalBorderStrokeFill:l.quadrantExternalBorderStrokeFill}}clear(){this.config=this.getDefaultConfig(),this.themeConfig=this.getDefaultThemeConfig(),this.data=this.getDefaultData(),this.classes=new Map,n.Rm.info("clear called")}setData(t){this.data={...this.data,...t}}addPoints(t){this.data.points=[...t,...this.data.points]}addClass(t,e){this.classes.set(t,e)}setConfig(t){n.Rm.trace("setConfig called with: ",t),this.config={...this.config,...t}}setThemeConfig(t){n.Rm.trace("setThemeConfig called with: ",t),this.themeConfig={...this.themeConfig,...t}}calculateSpace(t,e,i,a){const n=2*this.config.xAxisLabelPadding+this.config.xAxisLabelFontSize,s={top:"top"===t&&e?n:0,bottom:"bottom"===t&&e?n:0},r=2*this.config.yAxisLabelPadding+this.config.yAxisLabelFontSize,o={left:"left"===this.config.yAxisPosition&&i?r:0,right:"right"===this.config.yAxisPosition&&i?r:0},l=this.config.titleFontSize+2*this.config.titlePadding,h={top:a?l:0},c=this.config.quadrantPadding+o.left,d=this.config.quadrantPadding+s.top+h.top,u=this.config.chartWidth-2*this.config.quadrantPadding-o.left-o.right,x=this.config.chartHeight-2*this.config.quadrantPadding-s.top-s.bottom-h.top;return{xAxisSpace:s,yAxisSpace:o,titleSpace:h,quadrantSpace:{quadrantLeft:c,quadrantTop:d,quadrantWidth:u,quadrantHalfWidth:u/2,quadrantHeight:x,quadrantHalfHeight:x/2}}}getAxisLabels(t,e,i,a){const{quadrantSpace:n,titleSpace:s}=a,{quadrantHalfHeight:r,quadrantHeight:o,quadrantLeft:l,quadrantHalfWidth:h,quadrantTop:c,quadrantWidth:d}=n,u=Boolean(this.data.xAxisRightText),x=Boolean(this.data.yAxisTopText),g=[];return this.data.xAxisLeftText&&e&&g.push({text:this.data.xAxisLeftText,fill:this.themeConfig.quadrantXAxisTextFill,x:l+(u?h/2:0),y:"top"===t?this.config.xAxisLabelPadding+s.top:this.config.xAxisLabelPadding+c+o+this.config.quadrantPadding,fontSize:this.config.xAxisLabelFontSize,verticalPos:u?"center":"left",horizontalPos:"top",rotation:0}),this.data.xAxisRightText&&e&&g.push({text:this.data.xAxisRightText,fill:this.themeConfig.quadrantXAxisTextFill,x:l+h+(u?h/2:0),y:"top"===t?this.config.xAxisLabelPadding+s.top:this.config.xAxisLabelPadding+c+o+this.config.quadrantPadding,fontSize:this.config.xAxisLabelFontSize,verticalPos:u?"center":"left",horizontalPos:"top",rotation:0}),this.data.yAxisBottomText&&i&&g.push({text:this.data.yAxisBottomText,fill:this.themeConfig.quadrantYAxisTextFill,x:"left"===this.config.yAxisPosition?this.config.yAxisLabelPadding:this.config.yAxisLabelPadding+l+d+this.config.quadrantPadding,y:c+o-(x?r/2:0),fontSize:this.config.yAxisLabelFontSize,verticalPos:x?"center":"left",horizontalPos:"top",rotation:-90}),this.data.yAxisTopText&&i&&g.push({text:this.data.yAxisTopText,fill:this.themeConfig.quadrantYAxisTextFill,x:"left"===this.config.yAxisPosition?this.config.yAxisLabelPadding:this.config.yAxisLabelPadding+l+d+this.config.quadrantPadding,y:c+r-(x?r/2:0),fontSize:this.config.yAxisLabelFontSize,verticalPos:x?"center":"left",horizontalPos:"top",rotation:-90}),g}getQuadrants(t){const{quadrantSpace:e}=t,{quadrantHalfHeight:i,quadrantLeft:a,quadrantHalfWidth:n,quadrantTop:s}=e,r=[{text:{text:this.data.quadrant1Text,fill:this.themeConfig.quadrant1TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:a+n,y:s,width:n,height:i,fill:this.themeConfig.quadrant1Fill},{text:{text:this.data.quadrant2Text,fill:this.themeConfig.quadrant2TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:a,y:s,width:n,height:i,fill:this.themeConfig.quadrant2Fill},{text:{text:this.data.quadrant3Text,fill:this.themeConfig.quadrant3TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:a,y:s+i,width:n,height:i,fill:this.themeConfig.quadrant3Fill},{text:{text:this.data.quadrant4Text,fill:this.themeConfig.quadrant4TextFill,x:0,y:0,fontSize:this.config.quadrantLabelFontSize,verticalPos:"center",horizontalPos:"middle",rotation:0},x:a+n,y:s+i,width:n,height:i,fill:this.themeConfig.quadrant4Fill}];for(const o of r)o.text.x=o.x+o.width/2,0===this.data.points.length?(o.text.y=o.y+o.height/2,o.text.horizontalPos="middle"):(o.text.y=o.y+this.config.quadrantTextTopPadding,o.text.horizontalPos="top");return r}getQuadrantPoints(t){const{quadrantSpace:e}=t,{quadrantHeight:i,quadrantLeft:a,quadrantTop:n,quadrantWidth:r}=e,o=(0,s.m4Y)().domain([0,1]).range([a,r+a]),l=(0,s.m4Y)().domain([0,1]).range([i+n,n]);return this.data.points.map((t=>{const e=this.classes.get(t.className);e&&(t={...e,...t});return{x:o(t.x),y:l(t.y),fill:t.color??this.themeConfig.quadrantPointFill,radius:t.radius??this.config.pointRadius,text:{text:t.text,fill:this.themeConfig.quadrantPointTextFill,x:o(t.x),y:l(t.y)+this.config.pointTextPadding,verticalPos:"center",horizontalPos:"top",fontSize:this.config.pointLabelFontSize,rotation:0},strokeColor:t.strokeColor??this.themeConfig.quadrantPointFill,strokeWidth:t.strokeWidth??"0px"}}))}getBorders(t){const e=this.config.quadrantExternalBorderStrokeWidth/2,{quadrantSpace:i}=t,{quadrantHalfHeight:a,quadrantHeight:n,quadrantLeft:s,quadrantHalfWidth:r,quadrantTop:o,quadrantWidth:l}=i;return[{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s-e,y1:o,x2:s+l+e,y2:o},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s+l,y1:o+e,x2:s+l,y2:o+n-e},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s-e,y1:o+n,x2:s+l+e,y2:o+n},{strokeFill:this.themeConfig.quadrantExternalBorderStrokeFill,strokeWidth:this.config.quadrantExternalBorderStrokeWidth,x1:s,y1:o+e,x2:s,y2:o+n-e},{strokeFill:this.themeConfig.quadrantInternalBorderStrokeFill,strokeWidth:this.config.quadrantInternalBorderStrokeWidth,x1:s+r,y1:o+e,x2:s+r,y2:o+n-e},{strokeFill:this.themeConfig.quadrantInternalBorderStrokeFill,strokeWidth:this.config.quadrantInternalBorderStrokeWidth,x1:s+e,y1:o+a,x2:s+l-e,y2:o+a}]}getTitle(t){if(t)return{text:this.data.titleText,fill:this.themeConfig.quadrantTitleFill,fontSize:this.config.titleFontSize,horizontalPos:"top",verticalPos:"center",rotation:0,y:this.config.titlePadding,x:this.config.chartWidth/2}}build(){const t=this.config.showXAxis&&!(!this.data.xAxisLeftText&&!this.data.xAxisRightText),e=this.config.showYAxis&&!(!this.data.yAxisTopText&&!this.data.yAxisBottomText),i=this.config.showTitle&&!!this.data.titleText,a=this.data.points.length>0?"bottom":this.config.xAxisPosition,n=this.calculateSpace(a,t,e,i);return{points:this.getQuadrantPoints(n),quadrants:this.getQuadrants(n),axisLabels:this.getAxisLabels(a,t,e,n),borderLines:this.getBorders(n),title:this.getTitle(i)}}},c=class extends Error{static{(0,n.K2)(this,"InvalidStyleError")}constructor(t,e,i){super(`value for ${t} ${e} is invalid, please use a valid ${i}`),this.name="InvalidStyleError"}};function d(t){return!/^#?([\dA-Fa-f]{6}|[\dA-Fa-f]{3})$/.test(t)}function u(t){return!/^\d+$/.test(t)}function x(t){return!/^\d+px$/.test(t)}(0,n.K2)(d,"validateHexCode"),(0,n.K2)(u,"validateNumber"),(0,n.K2)(x,"validateSizeInPixels");var g=(0,a.D7)();function f(t){return(0,a.jZ)(t.trim(),g)}(0,n.K2)(f,"textSanitizer");var p=new h;function y(t){p.setData({quadrant1Text:f(t.text)})}function T(t){p.setData({quadrant2Text:f(t.text)})}function m(t){p.setData({quadrant3Text:f(t.text)})}function q(t){p.setData({quadrant4Text:f(t.text)})}function A(t){p.setData({xAxisLeftText:f(t.text)})}function _(t){p.setData({xAxisRightText:f(t.text)})}function b(t){p.setData({yAxisTopText:f(t.text)})}function S(t){p.setData({yAxisBottomText:f(t.text)})}function k(t){const e={};for(const i of t){const[t,a]=i.trim().split(/\s*:\s*/);if("radius"===t){if(u(a))throw new c(t,a,"number");e.radius=parseInt(a)}else if("color"===t){if(d(a))throw new c(t,a,"hex code");e.color=a}else if("stroke-color"===t){if(d(a))throw new c(t,a,"hex code");e.strokeColor=a}else{if("stroke-width"!==t)throw new Error(`style named ${t} is not supported.`);if(x(a))throw new c(t,a,"number of pixels (eg. 10px)");e.strokeWidth=a}}return e}function F(t,e,i,a,n){const s=k(n);p.addPoints([{x:i,y:a,text:f(t.text),className:e,...s}])}function P(t,e){p.addClass(t,k(e))}function C(t){p.setConfig({chartWidth:t})}function L(t){p.setConfig({chartHeight:t})}function v(){const t=(0,a.D7)(),{themeVariables:e,quadrantChart:i}=t;return i&&p.setConfig(i),p.setThemeConfig({quadrant1Fill:e.quadrant1Fill,quadrant2Fill:e.quadrant2Fill,quadrant3Fill:e.quadrant3Fill,quadrant4Fill:e.quadrant4Fill,quadrant1TextFill:e.quadrant1TextFill,quadrant2TextFill:e.quadrant2TextFill,quadrant3TextFill:e.quadrant3TextFill,quadrant4TextFill:e.quadrant4TextFill,quadrantPointFill:e.quadrantPointFill,quadrantPointTextFill:e.quadrantPointTextFill,quadrantXAxisTextFill:e.quadrantXAxisTextFill,quadrantYAxisTextFill:e.quadrantYAxisTextFill,quadrantExternalBorderStrokeFill:e.quadrantExternalBorderStrokeFill,quadrantInternalBorderStrokeFill:e.quadrantInternalBorderStrokeFill,quadrantTitleFill:e.quadrantTitleFill}),p.setData({titleText:(0,a.ab)()}),p.build()}(0,n.K2)(y,"setQuadrant1Text"),(0,n.K2)(T,"setQuadrant2Text"),(0,n.K2)(m,"setQuadrant3Text"),(0,n.K2)(q,"setQuadrant4Text"),(0,n.K2)(A,"setXAxisLeftText"),(0,n.K2)(_,"setXAxisRightText"),(0,n.K2)(b,"setYAxisTopText"),(0,n.K2)(S,"setYAxisBottomText"),(0,n.K2)(k,"parseStyles"),(0,n.K2)(F,"addPoint"),(0,n.K2)(P,"addClass"),(0,n.K2)(C,"setWidth"),(0,n.K2)(L,"setHeight"),(0,n.K2)(v,"getQuadrantData");var I={parser:o,db:{setWidth:C,setHeight:L,setQuadrant1Text:y,setQuadrant2Text:T,setQuadrant3Text:m,setQuadrant4Text:q,setXAxisLeftText:A,setXAxisRightText:_,setYAxisTopText:b,setYAxisBottomText:S,parseStyles:k,addPoint:F,addClass:P,getQuadrantData:v,clear:(0,n.K2)((function(){p.clear(),(0,a.IU)()}),"clear"),setAccTitle:a.SV,getAccTitle:a.iN,setDiagramTitle:a.ke,getDiagramTitle:a.ab,getAccDescription:a.m7,setAccDescription:a.EI},renderer:{draw:(0,n.K2)(((t,e,i,r)=>{function o(t){return"top"===t?"hanging":"middle"}function l(t){return"left"===t?"start":"middle"}function h(t){return`translate(${t.x}, ${t.y}) rotate(${t.rotation||0})`}(0,n.K2)(o,"getDominantBaseLine"),(0,n.K2)(l,"getTextAnchor"),(0,n.K2)(h,"getTransformation");const c=(0,a.D7)();n.Rm.debug("Rendering quadrant chart\n"+t);const d=c.securityLevel;let u;"sandbox"===d&&(u=(0,s.Ltv)("#i"+e));const x=("sandbox"===d?(0,s.Ltv)(u.nodes()[0].contentDocument.body):(0,s.Ltv)("body")).select(`[id="${e}"]`),g=x.append("g").attr("class","main"),f=c.quadrantChart?.chartWidth??500,p=c.quadrantChart?.chartHeight??500;(0,a.a$)(x,p,f,c.quadrantChart?.useMaxWidth??!0),x.attr("viewBox","0 0 "+f+" "+p),r.db.setHeight(p),r.db.setWidth(f);const y=r.db.getQuadrantData(),T=g.append("g").attr("class","quadrants"),m=g.append("g").attr("class","border"),q=g.append("g").attr("class","data-points"),A=g.append("g").attr("class","labels"),_=g.append("g").attr("class","title");y.title&&_.append("text").attr("x",0).attr("y",0).attr("fill",y.title.fill).attr("font-size",y.title.fontSize).attr("dominant-baseline",o(y.title.horizontalPos)).attr("text-anchor",l(y.title.verticalPos)).attr("transform",h(y.title)).text(y.title.text),y.borderLines&&m.selectAll("line").data(y.borderLines).enter().append("line").attr("x1",(t=>t.x1)).attr("y1",(t=>t.y1)).attr("x2",(t=>t.x2)).attr("y2",(t=>t.y2)).style("stroke",(t=>t.strokeFill)).style("stroke-width",(t=>t.strokeWidth));const b=T.selectAll("g.quadrant").data(y.quadrants).enter().append("g").attr("class","quadrant");b.append("rect").attr("x",(t=>t.x)).attr("y",(t=>t.y)).attr("width",(t=>t.width)).attr("height",(t=>t.height)).attr("fill",(t=>t.fill)),b.append("text").attr("x",0).attr("y",0).attr("fill",(t=>t.text.fill)).attr("font-size",(t=>t.text.fontSize)).attr("dominant-baseline",(t=>o(t.text.horizontalPos))).attr("text-anchor",(t=>l(t.text.verticalPos))).attr("transform",(t=>h(t.text))).text((t=>t.text.text));A.selectAll("g.label").data(y.axisLabels).enter().append("g").attr("class","label").append("text").attr("x",0).attr("y",0).text((t=>t.text)).attr("fill",(t=>t.fill)).attr("font-size",(t=>t.fontSize)).attr("dominant-baseline",(t=>o(t.horizontalPos))).attr("text-anchor",(t=>l(t.verticalPos))).attr("transform",(t=>h(t)));const S=q.selectAll("g.data-point").data(y.points).enter().append("g").attr("class","data-point");S.append("circle").attr("cx",(t=>t.x)).attr("cy",(t=>t.y)).attr("r",(t=>t.radius)).attr("fill",(t=>t.fill)).attr("stroke",(t=>t.strokeColor)).attr("stroke-width",(t=>t.strokeWidth)),S.append("text").attr("x",0).attr("y",0).text((t=>t.text.text)).attr("fill",(t=>t.text.fill)).attr("font-size",(t=>t.text.fontSize)).attr("dominant-baseline",(t=>o(t.text.horizontalPos))).attr("text-anchor",(t=>l(t.text.verticalPos))).attr("transform",(t=>h(t.text)))}),"draw")},styles:(0,n.K2)((()=>""),"styles")}}}]); \ No newline at end of file diff --git a/assets/js/133732ba.b191e4e7.js b/assets/js/133732ba.b191e4e7.js new file mode 100644 index 00000000..7923dda6 --- /dev/null +++ b/assets/js/133732ba.b191e4e7.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5489],{79990:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>l,contentTitle:()=>s,default:()=>h,frontMatter:()=>d,metadata:()=>o,toc:()=>i});const o=JSON.parse('{"id":"API-Reference/command/KeyboardOverlayMode","title":"KeyboardOverlayMode","description":"Import :","source":"@site/api/API-Reference/command/KeyboardOverlayMode.md","sourceDirName":"API-Reference/command","slug":"/API-Reference/command/KeyboardOverlayMode","permalink":"/api/API-Reference/command/KeyboardOverlayMode","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"KeyBindingManager","permalink":"/api/API-Reference/command/KeyBindingManager"},"next":{"title":"Keys","permalink":"/api/API-Reference/command/Keys"}}');var t=r(74848),a=r(28453);const d={},s=void 0,l={},i=[{value:"Import :",id:"import-",level:3},{value:"EditorManager",id:"editormanager",level:2},{value:"startOverlayMode()",id:"startoverlaymode",level:2},{value:"exitOverlayMode()",id:"exitoverlaymode",level:2},{value:"processOverlayKeyboardEvent(event)",id:"processoverlaykeyboardeventevent",level:2},{value:"isInOverlayMode() \u21d2 boolean",id:"isinoverlaymode--boolean",level:2}];function c(e){const n={br:"br",code:"code",h2:"h2",h3:"h3",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,a.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h3,{id:"import-",children:"Import :"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-js",children:'const KeyboardOverlayMode = brackets.getModule("command/KeyboardOverlayMode")\n'})}),"\n",(0,t.jsx)("a",{name:"EditorManager"}),"\n",(0,t.jsx)(n.h2,{id:"editormanager",children:"EditorManager"}),"\n",(0,t.jsx)(n.p,{children:"This handles the overlay mode"}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,t.jsx)("a",{name:"startOverlayMode"}),"\n",(0,t.jsx)(n.h2,{id:"startoverlaymode",children:"startOverlayMode()"}),"\n",(0,t.jsx)(n.p,{children:"Responsible to start the overlay mode"}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,t.jsx)("a",{name:"exitOverlayMode"}),"\n",(0,t.jsx)(n.h2,{id:"exitoverlaymode",children:"exitOverlayMode()"}),"\n",(0,t.jsx)(n.p,{children:"Responsible to exit the overlay mode.\nrestores focus to previously active pane"}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,t.jsx)("a",{name:"processOverlayKeyboardEvent"}),"\n",(0,t.jsx)(n.h2,{id:"processoverlaykeyboardeventevent",children:"processOverlayKeyboardEvent(event)"}),"\n",(0,t.jsx)(n.p,{children:"Handles the keyboard navigation in overlay mode\nProcess the arrow keys to move between panes, Enter to select a pane, and Escape to exit overlay mode"}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Param"}),(0,t.jsx)(n.th,{children:"Type"})]})}),(0,t.jsx)(n.tbody,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"event"}),(0,t.jsx)(n.td,{children:(0,t.jsx)("code",{children:"KeyboardEvent"})})]})})]}),"\n",(0,t.jsx)("a",{name:"isInOverlayMode"}),"\n",(0,t.jsxs)(n.h2,{id:"isinoverlaymode--boolean",children:["isInOverlayMode() \u21d2 ",(0,t.jsx)("code",{children:"boolean"})]}),"\n",(0,t.jsx)(n.p,{children:"to check whether in overlay mode or not"}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Kind"}),": global function",(0,t.jsx)(n.br,{}),"\n",(0,t.jsx)(n.strong,{children:"Returns"}),": ",(0,t.jsx)("code",{children:"boolean"})," - returns true if in overlay mode otherwise false"]})]})}function h(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(c,{...e})}):c(e)}},28453:(e,n,r)=>{r.d(n,{R:()=>d,x:()=>s});var o=r(96540);const t={},a=o.createContext(t);function d(e){const n=o.useContext(a);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:d(e.components),o.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/13ef489d.e01cda37.js b/assets/js/13ef489d.e01cda37.js new file mode 100644 index 00000000..4347039d --- /dev/null +++ b/assets/js/13ef489d.e01cda37.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7185],{9010:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>d,contentTitle:()=>u,default:()=>v,frontMatter:()=>c,metadata:()=>n,toc:()=>p});const n=JSON.parse('{"id":"Live Preview/php-live-preview","title":"PHP Live Preview Setup","description":"Setting up Live Preview for PHP projects is straightforward with Apache and XAMPP. Below are the installation and configuration steps for each operating system:","source":"@site/docs/02-Live Preview/07-php-live-preview.md","sourceDirName":"02-Live Preview","slug":"/Features/Live Preview/php-live-preview","permalink":"/docs/Features/Live Preview/php-live-preview","draft":false,"unlisted":false,"editUrl":"https://github.com/phcode-dev/docs/blob/main/docs/02-Live Preview/07-php-live-preview.md","tags":[],"version":"current","sidebarPosition":7,"frontMatter":{"title":"PHP Live Preview Setup","slug":"/Features/Live Preview/php-live-preview"},"sidebar":"tutorialSidebar","previous":{"title":"Markdown Editor","permalink":"/docs/Pro Features/markdown-editor"},"next":{"title":"Custom Live Preview Server","permalink":"/docs/Features/Live Preview/live-preview-settings"}}');var i=r(74848),o=r(28453),a=(r(96540),r(56399)),s=r(11470),l=r(19365);const c={title:"PHP Live Preview Setup",slug:"/Features/Live Preview/php-live-preview"},u=void 0,d={},p=[{value:"Steps for Windows",id:"steps-for-windows",level:3},{value:"Steps for Linux",id:"steps-for-linux",level:3},{value:"Steps for macOS",id:"steps-for-macos",level:3},{value:"PHP Live Preview in Action",id:"php-live-preview-in-action",level:2}];function h(e){const t={a:"a",code:"code",em:"em",h2:"h2",h3:"h3",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",...(0,o.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(t.p,{children:["Setting up Live Preview for PHP projects is straightforward with ",(0,i.jsx)(t.em,{children:"Apache"})," and ",(0,i.jsx)(t.em,{children:"XAMPP"}),". Below are the installation and configuration steps for each operating system:"]}),"\n",(0,i.jsxs)(s.A,{defaultValue:"windows",values:[{label:"Windows",value:"windows"},{label:"Linux",value:"linux"},{label:"macOS",value:"macos"}],children:[(0,i.jsxs)(l.A,{value:"windows",children:[(0,i.jsx)(t.h3,{id:"steps-for-windows",children:"Steps for Windows"}),(0,i.jsxs)(t.ol,{children:["\n",(0,i.jsxs)(t.li,{children:["Download and install XAMPP from ",(0,i.jsx)(t.a,{href:"https://www.apachefriends.org/",children:"Apache Friends"}),"."]}),"\n",(0,i.jsx)(t.li,{children:"Open the XAMPP Control Panel."}),"\n",(0,i.jsxs)(t.li,{children:["Modify the ",(0,i.jsx)(t.code,{children:"httpd.conf"})," file located at ",(0,i.jsx)(t.code,{children:"C:\\xampp\\apache\\conf\\httpd.conf"}),":","\n",(0,i.jsx)(t.pre,{children:(0,i.jsx)(t.code,{children:'DocumentRoot "C:/path/to/your/project"\n\n\n'})}),"\n"]}),"\n",(0,i.jsx)(t.li,{children:"Save the updated configuration."}),"\n",(0,i.jsx)(t.li,{children:"Restart the Apache server through the XAMPP Control Panel."}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"linux",children:[(0,i.jsx)(t.h3,{id:"steps-for-linux",children:"Steps for Linux"}),(0,i.jsxs)(t.ol,{children:["\n",(0,i.jsxs)(t.li,{children:["Download and install XAMPP from ",(0,i.jsx)(t.a,{href:"https://www.apachefriends.org/",children:"Apache Friends"}),"."]}),"\n",(0,i.jsxs)(t.li,{children:["Open the XAMPP Control Panel by running ",(0,i.jsx)(t.code,{children:"sudo /opt/lampp/lampp start"})," in your terminal."]}),"\n",(0,i.jsxs)(t.li,{children:["Modify the ",(0,i.jsx)(t.code,{children:"httpd.conf"})," file located at ",(0,i.jsx)(t.code,{children:"/opt/lampp/etc/httpd.conf"}),":","\n",(0,i.jsx)(t.pre,{children:(0,i.jsx)(t.code,{children:'DocumentRoot "/path/to/your/project"\n\n\n'})}),"\n"]}),"\n",(0,i.jsx)(t.li,{children:"Save the updated configuration."}),"\n",(0,i.jsx)(t.li,{children:"Restart the Apache server through the XAMPP Control Panel."}),"\n"]})]}),(0,i.jsxs)(l.A,{value:"macos",children:[(0,i.jsx)(t.h3,{id:"steps-for-macos",children:"Steps for macOS"}),(0,i.jsxs)(t.ol,{children:["\n",(0,i.jsxs)(t.li,{children:["Download and install XAMPP from ",(0,i.jsx)(t.a,{href:"https://www.apachefriends.org/",children:"Apache Friends"}),"."]}),"\n",(0,i.jsx)(t.li,{children:"Open the XAMPP manager from your Applications folder."}),"\n",(0,i.jsxs)(t.li,{children:["Modify the ",(0,i.jsx)(t.code,{children:"httpd.conf"})," file located at ",(0,i.jsx)(t.code,{children:"/Applications/XAMPP/xamppfiles/etc/httpd.conf"}),":","\n",(0,i.jsx)(t.pre,{children:(0,i.jsx)(t.code,{children:'DocumentRoot "/path/to/your/project"\n\n\n'})}),"\n"]}),"\n",(0,i.jsx)(t.li,{children:"Save the updated configuration."}),"\n",(0,i.jsx)(t.li,{children:"Restart the Apache server through the XAMPP Control Panel."}),"\n"]})]})]}),"\n",(0,i.jsxs)(t.ol,{start:"6",children:["\n",(0,i.jsxs)(t.li,{children:["Add the following settings to your custom Live Preview:\n",(0,i.jsx)(t.img,{alt:"Custom Live Preview Settings",src:r(2692).A+"",width:"1368",height:"932"}),"\nYour Live Preview should now automatically update to reflect changes whenever PHP files are edited."]}),"\n"]}),"\n",(0,i.jsx)(t.h2,{id:"php-live-preview-in-action",children:"PHP Live Preview in Action"}),"\n",(0,i.jsx)(a.A,{src:"https://docs-images.phcode.dev/videos/phplp/phplivepreview.mp4"})]})}function v(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(h,{...e})}):h(e)}},19365:(e,t,r)=>{r.d(t,{A:()=>a});r(96540);var n=r(34164);const i={tabItem:"tabItem_Ymn6"};var o=r(74848);function a({children:e,hidden:t,className:r}){return(0,o.jsx)("div",{role:"tabpanel",className:(0,n.A)(i.tabItem,r),hidden:t,children:e})}},11470:(e,t,r)=>{r.d(t,{A:()=>y});var n=r(96540),i=r(34164),o=r(17559),a=r(23104),s=r(56347),l=r(205),c=r(57485),u=r(31682),d=r(70679);function p(e){return n.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,n.isValidElement)(e)&&function(e){const{props:t}=e;return!!t&&"object"==typeof t&&"value"in t}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function h(e){const{values:t,children:r}=e;return(0,n.useMemo)((()=>{const e=t??function(e){return p(e).map((({props:{value:e,label:t,attributes:r,default:n}})=>({value:e,label:t,attributes:r,default:n})))}(r);return function(e){const t=(0,u.XI)(e,((e,t)=>e.value===t.value));if(t.length>0)throw new Error(`Docusaurus error: Duplicate values "${t.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[t,r])}function v({value:e,tabValues:t}){return t.some((t=>t.value===e))}function f({queryString:e=!1,groupId:t}){const r=(0,s.W6)(),i=function({queryString:e=!1,groupId:t}){if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!t)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:e,groupId:t});return[(0,c.aZ)(i),(0,n.useCallback)((e=>{if(!i)return;const t=new URLSearchParams(r.location.search);t.set(i,e),r.replace({...r.location,search:t.toString()})}),[i,r])]}function m(e){const{defaultValue:t,queryString:r=!1,groupId:i}=e,o=h(e),[a,s]=(0,n.useState)((()=>function({defaultValue:e,tabValues:t}){if(0===t.length)throw new Error("Docusaurus error: the component requires at least one children component");if(e){if(!v({value:e,tabValues:t}))throw new Error(`Docusaurus error: The has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}const r=t.find((e=>e.default))??t[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:t,tabValues:o}))),[c,u]=f({queryString:r,groupId:i}),[p,m]=function({groupId:e}){const t=function(e){return e?`docusaurus.tab.${e}`:null}(e),[r,i]=(0,d.Dv)(t);return[r,(0,n.useCallback)((e=>{t&&i.set(e)}),[t,i])]}({groupId:i}),w=(()=>{const e=c??p;return v({value:e,tabValues:o})?e:null})();(0,l.A)((()=>{w&&s(w)}),[w]);return{selectedValue:a,selectValue:(0,n.useCallback)((e=>{if(!v({value:e,tabValues:o}))throw new Error(`Can't select invalid tab value=${e}`);s(e),u(e),m(e)}),[u,m,o]),tabValues:o}}var w=r(92303);const x={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var b=r(74848);function j({className:e,block:t,selectedValue:r,selectValue:n,tabValues:o}){const s=[],{blockElementScrollPositionUntilNextRender:l}=(0,a.a_)(),c=e=>{const t=e.currentTarget,i=s.indexOf(t),a=o[i].value;a!==r&&(l(t),n(a))},u=e=>{let t=null;switch(e.key){case"Enter":c(e);break;case"ArrowRight":{const r=s.indexOf(e.currentTarget)+1;t=s[r]??s[0];break}case"ArrowLeft":{const r=s.indexOf(e.currentTarget)-1;t=s[r]??s[s.length-1];break}}t?.focus()};return(0,b.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.A)("tabs",{"tabs--block":t},e),children:o.map((({value:e,label:t,attributes:n})=>(0,b.jsx)("li",{role:"tab",tabIndex:r===e?0:-1,"aria-selected":r===e,ref:e=>{s.push(e)},onKeyDown:u,onClick:c,...n,className:(0,i.A)("tabs__item",x.tabItem,n?.className,{"tabs__item--active":r===e}),children:t??e},e)))})}function g({lazy:e,children:t,selectedValue:r}){const o=(Array.isArray(t)?t:[t]).filter(Boolean);if(e){const e=o.find((e=>e.props.value===r));return e?(0,n.cloneElement)(e,{className:(0,i.A)("margin-top--md",e.props.className)}):null}return(0,b.jsx)("div",{className:"margin-top--md",children:o.map(((e,t)=>(0,n.cloneElement)(e,{key:t,hidden:e.props.value!==r})))})}function P(e){const t=m(e);return(0,b.jsxs)("div",{className:(0,i.A)(o.G.tabs.container,"tabs-container",x.tabList),children:[(0,b.jsx)(j,{...t,...e}),(0,b.jsx)(g,{...t,...e})]})}function y(e){const t=(0,w.A)();return(0,b.jsx)(P,{...e,children:p(e.children)},String(t))}},56399:(e,t,r)=>{r.d(t,{A:()=>o});var n=r(96540),i=r(74848);const o=({src:e,winLinuxTitle:t,macTitle:r})=>{const[o,a]=(0,n.useState)("");(0,n.useEffect)((()=>{navigator.platform.toLowerCase().includes("mac")?a(r):a(t)}),[t,r]);return(0,i.jsxs)("div",{style:{maxHeight:"68vh",width:"100%",display:"flex",justifyContent:"center",alignItems:"center",flexDirection:"column"},children:[(0,i.jsxs)("video",{style:{height:"90%",width:"100%"},controls:!0,autoPlay:!0,muted:!0,loop:!0,children:[(0,i.jsx)("source",{src:e,type:"video/mp4"}),"Your browser does not support the video tag."]}),(0,i.jsx)("div",{style:{width:"100%",textAlign:"center",fontSize:"1em",marginTop:"10px"},children:o})]})}},2692:(e,t,r)=>{r.d(t,{A:()=>n});const n=r.p+"assets/images/phpCustomServer-23ae891bea40924e86bafd7273ac64b3.png"},28453:(e,t,r)=>{r.d(t,{R:()=>a,x:()=>s});var n=r(96540);const i={},o=n.createContext(i);function a(e){const t=n.useContext(o);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function s(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),n.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/152e41eb.72bc1f42.js b/assets/js/152e41eb.72bc1f42.js new file mode 100644 index 00000000..dddbae15 --- /dev/null +++ b/assets/js/152e41eb.72bc1f42.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4414],{11928:a=>{a.exports=JSON.parse('{"tag":{"label":"Claude Code","permalink":"/blog/tags/claude-code","allTagsPath":"/blog/tags","count":1,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/claude-code","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]); \ No newline at end of file diff --git a/assets/js/165.48c76e4e.js b/assets/js/165.48c76e4e.js new file mode 100644 index 00000000..615fa3da --- /dev/null +++ b/assets/js/165.48c76e4e.js @@ -0,0 +1,2 @@ +/*! For license information please see 165.48c76e4e.js.LICENSE.txt */ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[165],{90165:(e,t,n)=>{function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,o=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return o=e.done,e},e:function(e){s=!0,i=e},f:function(){try{o||null==n.return||n.return()}finally{if(s)throw i}}}}function s(e,t,n){return(t=c(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,i,o,s=[],l=!0,u=!1;try{if(i=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;l=!1}else for(;!(l=(r=i.call(n)).done)&&(s.push(r.value),s.length!==t);l=!0);}catch(e){u=!0,a=e}finally{try{if(!l&&null!=n.return&&(o=n.return(),Object(o)!==o))return}finally{if(u)throw a}}return s}}(e,t)||h(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function u(e){return function(e){if(Array.isArray(e))return r(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||h(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function c(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t);if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"==typeof t?t:t+""}function d(e){return d="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},d(e)}function h(e,t){if(e){if("string"==typeof e)return r(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?r(e,t):void 0}}n.d(t,{A:()=>Hh});var f="undefined"==typeof window?null:window,p=f?f.navigator:null;f&&f.document;var v,g,y,m,b,x,w,E,k,T,C,P,S,B,D,_,A,M,R,I,N,L,z,O,V,F,X,j,Y=d(""),q=d({}),W=d((function(){})),U="undefined"==typeof HTMLElement?"undefined":d(HTMLElement),H=function(e){return e&&e.instanceString&&G(e.instanceString)?e.instanceString():null},K=function(e){return null!=e&&d(e)==Y},G=function(e){return null!=e&&d(e)===W},Z=function(e){return!ee(e)&&(Array.isArray?Array.isArray(e):null!=e&&e instanceof Array)},$=function(e){return null!=e&&d(e)===q&&!Z(e)&&e.constructor===Object},Q=function(e){return null!=e&&d(e)===d(1)&&!isNaN(e)},J=function(e){return"undefined"===U?void 0:null!=e&&e instanceof HTMLElement},ee=function(e){return te(e)||ne(e)},te=function(e){return"collection"===H(e)&&e._private.single},ne=function(e){return"collection"===H(e)&&!e._private.single},re=function(e){return"core"===H(e)},ae=function(e){return"stylesheet"===H(e)},ie=function(e){return null==e||!(""!==e&&!e.match(/^\s+$/))},oe=function(e){return function(e){return null!=e&&d(e)===q}(e)&&G(e.then)},se=function(e,t){t||(t=function(){if(1===arguments.length)return arguments[0];if(0===arguments.length)return"undefined";for(var e=[],t=0;tt?1:0},be=null!=Object.assign?Object.assign.bind(Object):function(e){for(var t=arguments,n=1;n255)return;t.push(Math.floor(i))}var o=r[1]||r[2]||r[3],s=r[1]&&r[2]&&r[3];if(o&&!s)return;var l=n[4];if(void 0!==l){if((l=parseFloat(l))<0||l>1)return;t.push(l)}}return t}(e)||function(e){var t,n,r,a,i,o,s,l;function u(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+6*(t-e)*n:n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e}var c=new RegExp("^"+ge+"$").exec(e);if(c){if((n=parseInt(c[1]))<0?n=(360- -1*n%360)%360:n>360&&(n%=360),n/=360,(r=parseFloat(c[2]))<0||r>100)return;if(r/=100,(a=parseFloat(c[3]))<0||a>100)return;if(a/=100,void 0!==(i=c[4])&&((i=parseFloat(i))<0||i>1))return;if(0===r)o=s=l=Math.round(255*a);else{var d=a<.5?a*(1+r):a+r-a*r,h=2*a-d;o=Math.round(255*u(h,d,n+1/3)),s=Math.round(255*u(h,d,n)),l=Math.round(255*u(h,d,n-1/3))}t=[o,s,l,i]}return t}(e)},we={transparent:[0,0,0,0],aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],grey:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},Ee=function(e){for(var t=e.map,n=e.keys,r=n.length,a=0;a=o||t<0||g&&e-p>=c}function x(){var e=t();if(b(e))return w(e);h=setTimeout(x,function(e){var t=o-(e-f);return g?a(t,c-(e-p)):t}(e))}function w(e){return h=void 0,y&&l?m(e):(l=u=void 0,d)}function E(){var e=t(),n=b(e);if(l=arguments,u=this,f=e,n){if(void 0===h)return function(e){return p=e,h=setTimeout(x,o),v?m(e):d}(f);if(g)return clearTimeout(h),h=setTimeout(x,o),m(f)}return void 0===h&&(h=setTimeout(x,o)),d}return o=n(o)||0,e(s)&&(v=!!s.leading,c=(g="maxWait"in s)?r(n(s.maxWait)||0,o):c,y="trailing"in s?!!s.trailing:y),E.cancel=function(){void 0!==h&&clearTimeout(h),p=0,l=f=u=h=void 0},E.flush=function(){return void 0===h?d:w(t())},E}}()),Re=f?f.performance:null,Ie=Re&&Re.now?function(){return Re.now()}:function(){return Date.now()},Ne=function(){if(f){if(f.requestAnimationFrame)return function(e){f.requestAnimationFrame(e)};if(f.mozRequestAnimationFrame)return function(e){f.mozRequestAnimationFrame(e)};if(f.webkitRequestAnimationFrame)return function(e){f.webkitRequestAnimationFrame(e)};if(f.msRequestAnimationFrame)return function(e){f.msRequestAnimationFrame(e)}}return function(e){e&&setTimeout((function(){e(Ie())}),1e3/60)}}(),Le=function(e){return Ne(e)},ze=Ie,Oe=9261,Ve=5381,Fe=function(e){for(var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Oe;!(t=e.next()).done;)n=65599*n+t.value|0;return n},Xe=function(e){return 65599*(arguments.length>1&&void 0!==arguments[1]?arguments[1]:Oe)+e|0},je=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Ve;return(t<<5)+t+e|0},Ye=function(e){return 2097152*e[0]+e[1]},qe=function(e,t){return[Xe(e[0],t[0]),je(e[1],t[1])]},We=function(e,t){var n={value:0,done:!1},r=0,a=e.length;return Fe({next:function(){return r=0;r--)e[r]===t&&e.splice(r,1)},ft=function(e){e.splice(0,e.length)},pt=function(e,t,n){return n&&(t=ce(n,t)),e[t]},vt=function(e,t,n,r){n&&(t=ce(n,t)),e[t]=r},gt="undefined"!=typeof Map?Map:function(){return i((function e(){a(this,e),this._obj={}}),[{key:"set",value:function(e,t){return this._obj[e]=t,this}},{key:"delete",value:function(e){return this._obj[e]=void 0,this}},{key:"clear",value:function(){this._obj={}}},{key:"has",value:function(e){return void 0!==this._obj[e]}},{key:"get",value:function(e){return this._obj[e]}}])}(),yt=function(){return i((function e(t){if(a(this,e),this._obj=Object.create(null),this.size=0,null!=t){var n;n=null!=t.instanceString&&t.instanceString()===this.instanceString()?t.toArray():t;for(var r=0;r2&&void 0!==arguments[2])||arguments[2];if(void 0!==e&&void 0!==t&&re(e)){var r=t.group;if(null==r&&(r=t.data&&null!=t.data.source&&null!=t.data.target?"edges":"nodes"),"nodes"===r||"edges"===r){this.length=1,this[0]=this;var a=this._private={cy:e,single:!0,data:t.data||{},position:t.position||{x:0,y:0},autoWidth:void 0,autoHeight:void 0,autoPadding:void 0,compoundBoundsClean:!1,listeners:[],group:r,style:{},rstyle:{},styleCxts:[],styleKeys:{},removed:!0,selected:!!t.selected,selectable:void 0===t.selectable||!!t.selectable,locked:!!t.locked,grabbed:!1,grabbable:void 0===t.grabbable||!!t.grabbable,pannable:void 0===t.pannable?"edges"===r:!!t.pannable,active:!1,classes:new mt,animation:{current:[],queue:[]},rscratch:{},scratch:t.scratch||{},edges:[],children:[],parent:t.parent&&t.parent.isNode()?t.parent:null,traversalCache:{},backgrounding:!1,bbCache:null,bbCacheShift:{x:0,y:0},bodyBounds:null,overlayBounds:null,labelBounds:{all:null,source:null,target:null,main:null},arrowBounds:{source:null,target:null,"mid-source":null,"mid-target":null}};if(null==a.position.x&&(a.position.x=0),null==a.position.y&&(a.position.y=0),t.renderedPosition){var i=t.renderedPosition,o=e.pan(),s=e.zoom();a.position={x:(i.x-o.x)/s,y:(i.y-o.y)/s}}var l=[];Z(t.classes)?l=t.classes:K(t.classes)&&(l=t.classes.split(/\s+/));for(var u=0,c=l.length;ut?1:0},u=function(e,t,a,i,o){var s;if(null==a&&(a=0),null==o&&(o=n),a<0)throw new Error("lo must be non-negative");for(null==i&&(i=e.length);an;0<=n?t++:t--)u.push(t);return u}.apply(this).reverse()).length;iv;0<=v?++h:--h)g.push(i(e,r));return g},p=function(e,t,r,a){var i,o,s;for(null==a&&(a=n),i=e[r];r>t&&a(i,o=e[s=r-1>>1])<0;)e[r]=o,r=s;return e[r]=i},v=function(e,t,r){var a,i,o,s,l;for(null==r&&(r=n),i=e.length,l=t,o=e[t],a=2*t+1;a0;){var w=y.pop(),E=v(w),k=w.id();if(d[k]=E,E!==1/0)for(var T=w.neighborhood().intersect(f),C=0;C0)for(n.unshift(t);c[a];){var i=c[a];n.unshift(i.edge),n.unshift(i.node),a=(r=i.node).id()}return o.spawn(n)}}}},Mt={kruskal:function(e){e=e||function(e){return 1};for(var t=this.byGroup(),n=t.nodes,r=t.edges,a=n.length,i=new Array(a),o=n,s=function(e){for(var t=0;t0;){if(l=v.pop(),u=l.id(),g.delete(u),w++,u===d){for(var E=[],k=a,T=d,C=m[T];E.unshift(k),null!=C&&E.unshift(C),null!=(k=y[T]);)C=m[T=k.id()];return{found:!0,distance:h[u],path:this.spawn(E),steps:w}}p[u]=!0;for(var P=l._private.edges,S=0;SP&&(f[C]=P,y[C]=T,m[C]=x),!a){var S=T*u+k;!a&&f[S]>P&&(f[S]=P,y[S]=k,m[S]=x)}}}for(var B=0;B1&&void 0!==arguments[1]?arguments[1]:i,r=[],a=m(e);;){if(null==a)return t.spawn();var o=y(a),l=o.edge,u=o.pred;if(r.unshift(a[0]),a.same(n)&&r.length>0)break;null!=l&&r.unshift(l),a=u}return s.spawn(r)},hasNegativeWeightCycle:p,negativeWeightCycles:v}}},Vt=Math.sqrt(2),Ft=function(e,t,n){0===n.length&&at("Karger-Stein must be run on a connected (sub)graph");for(var r=n[e],a=r[1],i=r[2],o=t[a],s=t[i],l=n,u=l.length-1;u>=0;u--){var c=l[u],d=c[1],h=c[2];(t[d]===o&&t[h]===s||t[d]===s&&t[h]===o)&&l.splice(u,1)}for(var f=0;fr;){var a=Math.floor(Math.random()*t.length);t=Ft(a,e,t),n--}return t},jt={kargerStein:function(){var e=this,t=this.byGroup(),n=t.nodes,r=t.edges;r.unmergeBy((function(e){return e.isLoop()}));var a=n.length,i=r.length,o=Math.ceil(Math.pow(Math.log(a)/Math.LN2,2)),s=Math.floor(a/Vt);if(!(a<2)){for(var l=[],u=0;u0?1:e<0?-1:0},Gt=function(e,t){return Math.sqrt(Zt(e,t))},Zt=function(e,t){var n=t.x-e.x,r=t.y-e.y;return n*n+r*r},$t=function(e){for(var t=e.length,n=0,r=0;r=e.x1&&e.y2>=e.y1)return{x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2,w:e.x2-e.x1,h:e.y2-e.y1};if(null!=e.w&&null!=e.h&&e.w>=0&&e.h>=0)return{x1:e.x1,y1:e.y1,x2:e.x1+e.w,y2:e.y1+e.h,w:e.w,h:e.h}}},nn=function(e,t,n){e.x1=Math.min(e.x1,t),e.x2=Math.max(e.x2,t),e.w=e.x2-e.x1,e.y1=Math.min(e.y1,n),e.y2=Math.max(e.y2,n),e.h=e.y2-e.y1},rn=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return e.x1-=t,e.x2+=t,e.y1-=t,e.y2+=t,e.w=e.x2-e.x1,e.h=e.y2-e.y1,e},an=function(e){var t,n,r,a,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[0];if(1===i.length)t=n=r=a=i[0];else if(2===i.length)t=r=i[0],a=n=i[1];else if(4===i.length){var o=l(i,4);t=o[0],n=o[1],r=o[2],a=o[3]}return e.x1-=a,e.x2+=n,e.y1-=t,e.y2+=r,e.w=e.x2-e.x1,e.h=e.y2-e.y1,e},on=function(e,t){e.x1=t.x1,e.y1=t.y1,e.x2=t.x2,e.y2=t.y2,e.w=e.x2-e.x1,e.h=e.y2-e.y1},sn=function(e,t){return!(e.x1>t.x2)&&(!(t.x1>e.x2)&&(!(e.x2t.y2)&&!(t.y1>e.y2)))))))},ln=function(e,t,n){return e.x1<=t&&t<=e.x2&&e.y1<=n&&n<=e.y2},un=function(e,t){return ln(e,t.x,t.y)},cn=function(e,t){return ln(e,t.x1,t.y1)&&ln(e,t.x2,t.y2)},dn=null!==(Bt=Math.hypot)&&void 0!==Bt?Bt:function(e,t){return Math.sqrt(e*e+t*t)};function hn(e,t,n,r,a,i){var o=function(e,t){if(e.length<3)throw new Error("Need at least 3 vertices");var n=function(e,t){return{x:e.x+t.x,y:e.y+t.y}},r=function(e,t){return{x:e.x-t.x,y:e.y-t.y}},a=function(e,t){return{x:e.x*t,y:e.y*t}},i=function(e,t){return e.x*t.y-e.y*t.x},o=function(e,t,o,s){var l=r(t,e),u=r(s,o),c=i(l,u);if(Math.abs(c)<1e-9)return n(e,a(l,.5));var d=i(r(o,e),u)/c;return n(e,a(l,d))},s=e.map((function(e){return{x:e.x,y:e.y}}));(function(e){for(var t=0,n=0;n7&&void 0!==arguments[7]?arguments[7]:"auto",c="auto"===u?Mn(a,i):u,d=a/2,h=i/2,f=(c=Math.min(c,d,h))!==d,p=c!==h;if(f){var v=r-h-o;if((s=Cn(e,t,n,r,n-d+c-o,v,n+d-c+o,v,!1)).length>0)return s}if(p){var g=n+d+o;if((s=Cn(e,t,n,r,g,r-h+c-o,g,r+h-c+o,!1)).length>0)return s}if(f){var y=r+h+o;if((s=Cn(e,t,n,r,n-d+c-o,y,n+d-c+o,y,!1)).length>0)return s}if(p){var m=n-d-o;if((s=Cn(e,t,n,r,m,r-h+c-o,m,r+h-c+o,!1)).length>0)return s}var b=n-d+c,x=r-h+c;if((l=kn(e,t,n,r,b,x,c+o)).length>0&&l[0]<=b&&l[1]<=x)return[l[0],l[1]];var w=n+d-c,E=r-h+c;if((l=kn(e,t,n,r,w,E,c+o)).length>0&&l[0]>=w&&l[1]<=E)return[l[0],l[1]];var k=n+d-c,T=r+h-c;if((l=kn(e,t,n,r,k,T,c+o)).length>0&&l[0]>=k&&l[1]>=T)return[l[0],l[1]];var C=n-d+c,P=r+h-c;return(l=kn(e,t,n,r,C,P,c+o)).length>0&&l[0]<=C&&l[1]>=P?[l[0],l[1]]:[]},pn=function(e,t,n,r,a,i,o){var s=o,l=Math.min(n,a),u=Math.max(n,a),c=Math.min(r,i),d=Math.max(r,i);return l-s<=e&&e<=u+s&&c-s<=t&&t<=d+s},vn=function(e,t,n,r,a,i,o,s,l){var u=Math.min(n,o,a)-l,c=Math.max(n,o,a)+l,d=Math.min(r,s,i)-l,h=Math.max(r,s,i)+l;return!(ec||th)},gn=function(e,t,n,r,a,i,o,s){var l=[];!function(e,t,n,r,a){var i,o,s,l,u,c,d,h;0===e&&(e=1e-5),s=-27*(r/=e)+(t/=e)*(9*(n/=e)-t*t*2),i=(o=(3*n-t*t)/9)*o*o+(s/=54)*s,a[1]=0,d=t/3,i>0?(u=(u=s+Math.sqrt(i))<0?-Math.pow(-u,1/3):Math.pow(u,1/3),c=(c=s-Math.sqrt(i))<0?-Math.pow(-c,1/3):Math.pow(c,1/3),a[0]=-d+u+c,d+=(u+c)/2,a[4]=a[2]=-d,d=Math.sqrt(3)*(-c+u)/2,a[3]=d,a[5]=-d):(a[5]=a[3]=0,0===i?(h=s<0?-Math.pow(-s,1/3):Math.pow(s,1/3),a[0]=2*h-d,a[4]=a[2]=-(h+d)):(l=(o=-o)*o*o,l=Math.acos(s/Math.sqrt(l)),h=2*Math.sqrt(o),a[0]=-d+h*Math.cos(l/3),a[2]=-d+h*Math.cos((l+2*Math.PI)/3),a[4]=-d+h*Math.cos((l+4*Math.PI)/3)))}(1*n*n-4*n*a+2*n*o+4*a*a-4*a*o+o*o+r*r-4*r*i+2*r*s+4*i*i-4*i*s+s*s,9*n*a-3*n*n-3*n*o-6*a*a+3*a*o+9*r*i-3*r*r-3*r*s-6*i*i+3*i*s,3*n*n-6*n*a+n*o-n*e+2*a*a+2*a*e-o*e+3*r*r-6*r*i+r*s-r*t+2*i*i+2*i*t-s*t,1*n*a-n*n+n*e-a*e+r*i-r*r+r*t-i*t,l);for(var u=[],c=0;c<6;c+=2)Math.abs(l[c+1])<1e-7&&l[c]>=0&&l[c]<=1&&u.push(l[c]);u.push(1),u.push(0);for(var d,h,f,p=-1,v=0;v=0?fl?(e-a)*(e-a)+(t-i)*(t-i):u-d},mn=function(e,t,n){for(var r,a,i,o,s=0,l=0;l=e&&e>=i||r<=e&&e<=i))continue;(e-r)/(i-r)*(o-a)+a>t&&s++}return s%2!=0},bn=function(e,t,n,r,a,i,o,s,l){var u,c=new Array(n.length);null!=s[0]?(u=Math.atan(s[1]/s[0]),s[0]<0?u+=Math.PI/2:u=-u-Math.PI/2):u=s;for(var d,h=Math.cos(-u),f=Math.sin(-u),p=0;p0){var v=wn(c,-l);d=xn(v)}else d=c;return mn(e,t,d)},xn=function(e){for(var t,n,r,a,i,o,s,l,u=new Array(e.length/2),c=0;c=0&&p<=1&&g.push(p),v>=0&&v<=1&&g.push(v),0===g.length)return[];var y=g[0]*s[0]+e,m=g[0]*s[1]+t;return g.length>1?g[0]==g[1]?[y,m]:[y,m,g[1]*s[0]+e,g[1]*s[1]+t]:[y,m]},Tn=function(e,t,n){return t<=e&&e<=n||n<=e&&e<=t?e:e<=t&&t<=n||n<=t&&t<=e?t:n},Cn=function(e,t,n,r,a,i,o,s,l){var u=e-a,c=n-e,d=o-a,h=t-i,f=r-t,p=s-i,v=d*h-p*u,g=c*h-f*u,y=p*c-d*f;if(0!==y){var m=v/y,b=g/y,x=-.001;return x<=m&&m<=1.001&&x<=b&&b<=1.001||l?[e+m*c,t+m*f]:[]}return 0===v||0===g?Tn(e,n,o)===o?[o,s]:Tn(e,n,a)===a?[a,i]:Tn(a,o,n)===n?[n,r]:[]:[]},Pn=function(e,t,n,r,a){var i=[],o=r/2,s=a/2,l=t,u=n;i.push({x:l+o*e[0],y:u+s*e[1]});for(var c=1;c0){var m=wn(v,-s);u=xn(m)}else u=v}else u=n;for(var b=0;bu&&(u=t)},d=function(e){return l[e]},h=0;h0?b.edgesTo(m)[0]:m.edgesTo(b)[0];var w=r(x);m=m.id(),u[m]>u[v]+w&&(u[m]=u[v]+w,h.nodes.indexOf(m)<0?h.push(m):h.updateItem(m),l[m]=0,n[m]=[]),u[m]==u[v]+w&&(l[m]=l[m]+l[v],n[m].push(v))}else for(var E=0;E0;){for(var P=t.pop(),S=0;S0&&o.push(n[s]);0!==o.length&&a.push(r.collection(o))}return a}(c,l,t,r);return b=function(e){for(var t=0;t5&&void 0!==arguments[5]?arguments[5]:er,o=r,s=0;s=2?or(e,t,n,0,rr,ar):or(e,t,n,0,nr)},squaredEuclidean:function(e,t,n){return or(e,t,n,0,rr)},manhattan:function(e,t,n){return or(e,t,n,0,nr)},max:function(e,t,n){return or(e,t,n,-1/0,ir)}};function lr(e,t,n,r,a,i){var o;return o=G(e)?e:sr[e]||sr.euclidean,0===t&&G(e)?o(a,i):o(t,n,r,a,i)}sr["squared-euclidean"]=sr.squaredEuclidean,sr.squaredeuclidean=sr.squaredEuclidean;var ur=dt({k:2,m:2,sensitivityThreshold:1e-4,distance:"euclidean",maxIterations:10,attributes:[],testMode:!1,testCentroids:null}),cr=function(e){return ur(e)},dr=function(e,t,n,r,a){var i="kMedoids"!==a?function(e){return n[e]}:function(e){return r[e](n)},o=n,s=t;return lr(e,r.length,i,(function(e){return r[e](t)}),o,s)},hr=function(e,t,n){for(var r=n.length,a=new Array(r),i=new Array(r),o=new Array(t),s=null,l=0;ln)return!1}return!0},yr=function(e,t,n){for(var r=0;ra&&(a=t[l][u],i=u);o[i].push(e[l])}for(var c=0;c=a.threshold||"dendrogram"===a.mode&&1===e.length)return!1;var f,p=t[o],v=t[r[o]];f="dendrogram"===a.mode?{left:p,right:v,key:p.key}:{value:p.value.concat(v.value),key:p.key},e[p.index]=f,e.splice(v.index,1),t[p.key]=f;for(var g=0;gn[v.key][y.key]&&(i=n[v.key][y.key])):"max"===a.linkage?(i=n[p.key][y.key],n[p.key][y.key]1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.length,r=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],a=!(arguments.length>5&&void 0!==arguments[5])||arguments[5];arguments.length>3&&void 0!==arguments[3]&&!arguments[3]?(n0&&e.splice(0,t)):e=e.slice(t,n);for(var i=0,o=e.length-1;o>=0;o--){var s=e[o];a?isFinite(s)||(e[o]=-1/0,i++):e.splice(o,1)}r&&e.sort((function(e,t){return e-t}));var l=e.length,u=Math.floor(l/2);return l%2!=0?e[u+1+i]:(e[u-1+i]+e[u+i])/2}(e):"mean"===t?function(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.length,r=0,a=0,i=t;i1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.length,r=1/0,a=t;a1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.length,r=-1/0,a=t;ao&&(i=l,o=t[a*e+l])}i>0&&r.push(i)}for(var u=0;u=P?(S=P,P=D,B=_):D>S&&(S=D);for(var A=0;A0?1:0;k[E%u.minIterations*t+z]=O,L+=O}if(L>0&&(E>=u.minIterations-1||E==u.maxIterations-1)){for(var V=0,F=0;F0&&r.push(a);return r}(t,i,o),Y=function(e,t,n){for(var r=Nr(e,t,n),a=0;al&&(s=u,l=c)}n[a]=i[s]}return Nr(e,t,n)}(t,r,j),q={},W=0;W1)}}));var l=Object.keys(t).filter((function(e){return t[e].cutVertex})).map((function(t){return e.getElementById(t)}));return{cut:e.spawn(l),components:a}},Fr=function(){var e=this,t={},n=0,r=[],a=[],i=e.spawn(e),o=function(s){if(a.push(s),t[s]={index:n,low:n++,explored:!1},e.getElementById(s).connectedEdges().intersection(e).forEach((function(e){var n=e.target().id();n!==s&&(n in t||o(n),t[n].explored||(t[s].low=Math.min(t[s].low,t[n].low)))})),t[s].index===t[s].low){for(var l=e.spawn();;){var u=a.pop();if(l.merge(e.getElementById(u)),t[u].low=t[s].index,t[u].explored=!0,u===s)break}var c=l.edgesWith(l),d=l.merge(c);r.push(d),i=i.difference(d)}};return e.forEach((function(e){if(e.isNode()){var n=e.id();n in t||o(n)}})),{cut:i,components:r}},Xr={};[wt,At,Mt,It,Lt,Ot,jt,zn,Vn,Xn,Yn,Jn,kr,Ar,zr,{hierholzer:function(e){if(!$(e)){var t=arguments;e={root:t[0],directed:t[1]}}var n,r,a,i=Or(e),o=i.root,s=i.directed,l=this,u=!1;o&&(a=K(o)?this.filter(o)[0].id():o[0].id());var c={},d={};s?l.forEach((function(e){var t=e.id();if(e.isNode()){var a=e.indegree(!0),i=e.outdegree(!0),o=a-i,s=i-a;1==o?n?u=!0:n=t:1==s?r?u=!0:r=t:(s>1||o>1)&&(u=!0),c[t]=[],e.outgoers().forEach((function(e){e.isEdge()&&c[t].push(e.id())}))}else d[t]=[void 0,e.target().id()]})):l.forEach((function(e){var t=e.id();e.isNode()?(e.degree(!0)%2&&(n?r?u=!0:r=t:n=t),c[t]=[],e.connectedEdges().forEach((function(e){return c[t].push(e.id())}))):d[t]=[e.source().id(),e.target().id()]}));var h={found:!1,trail:void 0};if(u)return h;if(r&&n)if(s){if(a&&r!=a)return h;a=r}else{if(a&&r!=a&&n!=a)return h;a||(a=r)}else a||(a=l[0].id());var f=function(e){for(var t,n,r,a=e,i=[e];c[a].length;)t=c[a].shift(),n=d[t][0],a!=(r=d[t][1])?(c[r]=c[r].filter((function(e){return e!=t})),a=r):s||a==n||(c[n]=c[n].filter((function(e){return e!=t})),a=n),i.unshift(t),i.unshift(a);return i},p=[],v=[];for(v=f(a);1!=v.length;)0==c[v[0]].length?(p.unshift(l.getElementById(v.shift())),p.unshift(l.getElementById(v.shift()))):v=f(v.shift()).concat(v);for(var g in p.unshift(l.getElementById(v.shift())),c)if(c[g].length)return h;return h.found=!0,h.trail=this.spawn(p,!0),h}},{hopcroftTarjanBiconnected:Vr,htbc:Vr,htb:Vr,hopcroftTarjanBiconnectedComponents:Vr},{tarjanStronglyConnected:Fr,tsc:Fr,tscc:Fr,tarjanStronglyConnectedComponents:Fr}].forEach((function(e){be(Xr,e)}));var jr=function(e){if(!(this instanceof jr))return new jr(e);this.id="Thenable/1.0.7",this.state=0,this.fulfillValue=void 0,this.rejectReason=void 0,this.onFulfilled=[],this.onRejected=[],this.proxy={then:this.then.bind(this)},"function"==typeof e&&e.call(this,this.fulfill.bind(this),this.reject.bind(this))};jr.prototype={fulfill:function(e){return Yr(this,1,"fulfillValue",e)},reject:function(e){return Yr(this,2,"rejectReason",e)},then:function(e,t){var n=this,r=new jr;return n.onFulfilled.push(Ur(e,r,"fulfill")),n.onRejected.push(Ur(t,r,"reject")),qr(n),r.proxy}};var Yr=function(e,t,n,r){return 0===e.state&&(e.state=t,e[n]=r,qr(e)),e},qr=function(e){1===e.state?Wr(e,"onFulfilled",e.fulfillValue):2===e.state&&Wr(e,"onRejected",e.rejectReason)},Wr=function(e,t,n){if(0!==e[t].length){var r=e[t];e[t]=[];var a=function(){for(var e=0;e0:void 0}},clearQueue:function(){return function(){var e=this,t=void 0!==e.length?e:[e];if(!(this._private.cy||this).styleEnabled())return this;for(var n=0;n-1}}(),a=function(){if(ja)return Xa;ja=1;var e=zi();return Xa=function(t,n){var r=this.__data__,a=e(r,t);return a<0?(++this.size,r.push([t,n])):r[a][1]=n,this},Xa}();function i(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t-1&&t%1==0&&t0&&this.spawn(r).updateStyle().emit("class"),t},addClass:function(e){return this.toggleClass(e,!0)},hasClass:function(e){var t=this[0];return null!=t&&t._private.classes.has(e)},toggleClass:function(e,t){Z(e)||(e=e.match(/\S+/g)||[]);for(var n=this,r=void 0===t,a=[],i=0,o=n.length;i0&&this.spawn(a).updateStyle().emit("class"),n},removeClass:function(e){return this.toggleClass(e,!1)},flashClass:function(e,t){var n=this;if(null==t)t=250;else if(0===t)return n;return n.addClass(e),setTimeout((function(){n.removeClass(e)}),t),n}};ko.className=ko.classNames=ko.classes;var To={metaChar:"[\\!\\\"\\#\\$\\%\\&\\'\\(\\)\\*\\+\\,\\.\\/\\:\\;\\<\\=\\>\\?\\@\\[\\]\\^\\`\\{\\|\\}\\~]",comparatorOp:"=|\\!=|>|>=|<|<=|\\$=|\\^=|\\*=",boolOp:"\\?|\\!|\\^",string:"\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'",number:fe,meta:"degree|indegree|outdegree",separator:"\\s*,\\s*",descendant:"\\s+",child:"\\s+>\\s+",subject:"\\$",group:"node|edge|\\*",directedEdge:"\\s+->\\s+",undirectedEdge:"\\s+<->\\s+"};To.variable="(?:[\\w-.]|(?:\\\\"+To.metaChar+"))+",To.className="(?:[\\w-]|(?:\\\\"+To.metaChar+"))+",To.value=To.string+"|"+To.number,To.id=To.variable,function(){var e,t,n;for(e=To.comparatorOp.split("|"),n=0;n=0||"="!==t&&(To.comparatorOp+="|\\!"+t)}();var Co=0,Po=1,So=2,Bo=3,Do=4,_o=5,Ao=6,Mo=7,Ro=8,Io=9,No=10,Lo=11,zo=12,Oo=13,Vo=14,Fo=15,Xo=16,jo=17,Yo=18,qo=19,Wo=20,Uo=[{selector:":selected",matches:function(e){return e.selected()}},{selector:":unselected",matches:function(e){return!e.selected()}},{selector:":selectable",matches:function(e){return e.selectable()}},{selector:":unselectable",matches:function(e){return!e.selectable()}},{selector:":locked",matches:function(e){return e.locked()}},{selector:":unlocked",matches:function(e){return!e.locked()}},{selector:":visible",matches:function(e){return e.visible()}},{selector:":hidden",matches:function(e){return!e.visible()}},{selector:":transparent",matches:function(e){return e.transparent()}},{selector:":grabbed",matches:function(e){return e.grabbed()}},{selector:":free",matches:function(e){return!e.grabbed()}},{selector:":removed",matches:function(e){return e.removed()}},{selector:":inside",matches:function(e){return!e.removed()}},{selector:":grabbable",matches:function(e){return e.grabbable()}},{selector:":ungrabbable",matches:function(e){return!e.grabbable()}},{selector:":animated",matches:function(e){return e.animated()}},{selector:":unanimated",matches:function(e){return!e.animated()}},{selector:":parent",matches:function(e){return e.isParent()}},{selector:":childless",matches:function(e){return e.isChildless()}},{selector:":child",matches:function(e){return e.isChild()}},{selector:":orphan",matches:function(e){return e.isOrphan()}},{selector:":nonorphan",matches:function(e){return e.isChild()}},{selector:":compound",matches:function(e){return e.isNode()?e.isParent():e.source().isParent()||e.target().isParent()}},{selector:":loop",matches:function(e){return e.isLoop()}},{selector:":simple",matches:function(e){return e.isSimple()}},{selector:":active",matches:function(e){return e.active()}},{selector:":inactive",matches:function(e){return!e.active()}},{selector:":backgrounding",matches:function(e){return e.backgrounding()}},{selector:":nonbackgrounding",matches:function(e){return!e.backgrounding()}}].sort((function(e,t){return function(e,t){return-1*me(e,t)}(e.selector,t.selector)})),Ho=function(){for(var e,t={},n=0;n0&&u.edgeCount>0)return ot("The selector `"+e+"` is invalid because it uses both a compound selector and an edge selector"),!1;if(u.edgeCount>1)return ot("The selector `"+e+"` is invalid because it uses multiple edge selectors"),!1;1===u.edgeCount&&ot("The selector `"+e+"` is deprecated. Edge selectors do not take effect on changes to source and target nodes after an edge is added, for performance reasons. Use a class or data selector on edges instead, updating the class or data of an edge when your app detects a change in source or target nodes.")}return!0},toString:function(){if(null!=this.toStringCache)return this.toStringCache;for(var e=function(e){return null==e?"":e},t=function(t){return K(t)?'"'+t+'"':e(t)},n=function(e){return" "+e+" "},r=function(r,i){var o=r.type,s=r.value;switch(o){case Co:var l=e(s);return l.substring(0,l.length-1);case Bo:var u=r.field,c=r.operator;return"["+u+n(e(c))+t(s)+"]";case _o:var d=r.operator,h=r.field;return"["+e(d)+h+"]";case Do:return"["+r.field+"]";case Ao:var f=r.operator;return"[["+r.field+n(e(f))+t(s)+"]]";case Mo:return s;case Ro:return"#"+s;case Io:return"."+s;case jo:case Fo:return a(r.parent,i)+n(">")+a(r.child,i);case Yo:case Xo:return a(r.ancestor,i)+" "+a(r.descendant,i);case qo:var p=a(r.left,i),v=a(r.subject,i),g=a(r.right,i);return p+(p.length>0?" ":"")+v+g;case Wo:return""}},a=function(e,t){return e.checks.reduce((function(n,a,i){return n+(t===e&&0===i?"$":"")+r(a,t)}),"")},i="",o=0;o1&&o=0&&(t=t.replace("!",""),c=!0),t.indexOf("@")>=0&&(t=t.replace("@",""),u=!0),(o||l||u)&&(a=o||s?""+e:"",i=""+n),u&&(e=a=a.toLowerCase(),n=i=i.toLowerCase()),t){case"*=":r=a.indexOf(i)>=0;break;case"$=":r=a.indexOf(i,a.length-i.length)>=0;break;case"^=":r=0===a.indexOf(i);break;case"=":r=e===n;break;case">":d=!0,r=e>n;break;case">=":d=!0,r=e>=n;break;case"<":d=!0,r=e0;){var u=a.shift();t(u),i.add(u.id()),o&&r(a,i,u)}return e}function fs(e,t,n){if(n.isParent())for(var r=n._private.children,a=0;a1&&void 0!==arguments[1])||arguments[1],fs)},ds.forEachUp=function(e){return hs(this,e,!(arguments.length>1&&void 0!==arguments[1])||arguments[1],ps)},ds.forEachUpAndDown=function(e){return hs(this,e,!(arguments.length>1&&void 0!==arguments[1])||arguments[1],vs)},ds.ancestors=ds.parents,(ls=us={data:wo.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),removeData:wo.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),scratch:wo.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:wo.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),rscratch:wo.data({field:"rscratch",allowBinding:!1,allowSetting:!0,settingTriggersEvent:!1,allowGetting:!0}),removeRscratch:wo.removeData({field:"rscratch",triggerEvent:!1}),id:function(){var e=this[0];if(e)return e._private.data.id}}).attr=ls.data,ls.removeAttr=ls.removeData;var gs,ys,ms=us,bs={};function xs(e){return function(t){var n=this;if(void 0===t&&(t=!0),0!==n.length&&n.isNode()&&!n.removed()){for(var r=0,a=n[0],i=a._private.edges,o=0;ot})),minIndegree:ws("indegree",(function(e,t){return et})),minOutdegree:ws("outdegree",(function(e,t){return et}))}),be(bs,{totalDegree:function(e){for(var t=0,n=this.nodes(),r=0;r0,c=u;u&&(l=l[0]);var d=c?l.position():{x:0,y:0};return a={x:s.x-d.x,y:s.y-d.y},void 0===e?a:a[e]}for(var h=0;h0,g=v;v&&(p=p[0]);var y=g?p.position():{x:0,y:0};void 0!==t?f.position(e,t+y[e]):void 0!==a&&f.position({x:a.x+y.x,y:a.y+y.y})}}else if(!i)return;return this}},gs.modelPosition=gs.point=gs.position,gs.modelPositions=gs.points=gs.positions,gs.renderedPoint=gs.renderedPosition,gs.relativePoint=gs.relativePosition;var Ts,Cs,Ps=ys;Ts=Cs={},Cs.renderedBoundingBox=function(e){var t=this.boundingBox(e),n=this.cy(),r=n.zoom(),a=n.pan(),i=t.x1*r+a.x,o=t.x2*r+a.x,s=t.y1*r+a.y,l=t.y2*r+a.y;return{x1:i,x2:o,y1:s,y2:l,w:o-i,h:l-s}},Cs.dirtyCompoundBoundsCache=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=this.cy();return t.styleEnabled()&&t.hasCompoundNodes()?(this.forEachUp((function(t){if(t.isParent()){var n=t._private;n.compoundBoundsClean=!1,n.bbCache=null,e||t.emitAndNotify("bounds")}})),this):this},Cs.updateCompoundBounds=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=this.cy();if(!t.styleEnabled()||!t.hasCompoundNodes())return this;if(!e&&t.batching())return this;function n(e){if(e.isParent()){var t=e._private,n=e.children(),r="include"===e.pstyle("compound-sizing-wrt-labels").value,a={width:{val:e.pstyle("min-width").pfValue,left:e.pstyle("min-width-bias-left"),right:e.pstyle("min-width-bias-right")},height:{val:e.pstyle("min-height").pfValue,top:e.pstyle("min-height-bias-top"),bottom:e.pstyle("min-height-bias-bottom")}},i=n.boundingBox({includeLabels:r,includeOverlays:!1,useCache:!1}),o=t.position;0!==i.w&&0!==i.h||((i={w:e.pstyle("width").pfValue,h:e.pstyle("height").pfValue}).x1=o.x-i.w/2,i.x2=o.x+i.w/2,i.y1=o.y-i.h/2,i.y2=o.y+i.h/2);var s=a.width.left.value;"px"===a.width.left.units&&a.width.val>0&&(s=100*s/a.width.val);var l=a.width.right.value;"px"===a.width.right.units&&a.width.val>0&&(l=100*l/a.width.val);var u=a.height.top.value;"px"===a.height.top.units&&a.height.val>0&&(u=100*u/a.height.val);var c=a.height.bottom.value;"px"===a.height.bottom.units&&a.height.val>0&&(c=100*c/a.height.val);var d=y(a.width.val-i.w,s,l),h=d.biasDiff,f=d.biasComplementDiff,p=y(a.height.val-i.h,u,c),v=p.biasDiff,g=p.biasComplementDiff;t.autoPadding=function(e,t,n,r){if("%"!==n.units)return"px"===n.units?n.pfValue:0;switch(r){case"width":return e>0?n.pfValue*e:0;case"height":return t>0?n.pfValue*t:0;case"average":return e>0&&t>0?n.pfValue*(e+t)/2:0;case"min":return e>0&&t>0?e>t?n.pfValue*t:n.pfValue*e:0;case"max":return e>0&&t>0?e>t?n.pfValue*e:n.pfValue*t:0;default:return 0}}(i.w,i.h,e.pstyle("padding"),e.pstyle("padding-relative-to").value),t.autoWidth=Math.max(i.w,a.width.val),o.x=(-h+i.x1+i.x2+f)/2,t.autoHeight=Math.max(i.h,a.height.val),o.y=(-v+i.y1+i.y2+g)/2}function y(e,t,n){var r=0,a=0,i=t+n;return e>0&&i>0&&(r=t/i*e,a=n/i*e),{biasDiff:r,biasComplementDiff:a}}}for(var r=0;re.x2?r:e.x2,e.y1=ne.y2?a:e.y2,e.w=e.x2-e.x1,e.h=e.y2-e.y1)},Ds=function(e,t){return null==t?e:Bs(e,t.x1,t.y1,t.x2,t.y2)},_s=function(e,t,n){return pt(e,t,n)},As=function(e,t,n){if(!t.cy().headless()){var r,a,i=t._private,o=i.rstyle,s=o.arrowWidth/2;if("none"!==t.pstyle(n+"-arrow-shape").value){"source"===n?(r=o.srcX,a=o.srcY):"target"===n?(r=o.tgtX,a=o.tgtY):(r=o.midX,a=o.midY);var l=i.arrowBounds=i.arrowBounds||{},u=l[n]=l[n]||{};u.x1=r-s,u.y1=a-s,u.x2=r+s,u.y2=a+s,u.w=u.x2-u.x1,u.h=u.y2-u.y1,rn(u,1),Bs(e,u.x1,u.y1,u.x2,u.y2)}}},Ms=function(e,t,n){if(!t.cy().headless()){var r;r=n?n+"-":"";var a=t._private,i=a.rstyle;if(t.pstyle(r+"label").strValue){var o,s,l,u,c=t.pstyle("text-halign"),d=t.pstyle("text-valign"),h=_s(i,"labelWidth",n),f=_s(i,"labelHeight",n),p=_s(i,"labelX",n),v=_s(i,"labelY",n),g=t.pstyle(r+"text-margin-x").pfValue,y=t.pstyle(r+"text-margin-y").pfValue,m=t.isEdge(),b=t.pstyle(r+"text-rotation"),x=t.pstyle("text-outline-width").pfValue,w=t.pstyle("text-border-width").pfValue/2,E=t.pstyle("text-background-padding").pfValue,k=f,T=h,C=T/2,P=k/2;if(m)o=p-C,s=p+C,l=v-P,u=v+P;else{switch(c.value){case"left":o=p-T,s=p;break;case"center":o=p-C,s=p+C;break;case"right":o=p,s=p+T}switch(d.value){case"top":l=v-k,u=v;break;case"center":l=v-P,u=v+P;break;case"bottom":l=v,u=v+k}}var S=g-Math.max(x,w)-E-2,B=g+Math.max(x,w)+E+2,D=y-Math.max(x,w)-E-2,_=y+Math.max(x,w)+E+2;o+=S,s+=B,l+=D,u+=_;var A=n||"main",M=a.labelBounds,R=M[A]=M[A]||{};R.x1=o,R.y1=l,R.x2=s,R.y2=u,R.w=s-o,R.h=u-l,R.leftPad=S,R.rightPad=B,R.topPad=D,R.botPad=_;var I=m&&"autorotate"===b.strValue,N=null!=b.pfValue&&0!==b.pfValue;if(I||N){var L=I?_s(a.rstyle,"labelAngle",n):b.pfValue,z=Math.cos(L),O=Math.sin(L),V=(o+s)/2,F=(l+u)/2;if(!m){switch(c.value){case"left":V=s;break;case"right":V=o}switch(d.value){case"top":F=u;break;case"bottom":F=l}}var X=function(e,t){return{x:(e-=V)*z-(t-=F)*O+V,y:e*O+t*z+F}},j=X(o,l),Y=X(o,u),q=X(s,l),W=X(s,u);o=Math.min(j.x,Y.x,q.x,W.x),s=Math.max(j.x,Y.x,q.x,W.x),l=Math.min(j.y,Y.y,q.y,W.y),u=Math.max(j.y,Y.y,q.y,W.y)}var U=A+"Rot",H=M[U]=M[U]||{};H.x1=o,H.y1=l,H.x2=s,H.y2=u,H.w=s-o,H.h=u-l,Bs(e,o,l,s,u),Bs(a.labelBounds.all,o,l,s,u)}return e}},Rs=function(e,t){if(!t.cy().headless()){var n=t.pstyle("outline-opacity").value,r=t.pstyle("outline-width").value+t.pstyle("outline-offset").value;Is(e,t,n,r,"outside",r/2)}},Is=function(e,t,n,r,a,i){if(!(0===n||r<=0||"inside"===a)){var o=t.cy(),s=t.pstyle("shape").value,l=o.renderer().nodeShapes[s],u=t.position(),c=u.x,d=u.y,h=t.width(),f=t.height();if(l.hasMiterBounds){"center"===a&&(r/=2);var p=l.miterBounds(c,d,h,f,r);Ds(e,p)}else null!=i&&i>0&&an(e,[i,i,i,i])}},Ns=function(e,t){var n,r,a,i,o,s,l,u=e._private.cy,c=u.styleEnabled(),d=u.headless(),h=tn(),f=e._private,p=e.isNode(),v=e.isEdge(),g=f.rstyle,y=p&&c?e.pstyle("bounds-expansion").pfValue:[0],m=function(e){return"none"!==e.pstyle("display").value},b=!c||m(e)&&(!v||m(e.source())&&m(e.target()));if(b){var x=0;c&&t.includeOverlays&&0!==e.pstyle("overlay-opacity").value&&(x=e.pstyle("overlay-padding").value);var w=0;c&&t.includeUnderlays&&0!==e.pstyle("underlay-opacity").value&&(w=e.pstyle("underlay-padding").value);var E=Math.max(x,w),k=0;if(c&&(k=e.pstyle("width").pfValue/2),p&&t.includeNodes){var T=e.position();o=T.x,s=T.y;var C=e.outerWidth()/2,P=e.outerHeight()/2;Bs(h,n=o-C,a=s-P,r=o+C,i=s+P),c&&Rs(h,e),c&&t.includeOutlines&&!d&&Rs(h,e),c&&function(e,t){if(!t.cy().headless()){var n=t.pstyle("border-opacity").value,r=t.pstyle("border-width").pfValue,a=t.pstyle("border-position").value;Is(e,t,n,r,a)}}(h,e)}else if(v&&t.includeEdges)if(c&&!d){var S=e.pstyle("curve-style").strValue;if(n=Math.min(g.srcX,g.midX,g.tgtX),r=Math.max(g.srcX,g.midX,g.tgtX),a=Math.min(g.srcY,g.midY,g.tgtY),i=Math.max(g.srcY,g.midY,g.tgtY),Bs(h,n-=k,a-=k,r+=k,i+=k),"haystack"===S){var B=g.haystackPts;if(B&&2===B.length){if(n=B[0].x,a=B[0].y,n>(r=B[1].x)){var D=n;n=r,r=D}if(a>(i=B[1].y)){var _=a;a=i,i=_}Bs(h,n-k,a-k,r+k,i+k)}}else if("bezier"===S||"unbundled-bezier"===S||he(S,"segments")||he(S,"taxi")){var A;switch(S){case"bezier":case"unbundled-bezier":A=g.bezierPts;break;case"segments":case"taxi":case"round-segments":case"round-taxi":A=g.linePts}if(null!=A)for(var M=0;M(r=N.x)){var L=n;n=r,r=L}if((a=I.y)>(i=N.y)){var z=a;a=i,i=z}Bs(h,n-=k,a-=k,r+=k,i+=k)}if(c&&t.includeEdges&&v&&(As(h,e,"mid-source"),As(h,e,"mid-target"),As(h,e,"source"),As(h,e,"target")),c)if("yes"===e.pstyle("ghost").value){var O=e.pstyle("ghost-offset-x").pfValue,V=e.pstyle("ghost-offset-y").pfValue;Bs(h,h.x1+O,h.y1+V,h.x2+O,h.y2+V)}var F=f.bodyBounds=f.bodyBounds||{};on(F,h),an(F,y),rn(F,1),c&&(n=h.x1,r=h.x2,a=h.y1,i=h.y2,Bs(h,n-E,a-E,r+E,i+E));var X=f.overlayBounds=f.overlayBounds||{};on(X,h),an(X,y),rn(X,1);var j=f.labelBounds=f.labelBounds||{};null!=j.all?((l=j.all).x1=1/0,l.y1=1/0,l.x2=-1/0,l.y2=-1/0,l.w=0,l.h=0):j.all=tn(),c&&t.includeLabels&&(t.includeMainLabels&&Ms(h,e,null),v&&(t.includeSourceLabels&&Ms(h,e,"source"),t.includeTargetLabels&&Ms(h,e,"target")))}return h.x1=Ss(h.x1),h.y1=Ss(h.y1),h.x2=Ss(h.x2),h.y2=Ss(h.y2),h.w=Ss(h.x2-h.x1),h.h=Ss(h.y2-h.y1),h.w>0&&h.h>0&&b&&(an(h,y),rn(h,1)),h},Ls=function(e){var t=0,n=function(e){return(e?1:0)<0&&void 0!==arguments[0]?arguments[0]:nl,t=arguments.length>1?arguments[1]:void 0,n=0;n=0;s--)o(s);return this},al.removeAllListeners=function(){return this.removeListener("*")},al.emit=al.trigger=function(e,t,n){var r=this.listeners,a=r.length;return this.emitting++,Z(t)||(t=[t]),sl(this,(function(e,i){null!=n&&(r=[{event:i.event,type:i.type,namespace:i.namespace,callback:n}],a=r.length);for(var o=function(){var n=r[s];if(n.type===i.type&&(!n.namespace||n.namespace===i.namespace||".*"===n.namespace)&&e.eventMatches(e.context,n,i)){var a=[i];null!=t&&function(e,t){for(var n=0;n1&&!r){var a=this.length-1,i=this[a],o=i._private.data.id;this[a]=void 0,this[e]=i,n.set(o,{ele:i,index:e})}return this.length--,this},unmergeOne:function(e){e=e[0];var t=this._private,n=e._private.data.id,r=t.map.get(n);if(!r)return this;var a=r.index;return this.unmergeAt(a),this},unmerge:function(e){var t=this._private.cy;if(!e)return this;if(e&&K(e)){var n=e;e=t.mutableElements().filter(n)}for(var r=0;r=0;t--){e(this[t])&&this.unmergeAt(t)}return this},map:function(e,t){for(var n=[],r=this,a=0;ar&&(r=s,n=o)}return{value:r,ele:n}},min:function(e,t){for(var n,r=1/0,a=this,i=0;i=0&&a1&&void 0!==arguments[1])||arguments[1],n=this[0],r=n.cy();if(r.styleEnabled()&&n){n._private.styleDirty&&(n._private.styleDirty=!1,r.style().apply(n));var a=n._private.style[e];return null!=a?a:t?r.style().getDefaultProperty(e):null}},numericStyle:function(e){var t=this[0];if(t.cy().styleEnabled()&&t){var n=t.pstyle(e);return void 0!==n.pfValue?n.pfValue:n.value}},numericStyleUnits:function(e){var t=this[0];if(t.cy().styleEnabled())return t?t.pstyle(e).units:void 0},renderedStyle:function(e){var t=this.cy();if(!t.styleEnabled())return this;var n=this[0];return n?t.style().getRenderedStyle(n,e):void 0},style:function(e,t){var n=this.cy();if(!n.styleEnabled())return this;var r=n.style();if($(e)){var a=e;r.applyBypass(this,a,false),this.emitAndNotify("style")}else if(K(e)){if(void 0===t){var i=this[0];return i?r.getStylePropertyValue(i,e):void 0}r.applyBypass(this,e,t,false),this.emitAndNotify("style")}else if(void 0===e){var o=this[0];return o?r.getRawStyle(o):void 0}return this},removeStyle:function(e){var t=this.cy();if(!t.styleEnabled())return this;var n=t.style(),r=this;if(void 0===e)for(var a=0;a0&&t.push(c[0]),t.push(s[0])}return this.spawn(t,!0).filter(e)}),"neighborhood"),closedNeighborhood:function(e){return this.neighborhood().add(this).filter(e)},openNeighborhood:function(e){return this.neighborhood(e)}}),Ml.neighbourhood=Ml.neighborhood,Ml.closedNeighbourhood=Ml.closedNeighborhood,Ml.openNeighbourhood=Ml.openNeighborhood,be(Ml,{source:cs((function(e){var t,n=this[0];return n&&(t=n._private.source||n.cy().collection()),t&&e?t.filter(e):t}),"source"),target:cs((function(e){var t,n=this[0];return n&&(t=n._private.target||n.cy().collection()),t&&e?t.filter(e):t}),"target"),sources:Ll({attr:"source"}),targets:Ll({attr:"target"})}),be(Ml,{edgesWith:cs(zl(),"edgesWith"),edgesTo:cs(zl({thisIsSrc:!0}),"edgesTo")}),be(Ml,{connectedEdges:cs((function(e){for(var t=[],n=0;n0);return i},component:function(){var e=this[0];return e.cy().mutableElements().components(e)[0]}}),Ml.componentsOf=Ml.components;var Vl=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(void 0!==e){var a=new gt,i=!1;if(t){if(t.length>0&&$(t[0])&&!te(t[0])){i=!0;for(var o=[],s=new mt,l=0,u=t.length;l0&&void 0!==arguments[0])||arguments[0],r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],a=this,i=a.cy(),o=i._private,s=[],l=[],u=0,c=a.length;u0){for(var I=e.length===a.length?a:new Vl(i,e),N=0;N0&&void 0!==arguments[0])||arguments[0],t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=this,r=[],a={},i=n._private.cy;function o(e){var n=a[e.id()];t&&e.removed()||n||(a[e.id()]=!0,e.isNode()?(r.push(e),function(e){for(var t=e._private.edges,n=0;n0&&(e?k.emitAndNotify("remove"):t&&k.emit("remove"));for(var T=0;T=.001?function(t,r){for(var i=0;i0?a=l:r=l}while(Math.abs(s)>i&&++ud&&Math.abs(s.v)>d;);return i?function(e){return u[e*(u.length-1)|0]}:c}}(),ql=function(e,t,n,r){var a=jl(e,t,n,r);return function(e,t,n){return e+(t-e)*a(n)}},Wl={linear:function(e,t,n){return e+(t-e)*n},ease:ql(.25,.1,.25,1),"ease-in":ql(.42,0,1,1),"ease-out":ql(0,0,.58,1),"ease-in-out":ql(.42,0,.58,1),"ease-in-sine":ql(.47,0,.745,.715),"ease-out-sine":ql(.39,.575,.565,1),"ease-in-out-sine":ql(.445,.05,.55,.95),"ease-in-quad":ql(.55,.085,.68,.53),"ease-out-quad":ql(.25,.46,.45,.94),"ease-in-out-quad":ql(.455,.03,.515,.955),"ease-in-cubic":ql(.55,.055,.675,.19),"ease-out-cubic":ql(.215,.61,.355,1),"ease-in-out-cubic":ql(.645,.045,.355,1),"ease-in-quart":ql(.895,.03,.685,.22),"ease-out-quart":ql(.165,.84,.44,1),"ease-in-out-quart":ql(.77,0,.175,1),"ease-in-quint":ql(.755,.05,.855,.06),"ease-out-quint":ql(.23,1,.32,1),"ease-in-out-quint":ql(.86,0,.07,1),"ease-in-expo":ql(.95,.05,.795,.035),"ease-out-expo":ql(.19,1,.22,1),"ease-in-out-expo":ql(1,0,0,1),"ease-in-circ":ql(.6,.04,.98,.335),"ease-out-circ":ql(.075,.82,.165,1),"ease-in-out-circ":ql(.785,.135,.15,.86),spring:function(e,t,n){if(0===n)return Wl.linear;var r=Yl(e,t,n);return function(e,t,n){return e+(t-e)*r(n)}},"cubic-bezier":ql};function Ul(e,t,n,r,a){if(1===r)return n;if(t===n)return n;var i=a(t,n,r);return null==e||((e.roundValue||e.color)&&(i=Math.round(i)),void 0!==e.min&&(i=Math.max(i,e.min)),void 0!==e.max&&(i=Math.min(i,e.max))),i}function Hl(e,t){return null!=e.pfValue||null!=e.value?null==e.pfValue||null!=t&&"%"===t.type.units?e.value:e.pfValue:e}function Kl(e,t,n,r,a){var i=null!=a?a.type:null;n<0?n=0:n>1&&(n=1);var o=Hl(e,a),s=Hl(t,a);if(Q(o)&&Q(s))return Ul(i,o,s,n,r);if(Z(o)&&Z(s)){for(var l=[],u=0;u0?("spring"===d&&h.push(o.duration),o.easingImpl=Wl[d].apply(null,h)):o.easingImpl=Wl[d]}var f,p=o.easingImpl;if(f=0===o.duration?1:(n-l)/o.duration,o.applying&&(f=o.progress),f<0?f=0:f>1&&(f=1),null==o.delay){var v=o.startPosition,g=o.position;if(g&&a&&!e.locked()){var y={};Zl(v.x,g.x)&&(y.x=Kl(v.x,g.x,f,p)),Zl(v.y,g.y)&&(y.y=Kl(v.y,g.y,f,p)),e.position(y)}var m=o.startPan,b=o.pan,x=i.pan,w=null!=b&&r;w&&(Zl(m.x,b.x)&&(x.x=Kl(m.x,b.x,f,p)),Zl(m.y,b.y)&&(x.y=Kl(m.y,b.y,f,p)),e.emit("pan"));var E=o.startZoom,k=o.zoom,T=null!=k&&r;T&&(Zl(E,k)&&(i.zoom=en(i.minZoom,Kl(E,k,f,p),i.maxZoom)),e.emit("zoom")),(w||T)&&e.emit("viewport");var C=o.style;if(C&&C.length>0&&a){for(var P=0;P=0;t--){(0,e[t])()}e.splice(0,e.length)},c=i.length-1;c>=0;c--){var d=i[c],h=d._private;h.stopped?(i.splice(c,1),h.hooked=!1,h.playing=!1,h.started=!1,u(h.frames)):(h.playing||h.applying)&&(h.playing&&h.applying&&(h.applying=!1),h.started||$l(0,d,e),Gl(t,d,e,n),h.applying&&(h.applying=!1),u(h.frames),null!=h.step&&h.step(e),d.completed()&&(i.splice(c,1),h.hooked=!1,h.playing=!1,h.started=!1,u(h.completes)),s=!0)}return n||0!==i.length||0!==o.length||r.push(t),s}for(var i=!1,o=0;o0?t.notify("draw",n):t.notify("draw")),n.unmerge(r),t.emit("step")}var Jl={animate:wo.animate(),animation:wo.animation(),animated:wo.animated(),clearQueue:wo.clearQueue(),delay:wo.delay(),delayAnimation:wo.delayAnimation(),stop:wo.stop(),addToAnimationPool:function(e){this.styleEnabled()&&this._private.aniEles.merge(e)},stopAnimationLoop:function(){this._private.animationsRunning=!1},startAnimationLoop:function(){var e=this;if(e._private.animationsRunning=!0,e.styleEnabled()){var t=e.renderer();t&&t.beforeRender?t.beforeRender((function(t,n){Ql(n,e)}),t.beforeRenderPriorities.animations):function t(){e._private.animationsRunning&&Le((function(n){Ql(n,e),t()}))}()}}},eu={qualifierCompare:function(e,t){return null==e||null==t?null==e&&null==t:e.sameText(t)},eventMatches:function(e,t,n){var r=t.qualifier;return null==r||e!==n.target&&te(n.target)&&r.matches(n.target)},addEventFields:function(e,t){t.cy=e,t.target=e},callbackContext:function(e,t,n){return null!=t.qualifier?n.target:e}},tu=function(e){return K(e)?new is(e):e},nu={createEmitter:function(){var e=this._private;return e.emitter||(e.emitter=new rl(eu,this)),this},emitter:function(){return this._private.emitter},on:function(e,t,n){return this.emitter().on(e,tu(t),n),this},removeListener:function(e,t,n){return this.emitter().removeListener(e,tu(t),n),this},removeAllListeners:function(){return this.emitter().removeAllListeners(),this},one:function(e,t,n){return this.emitter().one(e,tu(t),n),this},once:function(e,t,n){return this.emitter().one(e,tu(t),n),this},emit:function(e,t){return this.emitter().emit(e,t),this},emitAndNotify:function(e,t){return this.emit(e),this.notify(e,t),this}};wo.eventAliasesOn(nu);var ru={png:function(e){return e=e||{},this._private.renderer.png(e)},jpg:function(e){var t=this._private.renderer;return(e=e||{}).bg=e.bg||"#fff",t.jpg(e)}};ru.jpeg=ru.jpg;var au={layout:function(e){var t=this;if(null!=e)if(null!=e.name){var n=e.name,r=t.extension("layout",n);if(null!=r){var a;a=K(e.eles)?t.$(e.eles):null!=e.eles?e.eles:t.$();var i=new r(be({},e,{cy:t,eles:a}));return i}at("No such layout `"+n+"` found. Did you forget to import it and `cytoscape.use()` it?")}else at("A `name` must be specified to make a layout");else at("Layout options must be specified to make a layout")}};au.createLayout=au.makeLayout=au.layout;var iu={notify:function(e,t){var n=this._private;if(this.batching()){n.batchNotifications=n.batchNotifications||{};var r=n.batchNotifications[e]=n.batchNotifications[e]||this.collection();null!=t&&r.merge(t)}else if(n.notificationsEnabled){var a=this.renderer();!this.destroyed()&&a&&a.notify(e,t)}},notifications:function(e){var t=this._private;return void 0===e?t.notificationsEnabled:(t.notificationsEnabled=!!e,this)},noNotifications:function(e){this.notifications(!1),e(),this.notifications(!0)},batching:function(){return this._private.batchCount>0},startBatch:function(){var e=this._private;return null==e.batchCount&&(e.batchCount=0),0===e.batchCount&&(e.batchStyleEles=this.collection(),e.batchNotifications={}),e.batchCount++,this},endBatch:function(){var e=this._private;if(0===e.batchCount)return this;if(e.batchCount--,0===e.batchCount){e.batchStyleEles.updateStyle();var t=this.renderer();Object.keys(e.batchNotifications).forEach((function(n){var r=e.batchNotifications[n];r.empty()?t.notify(n):t.notify(n,r)}))}return this},batch:function(e){return this.startBatch(),e(),this.endBatch(),this},batchData:function(e){var t=this;return this.batch((function(){for(var n=Object.keys(e),r=0;r0;)t.removeChild(t.childNodes[0]);e._private.renderer=null,e.mutableElements().forEach((function(e){var t=e._private;t.rscratch={},t.rstyle={},t.animation.current=[],t.animation.queue=[]}))},onRender:function(e){return this.on("render",e)},offRender:function(e){return this.off("render",e)}};su.invalidateDimensions=su.resize;var lu={collection:function(e,t){return K(e)?this.$(e):ee(e)?e.collection():Z(e)?(t||(t={}),new Vl(this,e,t.unique,t.removed)):new Vl(this)},nodes:function(e){var t=this.$((function(e){return e.isNode()}));return e?t.filter(e):t},edges:function(e){var t=this.$((function(e){return e.isEdge()}));return e?t.filter(e):t},$:function(e){var t=this._private.elements;return e?t.filter(e):t.spawnSelf()},mutableElements:function(){return this._private.elements}};lu.elements=lu.filter=lu.$;var uu={},cu="t";uu.apply=function(e){for(var t=this,n=t._private.cy.collection(),r=0;r0;if(h||d&&f){var p=void 0;h&&f||h?p=u.properties:f&&(p=u.mappedProperties);for(var v=0;v1&&(g=1),s.color){var w=a.valueMin[0],E=a.valueMax[0],k=a.valueMin[1],T=a.valueMax[1],C=a.valueMin[2],P=a.valueMax[2],S=null==a.valueMin[3]?1:a.valueMin[3],B=null==a.valueMax[3]?1:a.valueMax[3],D=[Math.round(w+(E-w)*g),Math.round(k+(T-k)*g),Math.round(C+(P-C)*g),Math.round(S+(B-S)*g)];n={bypass:a.bypass,name:a.name,value:D,strValue:"rgb("+D[0]+", "+D[1]+", "+D[2]+")"}}else{if(!s.number)return!1;var _=a.valueMin+(a.valueMax-a.valueMin)*g;n=this.parse(a.name,_,a.bypass,h)}if(!n)return v(),!1;n.mapping=a,a=n;break;case o.data:for(var A=a.field.split("."),M=d.data,R=0;R0&&i>0){for(var s={},l=!1,u=0;u0?e.delayAnimation(o).play().promise().then(t):t()})).then((function(){return e.animation({style:s,duration:i,easing:e.pstyle("transition-timing-function").value,queue:!1}).play().promise()})).then((function(){n.removeBypasses(e,a),e.emitAndNotify("style"),r.transitioning=!1}))}else r.transitioning&&(this.removeBypasses(e,a),e.emitAndNotify("style"),r.transitioning=!1)},uu.checkTrigger=function(e,t,n,r,a,i){var o=this.properties[t],s=a(o);e.removed()||null!=s&&s(n,r,e)&&i(o)},uu.checkZOrderTrigger=function(e,t,n,r){var a=this;this.checkTrigger(e,t,n,r,(function(e){return e.triggersZOrder}),(function(){a._private.cy.notify("zorder",e)}))},uu.checkBoundsTrigger=function(e,t,n,r){this.checkTrigger(e,t,n,r,(function(e){return e.triggersBounds}),(function(t){e.dirtyCompoundBoundsCache(),e.dirtyBoundingBoxCache()}))},uu.checkConnectedEdgesBoundsTrigger=function(e,t,n,r){this.checkTrigger(e,t,n,r,(function(e){return e.triggersBoundsOfConnectedEdges}),(function(t){e.connectedEdges().forEach((function(e){e.dirtyBoundingBoxCache()}))}))},uu.checkParallelEdgesBoundsTrigger=function(e,t,n,r){this.checkTrigger(e,t,n,r,(function(e){return e.triggersBoundsOfParallelEdges}),(function(t){e.parallelEdges().forEach((function(e){e.dirtyBoundingBoxCache()}))}))},uu.checkTriggers=function(e,t,n,r){e.dirtyStyleCache(),this.checkZOrderTrigger(e,t,n,r),this.checkBoundsTrigger(e,t,n,r),this.checkConnectedEdgesBoundsTrigger(e,t,n,r),this.checkParallelEdgesBoundsTrigger(e,t,n,r)};var du={applyBypass:function(e,t,n,r){var a=[];if("*"===t||"**"===t){if(void 0!==n)for(var i=0;it.length?i.substr(t.length):""}function s(){n=n.length>r.length?n.substr(r.length):""}for(i=i.replace(/[/][*](\s|.)+?[*][/]/g,"");;){if(i.match(/^\s*$/))break;var l=i.match(/^\s*((?:.|\s)+?)\s*\{((?:.|\s)+?)\}/);if(!l){ot("Halting stylesheet parsing: String stylesheet contains more to parse but no selector and block found in: "+i);break}t=l[0];var u=l[1];if("core"!==u)if(new is(u).invalid){ot("Skipping parsing of block: Invalid selector found in string stylesheet: "+u),o();continue}var c=l[2],d=!1;n=c;for(var h=[];;){if(n.match(/^\s*$/))break;var f=n.match(/^\s*(.+?)\s*:\s*(.+?)(?:\s*;|\s*$)/);if(!f){ot("Skipping parsing of block: Invalid formatting of style property and value definitions found in:"+c),d=!0;break}r=f[0];var p=f[1],v=f[2];if(this.properties[p])a.parse(p,v)?(h.push({name:p,val:v}),s()):(ot("Skipping property: Invalid property definition in: "+r),s());else ot("Skipping property: Invalid property name in: "+r),s()}if(d){o();break}a.selector(u);for(var g=0;g=7&&"d"===t[0]&&(u=new RegExp(s.data.regex).exec(t))){if(n)return!1;var h=s.data;return{name:e,value:u,strValue:""+t,mapped:h,field:u[1],bypass:n}}if(t.length>=10&&"m"===t[0]&&(c=new RegExp(s.mapData.regex).exec(t))){if(n)return!1;if(d.multiple)return!1;var f=s.mapData;if(!d.color&&!d.number)return!1;var p=this.parse(e,c[4]);if(!p||p.mapped)return!1;var v=this.parse(e,c[5]);if(!v||v.mapped)return!1;if(p.pfValue===v.pfValue||p.strValue===v.strValue)return ot("`"+e+": "+t+"` is not a valid mapper because the output range is zero; converting to `"+e+": "+p.strValue+"`"),this.parse(e,p.strValue);if(d.color){var g=p.value,y=v.value;if(!(g[0]!==y[0]||g[1]!==y[1]||g[2]!==y[2]||g[3]!==y[3]&&(null!=g[3]&&1!==g[3]||null!=y[3]&&1!==y[3])))return!1}return{name:e,value:c,strValue:""+t,mapped:f,field:c[1],fieldMin:parseFloat(c[2]),fieldMax:parseFloat(c[3]),valueMin:p.value,valueMax:v.value,bypass:n}}}if(d.multiple&&"multiple"!==r){var m;if(m=l?t.split(/\s+/):Z(t)?t:[t],d.evenMultiple&&m.length%2!=0)return null;for(var b=[],x=[],w=[],E="",k=!1,T=0;T0?" ":"")+C.strValue}return d.validate&&!d.validate(b,x)?null:d.singleEnum&&k?1===b.length&&K(b[0])?{name:e,value:b[0],strValue:b[0],bypass:n}:null:{name:e,value:b,pfValue:w,strValue:E,bypass:n,units:x}}var P,S,B=function(){for(var r=0;rd.max||d.strictMax&&t===d.max))return null;var R={name:e,value:t,strValue:""+t+(D||""),units:D,bypass:n};return d.unitless||"px"!==D&&"em"!==D?R.pfValue=t:R.pfValue="px"!==D&&D?this.getEmSizeInPixels()*t:t,"ms"!==D&&"s"!==D||(R.pfValue="ms"===D?t:1e3*t),"deg"!==D&&"rad"!==D||(R.pfValue="rad"===D?t:(P=t,Math.PI*P/180)),"%"===D&&(R.pfValue=t/100),R}if(d.propList){var I=[],N=""+t;if("none"===N);else{for(var L=N.split(/\s*,\s*|\s+/),z=0;z0&&l>0&&!isNaN(n.w)&&!isNaN(n.h)&&n.w>0&&n.h>0)return{zoom:o=(o=(o=Math.min((s-2*t)/n.w,(l-2*t)/n.h))>this._private.maxZoom?this._private.maxZoom:o)=n.minZoom&&(n.maxZoom=t),this},minZoom:function(e){return void 0===e?this._private.minZoom:this.zoomRange({min:e})},maxZoom:function(e){return void 0===e?this._private.maxZoom:this.zoomRange({max:e})},getZoomedViewport:function(e){var t,n,r=this._private,a=r.pan,i=r.zoom,o=!1;if(r.zoomingEnabled||(o=!0),Q(e)?n=e:$(e)&&(n=e.level,null!=e.position?t=Yt(e.position,i,a):null!=e.renderedPosition&&(t=e.renderedPosition),null==t||r.panningEnabled||(o=!0)),n=(n=n>r.maxZoom?r.maxZoom:n)t.maxZoom||!t.zoomingEnabled?i=!0:(t.zoom=s,a.push("zoom"))}if(r&&(!i||!e.cancelOnFailedZoom)&&t.panningEnabled){var l=e.pan;Q(l.x)&&(t.pan.x=l.x,o=!1),Q(l.y)&&(t.pan.y=l.y,o=!1),o||a.push("pan")}return a.length>0&&(a.push("viewport"),this.emit(a.join(" ")),this.notify("viewport")),this},center:function(e){var t=this.getCenterPan(e);return t&&(this._private.pan=t,this.emit("pan viewport"),this.notify("viewport")),this},getCenterPan:function(e,t){if(this._private.panningEnabled){if(K(e)){var n=e;e=this.mutableElements().filter(n)}else ee(e)||(e=this.mutableElements());if(0!==e.length){var r=e.boundingBox(),a=this.width(),i=this.height();return{x:(a-(t=void 0===t?this._private.zoom:t)*(r.x1+r.x2))/2,y:(i-t*(r.y1+r.y2))/2}}}},reset:function(){return this._private.panningEnabled&&this._private.zoomingEnabled?(this.viewport({pan:{x:0,y:0},zoom:1}),this):this},invalidateSize:function(){this._private.sizeCache=null},size:function(){var e,t,n=this._private,r=n.container,a=this;return n.sizeCache=n.sizeCache||(r?(e=a.window().getComputedStyle(r),t=function(t){return parseFloat(e.getPropertyValue(t))},{width:r.clientWidth-t("padding-left")-t("padding-right"),height:r.clientHeight-t("padding-top")-t("padding-bottom")}):{width:1,height:1})},width:function(){return this.size().width},height:function(){return this.size().height},extent:function(){var e=this._private.pan,t=this._private.zoom,n=this.renderedExtent(),r={x1:(n.x1-e.x)/t,x2:(n.x2-e.x)/t,y1:(n.y1-e.y)/t,y2:(n.y2-e.y)/t};return r.w=r.x2-r.x1,r.h=r.y2-r.y1,r},renderedExtent:function(){var e=this.width(),t=this.height();return{x1:0,y1:0,x2:e,y2:t,w:e,h:t}},multiClickDebounceTime:function(e){return e?(this._private.multiClickDebounceTime=e,this):this._private.multiClickDebounceTime}};wu.centre=wu.center,wu.autolockNodes=wu.autolock,wu.autoungrabifyNodes=wu.autoungrabify;var Eu={data:wo.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeData:wo.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),scratch:wo.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:wo.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0})};Eu.attr=Eu.data,Eu.removeAttr=Eu.removeData;var ku=function(e){var t=this,n=(e=be({},e)).container;n&&!J(n)&&J(n[0])&&(n=n[0]);var r=n?n._cyreg:null;(r=r||{})&&r.cy&&(r.cy.destroy(),r={});var a=r.readies=r.readies||[];n&&(n._cyreg=r),r.cy=t;var i=void 0!==f&&void 0!==n&&!e.headless,o=e;o.layout=be({name:i?"grid":"null"},o.layout),o.renderer=be({name:i?"canvas":"null"},o.renderer);var s=function(e,t,n){return void 0!==t?t:void 0!==n?n:e},l=this._private={container:n,ready:!1,options:o,elements:new Vl(this),listeners:[],aniEles:new Vl(this),data:o.data||{},scratch:{},layout:null,renderer:null,destroyed:!1,notificationsEnabled:!0,minZoom:1e-50,maxZoom:1e50,zoomingEnabled:s(!0,o.zoomingEnabled),userZoomingEnabled:s(!0,o.userZoomingEnabled),panningEnabled:s(!0,o.panningEnabled),userPanningEnabled:s(!0,o.userPanningEnabled),boxSelectionEnabled:s(!0,o.boxSelectionEnabled),autolock:s(!1,o.autolock,o.autolockNodes),autoungrabify:s(!1,o.autoungrabify,o.autoungrabifyNodes),autounselectify:s(!1,o.autounselectify),styleEnabled:void 0===o.styleEnabled?i:o.styleEnabled,zoom:Q(o.zoom)?o.zoom:1,pan:{x:$(o.pan)&&Q(o.pan.x)?o.pan.x:0,y:$(o.pan)&&Q(o.pan.y)?o.pan.y:0},animation:{current:[],queue:[]},hasCompoundNodes:!1,multiClickDebounceTime:s(250,o.multiClickDebounceTime)};this.createEmitter(),this.selectionType(o.selectionType),this.zoomRange({min:o.minZoom,max:o.maxZoom});l.styleEnabled&&t.setStyle([]);var u=be({},o,o.renderer);t.initRenderer(u);!function(e,t){if(e.some(oe))return Kr.all(e).then(t);t(e)}([o.style,o.elements],(function(e){var n=e[0],i=e[1];l.styleEnabled&&t.style().append(n),function(e,n,r){t.notifications(!1);var a=t.mutableElements();a.length>0&&a.remove(),null!=e&&($(e)||Z(e))&&t.add(e),t.one("layoutready",(function(e){t.notifications(!0),t.emit(e),t.one("load",n),t.emitAndNotify("load")})).one("layoutstop",(function(){t.one("done",r),t.emit("done")}));var i=be({},t._private.options.layout);i.eles=t.elements(),t.layout(i).run()}(i,(function(){t.startAnimationLoop(),l.ready=!0,G(o.ready)&&t.on("ready",o.ready);for(var e=0;e0,l=!!t.boundingBox,u=tn(l?t.boundingBox:structuredClone(n.extent()));if(ee(t.roots))e=t.roots;else if(Z(t.roots)){for(var c=[],d=0;d0;){var B=C.shift(),D=T(B,P);if(D)B.outgoers().filter((function(e){return e.isNode()&&r.has(e)})).forEach(S);else if(null===D){ot("Detected double maximal shift for node `"+B.id()+"`. Bailing maximal adjustment due to cycle. Use `options.maximal: true` only on DAGs.");break}}}var _=0;if(t.avoidOverlap)for(var A=0;A0&&y[0].length<=3?i/2:0),s=2*Math.PI/y[r].length*a;return 0===r&&1===y[0].length&&(o=1),{x:q+o*Math.cos(s),y:W+o*Math.sin(s)}}var c=y[r].length,d=Math.max(1===c?0:l?(u.w-2*t.padding-U.w)/((t.grid?G:c)-1):(u.w-2*t.padding-U.w)/((t.grid?G:c)+1),_);return{x:q+(a+1-(c+1)/2)*d,y:W+(r+1-(O+1)/2)*H}}(e),u,$[t.direction])})),this};var _u={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,radius:void 0,startAngle:1.5*Math.PI,sweep:void 0,clockwise:!0,sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(e,t){return!0},ready:void 0,stop:void 0,transform:function(e,t){return t}};function Au(e){this.options=be({},_u,e)}Au.prototype.run=function(){var e=this.options,t=e,n=e.cy,r=t.eles,a=void 0!==t.counterclockwise?!t.counterclockwise:t.clockwise,i=r.nodes().not(":parent");t.sort&&(i=i.sort(t.sort));for(var o,s=tn(t.boundingBox?t.boundingBox:{x1:0,y1:0,w:n.width(),h:n.height()}),l=s.x1+s.w/2,u=s.y1+s.h/2,c=(void 0===t.sweep?2*Math.PI-2*Math.PI/i.length:t.sweep)/Math.max(1,i.length-1),d=0,h=0;h1&&t.avoidOverlap){d*=1.75;var g=Math.cos(c)-Math.cos(0),y=Math.sin(c)-Math.sin(0),m=Math.sqrt(d*d/(g*g+y*y));o=Math.max(m,o)}return r.nodes().layoutPositions(this,t,(function(e,n){var r=t.startAngle+n*c*(a?1:-1),i=o*Math.cos(r),s=o*Math.sin(r);return{x:l+i,y:u+s}})),this};var Mu,Ru={fit:!0,padding:30,startAngle:1.5*Math.PI,sweep:void 0,clockwise:!0,equidistant:!1,minNodeSpacing:10,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,height:void 0,width:void 0,spacingFactor:void 0,concentric:function(e){return e.degree()},levelWidth:function(e){return e.maxDegree()/4},animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(e,t){return!0},ready:void 0,stop:void 0,transform:function(e,t){return t}};function Iu(e){this.options=be({},Ru,e)}Iu.prototype.run=function(){for(var e=this.options,t=e,n=void 0!==t.counterclockwise?!t.counterclockwise:t.clockwise,r=e.cy,a=t.eles,i=a.nodes().not(":parent"),o=tn(t.boundingBox?t.boundingBox:{x1:0,y1:0,w:r.width(),h:r.height()}),s=o.x1+o.w/2,l=o.y1+o.h/2,u=[],c=0,d=0;d0)Math.abs(m[0].value-x.value)>=g&&(m=[],y.push(m));m.push(x)}var w=c+t.minNodeSpacing;if(!t.avoidOverlap){var E=y.length>0&&y[0].length>1,k=(Math.min(o.w,o.h)/2-w)/(y.length+E?1:0);w=Math.min(w,k)}for(var T=0,C=0;C1&&t.avoidOverlap){var D=Math.cos(B)-Math.cos(0),_=Math.sin(B)-Math.sin(0),A=Math.sqrt(w*w/(D*D+_*_));T=Math.max(A,T)}P.r=T,T+=w}if(t.equidistant){for(var M=0,R=0,I=0;I=e.numIter)&&(Yu(r,e),r.temperature=r.temperature*e.coolingFactor,!(r.temperature=e.animationThreshold&&i(),Le(c)):(tc(r,e),s())};c()}else{for(;u;)u=o(l),l++;tc(r,e),s()}return this},Lu.prototype.stop=function(){return this.stopped=!0,this.thread&&this.thread.stop(),this.emit("layoutstop"),this},Lu.prototype.destroy=function(){return this.thread&&this.thread.stop(),this};var zu=function(e,t,n){for(var r=n.eles.edges(),a=n.eles.nodes(),i=tn(n.boundingBox?n.boundingBox:{x1:0,y1:0,w:e.width(),h:e.height()}),o={isCompound:e.hasCompoundNodes(),layoutNodes:[],idToIndex:{},nodeSize:a.size(),graphSet:[],indexToGraph:[],layoutEdges:[],edgeSize:r.size(),temperature:n.initialTemp,clientWidth:i.w,clientHeight:i.h,boundingBox:i},s=n.eles.components(),l={},u=0;u0){o.graphSet.push(w);for(u=0;ur.count?0:r.graph},Vu=function(e,t,n,r){var a=r.graphSet[n];if(-10)var s=(u=r.nodeOverlap*o)*a/(v=Math.sqrt(a*a+i*i)),l=u*i/v;else{var u,c=Ku(e,a,i),d=Ku(t,-1*a,-1*i),h=d.x-c.x,f=d.y-c.y,p=h*h+f*f,v=Math.sqrt(p);s=(u=(e.nodeRepulsion+t.nodeRepulsion)/p)*h/v,l=u*f/v}e.isLocked||(e.offsetX-=s,e.offsetY-=l),t.isLocked||(t.offsetX+=s,t.offsetY+=l)}},Hu=function(e,t,n,r){if(n>0)var a=e.maxX-t.minX;else a=t.maxX-e.minX;if(r>0)var i=e.maxY-t.minY;else i=t.maxY-e.minY;return a>=0&&i>=0?Math.sqrt(a*a+i*i):0},Ku=function(e,t,n){var r=e.positionX,a=e.positionY,i=e.height||1,o=e.width||1,s=n/t,l=i/o,u={};return 0===t&&0n?(u.x=r,u.y=a+i/2,u):0t&&-1*l<=s&&s<=l?(u.x=r-o/2,u.y=a-o*n/2/t,u):0=l)?(u.x=r+i*t/2/n,u.y=a+i/2,u):0>n&&(s<=-1*l||s>=l)?(u.x=r-i*t/2/n,u.y=a-i/2,u):u},Gu=function(e,t){for(var n=0;n1){var p=t.gravity*d/f,v=t.gravity*h/f;c.offsetX+=p,c.offsetY+=v}}}}},$u=function(e,t){var n=[],r=0,a=-1;for(n.push.apply(n,e.graphSet[0]),a+=e.graphSet[0].length;r<=a;){var i=n[r++],o=e.idToIndex[i],s=e.layoutNodes[o],l=s.children;if(0n)var a={x:n*e/r,y:n*t/r};else a={x:e,y:t};return a},ec=function(e,t){var n=e.parentId;if(null!=n){var r=t.layoutNodes[t.idToIndex[n]],a=!1;return(null==r.maxX||e.maxX+r.padRight>r.maxX)&&(r.maxX=e.maxX+r.padRight,a=!0),(null==r.minX||e.minX-r.padLeftr.maxY)&&(r.maxY=e.maxY+r.padBottom,a=!0),(null==r.minY||e.minY-r.padTopp&&(d+=f+t.componentSpacing,c=0,h=0,f=0)}}},nc={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,avoidOverlapPadding:10,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,condense:!1,rows:void 0,cols:void 0,position:function(e){},sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(e,t){return!0},ready:void 0,stop:void 0,transform:function(e,t){return t}};function rc(e){this.options=be({},nc,e)}rc.prototype.run=function(){var e=this.options,t=e,n=e.cy,r=t.eles,a=r.nodes().not(":parent");t.sort&&(a=a.sort(t.sort));var i=tn(t.boundingBox?t.boundingBox:{x1:0,y1:0,w:n.width(),h:n.height()});if(0===i.h||0===i.w)r.nodes().layoutPositions(this,t,(function(e){return{x:i.x1,y:i.y1}}));else{var o=a.size(),s=Math.sqrt(o*i.h/i.w),l=Math.round(s),u=Math.round(i.w/i.h*s),c=function(e){if(null==e)return Math.min(l,u);Math.min(l,u)==l?l=e:u=e},d=function(e){if(null==e)return Math.max(l,u);Math.max(l,u)==l?l=e:u=e},h=t.rows,f=null!=t.cols?t.cols:t.columns;if(null!=h&&null!=f)l=h,u=f;else if(null!=h&&null==f)l=h,u=Math.ceil(o/l);else if(null==h&&null!=f)u=f,l=Math.ceil(o/u);else if(u*l>o){var p=c(),v=d();(p-1)*v>=o?c(p-1):(v-1)*p>=o&&d(v-1)}else for(;u*l=o?d(y+1):c(g+1)}var m=i.w/u,b=i.h/l;if(t.condense&&(m=0,b=0),t.avoidOverlap)for(var x=0;x=u&&(A=0,_++)},R={},I=0;I(r=yn(e,t,x[w],x[w+1],x[w+2],x[w+3])))return g(n,r),!0}else if("bezier"===i.edgeType||"multibezier"===i.edgeType||"self"===i.edgeType||"compound"===i.edgeType)for(x=i.allpts,w=0;w+5(r=gn(e,t,x[w],x[w+1],x[w+2],x[w+3],x[w+4],x[w+5])))return g(n,r),!0;m=m||a.source,b=b||a.target;var E=o.getArrowWidth(l,c),k=[{name:"source",x:i.arrowStartX,y:i.arrowStartY,angle:i.srcArrowAngle},{name:"target",x:i.arrowEndX,y:i.arrowEndY,angle:i.tgtArrowAngle},{name:"mid-source",x:i.midX,y:i.midY,angle:i.midsrcArrowAngle},{name:"mid-target",x:i.midX,y:i.midY,angle:i.midtgtArrowAngle}];for(w=0;w0&&(y(m),y(b))}function b(e,t,n){return pt(e,t,n)}function x(n,r){var a,i=n._private,o=p;a=r?r+"-":"",n.boundingBox();var s=i.labelBounds[r||"main"],l=n.pstyle(a+"label").value;if("yes"===n.pstyle("text-events").strValue&&l){var u=b(i.rscratch,"labelX",r),c=b(i.rscratch,"labelY",r),d=b(i.rscratch,"labelAngle",r),h=n.pstyle(a+"text-margin-x").pfValue,f=n.pstyle(a+"text-margin-y").pfValue,v=s.x1-o-h,y=s.x2+o-h,m=s.y1-o-f,x=s.y2+o-f;if(d){var w=Math.cos(d),E=Math.sin(d),k=function(e,t){return{x:(e-=u)*w-(t-=c)*E+u,y:e*E+t*w+c}},T=k(v,m),C=k(v,x),P=k(y,m),S=k(y,x),B=[T.x+h,T.y+f,P.x+h,P.y+f,S.x+h,S.y+f,C.x+h,C.y+f];if(mn(e,t,B))return g(n),!0}else if(ln(s,e,t))return g(n),!0}}n&&(l=l.interactive);for(var w=l.length-1;w>=0;w--){var E=l[w];E.isNode()?y(E)||x(E):m(E)||x(E)||x(E,"source")||x(E,"target")}return u},getAllInBox:function(e,t,n,r){var a=this.getCachedZSortedEles().interactive,i=2/this.cy.zoom(),o=[],s=Math.min(e,n),u=Math.max(e,n),c=Math.min(t,r),d=Math.max(t,r),h=tn({x1:e=s,y1:t=c,x2:n=u,y2:r=d}),f=[{x:h.x1,y:h.y1},{x:h.x2,y:h.y1},{x:h.x2,y:h.y2},{x:h.x1,y:h.y2}],p=[[f[0],f[1]],[f[1],f[2]],[f[2],f[3]],[f[3],f[0]]];function v(e,t,n){return pt(e,t,n)}function g(e,t){var n=e._private,r=i;e.boundingBox();var a=n.labelBounds.main;if(!a)return null;var o=v(n.rscratch,"labelX",t),s=v(n.rscratch,"labelY",t),l=v(n.rscratch,"labelAngle",t),u=e.pstyle("text-margin-x").pfValue,c=e.pstyle("text-margin-y").pfValue,d=a.x1-r-u,h=a.x2+r-u,f=a.y1-r-c,p=a.y2+r-c;if(l){var g=Math.cos(l),y=Math.sin(l),m=function(e,t){return{x:(e-=o)*g-(t-=s)*y+o,y:e*y+t*g+s}};return[m(d,f),m(h,f),m(h,p),m(d,p)]}return[{x:d,y:f},{x:h,y:f},{x:h,y:p},{x:d,y:p}]}function y(e,t,n,r){function a(e,t,n){return(n.y-e.y)*(t.x-e.x)>(t.y-e.y)*(n.x-e.x)}return a(e,n,r)!==a(t,n,r)&&a(e,t,n)!==a(e,t,r)}for(var m=0;m0?-(Math.PI-i.ang):Math.PI+i.ang),Lc(t,n,Nc),bc=Ic.nx*Nc.ny-Ic.ny*Nc.nx,xc=Ic.nx*Nc.nx-Ic.ny*-Nc.ny,kc=Math.asin(Math.max(-1,Math.min(1,bc))),Math.abs(kc)<1e-6)return yc=t.x,mc=t.y,void(Cc=Sc=0);wc=1,Ec=!1,xc<0?kc<0?kc=Math.PI+kc:(kc=Math.PI-kc,wc=-1,Ec=!0):kc>0&&(wc=-1,Ec=!0),Sc=void 0!==t.radius?t.radius:r,Tc=kc/2,Bc=Math.min(Ic.len/2,Nc.len/2),a?(Pc=Math.abs(Math.cos(Tc)*Sc/Math.sin(Tc)))>Bc?(Pc=Bc,Cc=Math.abs(Pc*Math.sin(Tc)/Math.cos(Tc))):Cc=Sc:(Pc=Math.min(Bc,Sc),Cc=Math.abs(Pc*Math.sin(Tc)/Math.cos(Tc))),Ac=t.x+Nc.nx*Pc,Mc=t.y+Nc.ny*Pc,yc=Ac-Nc.ny*Cc*wc,mc=Mc+Nc.nx*Cc*wc,Dc=t.x+Ic.nx*Pc,_c=t.y+Ic.ny*Pc,Rc=t};function Oc(e,t){0===t.radius?e.lineTo(t.cx,t.cy):e.arc(t.cx,t.cy,t.radius,t.startAngle,t.endAngle,t.counterClockwise)}function Vc(e,t,n,r){var a=!(arguments.length>4&&void 0!==arguments[4])||arguments[4];return 0===r||0===t.radius?{cx:t.x,cy:t.y,radius:0,startX:t.x,startY:t.y,stopX:t.x,stopY:t.y,startAngle:void 0,endAngle:void 0,counterClockwise:void 0}:(zc(e,t,n,r,a),{cx:yc,cy:mc,radius:Cc,startX:Dc,startY:_c,stopX:Ac,stopY:Mc,startAngle:Ic.ang+Math.PI/2*wc,endAngle:Nc.ang-Math.PI/2*wc,counterClockwise:Ec})}var Fc=.01,Xc=Math.sqrt(.02),jc={};function Yc(e){var t=[];if(null!=e){for(var n=0;n0?Math.max(e-t,0):Math.min(e+t,0)},S=P(T,E),B=P(C,k),D=!1;"auto"===g?v=Math.abs(S)>Math.abs(B)?a:r:g===l||g===s?(v=r,D=!0):g!==i&&g!==o||(v=a,D=!0);var _,A=v===r,M=A?B:S,R=A?C:T,I=Kt(R),N=!1;(D&&(m||x)||!(g===s&&R<0||g===l&&R>0||g===i&&R>0||g===o&&R<0)||(M=(I*=-1)*Math.abs(M),N=!0),m)?_=(b<0?1+b:b)*M:_=(b<0?M:0)+b*I;var L=function(e){return Math.abs(e)=Math.abs(M)},z=L(_),O=L(Math.abs(M)-Math.abs(_));if((z||O)&&!N)if(A){var V=Math.abs(R)<=d/2,F=Math.abs(T)<=h/2;if(V){var X=(u.x1+u.x2)/2,j=u.y1,Y=u.y2;n.segpts=[X,j,X,Y]}else if(F){var q=(u.y1+u.y2)/2,W=u.x1,U=u.x2;n.segpts=[W,q,U,q]}else n.segpts=[u.x1,u.y2]}else{var H=Math.abs(R)<=c/2,K=Math.abs(C)<=f/2;if(H){var G=(u.y1+u.y2)/2,Z=u.x1,$=u.x2;n.segpts=[Z,G,$,G]}else if(K){var Q=(u.x1+u.x2)/2,J=u.y1,ee=u.y2;n.segpts=[Q,J,Q,ee]}else n.segpts=[u.x2,u.y1]}else if(A){var te=u.y1+_+(p?d/2*I:0),ne=u.x1,re=u.x2;n.segpts=[ne,te,re,te]}else{var ae=u.x1+_+(p?c/2*I:0),ie=u.y1,oe=u.y2;n.segpts=[ae,ie,ae,oe]}if(n.isRound){var se=e.pstyle("taxi-radius").value,le="arc-radius"===e.pstyle("radius-type").value[0];n.radii=new Array(n.segpts.length/2).fill(se),n.isArcRadius=new Array(n.segpts.length/2).fill(le)}},jc.tryToCorrectInvalidPoints=function(e,t){var n=e._private.rscratch;if("bezier"===n.edgeType){var r=t.srcPos,a=t.tgtPos,i=t.srcW,o=t.srcH,s=t.tgtW,l=t.tgtH,u=t.srcShape,c=t.tgtShape,d=t.srcCornerRadius,h=t.tgtCornerRadius,f=t.srcRs,p=t.tgtRs,v=!Q(n.startX)||!Q(n.startY),g=!Q(n.arrowStartX)||!Q(n.arrowStartY),y=!Q(n.endX)||!Q(n.endY),m=!Q(n.arrowEndX)||!Q(n.arrowEndY),b=3*(this.getArrowWidth(e.pstyle("width").pfValue,e.pstyle("arrow-scale").value)*this.arrowShapeWidth),x=Gt({x:n.ctrlpts[0],y:n.ctrlpts[1]},{x:n.startX,y:n.startY}),w=xv.poolIndex()){var g=p;p=v,v=g}var y=d.srcPos=p.position(),m=d.tgtPos=v.position(),b=d.srcW=p.outerWidth(),x=d.srcH=p.outerHeight(),E=d.tgtW=v.outerWidth(),k=d.tgtH=v.outerHeight(),T=d.srcShape=n.nodeShapes[t.getNodeShape(p)],C=d.tgtShape=n.nodeShapes[t.getNodeShape(v)],P=d.srcCornerRadius="auto"===p.pstyle("corner-radius").value?"auto":p.pstyle("corner-radius").pfValue,S=d.tgtCornerRadius="auto"===v.pstyle("corner-radius").value?"auto":v.pstyle("corner-radius").pfValue,B=d.tgtRs=v._private.rscratch,D=d.srcRs=p._private.rscratch;d.dirCounts={north:0,west:0,south:0,east:0,northwest:0,southwest:0,northeast:0,southeast:0};for(var _=0;_=Xc||(q=Math.sqrt(Math.max(Y*Y,Fc)+Math.max(j*j,Fc)));var W=d.vector={x:Y,y:j},U=d.vectorNorm={x:W.x/q,y:W.y/q},H={x:-U.y,y:U.x};d.nodesOverlap=!Q(q)||C.checkPoint(L[0],L[1],0,E,k,m.x,m.y,S,B)||T.checkPoint(O[0],O[1],0,b,x,y.x,y.y,P,D),d.vectorNormInverse=H,e={nodesOverlap:d.nodesOverlap,dirCounts:d.dirCounts,calculatedIntersection:!0,hasBezier:d.hasBezier,hasUnbundled:d.hasUnbundled,eles:d.eles,srcPos:m,srcRs:B,tgtPos:y,tgtRs:D,srcW:E,srcH:k,tgtW:b,tgtH:x,srcIntn:V,tgtIntn:z,srcShape:C,tgtShape:T,posPts:{x1:X.x2,y1:X.y2,x2:X.x1,y2:X.y1},intersectionPts:{x1:F.x2,y1:F.y2,x2:F.x1,y2:F.y1},vector:{x:-W.x,y:-W.y},vectorNorm:{x:-U.x,y:-U.y},vectorNormInverse:{x:-H.x,y:-H.y}}}var K=N?e:d;M.nodesOverlap=K.nodesOverlap,M.srcIntn=K.srcIntn,M.tgtIntn=K.tgtIntn,M.isRound=R.startsWith("round"),r&&(p.isParent()||p.isChild()||v.isParent()||v.isChild())&&(p.parents().anySame(v)||v.parents().anySame(p)||p.same(v)&&p.isParent())?t.findCompoundLoopPoints(A,K,_,I):p===v?t.findLoopPoints(A,K,_,I):R.endsWith("segments")?t.findSegmentsPoints(A,K):R.endsWith("taxi")?t.findTaxiPoints(A,K):"straight"===R||!I&&d.eles.length%2==1&&_===Math.floor(d.eles.length/2)?t.findStraightEdgePoints(A):t.findBezierPoints(A,K,_,I,N),t.findEndpoints(A),t.tryToCorrectInvalidPoints(A,K),t.checkForInvalidEdgeWarning(A),t.storeAllpts(A),t.storeEdgeProjections(A),t.calculateArrowAngles(A),t.recalculateEdgeLabelProjections(A),t.calculateLabelAngles(A)}},w=0;w0){var J=f,ee=Zt(J,Wt(i)),te=Zt(J,Wt($)),ne=ee;if(te2)Zt(J,{x:$[2],y:$[3]})0){var ge=p,ye=Zt(ge,Wt(i)),me=Zt(ge,Wt(ve)),be=ye;if(me2)Zt(ge,{x:ve[2],y:ve[3]})=u||m){c={cp:v,segment:y};break}}if(c)break}var b=c.cp,x=c.segment,w=(u-h)/x.length,E=x.t1-x.t0,k=s?x.t0+E*w:x.t1-E*w;k=en(0,k,1),t=Jt(b.p0,b.p1,b.p2,k),a=function(e,t,n,r){var a=en(0,r-.001,1),i=en(0,r+.001,1),o=Jt(e,t,n,a),s=Jt(e,t,n,i);return Gc(o,s)}(b.p0,b.p1,b.p2,k);break;case"straight":case"segments":case"haystack":for(var T,C,P,S,B=0,D=r.allpts.length,_=0;_+3=u));_+=2);var A=(u-C)/T;A=en(0,A,1),t=function(e,t,n,r){var a=t.x-e.x,i=t.y-e.y,o=Gt(e,t),s=a/o,l=i/o;return n=null==n?0:n,r=null!=r?r:n*o,{x:e.x+s*r,y:e.y+l*r}}(P,S,A),a=Gc(P,S)}o("labelX",n,t.x),o("labelY",n,t.y),o("labelAutoAngle",n,a)}};u("source"),u("target"),this.applyLabelDimensions(e)}},Hc.applyLabelDimensions=function(e){this.applyPrefixedLabelDimensions(e),e.isEdge()&&(this.applyPrefixedLabelDimensions(e,"source"),this.applyPrefixedLabelDimensions(e,"target"))},Hc.applyPrefixedLabelDimensions=function(e,t){var n=e._private,r=this.getLabelText(e,t),a=Ue(r,e._private.labelDimsKey);if(pt(n.rscratch,"prefixedLabelDimsKey",t)!==a){vt(n.rscratch,"prefixedLabelDimsKey",t,a);var i=this.calculateLabelDimensions(e,r),o=e.pstyle("line-height").pfValue,s=e.pstyle("text-wrap").strValue,l=pt(n.rscratch,"labelWrapCachedLines",t)||[],u="wrap"!==s?1:Math.max(l.length,1),c=i.height/u,d=c*o,h=i.width,f=i.height+(u-1)*(o-1)*c;vt(n.rstyle,"labelWidth",t,h),vt(n.rscratch,"labelWidth",t,h),vt(n.rstyle,"labelHeight",t,f),vt(n.rscratch,"labelHeight",t,f),vt(n.rscratch,"labelLineHeight",t,d)}},Hc.getLabelText=function(e,t){var n=e._private,r=t?t+"-":"",a=e.pstyle(r+"label").strValue,i=e.pstyle("text-transform").value,s=function(e,r){return r?(vt(n.rscratch,e,t,r),r):pt(n.rscratch,e,t)};if(!a)return"";"none"==i||("uppercase"==i?a=a.toUpperCase():"lowercase"==i&&(a=a.toLowerCase()));var l=e.pstyle("text-wrap").value;if("wrap"===l){var u=s("labelKey");if(null!=u&&s("labelWrapKey")===u)return s("labelWrapCachedText");for(var c=a.split("\n"),d=e.pstyle("text-max-width").pfValue,h="anywhere"===e.pstyle("text-overflow-wrap").value,f=[],p=/[\s\u200b]+|$/g,v=0;vd){var b,x="",w=0,E=o(g.matchAll(p));try{for(E.s();!(b=E.n()).done;){var k=b.value,T=k[0],C=g.substring(w,k.index);w=k.index+T.length;var P=0===x.length?C:x+C+T;this.calculateLabelDimensions(e,P).width<=d?x+=C+T:(x&&f.push(x),x=C+T)}}catch(A){E.e(A)}finally{E.f()}x.match(/^[\s\u200b]+$/)||f.push(x)}else f.push(g)}s("labelWrapCachedLines",f),a=s("labelWrapCachedText",f.join("\n")),s("labelWrapKey",u)}else if("ellipsis"===l){var S=e.pstyle("text-max-width").pfValue,B="",D=!1;if(this.calculateLabelDimensions(e,a).widthS)break;B+=a[_],_===a.length-1&&(D=!0)}return D||(B+="\u2026"),B}return a},Hc.getLabelJustification=function(e){var t=e.pstyle("text-justification").strValue,n=e.pstyle("text-halign").strValue;if("auto"!==t)return t;if(!e.isNode())return"center";switch(n){case"left":return"right";case"right":return"left";default:return"center"}},Hc.calculateLabelDimensions=function(e,t){var n=this.cy.window().document,r=e.pstyle("font-style").strValue,a=e.pstyle("font-size").pfValue,i=e.pstyle("font-family").strValue,o=e.pstyle("font-weight").strValue,s=this.labelCalcCanvas,l=this.labelCalcCanvasContext;if(!s){s=this.labelCalcCanvas=n.createElement("canvas"),l=this.labelCalcCanvasContext=s.getContext("2d");var u=s.style;u.position="absolute",u.left="-9999px",u.top="-9999px",u.zIndex="-1",u.visibility="hidden",u.pointerEvents="none"}l.font="".concat(r," ").concat(o," ").concat(a,"px ").concat(i);for(var c=0,d=0,h=t.split("\n"),f=0;f1&&void 0!==arguments[1])||arguments[1];if(t.merge(e),n)for(var r=0;r=e.desktopTapThreshold2}var P=a(t);g&&(e.hoverData.tapholdCancelled=!0);n=!0,r(v,["mousemove","vmousemove","tapdrag"],t,{x:c[0],y:c[1]});var S=function(e){return{originalEvent:t,type:e,position:{x:c[0],y:c[1]}}},B=function(){e.data.bgActivePosistion=void 0,e.hoverData.selecting||o.emit(S("boxstart")),p[4]=1,e.hoverData.selecting=!0,e.redrawHint("select",!0),e.redraw()};if(3===e.hoverData.which){if(g){var D=S("cxtdrag");b?b.emit(D):o.emit(D),e.hoverData.cxtDragged=!0,e.hoverData.cxtOver&&v===e.hoverData.cxtOver||(e.hoverData.cxtOver&&e.hoverData.cxtOver.emit(S("cxtdragout")),e.hoverData.cxtOver=v,v&&v.emit(S("cxtdragover")))}}else if(e.hoverData.dragging){if(n=!0,o.panningEnabled()&&o.userPanningEnabled()){var _;if(e.hoverData.justStartedPan){var A=e.hoverData.mdownPos;_={x:(c[0]-A[0])*s,y:(c[1]-A[1])*s},e.hoverData.justStartedPan=!1}else _={x:x[0]*s,y:x[1]*s};o.panBy(_),o.emit(S("dragpan")),e.hoverData.dragged=!0}c=e.projectIntoViewport(t.clientX,t.clientY)}else if(1!=p[4]||null!=b&&!b.pannable()){if(b&&b.pannable()&&b.active()&&b.unactivate(),b&&b.grabbed()||v==y||(y&&r(y,["mouseout","tapdragout"],t,{x:c[0],y:c[1]}),v&&r(v,["mouseover","tapdragover"],t,{x:c[0],y:c[1]}),e.hoverData.last=v),b)if(g){if(o.boxSelectionEnabled()&&P)b&&b.grabbed()&&(d(w),b.emit(S("freeon")),w.emit(S("free")),e.dragData.didDrag&&(b.emit(S("dragfreeon")),w.emit(S("dragfree")))),B();else if(b&&b.grabbed()&&e.nodeIsDraggable(b)){var M=!e.dragData.didDrag;M&&e.redrawHint("eles",!0),e.dragData.didDrag=!0,e.hoverData.draggingEles||u(w,{inDragLayer:!0});var R={x:0,y:0};if(Q(x[0])&&Q(x[1])&&(R.x+=x[0],R.y+=x[1],M)){var I=e.hoverData.dragDelta;I&&Q(I[0])&&Q(I[1])&&(R.x+=I[0],R.y+=I[1])}e.hoverData.draggingEles=!0,w.silentShift(R).emit(S("position")).emit(S("drag")),e.redrawHint("drag",!0),e.redraw()}}else!function(){var t=e.hoverData.dragDelta=e.hoverData.dragDelta||[];0===t.length?(t.push(x[0]),t.push(x[1])):(t[0]+=x[0],t[1]+=x[1])}();n=!0}else if(g){if(e.hoverData.dragging||!o.boxSelectionEnabled()||!P&&o.panningEnabled()&&o.userPanningEnabled()){if(!e.hoverData.selecting&&o.panningEnabled()&&o.userPanningEnabled()){i(b,e.hoverData.downs)&&(e.hoverData.dragging=!0,e.hoverData.justStartedPan=!0,p[4]=0,e.data.bgActivePosistion=Wt(h),e.redrawHint("select",!0),e.redraw())}}else B();b&&b.pannable()&&b.active()&&b.unactivate()}return p[2]=c[0],p[3]=c[1],n?(t.stopPropagation&&t.stopPropagation(),t.preventDefault&&t.preventDefault(),!1):void 0}}),!1),e.registerBinding(t,"mouseup",(function(t){if((1!==e.hoverData.which||1===t.which||!e.hoverData.capture)&&e.hoverData.capture){e.hoverData.capture=!1;var i=e.cy,o=e.projectIntoViewport(t.clientX,t.clientY),s=e.selection,l=e.findNearestElement(o[0],o[1],!0,!1),u=e.dragData.possibleDragElements,c=e.hoverData.down,h=a(t);e.data.bgActivePosistion&&(e.redrawHint("select",!0),e.redraw()),e.hoverData.tapholdCancelled=!0,e.data.bgActivePosistion=void 0,c&&c.unactivate();var f=function(e){return{originalEvent:t,type:e,position:{x:o[0],y:o[1]}}};if(3===e.hoverData.which){var p=f("cxttapend");if(c?c.emit(p):i.emit(p),!e.hoverData.cxtDragged){var v=f("cxttap");c?c.emit(v):i.emit(v)}e.hoverData.cxtDragged=!1,e.hoverData.which=null}else if(1===e.hoverData.which){if(r(l,["mouseup","tapend","vmouseup"],t,{x:o[0],y:o[1]}),e.dragData.didDrag||e.hoverData.dragged||e.hoverData.selecting||e.hoverData.isOverThresholdDrag||(r(c,["click","tap","vclick"],t,{x:o[0],y:o[1]}),x=!1,t.timeStamp-w<=i.multiClickDebounceTime()?(b&&clearTimeout(b),x=!0,w=null,r(c,["dblclick","dbltap","vdblclick"],t,{x:o[0],y:o[1]})):(b=setTimeout((function(){x||r(c,["oneclick","onetap","voneclick"],t,{x:o[0],y:o[1]})}),i.multiClickDebounceTime()),w=t.timeStamp)),null!=c||e.dragData.didDrag||e.hoverData.selecting||e.hoverData.dragged||a(t)||(i.$(n).unselect(["tapunselect"]),u.length>0&&e.redrawHint("eles",!0),e.dragData.possibleDragElements=u=i.collection()),l!=c||e.dragData.didDrag||e.hoverData.selecting||null!=l&&l._private.selectable&&(e.hoverData.dragging||("additive"===i.selectionType()||h?l.selected()?l.unselect(["tapunselect"]):l.select(["tapselect"]):h||(i.$(n).unmerge(l).unselect(["tapunselect"]),l.select(["tapselect"]))),e.redrawHint("eles",!0)),e.hoverData.selecting){var g=i.collection(e.getAllInBox(s[0],s[1],s[2],s[3]));e.redrawHint("select",!0),g.length>0&&e.redrawHint("eles",!0),i.emit(f("boxend"));var y=function(e){return e.selectable()&&!e.selected()};"additive"===i.selectionType()||h||i.$(n).unmerge(g).unselect(),g.emit(f("box")).stdFilter(y).select().emit(f("boxselect")),e.redraw()}if(e.hoverData.dragging&&(e.hoverData.dragging=!1,e.redrawHint("select",!0),e.redrawHint("eles",!0),e.redraw()),!s[4]){e.redrawHint("drag",!0),e.redrawHint("eles",!0);var m=c&&c.grabbed();d(u),m&&(c.emit(f("freeon")),u.emit(f("free")),e.dragData.didDrag&&(c.emit(f("dragfreeon")),u.emit(f("dragfree"))))}}s[4]=0,e.hoverData.down=null,e.hoverData.cxtStarted=!1,e.hoverData.draggingEles=!1,e.hoverData.selecting=!1,e.hoverData.isOverThresholdDrag=!1,e.dragData.didDrag=!1,e.hoverData.dragged=!1,e.hoverData.dragDelta=[],e.hoverData.mdownPos=null,e.hoverData.mdownGPos=null,e.hoverData.which=null}}),!1);var k,T,C,P,S,B,D,_,A,M,R,I,N,L,z=[],O=1e5,V=function(t){var n=!1,r=t.deltaY;if(null==r&&(null!=t.wheelDeltaY?r=t.wheelDeltaY/4:null!=t.wheelDelta&&(r=t.wheelDelta/4)),0!==r){if(null==k)if(z.length>=4){var a=z;if(k=function(e,t){for(var n=0;n5}if(k)for(var o=0;o5&&(r=5*Kt(r)),h=r/-250,k&&(h/=O,h*=3),h*=e.wheelSensitivity,1===t.deltaMode&&(h*=33);var f=s.zoom()*Math.pow(10,h);"gesturechange"===t.type&&(f=e.gestureStartZoom*t.scale),s.zoom({level:f,renderedPosition:{x:d[0],y:d[1]}}),s.emit({type:"gesturechange"===t.type?"pinchzoom":"scrollzoom",originalEvent:t,position:{x:c[0],y:c[1]}})}}}};e.registerBinding(e.container,"wheel",V,!0),e.registerBinding(t,"scroll",(function(t){e.scrollingPage=!0,clearTimeout(e.scrollingPageTimeout),e.scrollingPageTimeout=setTimeout((function(){e.scrollingPage=!1}),250)}),!0),e.registerBinding(e.container,"gesturestart",(function(t){e.gestureStartZoom=e.cy.zoom(),e.hasTouchStarted||t.preventDefault()}),!0),e.registerBinding(e.container,"gesturechange",(function(t){e.hasTouchStarted||V(t)}),!0),e.registerBinding(e.container,"mouseout",(function(t){var n=e.projectIntoViewport(t.clientX,t.clientY);e.cy.emit({originalEvent:t,type:"mouseout",position:{x:n[0],y:n[1]}})}),!1),e.registerBinding(e.container,"mouseover",(function(t){var n=e.projectIntoViewport(t.clientX,t.clientY);e.cy.emit({originalEvent:t,type:"mouseover",position:{x:n[0],y:n[1]}})}),!1);var F,X,j,Y,q,W,U,H=function(e,t,n,r){return Math.sqrt((n-e)*(n-e)+(r-t)*(r-t))},K=function(e,t,n,r){return(n-e)*(n-e)+(r-t)*(r-t)};if(e.registerBinding(e.container,"touchstart",F=function(t){if(e.hasTouchStarted=!0,m(t)){f(),e.touchData.capture=!0,e.data.bgActivePosistion=void 0;var n=e.cy,a=e.touchData.now,i=e.touchData.earlier;if(t.touches[0]){var o=e.projectIntoViewport(t.touches[0].clientX,t.touches[0].clientY);a[0]=o[0],a[1]=o[1]}if(t.touches[1]){o=e.projectIntoViewport(t.touches[1].clientX,t.touches[1].clientY);a[2]=o[0],a[3]=o[1]}if(t.touches[2]){o=e.projectIntoViewport(t.touches[2].clientX,t.touches[2].clientY);a[4]=o[0],a[5]=o[1]}var l=function(e){return{originalEvent:t,type:e,position:{x:a[0],y:a[1]}}};if(t.touches[1]){e.touchData.singleTouchMoved=!0,d(e.dragData.touchDragEles);var h=e.findContainerClientCoords();M=h[0],R=h[1],I=h[2],N=h[3],T=t.touches[0].clientX-M,C=t.touches[0].clientY-R,P=t.touches[1].clientX-M,S=t.touches[1].clientY-R,L=0<=T&&T<=I&&0<=P&&P<=I&&0<=C&&C<=N&&0<=S&&S<=N;var p=n.pan(),v=n.zoom();B=H(T,C,P,S),D=K(T,C,P,S),A=[((_=[(T+P)/2,(C+S)/2])[0]-p.x)/v,(_[1]-p.y)/v];if(D<4e4&&!t.touches[2]){var g=e.findNearestElement(a[0],a[1],!0,!0),y=e.findNearestElement(a[2],a[3],!0,!0);return g&&g.isNode()?(g.activate().emit(l("cxttapstart")),e.touchData.start=g):y&&y.isNode()?(y.activate().emit(l("cxttapstart")),e.touchData.start=y):n.emit(l("cxttapstart")),e.touchData.start&&(e.touchData.start._private.grabbed=!1),e.touchData.cxt=!0,e.touchData.cxtDragged=!1,e.data.bgActivePosistion=void 0,void e.redraw()}}if(t.touches[2])n.boxSelectionEnabled()&&t.preventDefault();else if(t.touches[1]);else if(t.touches[0]){var b=e.findNearestElements(a[0],a[1],!0,!0),x=b[0];if(null!=x&&(x.activate(),e.touchData.start=x,e.touchData.starts=b,e.nodeIsGrabbable(x))){var w=e.dragData.touchDragEles=n.collection(),E=null;e.redrawHint("eles",!0),e.redrawHint("drag",!0),x.selected()?(E=n.$((function(t){return t.selected()&&e.nodeIsGrabbable(t)})),u(E,{addToList:w})):c(x,{addToList:w}),s(x),x.emit(l("grabon")),E?E.forEach((function(e){e.emit(l("grab"))})):x.emit(l("grab"))}r(x,["touchstart","tapstart","vmousedown"],t,{x:a[0],y:a[1]}),null==x&&(e.data.bgActivePosistion={x:o[0],y:o[1]},e.redrawHint("select",!0),e.redraw()),e.touchData.singleTouchMoved=!1,e.touchData.singleTouchStartTime=+new Date,clearTimeout(e.touchData.tapholdTimeout),e.touchData.tapholdTimeout=setTimeout((function(){!1!==e.touchData.singleTouchMoved||e.pinching||e.touchData.selecting||r(e.touchData.start,["taphold"],t,{x:a[0],y:a[1]})}),e.tapholdDuration)}if(t.touches.length>=1){for(var k=e.touchData.startPosition=[null,null,null,null,null,null],z=0;z=e.touchTapThreshold2}if(n&&e.touchData.cxt){t.preventDefault();var E=t.touches[0].clientX-M,k=t.touches[0].clientY-R,_=t.touches[1].clientX-M,I=t.touches[1].clientY-R,N=K(E,k,_,I);if(N/D>=2.25||N>=22500){e.touchData.cxt=!1,e.data.bgActivePosistion=void 0,e.redrawHint("select",!0);var z=p("cxttapend");e.touchData.start?(e.touchData.start.unactivate().emit(z),e.touchData.start=null):o.emit(z)}}if(n&&e.touchData.cxt){z=p("cxtdrag");e.data.bgActivePosistion=void 0,e.redrawHint("select",!0),e.touchData.start?e.touchData.start.emit(z):o.emit(z),e.touchData.start&&(e.touchData.start._private.grabbed=!1),e.touchData.cxtDragged=!0;var O=e.findNearestElement(s[0],s[1],!0,!0);e.touchData.cxtOver&&O===e.touchData.cxtOver||(e.touchData.cxtOver&&e.touchData.cxtOver.emit(p("cxtdragout")),e.touchData.cxtOver=O,O&&O.emit(p("cxtdragover")))}else if(n&&t.touches[2]&&o.boxSelectionEnabled())t.preventDefault(),e.data.bgActivePosistion=void 0,this.lastThreeTouch=+new Date,e.touchData.selecting||o.emit(p("boxstart")),e.touchData.selecting=!0,e.touchData.didSelect=!0,a[4]=1,a&&0!==a.length&&void 0!==a[0]?(a[2]=(s[0]+s[2]+s[4])/3,a[3]=(s[1]+s[3]+s[5])/3):(a[0]=(s[0]+s[2]+s[4])/3,a[1]=(s[1]+s[3]+s[5])/3,a[2]=(s[0]+s[2]+s[4])/3+1,a[3]=(s[1]+s[3]+s[5])/3+1),e.redrawHint("select",!0),e.redraw();else if(n&&t.touches[1]&&!e.touchData.didSelect&&o.zoomingEnabled()&&o.panningEnabled()&&o.userZoomingEnabled()&&o.userPanningEnabled()){if(t.preventDefault(),e.data.bgActivePosistion=void 0,e.redrawHint("select",!0),te=e.dragData.touchDragEles){e.redrawHint("drag",!0);for(var V=0;V0&&!e.hoverData.draggingEles&&!e.swipePanning&&null!=e.data.bgActivePosistion&&(e.data.bgActivePosistion=void 0,e.redrawHint("select",!0),e.redraw())}},!1),e.registerBinding(t,"touchcancel",j=function(t){var n=e.touchData.start;e.touchData.capture=!1,n&&n.unactivate()}),e.registerBinding(t,"touchend",Y=function(t){var a=e.touchData.start;if(e.touchData.capture){0===t.touches.length&&(e.touchData.capture=!1),t.preventDefault();var i=e.selection;e.swipePanning=!1,e.hoverData.draggingEles=!1;var o=e.cy,s=o.zoom(),l=e.touchData.now,u=e.touchData.earlier;if(t.touches[0]){var c=e.projectIntoViewport(t.touches[0].clientX,t.touches[0].clientY);l[0]=c[0],l[1]=c[1]}if(t.touches[1]){c=e.projectIntoViewport(t.touches[1].clientX,t.touches[1].clientY);l[2]=c[0],l[3]=c[1]}if(t.touches[2]){c=e.projectIntoViewport(t.touches[2].clientX,t.touches[2].clientY);l[4]=c[0],l[5]=c[1]}var h,f=function(e){return{originalEvent:t,type:e,position:{x:l[0],y:l[1]}}};if(a&&a.unactivate(),e.touchData.cxt){if(h=f("cxttapend"),a?a.emit(h):o.emit(h),!e.touchData.cxtDragged){var p=f("cxttap");a?a.emit(p):o.emit(p)}return e.touchData.start&&(e.touchData.start._private.grabbed=!1),e.touchData.cxt=!1,e.touchData.start=null,void e.redraw()}if(!t.touches[2]&&o.boxSelectionEnabled()&&e.touchData.selecting){e.touchData.selecting=!1;var v=o.collection(e.getAllInBox(i[0],i[1],i[2],i[3]));i[0]=void 0,i[1]=void 0,i[2]=void 0,i[3]=void 0,i[4]=0,e.redrawHint("select",!0),o.emit(f("boxend"));v.emit(f("box")).stdFilter((function(e){return e.selectable()&&!e.selected()})).select().emit(f("boxselect")),v.nonempty()&&e.redrawHint("eles",!0),e.redraw()}if(null!=a&&a.unactivate(),t.touches[2])e.data.bgActivePosistion=void 0,e.redrawHint("select",!0);else if(t.touches[1]);else if(t.touches[0]);else if(!t.touches[0]){e.data.bgActivePosistion=void 0,e.redrawHint("select",!0);var g=e.dragData.touchDragEles;if(null!=a){var y=a._private.grabbed;d(g),e.redrawHint("drag",!0),e.redrawHint("eles",!0),y&&(a.emit(f("freeon")),g.emit(f("free")),e.dragData.didDrag&&(a.emit(f("dragfreeon")),g.emit(f("dragfree")))),r(a,["touchend","tapend","vmouseup","tapdragout"],t,{x:l[0],y:l[1]}),a.unactivate(),e.touchData.start=null}else{var m=e.findNearestElement(l[0],l[1],!0,!0);r(m,["touchend","tapend","vmouseup","tapdragout"],t,{x:l[0],y:l[1]})}var b=e.touchData.startPosition[0]-l[0],x=b*b,w=e.touchData.startPosition[1]-l[1],E=(x+w*w)*s*s;e.touchData.singleTouchMoved||(a||o.$(":selected").unselect(["tapunselect"]),r(a,["tap","vclick"],t,{x:l[0],y:l[1]}),q=!1,t.timeStamp-U<=o.multiClickDebounceTime()?(W&&clearTimeout(W),q=!0,U=null,r(a,["dbltap","vdblclick"],t,{x:l[0],y:l[1]})):(W=setTimeout((function(){q||r(a,["onetap","voneclick"],t,{x:l[0],y:l[1]})}),o.multiClickDebounceTime()),U=t.timeStamp)),null!=a&&!e.dragData.didDrag&&a._private.selectable&&E2){for(var f=[c[0],c[1]],p=Math.pow(f[0]-e,2)+Math.pow(f[1]-t,2),v=1;v0)return v[0]}return null},f=Object.keys(d),p=0;p0?u:fn(a,i,e,t,n,r,o,s)},checkPoint:function(e,t,n,r,a,i,o,s){var l=2*(s="auto"===s?Mn(r,a):s);if(bn(e,t,this.points,i,o,r,a-l,[0,-1],n))return!0;if(bn(e,t,this.points,i,o,r-l,a,[0,-1],n))return!0;var u=r/2+2*n,c=a/2+2*n;return!!mn(e,t,[i-u,o-c,i-u,o,i+u,o,i+u,o-c])||(!!En(e,t,l,l,i+r/2-s,o+a/2-s,n)||!!En(e,t,l,l,i-r/2+s,o+a/2-s,n))}}},rd.registerNodeShapes=function(){var e=this.nodeShapes={},t=this;this.generateEllipse(),this.generatePolygon("triangle",Dn(3,0)),this.generateRoundPolygon("round-triangle",Dn(3,0)),this.generatePolygon("rectangle",Dn(4,0)),e.square=e.rectangle,this.generateRoundRectangle(),this.generateCutRectangle(),this.generateBarrel(),this.generateBottomRoundrectangle();var n=[0,1,1,0,0,-1,-1,0];this.generatePolygon("diamond",n),this.generateRoundPolygon("round-diamond",n),this.generatePolygon("pentagon",Dn(5,0)),this.generateRoundPolygon("round-pentagon",Dn(5,0)),this.generatePolygon("hexagon",Dn(6,0)),this.generateRoundPolygon("round-hexagon",Dn(6,0)),this.generatePolygon("heptagon",Dn(7,0)),this.generateRoundPolygon("round-heptagon",Dn(7,0)),this.generatePolygon("octagon",Dn(8,0)),this.generateRoundPolygon("round-octagon",Dn(8,0));var r=new Array(20),a=An(5,0),i=An(5,Math.PI/5),o=.5*(3-Math.sqrt(5));o*=1.57;for(var s=0;s=e.deqFastCost*v)break}else if(a){if(f>=e.deqCost*l||f>=e.deqAvgCost*s)break}else if(p>=e.deqNoDrawCost*ld)break;var g=e.deq(t,d,c);if(!(g.length>0))break;for(var y=0;y0&&(e.onDeqd(t,u),!a&&e.shouldRedraw(t,u,d,c)&&r())}),a(t))}}},cd=function(){return i((function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:tt;a(this,e),this.idsByKey=new gt,this.keyForId=new gt,this.cachesByLvl=new gt,this.lvls=[],this.getKey=t,this.doesEleInvalidateKey=n}),[{key:"getIdsFor",value:function(e){null==e&&at("Can not get id list for null key");var t=this.idsByKey,n=this.idsByKey.get(e);return n||(n=new mt,t.set(e,n)),n}},{key:"addIdForKey",value:function(e,t){null!=e&&this.getIdsFor(e).add(t)}},{key:"deleteIdForKey",value:function(e,t){null!=e&&this.getIdsFor(e).delete(t)}},{key:"getNumberOfIdsForKey",value:function(e){return null==e?0:this.getIdsFor(e).size}},{key:"updateKeyMappingFor",value:function(e){var t=e.id(),n=this.keyForId.get(t),r=this.getKey(e);this.deleteIdForKey(n,t),this.addIdForKey(r,t),this.keyForId.set(t,r)}},{key:"deleteKeyMappingFor",value:function(e){var t=e.id(),n=this.keyForId.get(t);this.deleteIdForKey(n,t),this.keyForId.delete(t)}},{key:"keyHasChangedFor",value:function(e){var t=e.id();return this.keyForId.get(t)!==this.getKey(e)}},{key:"isInvalid",value:function(e){return this.keyHasChangedFor(e)||this.doesEleInvalidateKey(e)}},{key:"getCachesAt",value:function(e){var t=this.cachesByLvl,n=this.lvls,r=t.get(e);return r||(r=new gt,t.set(e,r),n.push(e)),r}},{key:"getCache",value:function(e,t){return this.getCachesAt(t).get(e)}},{key:"get",value:function(e,t){var n=this.getKey(e),r=this.getCache(n,t);return null!=r&&this.updateKeyMappingFor(e),r}},{key:"getForCachedKey",value:function(e,t){var n=this.keyForId.get(e.id());return this.getCache(n,t)}},{key:"hasCache",value:function(e,t){return this.getCachesAt(t).has(e)}},{key:"has",value:function(e,t){var n=this.getKey(e);return this.hasCache(n,t)}},{key:"setCache",value:function(e,t,n){n.key=e,this.getCachesAt(t).set(e,n)}},{key:"set",value:function(e,t,n){var r=this.getKey(e);this.setCache(r,t,n),this.updateKeyMappingFor(e)}},{key:"deleteCache",value:function(e,t){this.getCachesAt(t).delete(e)}},{key:"delete",value:function(e,t){var n=this.getKey(e);this.deleteCache(n,t)}},{key:"invalidateKey",value:function(e){var t=this;this.lvls.forEach((function(n){return t.deleteCache(e,n)}))}},{key:"invalidate",value:function(e){var t=e.id(),n=this.keyForId.get(t);this.deleteKeyMappingFor(e);var r=this.doesEleInvalidateKey(e);return r&&this.invalidateKey(n),r||0===this.getNumberOfIdsForKey(n)}}])}(),dd=7.99,hd={dequeue:"dequeue",downscale:"downscale",highQuality:"highQuality"},fd=dt({getKey:null,doesEleInvalidateKey:tt,drawElement:null,getBoundingBox:null,getRotationPoint:null,getRotationOffset:null,isVisible:et,allowEdgeTxrCaching:!0,allowParentTxrCaching:!0}),pd=function(e,t){var n=this;n.renderer=e,n.onDequeues=[];var r=fd(t);be(n,r),n.lookup=new cd(r.getKey,r.doesEleInvalidateKey),n.setupDequeueing()},vd=pd.prototype;vd.reasons=hd,vd.getTextureQueue=function(e){var t=this;return t.eleImgCaches=t.eleImgCaches||{},t.eleImgCaches[e]=t.eleImgCaches[e]||[]},vd.getRetiredTextureQueue=function(e){var t=this.eleImgCaches.retired=this.eleImgCaches.retired||{};return t[e]=t[e]||[]},vd.getElementQueue=function(){return this.eleCacheQueue=this.eleCacheQueue||new Dt((function(e,t){return t.reqs-e.reqs}))},vd.getElementKeyToQueue=function(){return this.eleKeyToCacheQueue=this.eleKeyToCacheQueue||{}},vd.getElement=function(e,t,n,r,a){var i=this,o=this.renderer,s=o.cy.zoom(),l=this.lookup;if(!t||0===t.w||0===t.h||isNaN(t.w)||isNaN(t.h)||!e.visible()||e.removed())return null;if(!i.allowEdgeTxrCaching&&e.isEdge()||!i.allowParentTxrCaching&&e.isParent())return null;if(null==r&&(r=Math.ceil(Ht(s*n))),r<-4)r=-4;else if(s>=7.99||r>3)return null;var u=Math.pow(2,r),c=t.h*u,d=t.w*u,h=o.eleTextBiggerThanMin(e,u);if(!this.isVisible(e,h))return null;var f,p=l.get(e,r);if(p&&p.invalidated&&(p.invalidated=!1,p.texture.invalidatedWidth-=p.width),p)return p;if(f=c<=25?25:c<=50?50:50*Math.ceil(c/50),c>1024||d>1024)return null;var v=i.getTextureQueue(f),g=v[v.length-2],y=function(){return i.recycleTexture(f,d)||i.addTexture(f,d)};g||(g=v[v.length-1]),g||(g=y()),g.width-g.usedWidthr;S--)C=i.getElement(e,t,n,S,hd.downscale);P()}else{var B;if(!x&&!w&&!E)for(var D=r-1;D>=-4;D--){var _=l.get(e,D);if(_){B=_;break}}if(b(B))return i.queueElement(e,r),B;g.context.translate(g.usedWidth,0),g.context.scale(u,u),this.drawElement(g.context,e,t,h,!1),g.context.scale(1/u,1/u),g.context.translate(-g.usedWidth,0)}return p={x:g.usedWidth,texture:g,level:r,scale:u,width:d,height:c,scaledLabelShown:h},g.usedWidth+=Math.ceil(d+8),g.eleCaches.push(p),l.set(e,r,p),i.checkTextureFullness(g),p},vd.invalidateElements=function(e){for(var t=0;t=.2*e.width&&this.retireTexture(e)},vd.checkTextureFullness=function(e){var t=this.getTextureQueue(e.height);e.usedWidth/e.width>.8&&e.fullnessChecks>=10?ht(t,e):e.fullnessChecks++},vd.retireTexture=function(e){var t=e.height,n=this.getTextureQueue(t),r=this.lookup;ht(n,e),e.retired=!0;for(var a=e.eleCaches,i=0;i=t)return i.retired=!1,i.usedWidth=0,i.invalidatedWidth=0,i.fullnessChecks=0,ft(i.eleCaches),i.context.setTransform(1,0,0,1,0,0),i.context.clearRect(0,0,i.width,i.height),ht(r,i),n.push(i),i}},vd.queueElement=function(e,t){var n=this.getElementQueue(),r=this.getElementKeyToQueue(),a=this.getKey(e),i=r[a];if(i)i.level=Math.max(i.level,t),i.eles.merge(e),i.reqs++,n.updateItem(i);else{var o={eles:e.spawn().merge(e),level:t,reqs:1,key:a};n.push(o),r[a]=o}},vd.dequeue=function(e){for(var t=this,n=t.getElementQueue(),r=t.getElementKeyToQueue(),a=[],i=t.lookup,o=0;o<1&&n.size()>0;o++){var s=n.pop(),l=s.key,u=s.eles[0],c=i.hasCache(u,s.level);if(r[l]=null,!c){a.push(s);var d=t.getBoundingBox(u);t.getElement(u,d,e,s.level,hd.dequeue)}}return a},vd.removeFromQueue=function(e){var t=this.getElementQueue(),n=this.getElementKeyToQueue(),r=this.getKey(e),a=n[r];null!=a&&(1===a.eles.length?(a.reqs=Je,t.updateItem(a),t.pop(),n[r]=null):a.eles.unmerge(e))},vd.onDequeue=function(e){this.onDequeues.push(e)},vd.offDequeue=function(e){ht(this.onDequeues,e)},vd.setupDequeueing=ud({deqRedrawThreshold:100,deqCost:.15,deqAvgCost:.1,deqNoDrawCost:.9,deqFastCost:.9,deq:function(e,t,n){return e.dequeue(t,n)},onDeqd:function(e,t){for(var n=0;n=3.99||n>2)return null;r.validateLayersElesOrdering(n,e);var o,s,l=r.layersByLevel,u=Math.pow(2,n),c=l[n]=l[n]||[];if(r.levelIsComplete(n,e))return c;!function(){var t=function(t){if(r.validateLayersElesOrdering(t,e),r.levelIsComplete(t,e))return s=l[t],!0},a=function(e){if(!s)for(var r=n+e;-4<=r&&r<=2&&!t(r);r+=e);};a(1),a(-1);for(var i=c.length-1;i>=0;i--){var o=c[i];o.invalid&&ht(c,o)}}();var d=function(t){var a=(t=t||{}).after;!function(){if(!o){o=tn();for(var t=0;t32767||s>32767)return null;if(i*s>16e6)return null;var l=r.makeLayer(o,n);if(null!=a){var d=c.indexOf(a)+1;c.splice(d,0,l)}else(void 0===t.insert||t.insert)&&c.unshift(l);return l};if(r.skipping&&!i)return null;for(var h=null,f=e.length/1,p=!i,v=0;v=f||!cn(h.bb,g.boundingBox()))&&!(h=d({insert:!0,after:h})))return null;s||p?r.queueLayer(h,g):r.drawEleInLayer(h,g,n,t),h.eles.push(g),m[n]=h}}return s||(p?null:c)},yd.getEleLevelForLayerLevel=function(e,t){return e},yd.drawEleInLayer=function(e,t,n,r){var a=this.renderer,i=e.context,o=t.boundingBox();0!==o.w&&0!==o.h&&t.visible()&&(n=this.getEleLevelForLayerLevel(n,r),a.setImgSmoothing(i,!1),a.drawCachedElement(i,t,null,null,n,true),a.setImgSmoothing(i,!0))},yd.levelIsComplete=function(e,t){var n=this.layersByLevel[e];if(!n||0===n.length)return!1;for(var r=0,a=0;a0)return!1;if(i.invalid)return!1;r+=i.eles.length}return r===t.length},yd.validateLayersElesOrdering=function(e,t){var n=this.layersByLevel[e];if(n)for(var r=0;r0){e=!0;break}}return e},yd.invalidateElements=function(e){var t=this;0!==e.length&&(t.lastInvalidationTime=ze(),0!==e.length&&t.haveLayers()&&t.updateElementsInLayers(e,(function(e,n,r){t.invalidateLayer(e)})))},yd.invalidateLayer=function(e){if(this.lastInvalidationTime=ze(),!e.invalid){var t=e.level,n=e.eles,r=this.layersByLevel[t];ht(r,e),e.elesQueue=[],e.invalid=!0,e.replacement&&(e.replacement.invalid=!0);for(var a=0;a3&&void 0!==arguments[3])||arguments[3],a=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],i=!(arguments.length>5&&void 0!==arguments[5])||arguments[5],o=this,s=t._private.rscratch;if((!i||t.visible())&&!s.badLine&&null!=s.allpts&&!isNaN(s.allpts[0])){var l;n&&(l=n,e.translate(-l.x1,-l.y1));var u=i?t.pstyle("opacity").value:1,c=i?t.pstyle("line-opacity").value:1,d=t.pstyle("curve-style").value,h=t.pstyle("line-style").value,f=t.pstyle("width").pfValue,p=t.pstyle("line-cap").value,v=t.pstyle("line-outline-width").value,g=t.pstyle("line-outline-color").value,y=u*c,m=u*c,b=function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:y;"straight-triangle"===d?(o.eleStrokeStyle(e,t,n),o.drawEdgeTrianglePath(t,e,s.allpts)):(e.lineWidth=f,e.lineCap=p,o.eleStrokeStyle(e,t,n),o.drawEdgePath(t,e,s.allpts,h),e.lineCap="butt")},x=function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:m;o.drawArrowheads(e,t,n)};if(e.lineJoin="round","yes"===t.pstyle("ghost").value){var w=t.pstyle("ghost-offset-x").pfValue,E=t.pstyle("ghost-offset-y").pfValue,k=t.pstyle("ghost-opacity").value,T=y*k;e.translate(w,E),b(T),x(T),e.translate(-w,-E)}else!function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:y;e.lineWidth=f+v,e.lineCap=p,v>0?(o.colorStrokeStyle(e,g[0],g[1],g[2],n),"straight-triangle"===d?o.drawEdgeTrianglePath(t,e,s.allpts):(o.drawEdgePath(t,e,s.allpts,h),e.lineCap="butt")):e.lineCap="butt"}();a&&o.drawEdgeUnderlay(e,t),b(),x(),a&&o.drawEdgeOverlay(e,t),o.drawElementText(e,t,null,r),n&&e.translate(l.x1,l.y1)}}},Nd=function(e){if(!["overlay","underlay"].includes(e))throw new Error("Invalid state");return function(t,n){if(n.visible()){var r=n.pstyle("".concat(e,"-opacity")).value;if(0!==r){var a=this,i=a.usePaths(),o=n._private.rscratch,s=2*n.pstyle("".concat(e,"-padding")).pfValue,l=n.pstyle("".concat(e,"-color")).value;t.lineWidth=s,"self"!==o.edgeType||i?t.lineCap="round":t.lineCap="butt",a.colorStrokeStyle(t,l[0],l[1],l[2],r),a.drawEdgePath(n,t,o.allpts,"solid")}}}};Id.drawEdgeOverlay=Nd("overlay"),Id.drawEdgeUnderlay=Nd("underlay"),Id.drawEdgePath=function(e,t,n,r){var a,i=e._private.rscratch,s=t,l=!1,u=this.usePaths(),c=e.pstyle("line-dash-pattern").pfValue,d=e.pstyle("line-dash-offset").pfValue;if(u){var h=n.join("$");i.pathCacheKey&&i.pathCacheKey===h?(a=t=i.pathCache,l=!0):(a=t=new Path2D,i.pathCacheKey=h,i.pathCache=a)}if(s.setLineDash)switch(r){case"dotted":s.setLineDash([1,1]);break;case"dashed":s.setLineDash(c),s.lineDashOffset=d;break;case"solid":s.setLineDash([])}if(!l&&!i.badLine)switch(t.beginPath&&t.beginPath(),t.moveTo(n[0],n[1]),i.edgeType){case"bezier":case"self":case"compound":case"multibezier":for(var f=2;f+35&&void 0!==arguments[5]?arguments[5]:5,o=Math.min(i,r/2,a/2);e.beginPath(),e.moveTo(t+o,n),e.lineTo(t+r-o,n),e.quadraticCurveTo(t+r,n,t+r,n+o),e.lineTo(t+r,n+a-o),e.quadraticCurveTo(t+r,n+a,t+r-o,n+a),e.lineTo(t+o,n+a),e.quadraticCurveTo(t,n+a,t,n+a-o),e.lineTo(t,n+o),e.quadraticCurveTo(t,n,t+o,n),e.closePath()}zd.eleTextBiggerThanMin=function(e,t){if(!t){var n=e.cy().zoom(),r=this.getPixelRatio(),a=Math.ceil(Ht(n*r));t=Math.pow(2,a)}return!(e.pstyle("font-size").pfValue*t5&&void 0!==arguments[5])||arguments[5],o=this;if(null==r){if(i&&!o.eleTextBiggerThanMin(t))return}else if(!1===r)return;if(t.isNode()){var s=t.pstyle("label");if(!s||!s.value)return;var l=o.getLabelJustification(t);e.textAlign=l,e.textBaseline="bottom"}else{var u=t.element()._private.rscratch.badLine,c=t.pstyle("label"),d=t.pstyle("source-label"),h=t.pstyle("target-label");if(u||(!c||!c.value)&&(!d||!d.value)&&(!h||!h.value))return;e.textAlign="center",e.textBaseline="bottom"}var f,p=!n;n&&(f=n,e.translate(-f.x1,-f.y1)),null==a?(o.drawText(e,t,null,p,i),t.isEdge()&&(o.drawText(e,t,"source",p,i),o.drawText(e,t,"target",p,i))):o.drawText(e,t,a,p,i),n&&e.translate(f.x1,f.y1)},zd.getFontCache=function(e){var t;this.fontCaches=this.fontCaches||[];for(var n=0;n2&&void 0!==arguments[2])||arguments[2],r=t.pstyle("font-style").strValue,a=t.pstyle("font-size").pfValue+"px",i=t.pstyle("font-family").strValue,o=t.pstyle("font-weight").strValue,s=n?t.effectiveOpacity()*t.pstyle("text-opacity").value:1,l=t.pstyle("text-outline-opacity").value*s,u=t.pstyle("color").value,c=t.pstyle("text-outline-color").value;e.font=r+" "+o+" "+a+" "+i,e.lineJoin="round",this.colorFillStyle(e,u[0],u[1],u[2],s),this.colorStrokeStyle(e,c[0],c[1],c[2],l)},zd.getTextAngle=function(e,t){var n,r=e._private.rscratch,a=t?t+"-":"",i=e.pstyle(a+"text-rotation");if("autorotate"===i.strValue){var o=pt(r,"labelAngle",t);n=e.isEdge()?o:0}else n="none"===i.strValue?0:i.pfValue;return n},zd.drawText=function(e,t,n){var r=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],a=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],i=t._private.rscratch,o=a?t.effectiveOpacity():1;if(!a||0!==o&&0!==t.pstyle("text-opacity").value){"main"===n&&(n=null);var s,l,u=pt(i,"labelX",n),c=pt(i,"labelY",n),d=this.getLabelText(t,n);if(null!=d&&""!==d&&!isNaN(u)&&!isNaN(c)){this.setupTextStyle(e,t,a);var h,f=n?n+"-":"",p=pt(i,"labelWidth",n),v=pt(i,"labelHeight",n),g=t.pstyle(f+"text-margin-x").pfValue,y=t.pstyle(f+"text-margin-y").pfValue,m=t.isEdge(),b=t.pstyle("text-halign").value,x=t.pstyle("text-valign").value;switch(m&&(b="center",x="center"),u+=g,c+=y,0!==(h=r?this.getTextAngle(t,n):0)&&(s=u,l=c,e.translate(s,l),e.rotate(h),u=0,c=0),x){case"top":break;case"center":c+=v/2;break;case"bottom":c+=v}var w=t.pstyle("text-background-opacity").value,E=t.pstyle("text-border-opacity").value,k=t.pstyle("text-border-width").pfValue,T=t.pstyle("text-background-padding").pfValue,C=t.pstyle("text-background-shape").strValue,P="round-rectangle"===C||"roundrectangle"===C,S="circle"===C;if(w>0||k>0&&E>0){var B=e.fillStyle,D=e.strokeStyle,_=e.lineWidth,A=t.pstyle("text-background-color").value,M=t.pstyle("text-border-color").value,R=t.pstyle("text-border-style").value,I=w>0,N=k>0&&E>0,L=u-T;switch(b){case"left":L-=p;break;case"center":L-=p/2}var z=c-v-T,O=p+2*T,V=v+2*T;if(I&&(e.fillStyle="rgba(".concat(A[0],",").concat(A[1],",").concat(A[2],",").concat(w*o,")")),N&&(e.strokeStyle="rgba(".concat(M[0],",").concat(M[1],",").concat(M[2],",").concat(E*o,")"),e.lineWidth=k,e.setLineDash))switch(R){case"dotted":e.setLineDash([1,1]);break;case"dashed":e.setLineDash([4,2]);break;case"double":e.lineWidth=k/4,e.setLineDash([]);break;default:e.setLineDash([])}if(P?(e.beginPath(),Od(e,L,z,O,V,2)):S?(e.beginPath(),function(e,t,n,r,a){var i=Math.min(r,a)/2,o=t+r/2,s=n+a/2;e.beginPath(),e.arc(o,s,i,0,2*Math.PI),e.closePath()}(e,L,z,O,V)):(e.beginPath(),e.rect(L,z,O,V)),I&&e.fill(),N&&e.stroke(),N&&"double"===R){var F=k/2;e.beginPath(),P?Od(e,L+F,z+F,O-2*F,V-2*F,2):e.rect(L+F,z+F,O-2*F,V-2*F),e.stroke()}e.fillStyle=B,e.strokeStyle=D,e.lineWidth=_,e.setLineDash&&e.setLineDash([])}var X=2*t.pstyle("text-outline-width").pfValue;if(X>0&&(e.lineWidth=X),"wrap"===t.pstyle("text-wrap").value){var j=pt(i,"labelWrapCachedLines",n),Y=pt(i,"labelLineHeight",n),q=p/2,W=this.getLabelJustification(t);switch("auto"===W||("left"===b?"left"===W?u+=-p:"center"===W&&(u+=-q):"center"===b?"left"===W?u+=-q:"right"===W&&(u+=q):"right"===b&&("center"===W?u+=q:"right"===W&&(u+=p))),x){case"top":case"center":case"bottom":c-=(j.length-1)*Y}for(var U=0;U0&&e.strokeText(j[U],u,c),e.fillText(j[U],u,c),c+=Y}else X>0&&e.strokeText(d,u,c),e.fillText(d,u,c);0!==h&&(e.rotate(-h),e.translate(-s,-l))}}};var Vd={drawNode:function(e,t,n){var r,a,i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],o=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],s=!(arguments.length>5&&void 0!==arguments[5])||arguments[5],l=this,u=t._private,c=u.rscratch,d=t.position();if(Q(d.x)&&Q(d.y)&&(!s||t.visible())){var h,f,p=s?t.effectiveOpacity():1,v=l.usePaths(),g=!1,y=t.padding();r=t.width()+2*y,a=t.height()+2*y,n&&(f=n,e.translate(-f.x1,-f.y1));for(var m=t.pstyle("background-image").value,b=new Array(m.length),x=new Array(m.length),w=0,E=0;E0&&void 0!==arguments[0]?arguments[0]:S;l.eleFillStyle(e,t,n)},Y=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:N;l.colorStrokeStyle(e,B[0],B[1],B[2],t)},q=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:V;l.colorStrokeStyle(e,z[0],z[1],z[2],t)},W=function(e,t,n,r){var a,i=l.nodePathCache=l.nodePathCache||[],o=He("polygon"===n?n+","+r.join(","):n,""+t,""+e,""+X),s=i[o],u=!1;return null!=s?(a=s,u=!0,c.pathCache=a):(a=new Path2D,i[o]=c.pathCache=a),{path:a,cacheHit:u}},U=t.pstyle("shape").strValue,H=t.pstyle("shape-polygon-points").pfValue;if(v){e.translate(d.x,d.y);var K=W(r,a,U,H);h=K.path,g=K.cacheHit}var G=function(){if(!g){var n=d;v&&(n={x:0,y:0}),l.nodeShapes[l.getNodeShape(t)].draw(h||e,n.x,n.y,r,a,X,c)}v?e.fill(h):e.fill()},Z=function(){for(var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:p,r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],a=u.backgrounding,i=0,o=0;o0&&void 0!==arguments[0]&&arguments[0],i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:p;l.hasPie(t)&&(l.drawPie(e,t,i),n&&(v||l.nodeShapes[l.getNodeShape(t)].draw(e,d.x,d.y,r,a,X,c)))},J=function(){var n=arguments.length>0&&void 0!==arguments[0]&&arguments[0],i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:p;l.hasStripe(t)&&(e.save(),v?e.clip(c.pathCache):(l.nodeShapes[l.getNodeShape(t)].draw(e,d.x,d.y,r,a,X,c),e.clip()),l.drawStripe(e,t,i),e.restore(),n&&(v||l.nodeShapes[l.getNodeShape(t)].draw(e,d.x,d.y,r,a,X,c)))},ee=function(){var t=(C>0?C:-C)*(arguments.length>0&&void 0!==arguments[0]?arguments[0]:p),n=C>0?0:255;0!==C&&(l.colorFillStyle(e,n,n,n,t),v?e.fill(h):e.fill())},te=function(){if(P>0){if(e.lineWidth=P,e.lineCap=A,e.lineJoin=_,e.setLineDash)switch(D){case"dotted":e.setLineDash([1,1]);break;case"dashed":e.setLineDash(R),e.lineDashOffset=I;break;case"solid":case"double":e.setLineDash([])}if("center"!==M){if(e.save(),e.lineWidth*=2,"inside"===M)v?e.clip(h):e.clip();else{var t=new Path2D;t.rect(-r/2-P,-a/2-P,r+2*P,a+2*P),t.addPath(h),e.clip(t,"evenodd")}v?e.stroke(h):e.stroke(),e.restore()}else v?e.stroke(h):e.stroke();if("double"===D){e.lineWidth=P/3;var n=e.globalCompositeOperation;e.globalCompositeOperation="destination-out",v?e.stroke(h):e.stroke(),e.globalCompositeOperation=n}e.setLineDash&&e.setLineDash([])}},ne=function(){if(L>0){if(e.lineWidth=L,e.lineCap="butt",e.setLineDash)switch(O){case"dotted":e.setLineDash([1,1]);break;case"dashed":e.setLineDash([4,2]);break;case"solid":case"double":e.setLineDash([])}var n=d;v&&(n={x:0,y:0});var i=l.getNodeShape(t),o=P;"inside"===M&&(o=0),"outside"===M&&(o*=2);var s,u=(r+o+(L+F))/r,c=(a+o+(L+F))/a,h=r*u,f=a*c,p=l.nodeShapes[i].points;if(v)s=W(h,f,i,p).path;if("ellipse"===i)l.drawEllipsePath(s||e,n.x,n.y,h,f);else if(["round-diamond","round-heptagon","round-hexagon","round-octagon","round-pentagon","round-polygon","round-triangle","round-tag"].includes(i)){var g=0,y=0,m=0;"round-diamond"===i?g=1.4*(o+F+L):"round-heptagon"===i?(g=1.075*(o+F+L),m=-(o/2+F+L)/35):"round-hexagon"===i?g=1.12*(o+F+L):"round-pentagon"===i?(g=1.13*(o+F+L),m=-(o/2+F+L)/15):"round-tag"===i?(g=1.12*(o+F+L),y=.07*(o/2+L+F)):"round-triangle"===i&&(g=(o+F+L)*(Math.PI/2),m=-(o+F/2+L)/Math.PI),0!==g&&(h=r*(u=(r+g)/r),["round-hexagon","round-tag"].includes(i)||(f=a*(c=(a+g)/a)));for(var b=h/2,x=f/2,w=(X="auto"===X?Rn(h,f):X)+(o+L+F)/2,E=new Array(p.length/2),k=new Array(p.length/2),T=0;T0){if(r=r||n.position(),null==a||null==i){var d=n.padding();a=n.width()+2*d,i=n.height()+2*d}this.colorFillStyle(t,l[0],l[1],l[2],s),this.nodeShapes[u].draw(t,r.x,r.y,a+2*o,i+2*o,c),t.fill()}}}};Vd.drawNodeOverlay=Fd("overlay"),Vd.drawNodeUnderlay=Fd("underlay"),Vd.hasPie=function(e){return(e=e[0])._private.hasPie},Vd.hasStripe=function(e){return(e=e[0])._private.hasStripe},Vd.drawPie=function(e,t,n,r){t=t[0],r=r||t.position();var a,i=t.cy().style(),o=t.pstyle("pie-size"),s=t.pstyle("pie-hole"),l=t.pstyle("pie-start-angle").pfValue,u=r.x,c=r.y,d=t.width(),h=t.height(),f=Math.min(d,h)/2,p=0;if(this.usePaths()&&(u=0,c=0),"%"===o.units?f*=o.pfValue:void 0!==o.pfValue&&(f=o.pfValue/2),"%"===s.units?a=f*s.pfValue:void 0!==s.pfValue&&(a=s.pfValue/2),!(a>=f))for(var v=1;v<=i.pieBackgroundN;v++){var g=t.pstyle("pie-"+v+"-background-size").value,y=t.pstyle("pie-"+v+"-background-color").value,m=t.pstyle("pie-"+v+"-background-opacity").value*n,b=g/100;b+p>1&&(b=1-p);var x=1.5*Math.PI+2*Math.PI*p,w=(x+=l)+2*Math.PI*b;0===g||p>=1||p+b>1||(0===a?(e.beginPath(),e.moveTo(u,c),e.arc(u,c,f,x,w),e.closePath()):(e.beginPath(),e.arc(u,c,f,x,w),e.arc(u,c,a,w,x,!0),e.closePath()),this.colorFillStyle(e,y[0],y[1],y[2],m),e.fill(),p+=b)}},Vd.drawStripe=function(e,t,n,r){t=t[0],r=r||t.position();var a=t.cy().style(),i=r.x,o=r.y,s=t.width(),l=t.height(),u=0,c=this.usePaths();e.save();var d=t.pstyle("stripe-direction").value,h=t.pstyle("stripe-size");switch(d){case"vertical":break;case"righward":e.rotate(-Math.PI/2)}var f=s,p=l;"%"===h.units?(f*=h.pfValue,p*=h.pfValue):void 0!==h.pfValue&&(f=h.pfValue,p=h.pfValue),c&&(i=0,o=0),o-=f/2,i-=p/2;for(var v=1;v<=a.stripeBackgroundN;v++){var g=t.pstyle("stripe-"+v+"-background-size").value,y=t.pstyle("stripe-"+v+"-background-color").value,m=t.pstyle("stripe-"+v+"-background-opacity").value*n,b=g/100;b+u>1&&(b=1-u),0===g||u>=1||u+b>1||(e.beginPath(),e.rect(i,o+p*u,f,p*b),e.closePath(),this.colorFillStyle(e,y[0],y[1],y[2],m),e.fill(),u+=b)}e.restore()};var Xd,jd={};function Yd(e,t,n){var r=e.createShader(t);if(e.shaderSource(r,n),e.compileShader(r),!e.getShaderParameter(r,e.COMPILE_STATUS))throw new Error(e.getShaderInfoLog(r));return r}function qd(e,t,n){void 0===n&&(n=t);var r=e.makeOffscreenCanvas(t,n),a=r.context=r.getContext("2d");return r.clear=function(){return a.clearRect(0,0,r.width,r.height)},r.clear(),r}function Wd(e){var t=e.pixelRatio,n=e.cy.zoom(),r=e.cy.pan();return{zoom:n*t,pan:{x:r.x*t,y:r.y*t}}}function Ud(e){return"solid"===e.pstyle("background-fill").value&&("none"===e.pstyle("background-image").strValue&&(0===e.pstyle("border-width").value||(0===e.pstyle("border-opacity").value||"solid"===e.pstyle("border-style").value)))}function Hd(e,t){if(e.length!==t.length)return!1;for(var n=0;n>0&255)/255,n[1]=(e>>8&255)/255,n[2]=(e>>16&255)/255,n[3]=(e>>24&255)/255,n}function Zd(e){return e[0]+(e[1]<<8)+(e[2]<<16)+(e[3]<<24)}function $d(e,t){switch(t){case"float":return[1,e.FLOAT,4];case"vec2":return[2,e.FLOAT,4];case"vec3":return[3,e.FLOAT,4];case"vec4":return[4,e.FLOAT,4];case"int":return[1,e.INT,4];case"ivec2":return[2,e.INT,4]}}function Qd(e,t,n){switch(t){case e.FLOAT:return new Float32Array(n);case e.INT:return new Int32Array(n)}}function Jd(e,t,n,r,a,i){switch(t){case e.FLOAT:return new Float32Array(n.buffer,i*r,a);case e.INT:return new Int32Array(n.buffer,i*r,a)}}function eh(e,t,n,r){var a=l($d(e,n),3),i=a[0],o=a[1],s=a[2],u=Qd(e,o,t*i),c=i*s,d=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,d),e.bufferData(e.ARRAY_BUFFER,t*c,e.DYNAMIC_DRAW),e.enableVertexAttribArray(r),o===e.FLOAT?e.vertexAttribPointer(r,i,o,!1,c,0):o===e.INT&&e.vertexAttribIPointer(r,i,o,c,0),e.vertexAttribDivisor(r,1),e.bindBuffer(e.ARRAY_BUFFER,null);for(var h=new Array(t),f=0;ft.minMbLowQualFrames&&(t.motionBlurPxRatio=t.mbPxRBlurry)),t.clearingMotionBlur&&(t.motionBlurPxRatio=1),t.textureDrawLastFrame&&!d&&(c[t.NODE]=!0,c[t.SELECT_BOX]=!0);var m=n.style(),b=n.zoom(),x=void 0!==o?o:b,w=n.pan(),E={x:w.x,y:w.y},k={zoom:b,pan:{x:w.x,y:w.y}},T=t.prevViewport;void 0===T||k.zoom!==T.zoom||k.pan.x!==T.pan.x||k.pan.y!==T.pan.y||v&&!p||(t.motionBlurPxRatio=1),s&&(E=s),x*=l,E.x*=l,E.y*=l;var C=t.getCachedZSortedEles();function P(e,n,r,a,i){var o=e.globalCompositeOperation;e.globalCompositeOperation="destination-out",t.colorFillStyle(e,255,255,255,t.motionBlurTransparency),e.fillRect(n,r,a,i),e.globalCompositeOperation=o}function S(e,n){var i,l,c,d;t.clearingMotionBlur||e!==u.bufferContexts[t.MOTIONBLUR_BUFFER_NODE]&&e!==u.bufferContexts[t.MOTIONBLUR_BUFFER_DRAG]?(i=E,l=x,c=t.canvasWidth,d=t.canvasHeight):(i={x:w.x*f,y:w.y*f},l=b*f,c=t.canvasWidth*f,d=t.canvasHeight*f),e.setTransform(1,0,0,1,0,0),"motionBlur"===n?P(e,0,0,c,d):r||void 0!==n&&!n||e.clearRect(0,0,c,d),a||(e.translate(i.x,i.y),e.scale(l,l)),s&&e.translate(s.x,s.y),o&&e.scale(o,o)}if(d||(t.textureDrawLastFrame=!1),d){if(t.textureDrawLastFrame=!0,!t.textureCache){t.textureCache={},t.textureCache.bb=n.mutableElements().boundingBox(),t.textureCache.texture=t.data.bufferCanvases[t.TEXTURE_BUFFER];var B=t.data.bufferContexts[t.TEXTURE_BUFFER];B.setTransform(1,0,0,1,0,0),B.clearRect(0,0,t.canvasWidth*t.textureMult,t.canvasHeight*t.textureMult),t.render({forcedContext:B,drawOnlyNodeLayer:!0,forcedPxRatio:l*t.textureMult}),(k=t.textureCache.viewport={zoom:n.zoom(),pan:n.pan(),width:t.canvasWidth,height:t.canvasHeight}).mpan={x:(0-k.pan.x)/k.zoom,y:(0-k.pan.y)/k.zoom}}c[t.DRAG]=!1,c[t.NODE]=!1;var D=u.contexts[t.NODE],_=t.textureCache.texture;k=t.textureCache.viewport;D.setTransform(1,0,0,1,0,0),h?P(D,0,0,k.width,k.height):D.clearRect(0,0,k.width,k.height);var A=m.core("outside-texture-bg-color").value,M=m.core("outside-texture-bg-opacity").value;t.colorFillStyle(D,A[0],A[1],A[2],M),D.fillRect(0,0,k.width,k.height);b=n.zoom();S(D,!1),D.clearRect(k.mpan.x,k.mpan.y,k.width/k.zoom/l,k.height/k.zoom/l),D.drawImage(_,k.mpan.x,k.mpan.y,k.width/k.zoom/l,k.height/k.zoom/l)}else t.textureOnViewport&&!r&&(t.textureCache=null);var R=n.extent(),I=t.pinching||t.hoverData.dragging||t.swipePanning||t.data.wheelZooming||t.hoverData.draggingEles||t.cy.animated(),N=t.hideEdgesOnViewport&&I,L=[];if(L[t.NODE]=!c[t.NODE]&&h&&!t.clearedForMotionBlur[t.NODE]||t.clearingMotionBlur,L[t.NODE]&&(t.clearedForMotionBlur[t.NODE]=!0),L[t.DRAG]=!c[t.DRAG]&&h&&!t.clearedForMotionBlur[t.DRAG]||t.clearingMotionBlur,L[t.DRAG]&&(t.clearedForMotionBlur[t.DRAG]=!0),c[t.NODE]||a||i||L[t.NODE]){var z=h&&!L[t.NODE]&&1!==f;S(D=r||(z?t.data.bufferContexts[t.MOTIONBLUR_BUFFER_NODE]:u.contexts[t.NODE]),h&&!z?"motionBlur":void 0),N?t.drawCachedNodes(D,C.nondrag,l,R):t.drawLayeredElements(D,C.nondrag,l,R),t.debug&&t.drawDebugPoints(D,C.nondrag),a||h||(c[t.NODE]=!1)}if(!i&&(c[t.DRAG]||a||L[t.DRAG])){z=h&&!L[t.DRAG]&&1!==f;S(D=r||(z?t.data.bufferContexts[t.MOTIONBLUR_BUFFER_DRAG]:u.contexts[t.DRAG]),h&&!z?"motionBlur":void 0),N?t.drawCachedNodes(D,C.drag,l,R):t.drawCachedElements(D,C.drag,l,R),t.debug&&t.drawDebugPoints(D,C.drag),a||h||(c[t.DRAG]=!1)}if(this.drawSelectionRectangle(e,S),h&&1!==f){var O=u.contexts[t.NODE],V=t.data.bufferCanvases[t.MOTIONBLUR_BUFFER_NODE],F=u.contexts[t.DRAG],X=t.data.bufferCanvases[t.MOTIONBLUR_BUFFER_DRAG],j=function(e,n,r){e.setTransform(1,0,0,1,0,0),r||!y?e.clearRect(0,0,t.canvasWidth,t.canvasHeight):P(e,0,0,t.canvasWidth,t.canvasHeight);var a=f;e.drawImage(n,0,0,t.canvasWidth*a,t.canvasHeight*a,0,0,t.canvasWidth,t.canvasHeight)};(c[t.NODE]||L[t.NODE])&&(j(O,V,L[t.NODE]),c[t.NODE]=!1),(c[t.DRAG]||L[t.DRAG])&&(j(F,X,L[t.DRAG]),c[t.DRAG]=!1)}t.prevViewport=k,t.clearingMotionBlur&&(t.clearingMotionBlur=!1,t.motionBlurCleared=!0,t.motionBlur=!0),h&&(t.motionBlurTimeout=setTimeout((function(){t.motionBlurTimeout=null,t.clearedForMotionBlur[t.NODE]=!1,t.clearedForMotionBlur[t.DRAG]=!1,t.motionBlur=!1,t.clearingMotionBlur=!d,t.mbFrames=0,c[t.NODE]=!0,c[t.DRAG]=!0,t.redraw()}),100)),r||n.emit("render")},jd.drawSelectionRectangle=function(e,t){var n=this,r=n.cy,a=n.data,i=r.style(),o=e.drawOnlyNodeLayer,s=e.drawAllLayers,l=a.canvasNeedsRedraw,u=e.forcedContext;if(n.showFps||!o&&l[n.SELECT_BOX]&&!s){var c=u||a.contexts[n.SELECT_BOX];if(t(c),1==n.selection[4]&&(n.hoverData.selecting||n.touchData.selecting)){var d=n.cy.zoom(),h=i.core("selection-box-border-width").value/d;c.lineWidth=h,c.fillStyle="rgba("+i.core("selection-box-color").value[0]+","+i.core("selection-box-color").value[1]+","+i.core("selection-box-color").value[2]+","+i.core("selection-box-opacity").value+")",c.fillRect(n.selection[0],n.selection[1],n.selection[2]-n.selection[0],n.selection[3]-n.selection[1]),h>0&&(c.strokeStyle="rgba("+i.core("selection-box-border-color").value[0]+","+i.core("selection-box-border-color").value[1]+","+i.core("selection-box-border-color").value[2]+","+i.core("selection-box-opacity").value+")",c.strokeRect(n.selection[0],n.selection[1],n.selection[2]-n.selection[0],n.selection[3]-n.selection[1]))}if(a.bgActivePosistion&&!n.hoverData.selecting){d=n.cy.zoom();var f=a.bgActivePosistion;c.fillStyle="rgba("+i.core("active-bg-color").value[0]+","+i.core("active-bg-color").value[1]+","+i.core("active-bg-color").value[2]+","+i.core("active-bg-opacity").value+")",c.beginPath(),c.arc(f.x,f.y,i.core("active-bg-size").pfValue/d,0,2*Math.PI),c.fill()}var p=n.lastRedrawTime;if(n.showFps&&p){p=Math.round(p);var v=Math.round(1e3/p),g="1 frame = "+p+" ms = "+v+" fps";if(c.setTransform(1,0,0,1,0,0),c.fillStyle="rgba(255, 0, 0, 0.75)",c.strokeStyle="rgba(255, 0, 0, 0.75)",c.font="30px Arial",!Xd){var y=c.measureText(g);Xd=y.actualBoundingBoxAscent}c.fillText(g,0,Xd);c.strokeRect(0,Xd+10,250,20),c.fillRect(0,Xd+10,250*Math.min(v/60,1),20)}s||(l[n.SELECT_BOX]=!1)}};var th="undefined"!=typeof Float32Array?Float32Array:Array;function nh(){var e=new th(9);return th!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[5]=0,e[6]=0,e[7]=0),e[0]=1,e[4]=1,e[8]=1,e}function rh(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=1,e[5]=0,e[6]=0,e[7]=0,e[8]=1,e}function ah(e,t,n){var r=t[0],a=t[1],i=t[2],o=t[3],s=t[4],l=t[5],u=t[6],c=t[7],d=t[8],h=n[0],f=n[1];return e[0]=r,e[1]=a,e[2]=i,e[3]=o,e[4]=s,e[5]=l,e[6]=h*r+f*o+u,e[7]=h*a+f*s+c,e[8]=h*i+f*l+d,e}function ih(e,t,n){var r=t[0],a=t[1],i=t[2],o=t[3],s=t[4],l=t[5],u=t[6],c=t[7],d=t[8],h=Math.sin(n),f=Math.cos(n);return e[0]=f*r+h*o,e[1]=f*a+h*s,e[2]=f*i+h*l,e[3]=f*o-h*r,e[4]=f*s-h*a,e[5]=f*l-h*i,e[6]=u,e[7]=c,e[8]=d,e}function oh(e,t,n){var r=n[0],a=n[1];return e[0]=r*t[0],e[1]=r*t[1],e[2]=r*t[2],e[3]=a*t[3],e[4]=a*t[4],e[5]=a*t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e}Math.hypot||(Math.hypot=function(){for(var e=0,t=arguments.length;t--;)e+=arguments[t]*arguments[t];return Math.sqrt(e)});var sh=function(){return i((function e(t,n,r,i){a(this,e),this.debugID=Math.floor(1e4*Math.random()),this.r=t,this.texSize=n,this.texRows=r,this.texHeight=Math.floor(n/r),this.enableWrapping=!0,this.locked=!1,this.texture=null,this.needsBuffer=!0,this.freePointer={x:0,row:0},this.keyToLocation=new Map,this.canvas=i(t,n,n),this.scratch=i(t,n,this.texHeight,"scratch")}),[{key:"lock",value:function(){this.locked=!0}},{key:"getKeys",value:function(){return new Set(this.keyToLocation.keys())}},{key:"getScale",value:function(e){var t=e.w,n=e.h,r=this.texHeight,a=this.texSize,i=r/n,o=t*i,s=n*i;return o>a&&(o=t*(i=a/t),s=n*i),{scale:i,texW:o,texH:s}}},{key:"draw",value:function(e,t,n){var r=this;if(this.locked)throw new Error("can't draw, atlas is locked");var a=this.texSize,i=this.texRows,o=this.texHeight,s=this.getScale(t),l=s.scale,u=s.texW,c=s.texH,d=function(e,r){if(n&&r){var a=r.context,i=e.x,s=e.row,u=i,c=o*s;a.save(),a.translate(u,c),a.scale(l,l),n(a,t),a.restore()}},h=[null,null],f=function(){d(r.freePointer,r.canvas),h[0]={x:r.freePointer.x,y:r.freePointer.row*o,w:u,h:c},h[1]={x:r.freePointer.x+u,y:r.freePointer.row*o,w:0,h:c},r.freePointer.x+=u,r.freePointer.x==a&&(r.freePointer.x=0,r.freePointer.row++)},p=function(){r.freePointer.x=0,r.freePointer.row++};if(this.freePointer.x+u<=a)f();else{if(this.freePointer.row>=i-1)return!1;this.freePointer.x===a?(p(),f()):this.enableWrapping?function(){var e=r.scratch,t=r.canvas;e.clear(),d({x:0,row:0},e);var n=a-r.freePointer.x,i=u-n,s=o,l=r.freePointer.x,f=r.freePointer.row*o,p=n;t.context.drawImage(e,0,0,p,s,l,f,p,s),h[0]={x:l,y:f,w:p,h:c};var v=n,g=(r.freePointer.row+1)*o,y=i;t&&t.context.drawImage(e,v,0,y,s,0,g,y,s),h[1]={x:0,y:g,w:y,h:c},r.freePointer.x=i,r.freePointer.row++}():(p(),f())}return this.keyToLocation.set(e,h),this.needsBuffer=!0,h}},{key:"getOffsets",value:function(e){return this.keyToLocation.get(e)}},{key:"isEmpty",value:function(){return 0===this.freePointer.x&&0===this.freePointer.row}},{key:"canFit",value:function(e){if(this.locked)return!1;var t=this.texSize,n=this.texRows,r=this.getScale(e).texW;return!(this.freePointer.x+r>t)||this.freePointer.row1&&void 0!==arguments[1]?arguments[1]:{},a=r.forceRedraw,i=void 0!==a&&a,s=r.filterEle,l=void 0===s?function(){return!0}:s,u=r.filterType,c=void 0===u?function(){return!0}:u,d=!1,h=!1,f=o(e);try{for(f.s();!(t=f.n()).done;){var p=t.value;if(l(p)){var v,g=o(this.renderTypes.values());try{var y=function(){var e=v.value,t=e.type;if(c(t)){var r=n.collections.get(e.collection),a=e.getKey(p),o=Array.isArray(a)?a:[a];if(i)o.forEach((function(e){return r.markKeyForGC(e)})),h=!0;else{var s=e.getID?e.getID(p):p.id(),l=n._key(t,s),u=n.typeAndIdToKey.get(l);void 0===u||Hd(o,u)||(d=!0,n.typeAndIdToKey.delete(l),u.forEach((function(e){return r.markKeyForGC(e)})))}}};for(g.s();!(v=g.n()).done;)y()}catch(m){g.e(m)}finally{g.f()}}}}catch(m){f.e(m)}finally{f.f()}return h&&(this.gc(),d=!1),d}},{key:"gc",value:function(){var e,t=o(this.collections.values());try{for(t.s();!(e=t.n()).done;){e.value.gc()}}catch(n){t.e(n)}finally{t.f()}}},{key:"getOrCreateAtlas",value:function(e,t,n,r){var a=this.renderTypes.get(t),i=this.collections.get(a.collection),o=!1,s=i.draw(r,n,(function(t){a.drawClipped?(t.save(),t.beginPath(),t.rect(0,0,n.w,n.h),t.clip(),a.drawElement(t,e,n,!0,!0),t.restore()):a.drawElement(t,e,n,!0,!0),o=!0}));if(o){var l=a.getID?a.getID(e):e.id(),u=this._key(t,l);this.typeAndIdToKey.has(u)?this.typeAndIdToKey.get(u).push(r):this.typeAndIdToKey.set(u,[r])}return s}},{key:"getAtlasInfo",value:function(e,t){var n=this,r=this.renderTypes.get(t),a=r.getKey(e);return(Array.isArray(a)?a:[a]).map((function(a){var i=r.getBoundingBox(e,a),o=n.getOrCreateAtlas(e,t,i,a),s=l(o.getOffsets(a),2),u=s[0];return{atlas:o,tex:u,tex1:u,tex2:s[1],bb:i}}))}},{key:"getDebugInfo",value:function(){var e,t=[],n=o(this.collections);try{for(n.s();!(e=n.n()).done;){var r=l(e.value,2),a=r[0],i=r[1].getCounts(),s=i.keyCount,u=i.atlasCount;t.push({type:a,keyCount:s,atlasCount:u})}}catch(c){n.e(c)}finally{n.f()}return t}}])}(),ch=function(){return i((function e(t){a(this,e),this.globalOptions=t,this.atlasSize=t.webglTexSize,this.maxAtlasesPerBatch=t.webglTexPerBatch,this.batchAtlases=[]}),[{key:"getMaxAtlasesPerBatch",value:function(){return this.maxAtlasesPerBatch}},{key:"getAtlasSize",value:function(){return this.atlasSize}},{key:"getIndexArray",value:function(){return Array.from({length:this.maxAtlasesPerBatch},(function(e,t){return t}))}},{key:"startBatch",value:function(){this.batchAtlases=[]}},{key:"getAtlasCount",value:function(){return this.batchAtlases.length}},{key:"getAtlases",value:function(){return this.batchAtlases}},{key:"canAddToCurrentBatch",value:function(e){return this.batchAtlases.length!==this.maxAtlasesPerBatch||this.batchAtlases.includes(e)}},{key:"getAtlasIndexForBatch",value:function(e){var t=this.batchAtlases.indexOf(e);if(t<0){if(this.batchAtlases.length===this.maxAtlasesPerBatch)throw new Error("cannot add more atlases to batch");this.batchAtlases.push(e),t=this.batchAtlases.length-1}return t}}])}(),dh={SCREEN:{name:"screen",screen:!0},PICKING:{name:"picking",picking:!0}},hh=1,fh=2,ph=function(){return i((function e(t,n,r){a(this,e),this.r=t,this.gl=n,this.maxInstances=r.webglBatchSize,this.atlasSize=r.webglTexSize,this.bgColor=r.bgColor,this.debug=r.webglDebug,this.batchDebugInfo=[],r.enableWrapping=!0,r.createTextureCanvas=qd,this.atlasManager=new uh(t,r),this.batchManager=new ch(r),this.simpleShapeOptions=new Map,this.program=this._createShaderProgram(dh.SCREEN),this.pickingProgram=this._createShaderProgram(dh.PICKING),this.vao=this._createVAO()}),[{key:"addAtlasCollection",value:function(e,t){this.atlasManager.addAtlasCollection(e,t)}},{key:"addTextureAtlasRenderType",value:function(e,t){this.atlasManager.addRenderType(e,t)}},{key:"addSimpleShapeRenderType",value:function(e,t){this.simpleShapeOptions.set(e,t)}},{key:"invalidate",value:function(e){var t=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).type,n=this.atlasManager;return t?n.invalidate(e,{filterType:function(e){return e===t},forceRedraw:!0}):n.invalidate(e)}},{key:"gc",value:function(){this.atlasManager.gc()}},{key:"_createShaderProgram",value:function(e){var t=this.gl,n="#version 300 es\n precision highp float;\n\n uniform mat3 uPanZoomMatrix;\n uniform int uAtlasSize;\n \n // instanced\n in vec2 aPosition; // a vertex from the unit square\n \n in mat3 aTransform; // used to transform verticies, eg into a bounding box\n in int aVertType; // the type of thing we are rendering\n\n // the z-index that is output when using picking mode\n in vec4 aIndex;\n \n // For textures\n in int aAtlasId; // which shader unit/atlas to use\n in vec4 aTex; // x/y/w/h of texture in atlas\n\n // for edges\n in vec4 aPointAPointB;\n in vec4 aPointCPointD;\n in vec2 aLineWidth; // also used for node border width\n\n // simple shapes\n in vec4 aCornerRadius; // for round-rectangle [top-right, bottom-right, top-left, bottom-left]\n in vec4 aColor; // also used for edges\n in vec4 aBorderColor; // aLineWidth is used for border width\n\n // output values passed to the fragment shader\n out vec2 vTexCoord;\n out vec4 vColor;\n out vec2 vPosition;\n // flat values are not interpolated\n flat out int vAtlasId; \n flat out int vVertType;\n flat out vec2 vTopRight;\n flat out vec2 vBotLeft;\n flat out vec4 vCornerRadius;\n flat out vec4 vBorderColor;\n flat out vec2 vBorderWidth;\n flat out vec4 vIndex;\n \n void main(void) {\n int vid = gl_VertexID;\n vec2 position = aPosition; // TODO make this a vec3, simplifies some code below\n\n if(aVertType == ".concat(0,") {\n float texX = aTex.x; // texture coordinates\n float texY = aTex.y;\n float texW = aTex.z;\n float texH = aTex.w;\n\n if(vid == 1 || vid == 2 || vid == 4) {\n texX += texW;\n }\n if(vid == 2 || vid == 4 || vid == 5) {\n texY += texH;\n }\n\n float d = float(uAtlasSize);\n vTexCoord = vec2(texX / d, texY / d); // tex coords must be between 0 and 1\n\n gl_Position = vec4(uPanZoomMatrix * aTransform * vec3(position, 1.0), 1.0);\n }\n else if(aVertType == ").concat(4," || aVertType == ").concat(7," \n || aVertType == ").concat(5," || aVertType == ").concat(6,") { // simple shapes\n\n // the bounding box is needed by the fragment shader\n vBotLeft = (aTransform * vec3(0, 0, 1)).xy; // flat\n vTopRight = (aTransform * vec3(1, 1, 1)).xy; // flat\n vPosition = (aTransform * vec3(position, 1)).xy; // will be interpolated\n\n // calculations are done in the fragment shader, just pass these along\n vColor = aColor;\n vCornerRadius = aCornerRadius;\n vBorderColor = aBorderColor;\n vBorderWidth = aLineWidth;\n\n gl_Position = vec4(uPanZoomMatrix * aTransform * vec3(position, 1.0), 1.0);\n }\n else if(aVertType == ").concat(1,") {\n vec2 source = aPointAPointB.xy;\n vec2 target = aPointAPointB.zw;\n\n // adjust the geometry so that the line is centered on the edge\n position.y = position.y - 0.5;\n\n // stretch the unit square into a long skinny rectangle\n vec2 xBasis = target - source;\n vec2 yBasis = normalize(vec2(-xBasis.y, xBasis.x));\n vec2 point = source + xBasis * position.x + yBasis * aLineWidth[0] * position.y;\n\n gl_Position = vec4(uPanZoomMatrix * vec3(point, 1.0), 1.0);\n vColor = aColor;\n } \n else if(aVertType == ").concat(2,") {\n vec2 pointA = aPointAPointB.xy;\n vec2 pointB = aPointAPointB.zw;\n vec2 pointC = aPointCPointD.xy;\n vec2 pointD = aPointCPointD.zw;\n\n // adjust the geometry so that the line is centered on the edge\n position.y = position.y - 0.5;\n\n vec2 p0, p1, p2, pos;\n if(position.x == 0.0) { // The left side of the unit square\n p0 = pointA;\n p1 = pointB;\n p2 = pointC;\n pos = position;\n } else { // The right side of the unit square, use same approach but flip the geometry upside down\n p0 = pointD;\n p1 = pointC;\n p2 = pointB;\n pos = vec2(0.0, -position.y);\n }\n\n vec2 p01 = p1 - p0;\n vec2 p12 = p2 - p1;\n vec2 p21 = p1 - p2;\n\n // Find the normal vector.\n vec2 tangent = normalize(normalize(p12) + normalize(p01));\n vec2 normal = vec2(-tangent.y, tangent.x);\n\n // Find the vector perpendicular to p0 -> p1.\n vec2 p01Norm = normalize(vec2(-p01.y, p01.x));\n\n // Determine the bend direction.\n float sigma = sign(dot(p01 + p21, normal));\n float width = aLineWidth[0];\n\n if(sign(pos.y) == -sigma) {\n // This is an intersecting vertex. Adjust the position so that there's no overlap.\n vec2 point = 0.5 * width * normal * -sigma / dot(normal, p01Norm);\n gl_Position = vec4(uPanZoomMatrix * vec3(p1 + point, 1.0), 1.0);\n } else {\n // This is a non-intersecting vertex. Treat it like a mitre join.\n vec2 point = 0.5 * width * normal * sigma * dot(normal, p01Norm);\n gl_Position = vec4(uPanZoomMatrix * vec3(p1 + point, 1.0), 1.0);\n }\n\n vColor = aColor;\n } \n else if(aVertType == ").concat(3," && vid < 3) {\n // massage the first triangle into an edge arrow\n if(vid == 0)\n position = vec2(-0.15, -0.3);\n if(vid == 1)\n position = vec2( 0.0, 0.0);\n if(vid == 2)\n position = vec2( 0.15, -0.3);\n\n gl_Position = vec4(uPanZoomMatrix * aTransform * vec3(position, 1.0), 1.0);\n vColor = aColor;\n }\n else {\n gl_Position = vec4(2.0, 0.0, 0.0, 1.0); // discard vertex by putting it outside webgl clip space\n }\n\n vAtlasId = aAtlasId;\n vVertType = aVertType;\n vIndex = aIndex;\n }\n "),r=this.batchManager.getIndexArray(),a="#version 300 es\n precision highp float;\n\n // declare texture unit for each texture atlas in the batch\n ".concat(r.map((function(e){return"uniform sampler2D uTexture".concat(e,";")})).join("\n\t"),"\n\n uniform vec4 uBGColor;\n uniform float uZoom;\n\n in vec2 vTexCoord;\n in vec4 vColor;\n in vec2 vPosition; // model coordinates\n\n flat in int vAtlasId;\n flat in vec4 vIndex;\n flat in int vVertType;\n flat in vec2 vTopRight;\n flat in vec2 vBotLeft;\n flat in vec4 vCornerRadius;\n flat in vec4 vBorderColor;\n flat in vec2 vBorderWidth;\n\n out vec4 outColor;\n\n ").concat("\n float circleSD(vec2 p, float r) {\n return distance(vec2(0), p) - r; // signed distance\n }\n","\n ").concat("\n float rectangleSD(vec2 p, vec2 b) {\n vec2 d = abs(p)-b;\n return distance(vec2(0),max(d,0.0)) + min(max(d.x,d.y),0.0);\n }\n","\n ").concat("\n float roundRectangleSD(vec2 p, vec2 b, vec4 cr) {\n cr.xy = (p.x > 0.0) ? cr.xy : cr.zw;\n cr.x = (p.y > 0.0) ? cr.x : cr.y;\n vec2 q = abs(p) - b + cr.x;\n return min(max(q.x, q.y), 0.0) + distance(vec2(0), max(q, 0.0)) - cr.x;\n }\n","\n ").concat("\n float ellipseSD(vec2 p, vec2 ab) {\n p = abs( p ); // symmetry\n\n // find root with Newton solver\n vec2 q = ab*(p-ab);\n float w = (q.x1.0) ? d : -d;\n }\n","\n\n vec4 blend(vec4 top, vec4 bot) { // blend colors with premultiplied alpha\n return vec4( \n top.rgb + (bot.rgb * (1.0 - top.a)),\n top.a + (bot.a * (1.0 - top.a)) \n );\n }\n\n vec4 distInterp(vec4 cA, vec4 cB, float d) { // interpolate color using Signed Distance\n // scale to the zoom level so that borders don't look blurry when zoomed in\n // note 1.5 is an aribitrary value chosen because it looks good\n return mix(cA, cB, 1.0 - smoothstep(0.0, 1.5 / uZoom, abs(d))); \n }\n\n void main(void) {\n if(vVertType == ").concat(0,") {\n // look up the texel from the texture unit\n ").concat(r.map((function(e){return"if(vAtlasId == ".concat(e,") outColor = texture(uTexture").concat(e,", vTexCoord);")})).join("\n\telse "),"\n } \n else if(vVertType == ").concat(3,") {\n // mimics how canvas renderer uses context.globalCompositeOperation = 'destination-out';\n outColor = blend(vColor, uBGColor);\n outColor.a = 1.0; // make opaque, masks out line under arrow\n }\n else if(vVertType == ").concat(4," && vBorderWidth == vec2(0.0)) { // simple rectangle with no border\n outColor = vColor; // unit square is already transformed to the rectangle, nothing else needs to be done\n }\n else if(vVertType == ").concat(4," || vVertType == ").concat(7," \n || vVertType == ").concat(5," || vVertType == ").concat(6,") { // use SDF\n\n float outerBorder = vBorderWidth[0];\n float innerBorder = vBorderWidth[1];\n float borderPadding = outerBorder * 2.0;\n float w = vTopRight.x - vBotLeft.x - borderPadding;\n float h = vTopRight.y - vBotLeft.y - borderPadding;\n vec2 b = vec2(w/2.0, h/2.0); // half width, half height\n vec2 p = vPosition - vec2(vTopRight.x - b[0] - outerBorder, vTopRight.y - b[1] - outerBorder); // translate to center\n\n float d; // signed distance\n if(vVertType == ").concat(4,") {\n d = rectangleSD(p, b);\n } else if(vVertType == ").concat(7," && w == h) {\n d = circleSD(p, b.x); // faster than ellipse\n } else if(vVertType == ").concat(7,") {\n d = ellipseSD(p, b);\n } else {\n d = roundRectangleSD(p, b, vCornerRadius.wzyx);\n }\n\n // use the distance to interpolate a color to smooth the edges of the shape, doesn't need multisampling\n // we must smooth colors inwards, because we can't change pixels outside the shape's bounding box\n if(d > 0.0) {\n if(d > outerBorder) {\n discard;\n } else {\n outColor = distInterp(vBorderColor, vec4(0), d - outerBorder);\n }\n } else {\n if(d > innerBorder) {\n vec4 outerColor = outerBorder == 0.0 ? vec4(0) : vBorderColor;\n vec4 innerBorderColor = blend(vBorderColor, vColor);\n outColor = distInterp(innerBorderColor, outerColor, d);\n } \n else {\n vec4 outerColor;\n if(innerBorder == 0.0 && outerBorder == 0.0) {\n outerColor = vec4(0);\n } else if(innerBorder == 0.0) {\n outerColor = vBorderColor;\n } else {\n outerColor = blend(vBorderColor, vColor);\n }\n outColor = distInterp(vColor, outerColor, d - innerBorder);\n }\n }\n }\n else {\n outColor = vColor;\n }\n\n ").concat(e.picking?"if(outColor.a == 0.0) discard;\n else outColor = vIndex;":"","\n }\n "),i=function(e,t,n){var r=Yd(e,e.VERTEX_SHADER,t),a=Yd(e,e.FRAGMENT_SHADER,n),i=e.createProgram();if(e.attachShader(i,r),e.attachShader(i,a),e.linkProgram(i),!e.getProgramParameter(i,e.LINK_STATUS))throw new Error("Could not initialize shaders");return i}(t,n,a);i.aPosition=t.getAttribLocation(i,"aPosition"),i.aIndex=t.getAttribLocation(i,"aIndex"),i.aVertType=t.getAttribLocation(i,"aVertType"),i.aTransform=t.getAttribLocation(i,"aTransform"),i.aAtlasId=t.getAttribLocation(i,"aAtlasId"),i.aTex=t.getAttribLocation(i,"aTex"),i.aPointAPointB=t.getAttribLocation(i,"aPointAPointB"),i.aPointCPointD=t.getAttribLocation(i,"aPointCPointD"),i.aLineWidth=t.getAttribLocation(i,"aLineWidth"),i.aColor=t.getAttribLocation(i,"aColor"),i.aCornerRadius=t.getAttribLocation(i,"aCornerRadius"),i.aBorderColor=t.getAttribLocation(i,"aBorderColor"),i.uPanZoomMatrix=t.getUniformLocation(i,"uPanZoomMatrix"),i.uAtlasSize=t.getUniformLocation(i,"uAtlasSize"),i.uBGColor=t.getUniformLocation(i,"uBGColor"),i.uZoom=t.getUniformLocation(i,"uZoom"),i.uTextures=[];for(var o=0;o1&&void 0!==arguments[1]?arguments[1]:dh.SCREEN;this.panZoomMatrix=e,this.renderTarget=t,this.batchDebugInfo=[],this.wrappedCount=0,this.simpleCount=0,this.startBatch()}},{key:"startBatch",value:function(){this.instanceCount=0,this.batchManager.startBatch()}},{key:"endFrame",value:function(){this.endBatch()}},{key:"_isVisible",value:function(e,t){return!!e.visible()&&(!t||!t.isVisible||t.isVisible(e))}},{key:"drawTexture",value:function(e,t,n){var r=this.atlasManager,a=this.batchManager,i=r.getRenderTypeOpts(n);if(this._isVisible(e,i)&&(!e.isEdge()||this._isValidEdge(e))){if(this.renderTarget.picking&&i.getTexPickingMode){var s=i.getTexPickingMode(e);if(s===hh)return;if(s==fh)return void this.drawPickingRectangle(e,t,n)}var u,c=o(r.getAtlasInfo(e,n));try{for(c.s();!(u=c.n()).done;){var d=u.value,h=d.atlas,f=d.tex1,p=d.tex2;a.canAddToCurrentBatch(h)||this.endBatch();for(var v=a.getAtlasIndexForBatch(h),g=0,y=[[f,!0],[p,!1]];g=this.maxInstances&&this.endBatch()}}}}catch(T){c.e(T)}finally{c.f()}}}},{key:"setTransformMatrix",value:function(e,t,n,r){var a=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],i=0;if(n.shapeProps&&n.shapeProps.padding&&(i=e.pstyle(n.shapeProps.padding).pfValue),r){var o=r.bb,s=r.tex1,l=r.tex2,u=s.w/(s.w+l.w);a||(u=1-u);var c=this._getAdjustedBB(o,i,a,u);this._applyTransformMatrix(t,c,n,e)}else{var d=n.getBoundingBox(e),h=this._getAdjustedBB(d,i,!0,1);this._applyTransformMatrix(t,h,n,e)}}},{key:"_applyTransformMatrix",value:function(e,t,n,r){var a,i;rh(e);var o=n.getRotation?n.getRotation(r):0;if(0!==o){var s=n.getRotationPoint(r);ah(e,e,[s.x,s.y]),ih(e,e,o);var l=n.getRotationOffset(r);a=l.x+(t.xOffset||0),i=l.y+(t.yOffset||0)}else a=t.x1,i=t.y1;ah(e,e,[a,i]),oh(e,e,[t.w,t.h])}},{key:"_getAdjustedBB",value:function(e,t,n,r){var a=e.x1,i=e.y1,o=e.w,s=e.h;t&&(a-=t,i-=t,o+=2*t,s+=2*t);var l=0,u=o*r;return n&&r<1?o=u:!n&&r<1&&(a+=l=o-u,o=u),{x1:a,y1:i,w:o,h:s,xOffset:l,yOffset:e.yOffset}}},{key:"drawPickingRectangle",value:function(e,t,n){var r=this.atlasManager.getRenderTypeOpts(n),a=this.instanceCount;this.vertTypeBuffer.getView(a)[0]=4,Gd(t,this.indexBuffer.getView(a)),Kd([0,0,0],1,this.colorBuffer.getView(a));var i=this.transformBuffer.getMatrixView(a);this.setTransformMatrix(e,i,r),this.simpleCount++,this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}},{key:"drawNode",value:function(e,t,n){var r=this.simpleShapeOptions.get(n);if(this._isVisible(e,r)){var a=r.shapeProps,i=this._getVertTypeForShape(e,a.shape);if(void 0===i||r.isSimple&&!r.isSimple(e))this.drawTexture(e,t,n);else{var o=this.instanceCount;if(this.vertTypeBuffer.getView(o)[0]=i,5===i||6===i){var s=r.getBoundingBox(e),l=this._getCornerRadius(e,a.radius,s),u=this.cornerRadiusBuffer.getView(o);u[0]=l,u[1]=l,u[2]=l,u[3]=l,6===i&&(u[0]=0,u[2]=0)}Gd(t,this.indexBuffer.getView(o)),Kd(e.pstyle(a.color).value,e.pstyle(a.opacity).value,this.colorBuffer.getView(o));var c=this.lineWidthBuffer.getView(o);if(c[0]=0,c[1]=0,a.border){var d=e.pstyle("border-width").value;if(d>0){Kd(e.pstyle("border-color").value,e.pstyle("border-opacity").value,this.borderColorBuffer.getView(o));var h=e.pstyle("border-position").value;if("inside"===h)c[0]=0,c[1]=-d;else if("outside"===h)c[0]=d,c[1]=0;else{var f=d/2;c[0]=f,c[1]=-f}}}var p=this.transformBuffer.getMatrixView(o);this.setTransformMatrix(e,p,r),this.simpleCount++,this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}}}},{key:"_getVertTypeForShape",value:function(e,t){switch(e.pstyle(t).value){case"rectangle":return 4;case"ellipse":return 7;case"roundrectangle":case"round-rectangle":return 5;case"bottom-round-rectangle":return 6;default:return}}},{key:"_getCornerRadius",value:function(e,t,n){var r=n.w,a=n.h;if("auto"===e.pstyle(t).value)return Mn(r,a);var i=e.pstyle(t).pfValue,o=r/2,s=a/2;return Math.min(i,s,o)}},{key:"drawEdgeArrow",value:function(e,t,n){if(e.visible()){var r,a,i,o=e._private.rscratch;if("source"===n?(r=o.arrowStartX,a=o.arrowStartY,i=o.srcArrowAngle):(r=o.arrowEndX,a=o.arrowEndY,i=o.tgtArrowAngle),!(isNaN(r)||null==r||isNaN(a)||null==a||isNaN(i)||null==i))if("none"!==e.pstyle(n+"-arrow-shape").value){var s=e.pstyle(n+"-arrow-color").value,l=e.pstyle("opacity").value*e.pstyle("line-opacity").value,u=e.pstyle("width").pfValue,c=e.pstyle("arrow-scale").value,d=this.r.getArrowWidth(u,c),h=this.instanceCount,f=this.transformBuffer.getMatrixView(h);rh(f),ah(f,f,[r,a]),oh(f,f,[d,d]),ih(f,f,i),this.vertTypeBuffer.getView(h)[0]=3,Gd(t,this.indexBuffer.getView(h)),Kd(s,l,this.colorBuffer.getView(h)),this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}}}},{key:"drawEdgeLine",value:function(e,t){if(e.visible()){var n=this._getEdgePoints(e);if(n){var r=e.pstyle("opacity").value,a=e.pstyle("line-opacity").value,i=e.pstyle("width").pfValue,o=e.pstyle("line-color").value,s=r*a;if(n.length/2+this.instanceCount>this.maxInstances&&this.endBatch(),4==n.length){var l=this.instanceCount;this.vertTypeBuffer.getView(l)[0]=1,Gd(t,this.indexBuffer.getView(l)),Kd(o,s,this.colorBuffer.getView(l)),this.lineWidthBuffer.getView(l)[0]=i;var u=this.pointAPointBBuffer.getView(l);u[0]=n[0],u[1]=n[1],u[2]=n[2],u[3]=n[3],this.instanceCount++,this.instanceCount>=this.maxInstances&&this.endBatch()}else for(var c=0;c=this.maxInstances&&this.endBatch()}}}}},{key:"_isValidEdge",value:function(e){var t=e._private.rscratch;return!t.badLine&&null!=t.allpts&&!isNaN(t.allpts[0])}},{key:"_getEdgePoints",value:function(e){var t=e._private.rscratch;if(this._isValidEdge(e)){var n=t.allpts;if(4==n.length)return n;var r=this._getNumSegments(e);return this._getCurveSegmentPoints(n,r)}}},{key:"_getNumSegments",value:function(e){return Math.min(Math.max(15,5),this.maxInstances)}},{key:"_getCurveSegmentPoints",value:function(e,t){if(4==e.length)return e;for(var n=Array(2*(t+1)),r=0;r<=t;r++)if(0==r)n[0]=e[0],n[1]=e[1];else if(r==t)n[2*r]=e[e.length-2],n[2*r+1]=e[e.length-1];else{var a=r/t;this._setCurvePoint(e,a,n,2*r)}return n}},{key:"_setCurvePoint",value:function(e,t,n,r){if(!(e.length<=2)){for(var a=Array(e.length-2),i=0;i0}},u=function(e){return"yes"===e.pstyle("text-events").strValue?fh:hh},c=function(e){var t=e.position(),n=t.x,r=t.y,a=e.outerWidth(),i=e.outerHeight();return{w:a,h:i,x1:n-a/2,y1:r-i/2}};n.drawing.addAtlasCollection("node",{texRows:e.webglTexRowsNodes}),n.drawing.addAtlasCollection("label",{texRows:e.webglTexRows}),n.drawing.addTextureAtlasRenderType("node-body",{collection:"node",getKey:t.getStyleKey,getBoundingBox:t.getElementBox,drawElement:t.drawElement}),n.drawing.addSimpleShapeRenderType("node-body",{getBoundingBox:c,isSimple:Ud,shapeProps:{shape:"shape",color:"background-color",opacity:"background-opacity",radius:"corner-radius",border:!0}}),n.drawing.addSimpleShapeRenderType("node-overlay",{getBoundingBox:c,isVisible:s("overlay"),shapeProps:{shape:"overlay-shape",color:"overlay-color",opacity:"overlay-opacity",padding:"overlay-padding",radius:"overlay-corner-radius"}}),n.drawing.addSimpleShapeRenderType("node-underlay",{getBoundingBox:c,isVisible:s("underlay"),shapeProps:{shape:"underlay-shape",color:"underlay-color",opacity:"underlay-opacity",padding:"underlay-padding",radius:"underlay-corner-radius"}}),n.drawing.addTextureAtlasRenderType("label",{collection:"label",getTexPickingMode:u,getKey:yh(t.getLabelKey,null),getBoundingBox:mh(t.getLabelBox,null),drawClipped:!0,drawElement:t.drawLabel,getRotation:a(null),getRotationPoint:t.getLabelRotationPoint,getRotationOffset:t.getLabelRotationOffset,isVisible:i("label")}),n.drawing.addTextureAtlasRenderType("edge-source-label",{collection:"label",getTexPickingMode:u,getKey:yh(t.getSourceLabelKey,"source"),getBoundingBox:mh(t.getSourceLabelBox,"source"),drawClipped:!0,drawElement:t.drawSourceLabel,getRotation:a("source"),getRotationPoint:t.getSourceLabelRotationPoint,getRotationOffset:t.getSourceLabelRotationOffset,isVisible:i("source-label")}),n.drawing.addTextureAtlasRenderType("edge-target-label",{collection:"label",getTexPickingMode:u,getKey:yh(t.getTargetLabelKey,"target"),getBoundingBox:mh(t.getTargetLabelBox,"target"),drawClipped:!0,drawElement:t.drawTargetLabel,getRotation:a("target"),getRotationPoint:t.getTargetLabelRotationPoint,getRotationOffset:t.getTargetLabelRotationOffset,isVisible:i("target-label")});var d=Me((function(){console.log("garbage collect flag set"),n.data.gc=!0}),1e4);n.onUpdateEleCalcs((function(e,t){var r=!1;t&&t.length>0&&(r|=n.drawing.invalidate(t)),r&&d()})),function(e){var t=e.render;e.render=function(n){n=n||{};var r=e.cy;e.webgl&&(r.zoom()>dd?(!function(e){var t=e.data.contexts[e.WEBGL];t.clear(t.COLOR_BUFFER_BIT|t.DEPTH_BUFFER_BIT)}(e),t.call(e,n)):(!function(e){var t=function(t){t.save(),t.setTransform(1,0,0,1,0,0),t.clearRect(0,0,e.canvasWidth,e.canvasHeight),t.restore()};t(e.data.contexts[e.NODE]),t(e.data.contexts[e.DRAG])}(e),wh(e,n,dh.SCREEN)))};var n=e.matchCanvasSize;e.matchCanvasSize=function(t){n.call(e,t),e.pickingFrameBuffer.setFramebufferAttachmentSizes(e.canvasWidth,e.canvasHeight),e.pickingFrameBuffer.needsDraw=!0},e.findNearestElements=function(t,n,r,a){return function(e,t,n){var r,a,i,s=function(e,t,n,r,a){var i,o,s,u,c=Wd(e),d=c.pan,h=c.zoom,f=function(e,t,n,r,a){var i=r*n+t.x,o=a*n+t.y;return[i,o=Math.round(e.canvasHeight-o)]}(e,d,h,t,n),p=l(f,2),v=p[0],g=p[1],y=6;if(i=v-y/2,o=g-y/2,u=y,0===(s=y)||0===u)return[];var m=e.data.contexts[e.WEBGL];m.bindFramebuffer(m.FRAMEBUFFER,e.pickingFrameBuffer),e.pickingFrameBuffer.needsDraw&&(m.viewport(0,0,m.canvas.width,m.canvas.height),wh(e,null,dh.PICKING),e.pickingFrameBuffer.needsDraw=!1);var b=s*u,x=new Uint8Array(4*b);m.readPixels(i,o,s,u,m.RGBA,m.UNSIGNED_BYTE,x),m.bindFramebuffer(m.FRAMEBUFFER,null);for(var w=new Set,E=0;E=0&&w.add(k)}return w}(e,t,n),u=e.getCachedZSortedEles(),c=o(s);try{for(c.s();!(i=c.n()).done;){var d=u[i.value];if(!r&&d.isNode()&&(r=d),!a&&d.isEdge()&&(a=d),r&&a)break}}catch(h){c.e(h)}finally{c.f()}return[r,a].filter(Boolean)}(e,t,n)};var r=e.invalidateCachedZSortedEles;e.invalidateCachedZSortedEles=function(){r.call(e),e.pickingFrameBuffer.needsDraw=!0};var a=e.notify;e.notify=function(t,n){a.call(e,t,n),"viewport"===t||"bounds"===t?e.pickingFrameBuffer.needsDraw=!0:"background"===t&&e.drawing.invalidate(n,{type:"node-body"})}}(n)};var yh=function(e,t){return function(n){var r=e(n),a=gh(n,t);return a.length>1?a.map((function(e,t){return"".concat(r,"_").concat(t)})):r}},mh=function(e,t){return function(n,r){var a=e(n);if("string"==typeof r){var i=r.indexOf("_");if(i>0){var o=Number(r.substring(i+1)),s=gh(n,t),l=a.h/s.length,u=l*o,c=a.y1+u;return{x1:a.x1,w:a.w,y1:c,h:l,yOffset:u}}}return a}};function bh(e,t){var n=e.canvasWidth,r=e.canvasHeight,a=Wd(e),i=a.pan,o=a.zoom;t.setTransform(1,0,0,1,0,0),t.clearRect(0,0,n,r),t.translate(i.x,i.y),t.scale(o,o)}function xh(e,t,n){var r=e.drawing;t+=1,n.isNode()?(r.drawNode(n,t,"node-underlay"),r.drawNode(n,t,"node-body"),r.drawTexture(n,t,"label"),r.drawNode(n,t,"node-overlay")):(r.drawEdgeLine(n,t),r.drawEdgeArrow(n,t,"source"),r.drawEdgeArrow(n,t,"target"),r.drawTexture(n,t,"label"),r.drawTexture(n,t,"edge-source-label"),r.drawTexture(n,t,"edge-target-label"))}function wh(e,t,n){var r;e.webglDebug&&(r=performance.now());var a=e.drawing,i=0;if(n.screen&&e.data.canvasNeedsRedraw[e.SELECT_BOX]&&function(e,t){e.drawSelectionRectangle(t,(function(t){return bh(e,t)}))}(e,t),e.data.canvasNeedsRedraw[e.NODE]||n.picking){var s=e.data.contexts[e.WEBGL];n.screen?(s.clearColor(0,0,0,0),s.enable(s.BLEND),s.blendFunc(s.ONE,s.ONE_MINUS_SRC_ALPHA)):s.disable(s.BLEND),s.clear(s.COLOR_BUFFER_BIT|s.DEPTH_BUFFER_BIT),s.viewport(0,0,s.canvas.width,s.canvas.height);var l=function(e){var t=e.canvasWidth,n=e.canvasHeight,r=Wd(e),a=r.pan,i=r.zoom,o=nh();ah(o,o,[a.x,a.y]),oh(o,o,[i,i]);var s=nh();!function(e,t,n){e[0]=2/t,e[1]=0,e[2]=0,e[3]=0,e[4]=-2/n,e[5]=0,e[6]=-1,e[7]=1,e[8]=1}(s,t,n);var l,u,c,d,h,f,p,v,g,y,m,b,x,w,E,k,T,C,P,S,B,D=nh();return l=D,c=o,d=(u=s)[0],h=u[1],f=u[2],p=u[3],v=u[4],g=u[5],y=u[6],m=u[7],b=u[8],x=c[0],w=c[1],E=c[2],k=c[3],T=c[4],C=c[5],P=c[6],S=c[7],B=c[8],l[0]=x*d+w*p+E*y,l[1]=x*h+w*v+E*m,l[2]=x*f+w*g+E*b,l[3]=k*d+T*p+C*y,l[4]=k*h+T*v+C*m,l[5]=k*f+T*g+C*b,l[6]=P*d+S*p+B*y,l[7]=P*h+S*v+B*m,l[8]=P*f+S*g+B*b,D}(e),u=e.getCachedZSortedEles();if(i=u.length,a.startFrame(l,n),n.screen){for(var c=0;c0&&i>0){h.clearRect(0,0,a,i),h.globalCompositeOperation="source-over";var f=this.getCachedZSortedEles();if(e.full)h.translate(-n.x1*l,-n.y1*l),h.scale(l,l),this.drawElements(h,f),h.scale(1/l,1/l),h.translate(n.x1*l,n.y1*l);else{var p=t.pan(),v={x:p.x*l,y:p.y*l};l*=t.zoom(),h.translate(v.x,v.y),h.scale(l,l),this.drawElements(h,f),h.scale(1/l,1/l),h.translate(-v.x,-v.y)}e.bg&&(h.globalCompositeOperation="destination-over",h.fillStyle=e.bg,h.rect(0,0,a,i),h.fill())}return d},Dh.png=function(e){return Ah(e,this.bufferCanvasImage(e),"image/png")},Dh.jpg=function(e){return Ah(e,this.bufferCanvasImage(e),"image/jpeg")};var Mh={nodeShapeImpl:function(e,t,n,r,a,i,o,s){switch(e){case"ellipse":return this.drawEllipsePath(t,n,r,a,i);case"polygon":return this.drawPolygonPath(t,n,r,a,i,o);case"round-polygon":return this.drawRoundPolygonPath(t,n,r,a,i,o,s);case"roundrectangle":case"round-rectangle":return this.drawRoundRectanglePath(t,n,r,a,i,s);case"cutrectangle":case"cut-rectangle":return this.drawCutRectanglePath(t,n,r,a,i,o,s);case"bottomroundrectangle":case"bottom-round-rectangle":return this.drawBottomRoundRectanglePath(t,n,r,a,i,s);case"barrel":return this.drawBarrelPath(t,n,r,a,i)}}},Rh=Nh,Ih=Nh.prototype;function Nh(e){var t=this,n=t.cy.window().document;e.webgl&&(Ih.CANVAS_LAYERS=t.CANVAS_LAYERS=4,console.log("webgl rendering enabled")),t.data={canvases:new Array(Ih.CANVAS_LAYERS),contexts:new Array(Ih.CANVAS_LAYERS),canvasNeedsRedraw:new Array(Ih.CANVAS_LAYERS),bufferCanvases:new Array(Ih.BUFFER_COUNT),bufferContexts:new Array(Ih.CANVAS_LAYERS)};var r="-webkit-tap-highlight-color",a="rgba(0,0,0,0)";t.data.canvasContainer=n.createElement("div");var i=t.data.canvasContainer.style;t.data.canvasContainer.style[r]=a,i.position="relative",i.zIndex="0",i.overflow="hidden";var o=e.cy.container();o.appendChild(t.data.canvasContainer),o.style[r]=a;var s={"-webkit-user-select":"none","-moz-user-select":"-moz-none","user-select":"none","-webkit-tap-highlight-color":"rgba(0,0,0,0)","outline-style":"none"};p&&p.userAgent.match(/msie|trident|edge/i)&&(s["-ms-touch-action"]="none",s["touch-action"]="none");for(var l=0;l{i.r(n),i.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>d,frontMatter:()=>r,metadata:()=>t,toc:()=>h});var t=i(99042),o=i(74848),s=i(28453);const r={slug:"release-4.0",title:"Git It Release (January-2025, V-4.0) is now Live",description:"Phoenix Code 4.0 introduces built-in Git integration, color previews, and open-in-terminal support. The largest release in the Brackets legacy.",authors:["arun","charly","devvaannsh","phoenixBot"],tags:["Git","Color previews","Version Control","open in terminal","Stability Improvements","Windows","Linux","Mac","Release"]},a=void 0,l={authorsImageUrls:[void 0,void 0,void 0,void 0]},h=[{value:"The legacy of Brackets - Continued",id:"the-legacy-of-brackets---continued",level:2},{value:"Git for Desktop",id:"git-for-desktop",level:2},{value:"Color Previews",id:"color-previews",level:2},{value:"Open in Terminal and File Explorer",id:"open-in-terminal-and-file-explorer",level:2},{value:"Better Translations",id:"better-translations",level:2},{value:"Notable changes and fixes",id:"notable-changes-and-fixes",level:2},{value:"Performance & Stability Tweaks",id:"performance--stability-tweaks",level:2},{value:"All changes",id:"all-changes",level:2},{value:"A Request from the Phoenix Team:",id:"a-request-from-the-phoenix-team",level:2}];function c(e){const n={a:"a",code:"code",h2:"h2",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(n.p,{children:["2025 January release(4.0) of Phoenix Code is now available for download at ",(0,o.jsx)(n.a,{href:"https://phcode.io",children:"phcode.io"}),"."]}),"\n",(0,o.jsx)(n.p,{children:"This is the largest release we had in a while, and we are happy to announce the next phase of Phoenix Code with\na major version bump to 4.0."}),"\n",(0,o.jsx)(n.h2,{id:"the-legacy-of-brackets---continued",children:"The legacy of Brackets - Continued"}),"\n",(0,o.jsxs)(n.p,{children:["A decade-long journey of pushing web development forward: The Brackets story continues with Phoenix Code.\n",(0,o.jsx)(n.a,{href:"https://docs.phcode.dev/blog/Blog-Legacy",children:"Read more about the story of Brackets and the journey to build Phoenix Code and the Brackets community."})]}),"\n",(0,o.jsxs)(n.p,{children:["This release's core theme is ",(0,o.jsx)(n.code,{children:"Git, Color previews, UX imporovements and stability"}),"."]}),"\n",(0,o.jsx)(n.h2,{id:"git-for-desktop",children:"Git for Desktop"}),"\n",(0,o.jsxs)(n.p,{children:["Git is finally here. Integrated Git source control with a clean, intuitive interface.\nStage changes, commit, and sync with a single click while keeping your focus on the code.\nNow available in the Windows, Mac and Linux desktop apps of Phoenix code. ",(0,o.jsx)(n.a,{href:"https://docs.phcode.dev/docs/Features/git",children:"Read More..."})]}),"\n",(0,o.jsxs)(n.p,{children:["Our Git integration is built upon the incredible work of the developers behind ",(0,o.jsx)(n.a,{href:"https://github.com/brackets-userland/brackets-git",children:"Brackets-Git"}),",\nwhose contributions made this possible. Thank you!"]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{src:"https://github.com/user-attachments/assets/aeacc7c0-3ee3-4a80-9b05-f2b48140bcdd",alt:"Image"})}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{src:"https://github.com/user-attachments/assets/6e7b9faf-d57b-448b-a5bb-a111c67489b5",alt:"Image"})}),"\n",(0,o.jsx)(n.h2,{id:"color-previews",children:"Color Previews"}),"\n",(0,o.jsxs)(n.p,{children:["Preview the color(s) used in the file in the gutter area. Hovering over a color box highlights the corresponding color\ntext in the editor to quickly jump to editing that color. ",(0,o.jsx)(n.a,{href:"https://docs.phcode.dev/docs/editing-colors#color-preview",children:"Read More..."})]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{src:"https://github.com/user-attachments/assets/bedecc32-761b-448e-aced-61828ad3fec6",alt:"image"})}),"\n",(0,o.jsx)(n.h2,{id:"open-in-terminal-and-file-explorer",children:"Open in Terminal and File Explorer"}),"\n",(0,o.jsx)(n.p,{children:'New "Open In" feature lets you instantly open directories and files in the system Terminal or File Explorer across\nWindows, macOS, and Linux desktop apps!'}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{src:"https://github.com/user-attachments/assets/710330ae-8b34-4a51-a1f9-4c02736ed9bd",alt:"Image"})}),"\n",(0,o.jsx)(n.h2,{id:"better-translations",children:"Better Translations"}),"\n",(0,o.jsx)(n.p,{children:"We've moved to an LLM-assisted translation framework, delivering higher-quality translations for non-English locales."}),"\n",(0,o.jsx)(n.h2,{id:"notable-changes-and-fixes",children:"Notable changes and fixes"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:["We've removed some inconsistent and rarely used keyboard shortcuts to free up more key combinations for customization.\n",(0,o.jsx)(n.a,{href:"https://docs.phcode.dev/docs/Features/keyboard-shortcuts",children:"Easily configure your own keyboard shortcuts through the UI."})]}),"\n",(0,o.jsxs)(n.li,{children:["Fixed ",(0,o.jsx)(n.code,{children:"Option-[shift]-left"})," and ",(0,o.jsx)(n.code,{children:"option-[shift]-right"})," keyboard shortcuts not working in mac to select/move words."]}),"\n",(0,o.jsx)(n.li,{children:"Survey popups are now less intrusive, appearing as notifications without disrupting your workflow."}),"\n",(0,o.jsxs)(n.li,{children:["Moved back ",(0,o.jsx)(n.code,{children:"line:ch"})," status to left of statusbar. Go to line will accept ",(0,o.jsx)(n.code,{children:":ln:col"})," format along with ",(0,o.jsx)(n.code,{children:":ln,col"}),". ",(0,o.jsx)(n.img,{src:"https://github.com/user-attachments/assets/7429ae42-cb56-444c-8546-6d565bedaaf9",alt:"Image"})]}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"https://github.com/phcode-dev/phoenix/pull/2035",children:"Remove specific files from Recent Files"})}),"\n",(0,o.jsxs)(n.li,{children:["Fixes ",(0,o.jsx)(n.a,{href:"https://github.com/phcode-dev/phoenix/pull/2015",children:"holding ctrl key in windows should not ui overlay mode."})]}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsxs)(n.a,{href:"https://github.com/phcode-dev/phoenix/pull/1994",children:["fix: ",(0,o.jsx)(n.code,{children:"cmd-click"})," in mac app and safari didn't open context menu."]})}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"https://github.com/phcode-dev/phoenix/pull/1999",children:"Switching between Ctrl+F and Ctrl+Shift+F now correctly updates the search box with the latest selection."})}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"https://github.com/phcode-dev/phoenix/pull/1997",children:"fix: clicking on prevent defaulted A tags in desktop live preview opens browser tab."})}),"\n"]}),"\n",(0,o.jsx)(n.h2,{id:"performance--stability-tweaks",children:"Performance & Stability Tweaks"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.a,{href:"https://github.com/phcode-dev/phoenix/pull/2055",children:"Faster boot times with extension compression and load changes"}),"\nconsistency and performance, especially on Safari and macOS."]}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"https://github.com/phcode-dev/phoenix/pull/2082",children:"File recovery should only be shown on crash, and fix some file recovery issues."})}),"\n"]}),"\n",(0,o.jsx)(n.h2,{id:"all-changes",children:"All changes"}),"\n",(0,o.jsxs)(n.p,{children:["Please see ",(0,o.jsx)(n.a,{href:"https://github.com/phcode-dev/phoenix/commits/main/?since=2024-11-27&until=2025-01-30",children:"this link"})," for a full list of changes\nin GitHub."]}),"\n",(0,o.jsx)(n.h2,{id:"a-request-from-the-phoenix-team",children:"A Request from the Phoenix Team:"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Share your feedback:"})," ",(0,o.jsx)(n.a,{href:"https://github.com/orgs/phcode-dev/discussions",children:"https://github.com/orgs/phcode-dev/discussions"})]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Spread the word"})," about Phoenix to friends and colleagues."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsxs)(n.a,{href:"https://github.com/sponsors/phcode-dev",children:[(0,o.jsx)(n.strong,{children:"Consider supporting us"})," on GitHub Sponsors"]}),". Every contribution helps us\nto keep improving Phoenix Code."]}),"\n"]}),"\n",(0,o.jsx)(n.p,{children:"With gratitude,"}),"\n",(0,o.jsx)(n.p,{children:"The Phoenix Team"})]})}function d(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(c,{...e})}):c(e)}},28453:(e,n,i)=>{i.d(n,{R:()=>r,x:()=>a});var t=i(96540);const o={},s=t.createContext(o);function r(e){const n=t.useContext(s);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),t.createElement(s.Provider,{value:n},e.children)}},99042:e=>{e.exports=JSON.parse('{"permalink":"/blog/release-4.0","editUrl":"https://github.com/phcode-dev/docs/blob/main/blog/2025-01-30-Release-4.0/index.md","source":"@site/blog/2025-01-30-Release-4.0/index.md","title":"Git It Release (January-2025, V-4.0) is now Live","description":"Phoenix Code 4.0 introduces built-in Git integration, color previews, and open-in-terminal support. The largest release in the Brackets legacy.","date":"2025-01-30T00:00:00.000Z","tags":[{"inline":true,"label":"Git","permalink":"/blog/tags/git"},{"inline":true,"label":"Color previews","permalink":"/blog/tags/color-previews"},{"inline":true,"label":"Version Control","permalink":"/blog/tags/version-control"},{"inline":true,"label":"open in terminal","permalink":"/blog/tags/open-in-terminal"},{"inline":true,"label":"Stability Improvements","permalink":"/blog/tags/stability-improvements"},{"inline":true,"label":"Windows","permalink":"/blog/tags/windows"},{"inline":true,"label":"Linux","permalink":"/blog/tags/linux"},{"inline":true,"label":"Mac","permalink":"/blog/tags/mac"},{"inline":true,"label":"Release","permalink":"/blog/tags/release"}],"readingTime":3.18,"hasTruncateMarker":false,"authors":[{"name":"Arun Bose","title":"Co-Founder, Phoenix Code","url":"https://github.com/abose","imageURL":"https://github.com/abose.png","key":"arun","page":null},{"name":"Charly P Abraham","title":"Co-Founder, Phoenix Code","url":"https://github.com/charlypa","imageURL":"https://github.com/charlypa.png","key":"charly","page":null},{"name":"Devansh Agarwal","title":"Founding Engineer, Phoenix Code","url":"https://github.com/devvaannsh","imageURL":"https://github.com/devvaannsh.png","key":"devvaannsh","page":null},{"name":"Phoenix Code Bot","title":"Our little elf who keeps the whole place together","url":"https://github.com/phoenixide","imageURL":"https://github.com/phoenixide.png","key":"phoenixBot","page":null}],"frontMatter":{"slug":"release-4.0","title":"Git It Release (January-2025, V-4.0) is now Live","description":"Phoenix Code 4.0 introduces built-in Git integration, color previews, and open-in-terminal support. The largest release in the Brackets legacy.","authors":["arun","charly","devvaannsh","phoenixBot"],"tags":["Git","Color previews","Version Control","open in terminal","Stability Improvements","Windows","Linux","Mac","Release"]},"unlisted":false,"prevItem":{"title":"Phoenix Pro Release (January-2026, V-5.0) is now Live","permalink":"/blog/release-5.0"},"nextItem":{"title":"Phoenix Code: The Legacy of Brackets - Continued","permalink":"/blog/Blog-Legacy"}}')}}]); \ No newline at end of file diff --git a/assets/js/1741.baed38dd.js b/assets/js/1741.baed38dd.js new file mode 100644 index 00000000..3cf9ac4e --- /dev/null +++ b/assets/js/1741.baed38dd.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1741],{11741:(t,n,e)=>{e.d(n,{diagram:()=>ct});var i=e(67633),s=e(40797),r=e(70451);function o(t,n){let e;if(void 0===n)for(const i of t)null!=i&&(e>i||void 0===e&&i>=i)&&(e=i);else{let i=-1;for(let s of t)null!=(s=n(s,++i,t))&&(e>s||void 0===e&&s>=s)&&(e=s)}return e}function c(t){return t.target.depth}function l(t,n){return t.sourceLinks.length?t.depth:n-1}function a(t,n){let e=0;if(void 0===n)for(let i of t)(i=+i)&&(e+=i);else{let i=-1;for(let s of t)(s=+n(s,++i,t))&&(e+=s)}return e}function h(t,n){let e;if(void 0===n)for(const i of t)null!=i&&(e=i)&&(e=i);else{let i=-1;for(let s of t)null!=(s=n(s,++i,t))&&(e=s)&&(e=s)}return e}function u(t){return function(){return t}}function f(t,n){return d(t.source,n.source)||t.index-n.index}function y(t,n){return d(t.target,n.target)||t.index-n.index}function d(t,n){return t.y0-n.y0}function p(t){return t.value}function g(t){return t.index}function _(t){return t.nodes}function k(t){return t.links}function x(t,n){const e=t.get(n);if(!e)throw new Error("missing: "+n);return e}function m({nodes:t}){for(const n of t){let t=n.y0,e=t;for(const i of n.sourceLinks)i.y0=t+i.width/2,t+=i.width;for(const i of n.targetLinks)i.y1=e+i.width/2,e+=i.width}}function v(){let t,n,e,i=0,s=0,r=1,c=1,v=24,b=8,w=g,L=l,S=_,E=k,K=6;function A(){const l={nodes:S.apply(null,arguments),links:E.apply(null,arguments)};return function({nodes:t,links:n}){for(const[e,s]of t.entries())s.index=e,s.sourceLinks=[],s.targetLinks=[];const i=new Map(t.map(((n,e)=>[w(n,e,t),n])));for(const[e,s]of n.entries()){s.index=e;let{source:t,target:n}=s;"object"!=typeof t&&(t=s.source=x(i,t)),"object"!=typeof n&&(n=s.target=x(i,n)),t.sourceLinks.push(s),n.targetLinks.push(s)}if(null!=e)for(const{sourceLinks:s,targetLinks:r}of t)s.sort(e),r.sort(e)}(l),function({nodes:t}){for(const n of t)n.value=void 0===n.fixedValue?Math.max(a(n.sourceLinks,p),a(n.targetLinks,p)):n.fixedValue}(l),function({nodes:t}){const n=t.length;let e=new Set(t),i=new Set,s=0;for(;e.size;){for(const t of e){t.depth=s;for(const{target:n}of t.sourceLinks)i.add(n)}if(++s>n)throw new Error("circular link");e=i,i=new Set}}(l),function({nodes:t}){const n=t.length;let e=new Set(t),i=new Set,s=0;for(;e.size;){for(const t of e){t.height=s;for(const{source:n}of t.targetLinks)i.add(n)}if(++s>n)throw new Error("circular link");e=i,i=new Set}}(l),function(e){const l=function({nodes:t}){const e=h(t,(t=>t.depth))+1,s=(r-i-v)/(e-1),o=new Array(e);for(const n of t){const t=Math.max(0,Math.min(e-1,Math.floor(L.call(null,n,e))));n.layer=t,n.x0=i+t*s,n.x1=n.x0+v,o[t]?o[t].push(n):o[t]=[n]}if(n)for(const i of o)i.sort(n);return o}(e);t=Math.min(b,(c-s)/(h(l,(t=>t.length))-1)),function(n){const e=o(n,(n=>(c-s-(n.length-1)*t)/a(n,p)));for(const i of n){let n=s;for(const s of i){s.y0=n,s.y1=n+s.value*e,n=s.y1+t;for(const t of s.sourceLinks)t.width=t.value*e}n=(c-n+t)/(i.length+1);for(let t=0;t0))continue;let s=(n/i-t.y0)*e;t.y0+=s,t.y1+=s,P(t)}void 0===n&&r.sort(d),T(r,i)}}function I(t,e,i){for(let s=t.length-2;s>=0;--s){const r=t[s];for(const t of r){let n=0,i=0;for(const{target:e,value:r}of t.sourceLinks){let s=r*(e.layer-t.layer);n+=$(t,e)*s,i+=s}if(!(i>0))continue;let s=(n/i-t.y0)*e;t.y0+=s,t.y1+=s,P(t)}void 0===n&&r.sort(d),T(r,i)}}function T(n,e){const i=n.length>>1,r=n[i];N(n,r.y0-t,i-1,e),D(n,r.y1+t,i+1,e),N(n,c,n.length-1,e),D(n,s,0,e)}function D(n,e,i,s){for(;i1e-6&&(r.y0+=o,r.y1+=o),e=r.y1+t}}function N(n,e,i,s){for(;i>=0;--i){const r=n[i],o=(r.y1-e)*s;o>1e-6&&(r.y0-=o,r.y1-=o),e=r.y0-t}}function P({sourceLinks:t,targetLinks:n}){if(void 0===e){for(const{source:{sourceLinks:t}}of n)t.sort(y);for(const{target:{targetLinks:n}}of t)n.sort(f)}}function C(t){if(void 0===e)for(const{sourceLinks:n,targetLinks:e}of t)n.sort(y),e.sort(f)}function O(n,e){let i=n.y0-(n.sourceLinks.length-1)*t/2;for(const{target:s,width:r}of n.sourceLinks){if(s===e)break;i+=r+t}for(const{source:t,width:s}of e.targetLinks){if(t===n)break;i-=s}return i}function $(n,e){let i=e.y0-(e.targetLinks.length-1)*t/2;for(const{source:s,width:r}of e.targetLinks){if(s===n)break;i+=r+t}for(const{target:t,width:s}of n.sourceLinks){if(t===e)break;i-=s}return i}return A.update=function(t){return m(t),t},A.nodeId=function(t){return arguments.length?(w="function"==typeof t?t:u(t),A):w},A.nodeAlign=function(t){return arguments.length?(L="function"==typeof t?t:u(t),A):L},A.nodeSort=function(t){return arguments.length?(n=t,A):n},A.nodeWidth=function(t){return arguments.length?(v=+t,A):v},A.nodePadding=function(n){return arguments.length?(b=t=+n,A):b},A.nodes=function(t){return arguments.length?(S="function"==typeof t?t:u(t),A):S},A.links=function(t){return arguments.length?(E="function"==typeof t?t:u(t),A):E},A.linkSort=function(t){return arguments.length?(e=t,A):e},A.size=function(t){return arguments.length?(i=s=0,r=+t[0],c=+t[1],A):[r-i,c-s]},A.extent=function(t){return arguments.length?(i=+t[0][0],r=+t[1][0],s=+t[0][1],c=+t[1][1],A):[[i,s],[r,c]]},A.iterations=function(t){return arguments.length?(K=+t,A):K},A}var b=Math.PI,w=2*b,L=1e-6,S=w-L;function E(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function K(){return new E}E.prototype=K.prototype={constructor:E,moveTo:function(t,n){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+n)},closePath:function(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},lineTo:function(t,n){this._+="L"+(this._x1=+t)+","+(this._y1=+n)},quadraticCurveTo:function(t,n,e,i){this._+="Q"+ +t+","+ +n+","+(this._x1=+e)+","+(this._y1=+i)},bezierCurveTo:function(t,n,e,i,s,r){this._+="C"+ +t+","+ +n+","+ +e+","+ +i+","+(this._x1=+s)+","+(this._y1=+r)},arcTo:function(t,n,e,i,s){t=+t,n=+n,e=+e,i=+i,s=+s;var r=this._x1,o=this._y1,c=e-t,l=i-n,a=r-t,h=o-n,u=a*a+h*h;if(s<0)throw new Error("negative radius: "+s);if(null===this._x1)this._+="M"+(this._x1=t)+","+(this._y1=n);else if(u>L)if(Math.abs(h*c-l*a)>L&&s){var f=e-r,y=i-o,d=c*c+l*l,p=f*f+y*y,g=Math.sqrt(d),_=Math.sqrt(u),k=s*Math.tan((b-Math.acos((d+u-p)/(2*g*_)))/2),x=k/_,m=k/g;Math.abs(x-1)>L&&(this._+="L"+(t+x*a)+","+(n+x*h)),this._+="A"+s+","+s+",0,0,"+ +(h*f>a*y)+","+(this._x1=t+m*c)+","+(this._y1=n+m*l)}else this._+="L"+(this._x1=t)+","+(this._y1=n);else;},arc:function(t,n,e,i,s,r){t=+t,n=+n,r=!!r;var o=(e=+e)*Math.cos(i),c=e*Math.sin(i),l=t+o,a=n+c,h=1^r,u=r?i-s:s-i;if(e<0)throw new Error("negative radius: "+e);null===this._x1?this._+="M"+l+","+a:(Math.abs(this._x1-l)>L||Math.abs(this._y1-a)>L)&&(this._+="L"+l+","+a),e&&(u<0&&(u=u%w+w),u>S?this._+="A"+e+","+e+",0,1,"+h+","+(t-o)+","+(n-c)+"A"+e+","+e+",0,1,"+h+","+(this._x1=l)+","+(this._y1=a):u>L&&(this._+="A"+e+","+e+",0,"+ +(u>=b)+","+h+","+(this._x1=t+e*Math.cos(s))+","+(this._y1=n+e*Math.sin(s))))},rect:function(t,n,e,i){this._+="M"+(this._x0=this._x1=+t)+","+(this._y0=this._y1=+n)+"h"+ +e+"v"+ +i+"h"+-e+"Z"},toString:function(){return this._}};const A=K;var M=Array.prototype.slice;function I(t){return function(){return t}}function T(t){return t[0]}function D(t){return t[1]}function N(t){return t.source}function P(t){return t.target}function C(t){var n=N,e=P,i=T,s=D,r=null;function o(){var o,c=M.call(arguments),l=n.apply(this,c),a=e.apply(this,c);if(r||(r=o=A()),t(r,+i.apply(this,(c[0]=l,c)),+s.apply(this,c),+i.apply(this,(c[0]=a,c)),+s.apply(this,c)),o)return r=null,o+""||null}return o.source=function(t){return arguments.length?(n=t,o):n},o.target=function(t){return arguments.length?(e=t,o):e},o.x=function(t){return arguments.length?(i="function"==typeof t?t:I(+t),o):i},o.y=function(t){return arguments.length?(s="function"==typeof t?t:I(+t),o):s},o.context=function(t){return arguments.length?(r=null==t?null:t,o):r},o}function O(t,n,e,i,s){t.moveTo(n,e),t.bezierCurveTo(n=(n+i)/2,e,n,s,i,s)}function $(t){return[t.source.x1,t.y0]}function j(t){return[t.target.x0,t.y1]}function z(){return C(O).source($).target(j)}var U=function(){var t=(0,s.K2)((function(t,n,e,i){for(e=e||{},i=t.length;i--;e[t[i]]=n);return e}),"o"),n=[1,9],e=[1,10],i=[1,5,10,12],r={trace:(0,s.K2)((function(){}),"trace"),yy:{},symbols_:{error:2,start:3,SANKEY:4,NEWLINE:5,csv:6,opt_eof:7,record:8,csv_tail:9,EOF:10,"field[source]":11,COMMA:12,"field[target]":13,"field[value]":14,field:15,escaped:16,non_escaped:17,DQUOTE:18,ESCAPED_TEXT:19,NON_ESCAPED_TEXT:20,$accept:0,$end:1},terminals_:{2:"error",4:"SANKEY",5:"NEWLINE",10:"EOF",11:"field[source]",12:"COMMA",13:"field[target]",14:"field[value]",18:"DQUOTE",19:"ESCAPED_TEXT",20:"NON_ESCAPED_TEXT"},productions_:[0,[3,4],[6,2],[9,2],[9,0],[7,1],[7,0],[8,5],[15,1],[15,1],[16,3],[17,1]],performAction:(0,s.K2)((function(t,n,e,i,s,r,o){var c=r.length-1;switch(s){case 7:const t=i.findOrCreateNode(r[c-4].trim().replaceAll('""','"')),n=i.findOrCreateNode(r[c-2].trim().replaceAll('""','"')),e=parseFloat(r[c].trim());i.addLink(t,n,e);break;case 8:case 9:case 11:this.$=r[c];break;case 10:this.$=r[c-1]}}),"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},{5:[1,3]},{6:4,8:5,15:6,16:7,17:8,18:n,20:e},{1:[2,6],7:11,10:[1,12]},t(e,[2,4],{9:13,5:[1,14]}),{12:[1,15]},t(i,[2,8]),t(i,[2,9]),{19:[1,16]},t(i,[2,11]),{1:[2,1]},{1:[2,5]},t(e,[2,2]),{6:17,8:5,15:6,16:7,17:8,18:n,20:e},{15:18,16:7,17:8,18:n,20:e},{18:[1,19]},t(e,[2,3]),{12:[1,20]},t(i,[2,10]),{15:21,16:7,17:8,18:n,20:e},t([1,5,10],[2,7])],defaultActions:{11:[2,1],12:[2,5]},parseError:(0,s.K2)((function(t,n){if(!n.recoverable){var e=new Error(t);throw e.hash=n,e}this.trace(t)}),"parseError"),parse:(0,s.K2)((function(t){var n=this,e=[0],i=[],r=[null],o=[],c=this.table,l="",a=0,h=0,u=0,f=o.slice.call(arguments,1),y=Object.create(this.lexer),d={yy:{}};for(var p in this.yy)Object.prototype.hasOwnProperty.call(this.yy,p)&&(d.yy[p]=this.yy[p]);y.setInput(t,d.yy),d.yy.lexer=y,d.yy.parser=this,void 0===y.yylloc&&(y.yylloc={});var g=y.yylloc;o.push(g);var _=y.options&&y.options.ranges;function k(){var t;return"number"!=typeof(t=i.pop()||y.lex()||1)&&(t instanceof Array&&(t=(i=t).pop()),t=n.symbols_[t]||t),t}"function"==typeof d.yy.parseError?this.parseError=d.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,s.K2)((function(t){e.length=e.length-2*t,r.length=r.length-t,o.length=o.length-t}),"popStack"),(0,s.K2)(k,"lex");for(var x,m,v,b,w,L,S,E,K,A={};;){if(v=e[e.length-1],this.defaultActions[v]?b=this.defaultActions[v]:(null==x&&(x=k()),b=c[v]&&c[v][x]),void 0===b||!b.length||!b[0]){var M="";for(L in K=[],c[v])this.terminals_[L]&&L>2&&K.push("'"+this.terminals_[L]+"'");M=y.showPosition?"Parse error on line "+(a+1)+":\n"+y.showPosition()+"\nExpecting "+K.join(", ")+", got '"+(this.terminals_[x]||x)+"'":"Parse error on line "+(a+1)+": Unexpected "+(1==x?"end of input":"'"+(this.terminals_[x]||x)+"'"),this.parseError(M,{text:y.match,token:this.terminals_[x]||x,line:y.yylineno,loc:g,expected:K})}if(b[0]instanceof Array&&b.length>1)throw new Error("Parse Error: multiple actions possible at state: "+v+", token: "+x);switch(b[0]){case 1:e.push(x),r.push(y.yytext),o.push(y.yylloc),e.push(b[1]),x=null,m?(x=m,m=null):(h=y.yyleng,l=y.yytext,a=y.yylineno,g=y.yylloc,u>0&&u--);break;case 2:if(S=this.productions_[b[1]][1],A.$=r[r.length-S],A._$={first_line:o[o.length-(S||1)].first_line,last_line:o[o.length-1].last_line,first_column:o[o.length-(S||1)].first_column,last_column:o[o.length-1].last_column},_&&(A._$.range=[o[o.length-(S||1)].range[0],o[o.length-1].range[1]]),void 0!==(w=this.performAction.apply(A,[l,h,a,d.yy,b[1],r,o].concat(f))))return w;S&&(e=e.slice(0,-1*S*2),r=r.slice(0,-1*S),o=o.slice(0,-1*S)),e.push(this.productions_[b[1]][0]),r.push(A.$),o.push(A._$),E=c[e[e.length-2]][e[e.length-1]],e.push(E);break;case 3:return!0}}return!0}),"parse")},o=function(){return{EOF:1,parseError:(0,s.K2)((function(t,n){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,n)}),"parseError"),setInput:(0,s.K2)((function(t,n){return this.yy=n||this.yy||{},this._input=t,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:(0,s.K2)((function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t}),"input"),unput:(0,s.K2)((function(t){var n=t.length,e=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-n),this.offset-=n;var i=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),e.length-1&&(this.yylineno-=e.length-1);var s=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:e?(e.length===i.length?this.yylloc.first_column:0)+i[i.length-e.length].length-e[0].length:this.yylloc.first_column-n},this.options.ranges&&(this.yylloc.range=[s[0],s[0]+this.yyleng-n]),this.yyleng=this.yytext.length,this}),"unput"),more:(0,s.K2)((function(){return this._more=!0,this}),"more"),reject:(0,s.K2)((function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):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).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})}),"reject"),less:(0,s.K2)((function(t){this.unput(this.match.slice(t))}),"less"),pastInput:(0,s.K2)((function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")}),"pastInput"),upcomingInput:(0,s.K2)((function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")}),"upcomingInput"),showPosition:(0,s.K2)((function(){var t=this.pastInput(),n=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+n+"^"}),"showPosition"),test_match:(0,s.K2)((function(t,n){var e,i,s;if(this.options.backtrack_lexer&&(s={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&&(s.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,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(t[0].length),this.matched+=t[0],e=this.performAction.call(this,this.yy,this,n,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),e)return e;if(this._backtrack){for(var r in s)this[r]=s[r];return!1}return!1}),"test_match"),next:(0,s.K2)((function(){if(this.done)return this.EOF;var t,n,e,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var s=this._currentRules(),r=0;rn[0].length)){if(n=e,i=r,this.options.backtrack_lexer){if(!1!==(t=this.test_match(e,s[r])))return t;if(this._backtrack){n=!1;continue}return!1}if(!this.options.flex)break}return n?!1!==(t=this.test_match(n,s[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})}),"next"),lex:(0,s.K2)((function(){var t=this.next();return t||this.lex()}),"lex"),begin:(0,s.K2)((function(t){this.conditionStack.push(t)}),"begin"),popState:(0,s.K2)((function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]}),"popState"),_currentRules:(0,s.K2)((function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules}),"_currentRules"),topState:(0,s.K2)((function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"}),"topState"),pushState:(0,s.K2)((function(t){this.begin(t)}),"pushState"),stateStackSize:(0,s.K2)((function(){return this.conditionStack.length}),"stateStackSize"),options:{"case-insensitive":!0},performAction:(0,s.K2)((function(t,n,e,i){switch(e){case 0:case 1:return this.pushState("csv"),4;case 2:return 10;case 3:return 5;case 4:return 12;case 5:return this.pushState("escaped_text"),18;case 6:return 20;case 7:return this.popState("escaped_text"),18;case 8:return 19}}),"anonymous"),rules:[/^(?:sankey-beta\b)/i,/^(?:sankey\b)/i,/^(?:$)/i,/^(?:((\u000D\u000A)|(\u000A)))/i,/^(?:(\u002C))/i,/^(?:(\u0022))/i,/^(?:([\u0020-\u0021\u0023-\u002B\u002D-\u007E])*)/i,/^(?:(\u0022)(?!(\u0022)))/i,/^(?:(([\u0020-\u0021\u0023-\u002B\u002D-\u007E])|(\u002C)|(\u000D)|(\u000A)|(\u0022)(\u0022))*)/i],conditions:{csv:{rules:[2,3,4,5,6,7,8],inclusive:!1},escaped_text:{rules:[7,8],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8],inclusive:!0}}}}();function c(){this.yy={}}return r.lexer=o,(0,s.K2)(c,"Parser"),c.prototype=r,r.Parser=c,new c}();U.parser=U;var F=U,W=[],G=[],V=new Map,X=(0,s.K2)((()=>{W=[],G=[],V=new Map,(0,i.IU)()}),"clear"),Y=class{constructor(t,n,e=0){this.source=t,this.target=n,this.value=e}static{(0,s.K2)(this,"SankeyLink")}},q=(0,s.K2)(((t,n,e)=>{W.push(new Y(t,n,e))}),"addLink"),Q=class{constructor(t){this.ID=t}static{(0,s.K2)(this,"SankeyNode")}},R=(0,s.K2)((t=>{t=i.Y2.sanitizeText(t,(0,i.D7)());let n=V.get(t);return void 0===n&&(n=new Q(t),V.set(t,n),G.push(n)),n}),"findOrCreateNode"),B=(0,s.K2)((()=>G),"getNodes"),Z=(0,s.K2)((()=>W),"getLinks"),H=(0,s.K2)((()=>({nodes:G.map((t=>({id:t.ID}))),links:W.map((t=>({source:t.source.ID,target:t.target.ID,value:t.value})))})),"getGraph"),J={nodesMap:V,getConfig:(0,s.K2)((()=>(0,i.D7)().sankey),"getConfig"),getNodes:B,getLinks:Z,getGraph:H,addLink:q,findOrCreateNode:R,getAccTitle:i.iN,setAccTitle:i.SV,getAccDescription:i.m7,setAccDescription:i.EI,getDiagramTitle:i.ab,setDiagramTitle:i.ke,clear:X},tt=class t{static{(0,s.K2)(this,"Uid")}static{this.count=0}static next(n){return new t(n+ ++t.count)}constructor(t){this.id=t,this.href=`#${t}`}toString(){return"url("+this.href+")"}},nt={left:function(t){return t.depth},right:function(t,n){return n-1-t.height},center:function(t){return t.targetLinks.length?t.depth:t.sourceLinks.length?o(t.sourceLinks,c)-1:0},justify:l},et=(0,s.K2)((function(t,n,e,o){const{securityLevel:c,sankey:l}=(0,i.D7)(),a=i.ME.sankey;let h;"sandbox"===c&&(h=(0,r.Ltv)("#i"+n));const u="sandbox"===c?(0,r.Ltv)(h.nodes()[0].contentDocument.body):(0,r.Ltv)("body"),f="sandbox"===c?u.select(`[id="${n}"]`):(0,r.Ltv)(`[id="${n}"]`),y=l?.width??a.width,d=l?.height??a.width,p=l?.useMaxWidth??a.useMaxWidth,g=l?.nodeAlignment??a.nodeAlignment,_=l?.prefix??a.prefix,k=l?.suffix??a.suffix,x=l?.showValues??a.showValues,m=o.db.getGraph(),b=nt[g];v().nodeId((t=>t.id)).nodeWidth(10).nodePadding(10+(x?15:0)).nodeAlign(b).extent([[0,0],[y,d]])(m);const w=(0,r.UMr)(r.zt);f.append("g").attr("class","nodes").selectAll(".node").data(m.nodes).join("g").attr("class","node").attr("id",(t=>(t.uid=tt.next("node-")).id)).attr("transform",(function(t){return"translate("+t.x0+","+t.y0+")"})).attr("x",(t=>t.x0)).attr("y",(t=>t.y0)).append("rect").attr("height",(t=>t.y1-t.y0)).attr("width",(t=>t.x1-t.x0)).attr("fill",(t=>w(t.id)));const L=(0,s.K2)((({id:t,value:n})=>x?`${t}\n${_}${Math.round(100*n)/100}${k}`:t),"getText");f.append("g").attr("class","node-labels").attr("font-size",14).selectAll("text").data(m.nodes).join("text").attr("x",(t=>t.x0(t.y1+t.y0)/2)).attr("dy",(x?"0":"0.35")+"em").attr("text-anchor",(t=>t.x0(t.uid=tt.next("linearGradient-")).id)).attr("gradientUnits","userSpaceOnUse").attr("x1",(t=>t.source.x1)).attr("x2",(t=>t.target.x0));t.append("stop").attr("offset","0%").attr("stop-color",(t=>w(t.source.id))),t.append("stop").attr("offset","100%").attr("stop-color",(t=>w(t.target.id)))}let K;switch(E){case"gradient":K=(0,s.K2)((t=>t.uid),"coloring");break;case"source":K=(0,s.K2)((t=>w(t.source.id)),"coloring");break;case"target":K=(0,s.K2)((t=>w(t.target.id)),"coloring");break;default:K=E}S.append("path").attr("d",z()).attr("stroke",K).attr("stroke-width",(t=>Math.max(1,t.width))),(0,i.ot)(void 0,f,0,p)}),"draw"),it={draw:et},st=(0,s.K2)((t=>t.replaceAll(/^[^\S\n\r]+|[^\S\n\r]+$/g,"").replaceAll(/([\n\r])+/g,"\n").trim()),"prepareTextForParsing"),rt=(0,s.K2)((t=>`.label {\n font-family: ${t.fontFamily};\n }`),"getStyles"),ot=F.parse.bind(F);F.parse=t=>ot(st(t));var ct={styles:rt,parser:F,db:J,renderer:it}}}]); \ No newline at end of file diff --git a/assets/js/1746.ab3ee82f.js b/assets/js/1746.ab3ee82f.js new file mode 100644 index 00000000..10944737 --- /dev/null +++ b/assets/js/1746.ab3ee82f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1746],{89625:(t,e,s)=>{s.d(e,{A:()=>a});var i=s(40797),n=s(70451),a=(0,i.K2)(((t,e)=>{let s;"sandbox"===e&&(s=(0,n.Ltv)("#i"+t));return("sandbox"===e?(0,n.Ltv)(s.nodes()[0].contentDocument.body):(0,n.Ltv)("body")).select(`[id="${t}"]`)}),"getDiagramElement")},71746:(t,e,s)=>{s.d(e,{Lh:()=>k,NM:()=>g,_$:()=>d,tM:()=>b});var i=s(52501),n=s(89625),a=s(21152),r=s(10045),u=s(13226),l=s(67633),o=s(40797),c=s(70451),h=function(){var t=(0,o.K2)((function(t,e,s,i){for(s=s||{},i=t.length;i--;s[t[i]]=e);return s}),"o"),e=[1,18],s=[1,19],i=[1,20],n=[1,41],a=[1,42],r=[1,26],u=[1,24],l=[1,25],c=[1,32],h=[1,33],d=[1,34],p=[1,45],A=[1,35],y=[1,36],C=[1,37],m=[1,38],g=[1,27],b=[1,28],E=[1,29],k=[1,30],T=[1,31],f=[1,44],D=[1,46],F=[1,43],B=[1,47],_=[1,9],S=[1,8,9],N=[1,58],L=[1,59],$=[1,60],x=[1,61],v=[1,62],I=[1,63],O=[1,64],w=[1,8,9,41],R=[1,76],P=[1,8,9,12,13,22,39,41,44,68,69,70,71,72,73,74,79,81],K=[1,8,9,12,13,18,20,22,39,41,44,50,60,68,69,70,71,72,73,74,79,81,86,100,102,103],M=[13,60,86,100,102,103],G=[13,60,73,74,86,100,102,103],U=[13,60,68,69,70,71,72,86,100,102,103],Y=[1,100],z=[1,117],Q=[1,113],W=[1,109],X=[1,115],j=[1,110],V=[1,111],q=[1,112],H=[1,114],J=[1,116],Z=[22,48,60,61,82,86,87,88,89,90],tt=[1,8,9,39,41,44],et=[1,8,9,22],st=[1,145],it=[1,8,9,61],nt=[1,8,9,22,48,60,61,82,86,87,88,89,90],at={trace:(0,o.K2)((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,classLiteralName:17,DOT:18,className: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,emptyBody:47,SPACE:48,ANNOTATION_START:49,ANNOTATION_END:50,MEMBER:51,SEPARATOR:52,relation:53,NOTE_FOR:54,noteText:55,NOTE:56,CLASSDEF:57,classList:58,stylesOpt:59,ALPHA:60,COMMA:61,direction_tb:62,direction_bt:63,direction_rl:64,direction_lr:65,relationType:66,lineType:67,AGGREGATION:68,EXTENSION:69,COMPOSITION:70,DEPENDENCY:71,LOLLIPOP:72,LINE:73,DOTTED_LINE:74,CALLBACK:75,LINK:76,LINK_TARGET:77,CLICK:78,CALLBACK_NAME:79,CALLBACK_ARGS:80,HREF:81,STYLE:82,CSSCLASS:83,style:84,styleComponent:85,NUM:86,COLON:87,UNIT:88,BRKT:89,PCT:90,commentToken:91,textToken:92,graphCodeTokens:93,textNoTagsToken:94,TAGSTART:95,TAGEND:96,"==":97,"--":98,DEFAULT:99,MINUS:100,keywords:101,UNICODE_TEXT:102,BQUOTE_STR:103,$accept:0,$end:1},terminals_:{2:"error",7:"CLASS_DIAGRAM",8:"NEWLINE",9:"EOF",12:"SQS",13:"STR",14:"SQE",18:"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",48:"SPACE",49:"ANNOTATION_START",50:"ANNOTATION_END",51:"MEMBER",52:"SEPARATOR",54:"NOTE_FOR",56:"NOTE",57:"CLASSDEF",60:"ALPHA",61:"COMMA",62:"direction_tb",63:"direction_bt",64:"direction_rl",65:"direction_lr",68:"AGGREGATION",69:"EXTENSION",70:"COMPOSITION",71:"DEPENDENCY",72:"LOLLIPOP",73:"LINE",74:"DOTTED_LINE",75:"CALLBACK",76:"LINK",77:"LINK_TARGET",78:"CLICK",79:"CALLBACK_NAME",80:"CALLBACK_ARGS",81:"HREF",82:"STYLE",83:"CSSCLASS",86:"NUM",87:"COLON",88:"UNIT",89:"BRKT",90:"PCT",93:"graphCodeTokens",95:"TAGSTART",96:"TAGEND",97:"==",98:"--",99:"DEFAULT",100:"MINUS",101:"keywords",102:"UNICODE_TEXT",103:"BQUOTE_STR"},productions_:[0,[3,1],[3,1],[4,1],[6,4],[5,1],[5,2],[5,3],[11,3],[15,1],[15,1],[15,3],[15,2],[19,1],[19,3],[19,1],[19,2],[19,2],[19,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,3],[24,6],[43,2],[43,3],[47,0],[47,2],[47,2],[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],[58,1],[58,3],[32,1],[32,1],[32,1],[32,1],[53,3],[53,2],[53,2],[53,1],[66,1],[66,1],[66,1],[66,1],[66,1],[67,1],[67,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],[59,1],[59,3],[84,1],[84,2],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[85,1],[91,1],[91,1],[92,1],[92,1],[92,1],[92,1],[92,1],[92,1],[92,1],[94,1],[94,1],[94,1],[94,1],[16,1],[16,1],[16,1],[16,1],[17,1],[55,1]],performAction:(0,o.K2)((function(t,e,s,i,n,a,r){var u=a.length-1;switch(n){case 8:this.$=a[u-1];break;case 9:case 10:case 13:case 15:this.$=a[u];break;case 11:case 14:this.$=a[u-2]+"."+a[u];break;case 12:case 16:case 100:this.$=a[u-1]+a[u];break;case 17:case 18:this.$=a[u-1]+"~"+a[u]+"~";break;case 19:i.addRelation(a[u]);break;case 20:a[u-1].title=i.cleanupLabel(a[u]),i.addRelation(a[u-1]);break;case 31:this.$=a[u].trim(),i.setAccTitle(this.$);break;case 32:case 33:this.$=a[u].trim(),i.setAccDescription(this.$);break;case 34:i.addClassesToNamespace(a[u-3],a[u-1]);break;case 35:i.addClassesToNamespace(a[u-4],a[u-1]);break;case 36:this.$=a[u],i.addNamespace(a[u]);break;case 37:case 51:case 64:case 97:this.$=[a[u]];break;case 38:this.$=[a[u-1]];break;case 39:a[u].unshift(a[u-2]),this.$=a[u];break;case 41:i.setCssClass(a[u-2],a[u]);break;case 42:i.addMembers(a[u-3],a[u-1]);break;case 44:i.setCssClass(a[u-5],a[u-3]),i.addMembers(a[u-5],a[u-1]);break;case 45:this.$=a[u],i.addClass(a[u]);break;case 46:this.$=a[u-1],i.addClass(a[u-1]),i.setClassLabel(a[u-1],a[u]);break;case 50:i.addAnnotation(a[u],a[u-2]);break;case 52:a[u].push(a[u-1]),this.$=a[u];break;case 53:case 55:case 56:break;case 54:i.addMember(a[u-1],i.cleanupLabel(a[u]));break;case 57:this.$={id1:a[u-2],id2:a[u],relation:a[u-1],relationTitle1:"none",relationTitle2:"none"};break;case 58:this.$={id1:a[u-3],id2:a[u],relation:a[u-1],relationTitle1:a[u-2],relationTitle2:"none"};break;case 59:this.$={id1:a[u-3],id2:a[u],relation:a[u-2],relationTitle1:"none",relationTitle2:a[u-1]};break;case 60:this.$={id1:a[u-4],id2:a[u],relation:a[u-2],relationTitle1:a[u-3],relationTitle2:a[u-1]};break;case 61:i.addNote(a[u],a[u-1]);break;case 62:i.addNote(a[u]);break;case 63:this.$=a[u-2],i.defineClass(a[u-1],a[u]);break;case 65:this.$=a[u-2].concat([a[u]]);break;case 66:i.setDirection("TB");break;case 67:i.setDirection("BT");break;case 68:i.setDirection("RL");break;case 69:i.setDirection("LR");break;case 70:this.$={type1:a[u-2],type2:a[u],lineType:a[u-1]};break;case 71:this.$={type1:"none",type2:a[u],lineType:a[u-1]};break;case 72:this.$={type1:a[u-1],type2:"none",lineType:a[u]};break;case 73:this.$={type1:"none",type2:"none",lineType:a[u]};break;case 74:this.$=i.relationType.AGGREGATION;break;case 75:this.$=i.relationType.EXTENSION;break;case 76:this.$=i.relationType.COMPOSITION;break;case 77:this.$=i.relationType.DEPENDENCY;break;case 78:this.$=i.relationType.LOLLIPOP;break;case 79:this.$=i.lineType.LINE;break;case 80:this.$=i.lineType.DOTTED_LINE;break;case 81:case 87:this.$=a[u-2],i.setClickEvent(a[u-1],a[u]);break;case 82:case 88:this.$=a[u-3],i.setClickEvent(a[u-2],a[u-1]),i.setTooltip(a[u-2],a[u]);break;case 83:this.$=a[u-2],i.setLink(a[u-1],a[u]);break;case 84:this.$=a[u-3],i.setLink(a[u-2],a[u-1],a[u]);break;case 85:this.$=a[u-3],i.setLink(a[u-2],a[u-1]),i.setTooltip(a[u-2],a[u]);break;case 86:this.$=a[u-4],i.setLink(a[u-3],a[u-2],a[u]),i.setTooltip(a[u-3],a[u-1]);break;case 89:this.$=a[u-3],i.setClickEvent(a[u-2],a[u-1],a[u]);break;case 90:this.$=a[u-4],i.setClickEvent(a[u-3],a[u-2],a[u-1]),i.setTooltip(a[u-3],a[u]);break;case 91:this.$=a[u-3],i.setLink(a[u-2],a[u]);break;case 92:this.$=a[u-4],i.setLink(a[u-3],a[u-1],a[u]);break;case 93:this.$=a[u-4],i.setLink(a[u-3],a[u-1]),i.setTooltip(a[u-3],a[u]);break;case 94:this.$=a[u-5],i.setLink(a[u-4],a[u-2],a[u]),i.setTooltip(a[u-4],a[u-1]);break;case 95:this.$=a[u-2],i.setCssStyle(a[u-1],a[u]);break;case 96:i.setCssClass(a[u-1],a[u]);break;case 98:a[u-2].push(a[u]),this.$=a[u-2]}}),"anonymous"),table:[{3:1,4:2,5:3,6:4,7:[1,6],10:5,16:39,17:40,19:21,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,33:e,35:s,37:i,38:22,42:n,43:23,46:a,49:r,51:u,52:l,54:c,56:h,57:d,60:p,62:A,63:y,64:C,65:m,75:g,76:b,78:E,82:k,83:T,86:f,100:D,102:F,103:B},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,3]},t(_,[2,5],{8:[1,48]}),{8:[1,49]},t(S,[2,19],{22:[1,50]}),t(S,[2,21]),t(S,[2,22]),t(S,[2,23]),t(S,[2,24]),t(S,[2,25]),t(S,[2,26]),t(S,[2,27]),t(S,[2,28]),t(S,[2,29]),t(S,[2,30]),{34:[1,51]},{36:[1,52]},t(S,[2,33]),t(S,[2,53],{53:53,66:56,67:57,13:[1,54],22:[1,55],68:N,69:L,70:$,71:x,72:v,73:I,74:O}),{39:[1,65]},t(w,[2,40],{39:[1,67],44:[1,66]}),t(S,[2,55]),t(S,[2,56]),{16:68,60:p,86:f,100:D,102:F},{16:39,17:40,19:69,60:p,86:f,100:D,102:F,103:B},{16:39,17:40,19:70,60:p,86:f,100:D,102:F,103:B},{16:39,17:40,19:71,60:p,86:f,100:D,102:F,103:B},{60:[1,72]},{13:[1,73]},{16:39,17:40,19:74,60:p,86:f,100:D,102:F,103:B},{13:R,55:75},{58:77,60:[1,78]},t(S,[2,66]),t(S,[2,67]),t(S,[2,68]),t(S,[2,69]),t(P,[2,13],{16:39,17:40,19:80,18:[1,79],20:[1,81],60:p,86:f,100:D,102:F,103:B}),t(P,[2,15],{20:[1,82]}),{15:83,16:84,17:85,60:p,86:f,100:D,102:F,103:B},{16:39,17:40,19:86,60:p,86:f,100:D,102:F,103:B},t(K,[2,123]),t(K,[2,124]),t(K,[2,125]),t(K,[2,126]),t([1,8,9,12,13,20,22,39,41,44,68,69,70,71,72,73,74,79,81],[2,127]),t(_,[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,19:21,38:22,43:23,16:39,17:40,5:87,33:e,35:s,37:i,42:n,46:a,49:r,51:u,52:l,54:c,56:h,57:d,60:p,62:A,63:y,64:C,65:m,75:g,76:b,78:E,82:k,83:T,86:f,100:D,102:F,103:B}),{5:88,10:5,16:39,17:40,19:21,21:7,23:8,24:9,25:10,26:11,27:12,28:13,29:14,30:15,31:16,32:17,33:e,35:s,37:i,38:22,42:n,43:23,46:a,49:r,51:u,52:l,54:c,56:h,57:d,60:p,62:A,63:y,64:C,65:m,75:g,76:b,78:E,82:k,83:T,86:f,100:D,102:F,103:B},t(S,[2,20]),t(S,[2,31]),t(S,[2,32]),{13:[1,90],16:39,17:40,19:89,60:p,86:f,100:D,102:F,103:B},{53:91,66:56,67:57,68:N,69:L,70:$,71:x,72:v,73:I,74:O},t(S,[2,54]),{67:92,73:I,74:O},t(M,[2,73],{66:93,68:N,69:L,70:$,71:x,72:v}),t(G,[2,74]),t(G,[2,75]),t(G,[2,76]),t(G,[2,77]),t(G,[2,78]),t(U,[2,79]),t(U,[2,80]),{8:[1,95],24:96,40:94,43:23,46:a},{16:97,60:p,86:f,100:D,102:F},{41:[1,99],45:98,51:Y},{50:[1,101]},{13:[1,102]},{13:[1,103]},{79:[1,104],81:[1,105]},{22:z,48:Q,59:106,60:W,82:X,84:107,85:108,86:j,87:V,88:q,89:H,90:J},{60:[1,118]},{13:R,55:119},t(S,[2,62]),t(S,[2,128]),{22:z,48:Q,59:120,60:W,61:[1,121],82:X,84:107,85:108,86:j,87:V,88:q,89:H,90:J},t(Z,[2,64]),{16:39,17:40,19:122,60:p,86:f,100:D,102:F,103:B},t(P,[2,16]),t(P,[2,17]),t(P,[2,18]),{39:[2,36]},{15:124,16:84,17:85,18:[1,123],39:[2,9],60:p,86:f,100:D,102:F,103:B},{39:[2,10]},t(tt,[2,45],{11:125,12:[1,126]}),t(_,[2,7]),{9:[1,127]},t(et,[2,57]),{16:39,17:40,19:128,60:p,86:f,100:D,102:F,103:B},{13:[1,130],16:39,17:40,19:129,60:p,86:f,100:D,102:F,103:B},t(M,[2,72],{66:131,68:N,69:L,70:$,71:x,72:v}),t(M,[2,71]),{41:[1,132]},{24:96,40:133,43:23,46:a},{8:[1,134],41:[2,37]},t(w,[2,41],{39:[1,135]}),{41:[1,136]},t(w,[2,43]),{41:[2,51],45:137,51:Y},{16:39,17:40,19:138,60:p,86:f,100:D,102:F,103:B},t(S,[2,81],{13:[1,139]}),t(S,[2,83],{13:[1,141],77:[1,140]}),t(S,[2,87],{13:[1,142],80:[1,143]}),{13:[1,144]},t(S,[2,95],{61:st}),t(it,[2,97],{85:146,22:z,48:Q,60:W,82:X,86:j,87:V,88:q,89:H,90:J}),t(nt,[2,99]),t(nt,[2,101]),t(nt,[2,102]),t(nt,[2,103]),t(nt,[2,104]),t(nt,[2,105]),t(nt,[2,106]),t(nt,[2,107]),t(nt,[2,108]),t(nt,[2,109]),t(S,[2,96]),t(S,[2,61]),t(S,[2,63],{61:st}),{60:[1,147]},t(P,[2,14]),{15:148,16:84,17:85,60:p,86:f,100:D,102:F,103:B},{39:[2,12]},t(tt,[2,46]),{13:[1,149]},{1:[2,4]},t(et,[2,59]),t(et,[2,58]),{16:39,17:40,19:150,60:p,86:f,100:D,102:F,103:B},t(M,[2,70]),t(S,[2,34]),{41:[1,151]},{24:96,40:152,41:[2,38],43:23,46:a},{45:153,51:Y},t(w,[2,42]),{41:[2,52]},t(S,[2,50]),t(S,[2,82]),t(S,[2,84]),t(S,[2,85],{77:[1,154]}),t(S,[2,88]),t(S,[2,89],{13:[1,155]}),t(S,[2,91],{13:[1,157],77:[1,156]}),{22:z,48:Q,60:W,82:X,84:158,85:108,86:j,87:V,88:q,89:H,90:J},t(nt,[2,100]),t(Z,[2,65]),{39:[2,11]},{14:[1,159]},t(et,[2,60]),t(S,[2,35]),{41:[2,39]},{41:[1,160]},t(S,[2,86]),t(S,[2,90]),t(S,[2,92]),t(S,[2,93],{77:[1,161]}),t(it,[2,98],{85:146,22:z,48:Q,60:W,82:X,86:j,87:V,88:q,89:H,90:J}),t(tt,[2,8]),t(w,[2,44]),t(S,[2,94])],defaultActions:{2:[2,1],3:[2,2],4:[2,3],83:[2,36],85:[2,10],124:[2,12],127:[2,4],137:[2,52],148:[2,11],152:[2,39]},parseError:(0,o.K2)((function(t,e){if(!e.recoverable){var s=new Error(t);throw s.hash=e,s}this.trace(t)}),"parseError"),parse:(0,o.K2)((function(t){var e=this,s=[0],i=[],n=[null],a=[],r=this.table,u="",l=0,c=0,h=0,d=a.slice.call(arguments,1),p=Object.create(this.lexer),A={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(A.yy[y]=this.yy[y]);p.setInput(t,A.yy),A.yy.lexer=p,A.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var C=p.yylloc;a.push(C);var m=p.options&&p.options.ranges;function g(){var t;return"number"!=typeof(t=i.pop()||p.lex()||1)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof A.yy.parseError?this.parseError=A.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,o.K2)((function(t){s.length=s.length-2*t,n.length=n.length-t,a.length=a.length-t}),"popStack"),(0,o.K2)(g,"lex");for(var b,E,k,T,f,D,F,B,_,S={};;){if(k=s[s.length-1],this.defaultActions[k]?T=this.defaultActions[k]:(null==b&&(b=g()),T=r[k]&&r[k][b]),void 0===T||!T.length||!T[0]){var N="";for(D in _=[],r[k])this.terminals_[D]&&D>2&&_.push("'"+this.terminals_[D]+"'");N=p.showPosition?"Parse error on line "+(l+1)+":\n"+p.showPosition()+"\nExpecting "+_.join(", ")+", got '"+(this.terminals_[b]||b)+"'":"Parse error on line "+(l+1)+": Unexpected "+(1==b?"end of input":"'"+(this.terminals_[b]||b)+"'"),this.parseError(N,{text:p.match,token:this.terminals_[b]||b,line:p.yylineno,loc:C,expected:_})}if(T[0]instanceof Array&&T.length>1)throw new Error("Parse Error: multiple actions possible at state: "+k+", token: "+b);switch(T[0]){case 1:s.push(b),n.push(p.yytext),a.push(p.yylloc),s.push(T[1]),b=null,E?(b=E,E=null):(c=p.yyleng,u=p.yytext,l=p.yylineno,C=p.yylloc,h>0&&h--);break;case 2:if(F=this.productions_[T[1]][1],S.$=n[n.length-F],S._$={first_line:a[a.length-(F||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(F||1)].first_column,last_column:a[a.length-1].last_column},m&&(S._$.range=[a[a.length-(F||1)].range[0],a[a.length-1].range[1]]),void 0!==(f=this.performAction.apply(S,[u,c,l,A.yy,T[1],n,a].concat(d))))return f;F&&(s=s.slice(0,-1*F*2),n=n.slice(0,-1*F),a=a.slice(0,-1*F)),s.push(this.productions_[T[1]][0]),n.push(S.$),a.push(S._$),B=r[s[s.length-2]][s[s.length-1]],s.push(B);break;case 3:return!0}}return!0}),"parse")},rt=function(){return{EOF:1,parseError:(0,o.K2)((function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)}),"parseError"),setInput:(0,o.K2)((function(t,e){return this.yy=e||this.yy||{},this._input=t,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:(0,o.K2)((function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t}),"input"),unput:(0,o.K2)((function(t){var e=t.length,s=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=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),s.length-1&&(this.yylineno-=s.length-1);var n=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:s?(s.length===i.length?this.yylloc.first_column:0)+i[i.length-s.length].length-s[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[n[0],n[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this}),"unput"),more:(0,o.K2)((function(){return this._more=!0,this}),"more"),reject:(0,o.K2)((function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):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).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})}),"reject"),less:(0,o.K2)((function(t){this.unput(this.match.slice(t))}),"less"),pastInput:(0,o.K2)((function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")}),"pastInput"),upcomingInput:(0,o.K2)((function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")}),"upcomingInput"),showPosition:(0,o.K2)((function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"}),"showPosition"),test_match:(0,o.K2)((function(t,e){var s,i,n;if(this.options.backtrack_lexer&&(n={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&&(n.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,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(t[0].length),this.matched+=t[0],s=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),s)return s;if(this._backtrack){for(var a in n)this[a]=n[a];return!1}return!1}),"test_match"),next:(0,o.K2)((function(){if(this.done)return this.EOF;var t,e,s,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var n=this._currentRules(),a=0;ae[0].length)){if(e=s,i=a,this.options.backtrack_lexer){if(!1!==(t=this.test_match(s,n[a])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,n[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})}),"next"),lex:(0,o.K2)((function(){var t=this.next();return t||this.lex()}),"lex"),begin:(0,o.K2)((function(t){this.conditionStack.push(t)}),"begin"),popState:(0,o.K2)((function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]}),"popState"),_currentRules:(0,o.K2)((function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules}),"_currentRules"),topState:(0,o.K2)((function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"}),"topState"),pushState:(0,o.K2)((function(t){this.begin(t)}),"pushState"),stateStackSize:(0,o.K2)((function(){return this.conditionStack.length}),"stateStackSize"),options:{},performAction:(0,o.K2)((function(t,e,s,i){switch(s){case 0:return 62;case 1:return 63;case 2:return 64;case 3:return 65;case 4:case 5:case 14:case 31:case 36:case 40:case 47:break;case 6:return this.begin("acc_title"),33;case 7:return this.popState(),"acc_title_value";case 8:return this.begin("acc_descr"),35;case 9:return this.popState(),"acc_descr_value";case 10:this.begin("acc_descr_multiline");break;case 11:case 19:case 22:case 24:case 58:case 61:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:case 35:return 8;case 15:case 16:return 7;case 17:case 37:case 45:return"EDGE_STATE";case 18:this.begin("callback_name");break;case 20:this.popState(),this.begin("callback_args");break;case 21:return 79;case 23:return 80;case 25:return"STR";case 26:this.begin("string");break;case 27:return 82;case 28:return 57;case 29:return this.begin("namespace"),42;case 30:case 39:return this.popState(),8;case 32:return this.begin("namespace-body"),39;case 33:case 43:return this.popState(),41;case 34:case 44:return"EOF_IN_STRUCT";case 38:return this.begin("class"),46;case 41:return this.popState(),this.popState(),41;case 42:return this.begin("class-body"),39;case 46:return"OPEN_IN_STRUCT";case 48:return"MEMBER";case 49:return 83;case 50:return 75;case 51:return 76;case 52:return 78;case 53:return 54;case 54:return 56;case 55:return 49;case 56:return 50;case 57:return 81;case 59:return"GENERICTYPE";case 60:this.begin("generic");break;case 62:return"BQUOTE_STR";case 63:this.begin("bqstring");break;case 64:case 65:case 66:case 67:return 77;case 68:case 69:return 69;case 70:case 71:return 71;case 72:return 70;case 73:return 68;case 74:return 72;case 75:return 73;case 76:return 74;case 77:return 22;case 78:return 44;case 79:return 100;case 80:return 18;case 81:return"PLUS";case 82:return 87;case 83:return 61;case 84:case 85:return 89;case 86:return 90;case 87:case 88:return"EQUALS";case 89:return 60;case 90:return 12;case 91:return 14;case 92:return"PUNCTUATION";case 93:return 86;case 94:return 102;case 95:case 96:return 48;case 97:return 9}}),"anonymous"),rules:[/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,/^(?:%%[^\n]*(\r?\n)*)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:classDiagram-v2\b)/,/^(?:classDiagram\b)/,/^(?:\[\*\])/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:["])/,/^(?:[^"]*)/,/^(?:["])/,/^(?:style\b)/,/^(?:classDef\b)/,/^(?:namespace\b)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:[{])/,/^(?:[}])/,/^(?:$)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:\[\*\])/,/^(?:class\b)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:[}])/,/^(?:[{])/,/^(?:[}])/,/^(?:$)/,/^(?:\[\*\])/,/^(?:[{])/,/^(?:[\n])/,/^(?:[^{}\n]*)/,/^(?:cssClass\b)/,/^(?:callback\b)/,/^(?:link\b)/,/^(?:click\b)/,/^(?:note for\b)/,/^(?:note\b)/,/^(?:<<)/,/^(?:>>)/,/^(?:href\b)/,/^(?:[~])/,/^(?:[^~]*)/,/^(?:~)/,/^(?:[`])/,/^(?:[^`]+)/,/^(?:[`])/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:\s*<\|)/,/^(?:\s*\|>)/,/^(?:\s*>)/,/^(?:\s*<)/,/^(?:\s*\*)/,/^(?:\s*o\b)/,/^(?:\s*\(\))/,/^(?:--)/,/^(?:\.\.)/,/^(?::{1}[^:\n;]+)/,/^(?::{3})/,/^(?:-)/,/^(?:\.)/,/^(?:\+)/,/^(?::)/,/^(?:,)/,/^(?:#)/,/^(?:#)/,/^(?:%)/,/^(?:=)/,/^(?:=)/,/^(?:\w+)/,/^(?:\[)/,/^(?:\])/,/^(?:[!"#$%&'*+,-.`?\\/])/,/^(?:[0-9]+)/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\s)/,/^(?:\s)/,/^(?:$)/],conditions:{"namespace-body":{rules:[26,33,34,35,36,37,38,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},namespace:{rules:[26,29,30,31,32,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},"class-body":{rules:[26,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},class:{rules:[26,39,40,41,42,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},acc_descr_multiline:{rules:[11,12,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},acc_descr:{rules:[9,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},acc_title:{rules:[7,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},callback_args:{rules:[22,23,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},callback_name:{rules:[19,20,21,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},href:{rules:[26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},struct:{rules:[26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},generic:{rules:[26,49,50,51,52,53,54,55,56,57,58,59,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},bqstring:{rules:[26,49,50,51,52,53,54,55,56,57,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},string:{rules:[24,25,26,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,86,87,88,89,90,91,92,93,94,95,97],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,8,10,13,14,15,16,17,18,26,27,28,29,38,49,50,51,52,53,54,55,56,57,60,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97],inclusive:!0}}}}();function ut(){this.yy={}}return at.lexer=rt,(0,o.K2)(ut,"Parser"),ut.prototype=at,at.Parser=ut,new ut}();h.parser=h;var d=h,p=["#","+","~","-",""],A=class{static{(0,o.K2)(this,"ClassMember")}constructor(t,e){this.memberType=e,this.visibility="",this.classifier="",this.text="";const s=(0,l.jZ)(t,(0,l.D7)());this.parseMember(s)}getDisplayDetails(){let t=this.visibility+(0,l.QO)(this.id);"method"===this.memberType&&(t+=`(${(0,l.QO)(this.parameters.trim())})`,this.returnType&&(t+=" : "+(0,l.QO)(this.returnType))),t=t.trim();return{displayText:t,cssStyle:this.parseClassifier()}}parseMember(t){let e="";if("method"===this.memberType){const s=/([#+~-])?(.+)\((.*)\)([\s$*])?(.*)([$*])?/.exec(t);if(s){const t=s[1]?s[1].trim():"";if(p.includes(t)&&(this.visibility=t),this.id=s[2],this.parameters=s[3]?s[3].trim():"",e=s[4]?s[4].trim():"",this.returnType=s[5]?s[5].trim():"",""===e){const t=this.returnType.substring(this.returnType.length-1);/[$*]/.exec(t)&&(e=t,this.returnType=this.returnType.substring(0,this.returnType.length-1))}}}else{const s=t.length,i=t.substring(0,1),n=t.substring(s-1);p.includes(i)&&(this.visibility=i),/[$*]/.exec(n)&&(e=n),this.id=t.substring(""===this.visibility?0:1,""===e?s:s-1)}this.classifier=e,this.id=this.id.startsWith(" ")?" "+this.id.trim():this.id.trim();const s=`${this.visibility?"\\"+this.visibility:""}${(0,l.QO)(this.id)}${"method"===this.memberType?`(${(0,l.QO)(this.parameters)})${this.returnType?" : "+(0,l.QO)(this.returnType):""}`:""}`;this.text=s.replaceAll("<","<").replaceAll(">",">"),this.text.startsWith("\\<")&&(this.text=this.text.replace("\\<","~"))}parseClassifier(){switch(this.classifier){case"*":return"font-style:italic;";case"$":return"text-decoration:underline;";default:return""}}},y="classId-",C=0,m=(0,o.K2)((t=>l.Y2.sanitizeText(t,(0,l.D7)())),"sanitizeText"),g=class{constructor(){this.relations=[],this.classes=new Map,this.styleClasses=new Map,this.notes=[],this.interfaces=[],this.namespaces=new Map,this.namespaceCounter=0,this.functions=[],this.lineType={LINE:0,DOTTED_LINE:1},this.relationType={AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3,LOLLIPOP:4},this.setupToolTips=(0,o.K2)((t=>{let e=(0,c.Ltv)(".mermaidTooltip");null===(e._groups||e)[0][0]&&(e=(0,c.Ltv)("body").append("div").attr("class","mermaidTooltip").style("opacity",0));(0,c.Ltv)(t).select("svg").selectAll("g.node").on("mouseover",(t=>{const s=(0,c.Ltv)(t.currentTarget);if(null===s.attr("title"))return;const i=this.getBoundingClientRect();e.transition().duration(200).style("opacity",".9"),e.text(s.attr("title")).style("left",window.scrollX+i.left+(i.right-i.left)/2+"px").style("top",window.scrollY+i.top-14+document.body.scrollTop+"px"),e.html(e.html().replace(/<br\/>/g,"
")),s.classed("hover",!0)})).on("mouseout",(t=>{e.transition().duration(500).style("opacity",0);(0,c.Ltv)(t.currentTarget).classed("hover",!1)}))}),"setupToolTips"),this.direction="TB",this.setAccTitle=l.SV,this.getAccTitle=l.iN,this.setAccDescription=l.EI,this.getAccDescription=l.m7,this.setDiagramTitle=l.ke,this.getDiagramTitle=l.ab,this.getConfig=(0,o.K2)((()=>(0,l.D7)().class),"getConfig"),this.functions.push(this.setupToolTips.bind(this)),this.clear(),this.addRelation=this.addRelation.bind(this),this.addClassesToNamespace=this.addClassesToNamespace.bind(this),this.addNamespace=this.addNamespace.bind(this),this.setCssClass=this.setCssClass.bind(this),this.addMembers=this.addMembers.bind(this),this.addClass=this.addClass.bind(this),this.setClassLabel=this.setClassLabel.bind(this),this.addAnnotation=this.addAnnotation.bind(this),this.addMember=this.addMember.bind(this),this.cleanupLabel=this.cleanupLabel.bind(this),this.addNote=this.addNote.bind(this),this.defineClass=this.defineClass.bind(this),this.setDirection=this.setDirection.bind(this),this.setLink=this.setLink.bind(this),this.bindFunctions=this.bindFunctions.bind(this),this.clear=this.clear.bind(this),this.setTooltip=this.setTooltip.bind(this),this.setClickEvent=this.setClickEvent.bind(this),this.setCssStyle=this.setCssStyle.bind(this)}static{(0,o.K2)(this,"ClassDB")}splitClassNameAndType(t){const e=l.Y2.sanitizeText(t,(0,l.D7)());let s="",i=e;if(e.indexOf("~")>0){const t=e.split("~");i=m(t[0]),s=m(t[1])}return{className:i,type:s}}setClassLabel(t,e){const s=l.Y2.sanitizeText(t,(0,l.D7)());e&&(e=m(e));const{className:i}=this.splitClassNameAndType(s);this.classes.get(i).label=e,this.classes.get(i).text=`${e}${this.classes.get(i).type?`<${this.classes.get(i).type}>`:""}`}addClass(t){const e=l.Y2.sanitizeText(t,(0,l.D7)()),{className:s,type:i}=this.splitClassNameAndType(e);if(this.classes.has(s))return;const n=l.Y2.sanitizeText(s,(0,l.D7)());this.classes.set(n,{id:n,type:i,label:n,text:`${n}${i?`<${i}>`:""}`,shape:"classBox",cssClasses:"default",methods:[],members:[],annotations:[],styles:[],domId:y+n+"-"+C}),C++}addInterface(t,e){const s={id:`interface${this.interfaces.length}`,label:t,classId:e};this.interfaces.push(s)}lookUpDomId(t){const e=l.Y2.sanitizeText(t,(0,l.D7)());if(this.classes.has(e))return this.classes.get(e).domId;throw new Error("Class not found: "+e)}clear(){this.relations=[],this.classes=new Map,this.notes=[],this.interfaces=[],this.functions=[],this.functions.push(this.setupToolTips.bind(this)),this.namespaces=new Map,this.namespaceCounter=0,this.direction="TB",(0,l.IU)()}getClass(t){return this.classes.get(t)}getClasses(){return this.classes}getRelations(){return this.relations}getNotes(){return this.notes}addRelation(t){o.Rm.debug("Adding relation: "+JSON.stringify(t));const e=[this.relationType.LOLLIPOP,this.relationType.AGGREGATION,this.relationType.COMPOSITION,this.relationType.DEPENDENCY,this.relationType.EXTENSION];t.relation.type1!==this.relationType.LOLLIPOP||e.includes(t.relation.type2)?t.relation.type2!==this.relationType.LOLLIPOP||e.includes(t.relation.type1)?(this.addClass(t.id1),this.addClass(t.id2)):(this.addClass(t.id1),this.addInterface(t.id2,t.id1),t.id2="interface"+(this.interfaces.length-1)):(this.addClass(t.id2),this.addInterface(t.id1,t.id2),t.id1="interface"+(this.interfaces.length-1)),t.id1=this.splitClassNameAndType(t.id1).className,t.id2=this.splitClassNameAndType(t.id2).className,t.relationTitle1=l.Y2.sanitizeText(t.relationTitle1.trim(),(0,l.D7)()),t.relationTitle2=l.Y2.sanitizeText(t.relationTitle2.trim(),(0,l.D7)()),this.relations.push(t)}addAnnotation(t,e){const s=this.splitClassNameAndType(t).className;this.classes.get(s).annotations.push(e)}addMember(t,e){this.addClass(t);const s=this.splitClassNameAndType(t).className,i=this.classes.get(s);if("string"==typeof e){const t=e.trim();t.startsWith("<<")&&t.endsWith(">>")?i.annotations.push(m(t.substring(2,t.length-2))):t.indexOf(")")>0?i.methods.push(new A(t,"method")):t&&i.members.push(new A(t,"attribute"))}}addMembers(t,e){Array.isArray(e)&&(e.reverse(),e.forEach((e=>this.addMember(t,e))))}addNote(t,e){const s={id:`note${this.notes.length}`,class:e,text:t};this.notes.push(s)}cleanupLabel(t){return t.startsWith(":")&&(t=t.substring(1)),m(t.trim())}setCssClass(t,e){t.split(",").forEach((t=>{let s=t;/\d/.exec(t[0])&&(s=y+s);const i=this.classes.get(s);i&&(i.cssClasses+=" "+e)}))}defineClass(t,e){for(const s of t){let t=this.styleClasses.get(s);void 0===t&&(t={id:s,styles:[],textStyles:[]},this.styleClasses.set(s,t)),e&&e.forEach((e=>{if(/color/.exec(e)){const s=e.replace("fill","bgFill");t.textStyles.push(s)}t.styles.push(e)})),this.classes.forEach((t=>{t.cssClasses.includes(s)&&t.styles.push(...e.flatMap((t=>t.split(","))))}))}}setTooltip(t,e){t.split(",").forEach((t=>{void 0!==e&&(this.classes.get(t).tooltip=m(e))}))}getTooltip(t,e){return e&&this.namespaces.has(e)?this.namespaces.get(e).classes.get(t).tooltip:this.classes.get(t).tooltip}setLink(t,e,s){const i=(0,l.D7)();t.split(",").forEach((t=>{let n=t;/\d/.exec(t[0])&&(n=y+n);const a=this.classes.get(n);a&&(a.link=u._K.formatUrl(e,i),"sandbox"===i.securityLevel?a.linkTarget="_top":a.linkTarget="string"==typeof s?m(s):"_blank")})),this.setCssClass(t,"clickable")}setClickEvent(t,e,s){t.split(",").forEach((t=>{this.setClickFunc(t,e,s),this.classes.get(t).haveCallback=!0})),this.setCssClass(t,"clickable")}setClickFunc(t,e,s){const i=l.Y2.sanitizeText(t,(0,l.D7)());if("loose"!==(0,l.D7)().securityLevel)return;if(void 0===e)return;const n=i;if(this.classes.has(n)){const t=this.lookUpDomId(n);let i=[];if("string"==typeof s){i=s.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let t=0;t{const s=document.querySelector(`[id="${t}"]`);null!==s&&s.addEventListener("click",(()=>{u._K.runFunc(e,...i)}),!1)}))}}bindFunctions(t){this.functions.forEach((e=>{e(t)}))}getDirection(){return this.direction}setDirection(t){this.direction=t}addNamespace(t){this.namespaces.has(t)||(this.namespaces.set(t,{id:t,classes:new Map,children:{},domId:y+t+"-"+this.namespaceCounter}),this.namespaceCounter++)}getNamespace(t){return this.namespaces.get(t)}getNamespaces(){return this.namespaces}addClassesToNamespace(t,e){if(this.namespaces.has(t))for(const s of e){const{className:e}=this.splitClassNameAndType(s);this.classes.get(e).parent=t,this.namespaces.get(t).classes.set(e,this.classes.get(e))}}setCssStyle(t,e){const s=this.classes.get(t);if(e&&s)for(const i of e)i.includes(",")?s.styles.push(...i.split(",")):s.styles.push(i)}getArrowMarker(t){let e;switch(t){case 0:e="aggregation";break;case 1:e="extension";break;case 2:e="composition";break;case 3:e="dependency";break;case 4:e="lollipop";break;default:e="none"}return e}getData(){const t=[],e=[],s=(0,l.D7)();for(const n of this.namespaces.keys()){const e=this.namespaces.get(n);if(e){const i={id:e.id,label:e.id,isGroup:!0,padding:s.class.padding??16,shape:"rect",cssStyles:["fill: none","stroke: black"],look:s.look};t.push(i)}}for(const n of this.classes.keys()){const e=this.classes.get(n);if(e){const i=e;i.parentId=e.parent,i.look=s.look,t.push(i)}}let i=0;for(const n of this.notes){i++;const a={id:n.id,label:n.text,isGroup:!1,shape:"note",padding:s.class.padding??6,cssStyles:["text-align: left","white-space: nowrap",`fill: ${s.themeVariables.noteBkgColor}`,`stroke: ${s.themeVariables.noteBorderColor}`],look:s.look};t.push(a);const r=this.classes.get(n.class)?.id??"";if(r){const t={id:`edgeNote${i}`,start:n.id,end:r,type:"normal",thickness:"normal",classes:"relation",arrowTypeStart:"none",arrowTypeEnd:"none",arrowheadStyle:"",labelStyle:[""],style:["fill: none"],pattern:"dotted",look:s.look};e.push(t)}}for(const n of this.interfaces){const e={id:n.id,label:n.label,isGroup:!1,shape:"rect",cssStyles:["opacity: 0;"],look:s.look};t.push(e)}i=0;for(const n of this.relations){i++;const t={id:(0,u.rY)(n.id1,n.id2,{prefix:"id",counter:i}),start:n.id1,end:n.id2,type:"normal",label:n.title,labelpos:"c",thickness:"normal",classes:"relation",arrowTypeStart:this.getArrowMarker(n.relation.type1),arrowTypeEnd:this.getArrowMarker(n.relation.type2),startLabelRight:"none"===n.relationTitle1?"":n.relationTitle1,endLabelLeft:"none"===n.relationTitle2?"":n.relationTitle2,arrowheadStyle:"",labelStyle:["display: inline-block"],style:n.style||"",pattern:1==n.relation.lineType?"dashed":"solid",look:s.look};e.push(t)}return{nodes:t,edges:e,other:{},config:s,direction:this.getDirection()}}},b=(0,o.K2)((t=>`g.classGroup text {\n fill: ${t.nodeBorder||t.classText};\n stroke: none;\n font-family: ${t.fontFamily};\n font-size: 10px;\n\n .title {\n font-weight: bolder;\n }\n\n}\n\n.nodeLabel, .edgeLabel {\n color: ${t.classText};\n}\n.edgeLabel .label rect {\n fill: ${t.mainBkg};\n}\n.label text {\n fill: ${t.classText};\n}\n\n.labelBkg {\n background: ${t.mainBkg};\n}\n.edgeLabel .label span {\n background: ${t.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: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n stroke-width: 1px;\n }\n\n\n.divider {\n stroke: ${t.nodeBorder};\n stroke-width: 1;\n}\n\ng.clickable {\n cursor: pointer;\n}\n\ng.classGroup rect {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n}\n\ng.classGroup line {\n stroke: ${t.nodeBorder};\n stroke-width: 1;\n}\n\n.classLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: ${t.mainBkg};\n opacity: 0.5;\n}\n\n.classLabel .label {\n fill: ${t.nodeBorder};\n font-size: 10px;\n}\n\n.relation {\n stroke: ${t.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: ${t.lineColor} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#compositionEnd, .composition {\n fill: ${t.lineColor} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#dependencyStart, .dependency {\n fill: ${t.lineColor} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#dependencyStart, .dependency {\n fill: ${t.lineColor} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#extensionStart, .extension {\n fill: transparent !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#extensionEnd, .extension {\n fill: transparent !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#aggregationStart, .aggregation {\n fill: transparent !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#aggregationEnd, .aggregation {\n fill: transparent !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#lollipopStart, .lollipop {\n fill: ${t.mainBkg} !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n}\n\n#lollipopEnd, .lollipop {\n fill: ${t.mainBkg} !important;\n stroke: ${t.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: ${t.textColor};\n}\n ${(0,i.o)()}\n`),"getStyles"),E=(0,o.K2)(((t,e="TB")=>{if(!t.doc)return e;let s=e;for(const i of t.doc)"dir"===i.stmt&&(s=i.value);return s}),"getDir"),k={getClasses:(0,o.K2)((function(t,e){return e.db.getClasses()}),"getClasses"),draw:(0,o.K2)((async function(t,e,s,i){o.Rm.info("REF0:"),o.Rm.info("Drawing class diagram (v3)",e);const{securityLevel:c,state:h,layout:d}=(0,l.D7)(),p=i.db.getData(),A=(0,n.A)(e,c);p.type=i.type,p.layoutAlgorithm=(0,r.q7)(d),p.nodeSpacing=h?.nodeSpacing||50,p.rankSpacing=h?.rankSpacing||50,p.markers=["aggregation","extension","composition","dependency","lollipop"],p.diagramId=e,await(0,r.XX)(p,A);u._K.insertTitle(A,"classDiagramTitleText",h?.titleTopMargin??25,i.db.getDiagramTitle()),(0,a.P)(A,8,"classDiagram",h?.useMaxWidth??!0)}),"draw"),getDir:E}},52501:(t,e,s)=>{s.d(e,{o:()=>i});var i=(0,s(40797).K2)((()=>"\n /* Font Awesome icon styling - consolidated */\n .label-icon {\n display: inline-block;\n height: 1em;\n overflow: visible;\n vertical-align: -0.125em;\n }\n \n .node .label-icon path {\n fill: currentColor;\n stroke: revert;\n stroke-width: revert;\n }\n"),"getIconStyles")},21152:(t,e,s)=>{s.d(e,{P:()=>a});var i=s(67633),n=s(40797),a=(0,n.K2)(((t,e,s,a)=>{t.attr("class",s);const{width:l,height:o,x:c,y:h}=r(t,e);(0,i.a$)(t,o,l,a);const d=u(c,h,l,o,e);t.attr("viewBox",d),n.Rm.debug(`viewBox configured: ${d} with padding: ${e}`)}),"setupViewPortForSVG"),r=(0,n.K2)(((t,e)=>{const s=t.node()?.getBBox()||{width:0,height:0,x:0,y:0};return{width:s.width+2*e,height:s.height+2*e,x:s.x,y:s.y}}),"calculateDimensionsWithPadding"),u=(0,n.K2)(((t,e,s,i,n)=>`${t-n} ${e-n} ${s} ${i}`),"createViewBox")}}]); \ No newline at end of file diff --git a/assets/js/17896441.a4c86501.js b/assets/js/17896441.a4c86501.js new file mode 100644 index 00000000..0a85dc41 --- /dev/null +++ b/assets/js/17896441.a4c86501.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8401],{32234:(e,n,t)=>{t.d(n,{A:()=>c});t(96540);var s=t(34164),a=t(44084),i=t(17559),l=t(27293),o=t(74848);function r({className:e}){return(0,o.jsx)(l.A,{type:"caution",title:(0,o.jsx)(a.Rc,{}),className:(0,s.A)(e,i.G.common.unlistedBanner),children:(0,o.jsx)(a.Uh,{})})}function c(e){return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(a.AE,{}),(0,o.jsx)(r,{...e})]})}},41689:(e,n,t)=>{t.d(n,{A:()=>d});t(96540);var s=t(34164),a=t(44084),i=t(17559),l=t(27293),o=t(74848);function r({className:e}){return(0,o.jsx)(l.A,{type:"caution",title:(0,o.jsx)(a.Yh,{}),className:(0,s.A)(e,i.G.common.draftBanner),children:(0,o.jsx)(a.TT,{})})}var c=t(32234);function d({metadata:e}){const{unlisted:n,frontMatter:t}=e;return(0,o.jsxs)(o.Fragment,{children:[(n||t.unlisted)&&(0,o.jsx)(c.A,{}),t.draft&&(0,o.jsx)(r,{})]})}},38310:(e,n,t)=>{t.r(n),t.d(n,{default:()=>le});var s=t(96540),a=t(45500),i=t(89532),l=t(74848);const o=s.createContext(null);function r({children:e,content:n}){const t=function(e){return(0,s.useMemo)((()=>({metadata:e.metadata,frontMatter:e.frontMatter,assets:e.assets,contentTitle:e.contentTitle,toc:e.toc})),[e])}(n);return(0,l.jsx)(o.Provider,{value:t,children:e})}function c(){const e=(0,s.useContext)(o);if(null===e)throw new i.dV("DocProvider");return e}function d(){const{metadata:e,frontMatter:n,assets:t}=c();return(0,l.jsx)(a.be,{title:e.title,description:e.description,keywords:n.keywords,image:t.image??n.image})}var u=t(34164),m=t(24581),h=t(21312),b=t(39022);function v(e){const{className:n,previous:t,next:s}=e;return(0,l.jsxs)("nav",{className:(0,u.A)(n,"pagination-nav"),"aria-label":(0,h.T)({id:"theme.docs.paginator.navAriaLabel",message:"Docs pages",description:"The ARIA label for the docs pagination"}),children:[t&&(0,l.jsx)(b.A,{...t,subLabel:(0,l.jsx)(h.A,{id:"theme.docs.paginator.previous",description:"The label used to navigate to the previous doc",children:"Previous"})}),s&&(0,l.jsx)(b.A,{...s,subLabel:(0,l.jsx)(h.A,{id:"theme.docs.paginator.next",description:"The label used to navigate to the next doc",children:"Next"}),isNext:!0})]})}function x(){const{metadata:e}=c();return(0,l.jsx)(v,{className:"docusaurus-mt-lg",previous:e.previous,next:e.next})}var g=t(44586),f=t(28774),p=t(44070),j=t(17559),A=t(53886),N=t(23025);const C={unreleased:function({siteTitle:e,versionMetadata:n}){return(0,l.jsx)(h.A,{id:"theme.docs.versions.unreleasedVersionLabel",description:"The label used to tell the user that he's browsing an unreleased doc version",values:{siteTitle:e,versionLabel:(0,l.jsx)("b",{children:n.label})},children:"This is unreleased documentation for {siteTitle} {versionLabel} version."})},unmaintained:function({siteTitle:e,versionMetadata:n}){return(0,l.jsx)(h.A,{id:"theme.docs.versions.unmaintainedVersionLabel",description:"The label used to tell the user that he's browsing an unmaintained doc version",values:{siteTitle:e,versionLabel:(0,l.jsx)("b",{children:n.label})},children:"This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained."})}};function L(e){const n=C[e.versionMetadata.banner];return(0,l.jsx)(n,{...e})}function _({versionLabel:e,to:n,onClick:t}){return(0,l.jsx)(h.A,{id:"theme.docs.versions.latestVersionSuggestionLabel",description:"The label used to tell the user to check the latest version",values:{versionLabel:e,latestVersionLink:(0,l.jsx)("b",{children:(0,l.jsx)(f.A,{to:n,onClick:t,children:(0,l.jsx)(h.A,{id:"theme.docs.versions.latestVersionLinkLabel",description:"The label used for the latest version suggestion link label",children:"latest version"})})})},children:"For up-to-date documentation, see the {latestVersionLink} ({versionLabel})."})}function T({className:e,versionMetadata:n}){const{siteConfig:{title:t}}=(0,g.A)(),{pluginId:s}=(0,p.vT)({failfast:!0}),{savePreferredVersionName:a}=(0,A.g1)(s),{latestDocSuggestion:i,latestVersionSuggestion:o}=(0,p.HW)(s),r=i??(c=o).docs.find((e=>e.id===c.mainDocId));var c;return(0,l.jsxs)("div",{className:(0,u.A)(e,j.G.docs.docVersionBanner,"alert alert--warning margin-bottom--md"),role:"alert",children:[(0,l.jsx)("div",{children:(0,l.jsx)(L,{siteTitle:t,versionMetadata:n})}),(0,l.jsx)("div",{className:"margin-top--md",children:(0,l.jsx)(_,{versionLabel:o.label,to:r.path,onClick:()=>a(o.name)})})]})}function k({className:e}){const n=(0,N.r)();return n.banner?(0,l.jsx)(T,{className:e,versionMetadata:n}):null}function H({className:e}){const n=(0,N.r)();return n.badge?(0,l.jsx)("span",{className:(0,u.A)(e,j.G.docs.docVersionBadge,"badge badge--secondary"),children:(0,l.jsx)(h.A,{id:"theme.docs.versionBadge.label",values:{versionLabel:n.label},children:"Version: {versionLabel}"})}):null}var y=t(62053),M=t(4336);function B(){const{metadata:e}=c(),{editUrl:n,lastUpdatedAt:t,lastUpdatedBy:s,tags:a}=e,i=a.length>0,o=!!(n||t||s);return i||o?(0,l.jsxs)("footer",{className:(0,u.A)(j.G.docs.docFooter,"docusaurus-mt-lg"),children:[i&&(0,l.jsx)("div",{className:(0,u.A)("row margin-top--sm",j.G.docs.docFooterTagsRow),children:(0,l.jsx)("div",{className:"col",children:(0,l.jsx)(y.A,{tags:a})})}),o&&(0,l.jsx)(M.A,{className:(0,u.A)("margin-top--sm",j.G.docs.docFooterEditMetaRow),editUrl:n,lastUpdatedAt:t,lastUpdatedBy:s})]}):null}var I=t(41422),w=t(65195);const E={tocCollapsibleButton:"tocCollapsibleButton_TO0P",tocCollapsibleButtonExpanded:"tocCollapsibleButtonExpanded_MG3E"};function V({collapsed:e,...n}){return(0,l.jsx)("button",{type:"button",...n,className:(0,u.A)("clean-btn",E.tocCollapsibleButton,!e&&E.tocCollapsibleButtonExpanded,n.className),children:(0,l.jsx)(h.A,{id:"theme.TOCCollapsible.toggleButtonLabel",description:"The label used by the button on the collapsible TOC component",children:"On this page"})})}const O={tocCollapsible:"tocCollapsible_ETCw",tocCollapsibleContent:"tocCollapsibleContent_vkbj",tocCollapsibleExpanded:"tocCollapsibleExpanded_sAul"};function R({toc:e,className:n,minHeadingLevel:t,maxHeadingLevel:s}){const{collapsed:a,toggleCollapsed:i}=(0,I.u)({initialState:!0});return(0,l.jsxs)("div",{className:(0,u.A)(O.tocCollapsible,!a&&O.tocCollapsibleExpanded,n),children:[(0,l.jsx)(V,{collapsed:a,onClick:i}),(0,l.jsx)(I.N,{lazy:!0,className:O.tocCollapsibleContent,collapsed:a,children:(0,l.jsx)(w.A,{toc:e,minHeadingLevel:t,maxHeadingLevel:s})})]})}const G={tocMobile:"tocMobile_ITEo"};function F(){const{toc:e,frontMatter:n}=c();return(0,l.jsx)(R,{toc:e,minHeadingLevel:n.toc_min_heading_level,maxHeadingLevel:n.toc_max_heading_level,className:(0,u.A)(j.G.docs.docTocMobile,G.tocMobile)})}var U=t(67763);function S(){const{toc:e,frontMatter:n}=c();return(0,l.jsx)(U.A,{toc:e,minHeadingLevel:n.toc_min_heading_level,maxHeadingLevel:n.toc_max_heading_level,className:j.G.docs.docTocDesktop})}var D=t(51107),P=t(56314);function z({children:e}){const n=function(){const{metadata:e,frontMatter:n,contentTitle:t}=c();return n.hide_title||void 0!==t?null:e.title}();return(0,l.jsxs)("div",{className:(0,u.A)(j.G.docs.docMarkdown,"markdown"),children:[n&&(0,l.jsx)("header",{children:(0,l.jsx)(D.A,{as:"h1",children:n})}),(0,l.jsx)(P.A,{children:e})]})}var $=t(26972),W=t(99169),q=t(86025);function Y(e){return(0,l.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,l.jsx)("path",{d:"M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z",fill:"currentColor"})})}const J={breadcrumbHomeIcon:"breadcrumbHomeIcon_YNFT"};function Q(){const e=(0,q.Ay)("/");return(0,l.jsx)("li",{className:"breadcrumbs__item",children:(0,l.jsx)(f.A,{"aria-label":(0,h.T)({id:"theme.docs.breadcrumbs.home",message:"Home page",description:"The ARIA label for the home page in the breadcrumbs"}),className:"breadcrumbs__link",href:e,children:(0,l.jsx)(Y,{className:J.breadcrumbHomeIcon})})})}var X=t(5260);function Z(e){const n=function({breadcrumbs:e}){const{siteConfig:n}=(0,g.A)();return{"@context":"https://schema.org","@type":"BreadcrumbList",itemListElement:e.filter((e=>e.href)).map(((e,t)=>({"@type":"ListItem",position:t+1,name:e.label,item:`${n.url}${e.href}`})))}}({breadcrumbs:e.breadcrumbs});return(0,l.jsx)(X.A,{children:(0,l.jsx)("script",{type:"application/ld+json",children:JSON.stringify(n)})})}const K={breadcrumbsContainer:"breadcrumbsContainer_Z_bl"};function ee({children:e,href:n,isLast:t}){const s="breadcrumbs__link";return t?(0,l.jsx)("span",{className:s,children:e}):n?(0,l.jsx)(f.A,{className:s,href:n,children:(0,l.jsx)("span",{children:e})}):(0,l.jsx)("span",{className:s,children:e})}function ne({children:e,active:n}){return(0,l.jsx)("li",{className:(0,u.A)("breadcrumbs__item",{"breadcrumbs__item--active":n}),children:e})}function te(){const e=(0,$.OF)(),n=(0,W.Dt)();return e?(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(Z,{breadcrumbs:e}),(0,l.jsx)("nav",{className:(0,u.A)(j.G.docs.docBreadcrumbs,K.breadcrumbsContainer),"aria-label":(0,h.T)({id:"theme.docs.breadcrumbs.navAriaLabel",message:"Breadcrumbs",description:"The ARIA label for the breadcrumbs"}),children:(0,l.jsxs)("ul",{className:"breadcrumbs",children:[n&&(0,l.jsx)(Q,{}),e.map(((n,t)=>{const s=t===e.length-1,a="category"===n.type&&n.linkUnlisted?void 0:n.href;return(0,l.jsx)(ne,{active:s,children:(0,l.jsx)(ee,{href:a,isLast:s,children:n.label})},t)}))]})})]}):null}var se=t(41689);const ae={docItemContainer:"docItemContainer_Djhp",docItemCol:"docItemCol_VOVn"};function ie({children:e}){const n=function(){const{frontMatter:e,toc:n}=c(),t=(0,m.l)(),s=e.hide_table_of_contents,a=!s&&n.length>0;return{hidden:s,mobile:a?(0,l.jsx)(F,{}):void 0,desktop:!a||"desktop"!==t&&"ssr"!==t?void 0:(0,l.jsx)(S,{})}}(),{metadata:t}=c();return(0,l.jsxs)("div",{className:"row",children:[(0,l.jsxs)("div",{className:(0,u.A)("col",!n.hidden&&ae.docItemCol),children:[(0,l.jsx)(se.A,{metadata:t}),(0,l.jsx)(k,{}),(0,l.jsxs)("div",{className:ae.docItemContainer,children:[(0,l.jsxs)("article",{children:[(0,l.jsx)(te,{}),(0,l.jsx)(H,{}),n.mobile,(0,l.jsx)(z,{children:e}),(0,l.jsx)(B,{})]}),(0,l.jsx)(x,{})]})]}),n.desktop&&(0,l.jsx)("div",{className:"col col--3",children:n.desktop})]})}function le(e){const n=`docs-doc-id-${e.content.metadata.id}`,t=e.content;return(0,l.jsx)(r,{content:e.content,children:(0,l.jsxs)(a.e3,{className:n,children:[(0,l.jsx)(d,{}),(0,l.jsx)(ie,{children:(0,l.jsx)(t,{})})]})})}},39022:(e,n,t)=>{t.d(n,{A:()=>l});t(96540);var s=t(34164),a=t(28774),i=t(74848);function l(e){const{permalink:n,title:t,subLabel:l,isNext:o}=e;return(0,i.jsxs)(a.A,{className:(0,s.A)("pagination-nav__link",o?"pagination-nav__link--next":"pagination-nav__link--prev"),to:n,children:[l&&(0,i.jsx)("div",{className:"pagination-nav__sublabel",children:l}),(0,i.jsx)("div",{className:"pagination-nav__label",children:t})]})}},67763:(e,n,t)=>{t.d(n,{A:()=>c});t(96540);var s=t(34164),a=t(65195);const i={tableOfContents:"tableOfContents_bqdL",docItemContainer:"docItemContainer_F8PC"};var l=t(74848);const o="table-of-contents__link toc-highlight",r="table-of-contents__link--active";function c({className:e,...n}){return(0,l.jsx)("div",{className:(0,s.A)(i.tableOfContents,"thin-scrollbar",e),children:(0,l.jsx)(a.A,{...n,linkClassName:o,linkActiveClassName:r})})}},65195:(e,n,t)=>{t.d(n,{A:()=>v});var s=t(96540),a=t(6342);function i(e){const n=e.map((e=>({...e,parentIndex:-1,children:[]}))),t=Array(7).fill(-1);n.forEach(((e,n)=>{const s=t.slice(2,e.level);e.parentIndex=Math.max(...s),t[e.level]=n}));const s=[];return n.forEach((e=>{const{parentIndex:t,...a}=e;t>=0?n[t].children.push(a):s.push(a)})),s}function l({toc:e,minHeadingLevel:n,maxHeadingLevel:t}){return e.flatMap((e=>{const s=l({toc:e.children,minHeadingLevel:n,maxHeadingLevel:t});return function(e){return e.level>=n&&e.level<=t}(e)?[{...e,children:s}]:s}))}function o(e){const n=e.getBoundingClientRect();return n.top===n.bottom?o(e.parentNode):n}function r(e,{anchorTopOffset:n}){const t=e.find((e=>o(e).top>=n));if(t){return function(e){return e.top>0&&e.bottom{e.current=n?0:document.querySelector(".navbar").clientHeight}),[n]),e}function d(e){const n=(0,s.useRef)(void 0),t=c();(0,s.useEffect)((()=>{if(!e)return()=>{};const{linkClassName:s,linkActiveClassName:a,minHeadingLevel:i,maxHeadingLevel:l}=e;function o(){const e=function(e){return Array.from(document.getElementsByClassName(e))}(s),o=function({minHeadingLevel:e,maxHeadingLevel:n}){const t=[];for(let s=e;s<=n;s+=1)t.push(`h${s}.anchor`);return Array.from(document.querySelectorAll(t.join()))}({minHeadingLevel:i,maxHeadingLevel:l}),c=r(o,{anchorTopOffset:t.current}),d=e.find((e=>c&&c.id===function(e){return decodeURIComponent(e.href.substring(e.href.indexOf("#")+1))}(e)));e.forEach((e=>{!function(e,t){t?(n.current&&n.current!==e&&n.current.classList.remove(a),e.classList.add(a),n.current=e):e.classList.remove(a)}(e,e===d)}))}return document.addEventListener("scroll",o),document.addEventListener("resize",o),o(),()=>{document.removeEventListener("scroll",o),document.removeEventListener("resize",o)}}),[e,t])}var u=t(28774),m=t(74848);function h({toc:e,className:n,linkClassName:t,isChild:s}){return e.length?(0,m.jsx)("ul",{className:s?void 0:n,children:e.map((e=>(0,m.jsxs)("li",{children:[(0,m.jsx)(u.A,{to:`#${e.id}`,className:t??void 0,dangerouslySetInnerHTML:{__html:e.value}}),(0,m.jsx)(h,{isChild:!0,toc:e.children,className:n,linkClassName:t})]},e.id)))}):null}const b=s.memo(h);function v({toc:e,className:n="table-of-contents table-of-contents__left-border",linkClassName:t="table-of-contents__link",linkActiveClassName:o,minHeadingLevel:r,maxHeadingLevel:c,...u}){const h=(0,a.p)(),v=r??h.tableOfContents.minHeadingLevel,x=c??h.tableOfContents.maxHeadingLevel,g=function({toc:e,minHeadingLevel:n,maxHeadingLevel:t}){return(0,s.useMemo)((()=>l({toc:i(e),minHeadingLevel:n,maxHeadingLevel:t})),[e,n,t])}({toc:e,minHeadingLevel:v,maxHeadingLevel:x});return d((0,s.useMemo)((()=>{if(t&&o)return{linkClassName:t,linkActiveClassName:o,minHeadingLevel:v,maxHeadingLevel:x}}),[t,o,v,x])),(0,m.jsx)(b,{toc:g,className:n,linkClassName:t,...u})}},56133:(e,n,t)=>{t.d(n,{A:()=>o});t(96540);var s=t(34164),a=t(28774);const i={tag:"tag_zVej",tagRegular:"tagRegular_sFm0",tagWithCount:"tagWithCount_h2kH"};var l=t(74848);function o({permalink:e,label:n,count:t,description:o}){return(0,l.jsxs)(a.A,{rel:"tag",href:e,title:o,className:(0,s.A)(i.tag,t?i.tagWithCount:i.tagRegular),children:[n,t&&(0,l.jsx)("span",{children:t})]})}},62053:(e,n,t)=>{t.d(n,{A:()=>r});t(96540);var s=t(34164),a=t(21312),i=t(56133);const l={tags:"tags_jXut",tag:"tag_QGVx"};var o=t(74848);function r({tags:e}){return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)("b",{children:(0,o.jsx)(a.A,{id:"theme.tags.tagsListLabel",description:"The label alongside a tag list",children:"Tags:"})}),(0,o.jsx)("ul",{className:(0,s.A)(l.tags,"padding--none","margin-left--sm"),children:e.map((e=>(0,o.jsx)("li",{className:l.tag,children:(0,o.jsx)(i.A,{...e})},e.permalink)))})]})}},44084:(e,n,t)=>{t.d(n,{AE:()=>r,Rc:()=>l,TT:()=>d,Uh:()=>o,Yh:()=>c});t(96540);var s=t(21312),a=t(5260),i=t(74848);function l(){return(0,i.jsx)(s.A,{id:"theme.contentVisibility.unlistedBanner.title",description:"The unlisted content banner title",children:"Unlisted page"})}function o(){return(0,i.jsx)(s.A,{id:"theme.contentVisibility.unlistedBanner.message",description:"The unlisted content banner message",children:"This page is unlisted. Search engines will not index it, and only users having a direct link can access it."})}function r(){return(0,i.jsx)(a.A,{children:(0,i.jsx)("meta",{name:"robots",content:"noindex, nofollow"})})}function c(){return(0,i.jsx)(s.A,{id:"theme.contentVisibility.draftBanner.title",description:"The draft content banner title",children:"Draft page"})}function d(){return(0,i.jsx)(s.A,{id:"theme.contentVisibility.draftBanner.message",description:"The draft content banner message",children:"This page is a draft. It will only be visible in dev and be excluded from the production build."})}}}]); \ No newline at end of file diff --git a/assets/js/192400ea.773c75a6.js b/assets/js/192400ea.773c75a6.js new file mode 100644 index 00000000..b9eef3c3 --- /dev/null +++ b/assets/js/192400ea.773c75a6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6293],{16131:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>s,contentTitle:()=>l,default:()=>h,frontMatter:()=>o,metadata:()=>i,toc:()=>c});const i=JSON.parse('{"id":"API-Reference/project/FileTreeView","title":"FileTreeView","description":"Import :","source":"@site/api/API-Reference/project/FileTreeView.md","sourceDirName":"API-Reference/project","slug":"/API-Reference/project/FileTreeView","permalink":"/api/API-Reference/project/FileTreeView","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"FileSyncManager","permalink":"/api/API-Reference/project/FileSyncManager"},"next":{"title":"FileTreeViewModel","permalink":"/api/API-Reference/project/FileTreeViewModel"}}');var r=t(74848),d=t(28453);const o={},l=void 0,s={},c=[{value:"Import :",id:"import-",level:3},{value:"Preact",id:"preact",level:2},{value:"componentDidMount()",id:"componentdidmount",level:2},{value:"getInitialState()",id:"getinitialstate",level:2},{value:"componentDidMount()",id:"componentdidmount-1",level:2},{value:"shouldComponentUpdate()",id:"shouldcomponentupdate",level:2},{value:"componentDidUpdate()",id:"componentdidupdate",level:2},{value:"componentDidUpdate()",id:"componentdidupdate-1",level:2},{value:"shouldComponentUpdate()",id:"shouldcomponentupdate-1",level:2},{value:"handleDragOver()",id:"handledragover",level:2},{value:"render(element, viewModel, projectRoot, actions, forceRender, platform)",id:"renderelement-viewmodel-projectroot-actions-forcerender-platform",level:2},{value:"addIconProvider(callback, [priority])",id:"addiconprovidercallback-priority",level:2},{value:"addClassesProvider(callback, [priority])",id:"addclassesprovidercallback-priority",level:2}];function a(e){const n={code:"code",h2:"h2",h3:"h3",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,d.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"import-",children:"Import :"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-js",children:'const FileTreeView = brackets.getModule("project/FileTreeView")\n'})}),"\n",(0,r.jsx)("a",{name:"Preact"}),"\n",(0,r.jsx)(n.h2,{id:"preact",children:"Preact"}),"\n",(0,r.jsx)(n.p,{children:"This is the view layer (template) for the file tree in the sidebar. It takes a FileTreeViewModel\nand renders it to the given element using Preact. User actions are signaled via an ActionCreator\n(in the Flux sense)."}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,r.jsx)("a",{name:"componentDidMount"}),"\n",(0,r.jsx)(n.h2,{id:"componentdidmount",children:"componentDidMount()"}),"\n",(0,r.jsx)(n.p,{children:"When this component is displayed, we scroll it into view and select the portion\nof the filename that excludes the extension."}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,r.jsx)("a",{name:"getInitialState"}),"\n",(0,r.jsx)(n.h2,{id:"getinitialstate",children:"getInitialState()"}),"\n",(0,r.jsx)(n.p,{children:"Ensures that we always have a state object."}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,r.jsx)("a",{name:"componentDidMount"}),"\n",(0,r.jsx)(n.h2,{id:"componentdidmount-1",children:"componentDidMount()"}),"\n",(0,r.jsx)(n.p,{children:"When this component is displayed, we scroll it into view and select the folder name."}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,r.jsx)("a",{name:"shouldComponentUpdate"}),"\n",(0,r.jsx)(n.h2,{id:"shouldcomponentupdate",children:"shouldComponentUpdate()"}),"\n",(0,r.jsx)(n.p,{children:"Need to re-render if the sort order or the contents change."}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,r.jsx)("a",{name:"componentDidUpdate"}),"\n",(0,r.jsx)(n.h2,{id:"componentdidupdate",children:"componentDidUpdate()"}),"\n",(0,r.jsx)(n.p,{children:"When the component has updated in the DOM, reposition it to where the currently\nselected node is located now."}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,r.jsx)("a",{name:"componentDidUpdate"}),"\n",(0,r.jsx)(n.h2,{id:"componentdidupdate-1",children:"componentDidUpdate()"}),"\n",(0,r.jsx)(n.p,{children:"When the component has updated in the DOM, reposition it to where the currently\nselected node is located now."}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,r.jsx)("a",{name:"shouldComponentUpdate"}),"\n",(0,r.jsx)(n.h2,{id:"shouldcomponentupdate-1",children:"shouldComponentUpdate()"}),"\n",(0,r.jsx)(n.p,{children:"Update for any change in the tree data or directory sorting preference."}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,r.jsx)("a",{name:"handleDragOver"}),"\n",(0,r.jsx)(n.h2,{id:"handledragover",children:"handleDragOver()"}),"\n",(0,r.jsx)(n.p,{children:"Allow the Drop"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,r.jsx)("a",{name:"render"}),"\n",(0,r.jsx)(n.h2,{id:"renderelement-viewmodel-projectroot-actions-forcerender-platform",children:"render(element, viewModel, projectRoot, actions, forceRender, platform)"}),"\n",(0,r.jsx)(n.p,{children:"Renders the file tree to the given element."}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Param"}),(0,r.jsx)(n.th,{children:"Type"}),(0,r.jsx)(n.th,{children:"Description"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"element"}),(0,r.jsxs)(n.td,{children:[(0,r.jsx)("code",{children:"DOMNode"})," | ",(0,r.jsx)("code",{children:"jQuery"})]}),(0,r.jsx)(n.td,{children:"Element in which to render this file tree"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"viewModel"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"FileTreeViewModel"})}),(0,r.jsx)(n.td,{children:"the data container"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"projectRoot"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"Directory"})}),(0,r.jsx)(n.td,{children:"Directory object from which the fullPath of the project root is extracted"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"actions"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"ActionCreator"})}),(0,r.jsx)(n.td,{children:"object with methods used to communicate events that originate from the user"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"forceRender"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"boolean"})}),(0,r.jsx)(n.td,{children:"Run render on the entire tree (useful if an extension has new data that it needs rendered)"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"platform"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"string"})}),(0,r.jsx)(n.td,{children:"mac, win, linux"})]})]})]}),"\n",(0,r.jsx)("a",{name:"addIconProvider"}),"\n",(0,r.jsx)(n.h2,{id:"addiconprovidercallback-priority",children:"addIconProvider(callback, [priority])"}),"\n",(0,r.jsx)(n.p,{children:"Adds an icon provider. The callback is invoked before each working set item is created, and can\nreturn content to prepend to the item if it supports the icon."}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Param"}),(0,r.jsx)(n.th,{children:"Type"}),(0,r.jsx)(n.th,{children:"Default"}),(0,r.jsx)(n.th,{children:"Description"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"callback"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"function"})}),(0,r.jsx)(n.td,{}),(0,r.jsx)(n.td,{children:"Return a string representing the HTML, a jQuery object or DOM node, or undefined. If undefined, nothing is prepended to the list item and the default or an available icon will be used."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"[priority]"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"number"})}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"0"})}),(0,r.jsx)(n.td,{children:"optional priority. 0 being lowest. The icons with the highest priority wins if there are multiple callback providers attached. icon providers of the same priority first valid response wins."})]})]})]}),"\n",(0,r.jsx)("a",{name:"addClassesProvider"}),"\n",(0,r.jsx)(n.h2,{id:"addclassesprovidercallback-priority",children:"addClassesProvider(callback, [priority])"}),"\n",(0,r.jsx)(n.p,{children:"Adds a CSS class provider, invoked before each working set item is created or updated. When called\nto update an existing item, all previously applied classes have been cleared."}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Param"}),(0,r.jsx)(n.th,{children:"Type"}),(0,r.jsx)(n.th,{children:"Default"}),(0,r.jsx)(n.th,{children:"Description"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"callback"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"function"})}),(0,r.jsx)(n.td,{}),(0,r.jsx)(n.td,{children:"Return a string containing space-separated CSS class(es) to add, or undefined to leave CSS unchanged."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"[priority]"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"number"})}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"0"})}),(0,r.jsx)(n.td,{children:"optional priority. 0 being lowest. The class with the highest priority wins if there are multiple callback classes attached. class providers of the same priority will be appended."})]})]})]})]})}function h(e={}){const{wrapper:n}={...(0,d.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(a,{...e})}):a(e)}},28453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>l});var i=t(96540);const r={},d=i.createContext(r);function o(e){const n=i.useContext(d);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),i.createElement(d.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/1970d4b8.516cc407.js b/assets/js/1970d4b8.516cc407.js new file mode 100644 index 00000000..c1493ede --- /dev/null +++ b/assets/js/1970d4b8.516cc407.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6702],{9784:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>a,contentTitle:()=>r,default:()=>h,frontMatter:()=>s,metadata:()=>t,toc:()=>d});const t=JSON.parse('{"id":"Code Quality/html-lint","title":"HTML Validator","description":"HTML Validator helps you find errors when you open or edit an HTML file. E.g.","source":"@site/docs/06-Code Quality/01-html-lint.md","sourceDirName":"06-Code Quality","slug":"/Features/Problems Panel/html-lint","permalink":"/docs/Features/Problems Panel/html-lint","draft":false,"unlisted":false,"editUrl":"https://github.com/phcode-dev/docs/blob/main/docs/06-Code Quality/01-html-lint.md","tags":[],"version":"current","sidebarPosition":1,"frontMatter":{"slug":"/Features/Problems Panel/html-lint"},"sidebar":"tutorialSidebar","previous":{"title":"Extensions","permalink":"/docs/extensions"},"next":{"title":"ESLint for Javascript Problems","permalink":"/docs/Features/Problems Panel/ESLint"}}');var o=i(74848),l=i(28453);const s={slug:"/Features/Problems Panel/html-lint"},r="HTML Validator",a={},d=[{value:"Advanced Use Cases",id:"advanced-use-cases",level:3},{value:"Example .htmlvalidate.json config file for stricter HTML validation.",id:"example-htmlvalidatejson-config-file-for-stricter-html-validation",level:4},{value:"Read more on supported configurations",id:"read-more-on-supported-configurations",level:4},{value:"FAQ",id:"faq",level:2},{value:"Q: Why is my HTML Validator custom configuration not working?",id:"q-why-is-my-html-validator-custom-configuration-not-working",level:4},{value:"Q: How is HTML linting triggered in Phoenix Code?",id:"q-how-is-html-linting-triggered-in-phoenix-code",level:4}];function c(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",img:"img",li:"li",p:"p",pre:"pre",ul:"ul",...(0,l.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.header,{children:(0,o.jsx)(n.h1,{id:"html-validator",children:"HTML Validator"})}),"\n",(0,o.jsxs)(n.p,{children:["HTML Validator helps you find errors when you open or edit an HTML file. E.g.\nduplicate IDs, unrecognized tags, Etc. The validator works on ",(0,o.jsx)(n.code,{children:"HTML"})," and related\nfiles like ",(0,o.jsx)(n.code,{children:"XHTML"})," and ",(0,o.jsx)(n.code,{children:"HTM"}),". Fragments of",(0,o.jsx)(n.code,{children:"HTML"})," inside ",(0,o.jsx)(n.code,{children:"PHP"}),", ",(0,o.jsx)(n.code,{children:"JSP"})," and ",(0,o.jsx)(n.code,{children:"ASP"}),"\nfiles are also supported."]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{src:"https://github.com/phcode-dev/phoenix/assets/5336369/5bc4a1cc-2429-477c-83ca-91f19dcc0b0f",alt:"HTML validate"})}),"\n",(0,o.jsx)(n.h3,{id:"advanced-use-cases",children:"Advanced Use Cases"}),"\n",(0,o.jsxs)(n.p,{children:["HTML Validator is based on the powerful\n",(0,o.jsx)(n.a,{href:"https://html-validate.org/",children:"HTML-validate"})," library. You can customize the\nbehavior by using a ",(0,o.jsx)(n.code,{children:".htmlvalidate.json"})," configuration file. See\n",(0,o.jsx)(n.a,{href:"https://html-validate.org/usage/index.html#configuration",children:"this link"})," to\nunderstand how to write custom config files and supported options."]}),"\n",(0,o.jsxs)(n.h4,{id:"example-htmlvalidatejson-config-file-for-stricter-html-validation",children:["Example ",(0,o.jsx)(n.code,{children:".htmlvalidate.json"})," config file for stricter HTML validation."]}),"\n",(0,o.jsxs)(n.p,{children:["Create a new file with name ",(0,o.jsx)(n.code,{children:".htmlvalidate.json"})," in your project and add the\nfollowing text:"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-json",children:'{\n "extends": ["html-validate:recommended"]\n}\n'})}),"\n",(0,o.jsx)(n.h4,{id:"read-more-on-supported-configurations",children:"Read more on supported configurations"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"https://html-validate.org/usage/index.html#configuration",children:"Custom rules usage guide"})}),"\n",(0,o.jsxs)(n.li,{children:["Or\n",(0,o.jsx)(n.a,{href:"https://html-validate.org/rules/presets.html",children:"use quick configuration presets"}),"\nin your ",(0,o.jsx)(n.code,{children:".htmlvalidate.json"})]}),"\n"]}),"\n",(0,o.jsx)(n.h2,{id:"faq",children:"FAQ"}),"\n",(0,o.jsx)(n.h4,{id:"q-why-is-my-html-validator-custom-configuration-not-working",children:"Q: Why is my HTML Validator custom configuration not working?"}),"\n",(0,o.jsxs)(n.p,{children:["Phoenix Code only supports plain JSON configuration file\n",(0,o.jsx)(n.a,{href:"https://html-validate.org/usage/index.html#configuration",children:".htmlvalidate.json"}),".\nOther config files like ",(0,o.jsx)(n.code,{children:".htmlvalidate.js"})," and ",(0,o.jsx)(n.code,{children:".htmlvalidate.cjs"})," are not\nsupported."]}),"\n",(0,o.jsx)(n.h4,{id:"q-how-is-html-linting-triggered-in-phoenix-code",children:"Q: How is HTML linting triggered in Phoenix Code?"}),"\n",(0,o.jsx)(n.p,{children:"HTML linting is automatically triggered when you save your file- errors and warnings are displayed in the problems panel."})]})}function h(e={}){const{wrapper:n}={...(0,l.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(c,{...e})}):c(e)}},28453:(e,n,i)=>{i.d(n,{R:()=>s,x:()=>r});var t=i(96540);const o={},l=t.createContext(o);function s(e){const n=t.useContext(l);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:s(e.components),t.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/1a4e3797.eac14c24.js b/assets/js/1a4e3797.eac14c24.js new file mode 100644 index 00000000..d3714799 --- /dev/null +++ b/assets/js/1a4e3797.eac14c24.js @@ -0,0 +1 @@ +(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2138],{72733:e=>{function t(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function r(e){return"function"==typeof e}function i(e){return"object"==typeof e&&null!==e}function n(e){return void 0===e}e.exports=t,t.prototype._events=void 0,t.prototype._maxListeners=void 0,t.defaultMaxListeners=10,t.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||isNaN(e))throw TypeError("n must be a positive number");return this._maxListeners=e,this},t.prototype.emit=function(e){var t,s,a,c,o,u;if(this._events||(this._events={}),"error"===e&&(!this._events.error||i(this._events.error)&&!this._events.error.length)){if((t=arguments[1])instanceof Error)throw t;var h=new Error('Uncaught, unspecified "error" event. ('+t+")");throw h.context=t,h}if(n(s=this._events[e]))return!1;if(r(s))switch(arguments.length){case 1:s.call(this);break;case 2:s.call(this,arguments[1]);break;case 3:s.call(this,arguments[1],arguments[2]);break;default:c=Array.prototype.slice.call(arguments,1),s.apply(this,c)}else if(i(s))for(c=Array.prototype.slice.call(arguments,1),a=(u=s.slice()).length,o=0;o0&&this._events[e].length>a&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),"function"==typeof console.trace&&console.trace()),this},t.prototype.on=t.prototype.addListener,t.prototype.once=function(e,t){if(!r(t))throw TypeError("listener must be a function");var i=!1;function n(){this.removeListener(e,n),i||(i=!0,t.apply(this,arguments))}return n.listener=t,this.on(e,n),this},t.prototype.removeListener=function(e,t){var n,s,a,c;if(!r(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;if(a=(n=this._events[e]).length,s=-1,n===t||r(n.listener)&&n.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(i(n)){for(c=a;c-- >0;)if(n[c]===t||n[c].listener&&n[c].listener===t){s=c;break}if(s<0)return this;1===n.length?(n.length=0,delete this._events[e]):n.splice(s,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},t.prototype.removeAllListeners=function(e){var t,i;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)"removeListener"!==t&&this.removeAllListeners(t);return this.removeAllListeners("removeListener"),this._events={},this}if(r(i=this._events[e]))this.removeListener(e,i);else if(i)for(;i.length;)this.removeListener(e,i[i.length-1]);return delete this._events[e],this},t.prototype.listeners=function(e){return this._events&&this._events[e]?r(this._events[e])?[this._events[e]]:this._events[e].slice():[]},t.prototype.listenerCount=function(e){if(this._events){var t=this._events[e];if(r(t))return 1;if(t)return t.length}return 0},t.listenerCount=function(e,t){return e.listenerCount(t)}},74103:(e,t,r)=>{"use strict";var i=r(36571),n=r(19127),s=r(42223),a=r(33371),c=r(67691);function o(e,t,r,n){return new i(e,t,r,n)}o.version=r(16938),o.AlgoliaSearchHelper=i,o.SearchParameters=a,o.RecommendParameters=n,o.SearchResults=c,o.RecommendResults=s,e.exports=o},46732:(e,t,r)=>{"use strict";var i=r(72733);function n(e,t,r){this.main=e,this.fn=t,this.recommendFn=r,this.lastResults=null,this.lastRecommendResults=null}r(73014)(n,i),n.prototype.detach=function(){this.removeAllListeners(),this.main.detachDerivedHelper(this)},n.prototype.getModifiedState=function(e){return this.fn(e)},n.prototype.getModifiedRecommendState=function(e){return this.recommendFn(e)},e.exports=n},19127:e=>{"use strict";function t(e){e=e||{},this.params=e.params||[]}t.prototype={constructor:t,addParams:function(e){var r=this.params.slice();return r.push(e),new t({params:r})},removeParams:function(e){return new t({params:this.params.filter((function(t){return t.$$id!==e}))})},addFrequentlyBoughtTogether:function(e){return this.addParams(Object.assign({},e,{model:"bought-together"}))},addRelatedProducts:function(e){return this.addParams(Object.assign({},e,{model:"related-products"}))},addTrendingItems:function(e){return this.addParams(Object.assign({},e,{model:"trending-items"}))},addTrendingFacets:function(e){return this.addParams(Object.assign({},e,{model:"trending-facets"}))},addLookingSimilar:function(e){return this.addParams(Object.assign({},e,{model:"looking-similar"}))},_buildQueries:function(e,t){return this.params.filter((function(e){return void 0===t[e.$$id]})).map((function(t){var r=Object.assign({},t,{indexName:e,threshold:t.threshold||0});return delete r.$$id,r}))}},e.exports=t},42223:e=>{"use strict";function t(e,t){this._state=e,this._rawResults={};var r=this;e.params.forEach((function(e){var i=e.$$id;r[i]=t[i],r._rawResults[i]=t[i]}))}t.prototype={constructor:t},e.exports=t},44054:(e,t,r)=>{"use strict";var i=r(29110),n=r(40317),s=r(21383),a={addRefinement:function(e,t,r){if(a.isRefined(e,t,r))return e;var n=""+r,s=e[t]?e[t].concat(n):[n],c={};return c[t]=s,i(c,e)},removeRefinement:function(e,t,r){if(void 0===r)return a.clearRefinement(e,(function(e,r){return t===r}));var i=""+r;return a.clearRefinement(e,(function(e,r){return t===r&&i===e}))},toggleRefinement:function(e,t,r){if(void 0===r)throw new Error("toggleRefinement should be used with a value");return a.isRefined(e,t,r)?a.removeRefinement(e,t,r):a.addRefinement(e,t,r)},clearRefinement:function(e,t,r){if(void 0===t)return n(e)?{}:e;if("string"==typeof t)return s(e,[t]);if("function"==typeof t){var i=!1,a=Object.keys(e).reduce((function(n,s){var a=e[s]||[],c=a.filter((function(e){return!t(e,s,r)}));return c.length!==a.length&&(i=!0),n[s]=c,n}),{});return i?a:e}},isRefined:function(e,t,r){var i=Boolean(e[t])&&e[t].length>0;if(void 0===r||!i)return i;var n=""+r;return-1!==e[t].indexOf(n)}};e.exports=a},33371:(e,t,r)=>{"use strict";var i=r(29110),n=r(20849),s=r(14843),a=r(44728),c=r(40317),o=r(21383),u=r(17507),h=r(72208),l=r(44054);function f(e,t){return Array.isArray(e)&&Array.isArray(t)?e.length===t.length&&e.every((function(e,r){return f(t[r],e)})):e===t}function m(e){var t=e?m._parseNumbers(e):{};void 0===t.userToken||h(t.userToken)||console.warn("[algoliasearch-helper] The `userToken` parameter is invalid. This can lead to wrong analytics.\n - Format: [a-zA-Z0-9_-]{1,64}"),this.facets=t.facets||[],this.disjunctiveFacets=t.disjunctiveFacets||[],this.hierarchicalFacets=t.hierarchicalFacets||[],this.facetsRefinements=t.facetsRefinements||{},this.facetsExcludes=t.facetsExcludes||{},this.disjunctiveFacetsRefinements=t.disjunctiveFacetsRefinements||{},this.numericRefinements=t.numericRefinements||{},this.tagRefinements=t.tagRefinements||[],this.hierarchicalFacetsRefinements=t.hierarchicalFacetsRefinements||{};var r=this;Object.keys(t).forEach((function(e){var i=-1!==m.PARAMETERS.indexOf(e),n=void 0!==t[e];!i&&n&&(r[e]=t[e])}))}m.PARAMETERS=Object.keys(new m),m._parseNumbers=function(e){if(e instanceof m)return e;var t={};if(["aroundPrecision","aroundRadius","getRankingInfo","minWordSizefor2Typos","minWordSizefor1Typo","page","maxValuesPerFacet","distinct","minimumAroundRadius","hitsPerPage","minProximity"].forEach((function(r){var i=e[r];if("string"==typeof i){var n=parseFloat(i);t[r]=isNaN(n)?i:n}})),Array.isArray(e.insideBoundingBox)&&(t.insideBoundingBox=e.insideBoundingBox.map((function(e){return Array.isArray(e)?e.map((function(e){return parseFloat(e)})):e}))),e.numericRefinements){var r={};Object.keys(e.numericRefinements).forEach((function(t){var i=e.numericRefinements[t]||{};r[t]={},Object.keys(i).forEach((function(e){var n=i[e].map((function(e){return Array.isArray(e)?e.map((function(e){return"string"==typeof e?parseFloat(e):e})):"string"==typeof e?parseFloat(e):e}));r[t][e]=n}))})),t.numericRefinements=r}return a(e,t)},m.make=function(e){var t=new m(e);return(e.hierarchicalFacets||[]).forEach((function(e){if(e.rootPath){var r=t.getHierarchicalRefinement(e.name);r.length>0&&0!==r[0].indexOf(e.rootPath)&&(t=t.clearRefinements(e.name)),0===(r=t.getHierarchicalRefinement(e.name)).length&&(t=t.toggleHierarchicalFacetRefinement(e.name,e.rootPath))}})),t},m.validate=function(e,t){var r=t||{};return e.tagFilters&&r.tagRefinements&&r.tagRefinements.length>0?new Error("[Tags] Cannot switch from the managed tag API to the advanced API. It is probably an error, if it is really what you want, you should first clear the tags with clearTags method."):e.tagRefinements.length>0&&r.tagFilters?new Error("[Tags] Cannot switch from the advanced tag API to the managed API. It is probably an error, if it is not, you should first clear the tags with clearTags method."):e.numericFilters&&r.numericRefinements&&c(r.numericRefinements)?new Error("[Numeric filters] Can't switch from the advanced to the managed API. It is probably an error, if this is really what you want, you have to first clear the numeric filters."):c(e.numericRefinements)&&r.numericFilters?new Error("[Numeric filters] Can't switch from the managed API to the advanced. It is probably an error, if this is really what you want, you have to first clear the numeric filters."):null},m.prototype={constructor:m,clearRefinements:function(e){var t={numericRefinements:this._clearNumericRefinements(e),facetsRefinements:l.clearRefinement(this.facetsRefinements,e,"conjunctiveFacet"),facetsExcludes:l.clearRefinement(this.facetsExcludes,e,"exclude"),disjunctiveFacetsRefinements:l.clearRefinement(this.disjunctiveFacetsRefinements,e,"disjunctiveFacet"),hierarchicalFacetsRefinements:l.clearRefinement(this.hierarchicalFacetsRefinements,e,"hierarchicalFacet")};return t.numericRefinements===this.numericRefinements&&t.facetsRefinements===this.facetsRefinements&&t.facetsExcludes===this.facetsExcludes&&t.disjunctiveFacetsRefinements===this.disjunctiveFacetsRefinements&&t.hierarchicalFacetsRefinements===this.hierarchicalFacetsRefinements?this:this.setQueryParameters(t)},clearTags:function(){return void 0===this.tagFilters&&0===this.tagRefinements.length?this:this.setQueryParameters({tagFilters:void 0,tagRefinements:[]})},setIndex:function(e){return e===this.index?this:this.setQueryParameters({index:e})},setQuery:function(e){return e===this.query?this:this.setQueryParameters({query:e})},setPage:function(e){return e===this.page?this:this.setQueryParameters({page:e})},setFacets:function(e){return this.setQueryParameters({facets:e})},setDisjunctiveFacets:function(e){return this.setQueryParameters({disjunctiveFacets:e})},setHitsPerPage:function(e){return this.hitsPerPage===e?this:this.setQueryParameters({hitsPerPage:e})},setTypoTolerance:function(e){return this.typoTolerance===e?this:this.setQueryParameters({typoTolerance:e})},addNumericRefinement:function(e,t,r){var i=u(r);if(this.isNumericRefined(e,t,i))return this;var n=a({},this.numericRefinements);return n[e]=a({},n[e]),n[e][t]?(n[e][t]=n[e][t].slice(),n[e][t].push(i)):n[e][t]=[i],this.setQueryParameters({numericRefinements:n})},getConjunctiveRefinements:function(e){return this.isConjunctiveFacet(e)&&this.facetsRefinements[e]||[]},getDisjunctiveRefinements:function(e){return this.isDisjunctiveFacet(e)&&this.disjunctiveFacetsRefinements[e]||[]},getHierarchicalRefinement:function(e){return this.hierarchicalFacetsRefinements[e]||[]},getExcludeRefinements:function(e){return this.isConjunctiveFacet(e)&&this.facetsExcludes[e]||[]},removeNumericRefinement:function(e,t,r){var i=r;return void 0!==i?this.isNumericRefined(e,t,i)?this.setQueryParameters({numericRefinements:this._clearNumericRefinements((function(r,n){return n===e&&r.op===t&&f(r.val,u(i))}))}):this:void 0!==t?this.isNumericRefined(e,t)?this.setQueryParameters({numericRefinements:this._clearNumericRefinements((function(r,i){return i===e&&r.op===t}))}):this:this.isNumericRefined(e)?this.setQueryParameters({numericRefinements:this._clearNumericRefinements((function(t,r){return r===e}))}):this},getNumericRefinements:function(e){return this.numericRefinements[e]||{}},getNumericRefinement:function(e,t){return this.numericRefinements[e]&&this.numericRefinements[e][t]},_clearNumericRefinements:function(e){if(void 0===e)return c(this.numericRefinements)?{}:this.numericRefinements;if("string"==typeof e)return o(this.numericRefinements,[e]);if("function"==typeof e){var t=!1,r=this.numericRefinements,i=Object.keys(r).reduce((function(i,n){var s=r[n],a={};return s=s||{},Object.keys(s).forEach((function(r){var i=s[r]||[],c=[];i.forEach((function(t){e({val:t,op:r},n,"numeric")||c.push(t)})),c.length!==i.length&&(t=!0),a[r]=c})),i[n]=a,i}),{});return t?i:this.numericRefinements}},addFacet:function(e){return this.isConjunctiveFacet(e)?this:this.setQueryParameters({facets:this.facets.concat([e])})},addDisjunctiveFacet:function(e){return this.isDisjunctiveFacet(e)?this:this.setQueryParameters({disjunctiveFacets:this.disjunctiveFacets.concat([e])})},addHierarchicalFacet:function(e){if(this.isHierarchicalFacet(e.name))throw new Error("Cannot declare two hierarchical facets with the same name: `"+e.name+"`");return this.setQueryParameters({hierarchicalFacets:this.hierarchicalFacets.concat([e])})},addFacetRefinement:function(e,t){if(!this.isConjunctiveFacet(e))throw new Error(e+" is not defined in the facets attribute of the helper configuration");return l.isRefined(this.facetsRefinements,e,t)?this:this.setQueryParameters({facetsRefinements:l.addRefinement(this.facetsRefinements,e,t)})},addExcludeRefinement:function(e,t){if(!this.isConjunctiveFacet(e))throw new Error(e+" is not defined in the facets attribute of the helper configuration");return l.isRefined(this.facetsExcludes,e,t)?this:this.setQueryParameters({facetsExcludes:l.addRefinement(this.facetsExcludes,e,t)})},addDisjunctiveFacetRefinement:function(e,t){if(!this.isDisjunctiveFacet(e))throw new Error(e+" is not defined in the disjunctiveFacets attribute of the helper configuration");return l.isRefined(this.disjunctiveFacetsRefinements,e,t)?this:this.setQueryParameters({disjunctiveFacetsRefinements:l.addRefinement(this.disjunctiveFacetsRefinements,e,t)})},addTagRefinement:function(e){if(this.isTagRefined(e))return this;var t={tagRefinements:this.tagRefinements.concat(e)};return this.setQueryParameters(t)},removeFacet:function(e){return this.isConjunctiveFacet(e)?this.clearRefinements(e).setQueryParameters({facets:this.facets.filter((function(t){return t!==e}))}):this},removeDisjunctiveFacet:function(e){return this.isDisjunctiveFacet(e)?this.clearRefinements(e).setQueryParameters({disjunctiveFacets:this.disjunctiveFacets.filter((function(t){return t!==e}))}):this},removeHierarchicalFacet:function(e){return this.isHierarchicalFacet(e)?this.clearRefinements(e).setQueryParameters({hierarchicalFacets:this.hierarchicalFacets.filter((function(t){return t.name!==e}))}):this},removeFacetRefinement:function(e,t){if(!this.isConjunctiveFacet(e))throw new Error(e+" is not defined in the facets attribute of the helper configuration");return l.isRefined(this.facetsRefinements,e,t)?this.setQueryParameters({facetsRefinements:l.removeRefinement(this.facetsRefinements,e,t)}):this},removeExcludeRefinement:function(e,t){if(!this.isConjunctiveFacet(e))throw new Error(e+" is not defined in the facets attribute of the helper configuration");return l.isRefined(this.facetsExcludes,e,t)?this.setQueryParameters({facetsExcludes:l.removeRefinement(this.facetsExcludes,e,t)}):this},removeDisjunctiveFacetRefinement:function(e,t){if(!this.isDisjunctiveFacet(e))throw new Error(e+" is not defined in the disjunctiveFacets attribute of the helper configuration");return l.isRefined(this.disjunctiveFacetsRefinements,e,t)?this.setQueryParameters({disjunctiveFacetsRefinements:l.removeRefinement(this.disjunctiveFacetsRefinements,e,t)}):this},removeTagRefinement:function(e){if(!this.isTagRefined(e))return this;var t={tagRefinements:this.tagRefinements.filter((function(t){return t!==e}))};return this.setQueryParameters(t)},toggleRefinement:function(e,t){return this.toggleFacetRefinement(e,t)},toggleFacetRefinement:function(e,t){if(this.isHierarchicalFacet(e))return this.toggleHierarchicalFacetRefinement(e,t);if(this.isConjunctiveFacet(e))return this.toggleConjunctiveFacetRefinement(e,t);if(this.isDisjunctiveFacet(e))return this.toggleDisjunctiveFacetRefinement(e,t);throw new Error("Cannot refine the undeclared facet "+e+"; it should be added to the helper options facets, disjunctiveFacets or hierarchicalFacets")},toggleConjunctiveFacetRefinement:function(e,t){if(!this.isConjunctiveFacet(e))throw new Error(e+" is not defined in the facets attribute of the helper configuration");return this.setQueryParameters({facetsRefinements:l.toggleRefinement(this.facetsRefinements,e,t)})},toggleExcludeFacetRefinement:function(e,t){if(!this.isConjunctiveFacet(e))throw new Error(e+" is not defined in the facets attribute of the helper configuration");return this.setQueryParameters({facetsExcludes:l.toggleRefinement(this.facetsExcludes,e,t)})},toggleDisjunctiveFacetRefinement:function(e,t){if(!this.isDisjunctiveFacet(e))throw new Error(e+" is not defined in the disjunctiveFacets attribute of the helper configuration");return this.setQueryParameters({disjunctiveFacetsRefinements:l.toggleRefinement(this.disjunctiveFacetsRefinements,e,t)})},toggleHierarchicalFacetRefinement:function(e,t){if(!this.isHierarchicalFacet(e))throw new Error(e+" is not defined in the hierarchicalFacets attribute of the helper configuration");var r=this._getHierarchicalFacetSeparator(this.getHierarchicalFacetByName(e)),n={};return void 0!==this.hierarchicalFacetsRefinements[e]&&this.hierarchicalFacetsRefinements[e].length>0&&(this.hierarchicalFacetsRefinements[e][0]===t||0===this.hierarchicalFacetsRefinements[e][0].indexOf(t+r))?-1===t.indexOf(r)?n[e]=[]:n[e]=[t.slice(0,t.lastIndexOf(r))]:n[e]=[t],this.setQueryParameters({hierarchicalFacetsRefinements:i(n,this.hierarchicalFacetsRefinements)})},addHierarchicalFacetRefinement:function(e,t){if(this.isHierarchicalFacetRefined(e))throw new Error(e+" is already refined.");if(!this.isHierarchicalFacet(e))throw new Error(e+" is not defined in the hierarchicalFacets attribute of the helper configuration.");var r={};return r[e]=[t],this.setQueryParameters({hierarchicalFacetsRefinements:i(r,this.hierarchicalFacetsRefinements)})},removeHierarchicalFacetRefinement:function(e){if(!this.isHierarchicalFacetRefined(e))return this;var t={};return t[e]=[],this.setQueryParameters({hierarchicalFacetsRefinements:i(t,this.hierarchicalFacetsRefinements)})},toggleTagRefinement:function(e){return this.isTagRefined(e)?this.removeTagRefinement(e):this.addTagRefinement(e)},isDisjunctiveFacet:function(e){return this.disjunctiveFacets.indexOf(e)>-1},isHierarchicalFacet:function(e){return void 0!==this.getHierarchicalFacetByName(e)},isConjunctiveFacet:function(e){return this.facets.indexOf(e)>-1},isFacetRefined:function(e,t){return!!this.isConjunctiveFacet(e)&&l.isRefined(this.facetsRefinements,e,t)},isExcludeRefined:function(e,t){return!!this.isConjunctiveFacet(e)&&l.isRefined(this.facetsExcludes,e,t)},isDisjunctiveFacetRefined:function(e,t){return!!this.isDisjunctiveFacet(e)&&l.isRefined(this.disjunctiveFacetsRefinements,e,t)},isHierarchicalFacetRefined:function(e,t){if(!this.isHierarchicalFacet(e))return!1;var r=this.getHierarchicalRefinement(e);return t?-1!==r.indexOf(t):r.length>0},isNumericRefined:function(e,t,r){if(void 0===r&&void 0===t)return Boolean(this.numericRefinements[e]);var i=this.numericRefinements[e]&&void 0!==this.numericRefinements[e][t];if(void 0===r||!i)return i;var s,a,c=u(r),o=void 0!==(s=this.numericRefinements[e][t],a=c,n(s,(function(e){return f(e,a)})));return i&&o},isTagRefined:function(e){return-1!==this.tagRefinements.indexOf(e)},getRefinedDisjunctiveFacets:function(){var e=this,t=s(Object.keys(this.numericRefinements).filter((function(t){return Object.keys(e.numericRefinements[t]).length>0})),this.disjunctiveFacets);return Object.keys(this.disjunctiveFacetsRefinements).filter((function(t){return e.disjunctiveFacetsRefinements[t].length>0})).concat(t).concat(this.getRefinedHierarchicalFacets()).sort()},getRefinedHierarchicalFacets:function(){var e=this;return s(this.hierarchicalFacets.map((function(e){return e.name})),Object.keys(this.hierarchicalFacetsRefinements).filter((function(t){return e.hierarchicalFacetsRefinements[t].length>0}))).sort()},getUnrefinedDisjunctiveFacets:function(){var e=this.getRefinedDisjunctiveFacets();return this.disjunctiveFacets.filter((function(t){return-1===e.indexOf(t)}))},managedParameters:["index","facets","disjunctiveFacets","facetsRefinements","hierarchicalFacets","facetsExcludes","disjunctiveFacetsRefinements","numericRefinements","tagRefinements","hierarchicalFacetsRefinements"],getQueryParams:function(){var e=this.managedParameters,t={},r=this;return Object.keys(this).forEach((function(i){var n=r[i];-1===e.indexOf(i)&&void 0!==n&&(t[i]=n)})),t},setQueryParameter:function(e,t){if(this[e]===t)return this;var r={};return r[e]=t,this.setQueryParameters(r)},setQueryParameters:function(e){if(!e)return this;var t=m.validate(this,e);if(t)throw t;var r=this,i=m._parseNumbers(e),n=Object.keys(this).reduce((function(e,t){return e[t]=r[t],e}),{}),s=Object.keys(i).reduce((function(e,t){var r=void 0!==e[t],n=void 0!==i[t];return r&&!n?o(e,[t]):(n&&(e[t]=i[t]),e)}),n);return new this.constructor(s)},resetPage:function(){return void 0===this.page?this:this.setPage(0)},_getHierarchicalFacetSortBy:function(e){return e.sortBy||["isRefined:desc","name:asc"]},_getHierarchicalFacetSeparator:function(e){return e.separator||" > "},_getHierarchicalRootPath:function(e){return e.rootPath||null},_getHierarchicalShowParentLevel:function(e){return"boolean"!=typeof e.showParentLevel||e.showParentLevel},getHierarchicalFacetByName:function(e){return n(this.hierarchicalFacets,(function(t){return t.name===e}))},getHierarchicalFacetBreadcrumb:function(e){if(!this.isHierarchicalFacet(e))return[];var t=this.getHierarchicalRefinement(e)[0];if(!t)return[];var r=this._getHierarchicalFacetSeparator(this.getHierarchicalFacetByName(e));return t.split(r).map((function(e){return e.trim()}))},toString:function(){return JSON.stringify(this,null,2)}},e.exports=m},76673:(e,t,r)=>{"use strict";e.exports=function(e){return function(t,r){var i=e.hierarchicalFacets[r],u=e.hierarchicalFacetsRefinements[i.name]&&e.hierarchicalFacetsRefinements[i.name][0]||"",h=e._getHierarchicalFacetSeparator(i),l=e._getHierarchicalRootPath(i),f=e._getHierarchicalShowParentLevel(i),m=s(e._getHierarchicalFacetSortBy(i)),d=t.every((function(e){return e.exhaustive})),p=function(e,t,r,i,s){return function(u,h,l){var f=u;if(l>0){var m=0;for(f=u;m{"use strict";var i=r(78965),n=r(29110),s=r(2909),a=r(20849),c=r(43917),o=r(7577),u=r(92183),h=r(38601),l=s.escapeFacetValue,f=s.unescapeFacetValue,m=r(76673);function d(e){var t={};return e.forEach((function(e,r){t[e]=r})),t}function p(e,t,r){t&&t[r]&&(e.stats=t[r])}function g(e,t,r){var s=t[0]||{};this._rawResults=t;var o=this;Object.keys(s).forEach((function(e){o[e]=s[e]}));var h=n(r,{persistHierarchicalRootCount:!1});Object.keys(h).forEach((function(e){o[e]=h[e]})),this.processingTimeMS=t.reduce((function(e,t){return void 0===t.processingTimeMS?e:e+t.processingTimeMS}),0),this.disjunctiveFacets=[],this.hierarchicalFacets=e.hierarchicalFacets.map((function(){return[]})),this.facets=[];var l=e.getRefinedDisjunctiveFacets(),g=d(e.facets),v=d(e.disjunctiveFacets),y=1,R=s.facets||{};Object.keys(R).forEach((function(t){var r,i,n=R[t],u=(r=e.hierarchicalFacets,i=t,a(r,(function(e){return(e.attributes||[]).indexOf(i)>-1})));if(u){var h=u.attributes.indexOf(t),l=c(e.hierarchicalFacets,(function(e){return e.name===u.name}));o.hierarchicalFacets[l][h]={attribute:t,data:n,exhaustive:s.exhaustiveFacetsCount}}else{var f,m=-1!==e.disjunctiveFacets.indexOf(t),d=-1!==e.facets.indexOf(t);m&&(f=v[t],o.disjunctiveFacets[f]={name:t,data:n,exhaustive:s.exhaustiveFacetsCount},p(o.disjunctiveFacets[f],s.facets_stats,t)),d&&(f=g[t],o.facets[f]={name:t,data:n,exhaustive:s.exhaustiveFacetsCount},p(o.facets[f],s.facets_stats,t))}})),this.hierarchicalFacets=i(this.hierarchicalFacets),l.forEach((function(r){var i=t[y],a=i&&i.facets?i.facets:{},h=e.getHierarchicalFacetByName(r);Object.keys(a).forEach((function(t){var r,l=a[t];if(h){r=c(e.hierarchicalFacets,(function(e){return e.name===h.name}));var m=c(o.hierarchicalFacets[r],(function(e){return e.attribute===t}));if(-1===m)return;o.hierarchicalFacets[r][m].data=o.persistHierarchicalRootCount?u(o.hierarchicalFacets[r][m].data,l):n(l,o.hierarchicalFacets[r][m].data)}else{r=v[t];var d=s.facets&&s.facets[t]||{};o.disjunctiveFacets[r]={name:t,data:u(d,l),exhaustive:i.exhaustiveFacetsCount},p(o.disjunctiveFacets[r],i.facets_stats,t),e.disjunctiveFacetsRefinements[t]&&e.disjunctiveFacetsRefinements[t].forEach((function(i){!o.disjunctiveFacets[r].data[i]&&e.disjunctiveFacetsRefinements[t].indexOf(f(i))>-1&&(o.disjunctiveFacets[r].data[i]=0)}))}})),y++})),e.getRefinedHierarchicalFacets().forEach((function(r){var i=e.getHierarchicalFacetByName(r),s=e._getHierarchicalFacetSeparator(i),a=e.getHierarchicalRefinement(r);0===a.length||a[0].split(s).length<2||t.slice(y).forEach((function(t){var r=t&&t.facets?t.facets:{};Object.keys(r).forEach((function(t){var u=r[t],h=c(e.hierarchicalFacets,(function(e){return e.name===i.name})),l=c(o.hierarchicalFacets[h],(function(e){return e.attribute===t}));if(-1!==l){var f={};if(a.length>0&&!o.persistHierarchicalRootCount){var m=a[0].split(s)[0];f[m]=o.hierarchicalFacets[h][l].data[m]}o.hierarchicalFacets[h][l].data=n(f,u,o.hierarchicalFacets[h][l].data)}})),y++}))})),Object.keys(e.facetsExcludes).forEach((function(t){var r=e.facetsExcludes[t],i=g[t];o.facets[i]={name:t,data:R[t],exhaustive:s.exhaustiveFacetsCount},r.forEach((function(e){o.facets[i]=o.facets[i]||{name:t},o.facets[i].data=o.facets[i].data||{},o.facets[i].data[e]=0}))})),this.hierarchicalFacets=this.hierarchicalFacets.map(m(e)),this.facets=i(this.facets),this.disjunctiveFacets=i(this.disjunctiveFacets),this._state=e}function v(e,t){function r(e){return e.name===t}if(e._state.isConjunctiveFacet(t)){var i=a(e.facets,r);return i?Object.keys(i.data).map((function(r){var n=l(r);return{name:r,escapedValue:n,count:i.data[r],isRefined:e._state.isFacetRefined(t,n),isExcluded:e._state.isExcludeRefined(t,r)}})):[]}if(e._state.isDisjunctiveFacet(t)){var n=a(e.disjunctiveFacets,r);return n?Object.keys(n.data).map((function(r){var i=l(r);return{name:r,escapedValue:i,count:n.data[r],isRefined:e._state.isDisjunctiveFacetRefined(t,i)}})):[]}if(e._state.isHierarchicalFacet(t)){var s=a(e.hierarchicalFacets,r);if(!s)return s;var c=e._state.getHierarchicalFacetByName(t),o=e._state._getHierarchicalFacetSeparator(c),u=f(e._state.getHierarchicalRefinement(t)[0]||"");0===u.indexOf(c.rootPath)&&(u=u.replace(c.rootPath+o,""));var h=u.split(o);return h.unshift(t),y(s,h,0),s}}function y(e,t,r){e.isRefined=e.name===(t[r]&&t[r].trim()),e.data&&e.data.forEach((function(e){y(e,t,r+1)}))}function R(e,t,r,i){if(i=i||0,Array.isArray(t))return e(t,r[i]);if(!t.data||0===t.data.length)return t;var s=t.data.map((function(t){return R(e,t,r,i+1)})),a=e(s,r[i]);return n({data:a},t)}function F(e,t){var r=a(e,(function(e){return e.name===t}));return r&&r.stats}function b(e,t,r,i,n){var s=a(n,(function(e){return e.name===r})),c=s&&s.data&&s.data[i]?s.data[i]:0,o=s&&s.exhaustive||!1;return{type:t,attributeName:r,name:i,count:c,exhaustive:o}}g.prototype.getFacetByName=function(e){function t(t){return t.name===e}return a(this.facets,t)||a(this.disjunctiveFacets,t)||a(this.hierarchicalFacets,t)},g.DEFAULT_SORT=["isRefined:desc","count:desc","name:asc"],g.prototype.getFacetValues=function(e,t){var r=v(this,e);if(r){var i,s=n(t,{sortBy:g.DEFAULT_SORT,facetOrdering:!(t&&t.sortBy)}),a=this;if(Array.isArray(r))i=[e];else i=a._state.getHierarchicalFacetByName(r.name).attributes;return R((function(e,t){var r=function(e,t){return e.renderingContent&&e.renderingContent.facetOrdering&&e.renderingContent.facetOrdering.values&&e.renderingContent.facetOrdering.values[t]}(a,t);if(s.facetOrdering&&r)return function(e,t){var r=[],i=[],n=t.hide||[],s=(t.order||[]).reduce((function(e,t,r){return e[t]=r,e}),{});e.forEach((function(e){var t=e.path||e.name,a=n.indexOf(t)>-1;a||void 0===s[t]?a||i.push(e):r[s[t]]=e})),r=r.filter((function(e){return e}));var a,c=t.sortRemainingBy;return"hidden"===c?r:(a="alpha"===c?[["path","name"],["asc","asc"]]:[["count"],["desc"]],r.concat(h(i,a[0],a[1])))}(e,r);if(Array.isArray(s.sortBy)){var i=o(s.sortBy,g.DEFAULT_SORT),n=h(e,i[0],i[1]),c=r&&r.hide?r.hide:[];if(c.length>0){var u=[];return n.forEach((function(e){var t=e.path||e.name;-1===c.indexOf(t)&&u.push(e)})),u}return n}if("function"==typeof s.sortBy)return function(e,t){return t.sort(e)}(s.sortBy,e);throw new Error("options.sortBy is optional but if defined it must be either an array of string (predicates) or a sorting function")}),r,i)}},g.prototype.getFacetStats=function(e){return this._state.isConjunctiveFacet(e)?F(this.facets,e):this._state.isDisjunctiveFacet(e)?F(this.disjunctiveFacets,e):void 0},g.prototype.getRefinements=function(){var e=this._state,t=this,r=[];return Object.keys(e.facetsRefinements).forEach((function(i){e.facetsRefinements[i].forEach((function(n){r.push(b(e,"facet",i,n,t.facets))}))})),Object.keys(e.facetsExcludes).forEach((function(i){e.facetsExcludes[i].forEach((function(n){r.push(b(e,"exclude",i,n,t.facets))}))})),Object.keys(e.disjunctiveFacetsRefinements).forEach((function(i){e.disjunctiveFacetsRefinements[i].forEach((function(n){r.push(b(e,"disjunctive",i,n,t.disjunctiveFacets))}))})),Object.keys(e.hierarchicalFacetsRefinements).forEach((function(i){e.hierarchicalFacetsRefinements[i].forEach((function(n){r.push(function(e,t,r,i){var n=e.getHierarchicalFacetByName(t),s=e._getHierarchicalFacetSeparator(n),c=r.split(s),o=a(i,(function(e){return e.name===t})),u=c.reduce((function(e,t){var r=e&&a(e.data,(function(e){return e.name===t}));return void 0!==r?r:e}),o),h=u&&u.count||0,l=u&&u.exhaustive||!1,f=u&&u.path||"";return{type:"hierarchical",attributeName:t,name:f,count:h,exhaustive:l}}(e,i,n,t.hierarchicalFacets))}))})),Object.keys(e.numericRefinements).forEach((function(t){var i=e.numericRefinements[t];Object.keys(i).forEach((function(e){i[e].forEach((function(i){r.push({type:"numeric",attributeName:t,name:i,numericValue:i,operator:e})}))}))})),e.tagRefinements.forEach((function(e){r.push({type:"tag",attributeName:"_tags",name:e})})),r},e.exports=g},36571:(e,t,r)=>{"use strict";var i=r(72733),n=r(46732),s=r(2909).escapeFacetValue,a=r(73014),c=r(44728),o=r(40317),u=r(21383),h=r(19127),l=r(42223),f=r(49228),m=r(33371),d=r(67691),p=r(57749),g=r(16938);function v(e,t,r,i){"function"==typeof e.addAlgoliaAgent&&e.addAlgoliaAgent("JS Helper ("+g+")"),this.setClient(e);var n=r||{};n.index=t,this.state=m.make(n),this.recommendState=new h({params:n.recommendState}),this.lastResults=null,this.lastRecommendResults=null,this._queryId=0,this._recommendQueryId=0,this._lastQueryIdReceived=-1,this._lastRecommendQueryIdReceived=-1,this.derivedHelpers=[],this._currentNbQueries=0,this._currentNbRecommendQueries=0,this._searchResultsOptions=i,this._recommendCache={}}function y(e){if(e<0)throw new Error("Page requested below 0.");return this._change({state:this.state.setPage(e),isPageReset:!1}),this}function R(){return this.state.page}a(v,i),v.prototype.search=function(){return this._search({onlyWithDerivedHelpers:!1}),this},v.prototype.searchOnlyWithDerivedHelpers=function(){return this._search({onlyWithDerivedHelpers:!0}),this},v.prototype.searchWithComposition=function(){return this._runComposition({onlyWithDerivedHelpers:!0}),this},v.prototype.recommend=function(){return this._recommend(),this},v.prototype.getQuery=function(){var e=this.state;return f._getHitsSearchParams(e)},v.prototype.searchOnce=function(e,t){var r=e?this.state.setQueryParameters(e):this.state,i=f._getQueries(r.index,r),n=this;if(this._currentNbQueries++,this.emit("searchOnce",{state:r}),!t)return this.client.search(i).then((function(e){return n._currentNbQueries--,0===n._currentNbQueries&&n.emit("searchQueueEmpty"),{content:new d(r,e.results),state:r,_originalResponse:e}}),(function(e){throw n._currentNbQueries--,0===n._currentNbQueries&&n.emit("searchQueueEmpty"),e}));this.client.search(i).then((function(e){n._currentNbQueries--,0===n._currentNbQueries&&n.emit("searchQueueEmpty"),t(null,new d(r,e.results),r)})).catch((function(e){n._currentNbQueries--,0===n._currentNbQueries&&n.emit("searchQueueEmpty"),t(e,null,r)}))},v.prototype.findAnswers=function(e){console.warn("[algoliasearch-helper] answers is no longer supported");var t=this.state,r=this.derivedHelpers[0];if(!r)return Promise.resolve([]);var i=r.getModifiedState(t),n=c({attributesForPrediction:e.attributesForPrediction,nbHits:e.nbHits},{params:u(f._getHitsSearchParams(i),["attributesToSnippet","hitsPerPage","restrictSearchableAttributes","snippetEllipsisText"])}),s="search for answers was called, but this client does not have a function client.initIndex(index).findAnswers";if("function"!=typeof this.client.initIndex)throw new Error(s);var a=this.client.initIndex(i.index);if("function"!=typeof a.findAnswers)throw new Error(s);return a.findAnswers(i.query,e.queryLanguages,n)},v.prototype.searchForFacetValues=function(e,t,r,i){var n="function"==typeof this.client.searchForFacetValues&&"function"!=typeof this.client.searchForFacets,a="function"==typeof this.client.initIndex;if(!n&&!a&&"function"!=typeof this.client.search)throw new Error("search for facet values (searchable) was called, but this client does not have a function client.searchForFacetValues or client.initIndex(index).searchForFacetValues");var c=this.state.setQueryParameters(i||{}),o=c.isDisjunctiveFacet(e),u=f.getSearchForFacetQuery(e,t,r,c);this._currentNbQueries++;var h,l=this;n?h=this.client.searchForFacetValues([{indexName:c.index,params:u}]):a?h=this.client.initIndex(c.index).searchForFacetValues(u):(delete u.facetName,h=this.client.search([{type:"facet",facet:e,indexName:c.index,params:u}]).then((function(e){return e.results[0]}))),this.emit("searchForFacetValues",{state:c,facet:e,query:t});var m=this.lastResults&&this.lastResults.index===c.index&&this.lastResults.renderingContent&&this.lastResults.renderingContent.facetOrdering&&this.lastResults.renderingContent.facetOrdering.values&&this.lastResults.renderingContent.facetOrdering.values[e]&&this.lastResults.renderingContent.facetOrdering.values[e].hide||[];return h.then((function(t){return l._currentNbQueries--,0===l._currentNbQueries&&l.emit("searchQueueEmpty"),(t=Array.isArray(t)?t[0]:t).facetHits=t.facetHits.reduce((function(t,r){return m.indexOf(r.value)>-1||(r.escapedValue=s(r.value),r.isRefined=o?c.isDisjunctiveFacetRefined(e,r.escapedValue):c.isFacetRefined(e,r.escapedValue),t.push(r)),t}),[]),t}),(function(e){throw l._currentNbQueries--,0===l._currentNbQueries&&l.emit("searchQueueEmpty"),e}))},v.prototype.searchForCompositionFacetValues=function(e,t,r,i){if("function"!=typeof this.client.searchForFacetValues)throw new Error("search for facet values (searchable) was called, but this client does not have a function client.searchForFacetValues");var n=this.state.setQueryParameters(i||{}),a=n.isDisjunctiveFacet(e);this._currentNbQueries++;var c,o=this;return c=this.client.searchForFacetValues({compositionID:n.index,facetName:e,searchForFacetValuesRequest:{params:{query:t,maxFacetHits:r,searchQuery:f._getCompositionHitsSearchParams(n)}}}),this.emit("searchForFacetValues",{state:n,facet:e,query:t}),c.then((function(t){return o._currentNbQueries--,0===o._currentNbQueries&&o.emit("searchQueueEmpty"),(t=t.results[0]).facetHits.forEach((function(t){t.escapedValue=s(t.value),t.isRefined=a?n.isDisjunctiveFacetRefined(e,t.escapedValue):n.isFacetRefined(e,t.escapedValue)})),t}),(function(e){throw o._currentNbQueries--,0===o._currentNbQueries&&o.emit("searchQueueEmpty"),e}))},v.prototype.setQuery=function(e){return this._change({state:this.state.resetPage().setQuery(e),isPageReset:!0}),this},v.prototype.clearRefinements=function(e){return this._change({state:this.state.resetPage().clearRefinements(e),isPageReset:!0}),this},v.prototype.clearTags=function(){return this._change({state:this.state.resetPage().clearTags(),isPageReset:!0}),this},v.prototype.addDisjunctiveFacetRefinement=function(e,t){return this._change({state:this.state.resetPage().addDisjunctiveFacetRefinement(e,t),isPageReset:!0}),this},v.prototype.addDisjunctiveRefine=function(){return this.addDisjunctiveFacetRefinement.apply(this,arguments)},v.prototype.addHierarchicalFacetRefinement=function(e,t){return this._change({state:this.state.resetPage().addHierarchicalFacetRefinement(e,t),isPageReset:!0}),this},v.prototype.addNumericRefinement=function(e,t,r){return this._change({state:this.state.resetPage().addNumericRefinement(e,t,r),isPageReset:!0}),this},v.prototype.addFacetRefinement=function(e,t){return this._change({state:this.state.resetPage().addFacetRefinement(e,t),isPageReset:!0}),this},v.prototype.addRefine=function(){return this.addFacetRefinement.apply(this,arguments)},v.prototype.addFacetExclusion=function(e,t){return this._change({state:this.state.resetPage().addExcludeRefinement(e,t),isPageReset:!0}),this},v.prototype.addExclude=function(){return this.addFacetExclusion.apply(this,arguments)},v.prototype.addTag=function(e){return this._change({state:this.state.resetPage().addTagRefinement(e),isPageReset:!0}),this},v.prototype.addFrequentlyBoughtTogether=function(e){return this._recommendChange({state:this.recommendState.addFrequentlyBoughtTogether(e)}),this},v.prototype.addRelatedProducts=function(e){return this._recommendChange({state:this.recommendState.addRelatedProducts(e)}),this},v.prototype.addTrendingItems=function(e){return this._recommendChange({state:this.recommendState.addTrendingItems(e)}),this},v.prototype.addTrendingFacets=function(e){return this._recommendChange({state:this.recommendState.addTrendingFacets(e)}),this},v.prototype.addLookingSimilar=function(e){return this._recommendChange({state:this.recommendState.addLookingSimilar(e)}),this},v.prototype.removeNumericRefinement=function(e,t,r){return this._change({state:this.state.resetPage().removeNumericRefinement(e,t,r),isPageReset:!0}),this},v.prototype.removeDisjunctiveFacetRefinement=function(e,t){return this._change({state:this.state.resetPage().removeDisjunctiveFacetRefinement(e,t),isPageReset:!0}),this},v.prototype.removeDisjunctiveRefine=function(){return this.removeDisjunctiveFacetRefinement.apply(this,arguments)},v.prototype.removeHierarchicalFacetRefinement=function(e){return this._change({state:this.state.resetPage().removeHierarchicalFacetRefinement(e),isPageReset:!0}),this},v.prototype.removeFacetRefinement=function(e,t){return this._change({state:this.state.resetPage().removeFacetRefinement(e,t),isPageReset:!0}),this},v.prototype.removeRefine=function(){return this.removeFacetRefinement.apply(this,arguments)},v.prototype.removeFacetExclusion=function(e,t){return this._change({state:this.state.resetPage().removeExcludeRefinement(e,t),isPageReset:!0}),this},v.prototype.removeExclude=function(){return this.removeFacetExclusion.apply(this,arguments)},v.prototype.removeTag=function(e){return this._change({state:this.state.resetPage().removeTagRefinement(e),isPageReset:!0}),this},v.prototype.removeFrequentlyBoughtTogether=function(e){return this._recommendChange({state:this.recommendState.removeParams(e)}),this},v.prototype.removeRelatedProducts=function(e){return this._recommendChange({state:this.recommendState.removeParams(e)}),this},v.prototype.removeTrendingItems=function(e){return this._recommendChange({state:this.recommendState.removeParams(e)}),this},v.prototype.removeTrendingFacets=function(e){return this._recommendChange({state:this.recommendState.removeParams(e)}),this},v.prototype.removeLookingSimilar=function(e){return this._recommendChange({state:this.recommendState.removeParams(e)}),this},v.prototype.toggleFacetExclusion=function(e,t){return this._change({state:this.state.resetPage().toggleExcludeFacetRefinement(e,t),isPageReset:!0}),this},v.prototype.toggleExclude=function(){return this.toggleFacetExclusion.apply(this,arguments)},v.prototype.toggleRefinement=function(e,t){return this.toggleFacetRefinement(e,t)},v.prototype.toggleFacetRefinement=function(e,t){return this._change({state:this.state.resetPage().toggleFacetRefinement(e,t),isPageReset:!0}),this},v.prototype.toggleRefine=function(){return this.toggleFacetRefinement.apply(this,arguments)},v.prototype.toggleTag=function(e){return this._change({state:this.state.resetPage().toggleTagRefinement(e),isPageReset:!0}),this},v.prototype.nextPage=function(){var e=this.state.page||0;return this.setPage(e+1)},v.prototype.previousPage=function(){var e=this.state.page||0;return this.setPage(e-1)},v.prototype.setCurrentPage=y,v.prototype.setPage=y,v.prototype.setIndex=function(e){return this._change({state:this.state.resetPage().setIndex(e),isPageReset:!0}),this},v.prototype.setQueryParameter=function(e,t){return this._change({state:this.state.resetPage().setQueryParameter(e,t),isPageReset:!0}),this},v.prototype.setState=function(e){return this._change({state:m.make(e),isPageReset:!1}),this},v.prototype.overrideStateWithoutTriggeringChangeEvent=function(e){return this.state=new m(e),this},v.prototype.hasRefinements=function(e){return!!o(this.state.getNumericRefinements(e))||(this.state.isConjunctiveFacet(e)?this.state.isFacetRefined(e):this.state.isDisjunctiveFacet(e)?this.state.isDisjunctiveFacetRefined(e):!!this.state.isHierarchicalFacet(e)&&this.state.isHierarchicalFacetRefined(e))},v.prototype.isExcluded=function(e,t){return this.state.isExcludeRefined(e,t)},v.prototype.isDisjunctiveRefined=function(e,t){return this.state.isDisjunctiveFacetRefined(e,t)},v.prototype.hasTag=function(e){return this.state.isTagRefined(e)},v.prototype.isTagRefined=function(){return this.hasTagRefinements.apply(this,arguments)},v.prototype.getIndex=function(){return this.state.index},v.prototype.getCurrentPage=R,v.prototype.getPage=R,v.prototype.getTags=function(){return this.state.tagRefinements},v.prototype.getRefinements=function(e){var t=[];if(this.state.isConjunctiveFacet(e))this.state.getConjunctiveRefinements(e).forEach((function(e){t.push({value:e,type:"conjunctive"})})),this.state.getExcludeRefinements(e).forEach((function(e){t.push({value:e,type:"exclude"})}));else if(this.state.isDisjunctiveFacet(e)){this.state.getDisjunctiveRefinements(e).forEach((function(e){t.push({value:e,type:"disjunctive"})}))}var r=this.state.getNumericRefinements(e);return Object.keys(r).forEach((function(e){var i=r[e];t.push({value:i,operator:e,type:"numeric"})})),t},v.prototype.getNumericRefinement=function(e,t){return this.state.getNumericRefinement(e,t)},v.prototype.getHierarchicalFacetBreadcrumb=function(e){return this.state.getHierarchicalFacetBreadcrumb(e)},v.prototype._search=function(e){var t=this.state,r=[],i=[];e.onlyWithDerivedHelpers||(i=f._getQueries(t.index,t),r.push({state:t,queriesCount:i.length,helper:this}),this.emit("search",{state:t,results:this.lastResults}));var n=this.derivedHelpers.map((function(e){var i=e.getModifiedState(t),n=i.index?f._getQueries(i.index,i):[];return r.push({state:i,queriesCount:n.length,helper:e}),e.emit("search",{state:i,results:e.lastResults}),n})),s=Array.prototype.concat.apply(i,n),a=this._queryId++;if(this._currentNbQueries++,!s.length)return Promise.resolve({results:[]}).then(this._dispatchAlgoliaResponse.bind(this,r,a));try{this.client.search(s).then(this._dispatchAlgoliaResponse.bind(this,r,a)).catch(this._dispatchAlgoliaError.bind(this,a))}catch(c){this.emit("error",{error:c})}},v.prototype._runComposition=function(){var e=this.state,t=[],r=this.derivedHelpers.map((function(r){var i=r.getModifiedState(e),n=f._getCompositionQueries(i);return t.push({state:i,queriesCount:n.length,helper:r}),r.emit("search",{state:i,results:r.lastResults}),n})),i=Array.prototype.concat.apply([],r),n=this._queryId++;if(this._currentNbQueries++,!i.length)return Promise.resolve({results:[]}).then(this._dispatchAlgoliaResponse.bind(this,t,n));if(i.length>1)throw new Error("Only one query is allowed when using a composition.");var s=i[0];try{this.client.search(s).then(this._dispatchAlgoliaResponse.bind(this,t,n)).catch(this._dispatchAlgoliaError.bind(this,n))}catch(a){this.emit("error",{error:a})}},v.prototype._recommend=function(){var e=this.state,t=this.recommendState,r=this.getIndex(),i=[{state:t,index:r,helper:this}],n=t.params.map((function(e){return e.$$id}));this.emit("fetch",{recommend:{state:t,results:this.lastRecommendResults}});var s=this._recommendCache,a=this.derivedHelpers.map((function(t){var r=t.getModifiedState(e).index;if(!r)return[];var a=t.getModifiedRecommendState(new h);return i.push({state:a,index:r,helper:t}),n=Array.prototype.concat.apply(n,a.params.map((function(e){return e.$$id}))),t.emit("fetch",{recommend:{state:a,results:t.lastRecommendResults}}),a._buildQueries(r,s)})),c=Array.prototype.concat.apply(this.recommendState._buildQueries(r,s),a);if(0!==c.length)if(c.length>0&&void 0===this.client.getRecommendations)console.warn("Please update algoliasearch/lite to the latest version in order to use recommend widgets.");else{var o=this._recommendQueryId++;this._currentNbRecommendQueries++;try{this.client.getRecommendations(c).then(this._dispatchRecommendResponse.bind(this,o,i,n)).catch(this._dispatchRecommendError.bind(this,o))}catch(u){this.emit("error",{error:u})}}},v.prototype._dispatchAlgoliaResponse=function(e,t,r){var i=this;if(!(t0},v.prototype._change=function(e){var t=e.state,r=e.isPageReset;t!==this.state&&(this.state=t,this.emit("change",{state:this.state,results:this.lastResults,isPageReset:r}))},v.prototype._recommendChange=function(e){var t=e.state;t!==this.recommendState&&(this.recommendState=t,this.emit("recommend:change",{search:{results:this.lastResults,state:this.state},recommend:{results:this.lastRecommendResults,state:this.recommendState}}))},v.prototype.clearCache=function(){return this.client.clearCache&&this.client.clearCache(),this},v.prototype.setClient=function(e){return this.client===e||("function"==typeof e.addAlgoliaAgent&&e.addAlgoliaAgent("JS Helper ("+g+")"),this.client=e),this},v.prototype.getClient=function(){return this.client},v.prototype.derive=function(e,t){var r=new n(this,e,t);return this.derivedHelpers.push(r),r},v.prototype.detachDerivedHelper=function(e){var t=this.derivedHelpers.indexOf(e);if(-1===t)throw new Error("Derived helper already detached");this.derivedHelpers.splice(t,1)},v.prototype.hasPendingRequests=function(){return this._currentNbQueries>0},e.exports=v},78965:e=>{"use strict";e.exports=function(e){return Array.isArray(e)?e.filter(Boolean):[]}},29110:e=>{"use strict";e.exports=function(){return Array.prototype.slice.call(arguments).reduceRight((function(e,t){return Object.keys(Object(t)).forEach((function(r){void 0!==t[r]&&(void 0!==e[r]&&delete e[r],e[r]=t[r])})),e}),{})}},2909:e=>{"use strict";e.exports={escapeFacetValue:function(e){return"string"!=typeof e?e:String(e).replace(/^-/,"\\-")},unescapeFacetValue:function(e){return"string"!=typeof e?e:e.replace(/^\\-/,"-")}}},20849:e=>{"use strict";e.exports=function(e,t){if(Array.isArray(e))for(var r=0;r{"use strict";e.exports=function(e,t){if(!Array.isArray(e))return-1;for(var r=0;r{e.exports=function(e){return e.reduce((function(e,t){return e.concat(t)}),[])}},7577:(e,t,r)=>{"use strict";var i=r(20849);e.exports=function(e,t){var r=(t||[]).map((function(e){return e.split(":")}));return e.reduce((function(e,t){var n=t.split(":"),s=i(r,(function(e){return e[0]===n[0]}));return n.length>1||!s?(e[0].push(n[0]),e[1].push(n[1]),e):(e[0].push(s[0]),e[1].push(s[1]),e)}),[[],[]])}},73014:e=>{"use strict";e.exports=function(e,t){e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}},14843:e=>{"use strict";e.exports=function(e,t){return e.filter((function(r,i){return t.indexOf(r)>-1&&e.indexOf(r)===i}))}},44728:e=>{"use strict";function t(e){return"function"==typeof e||Array.isArray(e)||"[object Object]"===Object.prototype.toString.call(e)}function r(e,i){if(e===i)return e;for(var n in i)if(Object.prototype.hasOwnProperty.call(i,n)&&"__proto__"!==n&&"constructor"!==n){var s=i[n],a=e[n];void 0!==a&&void 0===s||(t(a)&&t(s)?e[n]=r(a,s):e[n]="object"==typeof(c=s)&&null!==c?r(Array.isArray(c)?[]:{},c):c)}var c;return e}e.exports=function(e){t(e)||(e={});for(var i=1,n=arguments.length;i{"use strict";e.exports=function(){return Array.prototype.slice.call(arguments).reduceRight((function(e,t){return Object.keys(Object(t)).forEach((function(r){var i="number"==typeof e[r]?e[r]:0,n=t[r];void 0!==n&&n>=i&&(void 0!==e[r]&&delete e[r],e[r]=n)})),e}),{})}},40317:e=>{"use strict";e.exports=function(e){return e&&Object.keys(e).length>0}},21383:e=>{"use strict";e.exports=function(e,t){if(null===e)return{};var r,i,n={},s=Object.keys(e);for(i=0;i=0||(n[r]=e[r]);return n}},38601:e=>{"use strict";function t(e,t){if(e!==t){var r=void 0!==e,i=null===e,n=void 0!==t,s=null===t;if(!s&&e>t||i&&n||!r)return 1;if(!i&&e=i.length?s:"desc"===i[n]?-s:s}return e.index-r.index})),n.map((function(e){return e.value}))}},17507:e=>{"use strict";e.exports=function e(t){if("number"==typeof t)return t;if("string"==typeof t)return parseFloat(t);if(Array.isArray(t))return t.map(e);throw new Error("The value should be a number, a parsable string or an array of those.")}},49228:(e,t,r)=>{"use strict";var i=r(44728);function n(e){return Object.keys(e).sort().reduce((function(t,r){return t[r]=e[r],t}),{})}var s={_getQueries:function(e,t){var r=[];return r.push({indexName:e,params:s._getHitsSearchParams(t)}),t.getRefinedDisjunctiveFacets().forEach((function(i){r.push({indexName:e,params:s._getDisjunctiveFacetSearchParams(t,i)})})),t.getRefinedHierarchicalFacets().forEach((function(i){var n=t.getHierarchicalFacetByName(i),a=t.getHierarchicalRefinement(i),c=t._getHierarchicalFacetSeparator(n);if(a.length>0&&a[0].split(c).length>1){var o=a[0].split(c).slice(0,-1).reduce((function(e,t,r){return e.concat({attribute:n.attributes[r],value:0===r?t:[e[e.length-1].value,t].join(c)})}),[]);o.forEach((function(i,a){var c=s._getDisjunctiveFacetSearchParams(t,i.attribute,0===a);function u(e){return n.attributes.some((function(t){return t===e.split(":")[0]}))}var h=(c.facetFilters||[]).reduce((function(e,t){if(Array.isArray(t)){var r=t.filter((function(e){return!u(e)}));r.length>0&&e.push(r)}return"string"!=typeof t||u(t)||e.push(t),e}),[]),l=o[a-1];a>0?c.facetFilters=h.concat(l.attribute+":"+l.value):h.length>0?c.facetFilters=h:delete c.facetFilters,r.push({indexName:e,params:c})}))}})),r},_getCompositionQueries:function(e){return[{compositionID:e.index,requestBody:{params:s._getCompositionHitsSearchParams(e)}}]},_getHitsSearchParams:function(e){var t=e.facets.concat(e.disjunctiveFacets).concat(s._getHitsHierarchicalFacetsAttributes(e)).sort(),r=s._getFacetFilters(e),a=s._getNumericFilters(e),c=s._getTagFilters(e),o={};return t.length>0&&(o.facets=t.indexOf("*")>-1?["*"]:t),c.length>0&&(o.tagFilters=c),r.length>0&&(o.facetFilters=r),a.length>0&&(o.numericFilters=a),n(i({},e.getQueryParams(),o))},_getCompositionHitsSearchParams:function(e){var t=e.facets.concat(e.disjunctiveFacets.map((function(t){return e.disjunctiveFacetsRefinements&&e.disjunctiveFacetsRefinements[t]&&e.disjunctiveFacetsRefinements[t].length>0?"disjunctive("+t+")":t}))).concat(s._getHitsHierarchicalFacetsAttributes(e)).sort(),r=s._getFacetFilters(e),a=s._getNumericFilters(e),c=s._getTagFilters(e),o={};t.length>0&&(o.facets=t.indexOf("*")>-1?["*"]:t),c.length>0&&(o.tagFilters=c),r.length>0&&(o.facetFilters=r),a.length>0&&(o.numericFilters=a);var u=e.getQueryParams();return delete u.highlightPreTag,delete u.highlightPostTag,delete u.index,n(i({},u,o))},_getDisjunctiveFacetSearchParams:function(e,t,r){var a=s._getFacetFilters(e,t,r),c=s._getNumericFilters(e,t),o=s._getTagFilters(e),u={hitsPerPage:0,page:0,analytics:!1,clickAnalytics:!1};o.length>0&&(u.tagFilters=o);var h=e.getHierarchicalFacetByName(t);return u.facets=h?s._getDisjunctiveHierarchicalFacetAttribute(e,h,r):t,c.length>0&&(u.numericFilters=c),a.length>0&&(u.facetFilters=a),n(i({},e.getQueryParams(),u))},_getNumericFilters:function(e,t){if(e.numericFilters)return e.numericFilters;var r=[];return Object.keys(e.numericRefinements).forEach((function(i){var n=e.numericRefinements[i]||{};Object.keys(n).forEach((function(e){var s=n[e]||[];t!==i&&s.forEach((function(t){if(Array.isArray(t)){var n=t.map((function(t){return i+e+t}));r.push(n)}else r.push(i+e+t)}))}))})),r},_getTagFilters:function(e){return e.tagFilters?e.tagFilters:e.tagRefinements.join(",")},_getFacetFilters:function(e,t,r){var i=[],n=e.facetsRefinements||{};Object.keys(n).sort().forEach((function(e){(n[e]||[]).slice().sort().forEach((function(t){i.push(e+":"+t)}))}));var s=e.facetsExcludes||{};Object.keys(s).sort().forEach((function(e){(s[e]||[]).sort().forEach((function(t){i.push(e+":-"+t)}))}));var a=e.disjunctiveFacetsRefinements||{};Object.keys(a).sort().forEach((function(e){var r=a[e]||[];if(e!==t&&r&&0!==r.length){var n=[];r.slice().sort().forEach((function(t){n.push(e+":"+t)})),i.push(n)}}));var c=e.hierarchicalFacetsRefinements||{};return Object.keys(c).sort().forEach((function(n){var s=(c[n]||[])[0];if(void 0!==s){var a,o,u=e.getHierarchicalFacetByName(n),h=e._getHierarchicalFacetSeparator(u),l=e._getHierarchicalRootPath(u);if(t===n){if(-1===s.indexOf(h)||!l&&!0===r||l&&l.split(h).length===s.split(h).length)return;l?(o=l.split(h).length-1,s=l):(o=s.split(h).length-2,s=s.slice(0,s.lastIndexOf(h))),a=u.attributes[o]}else o=s.split(h).length-1,a=u.attributes[o];a&&i.push([a+":"+s])}})),i},_getHitsHierarchicalFacetsAttributes:function(e){return e.hierarchicalFacets.reduce((function(t,r){var i=e.getHierarchicalRefinement(r.name)[0];if(!i)return t.push(r.attributes[0]),t;var n=e._getHierarchicalFacetSeparator(r),s=i.split(n).length,a=r.attributes.slice(0,s+1);return t.concat(a)}),[])},_getDisjunctiveHierarchicalFacetAttribute:function(e,t,r){var i=e._getHierarchicalFacetSeparator(t);if(!0===r){var n=e._getHierarchicalRootPath(t),s=0;return n&&(s=n.split(i).length),[t.attributes[s]]}var a=(e.getHierarchicalRefinement(t.name)[0]||"").split(i).length-1;return t.attributes.slice(0,a+1)},getSearchForFacetQuery:function(e,t,r,a){var c=a.isDisjunctiveFacet(e)?a.clearRefinements(e):a,o={facetQuery:t,facetName:e};return"number"==typeof r&&(o.maxFacetHits=r),n(i({},s._getHitsSearchParams(c),o))}};e.exports=s},72208:e=>{"use strict";e.exports=function(e){return null!==e&&/^[a-zA-Z0-9_-]{1,64}$/.test(e)}},57749:(e,t,r)=>{"use strict";var i=r(20849),n=r(38657);e.exports=function(e,t){var r={};return t.forEach((function(t){t.forEach((function(t,i){e.includes(t.objectID)||(r[t.objectID]?r[t.objectID]={indexSum:r[t.objectID].indexSum+i,count:r[t.objectID].count+1}:r[t.objectID]={indexSum:i,count:1})}))})),function(e,t){var r=[];return Object.keys(e).forEach((function(i){e[i].count<2&&(e[i].indexSum+=100),r.push({objectID:i,avgOfIndices:e[i].indexSum/t})})),r.sort((function(e,t){return e.avgOfIndices>t.avgOfIndices?1:-1}))}(r,t.length).reduce((function(e,r){var s=i(n(t),(function(e){return e.objectID===r.objectID}));return s?e.concat(s):e}),[])}},16938:e=>{"use strict";e.exports="3.26.1"},53465:(e,t,r)=>{"use strict";r.d(t,{W:()=>u});var i=r(96540),n=r(44586);const s=["zero","one","two","few","many","other"];function a(e){return s.filter((t=>e.includes(t)))}const c={locale:"en",pluralForms:a(["one","other"]),select:e=>1===e?"one":"other"};function o(){const{i18n:{currentLocale:e}}=(0,n.A)();return(0,i.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:a(t.resolvedOptions().pluralCategories),select:e=>t.select(e)}}(e)}catch(t){return console.error(`Failed to use Intl.PluralRules for locale "${e}".\nDocusaurus will fallback to the default (English) implementation.\nError: ${t.message}\n`),c}}),[e])}function u(){const e=o();return{selectMessage:(t,r)=>function(e,t,r){const i=e.split("|");if(1===i.length)return i[0];i.length>r.pluralForms.length&&console.error(`For locale=${r.locale}, a maximum of ${r.pluralForms.length} plural forms are expected (${r.pluralForms.join(",")}), but the message contains ${i.length}: ${e}`);const n=r.select(t),s=r.pluralForms.indexOf(n);return i[Math.min(s,i.length-1)]}(r,t,e)}}},80851:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>M});var i=r(96540),n=r(34164),s=r(74103),a=r.n(s);function c(e){let t;const r=`algolia-client-js-${e.key}`;function i(){return void 0===t&&(t=e.localStorage||window.localStorage),t}function n(){return JSON.parse(i().getItem(r)||"{}")}function s(e){i().setItem(r,JSON.stringify(e))}return{get:(t,r,i={miss:()=>Promise.resolve()})=>Promise.resolve().then((()=>(function(){const t=e.timeToLive?1e3*e.timeToLive:null,r=n(),i=Object.fromEntries(Object.entries(r).filter((([,e])=>void 0!==e.timestamp)));if(s(i),!t)return;s(Object.fromEntries(Object.entries(i).filter((([,e])=>{const r=(new Date).getTime();return!(e.timestamp+tPromise.all([e?e.value:r(),void 0!==e]))).then((([e,t])=>Promise.all([e,t||i.miss(e)]))).then((([e])=>e)),set:(e,t)=>Promise.resolve().then((()=>{const s=n();return s[JSON.stringify(e)]={timestamp:(new Date).getTime(),value:t},i().setItem(r,JSON.stringify(s)),t})),delete:e=>Promise.resolve().then((()=>{const t=n();delete t[JSON.stringify(e)],i().setItem(r,JSON.stringify(t))})),clear:()=>Promise.resolve().then((()=>{i().removeItem(r)}))}}function o(e){const t=[...e.caches],r=t.shift();return void 0===r?{get:(e,t,r={miss:()=>Promise.resolve()})=>t().then((e=>Promise.all([e,r.miss(e)]))).then((([e])=>e)),set:(e,t)=>Promise.resolve(t),delete:e=>Promise.resolve(),clear:()=>Promise.resolve()}:{get:(e,i,n={miss:()=>Promise.resolve()})=>r.get(e,i,n).catch((()=>o({caches:t}).get(e,i,n))),set:(e,i)=>r.set(e,i).catch((()=>o({caches:t}).set(e,i))),delete:e=>r.delete(e).catch((()=>o({caches:t}).delete(e))),clear:()=>r.clear().catch((()=>o({caches:t}).clear()))}}function u(e={serializable:!0}){let t={};return{get(r,i,n={miss:()=>Promise.resolve()}){const s=JSON.stringify(r);if(s in t)return Promise.resolve(e.serializable?JSON.parse(t[s]):t[s]);const a=i();return a.then((e=>n.miss(e))).then((()=>a))},set:(r,i)=>(t[JSON.stringify(r)]=e.serializable?JSON.stringify(i):i,Promise.resolve(i)),delete:e=>(delete t[JSON.stringify(e)],Promise.resolve()),clear:()=>(t={},Promise.resolve())}}function h({algoliaAgents:e,client:t,version:r}){const i=function(e){const t={value:`Algolia for JavaScript (${e})`,add(e){const r=`; ${e.segment}${void 0!==e.version?` (${e.version})`:""}`;return-1===t.value.indexOf(r)&&(t.value=`${t.value}${r}`),t}};return t}(r).add({segment:t,version:r});return e.forEach((e=>i.add(e))),i}var l=12e4;function f(e,t="up"){const r=Date.now();return{...e,status:t,lastUpdate:r,isUp:function(){return"up"===t||Date.now()-r>l},isTimedOut:function(){return"timed out"===t&&Date.now()-r<=l}}}var m=class extends Error{name="AlgoliaError";constructor(e,t){super(e),t&&(this.name=t)}},d=class extends m{stackTrace;constructor(e,t,r){super(e,r),this.stackTrace=t}},p=class extends d{constructor(e){super("Unreachable hosts - your application id may be incorrect. If the error persists, please visit our help center https://alg.li/support-unreachable-hosts or reach out to the Algolia Support team: https://alg.li/support",e,"RetryError")}},g=class extends d{status;constructor(e,t,r,i="ApiError"){super(e,r,i),this.status=t}},v=class extends m{response;constructor(e,t){super(e,"DeserializationError"),this.response=t}},y=class extends g{error;constructor(e,t,r,i){super(e,t,i,"DetailedApiError"),this.error=r}};function R(e,t,r){const i=(n=r,Object.keys(n).filter((e=>void 0!==n[e])).sort().map((e=>`${e}=${encodeURIComponent("[object Array]"===Object.prototype.toString.call(n[e])?n[e].join(","):n[e]).replace(/\+/g,"%20")}`)).join("&"));var n;let s=`${e.protocol}://${e.url}${e.port?`:${e.port}`:""}/${"/"===t.charAt(0)?t.substring(1):t}`;return i.length&&(s+=`?${i}`),s}function F(e){const t=e.request.headers["x-algolia-api-key"]?{"x-algolia-api-key":"*****"}:{};return{...e,request:{...e.request,headers:{...e.request.headers,...t}}}}function b({hosts:e,hostsCache:t,baseHeaders:r,logger:i,baseQueryParameters:n,algoliaAgent:s,timeouts:a,requester:c,requestsCache:o,responsesCache:u}){async function h(o,u,h=!0){const l=[],m=function(e,t){if("GET"===e.method||void 0===e.data&&void 0===t.data)return;const r=Array.isArray(e.data)?e.data:{...e.data,...t.data};return JSON.stringify(r)}(o,u),d=function(e,t,r){const i={Accept:"application/json",...e,...t,...r},n={};return Object.keys(i).forEach((e=>{const t=i[e];n[e.toLowerCase()]=t})),n}(r,o.headers,u.headers),b="GET"===o.method?{...o.data,...u.data}:{},_={...n,...o.queryParameters,...b};if(s.value&&(_["x-algolia-agent"]=s.value),u&&u.queryParameters)for(const e of Object.keys(u.queryParameters))u.queryParameters[e]&&"[object Object]"!==Object.prototype.toString.call(u.queryParameters[e])?_[e]=u.queryParameters[e].toString():_[e]=u.queryParameters[e];let j=0;const x=async(e,r)=>{const n=e.pop();if(void 0===n)throw new p(function(e){return e.map((e=>F(e)))}(l));const s={...a,...u.timeouts},b={data:m,headers:d,method:o.method,url:R(n,o.path,_),connectTimeout:r(j,s.connect),responseTimeout:r(j,h?s.read:s.write)},P=t=>{const r={request:b,response:t,host:n,triesLeft:e.length};return l.push(r),r},w=await c.send(b);if(function({isTimedOut:e,status:t}){return e||function({isTimedOut:e,status:t}){return!e&&0==~~t}({isTimedOut:e,status:t})||2!=~~(t/100)&&4!=~~(t/100)}(w)){const s=P(w);return w.isTimedOut&&j++,i.info("Retryable failure",F(s)),await t.set(n,f(n,w.isTimedOut?"timed out":"down")),x(e,r)}if(function({status:e}){return 2==~~(e/100)}(w))return function(e){try{return JSON.parse(e.content)}catch(t){throw new v(t.message,e)}}(w);throw P(w),function({content:e,status:t},r){try{const i=JSON.parse(e);return"error"in i?new y(i.message,t,i.error,r):new g(i.message,t,r)}catch{}return new g(e,t,r)}(w,l)},P=e.filter((e=>"readWrite"===e.accept||(h?"read"===e.accept:"write"===e.accept))),w=await async function(e){const r=await Promise.all(e.map((e=>t.get(e,(()=>Promise.resolve(f(e))))))),i=r.filter((e=>e.isUp())),n=r.filter((e=>e.isTimedOut())),s=[...i,...n];return{hosts:s.length>0?s:e,getTimeout:(e,t)=>(0===n.length&&0===e?1:n.length+3+e)*t}}(P);return x([...w.hosts].reverse(),w.getTimeout)}return{hostsCache:t,requester:c,timeouts:a,logger:i,algoliaAgent:s,baseHeaders:r,baseQueryParameters:n,hosts:e,request:function(e,t={}){const i=e.useReadTransporter||"GET"===e.method;if(!i)return h(e,t,i);const s=()=>h(e,t);if(!0!==(t.cacheable||e.cacheable))return s();const a={request:e,requestOptions:t,transporter:{queryParameters:n,headers:r}};return u.get(a,(()=>o.get(a,(()=>o.set(a,s()).then((e=>Promise.all([o.delete(a),e])),(e=>Promise.all([o.delete(a),Promise.reject(e)]))).then((([e,t])=>t))))),{miss:e=>u.set(a,e)})},requestsCache:o,responsesCache:u}}var _="5.44.0";function j(e){return[{url:`${e}-dsn.algolia.net`,accept:"read",protocol:"https"},{url:`${e}.algolia.net`,accept:"write",protocol:"https"}].concat(function(e){const t=e;for(let r=e.length-1;r>0;r--){const i=Math.floor(Math.random()*(r+1)),n=e[r];t[r]=e[i],t[i]=n}return t}([{url:`${e}-1.algolianet.com`,accept:"readWrite",protocol:"https"},{url:`${e}-2.algolianet.com`,accept:"readWrite",protocol:"https"},{url:`${e}-3.algolianet.com`,accept:"readWrite",protocol:"https"}]))}function x(e,t,r){if(!e||"string"!=typeof e)throw new Error("`appId` is missing.");if(!t||"string"!=typeof t)throw new Error("`apiKey` is missing.");return function({appId:e,apiKey:t,authMode:r,algoliaAgents:i,...n}){const s=function(e,t,r="WithinHeaders"){const i={"x-algolia-api-key":t,"x-algolia-application-id":e};return{headers:()=>"WithinHeaders"===r?i:{},queryParameters:()=>"WithinQueryParameters"===r?i:{}}}(e,t,r),a=b({hosts:j(e),...n,algoliaAgent:h({algoliaAgents:i,client:"Lite",version:_}),baseHeaders:{"content-type":"text/plain",...s.headers(),...n.baseHeaders},baseQueryParameters:{...s.queryParameters(),...n.baseQueryParameters}});return{transporter:a,appId:e,apiKey:t,clearCache:()=>Promise.all([a.requestsCache.clear(),a.responsesCache.clear()]).then((()=>{})),get _ua(){return a.algoliaAgent.value},addAlgoliaAgent(e,t){a.algoliaAgent.add({segment:e,version:t})},setClientApiKey({apiKey:e}){r&&"WithinHeaders"!==r?a.baseQueryParameters["x-algolia-api-key"]=e:a.baseHeaders["x-algolia-api-key"]=e},searchForHits(e,t){return this.search(e,t)},searchForFacets(e,t){return this.search(e,t)},customPost({path:e,parameters:t,body:r},i){if(!e)throw new Error("Parameter `path` is required when calling `customPost`.");const n={method:"POST",path:"/{path}".replace("{path}",e),queryParameters:t||{},headers:{},data:r||{}};return a.request(n,i)},getRecommendations(e,t){if(e&&Array.isArray(e)&&(e={requests:e}),!e)throw new Error("Parameter `getRecommendationsParams` is required when calling `getRecommendations`.");if(!e.requests)throw new Error("Parameter `getRecommendationsParams.requests` is required when calling `getRecommendations`.");const r={method:"POST",path:"/1/indexes/*/recommendations",queryParameters:{},headers:{},data:e,useReadTransporter:!0,cacheable:!0};return a.request(r,t)},search(e,t){if(e&&Array.isArray(e)){const t={requests:e.map((({params:e,...t})=>"facet"===t.type?{...t,...e,type:"facet"}:{...t,...e,facet:void 0,maxFacetHits:void 0,facetQuery:void 0}))};e=t}if(!e)throw new Error("Parameter `searchMethodParams` is required when calling `search`.");if(!e.requests)throw new Error("Parameter `searchMethodParams.requests` is required when calling `search`.");const r={method:"POST",path:"/1/indexes/*/queries",queryParameters:{},headers:{},data:e,useReadTransporter:!0,cacheable:!0};return a.request(r,t)}}}({appId:e,apiKey:t,timeouts:{connect:1e3,read:2e3,write:3e4},logger:{debug:(e,t)=>Promise.resolve(),info:(e,t)=>Promise.resolve(),error:(e,t)=>Promise.resolve()},requester:{send:function(e){return new Promise((t=>{let r=new XMLHttpRequest;r.open(e.method,e.url,!0),Object.keys(e.headers).forEach((t=>r.setRequestHeader(t,e.headers[t])));let i,n=(e,i)=>setTimeout((()=>{r.abort(),t({status:0,content:i,isTimedOut:!0})}),e),s=n(e.connectTimeout,"Connection timeout");r.onreadystatechange=()=>{r.readyState>r.OPENED&&void 0===i&&(clearTimeout(s),i=n(e.responseTimeout,"Socket timeout"))},r.onerror=()=>{0===r.status&&(clearTimeout(s),clearTimeout(i),t({content:r.responseText||"Network request failed",status:r.status,isTimedOut:!1}))},r.onload=()=>{clearTimeout(s),clearTimeout(i),t({content:r.responseText,status:r.status,isTimedOut:!1})},r.send(e.data)}))}},algoliaAgents:[{segment:"Browser"}],authMode:"WithinQueryParameters",responsesCache:u(),requestsCache:u({serializable:!1}),hostsCache:o({caches:[c({key:`${_}-${e}`}),u()]}),...r})}var P=r(38193),w=r(5260),E=r(28774),O=r(44070),A=r(53465),S=r(24255),H=r(89532),N=r(45500),T=r(21312),Q=r(44586),C=r(38126),I=r(51062),D=r(36882),k=r(51107);const q={searchQueryInput:"searchQueryInput_u2C7",searchVersionInput:"searchVersionInput_m0Ui",searchResultsColumn:"searchResultsColumn_JPFH",searchLogoColumn:"searchLogoColumn_rJIA",searchResultItem:"searchResultItem_Tv2o",searchResultItemHeading:"searchResultItemHeading_KbCB",searchResultItemPath:"searchResultItemPath_lhe1",searchResultItemSummary:"searchResultItemSummary_AEaO",searchQueryColumn:"searchQueryColumn_RTkw",searchVersionColumn:"searchVersionColumn_ypXd",loadingSpinner:"loadingSpinner_XVxU","loading-spin":"loading-spin_vzvp",loader:"loader_vvXV"};var L=r(74848);function V({docsSearchVersionsHelpers:e}){const t=Object.entries(e.allDocsData).filter((([,e])=>e.versions.length>1));return(0,L.jsx)("div",{className:(0,n.A)("col","col--3","padding-left--none",q.searchVersionColumn),children:t.map((([r,i])=>{const n=t.length>1?`${r}: `:"";return(0,L.jsx)("select",{onChange:t=>e.setSearchVersion(r,t.target.value),defaultValue:e.searchVersions[r],className:q.searchVersionInput,children:i.versions.map(((e,t)=>(0,L.jsx)("option",{label:`${n}${e.label}`,value:e.name},t)))},r)}))})}function $(){return(0,L.jsxs)("svg",{width:"80",height:"24","aria-label":"Algolia",role:"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 2196.2 500",style:{maxWidth:"150px"},children:[(0,L.jsx)("defs",{children:(0,L.jsx)("style",{children:".cls-1,.cls-2{fill:#003dff}.cls-2{fill-rule:evenodd}"})}),(0,L.jsx)("path",{className:"cls-2",d:"M1070.38,275.3V5.91c0-3.63-3.24-6.39-6.82-5.83l-50.46,7.94c-2.87,.45-4.99,2.93-4.99,5.84l.17,273.22c0,12.92,0,92.7,95.97,95.49,3.33,.1,6.09-2.58,6.09-5.91v-40.78c0-2.96-2.19-5.51-5.12-5.84-34.85-4.01-34.85-47.57-34.85-54.72Z"}),(0,L.jsx)("rect",{className:"cls-1",x:"1845.88",y:"104.73",width:"62.58",height:"277.9",rx:"5.9",ry:"5.9"}),(0,L.jsx)("path",{className:"cls-2",d:"M1851.78,71.38h50.77c3.26,0,5.9-2.64,5.9-5.9V5.9c0-3.62-3.24-6.39-6.82-5.83l-50.77,7.95c-2.87,.45-4.99,2.92-4.99,5.83v51.62c0,3.26,2.64,5.9,5.9,5.9Z"}),(0,L.jsx)("path",{className:"cls-2",d:"M1764.03,275.3V5.91c0-3.63-3.24-6.39-6.82-5.83l-50.46,7.94c-2.87,.45-4.99,2.93-4.99,5.84l.17,273.22c0,12.92,0,92.7,95.97,95.49,3.33,.1,6.09-2.58,6.09-5.91v-40.78c0-2.96-2.19-5.51-5.12-5.84-34.85-4.01-34.85-47.57-34.85-54.72Z"}),(0,L.jsx)("path",{className:"cls-2",d:"M1631.95,142.72c-11.14-12.25-24.83-21.65-40.78-28.31-15.92-6.53-33.26-9.85-52.07-9.85-18.78,0-36.15,3.17-51.92,9.85-15.59,6.66-29.29,16.05-40.76,28.31-11.47,12.23-20.38,26.87-26.76,44.03-6.38,17.17-9.24,37.37-9.24,58.36,0,20.99,3.19,36.87,9.55,54.21,6.38,17.32,15.14,32.11,26.45,44.36,11.29,12.23,24.83,21.62,40.6,28.46,15.77,6.83,40.12,10.33,52.4,10.48,12.25,0,36.78-3.82,52.7-10.48,15.92-6.68,29.46-16.23,40.78-28.46,11.29-12.25,20.05-27.04,26.25-44.36,6.22-17.34,9.24-33.22,9.24-54.21,0-20.99-3.34-41.19-10.03-58.36-6.38-17.17-15.14-31.8-26.43-44.03Zm-44.43,163.75c-11.47,15.75-27.56,23.7-48.09,23.7-20.55,0-36.63-7.8-48.1-23.7-11.47-15.75-17.21-34.01-17.21-61.2,0-26.89,5.59-49.14,17.06-64.87,11.45-15.75,27.54-23.52,48.07-23.52,20.55,0,36.63,7.78,48.09,23.52,11.47,15.57,17.36,37.98,17.36,64.87,0,27.19-5.72,45.3-17.19,61.2Z"}),(0,L.jsx)("path",{className:"cls-2",d:"M894.42,104.73h-49.33c-48.36,0-90.91,25.48-115.75,64.1-14.52,22.58-22.99,49.63-22.99,78.73,0,44.89,20.13,84.92,51.59,111.1,2.93,2.6,6.05,4.98,9.31,7.14,12.86,8.49,28.11,13.47,44.52,13.47,1.23,0,2.46-.03,3.68-.09,.36-.02,.71-.05,1.07-.07,.87-.05,1.75-.11,2.62-.2,.34-.03,.68-.08,1.02-.12,.91-.1,1.82-.21,2.73-.34,.21-.03,.42-.07,.63-.1,32.89-5.07,61.56-30.82,70.9-62.81v57.83c0,3.26,2.64,5.9,5.9,5.9h50.42c3.26,0,5.9-2.64,5.9-5.9V110.63c0-3.26-2.64-5.9-5.9-5.9h-56.32Zm0,206.92c-12.2,10.16-27.97,13.98-44.84,15.12-.16,.01-.33,.03-.49,.04-1.12,.07-2.24,.1-3.36,.1-42.24,0-77.12-35.89-77.12-79.37,0-10.25,1.96-20.01,5.42-28.98,11.22-29.12,38.77-49.74,71.06-49.74h49.33v142.83Z"}),(0,L.jsx)("path",{className:"cls-2",d:"M2133.97,104.73h-49.33c-48.36,0-90.91,25.48-115.75,64.1-14.52,22.58-22.99,49.63-22.99,78.73,0,44.89,20.13,84.92,51.59,111.1,2.93,2.6,6.05,4.98,9.31,7.14,12.86,8.49,28.11,13.47,44.52,13.47,1.23,0,2.46-.03,3.68-.09,.36-.02,.71-.05,1.07-.07,.87-.05,1.75-.11,2.62-.2,.34-.03,.68-.08,1.02-.12,.91-.1,1.82-.21,2.73-.34,.21-.03,.42-.07,.63-.1,32.89-5.07,61.56-30.82,70.9-62.81v57.83c0,3.26,2.64,5.9,5.9,5.9h50.42c3.26,0,5.9-2.64,5.9-5.9V110.63c0-3.26-2.64-5.9-5.9-5.9h-56.32Zm0,206.92c-12.2,10.16-27.97,13.98-44.84,15.12-.16,.01-.33,.03-.49,.04-1.12,.07-2.24,.1-3.36,.1-42.24,0-77.12-35.89-77.12-79.37,0-10.25,1.96-20.01,5.42-28.98,11.22-29.12,38.77-49.74,71.06-49.74h49.33v142.83Z"}),(0,L.jsx)("path",{className:"cls-2",d:"M1314.05,104.73h-49.33c-48.36,0-90.91,25.48-115.75,64.1-11.79,18.34-19.6,39.64-22.11,62.59-.58,5.3-.88,10.68-.88,16.14s.31,11.15,.93,16.59c4.28,38.09,23.14,71.61,50.66,94.52,2.93,2.6,6.05,4.98,9.31,7.14,12.86,8.49,28.11,13.47,44.52,13.47h0c17.99,0,34.61-5.93,48.16-15.97,16.29-11.58,28.88-28.54,34.48-47.75v50.26h-.11v11.08c0,21.84-5.71,38.27-17.34,49.36-11.61,11.08-31.04,16.63-58.25,16.63-11.12,0-28.79-.59-46.6-2.41-2.83-.29-5.46,1.5-6.27,4.22l-12.78,43.11c-1.02,3.46,1.27,7.02,4.83,7.53,21.52,3.08,42.52,4.68,54.65,4.68,48.91,0,85.16-10.75,108.89-32.21,21.48-19.41,33.15-48.89,35.2-88.52V110.63c0-3.26-2.64-5.9-5.9-5.9h-56.32Zm0,64.1s.65,139.13,0,143.36c-12.08,9.77-27.11,13.59-43.49,14.7-.16,.01-.33,.03-.49,.04-1.12,.07-2.24,.1-3.36,.1-1.32,0-2.63-.03-3.94-.1-40.41-2.11-74.52-37.26-74.52-79.38,0-10.25,1.96-20.01,5.42-28.98,11.22-29.12,38.77-49.74,71.06-49.74h49.33Z"}),(0,L.jsx)("path",{className:"cls-1",d:"M249.83,0C113.3,0,2,110.09,.03,246.16c-2,138.19,110.12,252.7,248.33,253.5,42.68,.25,83.79-10.19,120.3-30.03,3.56-1.93,4.11-6.83,1.08-9.51l-23.38-20.72c-4.75-4.21-11.51-5.4-17.36-2.92-25.48,10.84-53.17,16.38-81.71,16.03-111.68-1.37-201.91-94.29-200.13-205.96,1.76-110.26,92-199.41,202.67-199.41h202.69V407.41l-115-102.18c-3.72-3.31-9.42-2.66-12.42,1.31-18.46,24.44-48.53,39.64-81.93,37.34-46.33-3.2-83.87-40.5-87.34-86.81-4.15-55.24,39.63-101.52,94-101.52,49.18,0,89.68,37.85,93.91,85.95,.38,4.28,2.31,8.27,5.52,11.12l29.95,26.55c3.4,3.01,8.79,1.17,9.63-3.3,2.16-11.55,2.92-23.58,2.07-35.92-4.82-70.34-61.8-126.93-132.17-131.26-80.68-4.97-148.13,58.14-150.27,137.25-2.09,77.1,61.08,143.56,138.19,145.26,32.19,.71,62.03-9.41,86.14-26.95l150.26,133.2c6.44,5.71,16.61,1.14,16.61-7.47V9.48C499.66,4.25,495.42,0,490.18,0H249.83Z"})]})}function B(){const{i18n:{currentLocale:e}}=(0,Q.A)(),{algolia:{appId:t,apiKey:r,indexName:s,contextualSearch:c}}=(0,C.c)(),o=(0,I.C)(),u=function(){const{selectMessage:e}=(0,A.W)();return t=>e(t,(0,T.T)({id:"theme.SearchPage.documentsFound.plurals",description:'Pluralized label for "{count} documents found". Use as much plural forms (separated by "|") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)',message:"One document found|{count} documents found"},{count:t}))}(),h=function(){const e=(0,O.Gy)(),[t,r]=(0,i.useState)((()=>Object.entries(e).reduce(((e,[t,r])=>({...e,[t]:r.versions[0].name})),{}))),n=Object.values(e).some((e=>e.versions.length>1));return{allDocsData:e,versioningEnabled:n,searchVersions:t,setSearchVersion:(e,t)=>r((r=>({...r,[e]:t})))}}(),[l,f]=(0,S.b)(),m=function(e){return e?(0,T.T)({id:"theme.SearchPage.existingResultsTitle",message:'Search results for "{query}"',description:"The search page title for non-empty query"},{query:e}):(0,T.T)({id:"theme.SearchPage.emptyResultsTitle",message:"Search the documentation",description:"The search page title for empty query"})}(l),d={items:[],query:null,totalResults:null,totalPages:null,lastPage:null,hasMore:null,loading:null},[p,g]=(0,i.useReducer)(((e,t)=>{switch(t.type){case"reset":return d;case"loading":return{...e,loading:!0};case"update":return l!==t.value.query?e:{...t.value,items:0===t.value.lastPage?t.value.items:e.items.concat(t.value.items)};case"advance":{const t=e.totalPages>e.lastPage+1;return{...e,lastPage:t?e.lastPage+1:e.lastPage,hasMore:t}}default:return e}}),d),v=c?["language","docusaurus_tag"]:[],y=x(t,r),R=a()(y,s,{hitsPerPage:15,advancedSyntax:!0,disjunctiveFacets:v});R.on("result",(({results:{query:e,hits:t,page:r,nbHits:i,nbPages:n}})=>{if(""===e||!Array.isArray(t))return void g({type:"reset"});const s=e=>e.replace(/algolia-docsearch-suggestion--highlight/g,"search-result-match"),a=t.map((({url:e,_highlightResult:{hierarchy:t},_snippetResult:r={}})=>{const i=Object.keys(t).map((e=>s(t[e].value)));return{title:i.pop(),url:o(e),summary:r.content?`${s(r.content.value)}...`:"",breadcrumbs:i}}));g({type:"update",value:{items:a,query:e,totalResults:i,totalPages:n,lastPage:r,hasMore:n>r+1,loading:!1}})}));const[F,b]=(0,i.useState)(null),_=(0,i.useRef)(0),j=(0,i.useRef)(P.A.canUseIntersectionObserver&&new IntersectionObserver((e=>{const{isIntersecting:t,boundingClientRect:{y:r}}=e[0];t&&_.current>r&&g({type:"advance"}),_.current=r}),{threshold:1})),B=(0,H._q)(((t=0)=>{c&&(R.addDisjunctiveFacetRefinement("docusaurus_tag","default"),R.addDisjunctiveFacetRefinement("language",e),Object.entries(h.searchVersions).forEach((([e,t])=>{R.addDisjunctiveFacetRefinement("docusaurus_tag",`docs-${e}-${t}`)}))),R.setQuery(l).setPage(t).search()}));return(0,i.useEffect)((()=>{if(!F)return;const e=j.current;return e?(e.observe(F),()=>e.unobserve(F)):()=>!0}),[F]),(0,i.useEffect)((()=>{g({type:"reset"}),l&&(g({type:"loading"}),setTimeout((()=>{B()}),300))}),[l,h.searchVersions,B]),(0,i.useEffect)((()=>{p.lastPage&&0!==p.lastPage&&B(p.lastPage)}),[B,p.lastPage]),(0,L.jsxs)(D.A,{children:[(0,L.jsx)(N.be,{title:m}),(0,L.jsx)(w.A,{children:(0,L.jsx)("meta",{property:"robots",content:"noindex, follow"})}),(0,L.jsxs)("div",{className:"container margin-vert--lg",children:[(0,L.jsx)(k.A,{as:"h1",children:m}),(0,L.jsxs)("form",{className:"row",onSubmit:e=>e.preventDefault(),children:[(0,L.jsx)("div",{className:(0,n.A)("col",q.searchQueryColumn,{"col--9":h.versioningEnabled,"col--12":!h.versioningEnabled}),children:(0,L.jsx)("input",{type:"search",name:"q",className:q.searchQueryInput,placeholder:(0,T.T)({id:"theme.SearchPage.inputPlaceholder",message:"Type your search here",description:"The placeholder for search page input"}),"aria-label":(0,T.T)({id:"theme.SearchPage.inputLabel",message:"Search",description:"The ARIA label for search page input"}),onChange:e=>f(e.target.value),value:l,autoComplete:"off",autoFocus:!0})}),c&&h.versioningEnabled&&(0,L.jsx)(V,{docsSearchVersionsHelpers:h})]}),(0,L.jsxs)("div",{className:"row",children:[(0,L.jsx)("div",{className:(0,n.A)("col","col--8",q.searchResultsColumn),children:!!p.totalResults&&u(p.totalResults)}),(0,L.jsxs)("div",{className:(0,n.A)("col","col--4",q.searchLogoColumn),children:[(0,L.jsx)("span",{children:(0,T.T)({id:"theme.SearchPage.algoliaLabel",message:"Powered by",description:"The text explain that the search powered by Algolia"})}),(0,L.jsx)(E.A,{to:"https://www.algolia.com/","aria-label":(0,T.T)({id:"theme.SearchPage.algoliaLabel",message:"Powered by Algolia",description:"The description label for Algolia mention"}),children:(0,L.jsx)($,{})})]})]}),p.items.length>0?(0,L.jsx)("main",{children:p.items.map((({title:e,url:t,summary:r,breadcrumbs:i},s)=>(0,L.jsxs)("article",{className:q.searchResultItem,children:[(0,L.jsx)(k.A,{as:"h2",className:q.searchResultItemHeading,children:(0,L.jsx)(E.A,{to:t,dangerouslySetInnerHTML:{__html:e}})}),i.length>0&&(0,L.jsx)("nav",{"aria-label":"breadcrumbs",children:(0,L.jsx)("ul",{className:(0,n.A)("breadcrumbs",q.searchResultItemPath),children:i.map(((e,t)=>(0,L.jsx)("li",{className:"breadcrumbs__item",dangerouslySetInnerHTML:{__html:e}},t)))})}),r&&(0,L.jsx)("p",{className:q.searchResultItemSummary,dangerouslySetInnerHTML:{__html:r}})]},s)))}):[l&&!p.loading&&(0,L.jsx)("p",{children:(0,L.jsx)(T.A,{id:"theme.SearchPage.noResultsText",description:"The paragraph for empty search result",children:"No results were found"})},"no-results"),!!p.loading&&(0,L.jsx)("div",{className:q.loadingSpinner},"spinner")],p.hasMore&&(0,L.jsx)("div",{className:q.loader,ref:b,children:(0,L.jsx)(T.A,{id:"theme.SearchPage.fetchingNewResults",description:"The paragraph for fetching new search results",children:"Fetching new results..."})})]})]})}function M(){return(0,L.jsx)(N.e3,{className:"search-page-wrapper",children:(0,L.jsx)(B,{})})}}}]); \ No newline at end of file diff --git a/assets/js/1a800ef5.69fa6ccd.js b/assets/js/1a800ef5.69fa6ccd.js new file mode 100644 index 00000000..b5f9731c --- /dev/null +++ b/assets/js/1a800ef5.69fa6ccd.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4959],{62880:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>a,contentTitle:()=>d,default:()=>c,frontMatter:()=>r,metadata:()=>t,toc:()=>l});var t=i(61247),o=i(74848),s=i(28453);const r={slug:"release-3.10",title:"Editor Experience Release (November-2024, V-3.10) is now Live",description:"Phoenix Code 3.10 improves the editor UI with indent guide lines, better performance, and visual feedback. Updated extension developer docs.",authors:["arun","charly","devvaannsh","phoenixBot"],tags:["Editor Experience","UI Improvements","Windows","Linux","Mac","Release"]},d=void 0,a={authorsImageUrls:[void 0,void 0,void 0,void 0]},l=[{value:"Indent Guide Lines",id:"indent-guide-lines",level:2},{value:"Customizable Editor Line Height",id:"customizable-editor-line-height",level:2},{value:"Line:Col Indicator Relocation",id:"linecol-indicator-relocation",level:2},{value:"Performance Tweaks",id:"performance-tweaks",level:2},{value:"Stability Improvements",id:"stability-improvements",level:2},{value:"Documentation Updates",id:"documentation-updates",level:2},{value:"All changes",id:"all-changes",level:2},{value:"A Request from the Phoenix Team:",id:"a-request-from-the-phoenix-team",level:2}];function h(e){const n={a:"a",code:"code",h2:"h2",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(n.p,{children:["November release(3.10) of Phoenix Code is now available for download at ",(0,o.jsx)(n.a,{href:"https://phcode.io",children:"phcode.io"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["This month's core theme is ",(0,o.jsx)(n.code,{children:"Editor UI improvements"}),". We have fine-tuned the editing experience for better\nperformance and visual feedback.\nWe've also made substantial improvements to ",(0,o.jsx)(n.a,{href:"https://docs.phcode.dev",children:"docs.phcode.dev"})," to better support extension\ndevelopers."]}),"\n",(0,o.jsx)(n.h2,{id:"indent-guide-lines",children:"Indent Guide Lines"}),"\n",(0,o.jsxs)(n.p,{children:["Phoenix Code now supports indent guidelines to help you better visualize code structure. This feature can\nbe toggled via ",(0,o.jsx)(n.code,{children:"View > Indent Guide Lines"}),". ",(0,o.jsx)(n.a,{href:"https://docs.phcode.dev/docs/editing-text#indent-guide-lines",children:"Read more..."})]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{src:"https://github.com/user-attachments/assets/3d9d0c55-3c9e-4ab3-bbc0-53b563d19e39",alt:"image"})}),"\n",(0,o.jsx)(n.h2,{id:"customizable-editor-line-height",children:"Customizable Editor Line Height"}),"\n",(0,o.jsxs)(n.p,{children:["Theme Settings (",(0,o.jsx)(n.code,{children:"View > Themes..."}),") now has a new ",(0,o.jsx)(n.code,{children:"Line Height"})," slider. Adjust the editor line height between 1x and 3x to find your\nperfect balance of readability and screen real estate. ",(0,o.jsx)(n.a,{href:"https://docs.phcode.dev/docs/editing-text#line-height",children:"Read more..."})]}),"\n",(0,o.jsxs)(n.p,{children:["Also added a ",(0,o.jsx)(n.code,{children:"Get More..."})," button to the Themes dialog, linking directly to the themes section in Extension Manager."]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{src:"https://github.com/user-attachments/assets/97a46d9a-e971-401d-8a77-015afa6d5972",alt:"image"})}),"\n",(0,o.jsxs)(n.h2,{id:"linecol-indicator-relocation",children:[(0,o.jsx)(n.code,{children:"Line:Col"})," Indicator Relocation"]}),"\n",(0,o.jsxs)(n.p,{children:["Moved to the right of the status bar, accommodating future status bar extensions. Click on the ",(0,o.jsx)(n.code,{children:"line:col"})," section in the\nstatusbar to jump to specific lines."]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{src:"https://github.com/user-attachments/assets/540ea992-dda0-4a2c-8042-3c6228616636",alt:"image"})}),"\n",(0,o.jsx)(n.h2,{id:"performance-tweaks",children:"Performance Tweaks"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.a,{href:"https://github.com/phcode-dev/phoenix/pull/1943",children:"Major improvements to editor rendering"})," with better editor scroll\nconsistency and performance, especially on Safari and macOS."]}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"https://github.com/phcode-dev/phoenix/pull/1937",children:"Faster startup of extension manager."})}),"\n"]}),"\n",(0,o.jsx)(n.h2,{id:"stability-improvements",children:"Stability Improvements"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"https://github.com/phcode-dev/phoenix/pull/1889",children:"File recovery now does integrity checks for more reliable crash recovery."})}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"https://github.com/phcode-dev/phoenix/pull/1838",children:"Fixed Markdown image link handling within href tags."})}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"https://github.com/phcode-dev/phoenix/pull/1932",children:"Improved extension registry management to prevent quota issues on Mac/Linux."})}),"\n"]}),"\n",(0,o.jsx)(n.h2,{id:"documentation-updates",children:"Documentation Updates"}),"\n",(0,o.jsxs)(n.p,{children:["Our documentation site - ",(0,o.jsx)(n.a,{href:"https://docs.phcode.dev",children:"docs.phcode.dev"})," has received a major overhaul:"]}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:["Updated user guide: ",(0,o.jsx)(n.a,{href:"https://docs.phcode.dev/docs/intro",children:"docs.phcode.dev/docs/intro"})]}),"\n",(0,o.jsxs)(n.li,{children:["New API documentation for extension developers: ",(0,o.jsx)(n.a,{href:"https://docs.phcode.dev/api/getting-started",children:"docs.phcode.dev/api/getting-started"})]}),"\n"]}),"\n",(0,o.jsx)(n.h2,{id:"all-changes",children:"All changes"}),"\n",(0,o.jsxs)(n.p,{children:["Please see ",(0,o.jsx)(n.a,{href:"https://github.com/phcode-dev/phoenix/commits/main/?since=2024-09-11&until=2024-11-24",children:"this link"})," for a full list of changes\nin GitHub."]}),"\n",(0,o.jsx)(n.h2,{id:"a-request-from-the-phoenix-team",children:"A Request from the Phoenix Team:"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Share your feedback:"})," ",(0,o.jsx)(n.a,{href:"https://github.com/orgs/phcode-dev/discussions",children:"https://github.com/orgs/phcode-dev/discussions"})]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Spread the word"})," about Phoenix to friends and colleagues."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsxs)(n.a,{href:"https://github.com/sponsors/phcode-dev",children:[(0,o.jsx)(n.strong,{children:"Consider supporting us"})," on GitHub Sponsors"]}),". Every contribution helps us\nto keep improving Phoenix Code."]}),"\n"]}),"\n",(0,o.jsx)(n.p,{children:"With gratitude,"}),"\n",(0,o.jsx)(n.p,{children:"The Phoenix Team"})]})}function c(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(h,{...e})}):h(e)}},28453:(e,n,i)=>{i.d(n,{R:()=>r,x:()=>d});var t=i(96540);const o={},s=t.createContext(o);function r(e){const n=t.useContext(s);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),t.createElement(s.Provider,{value:n},e.children)}},61247:e=>{e.exports=JSON.parse('{"permalink":"/blog/release-3.10","editUrl":"https://github.com/phcode-dev/docs/blob/main/blog/2024-11-24-Release-3.10/index.md","source":"@site/blog/2024-11-24-Release-3.10/index.md","title":"Editor Experience Release (November-2024, V-3.10) is now Live","description":"Phoenix Code 3.10 improves the editor UI with indent guide lines, better performance, and visual feedback. Updated extension developer docs.","date":"2024-11-24T00:00:00.000Z","tags":[{"inline":true,"label":"Editor Experience","permalink":"/blog/tags/editor-experience"},{"inline":true,"label":"UI Improvements","permalink":"/blog/tags/ui-improvements"},{"inline":true,"label":"Windows","permalink":"/blog/tags/windows"},{"inline":true,"label":"Linux","permalink":"/blog/tags/linux"},{"inline":true,"label":"Mac","permalink":"/blog/tags/mac"},{"inline":true,"label":"Release","permalink":"/blog/tags/release"}],"readingTime":2.09,"hasTruncateMarker":false,"authors":[{"name":"Arun Bose","title":"Co-Founder, Phoenix Code","url":"https://github.com/abose","imageURL":"https://github.com/abose.png","key":"arun","page":null},{"name":"Charly P Abraham","title":"Co-Founder, Phoenix Code","url":"https://github.com/charlypa","imageURL":"https://github.com/charlypa.png","key":"charly","page":null},{"name":"Devansh Agarwal","title":"Founding Engineer, Phoenix Code","url":"https://github.com/devvaannsh","imageURL":"https://github.com/devvaannsh.png","key":"devvaannsh","page":null},{"name":"Phoenix Code Bot","title":"Our little elf who keeps the whole place together","url":"https://github.com/phoenixide","imageURL":"https://github.com/phoenixide.png","key":"phoenixBot","page":null}],"frontMatter":{"slug":"release-3.10","title":"Editor Experience Release (November-2024, V-3.10) is now Live","description":"Phoenix Code 3.10 improves the editor UI with indent guide lines, better performance, and visual feedback. Updated extension developer docs.","authors":["arun","charly","devvaannsh","phoenixBot"],"tags":["Editor Experience","UI Improvements","Windows","Linux","Mac","Release"]},"unlisted":false,"prevItem":{"title":"Phoenix Code: The Legacy of Brackets - Continued","permalink":"/blog/Blog-Legacy"},"nextItem":{"title":"HTML Workflows and stability Release (September-2024, V-3.9) is now Live","permalink":"/blog/release-3.9"}}')}}]); \ No newline at end of file diff --git a/assets/js/1a8b6db5.66375ab6.js b/assets/js/1a8b6db5.66375ab6.js new file mode 100644 index 00000000..c41a1966 --- /dev/null +++ b/assets/js/1a8b6db5.66375ab6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4466],{30839:a=>{a.exports=JSON.parse('{"tag":{"label":"Native Apps","permalink":"/blog/tags/native-apps","allTagsPath":"/blog/tags","count":3,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/native-apps","page":1,"postsPerPage":10,"totalPages":1,"totalCount":3,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]); \ No newline at end of file diff --git a/assets/js/1bf8a95b.856c2e4d.js b/assets/js/1bf8a95b.856c2e4d.js new file mode 100644 index 00000000..75b117fa --- /dev/null +++ b/assets/js/1bf8a95b.856c2e4d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[159],{11730:(e,r,n)=>{n.r(r),n.d(r,{assets:()=>d,contentTitle:()=>l,default:()=>a,frontMatter:()=>t,metadata:()=>s,toc:()=>o});const s=JSON.parse('{"id":"API-Reference/JSUtils/Preferences","title":"Preferences","description":"Import :","source":"@site/api/API-Reference/JSUtils/Preferences.md","sourceDirName":"API-Reference/JSUtils","slug":"/API-Reference/JSUtils/Preferences","permalink":"/api/API-Reference/JSUtils/Preferences","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"Add an indicator icon on the status bar","permalink":"/api/How-To/StatusBar"},"next":{"title":"ScopeManager","permalink":"/api/API-Reference/JSUtils/ScopeManager"}}');var c=n(74848),i=n(28453);const t={},l=void 0,d={},o=[{value:"Import :",id:"import-",level:3},{value:"Preferences",id:"preferences",level:2},{value:"new Preferences([prefs])",id:"new-preferencesprefs",level:3},{value:"preferences.getExcludedDirectories() \u21d2 RegExp",id:"preferencesgetexcludeddirectories--regexp",level:3},{value:"preferences.getExcludedFiles() \u21d2 RegExp",id:"preferencesgetexcludedfiles--regexp",level:3},{value:"preferences.getMaxFileCount() \u21d2 number",id:"preferencesgetmaxfilecount--number",level:3},{value:"preferences.getMaxFileSize() \u21d2 number",id:"preferencesgetmaxfilesize--number",level:3}];function x(e){const r={a:"a",br:"br",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.R)(),...e.components};return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(r.h3,{id:"import-",children:"Import :"}),"\n",(0,c.jsx)(r.pre,{children:(0,c.jsx)(r.code,{className:"language-js",children:'const Preferences = brackets.getModule("JSUtils/Preferences")\n'})}),"\n",(0,c.jsx)("a",{name:"Preferences"}),"\n",(0,c.jsx)(r.h2,{id:"preferences",children:"Preferences"}),"\n",(0,c.jsxs)(r.p,{children:[(0,c.jsx)(r.strong,{children:"Kind"}),": global class"]}),"\n",(0,c.jsxs)(r.ul,{children:["\n",(0,c.jsxs)(r.li,{children:[(0,c.jsx)(r.a,{href:"#Preferences",children:"Preferences"}),"\n",(0,c.jsxs)(r.ul,{children:["\n",(0,c.jsx)(r.li,{children:(0,c.jsx)(r.a,{href:"#new_Preferences_new",children:"new Preferences([prefs])"})}),"\n",(0,c.jsxs)(r.li,{children:[(0,c.jsx)(r.a,{href:"#Preferences+getExcludedDirectories",children:".getExcludedDirectories()"})," \u21d2 ",(0,c.jsx)("code",{children:"RegExp"})]}),"\n",(0,c.jsxs)(r.li,{children:[(0,c.jsx)(r.a,{href:"#Preferences+getExcludedFiles",children:".getExcludedFiles()"})," \u21d2 ",(0,c.jsx)("code",{children:"RegExp"})]}),"\n",(0,c.jsxs)(r.li,{children:[(0,c.jsx)(r.a,{href:"#Preferences+getMaxFileCount",children:".getMaxFileCount()"})," \u21d2 ",(0,c.jsx)("code",{children:"number"})]}),"\n",(0,c.jsxs)(r.li,{children:[(0,c.jsx)(r.a,{href:"#Preferences+getMaxFileSize",children:".getMaxFileSize()"})," \u21d2 ",(0,c.jsx)("code",{children:"number"})]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,c.jsx)("a",{name:"new_Preferences_new"}),"\n",(0,c.jsx)(r.h3,{id:"new-preferencesprefs",children:"new Preferences([prefs])"}),"\n",(0,c.jsx)(r.p,{children:"Constructor to create a default preference object."}),"\n",(0,c.jsxs)(r.table,{children:[(0,c.jsx)(r.thead,{children:(0,c.jsxs)(r.tr,{children:[(0,c.jsx)(r.th,{children:"Param"}),(0,c.jsx)(r.th,{children:"Type"}),(0,c.jsx)(r.th,{children:"Description"})]})}),(0,c.jsx)(r.tbody,{children:(0,c.jsxs)(r.tr,{children:[(0,c.jsx)(r.td,{children:"[prefs]"}),(0,c.jsx)(r.td,{children:(0,c.jsx)("code",{children:"Object"})}),(0,c.jsx)(r.td,{children:"preference object"})]})})]}),"\n",(0,c.jsx)("a",{name:"Preferences+getExcludedDirectories"}),"\n",(0,c.jsxs)(r.h3,{id:"preferencesgetexcludeddirectories--regexp",children:["preferences.getExcludedDirectories() \u21d2 ",(0,c.jsx)("code",{children:"RegExp"})]}),"\n",(0,c.jsx)(r.p,{children:"Get the regular expression for excluded directories."}),"\n",(0,c.jsxs)(r.p,{children:[(0,c.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,c.jsx)(r.a,{href:"#Preferences",children:(0,c.jsx)("code",{children:"Preferences"})}),(0,c.jsx)(r.br,{}),"\n",(0,c.jsx)(r.strong,{children:"Returns"}),": ",(0,c.jsx)("code",{children:"RegExp"})," - Regular expression matching the directories that should\nbe excluded. Returns null if no directories are excluded."]}),"\n",(0,c.jsx)("a",{name:"Preferences+getExcludedFiles"}),"\n",(0,c.jsxs)(r.h3,{id:"preferencesgetexcludedfiles--regexp",children:["preferences.getExcludedFiles() \u21d2 ",(0,c.jsx)("code",{children:"RegExp"})]}),"\n",(0,c.jsx)(r.p,{children:"Get the regular expression for excluded files."}),"\n",(0,c.jsxs)(r.p,{children:[(0,c.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,c.jsx)(r.a,{href:"#Preferences",children:(0,c.jsx)("code",{children:"Preferences"})}),(0,c.jsx)(r.br,{}),"\n",(0,c.jsx)(r.strong,{children:"Returns"}),": ",(0,c.jsx)("code",{children:"RegExp"})," - Regular expression matching the files that should\nbe excluded. Returns null if no files are excluded."]}),"\n",(0,c.jsx)("a",{name:"Preferences+getMaxFileCount"}),"\n",(0,c.jsxs)(r.h3,{id:"preferencesgetmaxfilecount--number",children:["preferences.getMaxFileCount() \u21d2 ",(0,c.jsx)("code",{children:"number"})]}),"\n",(0,c.jsx)(r.p,{children:"Get the maximum number of files that will be analyzed."}),"\n",(0,c.jsxs)(r.p,{children:[(0,c.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,c.jsx)(r.a,{href:"#Preferences",children:(0,c.jsx)("code",{children:"Preferences"})})]}),"\n",(0,c.jsx)("a",{name:"Preferences+getMaxFileSize"}),"\n",(0,c.jsxs)(r.h3,{id:"preferencesgetmaxfilesize--number",children:["preferences.getMaxFileSize() \u21d2 ",(0,c.jsx)("code",{children:"number"})]}),"\n",(0,c.jsx)(r.p,{children:"Get the maximum size of a file that will be analyzed. Files that are\nlarger will be ignored."}),"\n",(0,c.jsxs)(r.p,{children:[(0,c.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,c.jsx)(r.a,{href:"#Preferences",children:(0,c.jsx)("code",{children:"Preferences"})})]})]})}function a(e={}){const{wrapper:r}={...(0,i.R)(),...e.components};return r?(0,c.jsx)(r,{...e,children:(0,c.jsx)(x,{...e})}):x(e)}},28453:(e,r,n)=>{n.d(r,{R:()=>t,x:()=>l});var s=n(96540);const c={},i=s.createContext(c);function t(e){const r=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function l(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(c):e.components||c:t(e.components),s.createElement(i.Provider,{value:r},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/1c5dee23.8f2b1acc.js b/assets/js/1c5dee23.8f2b1acc.js new file mode 100644 index 00000000..efe521d8 --- /dev/null +++ b/assets/js/1c5dee23.8f2b1acc.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[539],{856:(e,s,t)=>{t.r(s),t.d(s,{assets:()=>h,contentTitle:()=>d,default:()=>x,frontMatter:()=>l,metadata:()=>i,toc:()=>c});const i=JSON.parse('{"id":"API-Reference/utils/StringUtils","title":"StringUtils","description":"Import :","source":"@site/api/API-Reference/utils/StringUtils.md","sourceDirName":"API-Reference/utils","slug":"/API-Reference/utils/StringUtils","permalink":"/api/API-Reference/utils/StringUtils","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"StringMatch","permalink":"/api/API-Reference/utils/StringMatch"},"next":{"title":"TokenUtils","permalink":"/api/API-Reference/utils/TokenUtils"}}');var r=t(74848),n=t(28453);const l={},d=void 0,h={},c=[{value:"Import :",id:"import-",level:3},{value:"utils/StringUtils",id:"utilsstringutils",level:2},{value:"utils/StringUtils.format(str, Arguments) \u21d2 string",id:"utilsstringutilsformatstr-arguments--string",level:3},{value:"utils/StringUtils.regexEscape(str) \u21d2 string",id:"utilsstringutilsregexescapestr--string",level:3},{value:"utils/StringUtils.jQueryIdEscape(str) \u21d2 string",id:"utilsstringutilsjqueryidescapestr--string",level:3},{value:"utils/StringUtils.getLines(text) \u21d2 Array.<string>",id:"utilsstringutilsgetlinestext--arraystring",level:3},{value:"utils/StringUtils.offsetToLineNum(textOrLines, offset) \u21d2 number",id:"utilsstringutilsoffsettolinenumtextorlines-offset--number",level:3},{value:"utils/StringUtils.startsWith(str, prefix) \u21d2 Boolean",id:"utilsstringutilsstartswithstr-prefix--boolean",level:3},{value:"utils/StringUtils.endsWith(str, suffix)",id:"utilsstringutilsendswithstr-suffix",level:3},{value:"utils/StringUtils.urlSort(a, b) \u21d2 number",id:"utilsstringutilsurlsorta-b--number",level:3},{value:"utils/StringUtils.breakableUrl(url) \u21d2 string",id:"utilsstringutilsbreakableurlurl--string",level:3},{value:"utils/StringUtils.prettyPrintBytes(bytes, precision) \u21d2 string",id:"utilsstringutilsprettyprintbytesbytes-precision--string",level:3},{value:"utils/StringUtils.truncate(str, len) \u21d2 string",id:"utilsstringutilstruncatestr-len--string",level:3},{value:"utils/StringUtils.hashCode(str) \u21d2 number",id:"utilsstringutilshashcodestr--number",level:3},{value:"utils/StringUtils.randomString(stringLength, [prefix]) \u21d2 string",id:"utilsstringutilsrandomstringstringlength-prefix--string",level:3},{value:"utils/StringUtils.isNumber(value) \u21d2 boolean",id:"utilsstringutilsisnumbervalue--boolean",level:3}];function o(e){const s={a:"a",br:"br",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,n.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(s.h3,{id:"import-",children:"Import :"}),"\n",(0,r.jsx)(s.pre,{children:(0,r.jsx)(s.code,{className:"language-js",children:'const StringUtils = brackets.getModule("utils/StringUtils")\n'})}),"\n",(0,r.jsx)("a",{name:"module_utils/StringUtils"}),"\n",(0,r.jsx)(s.h2,{id:"utilsstringutils",children:"utils/StringUtils"}),"\n",(0,r.jsx)(s.p,{children:"Utilities functions related to string manipulation"}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.a,{href:"#module_utils/StringUtils",children:"utils/StringUtils"}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.a,{href:"#module_utils/StringUtils..format",children:".format(str, Arguments)"})," \u21d2 ",(0,r.jsx)("code",{children:"string"})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.a,{href:"#module_utils/StringUtils..regexEscape",children:".regexEscape(str)"})," \u21d2 ",(0,r.jsx)("code",{children:"string"})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.a,{href:"#module_utils/StringUtils..jQueryIdEscape",children:".jQueryIdEscape(str)"})," \u21d2 ",(0,r.jsx)("code",{children:"string"})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.a,{href:"#module_utils/StringUtils..getLines",children:".getLines(text)"})," \u21d2 ",(0,r.jsx)("code",{children:"Array."})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.a,{href:"#module_utils/StringUtils..offsetToLineNum",children:".offsetToLineNum(textOrLines, offset)"})," \u21d2 ",(0,r.jsx)("code",{children:"number"})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.a,{href:"#module_utils/StringUtils..startsWith",children:".startsWith(str, prefix)"})," \u21d2 ",(0,r.jsx)("code",{children:"Boolean"})]}),"\n",(0,r.jsx)(s.li,{children:(0,r.jsx)(s.a,{href:"#module_utils/StringUtils..endsWith",children:".endsWith(str, suffix)"})}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.a,{href:"#module_utils/StringUtils..urlSort",children:".urlSort(a, b)"})," \u21d2 ",(0,r.jsx)("code",{children:"number"})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.a,{href:"#module_utils/StringUtils..breakableUrl",children:".breakableUrl(url)"})," \u21d2 ",(0,r.jsx)("code",{children:"string"})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.a,{href:"#module_utils/StringUtils..prettyPrintBytes",children:".prettyPrintBytes(bytes, precision)"})," \u21d2 ",(0,r.jsx)("code",{children:"string"})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.a,{href:"#module_utils/StringUtils..truncate",children:".truncate(str, len)"})," \u21d2 ",(0,r.jsx)("code",{children:"string"})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.a,{href:"#module_utils/StringUtils..hashCode",children:".hashCode(str)"})," \u21d2 ",(0,r.jsx)("code",{children:"number"})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.a,{href:"#module_utils/StringUtils..randomString",children:".randomString(stringLength, [prefix])"})," \u21d2 ",(0,r.jsx)("code",{children:"string"})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.a,{href:"#module_utils/StringUtils..isNumber",children:".isNumber(value)"})," \u21d2 ",(0,r.jsx)("code",{children:"boolean"})]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)("a",{name:"module_utils/StringUtils..format"}),"\n",(0,r.jsxs)(s.h3,{id:"utilsstringutilsformatstr-arguments--string",children:["utils/StringUtils.format(str, Arguments) \u21d2 ",(0,r.jsx)("code",{children:"string"})]}),"\n",(0,r.jsx)(s.p,{children:"Format a string by replacing placeholder symbols with passed in arguments."}),"\n",(0,r.jsxs)(s.p,{children:['Example: var formatted = StringUtils.format("Hello ',0,'", "World");']}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"Kind"}),": inner method of ",(0,r.jsx)(s.a,{href:"#module_utils/StringUtils",children:(0,r.jsx)("code",{children:"utils/StringUtils"})}),(0,r.jsx)(s.br,{}),"\n",(0,r.jsx)(s.strong,{children:"Returns"}),": ",(0,r.jsx)("code",{children:"string"})," - Formatted string"]}),"\n",(0,r.jsxs)(s.table,{children:[(0,r.jsx)(s.thead,{children:(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.th,{children:"Param"}),(0,r.jsx)(s.th,{children:"Type"}),(0,r.jsx)(s.th,{children:"Description"})]})}),(0,r.jsxs)(s.tbody,{children:[(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"str"}),(0,r.jsx)(s.td,{children:(0,r.jsx)("code",{children:"string"})}),(0,r.jsx)(s.td,{children:"The base string"})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"Arguments"}),(0,r.jsx)(s.td,{children:(0,r.jsx)("code",{children:"rest"})}),(0,r.jsx)(s.td,{children:"to be substituted into the string"})]})]})]}),"\n",(0,r.jsx)("a",{name:"module_utils/StringUtils..regexEscape"}),"\n",(0,r.jsxs)(s.h3,{id:"utilsstringutilsregexescapestr--string",children:["utils/StringUtils.regexEscape(str) \u21d2 ",(0,r.jsx)("code",{children:"string"})]}),"\n",(0,r.jsx)(s.p,{children:"Regex escape"}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"Kind"}),": inner method of ",(0,r.jsx)(s.a,{href:"#module_utils/StringUtils",children:(0,r.jsx)("code",{children:"utils/StringUtils"})})]}),"\n",(0,r.jsxs)(s.table,{children:[(0,r.jsx)(s.thead,{children:(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.th,{children:"Param"}),(0,r.jsx)(s.th,{children:"Type"})]})}),(0,r.jsx)(s.tbody,{children:(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"str"}),(0,r.jsx)(s.td,{children:(0,r.jsx)("code",{children:"string"})})]})})]}),"\n",(0,r.jsx)("a",{name:"module_utils/StringUtils..jQueryIdEscape"}),"\n",(0,r.jsxs)(s.h3,{id:"utilsstringutilsjqueryidescapestr--string",children:["utils/StringUtils.jQueryIdEscape(str) \u21d2 ",(0,r.jsx)("code",{children:"string"})]}),"\n",(0,r.jsx)(s.p,{children:'Periods (aka "dots") are allowed in HTML identifiers, but jQuery interprets\nthem as the start of a class selector, so they need to be escaped'}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"Kind"}),": inner method of ",(0,r.jsx)(s.a,{href:"#module_utils/StringUtils",children:(0,r.jsx)("code",{children:"utils/StringUtils"})})]}),"\n",(0,r.jsxs)(s.table,{children:[(0,r.jsx)(s.thead,{children:(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.th,{children:"Param"}),(0,r.jsx)(s.th,{children:"Type"})]})}),(0,r.jsx)(s.tbody,{children:(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"str"}),(0,r.jsx)(s.td,{children:(0,r.jsx)("code",{children:"string"})})]})})]}),"\n",(0,r.jsx)("a",{name:"module_utils/StringUtils..getLines"}),"\n",(0,r.jsxs)(s.h3,{id:"utilsstringutilsgetlinestext--arraystring",children:["utils/StringUtils.getLines(text) \u21d2 ",(0,r.jsx)("code",{children:"Array."})]}),"\n",(0,r.jsx)(s.p,{children:"Splits the text by new line characters and returns an array of lines"}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"Kind"}),": inner method of ",(0,r.jsx)(s.a,{href:"#module_utils/StringUtils",children:(0,r.jsx)("code",{children:"utils/StringUtils"})}),(0,r.jsx)(s.br,{}),"\n",(0,r.jsx)(s.strong,{children:"Returns"}),": ",(0,r.jsx)("code",{children:"Array."})," - lines"]}),"\n",(0,r.jsxs)(s.table,{children:[(0,r.jsx)(s.thead,{children:(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.th,{children:"Param"}),(0,r.jsx)(s.th,{children:"Type"})]})}),(0,r.jsx)(s.tbody,{children:(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"text"}),(0,r.jsx)(s.td,{children:(0,r.jsx)("code",{children:"string"})})]})})]}),"\n",(0,r.jsx)("a",{name:"module_utils/StringUtils..offsetToLineNum"}),"\n",(0,r.jsxs)(s.h3,{id:"utilsstringutilsoffsettolinenumtextorlines-offset--number",children:["utils/StringUtils.offsetToLineNum(textOrLines, offset) \u21d2 ",(0,r.jsx)("code",{children:"number"})]}),"\n",(0,r.jsx)(s.p,{children:"Returns a line number corresponding to an offset in some text. The text can\nbe specified as a single string or as an array of strings that correspond to\nthe lines of the string."}),"\n",(0,r.jsx)(s.p,{children:"Specify the text in lines when repeatedly calling the function on the same\ntext in a loop. Use getLines() to divide the text into lines, then repeatedly call\nthis function to compute a line number from the offset."}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"Kind"}),": inner method of ",(0,r.jsx)(s.a,{href:"#module_utils/StringUtils",children:(0,r.jsx)("code",{children:"utils/StringUtils"})}),(0,r.jsx)(s.br,{}),"\n",(0,r.jsx)(s.strong,{children:"Returns"}),": ",(0,r.jsx)("code",{children:"number"})," - line number"]}),"\n",(0,r.jsxs)(s.table,{children:[(0,r.jsx)(s.thead,{children:(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.th,{children:"Param"}),(0,r.jsx)(s.th,{children:"Type"}),(0,r.jsx)(s.th,{children:"Description"})]})}),(0,r.jsxs)(s.tbody,{children:[(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"textOrLines"}),(0,r.jsxs)(s.td,{children:[(0,r.jsx)("code",{children:"string"})," | ",(0,r.jsx)("code",{children:"Array."})]}),(0,r.jsx)(s.td,{children:"string or array of lines from which to compute the line number from the offset"})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"offset"}),(0,r.jsx)(s.td,{children:(0,r.jsx)("code",{children:"number"})}),(0,r.jsx)(s.td,{})]})]})]}),"\n",(0,r.jsx)("a",{name:"module_utils/StringUtils..startsWith"}),"\n",(0,r.jsxs)(s.h3,{id:"utilsstringutilsstartswithstr-prefix--boolean",children:["utils/StringUtils.startsWith(str, prefix) \u21d2 ",(0,r.jsx)("code",{children:"Boolean"})]}),"\n",(0,r.jsx)(s.p,{children:"Returns true if the given string starts with the given prefix."}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"Kind"}),": inner method of ",(0,r.jsx)(s.a,{href:"#module_utils/StringUtils",children:(0,r.jsx)("code",{children:"utils/StringUtils"})})]}),"\n",(0,r.jsxs)(s.table,{children:[(0,r.jsx)(s.thead,{children:(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.th,{children:"Param"}),(0,r.jsx)(s.th,{children:"Type"})]})}),(0,r.jsxs)(s.tbody,{children:[(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"str"}),(0,r.jsx)(s.td,{children:(0,r.jsx)("code",{children:"String"})})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"prefix"}),(0,r.jsx)(s.td,{children:(0,r.jsx)("code",{children:"String"})})]})]})]}),"\n",(0,r.jsx)("a",{name:"module_utils/StringUtils..endsWith"}),"\n",(0,r.jsx)(s.h3,{id:"utilsstringutilsendswithstr-suffix",children:"utils/StringUtils.endsWith(str, suffix)"}),"\n",(0,r.jsx)(s.p,{children:"Returns true if the given string ends with the given suffix."}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"Kind"}),": inner method of ",(0,r.jsx)(s.a,{href:"#module_utils/StringUtils",children:(0,r.jsx)("code",{children:"utils/StringUtils"})})]}),"\n",(0,r.jsxs)(s.table,{children:[(0,r.jsx)(s.thead,{children:(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.th,{children:"Param"}),(0,r.jsx)(s.th,{children:"Type"})]})}),(0,r.jsxs)(s.tbody,{children:[(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"str"}),(0,r.jsx)(s.td,{children:(0,r.jsx)("code",{children:"string"})})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"suffix"}),(0,r.jsx)(s.td,{children:(0,r.jsx)("code",{children:"string"})})]})]})]}),"\n",(0,r.jsx)("a",{name:"module_utils/StringUtils..urlSort"}),"\n",(0,r.jsxs)(s.h3,{id:"utilsstringutilsurlsorta-b--number",children:["utils/StringUtils.urlSort(a, b) \u21d2 ",(0,r.jsx)("code",{children:"number"})]}),"\n",(0,r.jsx)(s.p,{children:"sort two urls alphabetically\nensure folders appear before files on windows"}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"Kind"}),": inner method of ",(0,r.jsx)(s.a,{href:"#module_utils/StringUtils",children:(0,r.jsx)("code",{children:"utils/StringUtils"})})]}),"\n",(0,r.jsxs)(s.table,{children:[(0,r.jsx)(s.thead,{children:(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.th,{children:"Param"}),(0,r.jsx)(s.th,{children:"Type"})]})}),(0,r.jsxs)(s.tbody,{children:[(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"a"}),(0,r.jsx)(s.td,{children:(0,r.jsx)("code",{children:"string"})})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"b"}),(0,r.jsx)(s.td,{children:(0,r.jsx)("code",{children:"string"})})]})]})]}),"\n",(0,r.jsx)("a",{name:"module_utils/StringUtils..breakableUrl"}),"\n",(0,r.jsxs)(s.h3,{id:"utilsstringutilsbreakableurlurl--string",children:["utils/StringUtils.breakableUrl(url) \u21d2 ",(0,r.jsx)("code",{children:"string"})]}),"\n",(0,r.jsx)(s.p,{children:"Return an escaped path or URL string that can be broken near path separators."}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"Kind"}),": inner method of ",(0,r.jsx)(s.a,{href:"#module_utils/StringUtils",children:(0,r.jsx)("code",{children:"utils/StringUtils"})}),(0,r.jsx)(s.br,{}),"\n",(0,r.jsx)(s.strong,{children:"Returns"}),": ",(0,r.jsx)("code",{children:"string"})," - the formatted path or URL"]}),"\n",(0,r.jsxs)(s.table,{children:[(0,r.jsx)(s.thead,{children:(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.th,{children:"Param"}),(0,r.jsx)(s.th,{children:"Type"}),(0,r.jsx)(s.th,{children:"Description"})]})}),(0,r.jsx)(s.tbody,{children:(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"url"}),(0,r.jsx)(s.td,{children:(0,r.jsx)("code",{children:"string"})}),(0,r.jsx)(s.td,{children:"the path or URL to format"})]})})]}),"\n",(0,r.jsx)("a",{name:"module_utils/StringUtils..prettyPrintBytes"}),"\n",(0,r.jsxs)(s.h3,{id:"utilsstringutilsprettyprintbytesbytes-precision--string",children:["utils/StringUtils.prettyPrintBytes(bytes, precision) \u21d2 ",(0,r.jsx)("code",{children:"string"})]}),"\n",(0,r.jsx)(s.p,{children:"Converts number of bytes into human readable format.\nIf param bytes is negative it returns the number without any changes."}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"Kind"}),": inner method of ",(0,r.jsx)(s.a,{href:"#module_utils/StringUtils",children:(0,r.jsx)("code",{children:"utils/StringUtils"})})]}),"\n",(0,r.jsxs)(s.table,{children:[(0,r.jsx)(s.thead,{children:(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.th,{children:"Param"}),(0,r.jsx)(s.th,{children:"Type"}),(0,r.jsx)(s.th,{children:"Description"})]})}),(0,r.jsxs)(s.tbody,{children:[(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"bytes"}),(0,r.jsx)(s.td,{children:(0,r.jsx)("code",{children:"number"})}),(0,r.jsx)(s.td,{children:"Number of bytes to convert"})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"precision"}),(0,r.jsx)(s.td,{children:(0,r.jsx)("code",{children:"number"})}),(0,r.jsx)(s.td,{children:"Number of digits after the decimal separator"})]})]})]}),"\n",(0,r.jsx)("a",{name:"module_utils/StringUtils..truncate"}),"\n",(0,r.jsxs)(s.h3,{id:"utilsstringutilstruncatestr-len--string",children:["utils/StringUtils.truncate(str, len) \u21d2 ",(0,r.jsx)("code",{children:"string"})]}),"\n",(0,r.jsx)(s.p,{children:"Truncate text to specified length."}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"Kind"}),": inner method of ",(0,r.jsx)(s.a,{href:"#module_utils/StringUtils",children:(0,r.jsx)("code",{children:"utils/StringUtils"})}),(0,r.jsx)(s.br,{}),"\n",(0,r.jsx)(s.strong,{children:"Returns"}),": ",(0,r.jsx)("code",{children:"string"})," - Returns truncated text only if it was changed"]}),"\n",(0,r.jsxs)(s.table,{children:[(0,r.jsx)(s.thead,{children:(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.th,{children:"Param"}),(0,r.jsx)(s.th,{children:"Type"}),(0,r.jsx)(s.th,{children:"Description"})]})}),(0,r.jsxs)(s.tbody,{children:[(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"str"}),(0,r.jsx)(s.td,{children:(0,r.jsx)("code",{children:"string"})}),(0,r.jsx)(s.td,{children:"Text to be truncated."})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"len"}),(0,r.jsx)(s.td,{children:(0,r.jsx)("code",{children:"number"})}),(0,r.jsx)(s.td,{children:"Length to which text should be truncated"})]})]})]}),"\n",(0,r.jsx)("a",{name:"module_utils/StringUtils..hashCode"}),"\n",(0,r.jsxs)(s.h3,{id:"utilsstringutilshashcodestr--number",children:["utils/StringUtils.hashCode(str) \u21d2 ",(0,r.jsx)("code",{children:"number"})]}),"\n",(0,r.jsxs)(s.p,{children:["Computes a 32bit hash from the given string\nTaken from ",(0,r.jsx)(s.a,{href:"http://stackoverflow.com/questions/7616461/generate-a-hash-from-string-in-javascript-jquery",children:"http://stackoverflow.com/questions/7616461/generate-a-hash-from-string-in-javascript-jquery"})]}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"Kind"}),": inner method of ",(0,r.jsx)(s.a,{href:"#module_utils/StringUtils",children:(0,r.jsx)("code",{children:"utils/StringUtils"})}),(0,r.jsx)(s.br,{}),"\n",(0,r.jsx)(s.strong,{children:"Returns"}),": ",(0,r.jsx)("code",{children:"number"})," - The 32-bit hash",(0,r.jsx)(s.br,{}),"\n",(0,r.jsx)(s.strong,{children:"Cc"}),": wiki attribution: esmiralha"]}),"\n",(0,r.jsxs)(s.table,{children:[(0,r.jsx)(s.thead,{children:(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.th,{children:"Param"}),(0,r.jsx)(s.th,{children:"Type"}),(0,r.jsx)(s.th,{children:"Description"})]})}),(0,r.jsx)(s.tbody,{children:(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"str"}),(0,r.jsx)(s.td,{children:(0,r.jsx)("code",{children:"string"})}),(0,r.jsx)(s.td,{children:"The string for which hash is to be computed"})]})})]}),"\n",(0,r.jsx)("a",{name:"module_utils/StringUtils..randomString"}),"\n",(0,r.jsxs)(s.h3,{id:"utilsstringutilsrandomstringstringlength-prefix--string",children:["utils/StringUtils.randomString(stringLength, [prefix]) \u21d2 ",(0,r.jsx)("code",{children:"string"})]}),"\n",(0,r.jsx)(s.p,{children:"Generates a random nonce string of the specified length."}),"\n",(0,r.jsx)(s.p,{children:"!!!Should not be used for crypto secure workflows.!!!"}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"Kind"}),": inner method of ",(0,r.jsx)(s.a,{href:"#module_utils/StringUtils",children:(0,r.jsx)("code",{children:"utils/StringUtils"})}),(0,r.jsx)(s.br,{}),"\n",(0,r.jsx)(s.strong,{children:"Returns"}),": ",(0,r.jsx)("code",{children:"string"})," - - The randomly generated nonce."]}),"\n",(0,r.jsxs)(s.table,{children:[(0,r.jsx)(s.thead,{children:(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.th,{children:"Param"}),(0,r.jsx)(s.th,{children:"Type"}),(0,r.jsx)(s.th,{children:"Default"}),(0,r.jsx)(s.th,{children:"Description"})]})}),(0,r.jsxs)(s.tbody,{children:[(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"stringLength"}),(0,r.jsx)(s.td,{children:(0,r.jsx)("code",{children:"number"})}),(0,r.jsx)(s.td,{children:(0,r.jsx)("code",{children:"10"})}),(0,r.jsx)(s.td,{children:"The length of the nonce in bytes. default 10."})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"[prefix]"}),(0,r.jsx)(s.td,{children:(0,r.jsx)("code",{children:"string"})}),(0,r.jsx)(s.td,{}),(0,r.jsx)(s.td,{children:"optional prefix"})]})]})]}),"\n",(0,r.jsx)("a",{name:"module_utils/StringUtils..isNumber"}),"\n",(0,r.jsxs)(s.h3,{id:"utilsstringutilsisnumbervalue--boolean",children:["utils/StringUtils.isNumber(value) \u21d2 ",(0,r.jsx)("code",{children:"boolean"})]}),"\n",(0,r.jsx)(s.p,{children:"Check if value is a valid number"}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"Kind"}),": inner method of ",(0,r.jsx)(s.a,{href:"#module_utils/StringUtils",children:(0,r.jsx)("code",{children:"utils/StringUtils"})}),(0,r.jsx)(s.br,{}),"\n",(0,r.jsx)(s.strong,{children:"Returns"}),": ",(0,r.jsx)("code",{children:"boolean"})," - true if value is valid number, else false"]}),"\n",(0,r.jsxs)(s.table,{children:[(0,r.jsx)(s.thead,{children:(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.th,{children:"Param"}),(0,r.jsx)(s.th,{children:"Type"})]})}),(0,r.jsx)(s.tbody,{children:(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"value"}),(0,r.jsx)(s.td,{children:(0,r.jsx)("code",{children:"string"})})]})})]})]})}function x(e={}){const{wrapper:s}={...(0,n.R)(),...e.components};return s?(0,r.jsx)(s,{...e,children:(0,r.jsx)(o,{...e})}):o(e)}},28453:(e,s,t)=>{t.d(s,{R:()=>l,x:()=>d});var i=t(96540);const r={},n=i.createContext(r);function l(e){const s=i.useContext(n);return i.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function d(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:l(e.components),i.createElement(n.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/1d15fb5d.6ff82173.js b/assets/js/1d15fb5d.6ff82173.js new file mode 100644 index 00000000..08c7d7ea --- /dev/null +++ b/assets/js/1d15fb5d.6ff82173.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4009],{58837:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>d,default:()=>h,frontMatter:()=>l,metadata:()=>i,toc:()=>r});const i=JSON.parse('{"id":"debugging-extensions","title":"Debugging Extensions","description":"The Debug menu provides several options for extension development.","source":"@site/api/05-debugging-extensions.md","sourceDirName":".","slug":"/debugging-extensions","permalink":"/api/debugging-extensions","draft":false,"unlisted":false,"tags":[],"version":"current","sidebarPosition":5,"frontMatter":{"title":"Debugging Extensions"},"sidebar":"tutorialSidebar","previous":{"title":"Use node.js from your extension","permalink":"/api/creating-node-extensions"},"next":{"title":"Publishing Themes & Extensions","permalink":"/api/publishing-extensions"}}');var o=s(74848),t=s(28453);const l={title:"Debugging Extensions"},d=void 0,c={},r=[{value:"Phoenix Code Developer Tools",id:"phoenix-code-developer-tools",level:2},{value:"Phoenix Code Diagnostic Tools",id:"phoenix-code-diagnostic-tools",level:2},{value:"Available Diagnostic Tools",id:"available-diagnostic-tools",level:3},{value:"FAQs",id:"faqs",level:2}];function a(e){const n={code:"code",h2:"h2",h3:"h3",img:"img",li:"li",ol:"ol",p:"p",ul:"ul",...(0,t.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.p,{children:"The Debug menu provides several options for extension development."}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"Debug Menu",src:s(24367).A+"",title:"Debug Menu",width:"497",height:"436"})}),"\n",(0,o.jsx)(n.h2,{id:"phoenix-code-developer-tools",children:"Phoenix Code Developer Tools"}),"\n",(0,o.jsxs)(n.p,{children:["The ",(0,o.jsx)(n.code,{children:"Phoenix Code Developer Tools"})," option (shortcut: F12) opens up the DevTools. Use this to inspect the DOM, preview logs and debug scripts."]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"Phoenix Code Developer Tools",src:s(50321).A+"",title:"Phoenix Code Developer Tools",width:"1919",height:"1097"})}),"\n",(0,o.jsx)(n.h2,{id:"phoenix-code-diagnostic-tools",children:"Phoenix Code Diagnostic Tools"}),"\n",(0,o.jsxs)(n.p,{children:["To open Phoenix Code Diagnostic tools, click on the ",(0,o.jsx)(n.code,{children:"Debug"})," menu on the menu bar and navigate to the ",(0,o.jsx)(n.code,{children:"Phoenix Code Diagnostic Tools"})," option. This section provides several tools for debugging purposes."]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{alt:"Phoenix Code Diagnostic Tools",src:s(9143).A+"",title:"Phoenix Code Diagnostic Tools",width:"1185",height:"997"})}),"\n",(0,o.jsx)(n.h3,{id:"available-diagnostic-tools",children:"Available Diagnostic Tools"}),"\n",(0,o.jsxs)(n.ol,{children:["\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.code,{children:"Run Phoenix Code Tests"}),"\nExecutes built-in tests to verify the functionality of Phoenix Code."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.code,{children:"Build Editor Tests"}),"\nBuilds and runs tests specifically for the editor environment."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.code,{children:"Enable Detailed Logs"}),"\nActivates verbose logging for better insight into extension behavior. Use this to identify errors or unexpected behaviors during development."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.code,{children:"Enable PhNode Inspector"}),"\nLaunches the PhNode inspector, allowing in-depth inspection of the extension runtime environment."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.code,{children:"How to Inspect PhNode"}),"\nProvides a guide to effectively use the PhNode Inspector.\n",(0,o.jsx)(n.img,{alt:"Inspect Phnode",src:s(9001).A+"",title:"Inspect Phnode",width:"1533",height:"676"})]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.code,{children:"Live Preview Logs"}),"\nDisplays real-time logs for active live previews, helping debug changes dynamically."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.code,{children:"Show Performance Data"}),"\nGenerates performance metrics to identify bottlenecks or performance issues within the extension."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.code,{children:"Open Virtual File System"}),"\nOpens and inspects the virtual file system used by Phoenix Code."]}),"\n"]}),"\n"]}),"\n",(0,o.jsx)(n.h2,{id:"faqs",children:"FAQs"}),"\n",(0,o.jsx)(n.p,{children:"Q. Why is console.log not displaying?"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:"By default, console logs are disabled. To enable them, click on Enable Detailed Logs under Phoenix Code Diagnostic Tools."}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(a,{...e})}):a(e)}},24367:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/debug-menu-7e3985c7795c1611a028d64bfcf78d1b.png"},50321:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/dev-tools-fa3423a19be0adb8f15e7a86fe980484.png"},9143:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/diagnostic-tools-d4d75e4236de3d3d8ae52cfe5f76fd37.png"},9001:(e,n,s)=>{s.d(n,{A:()=>i});const i=s.p+"assets/images/inspect-phnode-63ccd0f9e855fff8702bdaff5d26f029.png"},28453:(e,n,s)=>{s.d(n,{R:()=>l,x:()=>d});var i=s(96540);const o={},t=i.createContext(o);function l(e){const n=i.useContext(t);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:l(e.components),i.createElement(t.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/1d9cbd01.38fee5ec.js b/assets/js/1d9cbd01.38fee5ec.js new file mode 100644 index 00000000..fa5b5229 --- /dev/null +++ b/assets/js/1d9cbd01.38fee5ec.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7371],{77556:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>c,default:()=>x,frontMatter:()=>a,metadata:()=>i,toc:()=>o});const i=JSON.parse('{"id":"API-Reference/utils/ExtensionInterface","title":"ExtensionInterface","description":"Import :","source":"@site/api/API-Reference/utils/ExtensionInterface.md","sourceDirName":"API-Reference/utils","slug":"/API-Reference/utils/ExtensionInterface","permalink":"/api/API-Reference/utils/ExtensionInterface","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"EventManager","permalink":"/api/API-Reference/utils/EventManager"},"next":{"title":"ExtensionLoader","permalink":"/api/API-Reference/utils/ExtensionLoader"}}');var s=t(74848),r=t(28453);const a={},c=void 0,l={},o=[{value:"Import :",id:"import-",level:3},{value:"utils/ExtensionInterface",id:"utilsextensioninterface",level:2},{value:"Usage",id:"usage",level:2},{value:"utils/ExtensionInterface.EVENT_EXTENSION_INTERFACE_REGISTERED : string",id:"utilsextensioninterfaceevent_extension_interface_registered--string",level:3},{value:"utils/ExtensionInterface.registerExtensionInterface(extensionInterfaceName, interfaceObject) : function",id:"utilsextensioninterfaceregisterextensioninterfaceextensioninterfacename-interfaceobject--function",level:3},{value:"utils/ExtensionInterface.isExistsExtensionInterface(extensionInterfaceName) \u21d2 boolean",id:"utilsextensioninterfaceisexistsextensioninterfaceextensioninterfacename--boolean",level:3},{value:"utils/ExtensionInterface.waitAndGetExtensionInterface(extensionInterfaceName) \u21d2 Promise",id:"utilsextensioninterfacewaitandgetextensioninterfaceextensioninterfacename--promise",level:3}];function d(e){const n={a:"a",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,r.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h3,{id:"import-",children:"Import :"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-js",children:'const ExtensionInterface = brackets.getModule("utils/ExtensionInterface")\n'})}),"\n",(0,s.jsx)("a",{name:"module_utils/ExtensionInterface"}),"\n",(0,s.jsx)(n.h2,{id:"utilsextensioninterface",children:"utils/ExtensionInterface"}),"\n",(0,s.jsxs)(n.p,{children:["ExtensionInterface defines utility methods for communicating between extensions safely.\nA global ",(0,s.jsx)(n.code,{children:"window.ExtensionInterface"})," object is made available in phoenix that can be called anytime after AppStart."]}),"\n",(0,s.jsx)(n.h2,{id:"usage",children:"Usage"}),"\n",(0,s.jsxs)(n.p,{children:["For Eg. You may have two extensions installed say ",(0,s.jsx)(n.code,{children:"angular"})," extension which has to call functions made available by\n",(0,s.jsx)(n.code,{children:"angular-cli"})," Extension."]}),"\n",(0,s.jsxs)(n.p,{children:["For Making this possible, the ",(0,s.jsx)(n.code,{children:"angular-cli"})," extension makes a named interface available with the ExtensionInterface\nmodule and ",(0,s.jsx)(n.code,{children:"angular"})," extension can get hold of the interface as and when the extension gets loaded."]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Example"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-js",children:'// in angular-cli extension, make a file say cli-interface.js module within the extension, do the following:\nconst ExtensionInterface = brackets.getModule("utils/ExtensionInterface"),\n// You can replace exports with any object you want to expose outside the extension really.\nExtensionInterface.registerExtensionInterface("angularCli", exports);\n'})}),"\n",(0,s.jsxs)(n.p,{children:["Once the interface is registered, the angular extension can get hold of the interface with the following code\n(inside or outside the extension) by using:\n",(0,s.jsx)(n.strong,{children:"Example"})]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-js",children:'let angularCli;\nExtensionInterface.waitAndGetExtensionInterface("angularCli").then(interfaceObj=> angularCli = interfaceObj);\nif(angularCli){ // check if angular cli is avilable\nangularCli.callSomeFunction();\n}\n'})}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Note"})," that the ",(0,s.jsx)(n.code,{children:"angularCli"})," interface is async populated as and when the cli extension is loaded and the\ninterface made available."]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"NBB:"})," Do Not use ",(0,s.jsx)(n.code,{children:"await waitAndGetExtensionInterface"})," on tol level require as the module loading might fail."]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"#module_utils/ExtensionInterface",children:"utils/ExtensionInterface"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"#module_utils/ExtensionInterface..EVENT_EXTENSION_INTERFACE_REGISTERED",children:".EVENT_EXTENSION_INTERFACE_REGISTERED"})," : ",(0,s.jsx)("code",{children:"string"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"#module_utils/ExtensionInterface..registerExtensionInterface",children:".registerExtensionInterface(extensionInterfaceName, interfaceObject)"})," : ",(0,s.jsx)("code",{children:"function"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"#module_utils/ExtensionInterface..isExistsExtensionInterface",children:".isExistsExtensionInterface(extensionInterfaceName)"})," \u21d2 ",(0,s.jsx)("code",{children:"boolean"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"#module_utils/ExtensionInterface..waitAndGetExtensionInterface",children:".waitAndGetExtensionInterface(extensionInterfaceName)"})," \u21d2 ",(0,s.jsx)("code",{children:"Promise"})]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)("a",{name:"module_utils/ExtensionInterface..EVENT_EXTENSION_INTERFACE_REGISTERED"}),"\n",(0,s.jsxs)(n.h3,{id:"utilsextensioninterfaceevent_extension_interface_registered--string",children:["utils/ExtensionInterface.EVENT_EXTENSION_INTERFACE_REGISTERED : ",(0,s.jsx)("code",{children:"string"})]}),"\n",(0,s.jsx)(n.p,{children:"Extension interface registered event"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": inner constant of ",(0,s.jsx)(n.a,{href:"#module_utils/ExtensionInterface",children:(0,s.jsx)("code",{children:"utils/ExtensionInterface"})})]}),"\n",(0,s.jsx)("a",{name:"module_utils/ExtensionInterface..registerExtensionInterface"}),"\n",(0,s.jsxs)(n.h3,{id:"utilsextensioninterfaceregisterextensioninterfaceextensioninterfacename-interfaceobject--function",children:["utils/ExtensionInterface.registerExtensionInterface(extensionInterfaceName, interfaceObject) : ",(0,s.jsx)("code",{children:"function"})]}),"\n",(0,s.jsx)(n.p,{children:"Registers a named extension interface. Will overwrite if an interface of the same name is already present."}),"\n",(0,s.jsxs)(n.p,{children:["To register an interface ",(0,s.jsx)(n.code,{children:"angularCli"}),'\nExtensionInterface.registerExtensionInterface("angularCli", exports);']}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,s.jsx)(n.a,{href:"#module_utils/ExtensionInterface",children:(0,s.jsx)("code",{children:"utils/ExtensionInterface"})})]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"extensionInterfaceName"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"interfaceObject"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"Object"})})]})]})]}),"\n",(0,s.jsx)("a",{name:"module_utils/ExtensionInterface..isExistsExtensionInterface"}),"\n",(0,s.jsxs)(n.h3,{id:"utilsextensioninterfaceisexistsextensioninterfaceextensioninterfacename--boolean",children:["utils/ExtensionInterface.isExistsExtensionInterface(extensionInterfaceName) \u21d2 ",(0,s.jsx)("code",{children:"boolean"})]}),"\n",(0,s.jsx)(n.p,{children:"Returns true is an interface of the given name exists."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,s.jsx)(n.a,{href:"#module_utils/ExtensionInterface",children:(0,s.jsx)("code",{children:"utils/ExtensionInterface"})})]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"extensionInterfaceName"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})})]})})]}),"\n",(0,s.jsx)("a",{name:"module_utils/ExtensionInterface..waitAndGetExtensionInterface"}),"\n",(0,s.jsxs)(n.h3,{id:"utilsextensioninterfacewaitandgetextensioninterfaceextensioninterfacename--promise",children:["utils/ExtensionInterface.waitAndGetExtensionInterface(extensionInterfaceName) \u21d2 ",(0,s.jsx)("code",{children:"Promise"})]}),"\n",(0,s.jsx)(n.p,{children:"Returns a promise that gets resolved only when an ExtensionInterface of the given name is registered. Use this\ngetter to get hold of extensions interface predictably."}),"\n",(0,s.jsxs)(n.p,{children:["To get a registered interface ",(0,s.jsx)(n.code,{children:"angularCli"})]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-js",children:'let angularCli;\nExtensionInterface.waitAndGetExtensionInterface("angularCli").then(interfaceObj=> angularCli = interfaceObj);\nif(angularCli){ // check if angular cli is avilable\nangularCli.callSomeFunction();\n}\n'})}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,s.jsx)(n.a,{href:"#module_utils/ExtensionInterface",children:(0,s.jsx)("code",{children:"utils/ExtensionInterface"})})]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsx)(n.tr,{children:(0,s.jsx)(n.th,{children:"Param"})})}),(0,s.jsx)(n.tbody,{children:(0,s.jsx)(n.tr,{children:(0,s.jsx)(n.td,{children:"extensionInterfaceName"})})})]})]})}function x(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},28453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>c});var i=t(96540);const s={},r=i.createContext(s);function a(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:a(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/1d9ed175.26dc880f.js b/assets/js/1d9ed175.26dc880f.js new file mode 100644 index 00000000..c0287ecd --- /dev/null +++ b/assets/js/1d9ed175.26dc880f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4023],{80173:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>d,contentTitle:()=>a,default:()=>l,frontMatter:()=>s,metadata:()=>n,toc:()=>h});var n=o(84446),i=o(74848),r=o(28453);const s={slug:"Blog-Legacy",title:"Phoenix Code: The Legacy of Brackets - Continued",description:"The story of Brackets \u2014 from its birth at Adobe to Phoenix Code. How a community kept the spirit of Brackets alive and built its future.",authors:["arun","charly"],tags:["Brackets","Continued","Phoenix Code","History"]},a=void 0,d={authorsImageUrls:[void 0,void 0]},h=[{value:"Brackets 1.0 - The Beginning",id:"brackets-10---the-beginning",level:2},{value:"Brackets 2.0 - The Brackets Open Source Community is Born",id:"brackets-20---the-brackets-open-source-community-is-born",level:2},{value:"Phoenix Code - 3.0, The Next Generation of Brackets",id:"phoenix-code---30-the-next-generation-of-brackets",level:2},{value:"Phoenix Code - 4.0, Present & Future",id:"phoenix-code---40-present--future",level:2}];function c(e){const t={a:"a",em:"em",h2:"h2",p:"p",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.p,{children:"Some stories refuse to end because of the people who believe in them. Brackets was one such story. Born at Adobe,\nit wasn\u2019t just a code editor; it was a vision to bridge the gap between designers and developers on\nhow we build for the web. But when its creators moved on, the future of Brackets seemed uncertain."}),"\n",(0,i.jsx)(t.p,{children:"Yet, Brackets lived on. Too many people loved it, relied on it, and believed in its potential. From that\npassion, Phoenix Code was born\u2014not as a replacement, but as a continuation of everything Brackets stood for.\nJoin us as we trace this journey from the birth of Brackets to the rise of Phoenix Code\u2014and discover how a\ncommunity\u2019s dedication kept the spirit of Brackets alive."}),"\n",(0,i.jsx)(t.h2,{id:"brackets-10---the-beginning",children:"Brackets 1.0 - The Beginning"}),"\n",(0,i.jsx)(t.p,{children:"Brackets 1.0 was released 10 years ago at Adobe, on the 4th of November 2014. At the time, Atom from GitHub was\nthe only peer editor built on the same web-based architecture as Brackets. The web was a very different place then.\nAdobe was preparing for a post-Flash world (Read: Thoughts on Flash - an open letter by Steve Jobs, April 2010).\nJust a month earlier, in October 2014, HTML5 had become a W3C Recommendation."}),"\n",(0,i.jsx)(t.p,{children:"Brackets was born as an editor built on web standards, designed for building the web\u2014a window into the future\nfrom Adobe. Adobe was mostly right in this vision. Visual Studio Code (VSCode), built on similar web technologies,\nhas since risen to dominate the landscape of code editors."}),"\n",(0,i.jsx)(t.p,{children:"Brackets was created to serve as a bridge between Designer and Developer workflows before the time of Figma and XD.\nHowever, Adobe was primarily about design tools. As a free developer tool, Brackets was never able to find a place\namong its design-focused peers."}),"\n",(0,i.jsx)(t.h2,{id:"brackets-20---the-brackets-open-source-community-is-born",children:"Brackets 2.0 - The Brackets Open Source Community is Born"}),"\n",(0,i.jsxs)(t.p,{children:["In January 2022, Adobe ",(0,i.jsx)(t.a,{href:"https://x.com/brackets/status/1480581149604782080",children:"transitioned the development of Brackets"})," to the newly formed Brackets Community.\nVersion 2.0 focused on establishing an independent foothold to continue Brackets' development."]}),"\n",(0,i.jsx)(t.p,{children:"We kick-started the Phoenix Code project as we recognized the need to address nearly three years of\ndevelopment backlog. This laid the groundwork for the next generation of Brackets."}),"\n",(0,i.jsx)(t.h2,{id:"phoenix-code---30-the-next-generation-of-brackets",children:"Phoenix Code - 3.0, The Next Generation of Brackets"}),"\n",(0,i.jsx)(t.p,{children:"With Phoenix Code, we built the foundation to run Brackets almost anywhere with a web browser. The first web\nversion launched in June 2023, followed by desktop builds in February 2024."}),"\n",(0,i.jsx)(t.p,{children:"Version 3.0 was primarily about achieving feature parity and stability with Brackets\u2014and then surpassing it."}),"\n",(0,i.jsx)(t.h2,{id:"phoenix-code---40-present--future",children:"Phoenix Code - 4.0, Present & Future"}),"\n",(0,i.jsxs)(t.p,{children:["We start this year(2025) with the ",(0,i.jsx)(t.a,{href:"https://docs.phcode.dev/blog/release-4.0",children:"release of Phoenix Code 4.0"}),"- as we reach feature parity with Brackets and exceeds it\nin most cases. With this milestone, we return to the original mission of Brackets - to serve as a\nbridge between Designer and Developer workflows for the Web. To help ",(0,i.jsx)(t.em,{children:"people"})," get things done simpler and faster."]}),"\n",(0,i.jsx)(t.p,{children:"With immense gratitude for our users' support, we're excited to begin this next chapter of Phoenix Code."})]})}function l(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},28453:(e,t,o)=>{o.d(t,{R:()=>s,x:()=>a});var n=o(96540);const i={},r=n.createContext(i);function s(e){const t=n.useContext(r);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:s(e.components),n.createElement(r.Provider,{value:t},e.children)}},84446:e=>{e.exports=JSON.parse('{"permalink":"/blog/Blog-Legacy","editUrl":"https://github.com/phcode-dev/docs/blob/main/blog/2025-01-30-The Legacy of Brackets - Continued/index.md","source":"@site/blog/2025-01-30-The Legacy of Brackets - Continued/index.md","title":"Phoenix Code: The Legacy of Brackets - Continued","description":"The story of Brackets \u2014 from its birth at Adobe to Phoenix Code. How a community kept the spirit of Brackets alive and built its future.","date":"2025-01-30T00:00:00.000Z","tags":[{"inline":true,"label":"Brackets","permalink":"/blog/tags/brackets"},{"inline":true,"label":"Continued","permalink":"/blog/tags/continued"},{"inline":true,"label":"Phoenix Code","permalink":"/blog/tags/phoenix-code"},{"inline":true,"label":"History","permalink":"/blog/tags/history"}],"readingTime":2.55,"hasTruncateMarker":false,"authors":[{"name":"Arun Bose","title":"Co-Founder, Phoenix Code","url":"https://github.com/abose","imageURL":"https://github.com/abose.png","key":"arun","page":null},{"name":"Charly P Abraham","title":"Co-Founder, Phoenix Code","url":"https://github.com/charlypa","imageURL":"https://github.com/charlypa.png","key":"charly","page":null}],"frontMatter":{"slug":"Blog-Legacy","title":"Phoenix Code: The Legacy of Brackets - Continued","description":"The story of Brackets \u2014 from its birth at Adobe to Phoenix Code. How a community kept the spirit of Brackets alive and built its future.","authors":["arun","charly"],"tags":["Brackets","Continued","Phoenix Code","History"]},"unlisted":false,"prevItem":{"title":"Git It Release (January-2025, V-4.0) is now Live","permalink":"/blog/release-4.0"},"nextItem":{"title":"Editor Experience Release (November-2024, V-3.10) is now Live","permalink":"/blog/release-3.10"}}')}}]); \ No newline at end of file diff --git a/assets/js/1ebd5d10.5a6455c0.js b/assets/js/1ebd5d10.5a6455c0.js new file mode 100644 index 00000000..5de9e7a8 --- /dev/null +++ b/assets/js/1ebd5d10.5a6455c0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3399],{39244:a=>{a.exports=JSON.parse('{"tag":{"label":"Tab Bar","permalink":"/blog/tags/tab-bar","allTagsPath":"/blog/tags","count":1,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/tab-bar","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]); \ No newline at end of file diff --git a/assets/js/1f391b9e.240be57c.js b/assets/js/1f391b9e.240be57c.js new file mode 100644 index 00000000..030aa36a --- /dev/null +++ b/assets/js/1f391b9e.240be57c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6061],{32234:(e,n,t)=>{t.d(n,{A:()=>o});t(96540);var a=t(34164),i=t(44084),s=t(17559),r=t(27293),l=t(74848);function c({className:e}){return(0,l.jsx)(r.A,{type:"caution",title:(0,l.jsx)(i.Rc,{}),className:(0,a.A)(e,s.G.common.unlistedBanner),children:(0,l.jsx)(i.Uh,{})})}function o(e){return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(i.AE,{}),(0,l.jsx)(c,{...e})]})}},41689:(e,n,t)=>{t.d(n,{A:()=>d});t(96540);var a=t(34164),i=t(44084),s=t(17559),r=t(27293),l=t(74848);function c({className:e}){return(0,l.jsx)(r.A,{type:"caution",title:(0,l.jsx)(i.Yh,{}),className:(0,a.A)(e,s.G.common.draftBanner),children:(0,l.jsx)(i.TT,{})})}var o=t(32234);function d({metadata:e}){const{unlisted:n,frontMatter:t}=e;return(0,l.jsxs)(l.Fragment,{children:[(n||t.unlisted)&&(0,l.jsx)(o.A,{}),t.draft&&(0,l.jsx)(c,{})]})}},67973:(e,n,t)=>{t.r(n),t.d(n,{default:()=>f});t(96540);var a=t(34164),i=t(45500),s=t(17559),r=t(36882),l=t(56314),c=t(67763),o=t(41689),d=t(4336);const m={mdxPageWrapper:"mdxPageWrapper_j9I6"};var u=t(74848);function f(e){const{content:n}=e,{metadata:t,assets:f}=n,{title:h,editUrl:v,description:x,frontMatter:g,lastUpdatedBy:p,lastUpdatedAt:j}=t,{keywords:A,wrapperClassName:b,hide_table_of_contents:L}=g,N=f.image??g.image,C=!!(v||j||p);return(0,u.jsx)(i.e3,{className:(0,a.A)(b??s.G.wrapper.mdxPages,s.G.page.mdxPage),children:(0,u.jsxs)(r.A,{children:[(0,u.jsx)(i.be,{title:h,description:x,keywords:A,image:N}),(0,u.jsx)("main",{className:"container container--fluid margin-vert--lg",children:(0,u.jsxs)("div",{className:(0,a.A)("row",m.mdxPageWrapper),children:[(0,u.jsxs)("div",{className:(0,a.A)("col",!L&&"col--8"),children:[(0,u.jsx)(o.A,{metadata:t}),(0,u.jsx)("article",{children:(0,u.jsx)(l.A,{children:(0,u.jsx)(n,{})})}),C&&(0,u.jsx)(d.A,{className:(0,a.A)("margin-top--sm",s.G.pages.pageFooterEditMetaRow),editUrl:v,lastUpdatedAt:j,lastUpdatedBy:p})]}),!L&&n.toc.length>0&&(0,u.jsx)("div",{className:"col col--2",children:(0,u.jsx)(c.A,{toc:n.toc,minHeadingLevel:g.toc_min_heading_level,maxHeadingLevel:g.toc_max_heading_level})})]})})]})})}},67763:(e,n,t)=>{t.d(n,{A:()=>o});t(96540);var a=t(34164),i=t(65195);const s={tableOfContents:"tableOfContents_bqdL",docItemContainer:"docItemContainer_F8PC"};var r=t(74848);const l="table-of-contents__link toc-highlight",c="table-of-contents__link--active";function o({className:e,...n}){return(0,r.jsx)("div",{className:(0,a.A)(s.tableOfContents,"thin-scrollbar",e),children:(0,r.jsx)(i.A,{...n,linkClassName:l,linkActiveClassName:c})})}},65195:(e,n,t)=>{t.d(n,{A:()=>v});var a=t(96540),i=t(6342);function s(e){const n=e.map((e=>({...e,parentIndex:-1,children:[]}))),t=Array(7).fill(-1);n.forEach(((e,n)=>{const a=t.slice(2,e.level);e.parentIndex=Math.max(...a),t[e.level]=n}));const a=[];return n.forEach((e=>{const{parentIndex:t,...i}=e;t>=0?n[t].children.push(i):a.push(i)})),a}function r({toc:e,minHeadingLevel:n,maxHeadingLevel:t}){return e.flatMap((e=>{const a=r({toc:e.children,minHeadingLevel:n,maxHeadingLevel:t});return function(e){return e.level>=n&&e.level<=t}(e)?[{...e,children:a}]:a}))}function l(e){const n=e.getBoundingClientRect();return n.top===n.bottom?l(e.parentNode):n}function c(e,{anchorTopOffset:n}){const t=e.find((e=>l(e).top>=n));if(t){return function(e){return e.top>0&&e.bottom{e.current=n?0:document.querySelector(".navbar").clientHeight}),[n]),e}function d(e){const n=(0,a.useRef)(void 0),t=o();(0,a.useEffect)((()=>{if(!e)return()=>{};const{linkClassName:a,linkActiveClassName:i,minHeadingLevel:s,maxHeadingLevel:r}=e;function l(){const e=function(e){return Array.from(document.getElementsByClassName(e))}(a),l=function({minHeadingLevel:e,maxHeadingLevel:n}){const t=[];for(let a=e;a<=n;a+=1)t.push(`h${a}.anchor`);return Array.from(document.querySelectorAll(t.join()))}({minHeadingLevel:s,maxHeadingLevel:r}),o=c(l,{anchorTopOffset:t.current}),d=e.find((e=>o&&o.id===function(e){return decodeURIComponent(e.href.substring(e.href.indexOf("#")+1))}(e)));e.forEach((e=>{!function(e,t){t?(n.current&&n.current!==e&&n.current.classList.remove(i),e.classList.add(i),n.current=e):e.classList.remove(i)}(e,e===d)}))}return document.addEventListener("scroll",l),document.addEventListener("resize",l),l(),()=>{document.removeEventListener("scroll",l),document.removeEventListener("resize",l)}}),[e,t])}var m=t(28774),u=t(74848);function f({toc:e,className:n,linkClassName:t,isChild:a}){return e.length?(0,u.jsx)("ul",{className:a?void 0:n,children:e.map((e=>(0,u.jsxs)("li",{children:[(0,u.jsx)(m.A,{to:`#${e.id}`,className:t??void 0,dangerouslySetInnerHTML:{__html:e.value}}),(0,u.jsx)(f,{isChild:!0,toc:e.children,className:n,linkClassName:t})]},e.id)))}):null}const h=a.memo(f);function v({toc:e,className:n="table-of-contents table-of-contents__left-border",linkClassName:t="table-of-contents__link",linkActiveClassName:l,minHeadingLevel:c,maxHeadingLevel:o,...m}){const f=(0,i.p)(),v=c??f.tableOfContents.minHeadingLevel,x=o??f.tableOfContents.maxHeadingLevel,g=function({toc:e,minHeadingLevel:n,maxHeadingLevel:t}){return(0,a.useMemo)((()=>r({toc:s(e),minHeadingLevel:n,maxHeadingLevel:t})),[e,n,t])}({toc:e,minHeadingLevel:v,maxHeadingLevel:x});return d((0,a.useMemo)((()=>{if(t&&l)return{linkClassName:t,linkActiveClassName:l,minHeadingLevel:v,maxHeadingLevel:x}}),[t,l,v,x])),(0,u.jsx)(h,{toc:g,className:n,linkClassName:t,...m})}},44084:(e,n,t)=>{t.d(n,{AE:()=>c,Rc:()=>r,TT:()=>d,Uh:()=>l,Yh:()=>o});t(96540);var a=t(21312),i=t(5260),s=t(74848);function r(){return(0,s.jsx)(a.A,{id:"theme.contentVisibility.unlistedBanner.title",description:"The unlisted content banner title",children:"Unlisted page"})}function l(){return(0,s.jsx)(a.A,{id:"theme.contentVisibility.unlistedBanner.message",description:"The unlisted content banner message",children:"This page is unlisted. Search engines will not index it, and only users having a direct link can access it."})}function c(){return(0,s.jsx)(i.A,{children:(0,s.jsx)("meta",{name:"robots",content:"noindex, nofollow"})})}function o(){return(0,s.jsx)(a.A,{id:"theme.contentVisibility.draftBanner.title",description:"The draft content banner title",children:"Draft page"})}function d(){return(0,s.jsx)(a.A,{id:"theme.contentVisibility.draftBanner.message",description:"The draft content banner message",children:"This page is a draft. It will only be visible in dev and be excluded from the production build."})}}}]); \ No newline at end of file diff --git a/assets/js/1fcf143d.3c903252.js b/assets/js/1fcf143d.3c903252.js new file mode 100644 index 00000000..c3620978 --- /dev/null +++ b/assets/js/1fcf143d.3c903252.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3603],{60959:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>a,contentTitle:()=>l,default:()=>h,frontMatter:()=>s,metadata:()=>r,toc:()=>o});const r=JSON.parse('{"id":"API-Reference/utils/LocalizationUtils","title":"LocalizationUtils","description":"Import :","source":"@site/api/API-Reference/utils/LocalizationUtils.md","sourceDirName":"API-Reference/utils","slug":"/API-Reference/utils/LocalizationUtils","permalink":"/api/API-Reference/utils/LocalizationUtils","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"KeyEvent","permalink":"/api/API-Reference/utils/KeyEvent"},"next":{"title":"NativeApp","permalink":"/api/API-Reference/utils/NativeApp"}}');var i=n(74848),d=n(28453);const s={},l=void 0,a={},o=[{value:"Import :",id:"import-",level:3},{value:"getLocalizedLabel(locale) \u21d2 string",id:"getlocalizedlabellocale--string",level:2},{value:"getFormattedDateTime([date], [lang], [dateTimeFormat]) \u21d2 string",id:"getformatteddatetimedate-lang-datetimeformat--string",level:2},{value:"dateTimeFromNow([date], [lang], [fromDate]) \u21d2 string",id:"datetimefromnowdate-lang-fromdate--string",level:2},{value:"dateTimeFromNowFriendly(date, [lang], [fromDate]) \u21d2 string",id:"datetimefromnowfriendlydate-lang-fromdate--string",level:2}];function c(e){const t={br:"br",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,d.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.h3,{id:"import-",children:"Import :"}),"\n",(0,i.jsx)(t.pre,{children:(0,i.jsx)(t.code,{className:"language-js",children:'const LocalizationUtils = brackets.getModule("utils/LocalizationUtils")\n'})}),"\n",(0,i.jsx)("a",{name:"getLocalizedLabel"}),"\n",(0,i.jsxs)(t.h2,{id:"getlocalizedlabellocale--string",children:["getLocalizedLabel(locale) \u21d2 ",(0,i.jsx)("code",{children:"string"})]}),"\n",(0,i.jsx)(t.p,{children:"Converts a language code to its written name, if possible.\nIf not possible, the language code is simply returned."}),"\n",(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.strong,{children:"Kind"}),": global function",(0,i.jsx)(t.br,{}),"\n",(0,i.jsx)(t.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"string"})," - The language's name or the given language code"]}),"\n",(0,i.jsxs)(t.table,{children:[(0,i.jsx)(t.thead,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.th,{children:"Param"}),(0,i.jsx)(t.th,{children:"Type"}),(0,i.jsx)(t.th,{children:"Description"})]})}),(0,i.jsx)(t.tbody,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"locale"}),(0,i.jsx)(t.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(t.td,{children:"The two-char language code"})]})})]}),"\n",(0,i.jsx)("a",{name:"getFormattedDateTime"}),"\n",(0,i.jsxs)(t.h2,{id:"getformatteddatetimedate-lang-datetimeformat--string",children:["getFormattedDateTime([date], [lang], [dateTimeFormat]) \u21d2 ",(0,i.jsx)("code",{children:"string"})]}),"\n",(0,i.jsx)(t.p,{children:"Formats a given date object into a locale-aware date and time string."}),"\n",(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.strong,{children:"Kind"}),": global function",(0,i.jsx)(t.br,{}),"\n",(0,i.jsx)(t.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"string"}),' - - The formatted date and time string (e.g., "Dec 24, 2024, 10:30 AM").']}),"\n",(0,i.jsxs)(t.table,{children:[(0,i.jsx)(t.thead,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.th,{children:"Param"}),(0,i.jsx)(t.th,{children:"Type"}),(0,i.jsx)(t.th,{children:"Description"})]})}),(0,i.jsxs)(t.tbody,{children:[(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"[date]"}),(0,i.jsx)(t.td,{children:(0,i.jsx)("code",{children:"Date"})}),(0,i.jsx)(t.td,{children:"The date object to format. If not provided, the current date and time will be used."})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"[lang]"}),(0,i.jsx)(t.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(t.td,{children:"Optional language code to use for formatting (e.g., 'en', 'fr'). If not provided, defaults to the application locale or 'en'."})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"[dateTimeFormat]"}),(0,i.jsx)(t.td,{children:(0,i.jsx)("code",{children:"Object"})}),(0,i.jsxs)(t.td,{children:["Optional object specifying the date and time formatting options. Defaults to ",(0,i.jsx)(t.code,{children:"{ dateStyle: 'medium', timeStyle: 'short' }"}),"."]})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"[dateTimeFormat.dateStyle]"}),(0,i.jsx)(t.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(t.td,{children:"Specifies the date format style. One of: DATE_TIME_STYLE.*"})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"[dateTimeFormat.timeStyle]"}),(0,i.jsx)(t.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(t.td,{children:"Specifies the time format style. One of: DATE_TIME_STYLE.*"})]})]})]}),"\n",(0,i.jsx)("a",{name:"dateTimeFromNow"}),"\n",(0,i.jsxs)(t.h2,{id:"datetimefromnowdate-lang-fromdate--string",children:["dateTimeFromNow([date], [lang], [fromDate]) \u21d2 ",(0,i.jsx)("code",{children:"string"})]}),"\n",(0,i.jsx)(t.p,{children:'Returns a relative time string (e.g., "2 days ago", "in 3 hours") based on the difference between the given date and now.'}),"\n",(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.strong,{children:"Kind"}),": global function",(0,i.jsx)(t.br,{}),"\n",(0,i.jsx)(t.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"string"}),' - - A human-readable relative time string (e.g., "2 days ago", "in 3 hours").']}),"\n",(0,i.jsxs)(t.table,{children:[(0,i.jsx)(t.thead,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.th,{children:"Param"}),(0,i.jsx)(t.th,{children:"Type"}),(0,i.jsx)(t.th,{children:"Description"})]})}),(0,i.jsxs)(t.tbody,{children:[(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"[date]"}),(0,i.jsx)(t.td,{children:(0,i.jsx)("code",{children:"Date"})}),(0,i.jsx)(t.td,{children:"The date to compare with the current date and time. If not given, defaults to now."})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"[lang]"}),(0,i.jsx)(t.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(t.td,{children:"Optional language code to use for formatting (e.g., 'en', 'fr'). If not provided, defaults to the application locale or 'en'."})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"[fromDate]"}),(0,i.jsx)(t.td,{children:(0,i.jsx)("code",{children:"Date"})}),(0,i.jsx)(t.td,{children:"Optional date to use instead of now to compute the relative dateTime from."})]})]})]}),"\n",(0,i.jsx)("a",{name:"dateTimeFromNowFriendly"}),"\n",(0,i.jsxs)(t.h2,{id:"datetimefromnowfriendlydate-lang-fromdate--string",children:["dateTimeFromNowFriendly(date, [lang], [fromDate]) \u21d2 ",(0,i.jsx)("code",{children:"string"})]}),"\n",(0,i.jsx)(t.p,{children:"Returns an intelligent date string."}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:'For dates within the last 30 days or the future: relative time (e.g., "2 days ago", "in 3 hours").'}),"\n",(0,i.jsx)(t.li,{children:'For dates earlier this year: formatted date (e.g., "Jan 5").'}),"\n",(0,i.jsx)(t.li,{children:'For dates not in the current year: formatted date with year (e.g., "Jan 5, 2023").'}),"\n"]}),"\n",(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.strong,{children:"Kind"}),": global function",(0,i.jsx)(t.br,{}),"\n",(0,i.jsx)(t.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"string"})," - - An intelligently formatted date string."]}),"\n",(0,i.jsxs)(t.table,{children:[(0,i.jsx)(t.thead,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.th,{children:"Param"}),(0,i.jsx)(t.th,{children:"Type"}),(0,i.jsx)(t.th,{children:"Description"})]})}),(0,i.jsxs)(t.tbody,{children:[(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"date"}),(0,i.jsx)(t.td,{children:(0,i.jsx)("code",{children:"Date"})}),(0,i.jsx)(t.td,{children:"The date to compare and format."})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"[lang]"}),(0,i.jsx)(t.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(t.td,{children:"Optional language code to use for formatting (e.g., 'en', 'fr')."})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"[fromDate]"}),(0,i.jsx)(t.td,{children:(0,i.jsx)("code",{children:"Date"})}),(0,i.jsx)(t.td,{children:"Optional date to use instead of now to compute the relative dateTime from."})]})]})]})]})}function h(e={}){const{wrapper:t}={...(0,d.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},28453:(e,t,n)=>{n.d(t,{R:()=>s,x:()=>l});var r=n(96540);const i={},d=r.createContext(i);function s(e){const t=r.useContext(d);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:s(e.components),r.createElement(d.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/20d7b086.aa3be60b.js b/assets/js/20d7b086.aa3be60b.js new file mode 100644 index 00000000..85e27a1b --- /dev/null +++ b/assets/js/20d7b086.aa3be60b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[974],{38896:(e,r,n)=>{n.r(r),n.d(r,{assets:()=>a,contentTitle:()=>l,default:()=>m,frontMatter:()=>i,metadata:()=>t,toc:()=>c});const t=JSON.parse('{"id":"API-Reference/filesystem/FileSystemError","title":"FileSystemError","description":"Import :","source":"@site/api/API-Reference/filesystem/FileSystemError.md","sourceDirName":"API-Reference/filesystem","slug":"/API-Reference/filesystem/FileSystemError","permalink":"/api/API-Reference/filesystem/FileSystemError","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"FileSystemEntry","permalink":"/api/API-Reference/filesystem/FileSystemEntry"},"next":{"title":"FileSystemStats","permalink":"/api/API-Reference/filesystem/FileSystemStats"}}');var s=n(74848),o=n(28453);const i={},l=void 0,a={},c=[{value:"Import :",id:"import-",level:3},{value:"FileSystemError",id:"filesystemerror",level:2}];function d(e){const r={code:"code",h2:"h2",h3:"h3",p:"p",pre:"pre",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(r.h3,{id:"import-",children:"Import :"}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-js",children:'const FileSystemError = brackets.getModule("filesystem/FileSystemError")\n'})}),"\n",(0,s.jsx)("a",{name:"module_FileSystemError"}),"\n",(0,s.jsx)(r.h2,{id:"filesystemerror",children:"FileSystemError"}),"\n",(0,s.jsx)(r.p,{children:"FileSystemError describes the errors that can occur when using the FileSystem, File,\nand Directory modules."}),"\n",(0,s.jsx)(r.p,{children:'Error values are strings. Any "falsy" value: null, undefined or "" means "no error".'}),"\n",(0,s.jsx)(r.p,{children:"Enumerated File System Errors"}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-js",children:' UNKNOWN: "Unknown",\n INVALID_PARAMS: "InvalidParams",\n NOT_FOUND: "NotFound",\n NOT_READABLE: "NotReadable",\n UNSUPPORTED_ENCODING: "UnsupportedEncoding",\n NOT_SUPPORTED: "NotSupported",\n NOT_WRITABLE: "NotWritable",\n OUT_OF_SPACE: "OutOfSpace",\n TOO_MANY_ENTRIES: "TooManyEntries",\n ALREADY_EXISTS: "AlreadyExists",\n CONTENTS_MODIFIED: "ContentsModified",\n ROOT_NOT_WATCHED: "RootNotBeingWatched",\n EXCEEDS_MAX_FILE_SIZE: "ExceedsMaxFileSize",\n NETWORK_DRIVE_NOT_SUPPORTED: "NetworkDriveNotSupported",\n ENCODE_FILE_FAILED: "EncodeFileFailed",\n DECODE_FILE_FAILED: "DecodeFileFailed",\n UNSUPPORTED_UTF16_ENCODING: "UnsupportedUTF16Encoding"\n'})})]})}function m(e={}){const{wrapper:r}={...(0,o.R)(),...e.components};return r?(0,s.jsx)(r,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},28453:(e,r,n)=>{n.d(r,{R:()=>i,x:()=>l});var t=n(96540);const s={},o=t.createContext(s);function i(e){const r=t.useContext(o);return t.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function l(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),t.createElement(o.Provider,{value:r},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/2130.fb03c152.js b/assets/js/2130.fb03c152.js new file mode 100644 index 00000000..75e40f6c --- /dev/null +++ b/assets/js/2130.fb03c152.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2130],{22130:(e,t,r)=>{r.d(t,{default:()=>en});class a{constructor(e,t,r){this.lexer=void 0,this.start=void 0,this.end=void 0,this.lexer=e,this.start=t,this.end=r}static range(e,t){return t?e&&e.loc&&t.loc&&e.loc.lexer===t.loc.lexer?new a(e.loc.lexer,e.loc.start,t.loc.end):null:e&&e.loc}}class n{constructor(e,t){this.text=void 0,this.loc=void 0,this.noexpand=void 0,this.treatAsRelax=void 0,this.text=e,this.loc=t}range(e,t){return new n(t,a.range(this,e))}}class i{constructor(e,t){this.name=void 0,this.position=void 0,this.length=void 0,this.rawMessage=void 0;var r,a,n="KaTeX parse error: "+e,o=t&&t.loc;if(o&&o.start<=o.end){var s=o.lexer.input;r=o.start,a=o.end,r===s.length?n+=" at end of input: ":n+=" at position "+(r+1)+": ";var l=s.slice(r,a).replace(/[^]/g,"$&\u0332");n+=(r>15?"\u2026"+s.slice(r-15,r):s.slice(0,r))+l+(a+15":">","<":"<",'"':""","'":"'"},l=/[&><"']/g;var h=function e(t){return"ordgroup"===t.type||"color"===t.type?1===t.body.length?e(t.body[0]):t:"font"===t.type?e(t.body):t},m={deflt:function(e,t){return void 0===e?t:e},escape:function(e){return String(e).replace(l,(e=>s[e]))},hyphenate:function(e){return e.replace(o,"-$1").toLowerCase()},getBaseElem:h,isCharacterBox:function(e){var t=h(e);return"mathord"===t.type||"textord"===t.type||"atom"===t.type},protocolFromUrl:function(e){var t=/^[\x00-\x20]*([^\\/#?]*?)(:|�*58|�*3a|&colon)/i.exec(e);return t?":"!==t[2]?null:/^[a-zA-Z][a-zA-Z0-9+\-.]*$/.test(t[1])?t[1].toLowerCase():null:"_relative"}},c={displayMode:{type:"boolean",description:"Render math in display mode, which puts the math in display style (so \\int and \\sum are large, for example), and centers the math on the page on its own line.",cli:"-d, --display-mode"},output:{type:{enum:["htmlAndMathml","html","mathml"]},description:"Determines the markup language of the output.",cli:"-F, --format "},leqno:{type:"boolean",description:"Render display math in leqno style (left-justified tags)."},fleqn:{type:"boolean",description:"Render display math flush left."},throwOnError:{type:"boolean",default:!0,cli:"-t, --no-throw-on-error",cliDescription:"Render errors (in the color given by --error-color) instead of throwing a ParseError exception when encountering an error."},errorColor:{type:"string",default:"#cc0000",cli:"-c, --error-color ",cliDescription:"A color string given in the format 'rgb' or 'rrggbb' (no #). This option determines the color of errors rendered by the -t option.",cliProcessor:e=>"#"+e},macros:{type:"object",cli:"-m, --macro ",cliDescription:"Define custom macro of the form '\\foo:expansion' (use multiple -m arguments for multiple macros).",cliDefault:[],cliProcessor:(e,t)=>(t.push(e),t)},minRuleThickness:{type:"number",description:"Specifies a minimum thickness, in ems, for fraction lines, `\\sqrt` top lines, `{array}` vertical lines, `\\hline`, `\\hdashline`, `\\underline`, `\\overline`, and the borders of `\\fbox`, `\\boxed`, and `\\fcolorbox`.",processor:e=>Math.max(0,e),cli:"--min-rule-thickness ",cliProcessor:parseFloat},colorIsTextColor:{type:"boolean",description:"Makes \\color behave like LaTeX's 2-argument \\textcolor, instead of LaTeX's one-argument \\color mode change.",cli:"-b, --color-is-text-color"},strict:{type:[{enum:["warn","ignore","error"]},"boolean","function"],description:"Turn on strict / LaTeX faithfulness mode, which throws an error if the input uses features that are not supported by LaTeX.",cli:"-S, --strict",cliDefault:!1},trust:{type:["boolean","function"],description:"Trust the input, enabling all HTML features such as \\url.",cli:"-T, --trust"},maxSize:{type:"number",default:1/0,description:"If non-zero, all user-specified sizes, e.g. in \\rule{500em}{500em}, will be capped to maxSize ems. Otherwise, elements and spaces can be arbitrarily large",processor:e=>Math.max(0,e),cli:"-s, --max-size ",cliProcessor:parseInt},maxExpand:{type:"number",default:1e3,description:"Limit the number of macro expansions to the specified number, to prevent e.g. infinite macro loops. If set to Infinity, the macro expander will try to fully expand as in LaTeX.",processor:e=>Math.max(0,e),cli:"-e, --max-expand ",cliProcessor:e=>"Infinity"===e?1/0:parseInt(e)},globalGroup:{type:"boolean",cli:!1}};function p(e){if(e.default)return e.default;var t=e.type,r=Array.isArray(t)?t[0]:t;if("string"!=typeof r)return r.enum[0];switch(r){case"boolean":return!1;case"string":return"";case"number":return 0;case"object":return{}}}class u{constructor(e){for(var t in this.displayMode=void 0,this.output=void 0,this.leqno=void 0,this.fleqn=void 0,this.throwOnError=void 0,this.errorColor=void 0,this.macros=void 0,this.minRuleThickness=void 0,this.colorIsTextColor=void 0,this.strict=void 0,this.trust=void 0,this.maxSize=void 0,this.maxExpand=void 0,this.globalGroup=void 0,e=e||{},c)if(c.hasOwnProperty(t)){var r=c[t];this[t]=void 0!==e[t]?r.processor?r.processor(e[t]):e[t]:p(r)}}reportNonstrict(e,t,r){var a=this.strict;if("function"==typeof a&&(a=a(e,t,r)),a&&"ignore"!==a){if(!0===a||"error"===a)throw new i("LaTeX-incompatible input and strict mode is set to 'error': "+t+" ["+e+"]",r);"warn"===a?"undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+t+" ["+e+"]"):"undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to unrecognized '"+a+"': "+t+" ["+e+"]")}}useStrictBehavior(e,t,r){var a=this.strict;if("function"==typeof a)try{a=a(e,t,r)}catch(n){a="error"}return!(!a||"ignore"===a)&&(!0===a||"error"===a||("warn"===a?("undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+t+" ["+e+"]"),!1):("undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to unrecognized '"+a+"': "+t+" ["+e+"]"),!1)))}isTrusted(e){if(e.url&&!e.protocol){var t=m.protocolFromUrl(e.url);if(null==t)return!1;e.protocol=t}var r="function"==typeof this.trust?this.trust(e):this.trust;return Boolean(r)}}class d{constructor(e,t,r){this.id=void 0,this.size=void 0,this.cramped=void 0,this.id=e,this.size=t,this.cramped=r}sup(){return g[f[this.id]]}sub(){return g[v[this.id]]}fracNum(){return g[b[this.id]]}fracDen(){return g[y[this.id]]}cramp(){return g[x[this.id]]}text(){return g[w[this.id]]}isTight(){return this.size>=2}}var g=[new d(0,0,!1),new d(1,0,!0),new d(2,1,!1),new d(3,1,!0),new d(4,2,!1),new d(5,2,!0),new d(6,3,!1),new d(7,3,!0)],f=[4,5,4,5,6,7,6,7],v=[5,5,5,5,7,7,7,7],b=[2,3,4,5,6,7,6,7],y=[3,3,5,5,7,7,7,7],x=[1,1,3,3,5,5,7,7],w=[0,1,2,3,2,3,2,3],k={DISPLAY:g[0],TEXT:g[2],SCRIPT:g[4],SCRIPTSCRIPT:g[6]},S=[{name:"latin",blocks:[[256,591],[768,879]]},{name:"cyrillic",blocks:[[1024,1279]]},{name:"armenian",blocks:[[1328,1423]]},{name:"brahmic",blocks:[[2304,4255]]},{name:"georgian",blocks:[[4256,4351]]},{name:"cjk",blocks:[[12288,12543],[19968,40879],[65280,65376]]},{name:"hangul",blocks:[[44032,55215]]}];var M=[];function z(e){for(var t=0;t=M[t]&&e<=M[t+1])return!0;return!1}S.forEach((e=>e.blocks.forEach((e=>M.push(...e)))));var A=80,T={doubleleftarrow:"M262 157\nl10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3\n 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28\n 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5\nc2 1.7 6.3 3.5 13 5.5 68 17.3 128.2 47.8 180.5 91.5 52.3 43.7 93.8 96.2 124.5\n 157.5 9.3 8 15.3 12.3 18 13h6c12-.7 18-4 18-10 0-2-1.7-7-5-15-23.3-46-52-87\n-86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7\n-2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z\nm8 0v40h399730v-40zm0 194v40h399730v-40z",doublerightarrow:"M399738 392l\n-10 10c-34 36-62.7 77-86 123-3.3 8-5 13.3-5 16 0 5.3 6.7 8 20 8 7.3 0 12.2-.5\n 14.5-1.5 2.3-1 4.8-4.5 7.5-10.5 49.3-97.3 121.7-169.3 217-216 28-14 57.3-25 88\n-33 6.7-2 11-3.8 13-5.5 2-1.7 3-4.2 3-7.5s-1-5.8-3-7.5c-2-1.7-6.3-3.5-13-5.5-68\n-17.3-128.2-47.8-180.5-91.5-52.3-43.7-93.8-96.2-124.5-157.5-9.3-8-15.3-12.3-18\n-13h-6c-12 .7-18 4-18 10 0 2 1.7 7 5 15 23.3 46 52 87 86 123l10 10H0v40h399782\nc-328 0 0 0 0 0l10 8c26.7 20 65.7 43 117 69-2.7 2-6 3.7-10 5-36.7 16-72.3 37.3\n-107 64l-10 8H0v40zM0 157v40h399730v-40zm0 194v40h399730v-40z",leftarrow:"M400000 241H110l3-3c68.7-52.7 113.7-120\n 135-202 4-14.7 6-23 6-25 0-7.3-7-11-21-11-8 0-13.2.8-15.5 2.5-2.3 1.7-4.2 5.8\n-5.5 12.5-1.3 4.7-2.7 10.3-4 17-12 48.7-34.8 92-68.5 130S65.3 228.3 18 247\nc-10 4-16 7.7-18 11 0 8.7 6 14.3 18 17 47.3 18.7 87.8 47 121.5 85S196 441.3 208\n 490c.7 2 1.3 5 2 9s1.2 6.7 1.5 8c.3 1.3 1 3.3 2 6s2.2 4.5 3.5 5.5c1.3 1 3.3\n 1.8 6 2.5s6 1 10 1c14 0 21-3.7 21-11 0-2-2-10.3-6-25-20-79.3-65-146.7-135-202\n l-3-3h399890zM100 241v40h399900v-40z",leftbrace:"M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117\n-45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7\n 5-6 9-10 13-.7 1-7.3 1-20 1H6z",leftbraceunder:"M0 6l6-6h17c12.688 0 19.313.3 20 1 4 4 7.313 8.3 10 13\n 35.313 51.3 80.813 93.8 136.5 127.5 55.688 33.7 117.188 55.8 184.5 66.5.688\n 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7\n-331-161C60.687 138.7 32.312 99.3 7 54L0 41V6z",leftgroup:"M400000 80\nH435C64 80 168.3 229.4 21 260c-5.9 1.2-18 0-18 0-2 0-3-1-3-3v-38C76 61 257 0\n 435 0h399565z",leftgroupunder:"M400000 262\nH435C64 262 168.3 112.6 21 82c-5.9-1.2-18 0-18 0-2 0-3 1-3 3v38c76 158 257 219\n 435 219h399565z",leftharpoon:"M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3\n-3.3 10.2-9.5 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5\n-18.3 3-21-1.3-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7\n-196 228-6.7 4.7-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40z",leftharpoonplus:"M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3-3.3 10.2-9.5\n 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5-18.3 3-21-1.3\n-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7-196 228-6.7 4.7\n-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zM0 435v40h400000v-40z\nm0 0v40h400000v-40z",leftharpoondown:"M7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 2 11s5.333\n 5.333 12 10c90.667 54 156 130 196 228 3.333 10.667 6.333 16.333 9 17 2 .667 5\n 1 9 1h5c10.667 0 16.667-2 18-6 2-2.667 1-9.667-3-21-32-87.333-82.667-157.667\n-152-211l-3-3h399907v-40zM93 281 H400000 v-40L7 241z",leftharpoondownplus:"M7 435c-4 4-6.3 8.7-7 14 0 5.3.7 9 2 11s5.3 5.3 12\n 10c90.7 54 156 130 196 228 3.3 10.7 6.3 16.3 9 17 2 .7 5 1 9 1h5c10.7 0 16.7\n-2 18-6 2-2.7 1-9.7-3-21-32-87.3-82.7-157.7-152-211l-3-3h399907v-40H7zm93 0\nv40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z",lefthook:"M400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5\n-83.5C70.8 58.2 104 47 142 47 c16.7 0 25 6.7 25 20 0 12-8.7 18.7-26 20-40 3.3\n-68.7 15.7-86 37-10 12-15 25.3-15 40 0 22.7 9.8 40.7 29.5 54 19.7 13.3 43.5 21\n 71.5 23h399859zM103 281v-40h399897v40z",leftlinesegment:"M40 281 V428 H0 V94 H40 V241 H400000 v40z\nM40 281 V428 H0 V94 H40 V241 H400000 v40z",leftmapsto:"M40 281 V448H0V74H40V241H400000v40z\nM40 281 V448H0V74H40V241H400000v40z",leftToFrom:"M0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23\n-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69-70-101l-7-8h399905v-40H95l7-8\nc28.7-32 52-65.7 70-101 10.7-23.3 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 265.3\n 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z",longequal:"M0 50 h400000 v40H0z m0 194h40000v40H0z\nM0 50 h400000 v40H0z m0 194h40000v40H0z",midbrace:"M200428 334\nc-100.7-8.3-195.3-44-280-108-55.3-42-101.7-93-139-153l-9-14c-2.7 4-5.7 8.7-9 14\n-53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7\n 311.7-78.3 403-201 6-8 9.7-12 11-12 .7-.7 6.7-1 18-1s17.3.3 18 1c1.3 0 5 4 11\n 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z",midbraceunder:"M199572 214\nc100.7 8.3 195.3 44 280 108 55.3 42 101.7 93 139 153l9 14c2.7-4 5.7-8.7 9-14\n 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3\n 11.7-311.7 78.3-403 201-6 8-9.7 12-11 12-.7.7-6.7 1-18 1s-17.3-.3-18-1c-1.3 0\n-5-4-11-12-44.7-59.3-101.3-106.3-170-141s-145.3-54.3-229-60H0V214z",oiintSize1:"M512.6 71.6c272.6 0 320.3 106.8 320.3 178.2 0 70.8-47.7 177.6\n-320.3 177.6S193.1 320.6 193.1 249.8c0-71.4 46.9-178.2 319.5-178.2z\nm368.1 178.2c0-86.4-60.9-215.4-368.1-215.4-306.4 0-367.3 129-367.3 215.4 0 85.8\n60.9 214.8 367.3 214.8 307.2 0 368.1-129 368.1-214.8z",oiintSize2:"M757.8 100.1c384.7 0 451.1 137.6 451.1 230 0 91.3-66.4 228.8\n-451.1 228.8-386.3 0-452.7-137.5-452.7-228.8 0-92.4 66.4-230 452.7-230z\nm502.4 230c0-111.2-82.4-277.2-502.4-277.2s-504 166-504 277.2\nc0 110 84 276 504 276s502.4-166 502.4-276z",oiiintSize1:"M681.4 71.6c408.9 0 480.5 106.8 480.5 178.2 0 70.8-71.6 177.6\n-480.5 177.6S202.1 320.6 202.1 249.8c0-71.4 70.5-178.2 479.3-178.2z\nm525.8 178.2c0-86.4-86.8-215.4-525.7-215.4-437.9 0-524.7 129-524.7 215.4 0\n85.8 86.8 214.8 524.7 214.8 438.9 0 525.7-129 525.7-214.8z",oiiintSize2:"M1021.2 53c603.6 0 707.8 165.8 707.8 277.2 0 110-104.2 275.8\n-707.8 275.8-606 0-710.2-165.8-710.2-275.8C311 218.8 415.2 53 1021.2 53z\nm770.4 277.1c0-131.2-126.4-327.6-770.5-327.6S248.4 198.9 248.4 330.1\nc0 130 128.8 326.4 772.7 326.4s770.5-196.4 770.5-326.4z",rightarrow:"M0 241v40h399891c-47.3 35.3-84 78-110 128\n-16.7 32-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20\n 11 8 0 13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7\n 39-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85\n-40.5-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\n 151.7 139 205zm0 0v40h399900v-40z",rightbrace:"M400000 542l\n-6 6h-17c-12.7 0-19.3-.3-20-1-4-4-7.3-8.3-10-13-35.3-51.3-80.8-93.8-136.5-127.5\ns-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1\nc124.7 8 235 61.7 331 161 31.3 33.3 59.7 72.7 85 118l7 13v35z",rightbraceunder:"M399994 0l6 6v35l-6 11c-56 104-135.3 181.3-238 232-57.3\n 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237\n-174 2.7-5 6-9 10-13 .7-1 7.3-1 20-1h17z",rightgroup:"M0 80h399565c371 0 266.7 149.4 414 180 5.9 1.2 18 0 18 0 2 0\n 3-1 3-3v-38c-76-158-257-219-435-219H0z",rightgroupunder:"M0 262h399565c371 0 266.7-149.4 414-180 5.9-1.2 18 0 18\n 0 2 0 3 1 3 3v38c-76 158-257 219-435 219H0z",rightharpoon:"M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3\n-3.7-15.3-11-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2\n-10.7 0-16.7 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58\n 69.2 92 94.5zm0 0v40h399900v-40z",rightharpoonplus:"M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3-3.7-15.3-11\n-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2-10.7 0-16.7\n 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 69.2 92 94.5z\nm0 0v40h399900v-40z m100 194v40h399900v-40zm0 0v40h399900v-40z",rightharpoondown:"M399747 511c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8\n 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 8.5-5.8 9.5\n-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3-64.7 57-92 95\n-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 241v40h399900v-40z",rightharpoondownplus:"M399747 705c0 7.3 6.7 11 20 11 8 0 13-.8\n 15-2.5s4.7-6.8 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3\n 8.5-5.8 9.5-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3\n-64.7 57-92 95-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 435v40h399900v-40z\nm0-194v40h400000v-40zm0 0v40h400000v-40z",righthook:"M399859 241c-764 0 0 0 0 0 40-3.3 68.7-15.7 86-37 10-12 15-25.3\n 15-40 0-22.7-9.8-40.7-29.5-54-19.7-13.3-43.5-21-71.5-23-17.3-1.3-26-8-26-20 0\n-13.3 8.7-20 26-20 38 0 71 11.2 99 33.5 0 0 7 5.6 21 16.7 14 11.2 21 33.5 21\n 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40z",rightlinesegment:"M399960 241 V94 h40 V428 h-40 V281 H0 v-40z\nM399960 241 V94 h40 V428 h-40 V281 H0 v-40z",rightToFrom:"M400000 167c-70.7-42-118-97.7-142-167h-23c-15.3 0-23 .3-23\n 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32\n-52 65.7-70 101-10.7 23.3-16 35.7-16 37 0 .7 7.7 1 23 1h23c24-69.3 71.3-125 142\n-167z M100 147v40h399900v-40zM0 341v40h399900v-40z",twoheadleftarrow:"M0 167c68 40\n 115.7 95.7 143 167h22c15.3 0 23-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69\n-70-101l-7-8h125l9 7c50.7 39.3 85 86 103 140h46c0-4.7-6.3-18.7-19-42-18-35.3\n-40-67.3-66-96l-9-9h399716v-40H284l9-9c26-28.7 48-60.7 66-96 12.7-23.333 19\n-37.333 19-42h-46c-18 54-52.3 100.7-103 140l-9 7H95l7-8c28.7-32 52-65.7 70-101\n 10.7-23.333 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 71.3 68 127 0 167z",twoheadrightarrow:"M400000 167\nc-68-40-115.7-95.7-143-167h-22c-15.3 0-23 .3-23 1 0 1.3 5.3 13.7 16 37 18 35.3\n 41.3 69 70 101l7 8h-125l-9-7c-50.7-39.3-85-86-103-140h-46c0 4.7 6.3 18.7 19 42\n 18 35.3 40 67.3 66 96l9 9H0v40h399716l-9 9c-26 28.7-48 60.7-66 96-12.7 23.333\n-19 37.333-19 42h46c18-54 52.3-100.7 103-140l9-7h125l-7 8c-28.7 32-52 65.7-70\n 101-10.7 23.333-16 35.7-16 37 0 .7 7.7 1 23 1h22c27.3-71.3 75-127 143-167z",tilde1:"M200 55.538c-77 0-168 73.953-177 73.953-3 0-7\n-2.175-9-5.437L2 97c-1-2-2-4-2-6 0-4 2-7 5-9l20-12C116 12 171 0 207 0c86 0\n 114 68 191 68 78 0 168-68 177-68 4 0 7 2 9 5l12 19c1 2.175 2 4.35 2 6.525 0\n 4.35-2 7.613-5 9.788l-19 13.05c-92 63.077-116.937 75.308-183 76.128\n-68.267.847-113-73.952-191-73.952z",tilde2:"M344 55.266c-142 0-300.638 81.316-311.5 86.418\n-8.01 3.762-22.5 10.91-23.5 5.562L1 120c-1-2-1-3-1-4 0-5 3-9 8-10l18.4-9C160.9\n 31.9 283 0 358 0c148 0 188 122 331 122s314-97 326-97c4 0 8 2 10 7l7 21.114\nc1 2.14 1 3.21 1 4.28 0 5.347-3 9.626-7 10.696l-22.3 12.622C852.6 158.372 751\n 181.476 676 181.476c-149 0-189-126.21-332-126.21z",tilde3:"M786 59C457 59 32 175.242 13 175.242c-6 0-10-3.457\n-11-10.37L.15 138c-1-7 3-12 10-13l19.2-6.4C378.4 40.7 634.3 0 804.3 0c337 0\n 411.8 157 746.8 157 328 0 754-112 773-112 5 0 10 3 11 9l1 14.075c1 8.066-.697\n 16.595-6.697 17.492l-21.052 7.31c-367.9 98.146-609.15 122.696-778.15 122.696\n -338 0-409-156.573-744-156.573z",tilde4:"M786 58C457 58 32 177.487 13 177.487c-6 0-10-3.345\n-11-10.035L.15 143c-1-7 3-12 10-13l22-6.7C381.2 35 637.15 0 807.15 0c337 0 409\n 177 744 177 328 0 754-127 773-127 5 0 10 3 11 9l1 14.794c1 7.805-3 13.38-9\n 14.495l-20.7 5.574c-366.85 99.79-607.3 139.372-776.3 139.372-338 0-409\n -175.236-744-175.236z",vec:"M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5\n3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11\n10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63\n-1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1\n-7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59\nH213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359\nc-16-25.333-24-45-24-59z",widehat1:"M529 0h5l519 115c5 1 9 5 9 10 0 1-1 2-1 3l-4 22\nc-1 5-5 9-11 9h-2L532 67 19 159h-2c-5 0-9-4-11-9l-5-22c-1-6 2-12 8-13z",widehat2:"M1181 0h2l1171 176c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 220h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widehat3:"M1181 0h2l1171 236c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 280h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widehat4:"M1181 0h2l1171 296c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 340h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widecheck1:"M529,159h5l519,-115c5,-1,9,-5,9,-10c0,-1,-1,-2,-1,-3l-4,-22c-1,\n-5,-5,-9,-11,-9h-2l-512,92l-513,-92h-2c-5,0,-9,4,-11,9l-5,22c-1,6,2,12,8,13z",widecheck2:"M1181,220h2l1171,-176c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,153l-1167,-153h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",widecheck3:"M1181,280h2l1171,-236c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,213l-1167,-213h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",widecheck4:"M1181,340h2l1171,-296c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,273l-1167,-273h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",baraboveleftarrow:"M400000 620h-399890l3 -3c68.7 -52.7 113.7 -120 135 -202\nc4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5\nc-2.3 1.7 -4.2 5.8 -5.5 12.5c-1.3 4.7 -2.7 10.3 -4 17c-12 48.7 -34.8 92 -68.5 130\ns-74.2 66.3 -121.5 85c-10 4 -16 7.7 -18 11c0 8.7 6 14.3 18 17c47.3 18.7 87.8 47\n121.5 85s56.5 81.3 68.5 130c0.7 2 1.3 5 2 9s1.2 6.7 1.5 8c0.3 1.3 1 3.3 2 6\ns2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21 -3.7 21 -11\nc0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z\nM100 620v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z",rightarrowabovebar:"M0 241v40h399891c-47.3 35.3-84 78-110 128-16.7 32\n-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0\n13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 39\n-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85-40.5\n-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\n151.7 139 205zm96 379h399894v40H0zm0 0h399904v40H0z",baraboveshortleftharpoon:"M507,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17\nc2,0.7,5,1,9,1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21\nc-32,-87.3,-82.7,-157.7,-152,-211c0,0,-3,-3,-3,-3l399351,0l0,-40\nc-398570,0,-399437,0,-399437,0z M593 435 v40 H399500 v-40z\nM0 281 v-40 H399908 v40z M0 281 v-40 H399908 v40z",rightharpoonaboveshortbar:"M0,241 l0,40c399126,0,399993,0,399993,0\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\nM0 241 v40 H399908 v-40z M0 475 v-40 H399500 v40z M0 475 v-40 H399500 v40z",shortbaraboveleftharpoon:"M7,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17c2,0.7,5,1,9,\n1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21c-32,-87.3,-82.7,-157.7,\n-152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z\nM93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z",shortrightharpoonabovebar:"M53,241l0,40c398570,0,399437,0,399437,0\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\nM500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z"};class B{constructor(e){this.children=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.children=e,this.classes=[],this.height=0,this.depth=0,this.maxFontSize=0,this.style={}}hasClass(e){return this.classes.includes(e)}toNode(){for(var e=document.createDocumentFragment(),t=0;te.toText())).join("")}}var C={"AMS-Regular":{32:[0,0,0,0,.25],65:[0,.68889,0,0,.72222],66:[0,.68889,0,0,.66667],67:[0,.68889,0,0,.72222],68:[0,.68889,0,0,.72222],69:[0,.68889,0,0,.66667],70:[0,.68889,0,0,.61111],71:[0,.68889,0,0,.77778],72:[0,.68889,0,0,.77778],73:[0,.68889,0,0,.38889],74:[.16667,.68889,0,0,.5],75:[0,.68889,0,0,.77778],76:[0,.68889,0,0,.66667],77:[0,.68889,0,0,.94445],78:[0,.68889,0,0,.72222],79:[.16667,.68889,0,0,.77778],80:[0,.68889,0,0,.61111],81:[.16667,.68889,0,0,.77778],82:[0,.68889,0,0,.72222],83:[0,.68889,0,0,.55556],84:[0,.68889,0,0,.66667],85:[0,.68889,0,0,.72222],86:[0,.68889,0,0,.72222],87:[0,.68889,0,0,1],88:[0,.68889,0,0,.72222],89:[0,.68889,0,0,.72222],90:[0,.68889,0,0,.66667],107:[0,.68889,0,0,.55556],160:[0,0,0,0,.25],165:[0,.675,.025,0,.75],174:[.15559,.69224,0,0,.94666],240:[0,.68889,0,0,.55556],295:[0,.68889,0,0,.54028],710:[0,.825,0,0,2.33334],732:[0,.9,0,0,2.33334],770:[0,.825,0,0,2.33334],771:[0,.9,0,0,2.33334],989:[.08167,.58167,0,0,.77778],1008:[0,.43056,.04028,0,.66667],8245:[0,.54986,0,0,.275],8463:[0,.68889,0,0,.54028],8487:[0,.68889,0,0,.72222],8498:[0,.68889,0,0,.55556],8502:[0,.68889,0,0,.66667],8503:[0,.68889,0,0,.44445],8504:[0,.68889,0,0,.66667],8513:[0,.68889,0,0,.63889],8592:[-.03598,.46402,0,0,.5],8594:[-.03598,.46402,0,0,.5],8602:[-.13313,.36687,0,0,1],8603:[-.13313,.36687,0,0,1],8606:[.01354,.52239,0,0,1],8608:[.01354,.52239,0,0,1],8610:[.01354,.52239,0,0,1.11111],8611:[.01354,.52239,0,0,1.11111],8619:[0,.54986,0,0,1],8620:[0,.54986,0,0,1],8621:[-.13313,.37788,0,0,1.38889],8622:[-.13313,.36687,0,0,1],8624:[0,.69224,0,0,.5],8625:[0,.69224,0,0,.5],8630:[0,.43056,0,0,1],8631:[0,.43056,0,0,1],8634:[.08198,.58198,0,0,.77778],8635:[.08198,.58198,0,0,.77778],8638:[.19444,.69224,0,0,.41667],8639:[.19444,.69224,0,0,.41667],8642:[.19444,.69224,0,0,.41667],8643:[.19444,.69224,0,0,.41667],8644:[.1808,.675,0,0,1],8646:[.1808,.675,0,0,1],8647:[.1808,.675,0,0,1],8648:[.19444,.69224,0,0,.83334],8649:[.1808,.675,0,0,1],8650:[.19444,.69224,0,0,.83334],8651:[.01354,.52239,0,0,1],8652:[.01354,.52239,0,0,1],8653:[-.13313,.36687,0,0,1],8654:[-.13313,.36687,0,0,1],8655:[-.13313,.36687,0,0,1],8666:[.13667,.63667,0,0,1],8667:[.13667,.63667,0,0,1],8669:[-.13313,.37788,0,0,1],8672:[-.064,.437,0,0,1.334],8674:[-.064,.437,0,0,1.334],8705:[0,.825,0,0,.5],8708:[0,.68889,0,0,.55556],8709:[.08167,.58167,0,0,.77778],8717:[0,.43056,0,0,.42917],8722:[-.03598,.46402,0,0,.5],8724:[.08198,.69224,0,0,.77778],8726:[.08167,.58167,0,0,.77778],8733:[0,.69224,0,0,.77778],8736:[0,.69224,0,0,.72222],8737:[0,.69224,0,0,.72222],8738:[.03517,.52239,0,0,.72222],8739:[.08167,.58167,0,0,.22222],8740:[.25142,.74111,0,0,.27778],8741:[.08167,.58167,0,0,.38889],8742:[.25142,.74111,0,0,.5],8756:[0,.69224,0,0,.66667],8757:[0,.69224,0,0,.66667],8764:[-.13313,.36687,0,0,.77778],8765:[-.13313,.37788,0,0,.77778],8769:[-.13313,.36687,0,0,.77778],8770:[-.03625,.46375,0,0,.77778],8774:[.30274,.79383,0,0,.77778],8776:[-.01688,.48312,0,0,.77778],8778:[.08167,.58167,0,0,.77778],8782:[.06062,.54986,0,0,.77778],8783:[.06062,.54986,0,0,.77778],8785:[.08198,.58198,0,0,.77778],8786:[.08198,.58198,0,0,.77778],8787:[.08198,.58198,0,0,.77778],8790:[0,.69224,0,0,.77778],8791:[.22958,.72958,0,0,.77778],8796:[.08198,.91667,0,0,.77778],8806:[.25583,.75583,0,0,.77778],8807:[.25583,.75583,0,0,.77778],8808:[.25142,.75726,0,0,.77778],8809:[.25142,.75726,0,0,.77778],8812:[.25583,.75583,0,0,.5],8814:[.20576,.70576,0,0,.77778],8815:[.20576,.70576,0,0,.77778],8816:[.30274,.79383,0,0,.77778],8817:[.30274,.79383,0,0,.77778],8818:[.22958,.72958,0,0,.77778],8819:[.22958,.72958,0,0,.77778],8822:[.1808,.675,0,0,.77778],8823:[.1808,.675,0,0,.77778],8828:[.13667,.63667,0,0,.77778],8829:[.13667,.63667,0,0,.77778],8830:[.22958,.72958,0,0,.77778],8831:[.22958,.72958,0,0,.77778],8832:[.20576,.70576,0,0,.77778],8833:[.20576,.70576,0,0,.77778],8840:[.30274,.79383,0,0,.77778],8841:[.30274,.79383,0,0,.77778],8842:[.13597,.63597,0,0,.77778],8843:[.13597,.63597,0,0,.77778],8847:[.03517,.54986,0,0,.77778],8848:[.03517,.54986,0,0,.77778],8858:[.08198,.58198,0,0,.77778],8859:[.08198,.58198,0,0,.77778],8861:[.08198,.58198,0,0,.77778],8862:[0,.675,0,0,.77778],8863:[0,.675,0,0,.77778],8864:[0,.675,0,0,.77778],8865:[0,.675,0,0,.77778],8872:[0,.69224,0,0,.61111],8873:[0,.69224,0,0,.72222],8874:[0,.69224,0,0,.88889],8876:[0,.68889,0,0,.61111],8877:[0,.68889,0,0,.61111],8878:[0,.68889,0,0,.72222],8879:[0,.68889,0,0,.72222],8882:[.03517,.54986,0,0,.77778],8883:[.03517,.54986,0,0,.77778],8884:[.13667,.63667,0,0,.77778],8885:[.13667,.63667,0,0,.77778],8888:[0,.54986,0,0,1.11111],8890:[.19444,.43056,0,0,.55556],8891:[.19444,.69224,0,0,.61111],8892:[.19444,.69224,0,0,.61111],8901:[0,.54986,0,0,.27778],8903:[.08167,.58167,0,0,.77778],8905:[.08167,.58167,0,0,.77778],8906:[.08167,.58167,0,0,.77778],8907:[0,.69224,0,0,.77778],8908:[0,.69224,0,0,.77778],8909:[-.03598,.46402,0,0,.77778],8910:[0,.54986,0,0,.76042],8911:[0,.54986,0,0,.76042],8912:[.03517,.54986,0,0,.77778],8913:[.03517,.54986,0,0,.77778],8914:[0,.54986,0,0,.66667],8915:[0,.54986,0,0,.66667],8916:[0,.69224,0,0,.66667],8918:[.0391,.5391,0,0,.77778],8919:[.0391,.5391,0,0,.77778],8920:[.03517,.54986,0,0,1.33334],8921:[.03517,.54986,0,0,1.33334],8922:[.38569,.88569,0,0,.77778],8923:[.38569,.88569,0,0,.77778],8926:[.13667,.63667,0,0,.77778],8927:[.13667,.63667,0,0,.77778],8928:[.30274,.79383,0,0,.77778],8929:[.30274,.79383,0,0,.77778],8934:[.23222,.74111,0,0,.77778],8935:[.23222,.74111,0,0,.77778],8936:[.23222,.74111,0,0,.77778],8937:[.23222,.74111,0,0,.77778],8938:[.20576,.70576,0,0,.77778],8939:[.20576,.70576,0,0,.77778],8940:[.30274,.79383,0,0,.77778],8941:[.30274,.79383,0,0,.77778],8994:[.19444,.69224,0,0,.77778],8995:[.19444,.69224,0,0,.77778],9416:[.15559,.69224,0,0,.90222],9484:[0,.69224,0,0,.5],9488:[0,.69224,0,0,.5],9492:[0,.37788,0,0,.5],9496:[0,.37788,0,0,.5],9585:[.19444,.68889,0,0,.88889],9586:[.19444,.74111,0,0,.88889],9632:[0,.675,0,0,.77778],9633:[0,.675,0,0,.77778],9650:[0,.54986,0,0,.72222],9651:[0,.54986,0,0,.72222],9654:[.03517,.54986,0,0,.77778],9660:[0,.54986,0,0,.72222],9661:[0,.54986,0,0,.72222],9664:[.03517,.54986,0,0,.77778],9674:[.11111,.69224,0,0,.66667],9733:[.19444,.69224,0,0,.94445],10003:[0,.69224,0,0,.83334],10016:[0,.69224,0,0,.83334],10731:[.11111,.69224,0,0,.66667],10846:[.19444,.75583,0,0,.61111],10877:[.13667,.63667,0,0,.77778],10878:[.13667,.63667,0,0,.77778],10885:[.25583,.75583,0,0,.77778],10886:[.25583,.75583,0,0,.77778],10887:[.13597,.63597,0,0,.77778],10888:[.13597,.63597,0,0,.77778],10889:[.26167,.75726,0,0,.77778],10890:[.26167,.75726,0,0,.77778],10891:[.48256,.98256,0,0,.77778],10892:[.48256,.98256,0,0,.77778],10901:[.13667,.63667,0,0,.77778],10902:[.13667,.63667,0,0,.77778],10933:[.25142,.75726,0,0,.77778],10934:[.25142,.75726,0,0,.77778],10935:[.26167,.75726,0,0,.77778],10936:[.26167,.75726,0,0,.77778],10937:[.26167,.75726,0,0,.77778],10938:[.26167,.75726,0,0,.77778],10949:[.25583,.75583,0,0,.77778],10950:[.25583,.75583,0,0,.77778],10955:[.28481,.79383,0,0,.77778],10956:[.28481,.79383,0,0,.77778],57350:[.08167,.58167,0,0,.22222],57351:[.08167,.58167,0,0,.38889],57352:[.08167,.58167,0,0,.77778],57353:[0,.43056,.04028,0,.66667],57356:[.25142,.75726,0,0,.77778],57357:[.25142,.75726,0,0,.77778],57358:[.41951,.91951,0,0,.77778],57359:[.30274,.79383,0,0,.77778],57360:[.30274,.79383,0,0,.77778],57361:[.41951,.91951,0,0,.77778],57366:[.25142,.75726,0,0,.77778],57367:[.25142,.75726,0,0,.77778],57368:[.25142,.75726,0,0,.77778],57369:[.25142,.75726,0,0,.77778],57370:[.13597,.63597,0,0,.77778],57371:[.13597,.63597,0,0,.77778]},"Caligraphic-Regular":{32:[0,0,0,0,.25],65:[0,.68333,0,.19445,.79847],66:[0,.68333,.03041,.13889,.65681],67:[0,.68333,.05834,.13889,.52653],68:[0,.68333,.02778,.08334,.77139],69:[0,.68333,.08944,.11111,.52778],70:[0,.68333,.09931,.11111,.71875],71:[.09722,.68333,.0593,.11111,.59487],72:[0,.68333,.00965,.11111,.84452],73:[0,.68333,.07382,0,.54452],74:[.09722,.68333,.18472,.16667,.67778],75:[0,.68333,.01445,.05556,.76195],76:[0,.68333,0,.13889,.68972],77:[0,.68333,0,.13889,1.2009],78:[0,.68333,.14736,.08334,.82049],79:[0,.68333,.02778,.11111,.79611],80:[0,.68333,.08222,.08334,.69556],81:[.09722,.68333,0,.11111,.81667],82:[0,.68333,0,.08334,.8475],83:[0,.68333,.075,.13889,.60556],84:[0,.68333,.25417,0,.54464],85:[0,.68333,.09931,.08334,.62583],86:[0,.68333,.08222,0,.61278],87:[0,.68333,.08222,.08334,.98778],88:[0,.68333,.14643,.13889,.7133],89:[.09722,.68333,.08222,.08334,.66834],90:[0,.68333,.07944,.13889,.72473],160:[0,0,0,0,.25]},"Fraktur-Regular":{32:[0,0,0,0,.25],33:[0,.69141,0,0,.29574],34:[0,.69141,0,0,.21471],38:[0,.69141,0,0,.73786],39:[0,.69141,0,0,.21201],40:[.24982,.74947,0,0,.38865],41:[.24982,.74947,0,0,.38865],42:[0,.62119,0,0,.27764],43:[.08319,.58283,0,0,.75623],44:[0,.10803,0,0,.27764],45:[.08319,.58283,0,0,.75623],46:[0,.10803,0,0,.27764],47:[.24982,.74947,0,0,.50181],48:[0,.47534,0,0,.50181],49:[0,.47534,0,0,.50181],50:[0,.47534,0,0,.50181],51:[.18906,.47534,0,0,.50181],52:[.18906,.47534,0,0,.50181],53:[.18906,.47534,0,0,.50181],54:[0,.69141,0,0,.50181],55:[.18906,.47534,0,0,.50181],56:[0,.69141,0,0,.50181],57:[.18906,.47534,0,0,.50181],58:[0,.47534,0,0,.21606],59:[.12604,.47534,0,0,.21606],61:[-.13099,.36866,0,0,.75623],63:[0,.69141,0,0,.36245],65:[0,.69141,0,0,.7176],66:[0,.69141,0,0,.88397],67:[0,.69141,0,0,.61254],68:[0,.69141,0,0,.83158],69:[0,.69141,0,0,.66278],70:[.12604,.69141,0,0,.61119],71:[0,.69141,0,0,.78539],72:[.06302,.69141,0,0,.7203],73:[0,.69141,0,0,.55448],74:[.12604,.69141,0,0,.55231],75:[0,.69141,0,0,.66845],76:[0,.69141,0,0,.66602],77:[0,.69141,0,0,1.04953],78:[0,.69141,0,0,.83212],79:[0,.69141,0,0,.82699],80:[.18906,.69141,0,0,.82753],81:[.03781,.69141,0,0,.82699],82:[0,.69141,0,0,.82807],83:[0,.69141,0,0,.82861],84:[0,.69141,0,0,.66899],85:[0,.69141,0,0,.64576],86:[0,.69141,0,0,.83131],87:[0,.69141,0,0,1.04602],88:[0,.69141,0,0,.71922],89:[.18906,.69141,0,0,.83293],90:[.12604,.69141,0,0,.60201],91:[.24982,.74947,0,0,.27764],93:[.24982,.74947,0,0,.27764],94:[0,.69141,0,0,.49965],97:[0,.47534,0,0,.50046],98:[0,.69141,0,0,.51315],99:[0,.47534,0,0,.38946],100:[0,.62119,0,0,.49857],101:[0,.47534,0,0,.40053],102:[.18906,.69141,0,0,.32626],103:[.18906,.47534,0,0,.5037],104:[.18906,.69141,0,0,.52126],105:[0,.69141,0,0,.27899],106:[0,.69141,0,0,.28088],107:[0,.69141,0,0,.38946],108:[0,.69141,0,0,.27953],109:[0,.47534,0,0,.76676],110:[0,.47534,0,0,.52666],111:[0,.47534,0,0,.48885],112:[.18906,.52396,0,0,.50046],113:[.18906,.47534,0,0,.48912],114:[0,.47534,0,0,.38919],115:[0,.47534,0,0,.44266],116:[0,.62119,0,0,.33301],117:[0,.47534,0,0,.5172],118:[0,.52396,0,0,.5118],119:[0,.52396,0,0,.77351],120:[.18906,.47534,0,0,.38865],121:[.18906,.47534,0,0,.49884],122:[.18906,.47534,0,0,.39054],160:[0,0,0,0,.25],8216:[0,.69141,0,0,.21471],8217:[0,.69141,0,0,.21471],58112:[0,.62119,0,0,.49749],58113:[0,.62119,0,0,.4983],58114:[.18906,.69141,0,0,.33328],58115:[.18906,.69141,0,0,.32923],58116:[.18906,.47534,0,0,.50343],58117:[0,.69141,0,0,.33301],58118:[0,.62119,0,0,.33409],58119:[0,.47534,0,0,.50073]},"Main-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.35],34:[0,.69444,0,0,.60278],35:[.19444,.69444,0,0,.95833],36:[.05556,.75,0,0,.575],37:[.05556,.75,0,0,.95833],38:[0,.69444,0,0,.89444],39:[0,.69444,0,0,.31944],40:[.25,.75,0,0,.44722],41:[.25,.75,0,0,.44722],42:[0,.75,0,0,.575],43:[.13333,.63333,0,0,.89444],44:[.19444,.15556,0,0,.31944],45:[0,.44444,0,0,.38333],46:[0,.15556,0,0,.31944],47:[.25,.75,0,0,.575],48:[0,.64444,0,0,.575],49:[0,.64444,0,0,.575],50:[0,.64444,0,0,.575],51:[0,.64444,0,0,.575],52:[0,.64444,0,0,.575],53:[0,.64444,0,0,.575],54:[0,.64444,0,0,.575],55:[0,.64444,0,0,.575],56:[0,.64444,0,0,.575],57:[0,.64444,0,0,.575],58:[0,.44444,0,0,.31944],59:[.19444,.44444,0,0,.31944],60:[.08556,.58556,0,0,.89444],61:[-.10889,.39111,0,0,.89444],62:[.08556,.58556,0,0,.89444],63:[0,.69444,0,0,.54305],64:[0,.69444,0,0,.89444],65:[0,.68611,0,0,.86944],66:[0,.68611,0,0,.81805],67:[0,.68611,0,0,.83055],68:[0,.68611,0,0,.88194],69:[0,.68611,0,0,.75555],70:[0,.68611,0,0,.72361],71:[0,.68611,0,0,.90416],72:[0,.68611,0,0,.9],73:[0,.68611,0,0,.43611],74:[0,.68611,0,0,.59444],75:[0,.68611,0,0,.90138],76:[0,.68611,0,0,.69166],77:[0,.68611,0,0,1.09166],78:[0,.68611,0,0,.9],79:[0,.68611,0,0,.86388],80:[0,.68611,0,0,.78611],81:[.19444,.68611,0,0,.86388],82:[0,.68611,0,0,.8625],83:[0,.68611,0,0,.63889],84:[0,.68611,0,0,.8],85:[0,.68611,0,0,.88472],86:[0,.68611,.01597,0,.86944],87:[0,.68611,.01597,0,1.18888],88:[0,.68611,0,0,.86944],89:[0,.68611,.02875,0,.86944],90:[0,.68611,0,0,.70277],91:[.25,.75,0,0,.31944],92:[.25,.75,0,0,.575],93:[.25,.75,0,0,.31944],94:[0,.69444,0,0,.575],95:[.31,.13444,.03194,0,.575],97:[0,.44444,0,0,.55902],98:[0,.69444,0,0,.63889],99:[0,.44444,0,0,.51111],100:[0,.69444,0,0,.63889],101:[0,.44444,0,0,.52708],102:[0,.69444,.10903,0,.35139],103:[.19444,.44444,.01597,0,.575],104:[0,.69444,0,0,.63889],105:[0,.69444,0,0,.31944],106:[.19444,.69444,0,0,.35139],107:[0,.69444,0,0,.60694],108:[0,.69444,0,0,.31944],109:[0,.44444,0,0,.95833],110:[0,.44444,0,0,.63889],111:[0,.44444,0,0,.575],112:[.19444,.44444,0,0,.63889],113:[.19444,.44444,0,0,.60694],114:[0,.44444,0,0,.47361],115:[0,.44444,0,0,.45361],116:[0,.63492,0,0,.44722],117:[0,.44444,0,0,.63889],118:[0,.44444,.01597,0,.60694],119:[0,.44444,.01597,0,.83055],120:[0,.44444,0,0,.60694],121:[.19444,.44444,.01597,0,.60694],122:[0,.44444,0,0,.51111],123:[.25,.75,0,0,.575],124:[.25,.75,0,0,.31944],125:[.25,.75,0,0,.575],126:[.35,.34444,0,0,.575],160:[0,0,0,0,.25],163:[0,.69444,0,0,.86853],168:[0,.69444,0,0,.575],172:[0,.44444,0,0,.76666],176:[0,.69444,0,0,.86944],177:[.13333,.63333,0,0,.89444],184:[.17014,0,0,0,.51111],198:[0,.68611,0,0,1.04166],215:[.13333,.63333,0,0,.89444],216:[.04861,.73472,0,0,.89444],223:[0,.69444,0,0,.59722],230:[0,.44444,0,0,.83055],247:[.13333,.63333,0,0,.89444],248:[.09722,.54167,0,0,.575],305:[0,.44444,0,0,.31944],338:[0,.68611,0,0,1.16944],339:[0,.44444,0,0,.89444],567:[.19444,.44444,0,0,.35139],710:[0,.69444,0,0,.575],711:[0,.63194,0,0,.575],713:[0,.59611,0,0,.575],714:[0,.69444,0,0,.575],715:[0,.69444,0,0,.575],728:[0,.69444,0,0,.575],729:[0,.69444,0,0,.31944],730:[0,.69444,0,0,.86944],732:[0,.69444,0,0,.575],733:[0,.69444,0,0,.575],915:[0,.68611,0,0,.69166],916:[0,.68611,0,0,.95833],920:[0,.68611,0,0,.89444],923:[0,.68611,0,0,.80555],926:[0,.68611,0,0,.76666],928:[0,.68611,0,0,.9],931:[0,.68611,0,0,.83055],933:[0,.68611,0,0,.89444],934:[0,.68611,0,0,.83055],936:[0,.68611,0,0,.89444],937:[0,.68611,0,0,.83055],8211:[0,.44444,.03194,0,.575],8212:[0,.44444,.03194,0,1.14999],8216:[0,.69444,0,0,.31944],8217:[0,.69444,0,0,.31944],8220:[0,.69444,0,0,.60278],8221:[0,.69444,0,0,.60278],8224:[.19444,.69444,0,0,.51111],8225:[.19444,.69444,0,0,.51111],8242:[0,.55556,0,0,.34444],8407:[0,.72444,.15486,0,.575],8463:[0,.69444,0,0,.66759],8465:[0,.69444,0,0,.83055],8467:[0,.69444,0,0,.47361],8472:[.19444,.44444,0,0,.74027],8476:[0,.69444,0,0,.83055],8501:[0,.69444,0,0,.70277],8592:[-.10889,.39111,0,0,1.14999],8593:[.19444,.69444,0,0,.575],8594:[-.10889,.39111,0,0,1.14999],8595:[.19444,.69444,0,0,.575],8596:[-.10889,.39111,0,0,1.14999],8597:[.25,.75,0,0,.575],8598:[.19444,.69444,0,0,1.14999],8599:[.19444,.69444,0,0,1.14999],8600:[.19444,.69444,0,0,1.14999],8601:[.19444,.69444,0,0,1.14999],8636:[-.10889,.39111,0,0,1.14999],8637:[-.10889,.39111,0,0,1.14999],8640:[-.10889,.39111,0,0,1.14999],8641:[-.10889,.39111,0,0,1.14999],8656:[-.10889,.39111,0,0,1.14999],8657:[.19444,.69444,0,0,.70277],8658:[-.10889,.39111,0,0,1.14999],8659:[.19444,.69444,0,0,.70277],8660:[-.10889,.39111,0,0,1.14999],8661:[.25,.75,0,0,.70277],8704:[0,.69444,0,0,.63889],8706:[0,.69444,.06389,0,.62847],8707:[0,.69444,0,0,.63889],8709:[.05556,.75,0,0,.575],8711:[0,.68611,0,0,.95833],8712:[.08556,.58556,0,0,.76666],8715:[.08556,.58556,0,0,.76666],8722:[.13333,.63333,0,0,.89444],8723:[.13333,.63333,0,0,.89444],8725:[.25,.75,0,0,.575],8726:[.25,.75,0,0,.575],8727:[-.02778,.47222,0,0,.575],8728:[-.02639,.47361,0,0,.575],8729:[-.02639,.47361,0,0,.575],8730:[.18,.82,0,0,.95833],8733:[0,.44444,0,0,.89444],8734:[0,.44444,0,0,1.14999],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.31944],8741:[.25,.75,0,0,.575],8743:[0,.55556,0,0,.76666],8744:[0,.55556,0,0,.76666],8745:[0,.55556,0,0,.76666],8746:[0,.55556,0,0,.76666],8747:[.19444,.69444,.12778,0,.56875],8764:[-.10889,.39111,0,0,.89444],8768:[.19444,.69444,0,0,.31944],8771:[.00222,.50222,0,0,.89444],8773:[.027,.638,0,0,.894],8776:[.02444,.52444,0,0,.89444],8781:[.00222,.50222,0,0,.89444],8801:[.00222,.50222,0,0,.89444],8804:[.19667,.69667,0,0,.89444],8805:[.19667,.69667,0,0,.89444],8810:[.08556,.58556,0,0,1.14999],8811:[.08556,.58556,0,0,1.14999],8826:[.08556,.58556,0,0,.89444],8827:[.08556,.58556,0,0,.89444],8834:[.08556,.58556,0,0,.89444],8835:[.08556,.58556,0,0,.89444],8838:[.19667,.69667,0,0,.89444],8839:[.19667,.69667,0,0,.89444],8846:[0,.55556,0,0,.76666],8849:[.19667,.69667,0,0,.89444],8850:[.19667,.69667,0,0,.89444],8851:[0,.55556,0,0,.76666],8852:[0,.55556,0,0,.76666],8853:[.13333,.63333,0,0,.89444],8854:[.13333,.63333,0,0,.89444],8855:[.13333,.63333,0,0,.89444],8856:[.13333,.63333,0,0,.89444],8857:[.13333,.63333,0,0,.89444],8866:[0,.69444,0,0,.70277],8867:[0,.69444,0,0,.70277],8868:[0,.69444,0,0,.89444],8869:[0,.69444,0,0,.89444],8900:[-.02639,.47361,0,0,.575],8901:[-.02639,.47361,0,0,.31944],8902:[-.02778,.47222,0,0,.575],8968:[.25,.75,0,0,.51111],8969:[.25,.75,0,0,.51111],8970:[.25,.75,0,0,.51111],8971:[.25,.75,0,0,.51111],8994:[-.13889,.36111,0,0,1.14999],8995:[-.13889,.36111,0,0,1.14999],9651:[.19444,.69444,0,0,1.02222],9657:[-.02778,.47222,0,0,.575],9661:[.19444,.69444,0,0,1.02222],9667:[-.02778,.47222,0,0,.575],9711:[.19444,.69444,0,0,1.14999],9824:[.12963,.69444,0,0,.89444],9825:[.12963,.69444,0,0,.89444],9826:[.12963,.69444,0,0,.89444],9827:[.12963,.69444,0,0,.89444],9837:[0,.75,0,0,.44722],9838:[.19444,.69444,0,0,.44722],9839:[.19444,.69444,0,0,.44722],10216:[.25,.75,0,0,.44722],10217:[.25,.75,0,0,.44722],10815:[0,.68611,0,0,.9],10927:[.19667,.69667,0,0,.89444],10928:[.19667,.69667,0,0,.89444],57376:[.19444,.69444,0,0,0]},"Main-BoldItalic":{32:[0,0,0,0,.25],33:[0,.69444,.11417,0,.38611],34:[0,.69444,.07939,0,.62055],35:[.19444,.69444,.06833,0,.94444],37:[.05556,.75,.12861,0,.94444],38:[0,.69444,.08528,0,.88555],39:[0,.69444,.12945,0,.35555],40:[.25,.75,.15806,0,.47333],41:[.25,.75,.03306,0,.47333],42:[0,.75,.14333,0,.59111],43:[.10333,.60333,.03306,0,.88555],44:[.19444,.14722,0,0,.35555],45:[0,.44444,.02611,0,.41444],46:[0,.14722,0,0,.35555],47:[.25,.75,.15806,0,.59111],48:[0,.64444,.13167,0,.59111],49:[0,.64444,.13167,0,.59111],50:[0,.64444,.13167,0,.59111],51:[0,.64444,.13167,0,.59111],52:[.19444,.64444,.13167,0,.59111],53:[0,.64444,.13167,0,.59111],54:[0,.64444,.13167,0,.59111],55:[.19444,.64444,.13167,0,.59111],56:[0,.64444,.13167,0,.59111],57:[0,.64444,.13167,0,.59111],58:[0,.44444,.06695,0,.35555],59:[.19444,.44444,.06695,0,.35555],61:[-.10889,.39111,.06833,0,.88555],63:[0,.69444,.11472,0,.59111],64:[0,.69444,.09208,0,.88555],65:[0,.68611,0,0,.86555],66:[0,.68611,.0992,0,.81666],67:[0,.68611,.14208,0,.82666],68:[0,.68611,.09062,0,.87555],69:[0,.68611,.11431,0,.75666],70:[0,.68611,.12903,0,.72722],71:[0,.68611,.07347,0,.89527],72:[0,.68611,.17208,0,.8961],73:[0,.68611,.15681,0,.47166],74:[0,.68611,.145,0,.61055],75:[0,.68611,.14208,0,.89499],76:[0,.68611,0,0,.69777],77:[0,.68611,.17208,0,1.07277],78:[0,.68611,.17208,0,.8961],79:[0,.68611,.09062,0,.85499],80:[0,.68611,.0992,0,.78721],81:[.19444,.68611,.09062,0,.85499],82:[0,.68611,.02559,0,.85944],83:[0,.68611,.11264,0,.64999],84:[0,.68611,.12903,0,.7961],85:[0,.68611,.17208,0,.88083],86:[0,.68611,.18625,0,.86555],87:[0,.68611,.18625,0,1.15999],88:[0,.68611,.15681,0,.86555],89:[0,.68611,.19803,0,.86555],90:[0,.68611,.14208,0,.70888],91:[.25,.75,.1875,0,.35611],93:[.25,.75,.09972,0,.35611],94:[0,.69444,.06709,0,.59111],95:[.31,.13444,.09811,0,.59111],97:[0,.44444,.09426,0,.59111],98:[0,.69444,.07861,0,.53222],99:[0,.44444,.05222,0,.53222],100:[0,.69444,.10861,0,.59111],101:[0,.44444,.085,0,.53222],102:[.19444,.69444,.21778,0,.4],103:[.19444,.44444,.105,0,.53222],104:[0,.69444,.09426,0,.59111],105:[0,.69326,.11387,0,.35555],106:[.19444,.69326,.1672,0,.35555],107:[0,.69444,.11111,0,.53222],108:[0,.69444,.10861,0,.29666],109:[0,.44444,.09426,0,.94444],110:[0,.44444,.09426,0,.64999],111:[0,.44444,.07861,0,.59111],112:[.19444,.44444,.07861,0,.59111],113:[.19444,.44444,.105,0,.53222],114:[0,.44444,.11111,0,.50167],115:[0,.44444,.08167,0,.48694],116:[0,.63492,.09639,0,.385],117:[0,.44444,.09426,0,.62055],118:[0,.44444,.11111,0,.53222],119:[0,.44444,.11111,0,.76777],120:[0,.44444,.12583,0,.56055],121:[.19444,.44444,.105,0,.56166],122:[0,.44444,.13889,0,.49055],126:[.35,.34444,.11472,0,.59111],160:[0,0,0,0,.25],168:[0,.69444,.11473,0,.59111],176:[0,.69444,0,0,.94888],184:[.17014,0,0,0,.53222],198:[0,.68611,.11431,0,1.02277],216:[.04861,.73472,.09062,0,.88555],223:[.19444,.69444,.09736,0,.665],230:[0,.44444,.085,0,.82666],248:[.09722,.54167,.09458,0,.59111],305:[0,.44444,.09426,0,.35555],338:[0,.68611,.11431,0,1.14054],339:[0,.44444,.085,0,.82666],567:[.19444,.44444,.04611,0,.385],710:[0,.69444,.06709,0,.59111],711:[0,.63194,.08271,0,.59111],713:[0,.59444,.10444,0,.59111],714:[0,.69444,.08528,0,.59111],715:[0,.69444,0,0,.59111],728:[0,.69444,.10333,0,.59111],729:[0,.69444,.12945,0,.35555],730:[0,.69444,0,0,.94888],732:[0,.69444,.11472,0,.59111],733:[0,.69444,.11472,0,.59111],915:[0,.68611,.12903,0,.69777],916:[0,.68611,0,0,.94444],920:[0,.68611,.09062,0,.88555],923:[0,.68611,0,0,.80666],926:[0,.68611,.15092,0,.76777],928:[0,.68611,.17208,0,.8961],931:[0,.68611,.11431,0,.82666],933:[0,.68611,.10778,0,.88555],934:[0,.68611,.05632,0,.82666],936:[0,.68611,.10778,0,.88555],937:[0,.68611,.0992,0,.82666],8211:[0,.44444,.09811,0,.59111],8212:[0,.44444,.09811,0,1.18221],8216:[0,.69444,.12945,0,.35555],8217:[0,.69444,.12945,0,.35555],8220:[0,.69444,.16772,0,.62055],8221:[0,.69444,.07939,0,.62055]},"Main-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.12417,0,.30667],34:[0,.69444,.06961,0,.51444],35:[.19444,.69444,.06616,0,.81777],37:[.05556,.75,.13639,0,.81777],38:[0,.69444,.09694,0,.76666],39:[0,.69444,.12417,0,.30667],40:[.25,.75,.16194,0,.40889],41:[.25,.75,.03694,0,.40889],42:[0,.75,.14917,0,.51111],43:[.05667,.56167,.03694,0,.76666],44:[.19444,.10556,0,0,.30667],45:[0,.43056,.02826,0,.35778],46:[0,.10556,0,0,.30667],47:[.25,.75,.16194,0,.51111],48:[0,.64444,.13556,0,.51111],49:[0,.64444,.13556,0,.51111],50:[0,.64444,.13556,0,.51111],51:[0,.64444,.13556,0,.51111],52:[.19444,.64444,.13556,0,.51111],53:[0,.64444,.13556,0,.51111],54:[0,.64444,.13556,0,.51111],55:[.19444,.64444,.13556,0,.51111],56:[0,.64444,.13556,0,.51111],57:[0,.64444,.13556,0,.51111],58:[0,.43056,.0582,0,.30667],59:[.19444,.43056,.0582,0,.30667],61:[-.13313,.36687,.06616,0,.76666],63:[0,.69444,.1225,0,.51111],64:[0,.69444,.09597,0,.76666],65:[0,.68333,0,0,.74333],66:[0,.68333,.10257,0,.70389],67:[0,.68333,.14528,0,.71555],68:[0,.68333,.09403,0,.755],69:[0,.68333,.12028,0,.67833],70:[0,.68333,.13305,0,.65277],71:[0,.68333,.08722,0,.77361],72:[0,.68333,.16389,0,.74333],73:[0,.68333,.15806,0,.38555],74:[0,.68333,.14028,0,.525],75:[0,.68333,.14528,0,.76888],76:[0,.68333,0,0,.62722],77:[0,.68333,.16389,0,.89666],78:[0,.68333,.16389,0,.74333],79:[0,.68333,.09403,0,.76666],80:[0,.68333,.10257,0,.67833],81:[.19444,.68333,.09403,0,.76666],82:[0,.68333,.03868,0,.72944],83:[0,.68333,.11972,0,.56222],84:[0,.68333,.13305,0,.71555],85:[0,.68333,.16389,0,.74333],86:[0,.68333,.18361,0,.74333],87:[0,.68333,.18361,0,.99888],88:[0,.68333,.15806,0,.74333],89:[0,.68333,.19383,0,.74333],90:[0,.68333,.14528,0,.61333],91:[.25,.75,.1875,0,.30667],93:[.25,.75,.10528,0,.30667],94:[0,.69444,.06646,0,.51111],95:[.31,.12056,.09208,0,.51111],97:[0,.43056,.07671,0,.51111],98:[0,.69444,.06312,0,.46],99:[0,.43056,.05653,0,.46],100:[0,.69444,.10333,0,.51111],101:[0,.43056,.07514,0,.46],102:[.19444,.69444,.21194,0,.30667],103:[.19444,.43056,.08847,0,.46],104:[0,.69444,.07671,0,.51111],105:[0,.65536,.1019,0,.30667],106:[.19444,.65536,.14467,0,.30667],107:[0,.69444,.10764,0,.46],108:[0,.69444,.10333,0,.25555],109:[0,.43056,.07671,0,.81777],110:[0,.43056,.07671,0,.56222],111:[0,.43056,.06312,0,.51111],112:[.19444,.43056,.06312,0,.51111],113:[.19444,.43056,.08847,0,.46],114:[0,.43056,.10764,0,.42166],115:[0,.43056,.08208,0,.40889],116:[0,.61508,.09486,0,.33222],117:[0,.43056,.07671,0,.53666],118:[0,.43056,.10764,0,.46],119:[0,.43056,.10764,0,.66444],120:[0,.43056,.12042,0,.46389],121:[.19444,.43056,.08847,0,.48555],122:[0,.43056,.12292,0,.40889],126:[.35,.31786,.11585,0,.51111],160:[0,0,0,0,.25],168:[0,.66786,.10474,0,.51111],176:[0,.69444,0,0,.83129],184:[.17014,0,0,0,.46],198:[0,.68333,.12028,0,.88277],216:[.04861,.73194,.09403,0,.76666],223:[.19444,.69444,.10514,0,.53666],230:[0,.43056,.07514,0,.71555],248:[.09722,.52778,.09194,0,.51111],338:[0,.68333,.12028,0,.98499],339:[0,.43056,.07514,0,.71555],710:[0,.69444,.06646,0,.51111],711:[0,.62847,.08295,0,.51111],713:[0,.56167,.10333,0,.51111],714:[0,.69444,.09694,0,.51111],715:[0,.69444,0,0,.51111],728:[0,.69444,.10806,0,.51111],729:[0,.66786,.11752,0,.30667],730:[0,.69444,0,0,.83129],732:[0,.66786,.11585,0,.51111],733:[0,.69444,.1225,0,.51111],915:[0,.68333,.13305,0,.62722],916:[0,.68333,0,0,.81777],920:[0,.68333,.09403,0,.76666],923:[0,.68333,0,0,.69222],926:[0,.68333,.15294,0,.66444],928:[0,.68333,.16389,0,.74333],931:[0,.68333,.12028,0,.71555],933:[0,.68333,.11111,0,.76666],934:[0,.68333,.05986,0,.71555],936:[0,.68333,.11111,0,.76666],937:[0,.68333,.10257,0,.71555],8211:[0,.43056,.09208,0,.51111],8212:[0,.43056,.09208,0,1.02222],8216:[0,.69444,.12417,0,.30667],8217:[0,.69444,.12417,0,.30667],8220:[0,.69444,.1685,0,.51444],8221:[0,.69444,.06961,0,.51444],8463:[0,.68889,0,0,.54028]},"Main-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.27778],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.77778],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.19444,.10556,0,0,.27778],45:[0,.43056,0,0,.33333],46:[0,.10556,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.64444,0,0,.5],49:[0,.64444,0,0,.5],50:[0,.64444,0,0,.5],51:[0,.64444,0,0,.5],52:[0,.64444,0,0,.5],53:[0,.64444,0,0,.5],54:[0,.64444,0,0,.5],55:[0,.64444,0,0,.5],56:[0,.64444,0,0,.5],57:[0,.64444,0,0,.5],58:[0,.43056,0,0,.27778],59:[.19444,.43056,0,0,.27778],60:[.0391,.5391,0,0,.77778],61:[-.13313,.36687,0,0,.77778],62:[.0391,.5391,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.77778],65:[0,.68333,0,0,.75],66:[0,.68333,0,0,.70834],67:[0,.68333,0,0,.72222],68:[0,.68333,0,0,.76389],69:[0,.68333,0,0,.68056],70:[0,.68333,0,0,.65278],71:[0,.68333,0,0,.78472],72:[0,.68333,0,0,.75],73:[0,.68333,0,0,.36111],74:[0,.68333,0,0,.51389],75:[0,.68333,0,0,.77778],76:[0,.68333,0,0,.625],77:[0,.68333,0,0,.91667],78:[0,.68333,0,0,.75],79:[0,.68333,0,0,.77778],80:[0,.68333,0,0,.68056],81:[.19444,.68333,0,0,.77778],82:[0,.68333,0,0,.73611],83:[0,.68333,0,0,.55556],84:[0,.68333,0,0,.72222],85:[0,.68333,0,0,.75],86:[0,.68333,.01389,0,.75],87:[0,.68333,.01389,0,1.02778],88:[0,.68333,0,0,.75],89:[0,.68333,.025,0,.75],90:[0,.68333,0,0,.61111],91:[.25,.75,0,0,.27778],92:[.25,.75,0,0,.5],93:[.25,.75,0,0,.27778],94:[0,.69444,0,0,.5],95:[.31,.12056,.02778,0,.5],97:[0,.43056,0,0,.5],98:[0,.69444,0,0,.55556],99:[0,.43056,0,0,.44445],100:[0,.69444,0,0,.55556],101:[0,.43056,0,0,.44445],102:[0,.69444,.07778,0,.30556],103:[.19444,.43056,.01389,0,.5],104:[0,.69444,0,0,.55556],105:[0,.66786,0,0,.27778],106:[.19444,.66786,0,0,.30556],107:[0,.69444,0,0,.52778],108:[0,.69444,0,0,.27778],109:[0,.43056,0,0,.83334],110:[0,.43056,0,0,.55556],111:[0,.43056,0,0,.5],112:[.19444,.43056,0,0,.55556],113:[.19444,.43056,0,0,.52778],114:[0,.43056,0,0,.39167],115:[0,.43056,0,0,.39445],116:[0,.61508,0,0,.38889],117:[0,.43056,0,0,.55556],118:[0,.43056,.01389,0,.52778],119:[0,.43056,.01389,0,.72222],120:[0,.43056,0,0,.52778],121:[.19444,.43056,.01389,0,.52778],122:[0,.43056,0,0,.44445],123:[.25,.75,0,0,.5],124:[.25,.75,0,0,.27778],125:[.25,.75,0,0,.5],126:[.35,.31786,0,0,.5],160:[0,0,0,0,.25],163:[0,.69444,0,0,.76909],167:[.19444,.69444,0,0,.44445],168:[0,.66786,0,0,.5],172:[0,.43056,0,0,.66667],176:[0,.69444,0,0,.75],177:[.08333,.58333,0,0,.77778],182:[.19444,.69444,0,0,.61111],184:[.17014,0,0,0,.44445],198:[0,.68333,0,0,.90278],215:[.08333,.58333,0,0,.77778],216:[.04861,.73194,0,0,.77778],223:[0,.69444,0,0,.5],230:[0,.43056,0,0,.72222],247:[.08333,.58333,0,0,.77778],248:[.09722,.52778,0,0,.5],305:[0,.43056,0,0,.27778],338:[0,.68333,0,0,1.01389],339:[0,.43056,0,0,.77778],567:[.19444,.43056,0,0,.30556],710:[0,.69444,0,0,.5],711:[0,.62847,0,0,.5],713:[0,.56778,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.66786,0,0,.27778],730:[0,.69444,0,0,.75],732:[0,.66786,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.68333,0,0,.625],916:[0,.68333,0,0,.83334],920:[0,.68333,0,0,.77778],923:[0,.68333,0,0,.69445],926:[0,.68333,0,0,.66667],928:[0,.68333,0,0,.75],931:[0,.68333,0,0,.72222],933:[0,.68333,0,0,.77778],934:[0,.68333,0,0,.72222],936:[0,.68333,0,0,.77778],937:[0,.68333,0,0,.72222],8211:[0,.43056,.02778,0,.5],8212:[0,.43056,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5],8224:[.19444,.69444,0,0,.44445],8225:[.19444,.69444,0,0,.44445],8230:[0,.123,0,0,1.172],8242:[0,.55556,0,0,.275],8407:[0,.71444,.15382,0,.5],8463:[0,.68889,0,0,.54028],8465:[0,.69444,0,0,.72222],8467:[0,.69444,0,.11111,.41667],8472:[.19444,.43056,0,.11111,.63646],8476:[0,.69444,0,0,.72222],8501:[0,.69444,0,0,.61111],8592:[-.13313,.36687,0,0,1],8593:[.19444,.69444,0,0,.5],8594:[-.13313,.36687,0,0,1],8595:[.19444,.69444,0,0,.5],8596:[-.13313,.36687,0,0,1],8597:[.25,.75,0,0,.5],8598:[.19444,.69444,0,0,1],8599:[.19444,.69444,0,0,1],8600:[.19444,.69444,0,0,1],8601:[.19444,.69444,0,0,1],8614:[.011,.511,0,0,1],8617:[.011,.511,0,0,1.126],8618:[.011,.511,0,0,1.126],8636:[-.13313,.36687,0,0,1],8637:[-.13313,.36687,0,0,1],8640:[-.13313,.36687,0,0,1],8641:[-.13313,.36687,0,0,1],8652:[.011,.671,0,0,1],8656:[-.13313,.36687,0,0,1],8657:[.19444,.69444,0,0,.61111],8658:[-.13313,.36687,0,0,1],8659:[.19444,.69444,0,0,.61111],8660:[-.13313,.36687,0,0,1],8661:[.25,.75,0,0,.61111],8704:[0,.69444,0,0,.55556],8706:[0,.69444,.05556,.08334,.5309],8707:[0,.69444,0,0,.55556],8709:[.05556,.75,0,0,.5],8711:[0,.68333,0,0,.83334],8712:[.0391,.5391,0,0,.66667],8715:[.0391,.5391,0,0,.66667],8722:[.08333,.58333,0,0,.77778],8723:[.08333,.58333,0,0,.77778],8725:[.25,.75,0,0,.5],8726:[.25,.75,0,0,.5],8727:[-.03472,.46528,0,0,.5],8728:[-.05555,.44445,0,0,.5],8729:[-.05555,.44445,0,0,.5],8730:[.2,.8,0,0,.83334],8733:[0,.43056,0,0,.77778],8734:[0,.43056,0,0,1],8736:[0,.69224,0,0,.72222],8739:[.25,.75,0,0,.27778],8741:[.25,.75,0,0,.5],8743:[0,.55556,0,0,.66667],8744:[0,.55556,0,0,.66667],8745:[0,.55556,0,0,.66667],8746:[0,.55556,0,0,.66667],8747:[.19444,.69444,.11111,0,.41667],8764:[-.13313,.36687,0,0,.77778],8768:[.19444,.69444,0,0,.27778],8771:[-.03625,.46375,0,0,.77778],8773:[-.022,.589,0,0,.778],8776:[-.01688,.48312,0,0,.77778],8781:[-.03625,.46375,0,0,.77778],8784:[-.133,.673,0,0,.778],8801:[-.03625,.46375,0,0,.77778],8804:[.13597,.63597,0,0,.77778],8805:[.13597,.63597,0,0,.77778],8810:[.0391,.5391,0,0,1],8811:[.0391,.5391,0,0,1],8826:[.0391,.5391,0,0,.77778],8827:[.0391,.5391,0,0,.77778],8834:[.0391,.5391,0,0,.77778],8835:[.0391,.5391,0,0,.77778],8838:[.13597,.63597,0,0,.77778],8839:[.13597,.63597,0,0,.77778],8846:[0,.55556,0,0,.66667],8849:[.13597,.63597,0,0,.77778],8850:[.13597,.63597,0,0,.77778],8851:[0,.55556,0,0,.66667],8852:[0,.55556,0,0,.66667],8853:[.08333,.58333,0,0,.77778],8854:[.08333,.58333,0,0,.77778],8855:[.08333,.58333,0,0,.77778],8856:[.08333,.58333,0,0,.77778],8857:[.08333,.58333,0,0,.77778],8866:[0,.69444,0,0,.61111],8867:[0,.69444,0,0,.61111],8868:[0,.69444,0,0,.77778],8869:[0,.69444,0,0,.77778],8872:[.249,.75,0,0,.867],8900:[-.05555,.44445,0,0,.5],8901:[-.05555,.44445,0,0,.27778],8902:[-.03472,.46528,0,0,.5],8904:[.005,.505,0,0,.9],8942:[.03,.903,0,0,.278],8943:[-.19,.313,0,0,1.172],8945:[-.1,.823,0,0,1.282],8968:[.25,.75,0,0,.44445],8969:[.25,.75,0,0,.44445],8970:[.25,.75,0,0,.44445],8971:[.25,.75,0,0,.44445],8994:[-.14236,.35764,0,0,1],8995:[-.14236,.35764,0,0,1],9136:[.244,.744,0,0,.412],9137:[.244,.745,0,0,.412],9651:[.19444,.69444,0,0,.88889],9657:[-.03472,.46528,0,0,.5],9661:[.19444,.69444,0,0,.88889],9667:[-.03472,.46528,0,0,.5],9711:[.19444,.69444,0,0,1],9824:[.12963,.69444,0,0,.77778],9825:[.12963,.69444,0,0,.77778],9826:[.12963,.69444,0,0,.77778],9827:[.12963,.69444,0,0,.77778],9837:[0,.75,0,0,.38889],9838:[.19444,.69444,0,0,.38889],9839:[.19444,.69444,0,0,.38889],10216:[.25,.75,0,0,.38889],10217:[.25,.75,0,0,.38889],10222:[.244,.744,0,0,.412],10223:[.244,.745,0,0,.412],10229:[.011,.511,0,0,1.609],10230:[.011,.511,0,0,1.638],10231:[.011,.511,0,0,1.859],10232:[.024,.525,0,0,1.609],10233:[.024,.525,0,0,1.638],10234:[.024,.525,0,0,1.858],10236:[.011,.511,0,0,1.638],10815:[0,.68333,0,0,.75],10927:[.13597,.63597,0,0,.77778],10928:[.13597,.63597,0,0,.77778],57376:[.19444,.69444,0,0,0]},"Math-BoldItalic":{32:[0,0,0,0,.25],48:[0,.44444,0,0,.575],49:[0,.44444,0,0,.575],50:[0,.44444,0,0,.575],51:[.19444,.44444,0,0,.575],52:[.19444,.44444,0,0,.575],53:[.19444,.44444,0,0,.575],54:[0,.64444,0,0,.575],55:[.19444,.44444,0,0,.575],56:[0,.64444,0,0,.575],57:[.19444,.44444,0,0,.575],65:[0,.68611,0,0,.86944],66:[0,.68611,.04835,0,.8664],67:[0,.68611,.06979,0,.81694],68:[0,.68611,.03194,0,.93812],69:[0,.68611,.05451,0,.81007],70:[0,.68611,.15972,0,.68889],71:[0,.68611,0,0,.88673],72:[0,.68611,.08229,0,.98229],73:[0,.68611,.07778,0,.51111],74:[0,.68611,.10069,0,.63125],75:[0,.68611,.06979,0,.97118],76:[0,.68611,0,0,.75555],77:[0,.68611,.11424,0,1.14201],78:[0,.68611,.11424,0,.95034],79:[0,.68611,.03194,0,.83666],80:[0,.68611,.15972,0,.72309],81:[.19444,.68611,0,0,.86861],82:[0,.68611,.00421,0,.87235],83:[0,.68611,.05382,0,.69271],84:[0,.68611,.15972,0,.63663],85:[0,.68611,.11424,0,.80027],86:[0,.68611,.25555,0,.67778],87:[0,.68611,.15972,0,1.09305],88:[0,.68611,.07778,0,.94722],89:[0,.68611,.25555,0,.67458],90:[0,.68611,.06979,0,.77257],97:[0,.44444,0,0,.63287],98:[0,.69444,0,0,.52083],99:[0,.44444,0,0,.51342],100:[0,.69444,0,0,.60972],101:[0,.44444,0,0,.55361],102:[.19444,.69444,.11042,0,.56806],103:[.19444,.44444,.03704,0,.5449],104:[0,.69444,0,0,.66759],105:[0,.69326,0,0,.4048],106:[.19444,.69326,.0622,0,.47083],107:[0,.69444,.01852,0,.6037],108:[0,.69444,.0088,0,.34815],109:[0,.44444,0,0,1.0324],110:[0,.44444,0,0,.71296],111:[0,.44444,0,0,.58472],112:[.19444,.44444,0,0,.60092],113:[.19444,.44444,.03704,0,.54213],114:[0,.44444,.03194,0,.5287],115:[0,.44444,0,0,.53125],116:[0,.63492,0,0,.41528],117:[0,.44444,0,0,.68102],118:[0,.44444,.03704,0,.56666],119:[0,.44444,.02778,0,.83148],120:[0,.44444,0,0,.65903],121:[.19444,.44444,.03704,0,.59028],122:[0,.44444,.04213,0,.55509],160:[0,0,0,0,.25],915:[0,.68611,.15972,0,.65694],916:[0,.68611,0,0,.95833],920:[0,.68611,.03194,0,.86722],923:[0,.68611,0,0,.80555],926:[0,.68611,.07458,0,.84125],928:[0,.68611,.08229,0,.98229],931:[0,.68611,.05451,0,.88507],933:[0,.68611,.15972,0,.67083],934:[0,.68611,0,0,.76666],936:[0,.68611,.11653,0,.71402],937:[0,.68611,.04835,0,.8789],945:[0,.44444,0,0,.76064],946:[.19444,.69444,.03403,0,.65972],947:[.19444,.44444,.06389,0,.59003],948:[0,.69444,.03819,0,.52222],949:[0,.44444,0,0,.52882],950:[.19444,.69444,.06215,0,.50833],951:[.19444,.44444,.03704,0,.6],952:[0,.69444,.03194,0,.5618],953:[0,.44444,0,0,.41204],954:[0,.44444,0,0,.66759],955:[0,.69444,0,0,.67083],956:[.19444,.44444,0,0,.70787],957:[0,.44444,.06898,0,.57685],958:[.19444,.69444,.03021,0,.50833],959:[0,.44444,0,0,.58472],960:[0,.44444,.03704,0,.68241],961:[.19444,.44444,0,0,.6118],962:[.09722,.44444,.07917,0,.42361],963:[0,.44444,.03704,0,.68588],964:[0,.44444,.13472,0,.52083],965:[0,.44444,.03704,0,.63055],966:[.19444,.44444,0,0,.74722],967:[.19444,.44444,0,0,.71805],968:[.19444,.69444,.03704,0,.75833],969:[0,.44444,.03704,0,.71782],977:[0,.69444,0,0,.69155],981:[.19444,.69444,0,0,.7125],982:[0,.44444,.03194,0,.975],1009:[.19444,.44444,0,0,.6118],1013:[0,.44444,0,0,.48333],57649:[0,.44444,0,0,.39352],57911:[.19444,.44444,0,0,.43889]},"Math-Italic":{32:[0,0,0,0,.25],48:[0,.43056,0,0,.5],49:[0,.43056,0,0,.5],50:[0,.43056,0,0,.5],51:[.19444,.43056,0,0,.5],52:[.19444,.43056,0,0,.5],53:[.19444,.43056,0,0,.5],54:[0,.64444,0,0,.5],55:[.19444,.43056,0,0,.5],56:[0,.64444,0,0,.5],57:[.19444,.43056,0,0,.5],65:[0,.68333,0,.13889,.75],66:[0,.68333,.05017,.08334,.75851],67:[0,.68333,.07153,.08334,.71472],68:[0,.68333,.02778,.05556,.82792],69:[0,.68333,.05764,.08334,.7382],70:[0,.68333,.13889,.08334,.64306],71:[0,.68333,0,.08334,.78625],72:[0,.68333,.08125,.05556,.83125],73:[0,.68333,.07847,.11111,.43958],74:[0,.68333,.09618,.16667,.55451],75:[0,.68333,.07153,.05556,.84931],76:[0,.68333,0,.02778,.68056],77:[0,.68333,.10903,.08334,.97014],78:[0,.68333,.10903,.08334,.80347],79:[0,.68333,.02778,.08334,.76278],80:[0,.68333,.13889,.08334,.64201],81:[.19444,.68333,0,.08334,.79056],82:[0,.68333,.00773,.08334,.75929],83:[0,.68333,.05764,.08334,.6132],84:[0,.68333,.13889,.08334,.58438],85:[0,.68333,.10903,.02778,.68278],86:[0,.68333,.22222,0,.58333],87:[0,.68333,.13889,0,.94445],88:[0,.68333,.07847,.08334,.82847],89:[0,.68333,.22222,0,.58056],90:[0,.68333,.07153,.08334,.68264],97:[0,.43056,0,0,.52859],98:[0,.69444,0,0,.42917],99:[0,.43056,0,.05556,.43276],100:[0,.69444,0,.16667,.52049],101:[0,.43056,0,.05556,.46563],102:[.19444,.69444,.10764,.16667,.48959],103:[.19444,.43056,.03588,.02778,.47697],104:[0,.69444,0,0,.57616],105:[0,.65952,0,0,.34451],106:[.19444,.65952,.05724,0,.41181],107:[0,.69444,.03148,0,.5206],108:[0,.69444,.01968,.08334,.29838],109:[0,.43056,0,0,.87801],110:[0,.43056,0,0,.60023],111:[0,.43056,0,.05556,.48472],112:[.19444,.43056,0,.08334,.50313],113:[.19444,.43056,.03588,.08334,.44641],114:[0,.43056,.02778,.05556,.45116],115:[0,.43056,0,.05556,.46875],116:[0,.61508,0,.08334,.36111],117:[0,.43056,0,.02778,.57246],118:[0,.43056,.03588,.02778,.48472],119:[0,.43056,.02691,.08334,.71592],120:[0,.43056,0,.02778,.57153],121:[.19444,.43056,.03588,.05556,.49028],122:[0,.43056,.04398,.05556,.46505],160:[0,0,0,0,.25],915:[0,.68333,.13889,.08334,.61528],916:[0,.68333,0,.16667,.83334],920:[0,.68333,.02778,.08334,.76278],923:[0,.68333,0,.16667,.69445],926:[0,.68333,.07569,.08334,.74236],928:[0,.68333,.08125,.05556,.83125],931:[0,.68333,.05764,.08334,.77986],933:[0,.68333,.13889,.05556,.58333],934:[0,.68333,0,.08334,.66667],936:[0,.68333,.11,.05556,.61222],937:[0,.68333,.05017,.08334,.7724],945:[0,.43056,.0037,.02778,.6397],946:[.19444,.69444,.05278,.08334,.56563],947:[.19444,.43056,.05556,0,.51773],948:[0,.69444,.03785,.05556,.44444],949:[0,.43056,0,.08334,.46632],950:[.19444,.69444,.07378,.08334,.4375],951:[.19444,.43056,.03588,.05556,.49653],952:[0,.69444,.02778,.08334,.46944],953:[0,.43056,0,.05556,.35394],954:[0,.43056,0,0,.57616],955:[0,.69444,0,0,.58334],956:[.19444,.43056,0,.02778,.60255],957:[0,.43056,.06366,.02778,.49398],958:[.19444,.69444,.04601,.11111,.4375],959:[0,.43056,0,.05556,.48472],960:[0,.43056,.03588,0,.57003],961:[.19444,.43056,0,.08334,.51702],962:[.09722,.43056,.07986,.08334,.36285],963:[0,.43056,.03588,0,.57141],964:[0,.43056,.1132,.02778,.43715],965:[0,.43056,.03588,.02778,.54028],966:[.19444,.43056,0,.08334,.65417],967:[.19444,.43056,0,.05556,.62569],968:[.19444,.69444,.03588,.11111,.65139],969:[0,.43056,.03588,0,.62245],977:[0,.69444,0,.08334,.59144],981:[.19444,.69444,0,.08334,.59583],982:[0,.43056,.02778,0,.82813],1009:[.19444,.43056,0,.08334,.51702],1013:[0,.43056,0,.05556,.4059],57649:[0,.43056,0,.02778,.32246],57911:[.19444,.43056,0,.08334,.38403]},"SansSerif-Bold":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.36667],34:[0,.69444,0,0,.55834],35:[.19444,.69444,0,0,.91667],36:[.05556,.75,0,0,.55],37:[.05556,.75,0,0,1.02912],38:[0,.69444,0,0,.83056],39:[0,.69444,0,0,.30556],40:[.25,.75,0,0,.42778],41:[.25,.75,0,0,.42778],42:[0,.75,0,0,.55],43:[.11667,.61667,0,0,.85556],44:[.10556,.13056,0,0,.30556],45:[0,.45833,0,0,.36667],46:[0,.13056,0,0,.30556],47:[.25,.75,0,0,.55],48:[0,.69444,0,0,.55],49:[0,.69444,0,0,.55],50:[0,.69444,0,0,.55],51:[0,.69444,0,0,.55],52:[0,.69444,0,0,.55],53:[0,.69444,0,0,.55],54:[0,.69444,0,0,.55],55:[0,.69444,0,0,.55],56:[0,.69444,0,0,.55],57:[0,.69444,0,0,.55],58:[0,.45833,0,0,.30556],59:[.10556,.45833,0,0,.30556],61:[-.09375,.40625,0,0,.85556],63:[0,.69444,0,0,.51945],64:[0,.69444,0,0,.73334],65:[0,.69444,0,0,.73334],66:[0,.69444,0,0,.73334],67:[0,.69444,0,0,.70278],68:[0,.69444,0,0,.79445],69:[0,.69444,0,0,.64167],70:[0,.69444,0,0,.61111],71:[0,.69444,0,0,.73334],72:[0,.69444,0,0,.79445],73:[0,.69444,0,0,.33056],74:[0,.69444,0,0,.51945],75:[0,.69444,0,0,.76389],76:[0,.69444,0,0,.58056],77:[0,.69444,0,0,.97778],78:[0,.69444,0,0,.79445],79:[0,.69444,0,0,.79445],80:[0,.69444,0,0,.70278],81:[.10556,.69444,0,0,.79445],82:[0,.69444,0,0,.70278],83:[0,.69444,0,0,.61111],84:[0,.69444,0,0,.73334],85:[0,.69444,0,0,.76389],86:[0,.69444,.01528,0,.73334],87:[0,.69444,.01528,0,1.03889],88:[0,.69444,0,0,.73334],89:[0,.69444,.0275,0,.73334],90:[0,.69444,0,0,.67223],91:[.25,.75,0,0,.34306],93:[.25,.75,0,0,.34306],94:[0,.69444,0,0,.55],95:[.35,.10833,.03056,0,.55],97:[0,.45833,0,0,.525],98:[0,.69444,0,0,.56111],99:[0,.45833,0,0,.48889],100:[0,.69444,0,0,.56111],101:[0,.45833,0,0,.51111],102:[0,.69444,.07639,0,.33611],103:[.19444,.45833,.01528,0,.55],104:[0,.69444,0,0,.56111],105:[0,.69444,0,0,.25556],106:[.19444,.69444,0,0,.28611],107:[0,.69444,0,0,.53056],108:[0,.69444,0,0,.25556],109:[0,.45833,0,0,.86667],110:[0,.45833,0,0,.56111],111:[0,.45833,0,0,.55],112:[.19444,.45833,0,0,.56111],113:[.19444,.45833,0,0,.56111],114:[0,.45833,.01528,0,.37222],115:[0,.45833,0,0,.42167],116:[0,.58929,0,0,.40417],117:[0,.45833,0,0,.56111],118:[0,.45833,.01528,0,.5],119:[0,.45833,.01528,0,.74445],120:[0,.45833,0,0,.5],121:[.19444,.45833,.01528,0,.5],122:[0,.45833,0,0,.47639],126:[.35,.34444,0,0,.55],160:[0,0,0,0,.25],168:[0,.69444,0,0,.55],176:[0,.69444,0,0,.73334],180:[0,.69444,0,0,.55],184:[.17014,0,0,0,.48889],305:[0,.45833,0,0,.25556],567:[.19444,.45833,0,0,.28611],710:[0,.69444,0,0,.55],711:[0,.63542,0,0,.55],713:[0,.63778,0,0,.55],728:[0,.69444,0,0,.55],729:[0,.69444,0,0,.30556],730:[0,.69444,0,0,.73334],732:[0,.69444,0,0,.55],733:[0,.69444,0,0,.55],915:[0,.69444,0,0,.58056],916:[0,.69444,0,0,.91667],920:[0,.69444,0,0,.85556],923:[0,.69444,0,0,.67223],926:[0,.69444,0,0,.73334],928:[0,.69444,0,0,.79445],931:[0,.69444,0,0,.79445],933:[0,.69444,0,0,.85556],934:[0,.69444,0,0,.79445],936:[0,.69444,0,0,.85556],937:[0,.69444,0,0,.79445],8211:[0,.45833,.03056,0,.55],8212:[0,.45833,.03056,0,1.10001],8216:[0,.69444,0,0,.30556],8217:[0,.69444,0,0,.30556],8220:[0,.69444,0,0,.55834],8221:[0,.69444,0,0,.55834]},"SansSerif-Italic":{32:[0,0,0,0,.25],33:[0,.69444,.05733,0,.31945],34:[0,.69444,.00316,0,.5],35:[.19444,.69444,.05087,0,.83334],36:[.05556,.75,.11156,0,.5],37:[.05556,.75,.03126,0,.83334],38:[0,.69444,.03058,0,.75834],39:[0,.69444,.07816,0,.27778],40:[.25,.75,.13164,0,.38889],41:[.25,.75,.02536,0,.38889],42:[0,.75,.11775,0,.5],43:[.08333,.58333,.02536,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,.01946,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,.13164,0,.5],48:[0,.65556,.11156,0,.5],49:[0,.65556,.11156,0,.5],50:[0,.65556,.11156,0,.5],51:[0,.65556,.11156,0,.5],52:[0,.65556,.11156,0,.5],53:[0,.65556,.11156,0,.5],54:[0,.65556,.11156,0,.5],55:[0,.65556,.11156,0,.5],56:[0,.65556,.11156,0,.5],57:[0,.65556,.11156,0,.5],58:[0,.44444,.02502,0,.27778],59:[.125,.44444,.02502,0,.27778],61:[-.13,.37,.05087,0,.77778],63:[0,.69444,.11809,0,.47222],64:[0,.69444,.07555,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,.08293,0,.66667],67:[0,.69444,.11983,0,.63889],68:[0,.69444,.07555,0,.72223],69:[0,.69444,.11983,0,.59722],70:[0,.69444,.13372,0,.56945],71:[0,.69444,.11983,0,.66667],72:[0,.69444,.08094,0,.70834],73:[0,.69444,.13372,0,.27778],74:[0,.69444,.08094,0,.47222],75:[0,.69444,.11983,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,.08094,0,.875],78:[0,.69444,.08094,0,.70834],79:[0,.69444,.07555,0,.73611],80:[0,.69444,.08293,0,.63889],81:[.125,.69444,.07555,0,.73611],82:[0,.69444,.08293,0,.64584],83:[0,.69444,.09205,0,.55556],84:[0,.69444,.13372,0,.68056],85:[0,.69444,.08094,0,.6875],86:[0,.69444,.1615,0,.66667],87:[0,.69444,.1615,0,.94445],88:[0,.69444,.13372,0,.66667],89:[0,.69444,.17261,0,.66667],90:[0,.69444,.11983,0,.61111],91:[.25,.75,.15942,0,.28889],93:[.25,.75,.08719,0,.28889],94:[0,.69444,.0799,0,.5],95:[.35,.09444,.08616,0,.5],97:[0,.44444,.00981,0,.48056],98:[0,.69444,.03057,0,.51667],99:[0,.44444,.08336,0,.44445],100:[0,.69444,.09483,0,.51667],101:[0,.44444,.06778,0,.44445],102:[0,.69444,.21705,0,.30556],103:[.19444,.44444,.10836,0,.5],104:[0,.69444,.01778,0,.51667],105:[0,.67937,.09718,0,.23889],106:[.19444,.67937,.09162,0,.26667],107:[0,.69444,.08336,0,.48889],108:[0,.69444,.09483,0,.23889],109:[0,.44444,.01778,0,.79445],110:[0,.44444,.01778,0,.51667],111:[0,.44444,.06613,0,.5],112:[.19444,.44444,.0389,0,.51667],113:[.19444,.44444,.04169,0,.51667],114:[0,.44444,.10836,0,.34167],115:[0,.44444,.0778,0,.38333],116:[0,.57143,.07225,0,.36111],117:[0,.44444,.04169,0,.51667],118:[0,.44444,.10836,0,.46111],119:[0,.44444,.10836,0,.68334],120:[0,.44444,.09169,0,.46111],121:[.19444,.44444,.10836,0,.46111],122:[0,.44444,.08752,0,.43472],126:[.35,.32659,.08826,0,.5],160:[0,0,0,0,.25],168:[0,.67937,.06385,0,.5],176:[0,.69444,0,0,.73752],184:[.17014,0,0,0,.44445],305:[0,.44444,.04169,0,.23889],567:[.19444,.44444,.04169,0,.26667],710:[0,.69444,.0799,0,.5],711:[0,.63194,.08432,0,.5],713:[0,.60889,.08776,0,.5],714:[0,.69444,.09205,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,.09483,0,.5],729:[0,.67937,.07774,0,.27778],730:[0,.69444,0,0,.73752],732:[0,.67659,.08826,0,.5],733:[0,.69444,.09205,0,.5],915:[0,.69444,.13372,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,.07555,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,.12816,0,.66667],928:[0,.69444,.08094,0,.70834],931:[0,.69444,.11983,0,.72222],933:[0,.69444,.09031,0,.77778],934:[0,.69444,.04603,0,.72222],936:[0,.69444,.09031,0,.77778],937:[0,.69444,.08293,0,.72222],8211:[0,.44444,.08616,0,.5],8212:[0,.44444,.08616,0,1],8216:[0,.69444,.07816,0,.27778],8217:[0,.69444,.07816,0,.27778],8220:[0,.69444,.14205,0,.5],8221:[0,.69444,.00316,0,.5]},"SansSerif-Regular":{32:[0,0,0,0,.25],33:[0,.69444,0,0,.31945],34:[0,.69444,0,0,.5],35:[.19444,.69444,0,0,.83334],36:[.05556,.75,0,0,.5],37:[.05556,.75,0,0,.83334],38:[0,.69444,0,0,.75834],39:[0,.69444,0,0,.27778],40:[.25,.75,0,0,.38889],41:[.25,.75,0,0,.38889],42:[0,.75,0,0,.5],43:[.08333,.58333,0,0,.77778],44:[.125,.08333,0,0,.27778],45:[0,.44444,0,0,.33333],46:[0,.08333,0,0,.27778],47:[.25,.75,0,0,.5],48:[0,.65556,0,0,.5],49:[0,.65556,0,0,.5],50:[0,.65556,0,0,.5],51:[0,.65556,0,0,.5],52:[0,.65556,0,0,.5],53:[0,.65556,0,0,.5],54:[0,.65556,0,0,.5],55:[0,.65556,0,0,.5],56:[0,.65556,0,0,.5],57:[0,.65556,0,0,.5],58:[0,.44444,0,0,.27778],59:[.125,.44444,0,0,.27778],61:[-.13,.37,0,0,.77778],63:[0,.69444,0,0,.47222],64:[0,.69444,0,0,.66667],65:[0,.69444,0,0,.66667],66:[0,.69444,0,0,.66667],67:[0,.69444,0,0,.63889],68:[0,.69444,0,0,.72223],69:[0,.69444,0,0,.59722],70:[0,.69444,0,0,.56945],71:[0,.69444,0,0,.66667],72:[0,.69444,0,0,.70834],73:[0,.69444,0,0,.27778],74:[0,.69444,0,0,.47222],75:[0,.69444,0,0,.69445],76:[0,.69444,0,0,.54167],77:[0,.69444,0,0,.875],78:[0,.69444,0,0,.70834],79:[0,.69444,0,0,.73611],80:[0,.69444,0,0,.63889],81:[.125,.69444,0,0,.73611],82:[0,.69444,0,0,.64584],83:[0,.69444,0,0,.55556],84:[0,.69444,0,0,.68056],85:[0,.69444,0,0,.6875],86:[0,.69444,.01389,0,.66667],87:[0,.69444,.01389,0,.94445],88:[0,.69444,0,0,.66667],89:[0,.69444,.025,0,.66667],90:[0,.69444,0,0,.61111],91:[.25,.75,0,0,.28889],93:[.25,.75,0,0,.28889],94:[0,.69444,0,0,.5],95:[.35,.09444,.02778,0,.5],97:[0,.44444,0,0,.48056],98:[0,.69444,0,0,.51667],99:[0,.44444,0,0,.44445],100:[0,.69444,0,0,.51667],101:[0,.44444,0,0,.44445],102:[0,.69444,.06944,0,.30556],103:[.19444,.44444,.01389,0,.5],104:[0,.69444,0,0,.51667],105:[0,.67937,0,0,.23889],106:[.19444,.67937,0,0,.26667],107:[0,.69444,0,0,.48889],108:[0,.69444,0,0,.23889],109:[0,.44444,0,0,.79445],110:[0,.44444,0,0,.51667],111:[0,.44444,0,0,.5],112:[.19444,.44444,0,0,.51667],113:[.19444,.44444,0,0,.51667],114:[0,.44444,.01389,0,.34167],115:[0,.44444,0,0,.38333],116:[0,.57143,0,0,.36111],117:[0,.44444,0,0,.51667],118:[0,.44444,.01389,0,.46111],119:[0,.44444,.01389,0,.68334],120:[0,.44444,0,0,.46111],121:[.19444,.44444,.01389,0,.46111],122:[0,.44444,0,0,.43472],126:[.35,.32659,0,0,.5],160:[0,0,0,0,.25],168:[0,.67937,0,0,.5],176:[0,.69444,0,0,.66667],184:[.17014,0,0,0,.44445],305:[0,.44444,0,0,.23889],567:[.19444,.44444,0,0,.26667],710:[0,.69444,0,0,.5],711:[0,.63194,0,0,.5],713:[0,.60889,0,0,.5],714:[0,.69444,0,0,.5],715:[0,.69444,0,0,.5],728:[0,.69444,0,0,.5],729:[0,.67937,0,0,.27778],730:[0,.69444,0,0,.66667],732:[0,.67659,0,0,.5],733:[0,.69444,0,0,.5],915:[0,.69444,0,0,.54167],916:[0,.69444,0,0,.83334],920:[0,.69444,0,0,.77778],923:[0,.69444,0,0,.61111],926:[0,.69444,0,0,.66667],928:[0,.69444,0,0,.70834],931:[0,.69444,0,0,.72222],933:[0,.69444,0,0,.77778],934:[0,.69444,0,0,.72222],936:[0,.69444,0,0,.77778],937:[0,.69444,0,0,.72222],8211:[0,.44444,.02778,0,.5],8212:[0,.44444,.02778,0,1],8216:[0,.69444,0,0,.27778],8217:[0,.69444,0,0,.27778],8220:[0,.69444,0,0,.5],8221:[0,.69444,0,0,.5]},"Script-Regular":{32:[0,0,0,0,.25],65:[0,.7,.22925,0,.80253],66:[0,.7,.04087,0,.90757],67:[0,.7,.1689,0,.66619],68:[0,.7,.09371,0,.77443],69:[0,.7,.18583,0,.56162],70:[0,.7,.13634,0,.89544],71:[0,.7,.17322,0,.60961],72:[0,.7,.29694,0,.96919],73:[0,.7,.19189,0,.80907],74:[.27778,.7,.19189,0,1.05159],75:[0,.7,.31259,0,.91364],76:[0,.7,.19189,0,.87373],77:[0,.7,.15981,0,1.08031],78:[0,.7,.3525,0,.9015],79:[0,.7,.08078,0,.73787],80:[0,.7,.08078,0,1.01262],81:[0,.7,.03305,0,.88282],82:[0,.7,.06259,0,.85],83:[0,.7,.19189,0,.86767],84:[0,.7,.29087,0,.74697],85:[0,.7,.25815,0,.79996],86:[0,.7,.27523,0,.62204],87:[0,.7,.27523,0,.80532],88:[0,.7,.26006,0,.94445],89:[0,.7,.2939,0,.70961],90:[0,.7,.24037,0,.8212],160:[0,0,0,0,.25]},"Size1-Regular":{32:[0,0,0,0,.25],40:[.35001,.85,0,0,.45834],41:[.35001,.85,0,0,.45834],47:[.35001,.85,0,0,.57778],91:[.35001,.85,0,0,.41667],92:[.35001,.85,0,0,.57778],93:[.35001,.85,0,0,.41667],123:[.35001,.85,0,0,.58334],125:[.35001,.85,0,0,.58334],160:[0,0,0,0,.25],710:[0,.72222,0,0,.55556],732:[0,.72222,0,0,.55556],770:[0,.72222,0,0,.55556],771:[0,.72222,0,0,.55556],8214:[-99e-5,.601,0,0,.77778],8593:[1e-5,.6,0,0,.66667],8595:[1e-5,.6,0,0,.66667],8657:[1e-5,.6,0,0,.77778],8659:[1e-5,.6,0,0,.77778],8719:[.25001,.75,0,0,.94445],8720:[.25001,.75,0,0,.94445],8721:[.25001,.75,0,0,1.05556],8730:[.35001,.85,0,0,1],8739:[-.00599,.606,0,0,.33333],8741:[-.00599,.606,0,0,.55556],8747:[.30612,.805,.19445,0,.47222],8748:[.306,.805,.19445,0,.47222],8749:[.306,.805,.19445,0,.47222],8750:[.30612,.805,.19445,0,.47222],8896:[.25001,.75,0,0,.83334],8897:[.25001,.75,0,0,.83334],8898:[.25001,.75,0,0,.83334],8899:[.25001,.75,0,0,.83334],8968:[.35001,.85,0,0,.47222],8969:[.35001,.85,0,0,.47222],8970:[.35001,.85,0,0,.47222],8971:[.35001,.85,0,0,.47222],9168:[-99e-5,.601,0,0,.66667],10216:[.35001,.85,0,0,.47222],10217:[.35001,.85,0,0,.47222],10752:[.25001,.75,0,0,1.11111],10753:[.25001,.75,0,0,1.11111],10754:[.25001,.75,0,0,1.11111],10756:[.25001,.75,0,0,.83334],10758:[.25001,.75,0,0,.83334]},"Size2-Regular":{32:[0,0,0,0,.25],40:[.65002,1.15,0,0,.59722],41:[.65002,1.15,0,0,.59722],47:[.65002,1.15,0,0,.81111],91:[.65002,1.15,0,0,.47222],92:[.65002,1.15,0,0,.81111],93:[.65002,1.15,0,0,.47222],123:[.65002,1.15,0,0,.66667],125:[.65002,1.15,0,0,.66667],160:[0,0,0,0,.25],710:[0,.75,0,0,1],732:[0,.75,0,0,1],770:[0,.75,0,0,1],771:[0,.75,0,0,1],8719:[.55001,1.05,0,0,1.27778],8720:[.55001,1.05,0,0,1.27778],8721:[.55001,1.05,0,0,1.44445],8730:[.65002,1.15,0,0,1],8747:[.86225,1.36,.44445,0,.55556],8748:[.862,1.36,.44445,0,.55556],8749:[.862,1.36,.44445,0,.55556],8750:[.86225,1.36,.44445,0,.55556],8896:[.55001,1.05,0,0,1.11111],8897:[.55001,1.05,0,0,1.11111],8898:[.55001,1.05,0,0,1.11111],8899:[.55001,1.05,0,0,1.11111],8968:[.65002,1.15,0,0,.52778],8969:[.65002,1.15,0,0,.52778],8970:[.65002,1.15,0,0,.52778],8971:[.65002,1.15,0,0,.52778],10216:[.65002,1.15,0,0,.61111],10217:[.65002,1.15,0,0,.61111],10752:[.55001,1.05,0,0,1.51112],10753:[.55001,1.05,0,0,1.51112],10754:[.55001,1.05,0,0,1.51112],10756:[.55001,1.05,0,0,1.11111],10758:[.55001,1.05,0,0,1.11111]},"Size3-Regular":{32:[0,0,0,0,.25],40:[.95003,1.45,0,0,.73611],41:[.95003,1.45,0,0,.73611],47:[.95003,1.45,0,0,1.04445],91:[.95003,1.45,0,0,.52778],92:[.95003,1.45,0,0,1.04445],93:[.95003,1.45,0,0,.52778],123:[.95003,1.45,0,0,.75],125:[.95003,1.45,0,0,.75],160:[0,0,0,0,.25],710:[0,.75,0,0,1.44445],732:[0,.75,0,0,1.44445],770:[0,.75,0,0,1.44445],771:[0,.75,0,0,1.44445],8730:[.95003,1.45,0,0,1],8968:[.95003,1.45,0,0,.58334],8969:[.95003,1.45,0,0,.58334],8970:[.95003,1.45,0,0,.58334],8971:[.95003,1.45,0,0,.58334],10216:[.95003,1.45,0,0,.75],10217:[.95003,1.45,0,0,.75]},"Size4-Regular":{32:[0,0,0,0,.25],40:[1.25003,1.75,0,0,.79167],41:[1.25003,1.75,0,0,.79167],47:[1.25003,1.75,0,0,1.27778],91:[1.25003,1.75,0,0,.58334],92:[1.25003,1.75,0,0,1.27778],93:[1.25003,1.75,0,0,.58334],123:[1.25003,1.75,0,0,.80556],125:[1.25003,1.75,0,0,.80556],160:[0,0,0,0,.25],710:[0,.825,0,0,1.8889],732:[0,.825,0,0,1.8889],770:[0,.825,0,0,1.8889],771:[0,.825,0,0,1.8889],8730:[1.25003,1.75,0,0,1],8968:[1.25003,1.75,0,0,.63889],8969:[1.25003,1.75,0,0,.63889],8970:[1.25003,1.75,0,0,.63889],8971:[1.25003,1.75,0,0,.63889],9115:[.64502,1.155,0,0,.875],9116:[1e-5,.6,0,0,.875],9117:[.64502,1.155,0,0,.875],9118:[.64502,1.155,0,0,.875],9119:[1e-5,.6,0,0,.875],9120:[.64502,1.155,0,0,.875],9121:[.64502,1.155,0,0,.66667],9122:[-99e-5,.601,0,0,.66667],9123:[.64502,1.155,0,0,.66667],9124:[.64502,1.155,0,0,.66667],9125:[-99e-5,.601,0,0,.66667],9126:[.64502,1.155,0,0,.66667],9127:[1e-5,.9,0,0,.88889],9128:[.65002,1.15,0,0,.88889],9129:[.90001,0,0,0,.88889],9130:[0,.3,0,0,.88889],9131:[1e-5,.9,0,0,.88889],9132:[.65002,1.15,0,0,.88889],9133:[.90001,0,0,0,.88889],9143:[.88502,.915,0,0,1.05556],10216:[1.25003,1.75,0,0,.80556],10217:[1.25003,1.75,0,0,.80556],57344:[-.00499,.605,0,0,1.05556],57345:[-.00499,.605,0,0,1.05556],57680:[0,.12,0,0,.45],57681:[0,.12,0,0,.45],57682:[0,.12,0,0,.45],57683:[0,.12,0,0,.45]},"Typewriter-Regular":{32:[0,0,0,0,.525],33:[0,.61111,0,0,.525],34:[0,.61111,0,0,.525],35:[0,.61111,0,0,.525],36:[.08333,.69444,0,0,.525],37:[.08333,.69444,0,0,.525],38:[0,.61111,0,0,.525],39:[0,.61111,0,0,.525],40:[.08333,.69444,0,0,.525],41:[.08333,.69444,0,0,.525],42:[0,.52083,0,0,.525],43:[-.08056,.53055,0,0,.525],44:[.13889,.125,0,0,.525],45:[-.08056,.53055,0,0,.525],46:[0,.125,0,0,.525],47:[.08333,.69444,0,0,.525],48:[0,.61111,0,0,.525],49:[0,.61111,0,0,.525],50:[0,.61111,0,0,.525],51:[0,.61111,0,0,.525],52:[0,.61111,0,0,.525],53:[0,.61111,0,0,.525],54:[0,.61111,0,0,.525],55:[0,.61111,0,0,.525],56:[0,.61111,0,0,.525],57:[0,.61111,0,0,.525],58:[0,.43056,0,0,.525],59:[.13889,.43056,0,0,.525],60:[-.05556,.55556,0,0,.525],61:[-.19549,.41562,0,0,.525],62:[-.05556,.55556,0,0,.525],63:[0,.61111,0,0,.525],64:[0,.61111,0,0,.525],65:[0,.61111,0,0,.525],66:[0,.61111,0,0,.525],67:[0,.61111,0,0,.525],68:[0,.61111,0,0,.525],69:[0,.61111,0,0,.525],70:[0,.61111,0,0,.525],71:[0,.61111,0,0,.525],72:[0,.61111,0,0,.525],73:[0,.61111,0,0,.525],74:[0,.61111,0,0,.525],75:[0,.61111,0,0,.525],76:[0,.61111,0,0,.525],77:[0,.61111,0,0,.525],78:[0,.61111,0,0,.525],79:[0,.61111,0,0,.525],80:[0,.61111,0,0,.525],81:[.13889,.61111,0,0,.525],82:[0,.61111,0,0,.525],83:[0,.61111,0,0,.525],84:[0,.61111,0,0,.525],85:[0,.61111,0,0,.525],86:[0,.61111,0,0,.525],87:[0,.61111,0,0,.525],88:[0,.61111,0,0,.525],89:[0,.61111,0,0,.525],90:[0,.61111,0,0,.525],91:[.08333,.69444,0,0,.525],92:[.08333,.69444,0,0,.525],93:[.08333,.69444,0,0,.525],94:[0,.61111,0,0,.525],95:[.09514,0,0,0,.525],96:[0,.61111,0,0,.525],97:[0,.43056,0,0,.525],98:[0,.61111,0,0,.525],99:[0,.43056,0,0,.525],100:[0,.61111,0,0,.525],101:[0,.43056,0,0,.525],102:[0,.61111,0,0,.525],103:[.22222,.43056,0,0,.525],104:[0,.61111,0,0,.525],105:[0,.61111,0,0,.525],106:[.22222,.61111,0,0,.525],107:[0,.61111,0,0,.525],108:[0,.61111,0,0,.525],109:[0,.43056,0,0,.525],110:[0,.43056,0,0,.525],111:[0,.43056,0,0,.525],112:[.22222,.43056,0,0,.525],113:[.22222,.43056,0,0,.525],114:[0,.43056,0,0,.525],115:[0,.43056,0,0,.525],116:[0,.55358,0,0,.525],117:[0,.43056,0,0,.525],118:[0,.43056,0,0,.525],119:[0,.43056,0,0,.525],120:[0,.43056,0,0,.525],121:[.22222,.43056,0,0,.525],122:[0,.43056,0,0,.525],123:[.08333,.69444,0,0,.525],124:[.08333,.69444,0,0,.525],125:[.08333,.69444,0,0,.525],126:[0,.61111,0,0,.525],127:[0,.61111,0,0,.525],160:[0,0,0,0,.525],176:[0,.61111,0,0,.525],184:[.19445,0,0,0,.525],305:[0,.43056,0,0,.525],567:[.22222,.43056,0,0,.525],711:[0,.56597,0,0,.525],713:[0,.56555,0,0,.525],714:[0,.61111,0,0,.525],715:[0,.61111,0,0,.525],728:[0,.61111,0,0,.525],730:[0,.61111,0,0,.525],770:[0,.61111,0,0,.525],771:[0,.61111,0,0,.525],776:[0,.61111,0,0,.525],915:[0,.61111,0,0,.525],916:[0,.61111,0,0,.525],920:[0,.61111,0,0,.525],923:[0,.61111,0,0,.525],926:[0,.61111,0,0,.525],928:[0,.61111,0,0,.525],931:[0,.61111,0,0,.525],933:[0,.61111,0,0,.525],934:[0,.61111,0,0,.525],936:[0,.61111,0,0,.525],937:[0,.61111,0,0,.525],8216:[0,.61111,0,0,.525],8217:[0,.61111,0,0,.525],8242:[0,.61111,0,0,.525],9251:[.11111,.21944,0,0,.525]}},N={slant:[.25,.25,.25],space:[0,0,0],stretch:[0,0,0],shrink:[0,0,0],xHeight:[.431,.431,.431],quad:[1,1.171,1.472],extraSpace:[0,0,0],num1:[.677,.732,.925],num2:[.394,.384,.387],num3:[.444,.471,.504],denom1:[.686,.752,1.025],denom2:[.345,.344,.532],sup1:[.413,.503,.504],sup2:[.363,.431,.404],sup3:[.289,.286,.294],sub1:[.15,.143,.2],sub2:[.247,.286,.4],supDrop:[.386,.353,.494],subDrop:[.05,.071,.1],delim1:[2.39,1.7,1.98],delim2:[1.01,1.157,1.42],axisHeight:[.25,.25,.25],defaultRuleThickness:[.04,.049,.049],bigOpSpacing1:[.111,.111,.111],bigOpSpacing2:[.166,.166,.166],bigOpSpacing3:[.2,.2,.2],bigOpSpacing4:[.6,.611,.611],bigOpSpacing5:[.1,.143,.143],sqrtRuleThickness:[.04,.04,.04],ptPerEm:[10,10,10],doubleRuleSep:[.2,.2,.2],arrayRuleWidth:[.04,.04,.04],fboxsep:[.3,.3,.3],fboxrule:[.04,.04,.04]},q={"\xc5":"A","\xd0":"D","\xde":"o","\xe5":"a","\xf0":"d","\xfe":"o","\u0410":"A","\u0411":"B","\u0412":"B","\u0413":"F","\u0414":"A","\u0415":"E","\u0416":"K","\u0417":"3","\u0418":"N","\u0419":"N","\u041a":"K","\u041b":"N","\u041c":"M","\u041d":"H","\u041e":"O","\u041f":"N","\u0420":"P","\u0421":"C","\u0422":"T","\u0423":"y","\u0424":"O","\u0425":"X","\u0426":"U","\u0427":"h","\u0428":"W","\u0429":"W","\u042a":"B","\u042b":"X","\u042c":"B","\u042d":"3","\u042e":"X","\u042f":"R","\u0430":"a","\u0431":"b","\u0432":"a","\u0433":"r","\u0434":"y","\u0435":"e","\u0436":"m","\u0437":"e","\u0438":"n","\u0439":"n","\u043a":"n","\u043b":"n","\u043c":"m","\u043d":"n","\u043e":"o","\u043f":"n","\u0440":"p","\u0441":"c","\u0442":"o","\u0443":"y","\u0444":"b","\u0445":"x","\u0446":"n","\u0447":"n","\u0448":"w","\u0449":"w","\u044a":"a","\u044b":"m","\u044c":"a","\u044d":"e","\u044e":"m","\u044f":"r"};function I(e,t,r){if(!C[t])throw new Error("Font metrics not found for font: "+t+".");var a=e.charCodeAt(0),n=C[t][a];if(!n&&e[0]in q&&(a=q[e[0]].charCodeAt(0),n=C[t][a]),n||"text"!==r||z(a)&&(n=C[t][77]),n)return{depth:n[0],height:n[1],italic:n[2],skew:n[3],width:n[4]}}var R={};var H=[[1,1,1],[2,1,1],[3,1,1],[4,2,1],[5,2,1],[6,3,1],[7,4,2],[8,6,3],[9,7,6],[10,8,7],[11,10,9]],O=[.5,.6,.7,.8,.9,1,1.2,1.44,1.728,2.074,2.488],E=function(e,t){return t.size<2?e:H[e-1][t.size-1]};class L{constructor(e){this.style=void 0,this.color=void 0,this.size=void 0,this.textSize=void 0,this.phantom=void 0,this.font=void 0,this.fontFamily=void 0,this.fontWeight=void 0,this.fontShape=void 0,this.sizeMultiplier=void 0,this.maxSize=void 0,this.minRuleThickness=void 0,this._fontMetrics=void 0,this.style=e.style,this.color=e.color,this.size=e.size||L.BASESIZE,this.textSize=e.textSize||this.size,this.phantom=!!e.phantom,this.font=e.font||"",this.fontFamily=e.fontFamily||"",this.fontWeight=e.fontWeight||"",this.fontShape=e.fontShape||"",this.sizeMultiplier=O[this.size-1],this.maxSize=e.maxSize,this.minRuleThickness=e.minRuleThickness,this._fontMetrics=void 0}extend(e){var t={style:this.style,size:this.size,textSize:this.textSize,color:this.color,phantom:this.phantom,font:this.font,fontFamily:this.fontFamily,fontWeight:this.fontWeight,fontShape:this.fontShape,maxSize:this.maxSize,minRuleThickness:this.minRuleThickness};for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);return new L(t)}havingStyle(e){return this.style===e?this:this.extend({style:e,size:E(this.textSize,e)})}havingCrampedStyle(){return this.havingStyle(this.style.cramp())}havingSize(e){return this.size===e&&this.textSize===e?this:this.extend({style:this.style.text(),size:e,textSize:e,sizeMultiplier:O[e-1]})}havingBaseStyle(e){e=e||this.style.text();var t=E(L.BASESIZE,e);return this.size===t&&this.textSize===L.BASESIZE&&this.style===e?this:this.extend({style:e,size:t})}havingBaseSizing(){var e;switch(this.style.id){case 4:case 5:e=3;break;case 6:case 7:e=1;break;default:e=6}return this.extend({style:this.style.text(),size:e})}withColor(e){return this.extend({color:e})}withPhantom(){return this.extend({phantom:!0})}withFont(e){return this.extend({font:e})}withTextFontFamily(e){return this.extend({fontFamily:e,font:""})}withTextFontWeight(e){return this.extend({fontWeight:e,font:""})}withTextFontShape(e){return this.extend({fontShape:e,font:""})}sizingClasses(e){return e.size!==this.size?["sizing","reset-size"+e.size,"size"+this.size]:[]}baseSizingClasses(){return this.size!==L.BASESIZE?["sizing","reset-size"+this.size,"size"+L.BASESIZE]:[]}fontMetrics(){return this._fontMetrics||(this._fontMetrics=function(e){var t;if(!R[t=e>=5?0:e>=3?1:2]){var r=R[t]={cssEmPerMu:N.quad[t]/18};for(var a in N)N.hasOwnProperty(a)&&(r[a]=N[a][t])}return R[t]}(this.size)),this._fontMetrics}getColor(){return this.phantom?"transparent":this.color}}L.BASESIZE=6;var D={pt:1,mm:7227/2540,cm:7227/254,in:72.27,bp:1.00375,pc:12,dd:1238/1157,cc:14856/1157,nd:685/642,nc:1370/107,sp:1/65536,px:1.00375},V={ex:!0,em:!0,mu:!0},P=function(e){return"string"!=typeof e&&(e=e.unit),e in D||e in V||"ex"===e},F=function(e,t){var r;if(e.unit in D)r=D[e.unit]/t.fontMetrics().ptPerEm/t.sizeMultiplier;else if("mu"===e.unit)r=t.fontMetrics().cssEmPerMu;else{var a;if(a=t.style.isTight()?t.havingStyle(t.style.text()):t,"ex"===e.unit)r=a.fontMetrics().xHeight;else{if("em"!==e.unit)throw new i("Invalid unit: '"+e.unit+"'");r=a.fontMetrics().quad}a!==t&&(r*=a.sizeMultiplier/t.sizeMultiplier)}return Math.min(e.number*r,t.maxSize)},G=function(e){return+e.toFixed(4)+"em"},U=function(e){return e.filter((e=>e)).join(" ")},Y=function(e,t,r){if(this.classes=e||[],this.attributes={},this.height=0,this.depth=0,this.maxFontSize=0,this.style=r||{},t){t.style.isTight()&&this.classes.push("mtight");var a=t.getColor();a&&(this.style.color=a)}},X=function(e){var t=document.createElement(e);for(var r in t.className=U(this.classes),this.style)this.style.hasOwnProperty(r)&&(t.style[r]=this.style[r]);for(var a in this.attributes)this.attributes.hasOwnProperty(a)&&t.setAttribute(a,this.attributes[a]);for(var n=0;n/=\x00-\x1f]/,_=function(e){var t="<"+e;this.classes.length&&(t+=' class="'+m.escape(U(this.classes))+'"');var r="";for(var a in this.style)this.style.hasOwnProperty(a)&&(r+=m.hyphenate(a)+":"+this.style[a]+";");for(var n in r&&(t+=' style="'+m.escape(r)+'"'),this.attributes)if(this.attributes.hasOwnProperty(n)){if(W.test(n))throw new i("Invalid attribute name '"+n+"'");t+=" "+n+'="'+m.escape(this.attributes[n])+'"'}t+=">";for(var o=0;o"};class j{constructor(e,t,r,a){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.width=void 0,this.maxFontSize=void 0,this.style=void 0,Y.call(this,e,r,a),this.children=t||[]}setAttribute(e,t){this.attributes[e]=t}hasClass(e){return this.classes.includes(e)}toNode(){return X.call(this,"span")}toMarkup(){return _.call(this,"span")}}class ${constructor(e,t,r,a){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,Y.call(this,t,a),this.children=r||[],this.setAttribute("href",e)}setAttribute(e,t){this.attributes[e]=t}hasClass(e){return this.classes.includes(e)}toNode(){return X.call(this,"a")}toMarkup(){return _.call(this,"a")}}class Z{constructor(e,t,r){this.src=void 0,this.alt=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.alt=t,this.src=e,this.classes=["mord"],this.style=r}hasClass(e){return this.classes.includes(e)}toNode(){var e=document.createElement("img");for(var t in e.src=this.src,e.alt=this.alt,e.className="mord",this.style)this.style.hasOwnProperty(t)&&(e.style[t]=this.style[t]);return e}toMarkup(){var e=''+m.escape(this.alt)+'=n[0]&&e<=n[1])return r.name}return null}(this.text.charCodeAt(0));l&&this.classes.push(l+"_fallback"),/[\xee\xef\xed\xec]/.test(this.text)&&(this.text=K[this.text])}hasClass(e){return this.classes.includes(e)}toNode(){var e=document.createTextNode(this.text),t=null;for(var r in this.italic>0&&((t=document.createElement("span")).style.marginRight=G(this.italic)),this.classes.length>0&&((t=t||document.createElement("span")).className=U(this.classes)),this.style)this.style.hasOwnProperty(r)&&((t=t||document.createElement("span")).style[r]=this.style[r]);return t?(t.appendChild(e),t):e}toMarkup(){var e=!1,t="0&&(r+="margin-right:"+this.italic+"em;"),this.style)this.style.hasOwnProperty(a)&&(r+=m.hyphenate(a)+":"+this.style[a]+";");r&&(e=!0,t+=' style="'+m.escape(r)+'"');var n=m.escape(this.text);return e?(t+=">",t+=n,t+=""):n}}class Q{constructor(e,t){this.children=void 0,this.attributes=void 0,this.children=e||[],this.attributes=t||{}}toNode(){var e=document.createElementNS("http://www.w3.org/2000/svg","svg");for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&e.setAttribute(t,this.attributes[t]);for(var r=0;r':''}}class te{constructor(e){this.attributes=void 0,this.attributes=e||{}}toNode(){var e=document.createElementNS("http://www.w3.org/2000/svg","line");for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&e.setAttribute(t,this.attributes[t]);return e}toMarkup(){var e="","\\gt",!0),oe(se,he,ye,"\u2208","\\in",!0),oe(se,he,ye,"\ue020","\\@not"),oe(se,he,ye,"\u2282","\\subset",!0),oe(se,he,ye,"\u2283","\\supset",!0),oe(se,he,ye,"\u2286","\\subseteq",!0),oe(se,he,ye,"\u2287","\\supseteq",!0),oe(se,me,ye,"\u2288","\\nsubseteq",!0),oe(se,me,ye,"\u2289","\\nsupseteq",!0),oe(se,he,ye,"\u22a8","\\models"),oe(se,he,ye,"\u2190","\\leftarrow",!0),oe(se,he,ye,"\u2264","\\le"),oe(se,he,ye,"\u2264","\\leq",!0),oe(se,he,ye,"<","\\lt",!0),oe(se,he,ye,"\u2192","\\rightarrow",!0),oe(se,he,ye,"\u2192","\\to"),oe(se,me,ye,"\u2271","\\ngeq",!0),oe(se,me,ye,"\u2270","\\nleq",!0),oe(se,he,xe,"\xa0","\\ "),oe(se,he,xe,"\xa0","\\space"),oe(se,he,xe,"\xa0","\\nobreakspace"),oe(le,he,xe,"\xa0","\\ "),oe(le,he,xe,"\xa0"," "),oe(le,he,xe,"\xa0","\\space"),oe(le,he,xe,"\xa0","\\nobreakspace"),oe(se,he,xe,null,"\\nobreak"),oe(se,he,xe,null,"\\allowbreak"),oe(se,he,be,",",","),oe(se,he,be,";",";"),oe(se,me,pe,"\u22bc","\\barwedge",!0),oe(se,me,pe,"\u22bb","\\veebar",!0),oe(se,he,pe,"\u2299","\\odot",!0),oe(se,he,pe,"\u2295","\\oplus",!0),oe(se,he,pe,"\u2297","\\otimes",!0),oe(se,he,we,"\u2202","\\partial",!0),oe(se,he,pe,"\u2298","\\oslash",!0),oe(se,me,pe,"\u229a","\\circledcirc",!0),oe(se,me,pe,"\u22a1","\\boxdot",!0),oe(se,he,pe,"\u25b3","\\bigtriangleup"),oe(se,he,pe,"\u25bd","\\bigtriangledown"),oe(se,he,pe,"\u2020","\\dagger"),oe(se,he,pe,"\u22c4","\\diamond"),oe(se,he,pe,"\u22c6","\\star"),oe(se,he,pe,"\u25c3","\\triangleleft"),oe(se,he,pe,"\u25b9","\\triangleright"),oe(se,he,ve,"{","\\{"),oe(le,he,we,"{","\\{"),oe(le,he,we,"{","\\textbraceleft"),oe(se,he,ue,"}","\\}"),oe(le,he,we,"}","\\}"),oe(le,he,we,"}","\\textbraceright"),oe(se,he,ve,"{","\\lbrace"),oe(se,he,ue,"}","\\rbrace"),oe(se,he,ve,"[","\\lbrack",!0),oe(le,he,we,"[","\\lbrack",!0),oe(se,he,ue,"]","\\rbrack",!0),oe(le,he,we,"]","\\rbrack",!0),oe(se,he,ve,"(","\\lparen",!0),oe(se,he,ue,")","\\rparen",!0),oe(le,he,we,"<","\\textless",!0),oe(le,he,we,">","\\textgreater",!0),oe(se,he,ve,"\u230a","\\lfloor",!0),oe(se,he,ue,"\u230b","\\rfloor",!0),oe(se,he,ve,"\u2308","\\lceil",!0),oe(se,he,ue,"\u2309","\\rceil",!0),oe(se,he,we,"\\","\\backslash"),oe(se,he,we,"\u2223","|"),oe(se,he,we,"\u2223","\\vert"),oe(le,he,we,"|","\\textbar",!0),oe(se,he,we,"\u2225","\\|"),oe(se,he,we,"\u2225","\\Vert"),oe(le,he,we,"\u2225","\\textbardbl"),oe(le,he,we,"~","\\textasciitilde"),oe(le,he,we,"\\","\\textbackslash"),oe(le,he,we,"^","\\textasciicircum"),oe(se,he,ye,"\u2191","\\uparrow",!0),oe(se,he,ye,"\u21d1","\\Uparrow",!0),oe(se,he,ye,"\u2193","\\downarrow",!0),oe(se,he,ye,"\u21d3","\\Downarrow",!0),oe(se,he,ye,"\u2195","\\updownarrow",!0),oe(se,he,ye,"\u21d5","\\Updownarrow",!0),oe(se,he,fe,"\u2210","\\coprod"),oe(se,he,fe,"\u22c1","\\bigvee"),oe(se,he,fe,"\u22c0","\\bigwedge"),oe(se,he,fe,"\u2a04","\\biguplus"),oe(se,he,fe,"\u22c2","\\bigcap"),oe(se,he,fe,"\u22c3","\\bigcup"),oe(se,he,fe,"\u222b","\\int"),oe(se,he,fe,"\u222b","\\intop"),oe(se,he,fe,"\u222c","\\iint"),oe(se,he,fe,"\u222d","\\iiint"),oe(se,he,fe,"\u220f","\\prod"),oe(se,he,fe,"\u2211","\\sum"),oe(se,he,fe,"\u2a02","\\bigotimes"),oe(se,he,fe,"\u2a01","\\bigoplus"),oe(se,he,fe,"\u2a00","\\bigodot"),oe(se,he,fe,"\u222e","\\oint"),oe(se,he,fe,"\u222f","\\oiint"),oe(se,he,fe,"\u2230","\\oiiint"),oe(se,he,fe,"\u2a06","\\bigsqcup"),oe(se,he,fe,"\u222b","\\smallint"),oe(le,he,de,"\u2026","\\textellipsis"),oe(se,he,de,"\u2026","\\mathellipsis"),oe(le,he,de,"\u2026","\\ldots",!0),oe(se,he,de,"\u2026","\\ldots",!0),oe(se,he,de,"\u22ef","\\@cdots",!0),oe(se,he,de,"\u22f1","\\ddots",!0),oe(se,he,we,"\u22ee","\\varvdots"),oe(le,he,we,"\u22ee","\\varvdots"),oe(se,he,ce,"\u02ca","\\acute"),oe(se,he,ce,"\u02cb","\\grave"),oe(se,he,ce,"\xa8","\\ddot"),oe(se,he,ce,"~","\\tilde"),oe(se,he,ce,"\u02c9","\\bar"),oe(se,he,ce,"\u02d8","\\breve"),oe(se,he,ce,"\u02c7","\\check"),oe(se,he,ce,"^","\\hat"),oe(se,he,ce,"\u20d7","\\vec"),oe(se,he,ce,"\u02d9","\\dot"),oe(se,he,ce,"\u02da","\\mathring"),oe(se,he,ge,"\ue131","\\@imath"),oe(se,he,ge,"\ue237","\\@jmath"),oe(se,he,we,"\u0131","\u0131"),oe(se,he,we,"\u0237","\u0237"),oe(le,he,we,"\u0131","\\i",!0),oe(le,he,we,"\u0237","\\j",!0),oe(le,he,we,"\xdf","\\ss",!0),oe(le,he,we,"\xe6","\\ae",!0),oe(le,he,we,"\u0153","\\oe",!0),oe(le,he,we,"\xf8","\\o",!0),oe(le,he,we,"\xc6","\\AE",!0),oe(le,he,we,"\u0152","\\OE",!0),oe(le,he,we,"\xd8","\\O",!0),oe(le,he,ce,"\u02ca","\\'"),oe(le,he,ce,"\u02cb","\\`"),oe(le,he,ce,"\u02c6","\\^"),oe(le,he,ce,"\u02dc","\\~"),oe(le,he,ce,"\u02c9","\\="),oe(le,he,ce,"\u02d8","\\u"),oe(le,he,ce,"\u02d9","\\."),oe(le,he,ce,"\xb8","\\c"),oe(le,he,ce,"\u02da","\\r"),oe(le,he,ce,"\u02c7","\\v"),oe(le,he,ce,"\xa8",'\\"'),oe(le,he,ce,"\u02dd","\\H"),oe(le,he,ce,"\u25ef","\\textcircled");var ke={"--":!0,"---":!0,"``":!0,"''":!0};oe(le,he,we,"\u2013","--",!0),oe(le,he,we,"\u2013","\\textendash"),oe(le,he,we,"\u2014","---",!0),oe(le,he,we,"\u2014","\\textemdash"),oe(le,he,we,"\u2018","`",!0),oe(le,he,we,"\u2018","\\textquoteleft"),oe(le,he,we,"\u2019","'",!0),oe(le,he,we,"\u2019","\\textquoteright"),oe(le,he,we,"\u201c","``",!0),oe(le,he,we,"\u201c","\\textquotedblleft"),oe(le,he,we,"\u201d","''",!0),oe(le,he,we,"\u201d","\\textquotedblright"),oe(se,he,we,"\xb0","\\degree",!0),oe(le,he,we,"\xb0","\\degree"),oe(le,he,we,"\xb0","\\textdegree",!0),oe(se,he,we,"\xa3","\\pounds"),oe(se,he,we,"\xa3","\\mathsterling",!0),oe(le,he,we,"\xa3","\\pounds"),oe(le,he,we,"\xa3","\\textsterling",!0),oe(se,me,we,"\u2720","\\maltese"),oe(le,me,we,"\u2720","\\maltese");for(var Se='0123456789/@."',Me=0;Me<14;Me++){var ze=Se.charAt(Me);oe(se,he,we,ze,ze)}for(var Ae='0123456789!@*()-=+";:?/.,',Te=0;Te<25;Te++){var Be=Ae.charAt(Te);oe(le,he,we,Be,Be)}for(var Ce="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",Ne=0;Ne<52;Ne++){var qe=Ce.charAt(Ne);oe(se,he,ge,qe,qe),oe(le,he,we,qe,qe)}oe(se,me,we,"C","\u2102"),oe(le,me,we,"C","\u2102"),oe(se,me,we,"H","\u210d"),oe(le,me,we,"H","\u210d"),oe(se,me,we,"N","\u2115"),oe(le,me,we,"N","\u2115"),oe(se,me,we,"P","\u2119"),oe(le,me,we,"P","\u2119"),oe(se,me,we,"Q","\u211a"),oe(le,me,we,"Q","\u211a"),oe(se,me,we,"R","\u211d"),oe(le,me,we,"R","\u211d"),oe(se,me,we,"Z","\u2124"),oe(le,me,we,"Z","\u2124"),oe(se,he,ge,"h","\u210e"),oe(le,he,ge,"h","\u210e");for(var Ie="",Re=0;Re<52;Re++){var He=Ce.charAt(Re);oe(se,he,ge,He,Ie=String.fromCharCode(55349,56320+Re)),oe(le,he,we,He,Ie),oe(se,he,ge,He,Ie=String.fromCharCode(55349,56372+Re)),oe(le,he,we,He,Ie),oe(se,he,ge,He,Ie=String.fromCharCode(55349,56424+Re)),oe(le,he,we,He,Ie),oe(se,he,ge,He,Ie=String.fromCharCode(55349,56580+Re)),oe(le,he,we,He,Ie),oe(se,he,ge,He,Ie=String.fromCharCode(55349,56684+Re)),oe(le,he,we,He,Ie),oe(se,he,ge,He,Ie=String.fromCharCode(55349,56736+Re)),oe(le,he,we,He,Ie),oe(se,he,ge,He,Ie=String.fromCharCode(55349,56788+Re)),oe(le,he,we,He,Ie),oe(se,he,ge,He,Ie=String.fromCharCode(55349,56840+Re)),oe(le,he,we,He,Ie),oe(se,he,ge,He,Ie=String.fromCharCode(55349,56944+Re)),oe(le,he,we,He,Ie),Re<26&&(oe(se,he,ge,He,Ie=String.fromCharCode(55349,56632+Re)),oe(le,he,we,He,Ie),oe(se,he,ge,He,Ie=String.fromCharCode(55349,56476+Re)),oe(le,he,we,He,Ie))}oe(se,he,ge,"k",Ie=String.fromCharCode(55349,56668)),oe(le,he,we,"k",Ie);for(var Oe=0;Oe<10;Oe++){var Ee=Oe.toString();oe(se,he,ge,Ee,Ie=String.fromCharCode(55349,57294+Oe)),oe(le,he,we,Ee,Ie),oe(se,he,ge,Ee,Ie=String.fromCharCode(55349,57314+Oe)),oe(le,he,we,Ee,Ie),oe(se,he,ge,Ee,Ie=String.fromCharCode(55349,57324+Oe)),oe(le,he,we,Ee,Ie),oe(se,he,ge,Ee,Ie=String.fromCharCode(55349,57334+Oe)),oe(le,he,we,Ee,Ie)}for(var Le="\xd0\xde\xfe",De=0;De<3;De++){var Ve=Le.charAt(De);oe(se,he,ge,Ve,Ve),oe(le,he,we,Ve,Ve)}var Pe=[["mathbf","textbf","Main-Bold"],["mathbf","textbf","Main-Bold"],["mathnormal","textit","Math-Italic"],["mathnormal","textit","Math-Italic"],["boldsymbol","boldsymbol","Main-BoldItalic"],["boldsymbol","boldsymbol","Main-BoldItalic"],["mathscr","textscr","Script-Regular"],["","",""],["","",""],["","",""],["mathfrak","textfrak","Fraktur-Regular"],["mathfrak","textfrak","Fraktur-Regular"],["mathbb","textbb","AMS-Regular"],["mathbb","textbb","AMS-Regular"],["mathboldfrak","textboldfrak","Fraktur-Regular"],["mathboldfrak","textboldfrak","Fraktur-Regular"],["mathsf","textsf","SansSerif-Regular"],["mathsf","textsf","SansSerif-Regular"],["mathboldsf","textboldsf","SansSerif-Bold"],["mathboldsf","textboldsf","SansSerif-Bold"],["mathitsf","textitsf","SansSerif-Italic"],["mathitsf","textitsf","SansSerif-Italic"],["","",""],["","",""],["mathtt","texttt","Typewriter-Regular"],["mathtt","texttt","Typewriter-Regular"]],Fe=[["mathbf","textbf","Main-Bold"],["","",""],["mathsf","textsf","SansSerif-Regular"],["mathboldsf","textboldsf","SansSerif-Bold"],["mathtt","texttt","Typewriter-Regular"]],Ge=function(e,t,r){return ie[r][e]&&ie[r][e].replace&&(e=ie[r][e].replace),{value:e,metrics:I(e,t,r)}},Ue=function(e,t,r,a,n){var i,o=Ge(e,t,r),s=o.metrics;if(e=o.value,s){var l=s.italic;("text"===r||a&&"mathit"===a.font)&&(l=0),i=new J(e,s.height,s.depth,l,s.skew,s.width,n)}else"undefined"!=typeof console&&console.warn("No character metrics for '"+e+"' in style '"+t+"' and mode '"+r+"'"),i=new J(e,0,0,0,0,0,n);if(a){i.maxFontSize=a.sizeMultiplier,a.style.isTight()&&i.classes.push("mtight");var h=a.getColor();h&&(i.style.color=h)}return i},Ye=(e,t)=>{if(U(e.classes)!==U(t.classes)||e.skew!==t.skew||e.maxFontSize!==t.maxFontSize)return!1;if(1===e.classes.length){var r=e.classes[0];if("mbin"===r||"mord"===r)return!1}for(var a in e.style)if(e.style.hasOwnProperty(a)&&e.style[a]!==t.style[a])return!1;for(var n in t.style)if(t.style.hasOwnProperty(n)&&e.style[n]!==t.style[n])return!1;return!0},Xe=function(e){for(var t=0,r=0,a=0,n=0;nt&&(t=i.height),i.depth>r&&(r=i.depth),i.maxFontSize>a&&(a=i.maxFontSize)}e.height=t,e.depth=r,e.maxFontSize=a},We=function(e,t,r,a){var n=new j(e,t,r,a);return Xe(n),n},_e=(e,t,r,a)=>new j(e,t,r,a),je=function(e){var t=new B(e);return Xe(t),t},$e=function(e,t,r){var a="";switch(e){case"amsrm":a="AMS";break;case"textrm":a="Main";break;case"textsf":a="SansSerif";break;case"texttt":a="Typewriter";break;default:a=e}return a+"-"+("textbf"===t&&"textit"===r?"BoldItalic":"textbf"===t?"Bold":"textit"===t?"Italic":"Regular")},Ze={mathbf:{variant:"bold",fontName:"Main-Bold"},mathrm:{variant:"normal",fontName:"Main-Regular"},textit:{variant:"italic",fontName:"Main-Italic"},mathit:{variant:"italic",fontName:"Main-Italic"},mathnormal:{variant:"italic",fontName:"Math-Italic"},mathsfit:{variant:"sans-serif-italic",fontName:"SansSerif-Italic"},mathbb:{variant:"double-struck",fontName:"AMS-Regular"},mathcal:{variant:"script",fontName:"Caligraphic-Regular"},mathfrak:{variant:"fraktur",fontName:"Fraktur-Regular"},mathscr:{variant:"script",fontName:"Script-Regular"},mathsf:{variant:"sans-serif",fontName:"SansSerif-Regular"},mathtt:{variant:"monospace",fontName:"Typewriter-Regular"}},Ke={vec:["vec",.471,.714],oiintSize1:["oiintSize1",.957,.499],oiintSize2:["oiintSize2",1.472,.659],oiiintSize1:["oiiintSize1",1.304,.499],oiiintSize2:["oiiintSize2",1.98,.659]},Je={fontMap:Ze,makeSymbol:Ue,mathsym:function(e,t,r,a){return void 0===a&&(a=[]),"boldsymbol"===r.font&&Ge(e,"Main-Bold",t).metrics?Ue(e,"Main-Bold",t,r,a.concat(["mathbf"])):"\\"===e||"main"===ie[t][e].font?Ue(e,"Main-Regular",t,r,a):Ue(e,"AMS-Regular",t,r,a.concat(["amsrm"]))},makeSpan:We,makeSvgSpan:_e,makeLineSpan:function(e,t,r){var a=We([e],[],t);return a.height=Math.max(r||t.fontMetrics().defaultRuleThickness,t.minRuleThickness),a.style.borderBottomWidth=G(a.height),a.maxFontSize=1,a},makeAnchor:function(e,t,r,a){var n=new $(e,t,r,a);return Xe(n),n},makeFragment:je,wrapFragment:function(e,t){return e instanceof B?We([],[e],t):e},makeVList:function(e,t){for(var{children:r,depth:a}=function(e){if("individualShift"===e.positionType){for(var t=e.children,r=[t[0]],a=-t[0].shift-t[0].elem.depth,n=a,i=1;i0)return Ue(n,h,a,t,o.concat(m));if(l){var c,p;if("boldsymbol"===l){var u=function(e,t,r,a,n){return"textord"!==n&&Ge(e,"Math-BoldItalic",t).metrics?{fontName:"Math-BoldItalic",fontClass:"boldsymbol"}:{fontName:"Main-Bold",fontClass:"mathbf"}}(n,a,0,0,r);c=u.fontName,p=[u.fontClass]}else s?(c=Ze[l].fontName,p=[l]):(c=$e(l,t.fontWeight,t.fontShape),p=[l,t.fontWeight,t.fontShape]);if(Ge(n,c,a).metrics)return Ue(n,c,a,t,o.concat(p));if(ke.hasOwnProperty(n)&&"Typewriter"===c.slice(0,10)){for(var d=[],g=0;g{var r=We(["mspace"],[],t),a=F(e,t);return r.style.marginRight=G(a),r},staticSvg:function(e,t){var[r,a,n]=Ke[e],i=new ee(r),o=new Q([i],{width:G(a),height:G(n),style:"width:"+G(a),viewBox:"0 0 "+1e3*a+" "+1e3*n,preserveAspectRatio:"xMinYMin"}),s=_e(["overlay"],[o],t);return s.height=n,s.style.height=G(n),s.style.width=G(a),s},svgData:Ke,tryCombineChars:e=>{for(var t=0;t{var r=t.classes[0],a=e.classes[0];"mbin"===r&&ut.includes(a)?t.classes[0]="mord":"mbin"===a&&pt.includes(r)&&(e.classes[0]="mord")}),{node:m},c,p),vt(n,((e,t)=>{var r=xt(t),a=xt(e),n=r&&a?e.hasClass("mtight")?at[r][a]:rt[r][a]:null;if(n)return Je.makeGlue(n,l)}),{node:m},c,p),n},vt=function e(t,r,a,n,i){n&&t.push(n);for(var o=0;or=>{t.splice(e+1,0,r),o++})(o)}}n&&t.pop()},bt=function(e){return e instanceof B||e instanceof $||e instanceof j&&e.hasClass("enclosing")?e:null},yt=function e(t,r){var a=bt(t);if(a){var n=a.children;if(n.length){if("right"===r)return e(n[n.length-1],"right");if("left"===r)return e(n[0],"left")}}return t},xt=function(e,t){return e?(t&&(e=yt(e,t)),gt[e.classes[0]]||null):null},wt=function(e,t){var r=["nulldelimiter"].concat(e.baseSizingClasses());return ct(t.concat(r))},kt=function(e,t,r){if(!e)return ct();if(it[e.type]){var a=it[e.type](e,t);if(r&&t.size!==r.size){a=ct(t.sizingClasses(r),[a],t);var n=t.sizeMultiplier/r.sizeMultiplier;a.height*=n,a.depth*=n}return a}throw new i("Got group of unknown type: '"+e.type+"'")};function St(e,t){var r=ct(["base"],e,t),a=ct(["strut"]);return a.style.height=G(r.height+r.depth),r.depth&&(a.style.verticalAlign=G(-r.depth)),r.children.unshift(a),r}function Mt(e,t){var r=null;1===e.length&&"tag"===e[0].type&&(r=e[0].tag,e=e[0].body);var a,n=ft(e,t,"root");2===n.length&&n[1].hasClass("tag")&&(a=n.pop());for(var i,o=[],s=[],l=0;l0&&(o.push(St(s,t)),s=[]),o.push(n[l]));s.length>0&&o.push(St(s,t)),r?((i=St(ft(r,t,!0))).classes=["tag"],o.push(i)):a&&o.push(a);var m=ct(["katex-html"],o);if(m.setAttribute("aria-hidden","true"),i){var c=i.children[0];c.style.height=G(m.height+m.depth),m.depth&&(c.style.verticalAlign=G(-m.depth))}return m}function zt(e){return new B(e)}class At{constructor(e,t,r){this.type=void 0,this.attributes=void 0,this.children=void 0,this.classes=void 0,this.type=e,this.attributes={},this.children=t||[],this.classes=r||[]}setAttribute(e,t){this.attributes[e]=t}getAttribute(e){return this.attributes[e]}toNode(){var e=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&e.setAttribute(t,this.attributes[t]);this.classes.length>0&&(e.className=U(this.classes));for(var r=0;r0&&(e+=' class ="'+m.escape(U(this.classes))+'"'),e+=">";for(var r=0;r"}toText(){return this.children.map((e=>e.toText())).join("")}}class Tt{constructor(e){this.text=void 0,this.text=e}toNode(){return document.createTextNode(this.text)}toMarkup(){return m.escape(this.toText())}toText(){return this.text}}var Bt={MathNode:At,TextNode:Tt,SpaceNode:class{constructor(e){this.width=void 0,this.character=void 0,this.width=e,this.character=e>=.05555&&e<=.05556?"\u200a":e>=.1666&&e<=.1667?"\u2009":e>=.2222&&e<=.2223?"\u2005":e>=.2777&&e<=.2778?"\u2005\u200a":e>=-.05556&&e<=-.05555?"\u200a\u2063":e>=-.1667&&e<=-.1666?"\u2009\u2063":e>=-.2223&&e<=-.2222?"\u205f\u2063":e>=-.2778&&e<=-.2777?"\u2005\u2063":null}toNode(){if(this.character)return document.createTextNode(this.character);var e=document.createElementNS("http://www.w3.org/1998/Math/MathML","mspace");return e.setAttribute("width",G(this.width)),e}toMarkup(){return this.character?""+this.character+"":''}toText(){return this.character?this.character:" "}},newDocumentFragment:zt},Ct=function(e,t,r){return!ie[t][e]||!ie[t][e].replace||55349===e.charCodeAt(0)||ke.hasOwnProperty(e)&&r&&(r.fontFamily&&"tt"===r.fontFamily.slice(4,6)||r.font&&"tt"===r.font.slice(4,6))||(e=ie[t][e].replace),new Bt.TextNode(e)},Nt=function(e){return 1===e.length?e[0]:new Bt.MathNode("mrow",e)},qt=function(e,t){if("texttt"===t.fontFamily)return"monospace";if("textsf"===t.fontFamily)return"textit"===t.fontShape&&"textbf"===t.fontWeight?"sans-serif-bold-italic":"textit"===t.fontShape?"sans-serif-italic":"textbf"===t.fontWeight?"bold-sans-serif":"sans-serif";if("textit"===t.fontShape&&"textbf"===t.fontWeight)return"bold-italic";if("textit"===t.fontShape)return"italic";if("textbf"===t.fontWeight)return"bold";var r=t.font;if(!r||"mathnormal"===r)return null;var a=e.mode;if("mathit"===r)return"italic";if("boldsymbol"===r)return"textord"===e.type?"bold":"bold-italic";if("mathbf"===r)return"bold";if("mathbb"===r)return"double-struck";if("mathsfit"===r)return"sans-serif-italic";if("mathfrak"===r)return"fraktur";if("mathscr"===r||"mathcal"===r)return"script";if("mathsf"===r)return"sans-serif";if("mathtt"===r)return"monospace";var n=e.text;return["\\imath","\\jmath"].includes(n)?null:(ie[a][n]&&ie[a][n].replace&&(n=ie[a][n].replace),I(n,Je.fontMap[r].fontName,a)?Je.fontMap[r].variant:null)};function It(e){if(!e)return!1;if("mi"===e.type&&1===e.children.length){var t=e.children[0];return t instanceof Tt&&"."===t.text}if("mo"===e.type&&1===e.children.length&&"true"===e.getAttribute("separator")&&"0em"===e.getAttribute("lspace")&&"0em"===e.getAttribute("rspace")){var r=e.children[0];return r instanceof Tt&&","===r.text}return!1}var Rt=function(e,t,r){if(1===e.length){var a=Ot(e[0],t);return r&&a instanceof At&&"mo"===a.type&&(a.setAttribute("lspace","0em"),a.setAttribute("rspace","0em")),[a]}for(var n,i=[],o=0;o=1&&("mn"===n.type||It(n))){var l=s.children[0];l instanceof At&&"mn"===l.type&&(l.children=[...n.children,...l.children],i.pop())}else if("mi"===n.type&&1===n.children.length){var h=n.children[0];if(h instanceof Tt&&"\u0338"===h.text&&("mo"===s.type||"mi"===s.type||"mn"===s.type)){var m=s.children[0];m instanceof Tt&&m.text.length>0&&(m.text=m.text.slice(0,1)+"\u0338"+m.text.slice(1),i.pop())}}}i.push(s),n=s}return i},Ht=function(e,t,r){return Nt(Rt(e,t,r))},Ot=function(e,t){if(!e)return new Bt.MathNode("mrow");if(ot[e.type])return ot[e.type](e,t);throw new i("Got group of unknown type: '"+e.type+"'")};function Et(e,t,r,a,n){var i,o=Rt(e,r);i=1===o.length&&o[0]instanceof At&&["mrow","mtable"].includes(o[0].type)?o[0]:new Bt.MathNode("mrow",o);var s=new Bt.MathNode("annotation",[new Bt.TextNode(t)]);s.setAttribute("encoding","application/x-tex");var l=new Bt.MathNode("semantics",[i,s]),h=new Bt.MathNode("math",[l]);h.setAttribute("xmlns","http://www.w3.org/1998/Math/MathML"),a&&h.setAttribute("display","block");var m=n?"katex":"katex-mathml";return Je.makeSpan([m],[h])}var Lt=function(e){return new L({style:e.displayMode?k.DISPLAY:k.TEXT,maxSize:e.maxSize,minRuleThickness:e.minRuleThickness})},Dt=function(e,t){if(t.displayMode){var r=["katex-display"];t.leqno&&r.push("leqno"),t.fleqn&&r.push("fleqn"),e=Je.makeSpan(r,[e])}return e},Vt={widehat:"^",widecheck:"\u02c7",widetilde:"~",utilde:"~",overleftarrow:"\u2190",underleftarrow:"\u2190",xleftarrow:"\u2190",overrightarrow:"\u2192",underrightarrow:"\u2192",xrightarrow:"\u2192",underbrace:"\u23df",overbrace:"\u23de",overgroup:"\u23e0",undergroup:"\u23e1",overleftrightarrow:"\u2194",underleftrightarrow:"\u2194",xleftrightarrow:"\u2194",Overrightarrow:"\u21d2",xRightarrow:"\u21d2",overleftharpoon:"\u21bc",xleftharpoonup:"\u21bc",overrightharpoon:"\u21c0",xrightharpoonup:"\u21c0",xLeftarrow:"\u21d0",xLeftrightarrow:"\u21d4",xhookleftarrow:"\u21a9",xhookrightarrow:"\u21aa",xmapsto:"\u21a6",xrightharpoondown:"\u21c1",xleftharpoondown:"\u21bd",xrightleftharpoons:"\u21cc",xleftrightharpoons:"\u21cb",xtwoheadleftarrow:"\u219e",xtwoheadrightarrow:"\u21a0",xlongequal:"=",xtofrom:"\u21c4",xrightleftarrows:"\u21c4",xrightequilibrium:"\u21cc",xleftequilibrium:"\u21cb","\\cdrightarrow":"\u2192","\\cdleftarrow":"\u2190","\\cdlongequal":"="},Pt={overrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],overleftarrow:[["leftarrow"],.888,522,"xMinYMin"],underrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],underleftarrow:[["leftarrow"],.888,522,"xMinYMin"],xrightarrow:[["rightarrow"],1.469,522,"xMaxYMin"],"\\cdrightarrow":[["rightarrow"],3,522,"xMaxYMin"],xleftarrow:[["leftarrow"],1.469,522,"xMinYMin"],"\\cdleftarrow":[["leftarrow"],3,522,"xMinYMin"],Overrightarrow:[["doublerightarrow"],.888,560,"xMaxYMin"],xRightarrow:[["doublerightarrow"],1.526,560,"xMaxYMin"],xLeftarrow:[["doubleleftarrow"],1.526,560,"xMinYMin"],overleftharpoon:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoonup:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoondown:[["leftharpoondown"],.888,522,"xMinYMin"],overrightharpoon:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoonup:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoondown:[["rightharpoondown"],.888,522,"xMaxYMin"],xlongequal:[["longequal"],.888,334,"xMinYMin"],"\\cdlongequal":[["longequal"],3,334,"xMinYMin"],xtwoheadleftarrow:[["twoheadleftarrow"],.888,334,"xMinYMin"],xtwoheadrightarrow:[["twoheadrightarrow"],.888,334,"xMaxYMin"],overleftrightarrow:[["leftarrow","rightarrow"],.888,522],overbrace:[["leftbrace","midbrace","rightbrace"],1.6,548],underbrace:[["leftbraceunder","midbraceunder","rightbraceunder"],1.6,548],underleftrightarrow:[["leftarrow","rightarrow"],.888,522],xleftrightarrow:[["leftarrow","rightarrow"],1.75,522],xLeftrightarrow:[["doubleleftarrow","doublerightarrow"],1.75,560],xrightleftharpoons:[["leftharpoondownplus","rightharpoonplus"],1.75,716],xleftrightharpoons:[["leftharpoonplus","rightharpoondownplus"],1.75,716],xhookleftarrow:[["leftarrow","righthook"],1.08,522],xhookrightarrow:[["lefthook","rightarrow"],1.08,522],overlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],underlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],overgroup:[["leftgroup","rightgroup"],.888,342],undergroup:[["leftgroupunder","rightgroupunder"],.888,342],xmapsto:[["leftmapsto","rightarrow"],1.5,522],xtofrom:[["leftToFrom","rightToFrom"],1.75,528],xrightleftarrows:[["baraboveleftarrow","rightarrowabovebar"],1.75,901],xrightequilibrium:[["baraboveshortleftharpoon","rightharpoonaboveshortbar"],1.75,716],xleftequilibrium:[["shortbaraboveleftharpoon","shortrightharpoonabovebar"],1.75,716]},Ft=function(e,t,r,a,n){var i,o=e.height+e.depth+r+a;if(/fbox|color|angl/.test(t)){if(i=Je.makeSpan(["stretchy",t],[],n),"fbox"===t){var s=n.color&&n.getColor();s&&(i.style.borderColor=s)}}else{var l=[];/^[bx]cancel$/.test(t)&&l.push(new te({x1:"0",y1:"0",x2:"100%",y2:"100%","stroke-width":"0.046em"})),/^x?cancel$/.test(t)&&l.push(new te({x1:"0",y1:"100%",x2:"100%",y2:"0","stroke-width":"0.046em"}));var h=new Q(l,{width:"100%",height:G(o)});i=Je.makeSvgSpan([],[h],n)}return i.height=o,i.style.height=G(o),i},Gt=function(e){var t=new Bt.MathNode("mo",[new Bt.TextNode(Vt[e.replace(/^\\/,"")])]);return t.setAttribute("stretchy","true"),t},Ut=function(e,t){var{span:r,minWidth:a,height:n}=function(){var r=4e5,a=e.label.slice(1);if(["widehat","widecheck","widetilde","utilde"].includes(a)){var n,i,o,s="ordgroup"===(u=e.base).type?u.body.length:1;if(s>5)"widehat"===a||"widecheck"===a?(n=420,r=2364,o=.42,i=a+"4"):(n=312,r=2340,o=.34,i="tilde4");else{var l=[1,1,2,2,3,3][s];"widehat"===a||"widecheck"===a?(r=[0,1062,2364,2364,2364][l],n=[0,239,300,360,420][l],o=[0,.24,.3,.3,.36,.42][l],i=a+l):(r=[0,600,1033,2339,2340][l],n=[0,260,286,306,312][l],o=[0,.26,.286,.3,.306,.34][l],i="tilde"+l)}var h=new ee(i),m=new Q([h],{width:"100%",height:G(o),viewBox:"0 0 "+r+" "+n,preserveAspectRatio:"none"});return{span:Je.makeSvgSpan([],[m],t),minWidth:0,height:o}}var c,p,u,d=[],g=Pt[a],[f,v,b]=g,y=b/1e3,x=f.length;if(1===x)c=["hide-tail"],p=[g[3]];else if(2===x)c=["halfarrow-left","halfarrow-right"],p=["xMinYMin","xMaxYMin"];else{if(3!==x)throw new Error("Correct katexImagesData or update code here to support\n "+x+" children.");c=["brace-left","brace-center","brace-right"],p=["xMinYMin","xMidYMin","xMaxYMin"]}for(var w=0;w0&&(r.style.minWidth=G(a)),r};function Yt(e,t){if(!e||e.type!==t)throw new Error("Expected node of type "+t+", but got "+(e?"node of type "+e.type:String(e)));return e}function Xt(e){var t=Wt(e);if(!t)throw new Error("Expected node of symbol group type, but got "+(e?"node of type "+e.type:String(e)));return t}function Wt(e){return e&&("atom"===e.type||ne.hasOwnProperty(e.type))?e:null}var _t=(e,t)=>{var r,a,n;e&&"supsub"===e.type?(r=(a=Yt(e.base,"accent")).base,e.base=r,n=function(e){if(e instanceof j)return e;throw new Error("Expected span but got "+String(e)+".")}(kt(e,t)),e.base=a):r=(a=Yt(e,"accent")).base;var i=kt(r,t.havingCrampedStyle()),o=0;if(a.isShifty&&m.isCharacterBox(r)){var s=m.getBaseElem(r);o=re(kt(s,t.havingCrampedStyle())).skew}var l,h="\\c"===a.label,c=h?i.height+i.depth:Math.min(i.height,t.fontMetrics().xHeight);if(a.isStretchy)l=Ut(a,t),l=Je.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"elem",elem:l,wrapperClasses:["svg-align"],wrapperStyle:o>0?{width:"calc(100% - "+G(2*o)+")",marginLeft:G(2*o)}:void 0}]},t);else{var p,u;"\\vec"===a.label?(p=Je.staticSvg("vec",t),u=Je.svgData.vec[1]):((p=re(p=Je.makeOrd({mode:a.mode,text:a.label},t,"textord"))).italic=0,u=p.width,h&&(c+=p.depth)),l=Je.makeSpan(["accent-body"],[p]);var d="\\textcircled"===a.label;d&&(l.classes.push("accent-full"),c=i.height);var g=o;d||(g-=u/2),l.style.left=G(g),"\\textcircled"===a.label&&(l.style.top=".2em"),l=Je.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"kern",size:-c},{type:"elem",elem:l}]},t)}var f=Je.makeSpan(["mord","accent"],[l],t);return n?(n.children[0]=f,n.height=Math.max(f.height,n.height),n.classes[0]="mord",n):f},jt=(e,t)=>{var r=e.isStretchy?Gt(e.label):new Bt.MathNode("mo",[Ct(e.label,e.mode)]),a=new Bt.MathNode("mover",[Ot(e.base,t),r]);return a.setAttribute("accent","true"),a},$t=new RegExp(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring"].map((e=>"\\"+e)).join("|"));st({type:"accent",names:["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring","\\widecheck","\\widehat","\\widetilde","\\overrightarrow","\\overleftarrow","\\Overrightarrow","\\overleftrightarrow","\\overgroup","\\overlinesegment","\\overleftharpoon","\\overrightharpoon"],props:{numArgs:1},handler:(e,t)=>{var r=ht(t[0]),a=!$t.test(e.funcName),n=!a||"\\widehat"===e.funcName||"\\widetilde"===e.funcName||"\\widecheck"===e.funcName;return{type:"accent",mode:e.parser.mode,label:e.funcName,isStretchy:a,isShifty:n,base:r}},htmlBuilder:_t,mathmlBuilder:jt}),st({type:"accent",names:["\\'","\\`","\\^","\\~","\\=","\\u","\\.",'\\"',"\\c","\\r","\\H","\\v","\\textcircled"],props:{numArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["primitive"]},handler:(e,t)=>{var r=t[0],a=e.parser.mode;return"math"===a&&(e.parser.settings.reportNonstrict("mathVsTextAccents","LaTeX's accent "+e.funcName+" works only in text mode"),a="text"),{type:"accent",mode:a,label:e.funcName,isStretchy:!1,isShifty:!0,base:r}},htmlBuilder:_t,mathmlBuilder:jt}),st({type:"accentUnder",names:["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underlinesegment","\\utilde"],props:{numArgs:1},handler:(e,t)=>{var{parser:r,funcName:a}=e,n=t[0];return{type:"accentUnder",mode:r.mode,label:a,base:n}},htmlBuilder:(e,t)=>{var r=kt(e.base,t),a=Ut(e,t),n="\\utilde"===e.label?.12:0,i=Je.makeVList({positionType:"top",positionData:r.height,children:[{type:"elem",elem:a,wrapperClasses:["svg-align"]},{type:"kern",size:n},{type:"elem",elem:r}]},t);return Je.makeSpan(["mord","accentunder"],[i],t)},mathmlBuilder:(e,t)=>{var r=Gt(e.label),a=new Bt.MathNode("munder",[Ot(e.base,t),r]);return a.setAttribute("accentunder","true"),a}});var Zt=e=>{var t=new Bt.MathNode("mpadded",e?[e]:[]);return t.setAttribute("width","+0.6em"),t.setAttribute("lspace","0.3em"),t};st({type:"xArrow",names:["\\xleftarrow","\\xrightarrow","\\xLeftarrow","\\xRightarrow","\\xleftrightarrow","\\xLeftrightarrow","\\xhookleftarrow","\\xhookrightarrow","\\xmapsto","\\xrightharpoondown","\\xrightharpoonup","\\xleftharpoondown","\\xleftharpoonup","\\xrightleftharpoons","\\xleftrightharpoons","\\xlongequal","\\xtwoheadrightarrow","\\xtwoheadleftarrow","\\xtofrom","\\xrightleftarrows","\\xrightequilibrium","\\xleftequilibrium","\\\\cdrightarrow","\\\\cdleftarrow","\\\\cdlongequal"],props:{numArgs:1,numOptionalArgs:1},handler(e,t,r){var{parser:a,funcName:n}=e;return{type:"xArrow",mode:a.mode,label:n,body:t[0],below:r[0]}},htmlBuilder(e,t){var r,a=t.style,n=t.havingStyle(a.sup()),i=Je.wrapFragment(kt(e.body,n,t),t),o="\\x"===e.label.slice(0,2)?"x":"cd";i.classes.push(o+"-arrow-pad"),e.below&&(n=t.havingStyle(a.sub()),(r=Je.wrapFragment(kt(e.below,n,t),t)).classes.push(o+"-arrow-pad"));var s,l=Ut(e,t),h=-t.fontMetrics().axisHeight+.5*l.height,m=-t.fontMetrics().axisHeight-.5*l.height-.111;if((i.depth>.25||"\\xleftequilibrium"===e.label)&&(m-=i.depth),r){var c=-t.fontMetrics().axisHeight+r.height+.5*l.height+.111;s=Je.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:m},{type:"elem",elem:l,shift:h},{type:"elem",elem:r,shift:c}]},t)}else s=Je.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:m},{type:"elem",elem:l,shift:h}]},t);return s.children[0].children[0].children[1].classes.push("svg-align"),Je.makeSpan(["mrel","x-arrow"],[s],t)},mathmlBuilder(e,t){var r,a=Gt(e.label);if(a.setAttribute("minsize","x"===e.label.charAt(0)?"1.75em":"3.0em"),e.body){var n=Zt(Ot(e.body,t));if(e.below){var i=Zt(Ot(e.below,t));r=new Bt.MathNode("munderover",[a,i,n])}else r=new Bt.MathNode("mover",[a,n])}else if(e.below){var o=Zt(Ot(e.below,t));r=new Bt.MathNode("munder",[a,o])}else r=Zt(),r=new Bt.MathNode("mover",[a,r]);return r}});var Kt=Je.makeSpan;function Jt(e,t){var r=ft(e.body,t,!0);return Kt([e.mclass],r,t)}function Qt(e,t){var r,a=Rt(e.body,t);return"minner"===e.mclass?r=new Bt.MathNode("mpadded",a):"mord"===e.mclass?e.isCharacterBox?(r=a[0]).type="mi":r=new Bt.MathNode("mi",a):(e.isCharacterBox?(r=a[0]).type="mo":r=new Bt.MathNode("mo",a),"mbin"===e.mclass?(r.attributes.lspace="0.22em",r.attributes.rspace="0.22em"):"mpunct"===e.mclass?(r.attributes.lspace="0em",r.attributes.rspace="0.17em"):"mopen"===e.mclass||"mclose"===e.mclass?(r.attributes.lspace="0em",r.attributes.rspace="0em"):"minner"===e.mclass&&(r.attributes.lspace="0.0556em",r.attributes.width="+0.1111em")),r}st({type:"mclass",names:["\\mathord","\\mathbin","\\mathrel","\\mathopen","\\mathclose","\\mathpunct","\\mathinner"],props:{numArgs:1,primitive:!0},handler(e,t){var{parser:r,funcName:a}=e,n=t[0];return{type:"mclass",mode:r.mode,mclass:"m"+a.slice(5),body:mt(n),isCharacterBox:m.isCharacterBox(n)}},htmlBuilder:Jt,mathmlBuilder:Qt});var er=e=>{var t="ordgroup"===e.type&&e.body.length?e.body[0]:e;return"atom"!==t.type||"bin"!==t.family&&"rel"!==t.family?"mord":"m"+t.family};st({type:"mclass",names:["\\@binrel"],props:{numArgs:2},handler(e,t){var{parser:r}=e;return{type:"mclass",mode:r.mode,mclass:er(t[0]),body:mt(t[1]),isCharacterBox:m.isCharacterBox(t[1])}}}),st({type:"mclass",names:["\\stackrel","\\overset","\\underset"],props:{numArgs:2},handler(e,t){var r,{parser:a,funcName:n}=e,i=t[1],o=t[0];r="\\stackrel"!==n?er(i):"mrel";var s={type:"op",mode:i.mode,limits:!0,alwaysHandleSupSub:!0,parentIsSupSub:!1,symbol:!1,suppressBaseShift:"\\stackrel"!==n,body:mt(i)},l={type:"supsub",mode:o.mode,base:s,sup:"\\underset"===n?null:o,sub:"\\underset"===n?o:null};return{type:"mclass",mode:a.mode,mclass:r,body:[l],isCharacterBox:m.isCharacterBox(l)}},htmlBuilder:Jt,mathmlBuilder:Qt}),st({type:"pmb",names:["\\pmb"],props:{numArgs:1,allowedInText:!0},handler(e,t){var{parser:r}=e;return{type:"pmb",mode:r.mode,mclass:er(t[0]),body:mt(t[0])}},htmlBuilder(e,t){var r=ft(e.body,t,!0),a=Je.makeSpan([e.mclass],r,t);return a.style.textShadow="0.02em 0.01em 0.04px",a},mathmlBuilder(e,t){var r=Rt(e.body,t),a=new Bt.MathNode("mstyle",r);return a.setAttribute("style","text-shadow: 0.02em 0.01em 0.04px"),a}});var tr={">":"\\\\cdrightarrow","<":"\\\\cdleftarrow","=":"\\\\cdlongequal",A:"\\uparrow",V:"\\downarrow","|":"\\Vert",".":"no arrow"},rr=e=>"textord"===e.type&&"@"===e.text;function ar(e,t,r){var a=tr[e];switch(a){case"\\\\cdrightarrow":case"\\\\cdleftarrow":return r.callFunction(a,[t[0]],[t[1]]);case"\\uparrow":case"\\downarrow":var n={type:"atom",text:a,mode:"math",family:"rel"},i={type:"ordgroup",mode:"math",body:[r.callFunction("\\\\cdleft",[t[0]],[]),r.callFunction("\\Big",[n],[]),r.callFunction("\\\\cdright",[t[1]],[])]};return r.callFunction("\\\\cdparent",[i],[]);case"\\\\cdlongequal":return r.callFunction("\\\\cdlongequal",[],[]);case"\\Vert":return r.callFunction("\\Big",[{type:"textord",text:"\\Vert",mode:"math"}],[]);default:return{type:"textord",text:" ",mode:"math"}}}st({type:"cdlabel",names:["\\\\cdleft","\\\\cdright"],props:{numArgs:1},handler(e,t){var{parser:r,funcName:a}=e;return{type:"cdlabel",mode:r.mode,side:a.slice(4),label:t[0]}},htmlBuilder(e,t){var r=t.havingStyle(t.style.sup()),a=Je.wrapFragment(kt(e.label,r,t),t);return a.classes.push("cd-label-"+e.side),a.style.bottom=G(.8-a.depth),a.height=0,a.depth=0,a},mathmlBuilder(e,t){var r=new Bt.MathNode("mrow",[Ot(e.label,t)]);return(r=new Bt.MathNode("mpadded",[r])).setAttribute("width","0"),"left"===e.side&&r.setAttribute("lspace","-1width"),r.setAttribute("voffset","0.7em"),(r=new Bt.MathNode("mstyle",[r])).setAttribute("displaystyle","false"),r.setAttribute("scriptlevel","1"),r}}),st({type:"cdlabelparent",names:["\\\\cdparent"],props:{numArgs:1},handler(e,t){var{parser:r}=e;return{type:"cdlabelparent",mode:r.mode,fragment:t[0]}},htmlBuilder(e,t){var r=Je.wrapFragment(kt(e.fragment,t),t);return r.classes.push("cd-vert-arrow"),r},mathmlBuilder:(e,t)=>new Bt.MathNode("mrow",[Ot(e.fragment,t)])}),st({type:"textord",names:["\\@char"],props:{numArgs:1,allowedInText:!0},handler(e,t){for(var{parser:r}=e,a=Yt(t[0],"ordgroup").body,n="",o=0;o=1114111)throw new i("\\@char with invalid code point "+n);return l<=65535?s=String.fromCharCode(l):(l-=65536,s=String.fromCharCode(55296+(l>>10),56320+(1023&l))),{type:"textord",mode:r.mode,text:s}}});var nr=(e,t)=>{var r=ft(e.body,t.withColor(e.color),!1);return Je.makeFragment(r)},ir=(e,t)=>{var r=Rt(e.body,t.withColor(e.color)),a=new Bt.MathNode("mstyle",r);return a.setAttribute("mathcolor",e.color),a};st({type:"color",names:["\\textcolor"],props:{numArgs:2,allowedInText:!0,argTypes:["color","original"]},handler(e,t){var{parser:r}=e,a=Yt(t[0],"color-token").color,n=t[1];return{type:"color",mode:r.mode,color:a,body:mt(n)}},htmlBuilder:nr,mathmlBuilder:ir}),st({type:"color",names:["\\color"],props:{numArgs:1,allowedInText:!0,argTypes:["color"]},handler(e,t){var{parser:r,breakOnTokenText:a}=e,n=Yt(t[0],"color-token").color;r.gullet.macros.set("\\current@color",n);var i=r.parseExpression(!0,a);return{type:"color",mode:r.mode,color:n,body:i}},htmlBuilder:nr,mathmlBuilder:ir}),st({type:"cr",names:["\\\\"],props:{numArgs:0,numOptionalArgs:0,allowedInText:!0},handler(e,t,r){var{parser:a}=e,n="["===a.gullet.future().text?a.parseSizeGroup(!0):null,i=!a.settings.displayMode||!a.settings.useStrictBehavior("newLineInDisplayMode","In LaTeX, \\\\ or \\newline does nothing in display mode");return{type:"cr",mode:a.mode,newLine:i,size:n&&Yt(n,"size").value}},htmlBuilder(e,t){var r=Je.makeSpan(["mspace"],[],t);return e.newLine&&(r.classes.push("newline"),e.size&&(r.style.marginTop=G(F(e.size,t)))),r},mathmlBuilder(e,t){var r=new Bt.MathNode("mspace");return e.newLine&&(r.setAttribute("linebreak","newline"),e.size&&r.setAttribute("height",G(F(e.size,t)))),r}});var or={"\\global":"\\global","\\long":"\\\\globallong","\\\\globallong":"\\\\globallong","\\def":"\\gdef","\\gdef":"\\gdef","\\edef":"\\xdef","\\xdef":"\\xdef","\\let":"\\\\globallet","\\futurelet":"\\\\globalfuture"},sr=e=>{var t=e.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(t))throw new i("Expected a control sequence",e);return t},lr=(e,t,r,a)=>{var n=e.gullet.macros.get(r.text);null==n&&(r.noexpand=!0,n={tokens:[r],numArgs:0,unexpandable:!e.gullet.isExpandable(r.text)}),e.gullet.macros.set(t,n,a)};st({type:"internal",names:["\\global","\\long","\\\\globallong"],props:{numArgs:0,allowedInText:!0},handler(e){var{parser:t,funcName:r}=e;t.consumeSpaces();var a=t.fetch();if(or[a.text])return"\\global"!==r&&"\\\\globallong"!==r||(a.text=or[a.text]),Yt(t.parseFunction(),"internal");throw new i("Invalid token after macro prefix",a)}}),st({type:"internal",names:["\\def","\\gdef","\\edef","\\xdef"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e){var{parser:t,funcName:r}=e,a=t.gullet.popToken(),n=a.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(n))throw new i("Expected a control sequence",a);for(var o,s=0,l=[[]];"{"!==t.gullet.future().text;)if("#"===(a=t.gullet.popToken()).text){if("{"===t.gullet.future().text){o=t.gullet.future(),l[s].push("{");break}if(a=t.gullet.popToken(),!/^[1-9]$/.test(a.text))throw new i('Invalid argument number "'+a.text+'"');if(parseInt(a.text)!==s+1)throw new i('Argument number "'+a.text+'" out of order');s++,l.push([])}else{if("EOF"===a.text)throw new i("Expected a macro definition");l[s].push(a.text)}var{tokens:h}=t.gullet.consumeArg();return o&&h.unshift(o),"\\edef"!==r&&"\\xdef"!==r||(h=t.gullet.expandTokens(h)).reverse(),t.gullet.macros.set(n,{tokens:h,numArgs:s,delimiters:l},r===or[r]),{type:"internal",mode:t.mode}}}),st({type:"internal",names:["\\let","\\\\globallet"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e){var{parser:t,funcName:r}=e,a=sr(t.gullet.popToken());t.gullet.consumeSpaces();var n=(e=>{var t=e.gullet.popToken();return"="===t.text&&" "===(t=e.gullet.popToken()).text&&(t=e.gullet.popToken()),t})(t);return lr(t,a,n,"\\\\globallet"===r),{type:"internal",mode:t.mode}}}),st({type:"internal",names:["\\futurelet","\\\\globalfuture"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e){var{parser:t,funcName:r}=e,a=sr(t.gullet.popToken()),n=t.gullet.popToken(),i=t.gullet.popToken();return lr(t,a,i,"\\\\globalfuture"===r),t.gullet.pushToken(i),t.gullet.pushToken(n),{type:"internal",mode:t.mode}}});var hr=function(e,t,r){var a=I(ie.math[e]&&ie.math[e].replace||e,t,r);if(!a)throw new Error("Unsupported symbol "+e+" and font size "+t+".");return a},mr=function(e,t,r,a){var n=r.havingBaseStyle(t),i=Je.makeSpan(a.concat(n.sizingClasses(r)),[e],r),o=n.sizeMultiplier/r.sizeMultiplier;return i.height*=o,i.depth*=o,i.maxFontSize=n.sizeMultiplier,i},cr=function(e,t,r){var a=t.havingBaseStyle(r),n=(1-t.sizeMultiplier/a.sizeMultiplier)*t.fontMetrics().axisHeight;e.classes.push("delimcenter"),e.style.top=G(n),e.height-=n,e.depth+=n},pr=function(e,t,r,a,n,i){var o=function(e,t,r,a){return Je.makeSymbol(e,"Size"+t+"-Regular",r,a)}(e,t,n,a),s=mr(Je.makeSpan(["delimsizing","size"+t],[o],a),k.TEXT,a,i);return r&&cr(s,a,k.TEXT),s},ur=function(e,t,r){var a;return a="Size1-Regular"===t?"delim-size1":"delim-size4",{type:"elem",elem:Je.makeSpan(["delimsizinginner",a],[Je.makeSpan([],[Je.makeSymbol(e,t,r)])])}},dr=function(e,t,r){var a=C["Size4-Regular"][e.charCodeAt(0)]?C["Size4-Regular"][e.charCodeAt(0)][4]:C["Size1-Regular"][e.charCodeAt(0)][4],n=new ee("inner",function(e,t){switch(e){case"\u239c":return"M291 0 H417 V"+t+" H291z M291 0 H417 V"+t+" H291z";case"\u2223":return"M145 0 H188 V"+t+" H145z M145 0 H188 V"+t+" H145z";case"\u2225":return"M145 0 H188 V"+t+" H145z M145 0 H188 V"+t+" H145zM367 0 H410 V"+t+" H367z M367 0 H410 V"+t+" H367z";case"\u239f":return"M457 0 H583 V"+t+" H457z M457 0 H583 V"+t+" H457z";case"\u23a2":return"M319 0 H403 V"+t+" H319z M319 0 H403 V"+t+" H319z";case"\u23a5":return"M263 0 H347 V"+t+" H263z M263 0 H347 V"+t+" H263z";case"\u23aa":return"M384 0 H504 V"+t+" H384z M384 0 H504 V"+t+" H384z";case"\u23d0":return"M312 0 H355 V"+t+" H312z M312 0 H355 V"+t+" H312z";case"\u2016":return"M257 0 H300 V"+t+" H257z M257 0 H300 V"+t+" H257zM478 0 H521 V"+t+" H478z M478 0 H521 V"+t+" H478z";default:return""}}(e,Math.round(1e3*t))),i=new Q([n],{width:G(a),height:G(t),style:"width:"+G(a),viewBox:"0 0 "+1e3*a+" "+Math.round(1e3*t),preserveAspectRatio:"xMinYMin"}),o=Je.makeSvgSpan([],[i],r);return o.height=t,o.style.height=G(t),o.style.width=G(a),{type:"elem",elem:o}},gr={type:"kern",size:-.008},fr=["|","\\lvert","\\rvert","\\vert"],vr=["\\|","\\lVert","\\rVert","\\Vert"],br=function(e,t,r,a,n,i){var o,s,l,h,m="",c=0;o=l=h=e,s=null;var p="Size1-Regular";"\\uparrow"===e?l=h="\u23d0":"\\Uparrow"===e?l=h="\u2016":"\\downarrow"===e?o=l="\u23d0":"\\Downarrow"===e?o=l="\u2016":"\\updownarrow"===e?(o="\\uparrow",l="\u23d0",h="\\downarrow"):"\\Updownarrow"===e?(o="\\Uparrow",l="\u2016",h="\\Downarrow"):fr.includes(e)?(l="\u2223",m="vert",c=333):vr.includes(e)?(l="\u2225",m="doublevert",c=556):"["===e||"\\lbrack"===e?(o="\u23a1",l="\u23a2",h="\u23a3",p="Size4-Regular",m="lbrack",c=667):"]"===e||"\\rbrack"===e?(o="\u23a4",l="\u23a5",h="\u23a6",p="Size4-Regular",m="rbrack",c=667):"\\lfloor"===e||"\u230a"===e?(l=o="\u23a2",h="\u23a3",p="Size4-Regular",m="lfloor",c=667):"\\lceil"===e||"\u2308"===e?(o="\u23a1",l=h="\u23a2",p="Size4-Regular",m="lceil",c=667):"\\rfloor"===e||"\u230b"===e?(l=o="\u23a5",h="\u23a6",p="Size4-Regular",m="rfloor",c=667):"\\rceil"===e||"\u2309"===e?(o="\u23a4",l=h="\u23a5",p="Size4-Regular",m="rceil",c=667):"("===e||"\\lparen"===e?(o="\u239b",l="\u239c",h="\u239d",p="Size4-Regular",m="lparen",c=875):")"===e||"\\rparen"===e?(o="\u239e",l="\u239f",h="\u23a0",p="Size4-Regular",m="rparen",c=875):"\\{"===e||"\\lbrace"===e?(o="\u23a7",s="\u23a8",h="\u23a9",l="\u23aa",p="Size4-Regular"):"\\}"===e||"\\rbrace"===e?(o="\u23ab",s="\u23ac",h="\u23ad",l="\u23aa",p="Size4-Regular"):"\\lgroup"===e||"\u27ee"===e?(o="\u23a7",h="\u23a9",l="\u23aa",p="Size4-Regular"):"\\rgroup"===e||"\u27ef"===e?(o="\u23ab",h="\u23ad",l="\u23aa",p="Size4-Regular"):"\\lmoustache"===e||"\u23b0"===e?(o="\u23a7",h="\u23ad",l="\u23aa",p="Size4-Regular"):"\\rmoustache"!==e&&"\u23b1"!==e||(o="\u23ab",h="\u23a9",l="\u23aa",p="Size4-Regular");var u=hr(o,p,n),d=u.height+u.depth,g=hr(l,p,n),f=g.height+g.depth,v=hr(h,p,n),b=v.height+v.depth,y=0,x=1;if(null!==s){var w=hr(s,p,n);y=w.height+w.depth,x=2}var S=d+b+y,M=S+Math.max(0,Math.ceil((t-S)/(x*f)))*x*f,z=a.fontMetrics().axisHeight;r&&(z*=a.sizeMultiplier);var A=M/2-z,T=[];if(m.length>0){var B=M-d-b,C=Math.round(1e3*M),N=function(e,t){switch(e){case"lbrack":return"M403 1759 V84 H666 V0 H319 V1759 v"+t+" v1759 h347 v-84\nH403z M403 1759 V0 H319 V1759 v"+t+" v1759 h84z";case"rbrack":return"M347 1759 V0 H0 V84 H263 V1759 v"+t+" v1759 H0 v84 H347z\nM347 1759 V0 H263 V1759 v"+t+" v1759 h84z";case"vert":return"M145 15 v585 v"+t+" v585 c2.667,10,9.667,15,21,15\nc10,0,16.667,-5,20,-15 v-585 v"+-t+" v-585 c-2.667,-10,-9.667,-15,-21,-15\nc-10,0,-16.667,5,-20,15z M188 15 H145 v585 v"+t+" v585 h43z";case"doublevert":return"M145 15 v585 v"+t+" v585 c2.667,10,9.667,15,21,15\nc10,0,16.667,-5,20,-15 v-585 v"+-t+" v-585 c-2.667,-10,-9.667,-15,-21,-15\nc-10,0,-16.667,5,-20,15z M188 15 H145 v585 v"+t+" v585 h43z\nM367 15 v585 v"+t+" v585 c2.667,10,9.667,15,21,15\nc10,0,16.667,-5,20,-15 v-585 v"+-t+" v-585 c-2.667,-10,-9.667,-15,-21,-15\nc-10,0,-16.667,5,-20,15z M410 15 H367 v585 v"+t+" v585 h43z";case"lfloor":return"M319 602 V0 H403 V602 v"+t+" v1715 h263 v84 H319z\nMM319 602 V0 H403 V602 v"+t+" v1715 H319z";case"rfloor":return"M319 602 V0 H403 V602 v"+t+" v1799 H0 v-84 H319z\nMM319 602 V0 H403 V602 v"+t+" v1715 H319z";case"lceil":return"M403 1759 V84 H666 V0 H319 V1759 v"+t+" v602 h84z\nM403 1759 V0 H319 V1759 v"+t+" v602 h84z";case"rceil":return"M347 1759 V0 H0 V84 H263 V1759 v"+t+" v602 h84z\nM347 1759 V0 h-84 V1759 v"+t+" v602 h84z";case"lparen":return"M863,9c0,-2,-2,-5,-6,-9c0,0,-17,0,-17,0c-12.7,0,-19.3,0.3,-20,1\nc-5.3,5.3,-10.3,11,-15,17c-242.7,294.7,-395.3,682,-458,1162c-21.3,163.3,-33.3,349,\n-36,557 l0,"+(t+84)+"c0.2,6,0,26,0,60c2,159.3,10,310.7,24,454c53.3,528,210,\n949.7,470,1265c4.7,6,9.7,11.7,15,17c0.7,0.7,7,1,19,1c0,0,18,0,18,0c4,-4,6,-7,6,-9\nc0,-2.7,-3.3,-8.7,-10,-18c-135.3,-192.7,-235.5,-414.3,-300.5,-665c-65,-250.7,-102.5,\n-544.7,-112.5,-882c-2,-104,-3,-167,-3,-189\nl0,-"+(t+92)+"c0,-162.7,5.7,-314,17,-454c20.7,-272,63.7,-513,129,-723c65.3,\n-210,155.3,-396.3,270,-559c6.7,-9.3,10,-15.3,10,-18z";case"rparen":return"M76,0c-16.7,0,-25,3,-25,9c0,2,2,6.3,6,13c21.3,28.7,42.3,60.3,\n63,95c96.7,156.7,172.8,332.5,228.5,527.5c55.7,195,92.8,416.5,111.5,664.5\nc11.3,139.3,17,290.7,17,454c0,28,1.7,43,3.3,45l0,"+(t+9)+"\nc-3,4,-3.3,16.7,-3.3,38c0,162,-5.7,313.7,-17,455c-18.7,248,-55.8,469.3,-111.5,664\nc-55.7,194.7,-131.8,370.3,-228.5,527c-20.7,34.7,-41.7,66.3,-63,95c-2,3.3,-4,7,-6,11\nc0,7.3,5.7,11,17,11c0,0,11,0,11,0c9.3,0,14.3,-0.3,15,-1c5.3,-5.3,10.3,-11,15,-17\nc242.7,-294.7,395.3,-681.7,458,-1161c21.3,-164.7,33.3,-350.7,36,-558\nl0,-"+(t+144)+"c-2,-159.3,-10,-310.7,-24,-454c-53.3,-528,-210,-949.7,\n-470,-1265c-4.7,-6,-9.7,-11.7,-15,-17c-0.7,-0.7,-6.7,-1,-18,-1z";default:throw new Error("Unknown stretchy delimiter.")}}(m,Math.round(1e3*B)),q=new ee(m,N),I=(c/1e3).toFixed(3)+"em",R=(C/1e3).toFixed(3)+"em",H=new Q([q],{width:I,height:R,viewBox:"0 0 "+c+" "+C}),O=Je.makeSvgSpan([],[H],a);O.height=C/1e3,O.style.width=I,O.style.height=R,T.push({type:"elem",elem:O})}else{if(T.push(ur(h,p,n)),T.push(gr),null===s){var E=M-d-b+.016;T.push(dr(l,E,a))}else{var L=(M-d-b-y)/2+.016;T.push(dr(l,L,a)),T.push(gr),T.push(ur(s,p,n)),T.push(gr),T.push(dr(l,L,a))}T.push(gr),T.push(ur(o,p,n))}var D=a.havingBaseStyle(k.TEXT),V=Je.makeVList({positionType:"bottom",positionData:A,children:T},D);return mr(Je.makeSpan(["delimsizing","mult"],[V],D),k.TEXT,a,i)},yr=.08,xr=function(e,t,r,a,n){var i=function(e,t,r){t*=1e3;var a="";switch(e){case"sqrtMain":a=function(e,t){return"M95,"+(622+e+t)+"\nc-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14\nc0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54\nc44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10\ns173,378,173,378c0.7,0,35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429\nc69,-144,104.5,-217.7,106.5,-221\nl"+e/2.075+" -"+e+"\nc5.3,-9.3,12,-14,20,-14\nH400000v"+(40+e)+"H845.2724\ns-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7\nc-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z\nM"+(834+e)+" "+t+"h400000v"+(40+e)+"h-400000z"}(t,A);break;case"sqrtSize1":a=function(e,t){return"M263,"+(601+e+t)+"c0.7,0,18,39.7,52,119\nc34,79.3,68.167,158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120\nc340,-704.7,510.7,-1060.3,512,-1067\nl"+e/2.084+" -"+e+"\nc4.7,-7.3,11,-11,19,-11\nH40000v"+(40+e)+"H1012.3\ns-271.3,567,-271.3,567c-38.7,80.7,-84,175,-136,283c-52,108,-89.167,185.3,-111.5,232\nc-22.3,46.7,-33.8,70.3,-34.5,71c-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1\ns-109,-253,-109,-253c-72.7,-168,-109.3,-252,-110,-252c-10.7,8,-22,16.7,-34,26\nc-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26s76,-59,76,-59s76,-60,76,-60z\nM"+(1001+e)+" "+t+"h400000v"+(40+e)+"h-400000z"}(t,A);break;case"sqrtSize2":a=function(e,t){return"M983 "+(10+e+t)+"\nl"+e/3.13+" -"+e+"\nc4,-6.7,10,-10,18,-10 H400000v"+(40+e)+"\nH1013.1s-83.4,268,-264.1,840c-180.7,572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7\ns-12,0,-12,0c-1.3,-3.3,-3.7,-11.7,-7,-25c-35.3,-125.3,-106.7,-373.3,-214,-744\nc-10,12,-21,25,-33,39s-32,39,-32,39c-6,-5.3,-15,-14,-27,-26s25,-30,25,-30\nc26.7,-32.7,52,-63,76,-91s52,-60,52,-60s208,722,208,722\nc56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,-658.5\nc53.7,-170.3,84.5,-266.8,92.5,-289.5z\nM"+(1001+e)+" "+t+"h400000v"+(40+e)+"h-400000z"}(t,A);break;case"sqrtSize3":a=function(e,t){return"M424,"+(2398+e+t)+"\nc-1.3,-0.7,-38.5,-172,-111.5,-514c-73,-342,-109.8,-513.3,-110.5,-514\nc0,-2,-10.7,14.3,-32,49c-4.7,7.3,-9.8,15.7,-15.5,25c-5.7,9.3,-9.8,16,-12.5,20\ns-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,-13s76,-122,76,-122s77,-121,77,-121\ns209,968,209,968c0,-2,84.7,-361.7,254,-1079c169.3,-717.3,254.7,-1077.7,256,-1081\nl"+e/4.223+" -"+e+"c4,-6.7,10,-10,18,-10 H400000\nv"+(40+e)+"H1014.6\ns-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185\nc-2,6,-10,9,-24,9\nc-8,0,-12,-0.7,-12,-2z M"+(1001+e)+" "+t+"\nh400000v"+(40+e)+"h-400000z"}(t,A);break;case"sqrtSize4":a=function(e,t){return"M473,"+(2713+e+t)+"\nc339.3,-1799.3,509.3,-2700,510,-2702 l"+e/5.298+" -"+e+"\nc3.3,-7.3,9.3,-11,18,-11 H400000v"+(40+e)+"H1017.7\ns-90.5,478,-276.2,1466c-185.7,988,-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9\nc-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200\nc0,-1.3,-5.3,8.7,-16,30c-10.7,21.3,-21.3,42.7,-32,64s-16,33,-16,33s-26,-26,-26,-26\ns76,-153,76,-153s77,-151,77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104,\n606zM"+(1001+e)+" "+t+"h400000v"+(40+e)+"H1017.7z"}(t,A);break;case"sqrtTall":a=function(e,t,r){return"M702 "+(e+t)+"H400000"+(40+e)+"\nH742v"+(r-54-t-e)+"l-4 4-4 4c-.667.7 -2 1.5-4 2.5s-4.167 1.833-6.5 2.5-5.5 1-9.5 1\nh-12l-28-84c-16.667-52-96.667 -294.333-240-727l-212 -643 -85 170\nc-4-3.333-8.333-7.667-13 -13l-13-13l77-155 77-156c66 199.333 139 419.667\n219 661 l218 661zM702 "+t+"H400000v"+(40+e)+"H742z"}(t,A,r)}return a}(e,a,r),o=new ee(e,i),s=new Q([o],{width:"400em",height:G(t),viewBox:"0 0 400000 "+r,preserveAspectRatio:"xMinYMin slice"});return Je.makeSvgSpan(["hide-tail"],[s],n)},wr=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\u230a","\u230b","\\lceil","\\rceil","\u2308","\u2309","\\surd"],kr=["\\uparrow","\\downarrow","\\updownarrow","\\Uparrow","\\Downarrow","\\Updownarrow","|","\\|","\\vert","\\Vert","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\u27ee","\u27ef","\\lmoustache","\\rmoustache","\u23b0","\u23b1"],Sr=["<",">","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"],Mr=[0,1.2,1.8,2.4,3],zr=[{type:"small",style:k.SCRIPTSCRIPT},{type:"small",style:k.SCRIPT},{type:"small",style:k.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}],Ar=[{type:"small",style:k.SCRIPTSCRIPT},{type:"small",style:k.SCRIPT},{type:"small",style:k.TEXT},{type:"stack"}],Tr=[{type:"small",style:k.SCRIPTSCRIPT},{type:"small",style:k.SCRIPT},{type:"small",style:k.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}],Br=function(e){if("small"===e.type)return"Main-Regular";if("large"===e.type)return"Size"+e.size+"-Regular";if("stack"===e.type)return"Size4-Regular";throw new Error("Add support for delim type '"+e.type+"' here.")},Cr=function(e,t,r,a){for(var n=Math.min(2,3-a.style.size);nt)return r[n]}return r[r.length-1]},Nr=function(e,t,r,a,n,i){var o;"<"===e||"\\lt"===e||"\u27e8"===e?e="\\langle":">"!==e&&"\\gt"!==e&&"\u27e9"!==e||(e="\\rangle"),o=Sr.includes(e)?zr:wr.includes(e)?Tr:Ar;var s=Cr(e,t,o,a);return"small"===s.type?function(e,t,r,a,n,i){var o=Je.makeSymbol(e,"Main-Regular",n,a),s=mr(o,t,a,i);return r&&cr(s,a,t),s}(e,s.style,r,a,n,i):"large"===s.type?pr(e,s.size,r,a,n,i):br(e,t,r,a,n,i)},qr={sqrtImage:function(e,t){var r,a,n=t.havingBaseSizing(),i=Cr("\\surd",e*n.sizeMultiplier,Tr,n),o=n.sizeMultiplier,s=Math.max(0,t.minRuleThickness-t.fontMetrics().sqrtRuleThickness),l=0,h=0,m=0;return"small"===i.type?(e<1?o=1:e<1.4&&(o=.7),h=(1+s)/o,(r=xr("sqrtMain",l=(1+s+yr)/o,m=1e3+1e3*s+80,s,t)).style.minWidth="0.853em",a=.833/o):"large"===i.type?(m=1080*Mr[i.size],h=(Mr[i.size]+s)/o,l=(Mr[i.size]+s+yr)/o,(r=xr("sqrtSize"+i.size,l,m,s,t)).style.minWidth="1.02em",a=1/o):(l=e+s+yr,h=e+s,m=Math.floor(1e3*e+s)+80,(r=xr("sqrtTall",l,m,s,t)).style.minWidth="0.742em",a=1.056),r.height=h,r.style.height=G(l),{span:r,advanceWidth:a,ruleWidth:(t.fontMetrics().sqrtRuleThickness+s)*o}},sizedDelim:function(e,t,r,a,n){if("<"===e||"\\lt"===e||"\u27e8"===e?e="\\langle":">"!==e&&"\\gt"!==e&&"\u27e9"!==e||(e="\\rangle"),wr.includes(e)||Sr.includes(e))return pr(e,t,!1,r,a,n);if(kr.includes(e))return br(e,Mr[t],!1,r,a,n);throw new i("Illegal delimiter: '"+e+"'")},sizeToMaxHeight:Mr,customSizedDelim:Nr,leftRightDelim:function(e,t,r,a,n,i){var o=a.fontMetrics().axisHeight*a.sizeMultiplier,s=5/a.fontMetrics().ptPerEm,l=Math.max(t-o,r+o),h=Math.max(l/500*901,2*l-s);return Nr(e,h,!0,a,n,i)}},Ir={"\\bigl":{mclass:"mopen",size:1},"\\Bigl":{mclass:"mopen",size:2},"\\biggl":{mclass:"mopen",size:3},"\\Biggl":{mclass:"mopen",size:4},"\\bigr":{mclass:"mclose",size:1},"\\Bigr":{mclass:"mclose",size:2},"\\biggr":{mclass:"mclose",size:3},"\\Biggr":{mclass:"mclose",size:4},"\\bigm":{mclass:"mrel",size:1},"\\Bigm":{mclass:"mrel",size:2},"\\biggm":{mclass:"mrel",size:3},"\\Biggm":{mclass:"mrel",size:4},"\\big":{mclass:"mord",size:1},"\\Big":{mclass:"mord",size:2},"\\bigg":{mclass:"mord",size:3},"\\Bigg":{mclass:"mord",size:4}},Rr=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\u230a","\u230b","\\lceil","\\rceil","\u2308","\u2309","<",">","\\langle","\u27e8","\\rangle","\u27e9","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\u27ee","\u27ef","\\lmoustache","\\rmoustache","\u23b0","\u23b1","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."];function Hr(e,t){var r=Wt(e);if(r&&Rr.includes(r.text))return r;throw new i(r?"Invalid delimiter '"+r.text+"' after '"+t.funcName+"'":"Invalid delimiter type '"+e.type+"'",e)}function Or(e){if(!e.body)throw new Error("Bug: The leftright ParseNode wasn't fully parsed.")}st({type:"delimsizing",names:["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],props:{numArgs:1,argTypes:["primitive"]},handler:(e,t)=>{var r=Hr(t[0],e);return{type:"delimsizing",mode:e.parser.mode,size:Ir[e.funcName].size,mclass:Ir[e.funcName].mclass,delim:r.text}},htmlBuilder:(e,t)=>"."===e.delim?Je.makeSpan([e.mclass]):qr.sizedDelim(e.delim,e.size,t,e.mode,[e.mclass]),mathmlBuilder:e=>{var t=[];"."!==e.delim&&t.push(Ct(e.delim,e.mode));var r=new Bt.MathNode("mo",t);"mopen"===e.mclass||"mclose"===e.mclass?r.setAttribute("fence","true"):r.setAttribute("fence","false"),r.setAttribute("stretchy","true");var a=G(qr.sizeToMaxHeight[e.size]);return r.setAttribute("minsize",a),r.setAttribute("maxsize",a),r}}),st({type:"leftright-right",names:["\\right"],props:{numArgs:1,primitive:!0},handler:(e,t)=>{var r=e.parser.gullet.macros.get("\\current@color");if(r&&"string"!=typeof r)throw new i("\\current@color set to non-string in \\right");return{type:"leftright-right",mode:e.parser.mode,delim:Hr(t[0],e).text,color:r}}}),st({type:"leftright",names:["\\left"],props:{numArgs:1,primitive:!0},handler:(e,t)=>{var r=Hr(t[0],e),a=e.parser;++a.leftrightDepth;var n=a.parseExpression(!1);--a.leftrightDepth,a.expect("\\right",!1);var i=Yt(a.parseFunction(),"leftright-right");return{type:"leftright",mode:a.mode,body:n,left:r.text,right:i.delim,rightColor:i.color}},htmlBuilder:(e,t)=>{Or(e);for(var r,a,n=ft(e.body,t,!0,["mopen","mclose"]),i=0,o=0,s=!1,l=0;l{Or(e);var r=Rt(e.body,t);if("."!==e.left){var a=new Bt.MathNode("mo",[Ct(e.left,e.mode)]);a.setAttribute("fence","true"),r.unshift(a)}if("."!==e.right){var n=new Bt.MathNode("mo",[Ct(e.right,e.mode)]);n.setAttribute("fence","true"),e.rightColor&&n.setAttribute("mathcolor",e.rightColor),r.push(n)}return Nt(r)}}),st({type:"middle",names:["\\middle"],props:{numArgs:1,primitive:!0},handler:(e,t)=>{var r=Hr(t[0],e);if(!e.parser.leftrightDepth)throw new i("\\middle without preceding \\left",r);return{type:"middle",mode:e.parser.mode,delim:r.text}},htmlBuilder:(e,t)=>{var r;if("."===e.delim)r=wt(t,[]);else{r=qr.sizedDelim(e.delim,1,t,e.mode,[]);var a={delim:e.delim,options:t};r.isMiddle=a}return r},mathmlBuilder:(e,t)=>{var r="\\vert"===e.delim||"|"===e.delim?Ct("|","text"):Ct(e.delim,e.mode),a=new Bt.MathNode("mo",[r]);return a.setAttribute("fence","true"),a.setAttribute("lspace","0.05em"),a.setAttribute("rspace","0.05em"),a}});var Er=(e,t)=>{var r,a,n,i=Je.wrapFragment(kt(e.body,t),t),o=e.label.slice(1),s=t.sizeMultiplier,l=0,h=m.isCharacterBox(e.body);if("sout"===o)(r=Je.makeSpan(["stretchy","sout"])).height=t.fontMetrics().defaultRuleThickness/s,l=-.5*t.fontMetrics().xHeight;else if("phase"===o){var c=F({number:.6,unit:"pt"},t),p=F({number:.35,unit:"ex"},t);s/=t.havingBaseSizing().sizeMultiplier;var u=i.height+i.depth+c+p;i.style.paddingLeft=G(u/2+c);var d=Math.floor(1e3*u*s),g="M400000 "+(a=d)+" H0 L"+a/2+" 0 l65 45 L145 "+(a-80)+" H400000z",f=new Q([new ee("phase",g)],{width:"400em",height:G(d/1e3),viewBox:"0 0 400000 "+d,preserveAspectRatio:"xMinYMin slice"});(r=Je.makeSvgSpan(["hide-tail"],[f],t)).style.height=G(u),l=i.depth+c+p}else{/cancel/.test(o)?h||i.classes.push("cancel-pad"):"angl"===o?i.classes.push("anglpad"):i.classes.push("boxpad");var v=0,b=0,y=0;/box/.test(o)?(y=Math.max(t.fontMetrics().fboxrule,t.minRuleThickness),b=v=t.fontMetrics().fboxsep+("colorbox"===o?0:y)):"angl"===o?(v=4*(y=Math.max(t.fontMetrics().defaultRuleThickness,t.minRuleThickness)),b=Math.max(0,.25-i.depth)):b=v=h?.2:0,r=Ft(i,o,v,b,t),/fbox|boxed|fcolorbox/.test(o)?(r.style.borderStyle="solid",r.style.borderWidth=G(y)):"angl"===o&&.049!==y&&(r.style.borderTopWidth=G(y),r.style.borderRightWidth=G(y)),l=i.depth+b,e.backgroundColor&&(r.style.backgroundColor=e.backgroundColor,e.borderColor&&(r.style.borderColor=e.borderColor))}if(e.backgroundColor)n=Je.makeVList({positionType:"individualShift",children:[{type:"elem",elem:r,shift:l},{type:"elem",elem:i,shift:0}]},t);else{var x=/cancel|phase/.test(o)?["svg-align"]:[];n=Je.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:0},{type:"elem",elem:r,shift:l,wrapperClasses:x}]},t)}return/cancel/.test(o)&&(n.height=i.height,n.depth=i.depth),/cancel/.test(o)&&!h?Je.makeSpan(["mord","cancel-lap"],[n],t):Je.makeSpan(["mord"],[n],t)},Lr=(e,t)=>{var r=0,a=new Bt.MathNode(e.label.indexOf("colorbox")>-1?"mpadded":"menclose",[Ot(e.body,t)]);switch(e.label){case"\\cancel":a.setAttribute("notation","updiagonalstrike");break;case"\\bcancel":a.setAttribute("notation","downdiagonalstrike");break;case"\\phase":a.setAttribute("notation","phasorangle");break;case"\\sout":a.setAttribute("notation","horizontalstrike");break;case"\\fbox":a.setAttribute("notation","box");break;case"\\angl":a.setAttribute("notation","actuarial");break;case"\\fcolorbox":case"\\colorbox":if(r=t.fontMetrics().fboxsep*t.fontMetrics().ptPerEm,a.setAttribute("width","+"+2*r+"pt"),a.setAttribute("height","+"+2*r+"pt"),a.setAttribute("lspace",r+"pt"),a.setAttribute("voffset",r+"pt"),"\\fcolorbox"===e.label){var n=Math.max(t.fontMetrics().fboxrule,t.minRuleThickness);a.setAttribute("style","border: "+n+"em solid "+String(e.borderColor))}break;case"\\xcancel":a.setAttribute("notation","updiagonalstrike downdiagonalstrike")}return e.backgroundColor&&a.setAttribute("mathbackground",e.backgroundColor),a};st({type:"enclose",names:["\\colorbox"],props:{numArgs:2,allowedInText:!0,argTypes:["color","text"]},handler(e,t,r){var{parser:a,funcName:n}=e,i=Yt(t[0],"color-token").color,o=t[1];return{type:"enclose",mode:a.mode,label:n,backgroundColor:i,body:o}},htmlBuilder:Er,mathmlBuilder:Lr}),st({type:"enclose",names:["\\fcolorbox"],props:{numArgs:3,allowedInText:!0,argTypes:["color","color","text"]},handler(e,t,r){var{parser:a,funcName:n}=e,i=Yt(t[0],"color-token").color,o=Yt(t[1],"color-token").color,s=t[2];return{type:"enclose",mode:a.mode,label:n,backgroundColor:o,borderColor:i,body:s}},htmlBuilder:Er,mathmlBuilder:Lr}),st({type:"enclose",names:["\\fbox"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!0},handler(e,t){var{parser:r}=e;return{type:"enclose",mode:r.mode,label:"\\fbox",body:t[0]}}}),st({type:"enclose",names:["\\cancel","\\bcancel","\\xcancel","\\sout","\\phase"],props:{numArgs:1},handler(e,t){var{parser:r,funcName:a}=e,n=t[0];return{type:"enclose",mode:r.mode,label:a,body:n}},htmlBuilder:Er,mathmlBuilder:Lr}),st({type:"enclose",names:["\\angl"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!1},handler(e,t){var{parser:r}=e;return{type:"enclose",mode:r.mode,label:"\\angl",body:t[0]}}});var Dr={};function Vr(e){for(var{type:t,names:r,props:a,handler:n,htmlBuilder:i,mathmlBuilder:o}=e,s={type:t,numArgs:a.numArgs||0,allowedInText:!1,numOptionalArgs:0,handler:n},l=0;l{if(!e.parser.settings.displayMode)throw new i("{"+e.envName+"} can be used only in display mode.")};function Yr(e){if(-1===e.indexOf("ed"))return-1===e.indexOf("*")}function Xr(e,t,r){var{hskipBeforeAndAfter:a,addJot:o,cols:s,arraystretch:l,colSeparationType:h,autoTag:m,singleRow:c,emptySingleRow:p,maxNumCols:u,leqno:d}=t;if(e.gullet.beginGroup(),c||e.gullet.macros.set("\\cr","\\\\\\relax"),!l){var g=e.gullet.expandMacroAsText("\\arraystretch");if(null==g)l=1;else if(!(l=parseFloat(g))||l<0)throw new i("Invalid \\arraystretch: "+g)}e.gullet.beginGroup();var f=[],v=[f],b=[],y=[],x=null!=m?[]:void 0;function w(){m&&e.gullet.macros.set("\\@eqnsw","1",!0)}function k(){x&&(e.gullet.macros.get("\\df@tag")?(x.push(e.subparse([new n("\\df@tag")])),e.gullet.macros.set("\\df@tag",void 0,!0)):x.push(Boolean(m)&&"1"===e.gullet.macros.get("\\@eqnsw")))}for(w(),y.push(Gr(e));;){var S=e.parseExpression(!1,c?"\\end":"\\\\");e.gullet.endGroup(),e.gullet.beginGroup(),S={type:"ordgroup",mode:e.mode,body:S},r&&(S={type:"styling",mode:e.mode,style:r,body:[S]}),f.push(S);var M=e.fetch().text;if("&"===M){if(u&&f.length===u){if(c||h)throw new i("Too many tab characters: &",e.nextToken);e.settings.reportNonstrict("textEnv","Too few columns specified in the {array} column argument.")}e.consume()}else{if("\\end"===M){k(),1===f.length&&"styling"===S.type&&0===S.body[0].body.length&&(v.length>1||!p)&&v.pop(),y.length0&&(y+=.25),h.push({pos:y,isDashed:e[t]})}for(x(o[0]),r=0;r0&&(M<(B+=b)&&(M=B),B=0),e.addJot&&(M+=g),z.height=S,z.depth=M,y+=S,z.pos=y,y+=M+B,l[r]=z,x(o[r+1])}var C,N,q=y/2+t.fontMetrics().axisHeight,I=e.cols||[],R=[],H=[];if(e.tags&&e.tags.some((e=>e)))for(r=0;r=s)){var W=void 0;(a>0||e.hskipBeforeAndAfter)&&0!==(W=m.deflt(V.pregap,u))&&((C=Je.makeSpan(["arraycolsep"],[])).style.width=G(W),R.push(C));var _=[];for(r=0;r0){for(var K=Je.makeLineSpan("hline",t,c),J=Je.makeLineSpan("hdashline",t,c),Q=[{type:"elem",elem:l,shift:0}];h.length>0;){var ee=h.pop(),te=ee.pos-q;ee.isDashed?Q.push({type:"elem",elem:J,shift:te}):Q.push({type:"elem",elem:K,shift:te})}l=Je.makeVList({positionType:"individualShift",children:Q},t)}if(0===H.length)return Je.makeSpan(["mord"],[l],t);var re=Je.makeVList({positionType:"individualShift",children:H},t);return re=Je.makeSpan(["tag"],[re],t),Je.makeFragment([l,re])},jr={c:"center ",l:"left ",r:"right "},$r=function(e,t){for(var r=[],a=new Bt.MathNode("mtd",[],["mtr-glue"]),n=new Bt.MathNode("mtd",[],["mml-eqn-num"]),i=0;i0){var u=e.cols,d="",g=!1,f=0,v=u.length;"separator"===u[0].type&&(c+="top ",f=1),"separator"===u[u.length-1].type&&(c+="bottom ",v-=1);for(var b=f;b0?"left ":"",c+=S[S.length-1].length>0?"right ":"";for(var M=1;M-1?"alignat":"align",o="split"===e.envName,s=Xr(e.parser,{cols:a,addJot:!0,autoTag:o?void 0:Yr(e.envName),emptySingleRow:!0,colSeparationType:n,maxNumCols:o?2:void 0,leqno:e.parser.settings.leqno},"display"),l=0,h={type:"ordgroup",mode:e.mode,body:[]};if(t[0]&&"ordgroup"===t[0].type){for(var m="",c=0;c0&&p&&(g=1),a[u]={type:"align",align:d,pregap:g,postgap:0}}return s.colSeparationType=p?"align":"alignat",s};Vr({type:"array",names:["array","darray"],props:{numArgs:1},handler(e,t){var r=(Wt(t[0])?[t[0]]:Yt(t[0],"ordgroup").body).map((function(e){var t=Xt(e).text;if(-1!=="lcr".indexOf(t))return{type:"align",align:t};if("|"===t)return{type:"separator",separator:"|"};if(":"===t)return{type:"separator",separator:":"};throw new i("Unknown column alignment: "+t,e)})),a={cols:r,hskipBeforeAndAfter:!0,maxNumCols:r.length};return Xr(e.parser,a,Wr(e.envName))},htmlBuilder:_r,mathmlBuilder:$r}),Vr({type:"array",names:["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix","matrix*","pmatrix*","bmatrix*","Bmatrix*","vmatrix*","Vmatrix*"],props:{numArgs:0},handler(e){var t={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[e.envName.replace("*","")],r="c",a={hskipBeforeAndAfter:!1,cols:[{type:"align",align:r}]};if("*"===e.envName.charAt(e.envName.length-1)){var n=e.parser;if(n.consumeSpaces(),"["===n.fetch().text){if(n.consume(),n.consumeSpaces(),r=n.fetch().text,-1==="lcr".indexOf(r))throw new i("Expected l or c or r",n.nextToken);n.consume(),n.consumeSpaces(),n.expect("]"),n.consume(),a.cols=[{type:"align",align:r}]}}var o=Xr(e.parser,a,Wr(e.envName)),s=Math.max(0,...o.body.map((e=>e.length)));return o.cols=new Array(s).fill({type:"align",align:r}),t?{type:"leftright",mode:e.mode,body:[o],left:t[0],right:t[1],rightColor:void 0}:o},htmlBuilder:_r,mathmlBuilder:$r}),Vr({type:"array",names:["smallmatrix"],props:{numArgs:0},handler(e){var t=Xr(e.parser,{arraystretch:.5},"script");return t.colSeparationType="small",t},htmlBuilder:_r,mathmlBuilder:$r}),Vr({type:"array",names:["subarray"],props:{numArgs:1},handler(e,t){var r=(Wt(t[0])?[t[0]]:Yt(t[0],"ordgroup").body).map((function(e){var t=Xt(e).text;if(-1!=="lc".indexOf(t))return{type:"align",align:t};throw new i("Unknown column alignment: "+t,e)}));if(r.length>1)throw new i("{subarray} can contain only one column");var a={cols:r,hskipBeforeAndAfter:!1,arraystretch:.5};if((a=Xr(e.parser,a,"script")).body.length>0&&a.body[0].length>1)throw new i("{subarray} can contain only one column");return a},htmlBuilder:_r,mathmlBuilder:$r}),Vr({type:"array",names:["cases","dcases","rcases","drcases"],props:{numArgs:0},handler(e){var t=Xr(e.parser,{arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:1},{type:"align",align:"l",pregap:0,postgap:0}]},Wr(e.envName));return{type:"leftright",mode:e.mode,body:[t],left:e.envName.indexOf("r")>-1?".":"\\{",right:e.envName.indexOf("r")>-1?"\\}":".",rightColor:void 0}},htmlBuilder:_r,mathmlBuilder:$r}),Vr({type:"array",names:["align","align*","aligned","split"],props:{numArgs:0},handler:Zr,htmlBuilder:_r,mathmlBuilder:$r}),Vr({type:"array",names:["gathered","gather","gather*"],props:{numArgs:0},handler(e){["gather","gather*"].includes(e.envName)&&Ur(e);var t={cols:[{type:"align",align:"c"}],addJot:!0,colSeparationType:"gather",autoTag:Yr(e.envName),emptySingleRow:!0,leqno:e.parser.settings.leqno};return Xr(e.parser,t,"display")},htmlBuilder:_r,mathmlBuilder:$r}),Vr({type:"array",names:["alignat","alignat*","alignedat"],props:{numArgs:1},handler:Zr,htmlBuilder:_r,mathmlBuilder:$r}),Vr({type:"array",names:["equation","equation*"],props:{numArgs:0},handler(e){Ur(e);var t={autoTag:Yr(e.envName),emptySingleRow:!0,singleRow:!0,maxNumCols:1,leqno:e.parser.settings.leqno};return Xr(e.parser,t,"display")},htmlBuilder:_r,mathmlBuilder:$r}),Vr({type:"array",names:["CD"],props:{numArgs:0},handler:e=>(Ur(e),function(e){var t=[];for(e.gullet.beginGroup(),e.gullet.macros.set("\\cr","\\\\\\relax"),e.gullet.beginGroup();;){t.push(e.parseExpression(!1,"\\\\")),e.gullet.endGroup(),e.gullet.beginGroup();var r=e.fetch().text;if("&"!==r&&"\\\\"!==r){if("\\end"===r){0===t[t.length-1].length&&t.pop();break}throw new i("Expected \\\\ or \\cr or \\end",e.nextToken)}e.consume()}for(var a,n,o=[],s=[o],l=0;l-1);else{if(!("<>AV".indexOf(p)>-1))throw new i('Expected one of "<>AV=|." after @',h[c]);for(var d=0;d<2;d++){for(var g=!0,f=c+1;f{var r=e.font,a=t.withFont(r);return kt(e.body,a)},Qr=(e,t)=>{var r=e.font,a=t.withFont(r);return Ot(e.body,a)},ea={"\\Bbb":"\\mathbb","\\bold":"\\mathbf","\\frak":"\\mathfrak","\\bm":"\\boldsymbol"};st({type:"font",names:["\\mathrm","\\mathit","\\mathbf","\\mathnormal","\\mathsfit","\\mathbb","\\mathcal","\\mathfrak","\\mathscr","\\mathsf","\\mathtt","\\Bbb","\\bold","\\frak"],props:{numArgs:1,allowedInArgument:!0},handler:(e,t)=>{var{parser:r,funcName:a}=e,n=ht(t[0]),i=a;return i in ea&&(i=ea[i]),{type:"font",mode:r.mode,font:i.slice(1),body:n}},htmlBuilder:Jr,mathmlBuilder:Qr}),st({type:"mclass",names:["\\boldsymbol","\\bm"],props:{numArgs:1},handler:(e,t)=>{var{parser:r}=e,a=t[0],n=m.isCharacterBox(a);return{type:"mclass",mode:r.mode,mclass:er(a),body:[{type:"font",mode:r.mode,font:"boldsymbol",body:a}],isCharacterBox:n}}}),st({type:"font",names:["\\rm","\\sf","\\tt","\\bf","\\it","\\cal"],props:{numArgs:0,allowedInText:!0},handler:(e,t)=>{var{parser:r,funcName:a,breakOnTokenText:n}=e,{mode:i}=r,o=r.parseExpression(!0,n);return{type:"font",mode:i,font:"math"+a.slice(1),body:{type:"ordgroup",mode:r.mode,body:o}}},htmlBuilder:Jr,mathmlBuilder:Qr});var ta=(e,t)=>{var r=t;return"display"===e?r=r.id>=k.SCRIPT.id?r.text():k.DISPLAY:"text"===e&&r.size===k.DISPLAY.size?r=k.TEXT:"script"===e?r=k.SCRIPT:"scriptscript"===e&&(r=k.SCRIPTSCRIPT),r},ra=(e,t)=>{var r,a=ta(e.size,t.style),n=a.fracNum(),i=a.fracDen();r=t.havingStyle(n);var o=kt(e.numer,r,t);if(e.continued){var s=8.5/t.fontMetrics().ptPerEm,l=3.5/t.fontMetrics().ptPerEm;o.height=o.height0?3*c:7*c,d=t.fontMetrics().denom1):(m>0?(p=t.fontMetrics().num2,u=c):(p=t.fontMetrics().num3,u=3*c),d=t.fontMetrics().denom2),h){var x=t.fontMetrics().axisHeight;p-o.depth-(x+.5*m){var r=new Bt.MathNode("mfrac",[Ot(e.numer,t),Ot(e.denom,t)]);if(e.hasBarLine){if(e.barSize){var a=F(e.barSize,t);r.setAttribute("linethickness",G(a))}}else r.setAttribute("linethickness","0px");var n=ta(e.size,t.style);if(n.size!==t.style.size){r=new Bt.MathNode("mstyle",[r]);var i=n.size===k.DISPLAY.size?"true":"false";r.setAttribute("displaystyle",i),r.setAttribute("scriptlevel","0")}if(null!=e.leftDelim||null!=e.rightDelim){var o=[];if(null!=e.leftDelim){var s=new Bt.MathNode("mo",[new Bt.TextNode(e.leftDelim.replace("\\",""))]);s.setAttribute("fence","true"),o.push(s)}if(o.push(r),null!=e.rightDelim){var l=new Bt.MathNode("mo",[new Bt.TextNode(e.rightDelim.replace("\\",""))]);l.setAttribute("fence","true"),o.push(l)}return Nt(o)}return r};st({type:"genfrac",names:["\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac","\\\\bracefrac","\\\\brackfrac"],props:{numArgs:2,allowedInArgument:!0},handler:(e,t)=>{var r,{parser:a,funcName:n}=e,i=t[0],o=t[1],s=null,l=null,h="auto";switch(n){case"\\dfrac":case"\\frac":case"\\tfrac":r=!0;break;case"\\\\atopfrac":r=!1;break;case"\\dbinom":case"\\binom":case"\\tbinom":r=!1,s="(",l=")";break;case"\\\\bracefrac":r=!1,s="\\{",l="\\}";break;case"\\\\brackfrac":r=!1,s="[",l="]";break;default:throw new Error("Unrecognized genfrac command")}switch(n){case"\\dfrac":case"\\dbinom":h="display";break;case"\\tfrac":case"\\tbinom":h="text"}return{type:"genfrac",mode:a.mode,continued:!1,numer:i,denom:o,hasBarLine:r,leftDelim:s,rightDelim:l,size:h,barSize:null}},htmlBuilder:ra,mathmlBuilder:aa}),st({type:"genfrac",names:["\\cfrac"],props:{numArgs:2},handler:(e,t)=>{var{parser:r,funcName:a}=e,n=t[0],i=t[1];return{type:"genfrac",mode:r.mode,continued:!0,numer:n,denom:i,hasBarLine:!0,leftDelim:null,rightDelim:null,size:"display",barSize:null}}}),st({type:"infix",names:["\\over","\\choose","\\atop","\\brace","\\brack"],props:{numArgs:0,infix:!0},handler(e){var t,{parser:r,funcName:a,token:n}=e;switch(a){case"\\over":t="\\frac";break;case"\\choose":t="\\binom";break;case"\\atop":t="\\\\atopfrac";break;case"\\brace":t="\\\\bracefrac";break;case"\\brack":t="\\\\brackfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",mode:r.mode,replaceWith:t,token:n}}});var na=["display","text","script","scriptscript"],ia=function(e){var t=null;return e.length>0&&(t="."===(t=e)?null:t),t};st({type:"genfrac",names:["\\genfrac"],props:{numArgs:6,allowedInArgument:!0,argTypes:["math","math","size","text","math","math"]},handler(e,t){var r,{parser:a}=e,n=t[4],i=t[5],o=ht(t[0]),s="atom"===o.type&&"open"===o.family?ia(o.text):null,l=ht(t[1]),h="atom"===l.type&&"close"===l.family?ia(l.text):null,m=Yt(t[2],"size"),c=null;r=!!m.isBlank||(c=m.value).number>0;var p="auto",u=t[3];if("ordgroup"===u.type){if(u.body.length>0){var d=Yt(u.body[0],"textord");p=na[Number(d.text)]}}else u=Yt(u,"textord"),p=na[Number(u.text)];return{type:"genfrac",mode:a.mode,numer:n,denom:i,continued:!1,hasBarLine:r,barSize:c,leftDelim:s,rightDelim:h,size:p}},htmlBuilder:ra,mathmlBuilder:aa}),st({type:"infix",names:["\\above"],props:{numArgs:1,argTypes:["size"],infix:!0},handler(e,t){var{parser:r,funcName:a,token:n}=e;return{type:"infix",mode:r.mode,replaceWith:"\\\\abovefrac",size:Yt(t[0],"size").value,token:n}}}),st({type:"genfrac",names:["\\\\abovefrac"],props:{numArgs:3,argTypes:["math","size","math"]},handler:(e,t)=>{var{parser:r,funcName:a}=e,n=t[0],i=function(e){if(!e)throw new Error("Expected non-null, but got "+String(e));return e}(Yt(t[1],"infix").size),o=t[2],s=i.number>0;return{type:"genfrac",mode:r.mode,numer:n,denom:o,continued:!1,hasBarLine:s,barSize:i,leftDelim:null,rightDelim:null,size:"auto"}},htmlBuilder:ra,mathmlBuilder:aa});var oa=(e,t)=>{var r,a,n=t.style;"supsub"===e.type?(r=e.sup?kt(e.sup,t.havingStyle(n.sup()),t):kt(e.sub,t.havingStyle(n.sub()),t),a=Yt(e.base,"horizBrace")):a=Yt(e,"horizBrace");var i,o=kt(a.base,t.havingBaseStyle(k.DISPLAY)),s=Ut(a,t);if(a.isOver?(i=Je.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:o},{type:"kern",size:.1},{type:"elem",elem:s}]},t)).children[0].children[0].children[1].classes.push("svg-align"):(i=Je.makeVList({positionType:"bottom",positionData:o.depth+.1+s.height,children:[{type:"elem",elem:s},{type:"kern",size:.1},{type:"elem",elem:o}]},t)).children[0].children[0].children[0].classes.push("svg-align"),r){var l=Je.makeSpan(["mord",a.isOver?"mover":"munder"],[i],t);i=a.isOver?Je.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:l},{type:"kern",size:.2},{type:"elem",elem:r}]},t):Je.makeVList({positionType:"bottom",positionData:l.depth+.2+r.height+r.depth,children:[{type:"elem",elem:r},{type:"kern",size:.2},{type:"elem",elem:l}]},t)}return Je.makeSpan(["mord",a.isOver?"mover":"munder"],[i],t)};st({type:"horizBrace",names:["\\overbrace","\\underbrace"],props:{numArgs:1},handler(e,t){var{parser:r,funcName:a}=e;return{type:"horizBrace",mode:r.mode,label:a,isOver:/^\\over/.test(a),base:t[0]}},htmlBuilder:oa,mathmlBuilder:(e,t)=>{var r=Gt(e.label);return new Bt.MathNode(e.isOver?"mover":"munder",[Ot(e.base,t),r])}}),st({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"],allowedInText:!0},handler:(e,t)=>{var{parser:r}=e,a=t[1],n=Yt(t[0],"url").url;return r.settings.isTrusted({command:"\\href",url:n})?{type:"href",mode:r.mode,href:n,body:mt(a)}:r.formatUnsupportedCmd("\\href")},htmlBuilder:(e,t)=>{var r=ft(e.body,t,!1);return Je.makeAnchor(e.href,[],r,t)},mathmlBuilder:(e,t)=>{var r=Ht(e.body,t);return r instanceof At||(r=new At("mrow",[r])),r.setAttribute("href",e.href),r}}),st({type:"href",names:["\\url"],props:{numArgs:1,argTypes:["url"],allowedInText:!0},handler:(e,t)=>{var{parser:r}=e,a=Yt(t[0],"url").url;if(!r.settings.isTrusted({command:"\\url",url:a}))return r.formatUnsupportedCmd("\\url");for(var n=[],i=0;inew Bt.MathNode("mrow",Rt(e.body,t))}),st({type:"html",names:["\\htmlClass","\\htmlId","\\htmlStyle","\\htmlData"],props:{numArgs:2,argTypes:["raw","original"],allowedInText:!0},handler:(e,t)=>{var r,{parser:a,funcName:n,token:o}=e,s=Yt(t[0],"raw").string,l=t[1];a.settings.strict&&a.settings.reportNonstrict("htmlExtension","HTML extension is disabled on strict mode");var h={};switch(n){case"\\htmlClass":h.class=s,r={command:"\\htmlClass",class:s};break;case"\\htmlId":h.id=s,r={command:"\\htmlId",id:s};break;case"\\htmlStyle":h.style=s,r={command:"\\htmlStyle",style:s};break;case"\\htmlData":for(var m=s.split(","),c=0;c{var r=ft(e.body,t,!1),a=["enclosing"];e.attributes.class&&a.push(...e.attributes.class.trim().split(/\s+/));var n=Je.makeSpan(a,r,t);for(var i in e.attributes)"class"!==i&&e.attributes.hasOwnProperty(i)&&n.setAttribute(i,e.attributes[i]);return n},mathmlBuilder:(e,t)=>Ht(e.body,t)}),st({type:"htmlmathml",names:["\\html@mathml"],props:{numArgs:2,allowedInText:!0},handler:(e,t)=>{var{parser:r}=e;return{type:"htmlmathml",mode:r.mode,html:mt(t[0]),mathml:mt(t[1])}},htmlBuilder:(e,t)=>{var r=ft(e.html,t,!1);return Je.makeFragment(r)},mathmlBuilder:(e,t)=>Ht(e.mathml,t)});var sa=function(e){if(/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(e))return{number:+e,unit:"bp"};var t=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(e);if(!t)throw new i("Invalid size: '"+e+"' in \\includegraphics");var r={number:+(t[1]+t[2]),unit:t[3]};if(!P(r))throw new i("Invalid unit: '"+r.unit+"' in \\includegraphics.");return r};st({type:"includegraphics",names:["\\includegraphics"],props:{numArgs:1,numOptionalArgs:1,argTypes:["raw","url"],allowedInText:!1},handler:(e,t,r)=>{var{parser:a}=e,n={number:0,unit:"em"},o={number:.9,unit:"em"},s={number:0,unit:"em"},l="";if(r[0])for(var h=Yt(r[0],"raw").string.split(","),m=0;m{var r=F(e.height,t),a=0;e.totalheight.number>0&&(a=F(e.totalheight,t)-r);var n=0;e.width.number>0&&(n=F(e.width,t));var i={height:G(r+a)};n>0&&(i.width=G(n)),a>0&&(i.verticalAlign=G(-a));var o=new Z(e.src,e.alt,i);return o.height=r,o.depth=a,o},mathmlBuilder:(e,t)=>{var r=new Bt.MathNode("mglyph",[]);r.setAttribute("alt",e.alt);var a=F(e.height,t),n=0;if(e.totalheight.number>0&&(n=F(e.totalheight,t)-a,r.setAttribute("valign",G(-n))),r.setAttribute("height",G(a+n)),e.width.number>0){var i=F(e.width,t);r.setAttribute("width",G(i))}return r.setAttribute("src",e.src),r}}),st({type:"kern",names:["\\kern","\\mkern","\\hskip","\\mskip"],props:{numArgs:1,argTypes:["size"],primitive:!0,allowedInText:!0},handler(e,t){var{parser:r,funcName:a}=e,n=Yt(t[0],"size");if(r.settings.strict){var i="m"===a[1],o="mu"===n.value.unit;i?(o||r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+a+" supports only mu units, not "+n.value.unit+" units"),"math"!==r.mode&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+a+" works only in math mode")):o&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+a+" doesn't support mu units")}return{type:"kern",mode:r.mode,dimension:n.value}},htmlBuilder:(e,t)=>Je.makeGlue(e.dimension,t),mathmlBuilder(e,t){var r=F(e.dimension,t);return new Bt.SpaceNode(r)}}),st({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap"],props:{numArgs:1,allowedInText:!0},handler:(e,t)=>{var{parser:r,funcName:a}=e,n=t[0];return{type:"lap",mode:r.mode,alignment:a.slice(5),body:n}},htmlBuilder:(e,t)=>{var r;"clap"===e.alignment?(r=Je.makeSpan([],[kt(e.body,t)]),r=Je.makeSpan(["inner"],[r],t)):r=Je.makeSpan(["inner"],[kt(e.body,t)]);var a=Je.makeSpan(["fix"],[]),n=Je.makeSpan([e.alignment],[r,a],t),i=Je.makeSpan(["strut"]);return i.style.height=G(n.height+n.depth),n.depth&&(i.style.verticalAlign=G(-n.depth)),n.children.unshift(i),n=Je.makeSpan(["thinbox"],[n],t),Je.makeSpan(["mord","vbox"],[n],t)},mathmlBuilder:(e,t)=>{var r=new Bt.MathNode("mpadded",[Ot(e.body,t)]);if("rlap"!==e.alignment){var a="llap"===e.alignment?"-1":"-0.5";r.setAttribute("lspace",a+"width")}return r.setAttribute("width","0px"),r}}),st({type:"styling",names:["\\(","$"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(e,t){var{funcName:r,parser:a}=e,n=a.mode;a.switchMode("math");var i="\\("===r?"\\)":"$",o=a.parseExpression(!1,i);return a.expect(i),a.switchMode(n),{type:"styling",mode:a.mode,style:"text",body:o}}}),st({type:"text",names:["\\)","\\]"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(e,t){throw new i("Mismatched "+e.funcName)}});var la=(e,t)=>{switch(t.style.size){case k.DISPLAY.size:return e.display;case k.TEXT.size:return e.text;case k.SCRIPT.size:return e.script;case k.SCRIPTSCRIPT.size:return e.scriptscript;default:return e.text}};st({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4,primitive:!0},handler:(e,t)=>{var{parser:r}=e;return{type:"mathchoice",mode:r.mode,display:mt(t[0]),text:mt(t[1]),script:mt(t[2]),scriptscript:mt(t[3])}},htmlBuilder:(e,t)=>{var r=la(e,t),a=ft(r,t,!1);return Je.makeFragment(a)},mathmlBuilder:(e,t)=>{var r=la(e,t);return Ht(r,t)}});var ha=(e,t,r,a,n,i,o)=>{e=Je.makeSpan([],[e]);var s,l,h,c=r&&m.isCharacterBox(r);if(t){var p=kt(t,a.havingStyle(n.sup()),a);l={elem:p,kern:Math.max(a.fontMetrics().bigOpSpacing1,a.fontMetrics().bigOpSpacing3-p.depth)}}if(r){var u=kt(r,a.havingStyle(n.sub()),a);s={elem:u,kern:Math.max(a.fontMetrics().bigOpSpacing2,a.fontMetrics().bigOpSpacing4-u.height)}}if(l&&s){var d=a.fontMetrics().bigOpSpacing5+s.elem.height+s.elem.depth+s.kern+e.depth+o;h=Je.makeVList({positionType:"bottom",positionData:d,children:[{type:"kern",size:a.fontMetrics().bigOpSpacing5},{type:"elem",elem:s.elem,marginLeft:G(-i)},{type:"kern",size:s.kern},{type:"elem",elem:e},{type:"kern",size:l.kern},{type:"elem",elem:l.elem,marginLeft:G(i)},{type:"kern",size:a.fontMetrics().bigOpSpacing5}]},a)}else if(s){var g=e.height-o;h=Je.makeVList({positionType:"top",positionData:g,children:[{type:"kern",size:a.fontMetrics().bigOpSpacing5},{type:"elem",elem:s.elem,marginLeft:G(-i)},{type:"kern",size:s.kern},{type:"elem",elem:e}]},a)}else{if(!l)return e;var f=e.depth+o;h=Je.makeVList({positionType:"bottom",positionData:f,children:[{type:"elem",elem:e},{type:"kern",size:l.kern},{type:"elem",elem:l.elem,marginLeft:G(i)},{type:"kern",size:a.fontMetrics().bigOpSpacing5}]},a)}var v=[h];if(s&&0!==i&&!c){var b=Je.makeSpan(["mspace"],[],a);b.style.marginRight=G(i),v.unshift(b)}return Je.makeSpan(["mop","op-limits"],v,a)},ma=["\\smallint"],ca=(e,t)=>{var r,a,n,i=!1;"supsub"===e.type?(r=e.sup,a=e.sub,n=Yt(e.base,"op"),i=!0):n=Yt(e,"op");var o,s=t.style,l=!1;if(s.size===k.DISPLAY.size&&n.symbol&&!ma.includes(n.name)&&(l=!0),n.symbol){var h=l?"Size2-Regular":"Size1-Regular",m="";if("\\oiint"!==n.name&&"\\oiiint"!==n.name||(m=n.name.slice(1),n.name="oiint"===m?"\\iint":"\\iiint"),o=Je.makeSymbol(n.name,h,"math",t,["mop","op-symbol",l?"large-op":"small-op"]),m.length>0){var c=o.italic,p=Je.staticSvg(m+"Size"+(l?"2":"1"),t);o=Je.makeVList({positionType:"individualShift",children:[{type:"elem",elem:o,shift:0},{type:"elem",elem:p,shift:l?.08:0}]},t),n.name="\\"+m,o.classes.unshift("mop"),o.italic=c}}else if(n.body){var u=ft(n.body,t,!0);1===u.length&&u[0]instanceof J?(o=u[0]).classes[0]="mop":o=Je.makeSpan(["mop"],u,t)}else{for(var d=[],g=1;g{var r;if(e.symbol)r=new At("mo",[Ct(e.name,e.mode)]),ma.includes(e.name)&&r.setAttribute("largeop","false");else if(e.body)r=new At("mo",Rt(e.body,t));else{r=new At("mi",[new Tt(e.name.slice(1))]);var a=new At("mo",[Ct("\u2061","text")]);r=e.parentIsSupSub?new At("mrow",[r,a]):zt([r,a])}return r},ua={"\u220f":"\\prod","\u2210":"\\coprod","\u2211":"\\sum","\u22c0":"\\bigwedge","\u22c1":"\\bigvee","\u22c2":"\\bigcap","\u22c3":"\\bigcup","\u2a00":"\\bigodot","\u2a01":"\\bigoplus","\u2a02":"\\bigotimes","\u2a04":"\\biguplus","\u2a06":"\\bigsqcup"};st({type:"op",names:["\\coprod","\\bigvee","\\bigwedge","\\biguplus","\\bigcap","\\bigcup","\\intop","\\prod","\\sum","\\bigotimes","\\bigoplus","\\bigodot","\\bigsqcup","\\smallint","\u220f","\u2210","\u2211","\u22c0","\u22c1","\u22c2","\u22c3","\u2a00","\u2a01","\u2a02","\u2a04","\u2a06"],props:{numArgs:0},handler:(e,t)=>{var{parser:r,funcName:a}=e,n=a;return 1===n.length&&(n=ua[n]),{type:"op",mode:r.mode,limits:!0,parentIsSupSub:!1,symbol:!0,name:n}},htmlBuilder:ca,mathmlBuilder:pa}),st({type:"op",names:["\\mathop"],props:{numArgs:1,primitive:!0},handler:(e,t)=>{var{parser:r}=e,a=t[0];return{type:"op",mode:r.mode,limits:!1,parentIsSupSub:!1,symbol:!1,body:mt(a)}},htmlBuilder:ca,mathmlBuilder:pa});var da={"\u222b":"\\int","\u222c":"\\iint","\u222d":"\\iiint","\u222e":"\\oint","\u222f":"\\oiint","\u2230":"\\oiiint"};st({type:"op",names:["\\arcsin","\\arccos","\\arctan","\\arctg","\\arcctg","\\arg","\\ch","\\cos","\\cosec","\\cosh","\\cot","\\cotg","\\coth","\\csc","\\ctg","\\cth","\\deg","\\dim","\\exp","\\hom","\\ker","\\lg","\\ln","\\log","\\sec","\\sin","\\sinh","\\sh","\\tan","\\tanh","\\tg","\\th"],props:{numArgs:0},handler(e){var{parser:t,funcName:r}=e;return{type:"op",mode:t.mode,limits:!1,parentIsSupSub:!1,symbol:!1,name:r}},htmlBuilder:ca,mathmlBuilder:pa}),st({type:"op",names:["\\det","\\gcd","\\inf","\\lim","\\max","\\min","\\Pr","\\sup"],props:{numArgs:0},handler(e){var{parser:t,funcName:r}=e;return{type:"op",mode:t.mode,limits:!0,parentIsSupSub:!1,symbol:!1,name:r}},htmlBuilder:ca,mathmlBuilder:pa}),st({type:"op",names:["\\int","\\iint","\\iiint","\\oint","\\oiint","\\oiiint","\u222b","\u222c","\u222d","\u222e","\u222f","\u2230"],props:{numArgs:0},handler(e){var{parser:t,funcName:r}=e,a=r;return 1===a.length&&(a=da[a]),{type:"op",mode:t.mode,limits:!1,parentIsSupSub:!1,symbol:!0,name:a}},htmlBuilder:ca,mathmlBuilder:pa});var ga=(e,t)=>{var r,a,n,i,o=!1;if("supsub"===e.type?(r=e.sup,a=e.sub,n=Yt(e.base,"operatorname"),o=!0):n=Yt(e,"operatorname"),n.body.length>0){for(var s=n.body.map((e=>{var t=e.text;return"string"==typeof t?{type:"textord",mode:e.mode,text:t}:e})),l=ft(s,t.withFont("mathrm"),!0),h=0;h{var{parser:r,funcName:a}=e,n=t[0];return{type:"operatorname",mode:r.mode,body:mt(n),alwaysHandleSupSub:"\\operatornamewithlimits"===a,limits:!1,parentIsSupSub:!1}},htmlBuilder:ga,mathmlBuilder:(e,t)=>{for(var r=Rt(e.body,t.withFont("mathrm")),a=!0,n=0;ne.toText())).join("");r=[new Bt.TextNode(s)]}var l=new Bt.MathNode("mi",r);l.setAttribute("mathvariant","normal");var h=new Bt.MathNode("mo",[Ct("\u2061","text")]);return e.parentIsSupSub?new Bt.MathNode("mrow",[l,h]):Bt.newDocumentFragment([l,h])}}),Fr("\\operatorname","\\@ifstar\\operatornamewithlimits\\operatorname@"),lt({type:"ordgroup",htmlBuilder:(e,t)=>e.semisimple?Je.makeFragment(ft(e.body,t,!1)):Je.makeSpan(["mord"],ft(e.body,t,!0),t),mathmlBuilder:(e,t)=>Ht(e.body,t,!0)}),st({type:"overline",names:["\\overline"],props:{numArgs:1},handler(e,t){var{parser:r}=e,a=t[0];return{type:"overline",mode:r.mode,body:a}},htmlBuilder(e,t){var r=kt(e.body,t.havingCrampedStyle()),a=Je.makeLineSpan("overline-line",t),n=t.fontMetrics().defaultRuleThickness,i=Je.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r},{type:"kern",size:3*n},{type:"elem",elem:a},{type:"kern",size:n}]},t);return Je.makeSpan(["mord","overline"],[i],t)},mathmlBuilder(e,t){var r=new Bt.MathNode("mo",[new Bt.TextNode("\u203e")]);r.setAttribute("stretchy","true");var a=new Bt.MathNode("mover",[Ot(e.body,t),r]);return a.setAttribute("accent","true"),a}}),st({type:"phantom",names:["\\phantom"],props:{numArgs:1,allowedInText:!0},handler:(e,t)=>{var{parser:r}=e,a=t[0];return{type:"phantom",mode:r.mode,body:mt(a)}},htmlBuilder:(e,t)=>{var r=ft(e.body,t.withPhantom(),!1);return Je.makeFragment(r)},mathmlBuilder:(e,t)=>{var r=Rt(e.body,t);return new Bt.MathNode("mphantom",r)}}),st({type:"hphantom",names:["\\hphantom"],props:{numArgs:1,allowedInText:!0},handler:(e,t)=>{var{parser:r}=e,a=t[0];return{type:"hphantom",mode:r.mode,body:a}},htmlBuilder:(e,t)=>{var r=Je.makeSpan([],[kt(e.body,t.withPhantom())]);if(r.height=0,r.depth=0,r.children)for(var a=0;a{var r=Rt(mt(e.body),t),a=new Bt.MathNode("mphantom",r),n=new Bt.MathNode("mpadded",[a]);return n.setAttribute("height","0px"),n.setAttribute("depth","0px"),n}}),st({type:"vphantom",names:["\\vphantom"],props:{numArgs:1,allowedInText:!0},handler:(e,t)=>{var{parser:r}=e,a=t[0];return{type:"vphantom",mode:r.mode,body:a}},htmlBuilder:(e,t)=>{var r=Je.makeSpan(["inner"],[kt(e.body,t.withPhantom())]),a=Je.makeSpan(["fix"],[]);return Je.makeSpan(["mord","rlap"],[r,a],t)},mathmlBuilder:(e,t)=>{var r=Rt(mt(e.body),t),a=new Bt.MathNode("mphantom",r),n=new Bt.MathNode("mpadded",[a]);return n.setAttribute("width","0px"),n}}),st({type:"raisebox",names:["\\raisebox"],props:{numArgs:2,argTypes:["size","hbox"],allowedInText:!0},handler(e,t){var{parser:r}=e,a=Yt(t[0],"size").value,n=t[1];return{type:"raisebox",mode:r.mode,dy:a,body:n}},htmlBuilder(e,t){var r=kt(e.body,t),a=F(e.dy,t);return Je.makeVList({positionType:"shift",positionData:-a,children:[{type:"elem",elem:r}]},t)},mathmlBuilder(e,t){var r=new Bt.MathNode("mpadded",[Ot(e.body,t)]),a=e.dy.number+e.dy.unit;return r.setAttribute("voffset",a),r}}),st({type:"internal",names:["\\relax"],props:{numArgs:0,allowedInText:!0,allowedInArgument:!0},handler(e){var{parser:t}=e;return{type:"internal",mode:t.mode}}}),st({type:"rule",names:["\\rule"],props:{numArgs:2,numOptionalArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["size","size","size"]},handler(e,t,r){var{parser:a}=e,n=r[0],i=Yt(t[0],"size"),o=Yt(t[1],"size");return{type:"rule",mode:a.mode,shift:n&&Yt(n,"size").value,width:i.value,height:o.value}},htmlBuilder(e,t){var r=Je.makeSpan(["mord","rule"],[],t),a=F(e.width,t),n=F(e.height,t),i=e.shift?F(e.shift,t):0;return r.style.borderRightWidth=G(a),r.style.borderTopWidth=G(n),r.style.bottom=G(i),r.width=a,r.height=n+i,r.depth=-i,r.maxFontSize=1.125*n*t.sizeMultiplier,r},mathmlBuilder(e,t){var r=F(e.width,t),a=F(e.height,t),n=e.shift?F(e.shift,t):0,i=t.color&&t.getColor()||"black",o=new Bt.MathNode("mspace");o.setAttribute("mathbackground",i),o.setAttribute("width",G(r)),o.setAttribute("height",G(a));var s=new Bt.MathNode("mpadded",[o]);return n>=0?s.setAttribute("height",G(n)):(s.setAttribute("height",G(n)),s.setAttribute("depth",G(-n))),s.setAttribute("voffset",G(n)),s}});var va=["\\tiny","\\sixptsize","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"];st({type:"sizing",names:va,props:{numArgs:0,allowedInText:!0},handler:(e,t)=>{var{breakOnTokenText:r,funcName:a,parser:n}=e,i=n.parseExpression(!1,r);return{type:"sizing",mode:n.mode,size:va.indexOf(a)+1,body:i}},htmlBuilder:(e,t)=>{var r=t.havingSize(e.size);return fa(e.body,r,t)},mathmlBuilder:(e,t)=>{var r=t.havingSize(e.size),a=Rt(e.body,r),n=new Bt.MathNode("mstyle",a);return n.setAttribute("mathsize",G(r.sizeMultiplier)),n}}),st({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:(e,t,r)=>{var{parser:a}=e,n=!1,i=!1,o=r[0]&&Yt(r[0],"ordgroup");if(o)for(var s="",l=0;l{var r=Je.makeSpan([],[kt(e.body,t)]);if(!e.smashHeight&&!e.smashDepth)return r;if(e.smashHeight&&(r.height=0,r.children))for(var a=0;a{var r=new Bt.MathNode("mpadded",[Ot(e.body,t)]);return e.smashHeight&&r.setAttribute("height","0px"),e.smashDepth&&r.setAttribute("depth","0px"),r}}),st({type:"sqrt",names:["\\sqrt"],props:{numArgs:1,numOptionalArgs:1},handler(e,t,r){var{parser:a}=e,n=r[0],i=t[0];return{type:"sqrt",mode:a.mode,body:i,index:n}},htmlBuilder(e,t){var r=kt(e.body,t.havingCrampedStyle());0===r.height&&(r.height=t.fontMetrics().xHeight),r=Je.wrapFragment(r,t);var a=t.fontMetrics().defaultRuleThickness,n=a;t.style.idr.height+r.depth+i&&(i=(i+m-r.height-r.depth)/2);var c=s.height-r.height-i-l;r.style.paddingLeft=G(h);var p=Je.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r,wrapperClasses:["svg-align"]},{type:"kern",size:-(r.height+c)},{type:"elem",elem:s},{type:"kern",size:l}]},t);if(e.index){var u=t.havingStyle(k.SCRIPTSCRIPT),d=kt(e.index,u,t),g=.6*(p.height-p.depth),f=Je.makeVList({positionType:"shift",positionData:-g,children:[{type:"elem",elem:d}]},t),v=Je.makeSpan(["root"],[f]);return Je.makeSpan(["mord","sqrt"],[v,p],t)}return Je.makeSpan(["mord","sqrt"],[p],t)},mathmlBuilder(e,t){var{body:r,index:a}=e;return a?new Bt.MathNode("mroot",[Ot(r,t),Ot(a,t)]):new Bt.MathNode("msqrt",[Ot(r,t)])}});var ba={display:k.DISPLAY,text:k.TEXT,script:k.SCRIPT,scriptscript:k.SCRIPTSCRIPT};st({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler(e,t){var{breakOnTokenText:r,funcName:a,parser:n}=e,i=n.parseExpression(!0,r),o=a.slice(1,a.length-5);return{type:"styling",mode:n.mode,style:o,body:i}},htmlBuilder(e,t){var r=ba[e.style],a=t.havingStyle(r).withFont("");return fa(e.body,a,t)},mathmlBuilder(e,t){var r=ba[e.style],a=t.havingStyle(r),n=Rt(e.body,a),i=new Bt.MathNode("mstyle",n),o={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]}[e.style];return i.setAttribute("scriptlevel",o[0]),i.setAttribute("displaystyle",o[1]),i}});lt({type:"supsub",htmlBuilder(e,t){var r=function(e,t){var r=e.base;return r?"op"===r.type?r.limits&&(t.style.size===k.DISPLAY.size||r.alwaysHandleSupSub)?ca:null:"operatorname"===r.type?r.alwaysHandleSupSub&&(t.style.size===k.DISPLAY.size||r.limits)?ga:null:"accent"===r.type?m.isCharacterBox(r.base)?_t:null:"horizBrace"===r.type&&!e.sub===r.isOver?oa:null:null}(e,t);if(r)return r(e,t);var a,n,i,{base:o,sup:s,sub:l}=e,h=kt(o,t),c=t.fontMetrics(),p=0,u=0,d=o&&m.isCharacterBox(o);if(s){var g=t.havingStyle(t.style.sup());a=kt(s,g,t),d||(p=h.height-g.fontMetrics().supDrop*g.sizeMultiplier/t.sizeMultiplier)}if(l){var f=t.havingStyle(t.style.sub());n=kt(l,f,t),d||(u=h.depth+f.fontMetrics().subDrop*f.sizeMultiplier/t.sizeMultiplier)}i=t.style===k.DISPLAY?c.sup1:t.style.cramped?c.sup3:c.sup2;var v,b=t.sizeMultiplier,y=G(.5/c.ptPerEm/b),x=null;if(n){var w=e.base&&"op"===e.base.type&&e.base.name&&("\\oiint"===e.base.name||"\\oiiint"===e.base.name);(h instanceof J||w)&&(x=G(-h.italic))}if(a&&n){p=Math.max(p,i,a.depth+.25*c.xHeight),u=Math.max(u,c.sub2);var S=4*c.defaultRuleThickness;if(p-a.depth-(n.height-u)0&&(p+=M,u-=M)}var z=[{type:"elem",elem:n,shift:u,marginRight:y,marginLeft:x},{type:"elem",elem:a,shift:-p,marginRight:y}];v=Je.makeVList({positionType:"individualShift",children:z},t)}else if(n){u=Math.max(u,c.sub1,n.height-.8*c.xHeight);var A=[{type:"elem",elem:n,marginLeft:x,marginRight:y}];v=Je.makeVList({positionType:"shift",positionData:u,children:A},t)}else{if(!a)throw new Error("supsub must have either sup or sub.");p=Math.max(p,i,a.depth+.25*c.xHeight),v=Je.makeVList({positionType:"shift",positionData:-p,children:[{type:"elem",elem:a,marginRight:y}]},t)}var T=xt(h,"right")||"mord";return Je.makeSpan([T],[h,Je.makeSpan(["msupsub"],[v])],t)},mathmlBuilder(e,t){var r,a=!1;e.base&&"horizBrace"===e.base.type&&!!e.sup===e.base.isOver&&(a=!0,r=e.base.isOver),!e.base||"op"!==e.base.type&&"operatorname"!==e.base.type||(e.base.parentIsSupSub=!0);var n,i=[Ot(e.base,t)];if(e.sub&&i.push(Ot(e.sub,t)),e.sup&&i.push(Ot(e.sup,t)),a)n=r?"mover":"munder";else if(e.sub)if(e.sup){var o=e.base;n=o&&"op"===o.type&&o.limits&&t.style===k.DISPLAY||o&&"operatorname"===o.type&&o.alwaysHandleSupSub&&(t.style===k.DISPLAY||o.limits)?"munderover":"msubsup"}else{var s=e.base;n=s&&"op"===s.type&&s.limits&&(t.style===k.DISPLAY||s.alwaysHandleSupSub)||s&&"operatorname"===s.type&&s.alwaysHandleSupSub&&(s.limits||t.style===k.DISPLAY)?"munder":"msub"}else{var l=e.base;n=l&&"op"===l.type&&l.limits&&(t.style===k.DISPLAY||l.alwaysHandleSupSub)||l&&"operatorname"===l.type&&l.alwaysHandleSupSub&&(l.limits||t.style===k.DISPLAY)?"mover":"msup"}return new Bt.MathNode(n,i)}}),lt({type:"atom",htmlBuilder:(e,t)=>Je.mathsym(e.text,e.mode,t,["m"+e.family]),mathmlBuilder(e,t){var r=new Bt.MathNode("mo",[Ct(e.text,e.mode)]);if("bin"===e.family){var a=qt(e,t);"bold-italic"===a&&r.setAttribute("mathvariant",a)}else"punct"===e.family?r.setAttribute("separator","true"):"open"!==e.family&&"close"!==e.family||r.setAttribute("stretchy","false");return r}});var ya={mi:"italic",mn:"normal",mtext:"normal"};lt({type:"mathord",htmlBuilder:(e,t)=>Je.makeOrd(e,t,"mathord"),mathmlBuilder(e,t){var r=new Bt.MathNode("mi",[Ct(e.text,e.mode,t)]),a=qt(e,t)||"italic";return a!==ya[r.type]&&r.setAttribute("mathvariant",a),r}}),lt({type:"textord",htmlBuilder:(e,t)=>Je.makeOrd(e,t,"textord"),mathmlBuilder(e,t){var r,a=Ct(e.text,e.mode,t),n=qt(e,t)||"normal";return r="text"===e.mode?new Bt.MathNode("mtext",[a]):/[0-9]/.test(e.text)?new Bt.MathNode("mn",[a]):"\\prime"===e.text?new Bt.MathNode("mo",[a]):new Bt.MathNode("mi",[a]),n!==ya[r.type]&&r.setAttribute("mathvariant",n),r}});var xa={"\\nobreak":"nobreak","\\allowbreak":"allowbreak"},wa={" ":{},"\\ ":{},"~":{className:"nobreak"},"\\space":{},"\\nobreakspace":{className:"nobreak"}};lt({type:"spacing",htmlBuilder(e,t){if(wa.hasOwnProperty(e.text)){var r=wa[e.text].className||"";if("text"===e.mode){var a=Je.makeOrd(e,t,"textord");return a.classes.push(r),a}return Je.makeSpan(["mspace",r],[Je.mathsym(e.text,e.mode,t)],t)}if(xa.hasOwnProperty(e.text))return Je.makeSpan(["mspace",xa[e.text]],[],t);throw new i('Unknown type of space "'+e.text+'"')},mathmlBuilder(e,t){if(!wa.hasOwnProperty(e.text)){if(xa.hasOwnProperty(e.text))return new Bt.MathNode("mspace");throw new i('Unknown type of space "'+e.text+'"')}return new Bt.MathNode("mtext",[new Bt.TextNode("\xa0")])}});var ka=()=>{var e=new Bt.MathNode("mtd",[]);return e.setAttribute("width","50%"),e};lt({type:"tag",mathmlBuilder(e,t){var r=new Bt.MathNode("mtable",[new Bt.MathNode("mtr",[ka(),new Bt.MathNode("mtd",[Ht(e.body,t)]),ka(),new Bt.MathNode("mtd",[Ht(e.tag,t)])])]);return r.setAttribute("width","100%"),r}});var Sa={"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm"},Ma={"\\textbf":"textbf","\\textmd":"textmd"},za={"\\textit":"textit","\\textup":"textup"},Aa=(e,t)=>{var r=e.font;return r?Sa[r]?t.withTextFontFamily(Sa[r]):Ma[r]?t.withTextFontWeight(Ma[r]):"\\emph"===r?"textit"===t.fontShape?t.withTextFontShape("textup"):t.withTextFontShape("textit"):t.withTextFontShape(za[r]):t};st({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textmd","\\textit","\\textup","\\emph"],props:{numArgs:1,argTypes:["text"],allowedInArgument:!0,allowedInText:!0},handler(e,t){var{parser:r,funcName:a}=e,n=t[0];return{type:"text",mode:r.mode,body:mt(n),font:a}},htmlBuilder(e,t){var r=Aa(e,t),a=ft(e.body,r,!0);return Je.makeSpan(["mord","text"],a,r)},mathmlBuilder(e,t){var r=Aa(e,t);return Ht(e.body,r)}}),st({type:"underline",names:["\\underline"],props:{numArgs:1,allowedInText:!0},handler(e,t){var{parser:r}=e;return{type:"underline",mode:r.mode,body:t[0]}},htmlBuilder(e,t){var r=kt(e.body,t),a=Je.makeLineSpan("underline-line",t),n=t.fontMetrics().defaultRuleThickness,i=Je.makeVList({positionType:"top",positionData:r.height,children:[{type:"kern",size:n},{type:"elem",elem:a},{type:"kern",size:3*n},{type:"elem",elem:r}]},t);return Je.makeSpan(["mord","underline"],[i],t)},mathmlBuilder(e,t){var r=new Bt.MathNode("mo",[new Bt.TextNode("\u203e")]);r.setAttribute("stretchy","true");var a=new Bt.MathNode("munder",[Ot(e.body,t),r]);return a.setAttribute("accentunder","true"),a}}),st({type:"vcenter",names:["\\vcenter"],props:{numArgs:1,argTypes:["original"],allowedInText:!1},handler(e,t){var{parser:r}=e;return{type:"vcenter",mode:r.mode,body:t[0]}},htmlBuilder(e,t){var r=kt(e.body,t),a=t.fontMetrics().axisHeight,n=.5*(r.height-a-(r.depth+a));return Je.makeVList({positionType:"shift",positionData:n,children:[{type:"elem",elem:r}]},t)},mathmlBuilder:(e,t)=>new Bt.MathNode("mpadded",[Ot(e.body,t)],["vcenter"])}),st({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:!0},handler(e,t,r){throw new i("\\verb ended by end of line instead of matching delimiter")},htmlBuilder(e,t){for(var r=Ta(e),a=[],n=t.havingStyle(t.style.text()),i=0;ie.body.replace(/ /g,e.star?"\u2423":"\xa0"),Ba=nt,Ca="[ \r\n\t]",Na="(\\\\[a-zA-Z@]+)"+Ca+"*",qa="[\u0300-\u036f]",Ia=new RegExp(qa+"+$"),Ra="("+Ca+"+)|\\\\(\n|[ \r\t]+\n?)[ \r\t]*|([!-\\[\\]-\u2027\u202a-\ud7ff\uf900-\uffff]"+qa+"*|[\ud800-\udbff][\udc00-\udfff]"+qa+"*|\\\\verb\\*([^]).*?\\4|\\\\verb([^*a-zA-Z]).*?\\5|"+Na+"|\\\\[^\ud800-\udfff])";class Ha{constructor(e,t){this.input=void 0,this.settings=void 0,this.tokenRegex=void 0,this.catcodes=void 0,this.input=e,this.settings=t,this.tokenRegex=new RegExp(Ra,"g"),this.catcodes={"%":14,"~":13}}setCatcode(e,t){this.catcodes[e]=t}lex(){var e=this.input,t=this.tokenRegex.lastIndex;if(t===e.length)return new n("EOF",new a(this,t,t));var r=this.tokenRegex.exec(e);if(null===r||r.index!==t)throw new i("Unexpected character: '"+e[t]+"'",new n(e[t],new a(this,t,t+1)));var o=r[6]||r[3]||(r[2]?"\\ ":" ");if(14===this.catcodes[o]){var s=e.indexOf("\n",this.tokenRegex.lastIndex);return-1===s?(this.tokenRegex.lastIndex=e.length,this.settings.reportNonstrict("commentAtEnd","% comment has no terminating newline; LaTeX would fail because of commenting the end of math mode (e.g. $)")):this.tokenRegex.lastIndex=s+1,this.lex()}return new n(o,new a(this,t,this.tokenRegex.lastIndex))}}class Oa{constructor(e,t){void 0===e&&(e={}),void 0===t&&(t={}),this.current=void 0,this.builtins=void 0,this.undefStack=void 0,this.current=t,this.builtins=e,this.undefStack=[]}beginGroup(){this.undefStack.push({})}endGroup(){if(0===this.undefStack.length)throw new i("Unbalanced namespace destruction: attempt to pop global namespace; please report this as a bug");var e=this.undefStack.pop();for(var t in e)e.hasOwnProperty(t)&&(null==e[t]?delete this.current[t]:this.current[t]=e[t])}endGroups(){for(;this.undefStack.length>0;)this.endGroup()}has(e){return this.current.hasOwnProperty(e)||this.builtins.hasOwnProperty(e)}get(e){return this.current.hasOwnProperty(e)?this.current[e]:this.builtins[e]}set(e,t,r){if(void 0===r&&(r=!1),r){for(var a=0;a0&&(this.undefStack[this.undefStack.length-1][e]=t)}else{var n=this.undefStack[this.undefStack.length-1];n&&!n.hasOwnProperty(e)&&(n[e]=this.current[e])}null==t?delete this.current[e]:this.current[e]=t}}var Ea=Pr;Fr("\\noexpand",(function(e){var t=e.popToken();return e.isExpandable(t.text)&&(t.noexpand=!0,t.treatAsRelax=!0),{tokens:[t],numArgs:0}})),Fr("\\expandafter",(function(e){var t=e.popToken();return e.expandOnce(!0),{tokens:[t],numArgs:0}})),Fr("\\@firstoftwo",(function(e){return{tokens:e.consumeArgs(2)[0],numArgs:0}})),Fr("\\@secondoftwo",(function(e){return{tokens:e.consumeArgs(2)[1],numArgs:0}})),Fr("\\@ifnextchar",(function(e){var t=e.consumeArgs(3);e.consumeSpaces();var r=e.future();return 1===t[0].length&&t[0][0].text===r.text?{tokens:t[1],numArgs:0}:{tokens:t[2],numArgs:0}})),Fr("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}"),Fr("\\TextOrMath",(function(e){var t=e.consumeArgs(2);return"text"===e.mode?{tokens:t[0],numArgs:0}:{tokens:t[1],numArgs:0}}));var La={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,A:10,b:11,B:11,c:12,C:12,d:13,D:13,e:14,E:14,f:15,F:15};Fr("\\char",(function(e){var t,r=e.popToken(),a="";if("'"===r.text)t=8,r=e.popToken();else if('"'===r.text)t=16,r=e.popToken();else if("`"===r.text)if("\\"===(r=e.popToken()).text[0])a=r.text.charCodeAt(1);else{if("EOF"===r.text)throw new i("\\char` missing argument");a=r.text.charCodeAt(0)}else t=10;if(t){if(null==(a=La[r.text])||a>=t)throw new i("Invalid base-"+t+" digit "+r.text);for(var n;null!=(n=La[e.future().text])&&n{var n=e.consumeArg().tokens;if(1!==n.length)throw new i("\\newcommand's first argument must be a macro name");var o=n[0].text,s=e.isDefined(o);if(s&&!t)throw new i("\\newcommand{"+o+"} attempting to redefine "+o+"; use \\renewcommand");if(!s&&!r)throw new i("\\renewcommand{"+o+"} when command "+o+" does not yet exist; use \\newcommand");var l=0;if(1===(n=e.consumeArg().tokens).length&&"["===n[0].text){for(var h="",m=e.expandNextToken();"]"!==m.text&&"EOF"!==m.text;)h+=m.text,m=e.expandNextToken();if(!h.match(/^\s*[0-9]+\s*$/))throw new i("Invalid number of arguments: "+h);l=parseInt(h),n=e.consumeArg().tokens}return s&&a||e.macros.set(o,{tokens:n,numArgs:l}),""};Fr("\\newcommand",(e=>Da(e,!1,!0,!1))),Fr("\\renewcommand",(e=>Da(e,!0,!1,!1))),Fr("\\providecommand",(e=>Da(e,!0,!0,!0))),Fr("\\message",(e=>{var t=e.consumeArgs(1)[0];return console.log(t.reverse().map((e=>e.text)).join("")),""})),Fr("\\errmessage",(e=>{var t=e.consumeArgs(1)[0];return console.error(t.reverse().map((e=>e.text)).join("")),""})),Fr("\\show",(e=>{var t=e.popToken(),r=t.text;return console.log(t,e.macros.get(r),Ba[r],ie.math[r],ie.text[r]),""})),Fr("\\bgroup","{"),Fr("\\egroup","}"),Fr("~","\\nobreakspace"),Fr("\\lq","`"),Fr("\\rq","'"),Fr("\\aa","\\r a"),Fr("\\AA","\\r A"),Fr("\\textcopyright","\\html@mathml{\\textcircled{c}}{\\char`\xa9}"),Fr("\\copyright","\\TextOrMath{\\textcopyright}{\\text{\\textcopyright}}"),Fr("\\textregistered","\\html@mathml{\\textcircled{\\scriptsize R}}{\\char`\xae}"),Fr("\u212c","\\mathscr{B}"),Fr("\u2130","\\mathscr{E}"),Fr("\u2131","\\mathscr{F}"),Fr("\u210b","\\mathscr{H}"),Fr("\u2110","\\mathscr{I}"),Fr("\u2112","\\mathscr{L}"),Fr("\u2133","\\mathscr{M}"),Fr("\u211b","\\mathscr{R}"),Fr("\u212d","\\mathfrak{C}"),Fr("\u210c","\\mathfrak{H}"),Fr("\u2128","\\mathfrak{Z}"),Fr("\\Bbbk","\\Bbb{k}"),Fr("\xb7","\\cdotp"),Fr("\\llap","\\mathllap{\\textrm{#1}}"),Fr("\\rlap","\\mathrlap{\\textrm{#1}}"),Fr("\\clap","\\mathclap{\\textrm{#1}}"),Fr("\\mathstrut","\\vphantom{(}"),Fr("\\underbar","\\underline{\\text{#1}}"),Fr("\\not",'\\html@mathml{\\mathrel{\\mathrlap\\@not}}{\\char"338}'),Fr("\\neq","\\html@mathml{\\mathrel{\\not=}}{\\mathrel{\\char`\u2260}}"),Fr("\\ne","\\neq"),Fr("\u2260","\\neq"),Fr("\\notin","\\html@mathml{\\mathrel{{\\in}\\mathllap{/\\mskip1mu}}}{\\mathrel{\\char`\u2209}}"),Fr("\u2209","\\notin"),Fr("\u2258","\\html@mathml{\\mathrel{=\\kern{-1em}\\raisebox{0.4em}{$\\scriptsize\\frown$}}}{\\mathrel{\\char`\u2258}}"),Fr("\u2259","\\html@mathml{\\stackrel{\\tiny\\wedge}{=}}{\\mathrel{\\char`\u2258}}"),Fr("\u225a","\\html@mathml{\\stackrel{\\tiny\\vee}{=}}{\\mathrel{\\char`\u225a}}"),Fr("\u225b","\\html@mathml{\\stackrel{\\scriptsize\\star}{=}}{\\mathrel{\\char`\u225b}}"),Fr("\u225d","\\html@mathml{\\stackrel{\\tiny\\mathrm{def}}{=}}{\\mathrel{\\char`\u225d}}"),Fr("\u225e","\\html@mathml{\\stackrel{\\tiny\\mathrm{m}}{=}}{\\mathrel{\\char`\u225e}}"),Fr("\u225f","\\html@mathml{\\stackrel{\\tiny?}{=}}{\\mathrel{\\char`\u225f}}"),Fr("\u27c2","\\perp"),Fr("\u203c","\\mathclose{!\\mkern-0.8mu!}"),Fr("\u220c","\\notni"),Fr("\u231c","\\ulcorner"),Fr("\u231d","\\urcorner"),Fr("\u231e","\\llcorner"),Fr("\u231f","\\lrcorner"),Fr("\xa9","\\copyright"),Fr("\xae","\\textregistered"),Fr("\ufe0f","\\textregistered"),Fr("\\ulcorner",'\\html@mathml{\\@ulcorner}{\\mathop{\\char"231c}}'),Fr("\\urcorner",'\\html@mathml{\\@urcorner}{\\mathop{\\char"231d}}'),Fr("\\llcorner",'\\html@mathml{\\@llcorner}{\\mathop{\\char"231e}}'),Fr("\\lrcorner",'\\html@mathml{\\@lrcorner}{\\mathop{\\char"231f}}'),Fr("\\vdots","{\\varvdots\\rule{0pt}{15pt}}"),Fr("\u22ee","\\vdots"),Fr("\\varGamma","\\mathit{\\Gamma}"),Fr("\\varDelta","\\mathit{\\Delta}"),Fr("\\varTheta","\\mathit{\\Theta}"),Fr("\\varLambda","\\mathit{\\Lambda}"),Fr("\\varXi","\\mathit{\\Xi}"),Fr("\\varPi","\\mathit{\\Pi}"),Fr("\\varSigma","\\mathit{\\Sigma}"),Fr("\\varUpsilon","\\mathit{\\Upsilon}"),Fr("\\varPhi","\\mathit{\\Phi}"),Fr("\\varPsi","\\mathit{\\Psi}"),Fr("\\varOmega","\\mathit{\\Omega}"),Fr("\\substack","\\begin{subarray}{c}#1\\end{subarray}"),Fr("\\colon","\\nobreak\\mskip2mu\\mathpunct{}\\mathchoice{\\mkern-3mu}{\\mkern-3mu}{}{}{:}\\mskip6mu\\relax"),Fr("\\boxed","\\fbox{$\\displaystyle{#1}$}"),Fr("\\iff","\\DOTSB\\;\\Longleftrightarrow\\;"),Fr("\\implies","\\DOTSB\\;\\Longrightarrow\\;"),Fr("\\impliedby","\\DOTSB\\;\\Longleftarrow\\;"),Fr("\\dddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ...}}{#1}}"),Fr("\\ddddot","{\\overset{\\raisebox{-0.1ex}{\\normalsize ....}}{#1}}");var Va={",":"\\dotsc","\\not":"\\dotsb","+":"\\dotsb","=":"\\dotsb","<":"\\dotsb",">":"\\dotsb","-":"\\dotsb","*":"\\dotsb",":":"\\dotsb","\\DOTSB":"\\dotsb","\\coprod":"\\dotsb","\\bigvee":"\\dotsb","\\bigwedge":"\\dotsb","\\biguplus":"\\dotsb","\\bigcap":"\\dotsb","\\bigcup":"\\dotsb","\\prod":"\\dotsb","\\sum":"\\dotsb","\\bigotimes":"\\dotsb","\\bigoplus":"\\dotsb","\\bigodot":"\\dotsb","\\bigsqcup":"\\dotsb","\\And":"\\dotsb","\\longrightarrow":"\\dotsb","\\Longrightarrow":"\\dotsb","\\longleftarrow":"\\dotsb","\\Longleftarrow":"\\dotsb","\\longleftrightarrow":"\\dotsb","\\Longleftrightarrow":"\\dotsb","\\mapsto":"\\dotsb","\\longmapsto":"\\dotsb","\\hookrightarrow":"\\dotsb","\\doteq":"\\dotsb","\\mathbin":"\\dotsb","\\mathrel":"\\dotsb","\\relbar":"\\dotsb","\\Relbar":"\\dotsb","\\xrightarrow":"\\dotsb","\\xleftarrow":"\\dotsb","\\DOTSI":"\\dotsi","\\int":"\\dotsi","\\oint":"\\dotsi","\\iint":"\\dotsi","\\iiint":"\\dotsi","\\iiiint":"\\dotsi","\\idotsint":"\\dotsi","\\DOTSX":"\\dotsx"};Fr("\\dots",(function(e){var t="\\dotso",r=e.expandAfterFuture().text;return r in Va?t=Va[r]:("\\not"===r.slice(0,4)||r in ie.math&&["bin","rel"].includes(ie.math[r].group))&&(t="\\dotsb"),t}));var Pa={")":!0,"]":!0,"\\rbrack":!0,"\\}":!0,"\\rbrace":!0,"\\rangle":!0,"\\rceil":!0,"\\rfloor":!0,"\\rgroup":!0,"\\rmoustache":!0,"\\right":!0,"\\bigr":!0,"\\biggr":!0,"\\Bigr":!0,"\\Biggr":!0,$:!0,";":!0,".":!0,",":!0};Fr("\\dotso",(function(e){return e.future().text in Pa?"\\ldots\\,":"\\ldots"})),Fr("\\dotsc",(function(e){var t=e.future().text;return t in Pa&&","!==t?"\\ldots\\,":"\\ldots"})),Fr("\\cdots",(function(e){return e.future().text in Pa?"\\@cdots\\,":"\\@cdots"})),Fr("\\dotsb","\\cdots"),Fr("\\dotsm","\\cdots"),Fr("\\dotsi","\\!\\cdots"),Fr("\\dotsx","\\ldots\\,"),Fr("\\DOTSI","\\relax"),Fr("\\DOTSB","\\relax"),Fr("\\DOTSX","\\relax"),Fr("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax"),Fr("\\,","\\tmspace+{3mu}{.1667em}"),Fr("\\thinspace","\\,"),Fr("\\>","\\mskip{4mu}"),Fr("\\:","\\tmspace+{4mu}{.2222em}"),Fr("\\medspace","\\:"),Fr("\\;","\\tmspace+{5mu}{.2777em}"),Fr("\\thickspace","\\;"),Fr("\\!","\\tmspace-{3mu}{.1667em}"),Fr("\\negthinspace","\\!"),Fr("\\negmedspace","\\tmspace-{4mu}{.2222em}"),Fr("\\negthickspace","\\tmspace-{5mu}{.277em}"),Fr("\\enspace","\\kern.5em "),Fr("\\enskip","\\hskip.5em\\relax"),Fr("\\quad","\\hskip1em\\relax"),Fr("\\qquad","\\hskip2em\\relax"),Fr("\\tag","\\@ifstar\\tag@literal\\tag@paren"),Fr("\\tag@paren","\\tag@literal{({#1})}"),Fr("\\tag@literal",(e=>{if(e.macros.get("\\df@tag"))throw new i("Multiple \\tag");return"\\gdef\\df@tag{\\text{#1}}"})),Fr("\\bmod","\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}"),Fr("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)"),Fr("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}"),Fr("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1"),Fr("\\newline","\\\\\\relax"),Fr("\\TeX","\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}");var Fa=G(C["Main-Regular"]["T".charCodeAt(0)][1]-.7*C["Main-Regular"]["A".charCodeAt(0)][1]);Fr("\\LaTeX","\\textrm{\\html@mathml{L\\kern-.36em\\raisebox{"+Fa+"}{\\scriptstyle A}\\kern-.15em\\TeX}{LaTeX}}"),Fr("\\KaTeX","\\textrm{\\html@mathml{K\\kern-.17em\\raisebox{"+Fa+"}{\\scriptstyle A}\\kern-.15em\\TeX}{KaTeX}}"),Fr("\\hspace","\\@ifstar\\@hspacer\\@hspace"),Fr("\\@hspace","\\hskip #1\\relax"),Fr("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax"),Fr("\\ordinarycolon",":"),Fr("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}"),Fr("\\dblcolon",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}'),Fr("\\coloneqq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}'),Fr("\\Coloneqq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}'),Fr("\\coloneq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}'),Fr("\\Coloneq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}'),Fr("\\eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}'),Fr("\\Eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}'),Fr("\\eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}'),Fr("\\Eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}'),Fr("\\colonapprox",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}'),Fr("\\Colonapprox",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}'),Fr("\\colonsim",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}'),Fr("\\Colonsim",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}'),Fr("\u2237","\\dblcolon"),Fr("\u2239","\\eqcolon"),Fr("\u2254","\\coloneqq"),Fr("\u2255","\\eqqcolon"),Fr("\u2a74","\\Coloneqq"),Fr("\\ratio","\\vcentcolon"),Fr("\\coloncolon","\\dblcolon"),Fr("\\colonequals","\\coloneqq"),Fr("\\coloncolonequals","\\Coloneqq"),Fr("\\equalscolon","\\eqqcolon"),Fr("\\equalscoloncolon","\\Eqqcolon"),Fr("\\colonminus","\\coloneq"),Fr("\\coloncolonminus","\\Coloneq"),Fr("\\minuscolon","\\eqcolon"),Fr("\\minuscoloncolon","\\Eqcolon"),Fr("\\coloncolonapprox","\\Colonapprox"),Fr("\\coloncolonsim","\\Colonsim"),Fr("\\simcolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}"),Fr("\\simcoloncolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}"),Fr("\\approxcolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}"),Fr("\\approxcoloncolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}"),Fr("\\notni","\\html@mathml{\\not\\ni}{\\mathrel{\\char`\u220c}}"),Fr("\\limsup","\\DOTSB\\operatorname*{lim\\,sup}"),Fr("\\liminf","\\DOTSB\\operatorname*{lim\\,inf}"),Fr("\\injlim","\\DOTSB\\operatorname*{inj\\,lim}"),Fr("\\projlim","\\DOTSB\\operatorname*{proj\\,lim}"),Fr("\\varlimsup","\\DOTSB\\operatorname*{\\overline{lim}}"),Fr("\\varliminf","\\DOTSB\\operatorname*{\\underline{lim}}"),Fr("\\varinjlim","\\DOTSB\\operatorname*{\\underrightarrow{lim}}"),Fr("\\varprojlim","\\DOTSB\\operatorname*{\\underleftarrow{lim}}"),Fr("\\gvertneqq","\\html@mathml{\\@gvertneqq}{\u2269}"),Fr("\\lvertneqq","\\html@mathml{\\@lvertneqq}{\u2268}"),Fr("\\ngeqq","\\html@mathml{\\@ngeqq}{\u2271}"),Fr("\\ngeqslant","\\html@mathml{\\@ngeqslant}{\u2271}"),Fr("\\nleqq","\\html@mathml{\\@nleqq}{\u2270}"),Fr("\\nleqslant","\\html@mathml{\\@nleqslant}{\u2270}"),Fr("\\nshortmid","\\html@mathml{\\@nshortmid}{\u2224}"),Fr("\\nshortparallel","\\html@mathml{\\@nshortparallel}{\u2226}"),Fr("\\nsubseteqq","\\html@mathml{\\@nsubseteqq}{\u2288}"),Fr("\\nsupseteqq","\\html@mathml{\\@nsupseteqq}{\u2289}"),Fr("\\varsubsetneq","\\html@mathml{\\@varsubsetneq}{\u228a}"),Fr("\\varsubsetneqq","\\html@mathml{\\@varsubsetneqq}{\u2acb}"),Fr("\\varsupsetneq","\\html@mathml{\\@varsupsetneq}{\u228b}"),Fr("\\varsupsetneqq","\\html@mathml{\\@varsupsetneqq}{\u2acc}"),Fr("\\imath","\\html@mathml{\\@imath}{\u0131}"),Fr("\\jmath","\\html@mathml{\\@jmath}{\u0237}"),Fr("\\llbracket","\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`\u27e6}}"),Fr("\\rrbracket","\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`\u27e7}}"),Fr("\u27e6","\\llbracket"),Fr("\u27e7","\\rrbracket"),Fr("\\lBrace","\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`\u2983}}"),Fr("\\rBrace","\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`\u2984}}"),Fr("\u2983","\\lBrace"),Fr("\u2984","\\rBrace"),Fr("\\minuso","\\mathbin{\\html@mathml{{\\mathrlap{\\mathchoice{\\kern{0.145em}}{\\kern{0.145em}}{\\kern{0.1015em}}{\\kern{0.0725em}}\\circ}{-}}}{\\char`\u29b5}}"),Fr("\u29b5","\\minuso"),Fr("\\darr","\\downarrow"),Fr("\\dArr","\\Downarrow"),Fr("\\Darr","\\Downarrow"),Fr("\\lang","\\langle"),Fr("\\rang","\\rangle"),Fr("\\uarr","\\uparrow"),Fr("\\uArr","\\Uparrow"),Fr("\\Uarr","\\Uparrow"),Fr("\\N","\\mathbb{N}"),Fr("\\R","\\mathbb{R}"),Fr("\\Z","\\mathbb{Z}"),Fr("\\alef","\\aleph"),Fr("\\alefsym","\\aleph"),Fr("\\Alpha","\\mathrm{A}"),Fr("\\Beta","\\mathrm{B}"),Fr("\\bull","\\bullet"),Fr("\\Chi","\\mathrm{X}"),Fr("\\clubs","\\clubsuit"),Fr("\\cnums","\\mathbb{C}"),Fr("\\Complex","\\mathbb{C}"),Fr("\\Dagger","\\ddagger"),Fr("\\diamonds","\\diamondsuit"),Fr("\\empty","\\emptyset"),Fr("\\Epsilon","\\mathrm{E}"),Fr("\\Eta","\\mathrm{H}"),Fr("\\exist","\\exists"),Fr("\\harr","\\leftrightarrow"),Fr("\\hArr","\\Leftrightarrow"),Fr("\\Harr","\\Leftrightarrow"),Fr("\\hearts","\\heartsuit"),Fr("\\image","\\Im"),Fr("\\infin","\\infty"),Fr("\\Iota","\\mathrm{I}"),Fr("\\isin","\\in"),Fr("\\Kappa","\\mathrm{K}"),Fr("\\larr","\\leftarrow"),Fr("\\lArr","\\Leftarrow"),Fr("\\Larr","\\Leftarrow"),Fr("\\lrarr","\\leftrightarrow"),Fr("\\lrArr","\\Leftrightarrow"),Fr("\\Lrarr","\\Leftrightarrow"),Fr("\\Mu","\\mathrm{M}"),Fr("\\natnums","\\mathbb{N}"),Fr("\\Nu","\\mathrm{N}"),Fr("\\Omicron","\\mathrm{O}"),Fr("\\plusmn","\\pm"),Fr("\\rarr","\\rightarrow"),Fr("\\rArr","\\Rightarrow"),Fr("\\Rarr","\\Rightarrow"),Fr("\\real","\\Re"),Fr("\\reals","\\mathbb{R}"),Fr("\\Reals","\\mathbb{R}"),Fr("\\Rho","\\mathrm{P}"),Fr("\\sdot","\\cdot"),Fr("\\sect","\\S"),Fr("\\spades","\\spadesuit"),Fr("\\sub","\\subset"),Fr("\\sube","\\subseteq"),Fr("\\supe","\\supseteq"),Fr("\\Tau","\\mathrm{T}"),Fr("\\thetasym","\\vartheta"),Fr("\\weierp","\\wp"),Fr("\\Zeta","\\mathrm{Z}"),Fr("\\argmin","\\DOTSB\\operatorname*{arg\\,min}"),Fr("\\argmax","\\DOTSB\\operatorname*{arg\\,max}"),Fr("\\plim","\\DOTSB\\mathop{\\operatorname{plim}}\\limits"),Fr("\\bra","\\mathinner{\\langle{#1}|}"),Fr("\\ket","\\mathinner{|{#1}\\rangle}"),Fr("\\braket","\\mathinner{\\langle{#1}\\rangle}"),Fr("\\Bra","\\left\\langle#1\\right|"),Fr("\\Ket","\\left|#1\\right\\rangle");var Ga=e=>t=>{var r=t.consumeArg().tokens,a=t.consumeArg().tokens,n=t.consumeArg().tokens,i=t.consumeArg().tokens,o=t.macros.get("|"),s=t.macros.get("\\|");t.macros.beginGroup();var l=t=>r=>{e&&(r.macros.set("|",o),n.length&&r.macros.set("\\|",s));var i=t;!t&&n.length&&("|"===r.future().text&&(r.popToken(),i=!0));return{tokens:i?n:a,numArgs:0}};t.macros.set("|",l(!1)),n.length&&t.macros.set("\\|",l(!0));var h=t.consumeArg().tokens,m=t.expandTokens([...i,...h,...r]);return t.macros.endGroup(),{tokens:m.reverse(),numArgs:0}};Fr("\\bra@ket",Ga(!1)),Fr("\\bra@set",Ga(!0)),Fr("\\Braket","\\bra@ket{\\left\\langle}{\\,\\middle\\vert\\,}{\\,\\middle\\vert\\,}{\\right\\rangle}"),Fr("\\Set","\\bra@set{\\left\\{\\:}{\\;\\middle\\vert\\;}{\\;\\middle\\Vert\\;}{\\:\\right\\}}"),Fr("\\set","\\bra@set{\\{\\,}{\\mid}{}{\\,\\}}"),Fr("\\angln","{\\angl n}"),Fr("\\blue","\\textcolor{##6495ed}{#1}"),Fr("\\orange","\\textcolor{##ffa500}{#1}"),Fr("\\pink","\\textcolor{##ff00af}{#1}"),Fr("\\red","\\textcolor{##df0030}{#1}"),Fr("\\green","\\textcolor{##28ae7b}{#1}"),Fr("\\gray","\\textcolor{gray}{#1}"),Fr("\\purple","\\textcolor{##9d38bd}{#1}"),Fr("\\blueA","\\textcolor{##ccfaff}{#1}"),Fr("\\blueB","\\textcolor{##80f6ff}{#1}"),Fr("\\blueC","\\textcolor{##63d9ea}{#1}"),Fr("\\blueD","\\textcolor{##11accd}{#1}"),Fr("\\blueE","\\textcolor{##0c7f99}{#1}"),Fr("\\tealA","\\textcolor{##94fff5}{#1}"),Fr("\\tealB","\\textcolor{##26edd5}{#1}"),Fr("\\tealC","\\textcolor{##01d1c1}{#1}"),Fr("\\tealD","\\textcolor{##01a995}{#1}"),Fr("\\tealE","\\textcolor{##208170}{#1}"),Fr("\\greenA","\\textcolor{##b6ffb0}{#1}"),Fr("\\greenB","\\textcolor{##8af281}{#1}"),Fr("\\greenC","\\textcolor{##74cf70}{#1}"),Fr("\\greenD","\\textcolor{##1fab54}{#1}"),Fr("\\greenE","\\textcolor{##0d923f}{#1}"),Fr("\\goldA","\\textcolor{##ffd0a9}{#1}"),Fr("\\goldB","\\textcolor{##ffbb71}{#1}"),Fr("\\goldC","\\textcolor{##ff9c39}{#1}"),Fr("\\goldD","\\textcolor{##e07d10}{#1}"),Fr("\\goldE","\\textcolor{##a75a05}{#1}"),Fr("\\redA","\\textcolor{##fca9a9}{#1}"),Fr("\\redB","\\textcolor{##ff8482}{#1}"),Fr("\\redC","\\textcolor{##f9685d}{#1}"),Fr("\\redD","\\textcolor{##e84d39}{#1}"),Fr("\\redE","\\textcolor{##bc2612}{#1}"),Fr("\\maroonA","\\textcolor{##ffbde0}{#1}"),Fr("\\maroonB","\\textcolor{##ff92c6}{#1}"),Fr("\\maroonC","\\textcolor{##ed5fa6}{#1}"),Fr("\\maroonD","\\textcolor{##ca337c}{#1}"),Fr("\\maroonE","\\textcolor{##9e034e}{#1}"),Fr("\\purpleA","\\textcolor{##ddd7ff}{#1}"),Fr("\\purpleB","\\textcolor{##c6b9fc}{#1}"),Fr("\\purpleC","\\textcolor{##aa87ff}{#1}"),Fr("\\purpleD","\\textcolor{##7854ab}{#1}"),Fr("\\purpleE","\\textcolor{##543b78}{#1}"),Fr("\\mintA","\\textcolor{##f5f9e8}{#1}"),Fr("\\mintB","\\textcolor{##edf2df}{#1}"),Fr("\\mintC","\\textcolor{##e0e5cc}{#1}"),Fr("\\grayA","\\textcolor{##f6f7f7}{#1}"),Fr("\\grayB","\\textcolor{##f0f1f2}{#1}"),Fr("\\grayC","\\textcolor{##e3e5e6}{#1}"),Fr("\\grayD","\\textcolor{##d6d8da}{#1}"),Fr("\\grayE","\\textcolor{##babec2}{#1}"),Fr("\\grayF","\\textcolor{##888d93}{#1}"),Fr("\\grayG","\\textcolor{##626569}{#1}"),Fr("\\grayH","\\textcolor{##3b3e40}{#1}"),Fr("\\grayI","\\textcolor{##21242c}{#1}"),Fr("\\kaBlue","\\textcolor{##314453}{#1}"),Fr("\\kaGreen","\\textcolor{##71B307}{#1}");var Ua={"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0};class Ya{constructor(e,t,r){this.settings=void 0,this.expansionCount=void 0,this.lexer=void 0,this.macros=void 0,this.stack=void 0,this.mode=void 0,this.settings=t,this.expansionCount=0,this.feed(e),this.macros=new Oa(Ea,t.macros),this.mode=r,this.stack=[]}feed(e){this.lexer=new Ha(e,this.settings)}switchMode(e){this.mode=e}beginGroup(){this.macros.beginGroup()}endGroup(){this.macros.endGroup()}endGroups(){this.macros.endGroups()}future(){return 0===this.stack.length&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]}popToken(){return this.future(),this.stack.pop()}pushToken(e){this.stack.push(e)}pushTokens(e){this.stack.push(...e)}scanArgument(e){var t,r,i;if(e){if(this.consumeSpaces(),"["!==this.future().text)return null;t=this.popToken(),({tokens:i,end:r}=this.consumeArg(["]"]))}else({tokens:i,start:t,end:r}=this.consumeArg());return this.pushToken(new n("EOF",r.loc)),this.pushTokens(i),new n("",a.range(t,r))}consumeSpaces(){for(;;){if(" "!==this.future().text)break;this.stack.pop()}}consumeArg(e){var t=[],r=e&&e.length>0;r||this.consumeSpaces();var a,n=this.future(),o=0,s=0;do{if(a=this.popToken(),t.push(a),"{"===a.text)++o;else if("}"===a.text){if(-1===--o)throw new i("Extra }",a)}else if("EOF"===a.text)throw new i("Unexpected end of input in a macro argument, expected '"+(e&&r?e[s]:"}")+"'",a);if(e&&r)if((0===o||1===o&&"{"===e[s])&&a.text===e[s]){if(++s===e.length){t.splice(-s,s);break}}else s=0}while(0!==o||r);return"{"===n.text&&"}"===t[t.length-1].text&&(t.pop(),t.shift()),t.reverse(),{tokens:t,start:n,end:a}}consumeArgs(e,t){if(t){if(t.length!==e+1)throw new i("The length of delimiters doesn't match the number of args!");for(var r=t[0],a=0;athis.settings.maxExpand)throw new i("Too many expansions: infinite loop or need to increase maxExpand setting")}expandOnce(e){var t=this.popToken(),r=t.text,a=t.noexpand?null:this._getExpansion(r);if(null==a||e&&a.unexpandable){if(e&&null==a&&"\\"===r[0]&&!this.isDefined(r))throw new i("Undefined control sequence: "+r);return this.pushToken(t),!1}this.countExpansion(1);var n=a.tokens,o=this.consumeArgs(a.numArgs,a.delimiters);if(a.numArgs)for(var s=(n=n.slice()).length-1;s>=0;--s){var l=n[s];if("#"===l.text){if(0===s)throw new i("Incomplete placeholder at end of macro body",l);if("#"===(l=n[--s]).text)n.splice(s+1,1);else{if(!/^[1-9]$/.test(l.text))throw new i("Not a valid argument number",l);n.splice(s,2,...o[+l.text-1])}}}return this.pushTokens(n),n.length}expandAfterFuture(){return this.expandOnce(),this.future()}expandNextToken(){for(;;)if(!1===this.expandOnce()){var e=this.stack.pop();return e.treatAsRelax&&(e.text="\\relax"),e}throw new Error}expandMacro(e){return this.macros.has(e)?this.expandTokens([new n(e)]):void 0}expandTokens(e){var t=[],r=this.stack.length;for(this.pushTokens(e);this.stack.length>r;)if(!1===this.expandOnce(!0)){var a=this.stack.pop();a.treatAsRelax&&(a.noexpand=!1,a.treatAsRelax=!1),t.push(a)}return this.countExpansion(t.length),t}expandMacroAsText(e){var t=this.expandMacro(e);return t?t.map((e=>e.text)).join(""):t}_getExpansion(e){var t=this.macros.get(e);if(null==t)return t;if(1===e.length){var r=this.lexer.catcodes[e];if(null!=r&&13!==r)return}var a="function"==typeof t?t(this):t;if("string"==typeof a){var n=0;if(-1!==a.indexOf("#"))for(var i=a.replace(/##/g,"");-1!==i.indexOf("#"+(n+1));)++n;for(var o=new Ha(a,this.settings),s=[],l=o.lex();"EOF"!==l.text;)s.push(l),l=o.lex();return s.reverse(),{tokens:s,numArgs:n}}return a}isDefined(e){return this.macros.has(e)||Ba.hasOwnProperty(e)||ie.math.hasOwnProperty(e)||ie.text.hasOwnProperty(e)||Ua.hasOwnProperty(e)}isExpandable(e){var t=this.macros.get(e);return null!=t?"string"==typeof t||"function"==typeof t||!t.unexpandable:Ba.hasOwnProperty(e)&&!Ba[e].primitive}}var Xa=/^[\u208a\u208b\u208c\u208d\u208e\u2080\u2081\u2082\u2083\u2084\u2085\u2086\u2087\u2088\u2089\u2090\u2091\u2095\u1d62\u2c7c\u2096\u2097\u2098\u2099\u2092\u209a\u1d63\u209b\u209c\u1d64\u1d65\u2093\u1d66\u1d67\u1d68\u1d69\u1d6a]/,Wa=Object.freeze({"\u208a":"+","\u208b":"-","\u208c":"=","\u208d":"(","\u208e":")","\u2080":"0","\u2081":"1","\u2082":"2","\u2083":"3","\u2084":"4","\u2085":"5","\u2086":"6","\u2087":"7","\u2088":"8","\u2089":"9","\u2090":"a","\u2091":"e","\u2095":"h","\u1d62":"i","\u2c7c":"j","\u2096":"k","\u2097":"l","\u2098":"m","\u2099":"n","\u2092":"o","\u209a":"p","\u1d63":"r","\u209b":"s","\u209c":"t","\u1d64":"u","\u1d65":"v","\u2093":"x","\u1d66":"\u03b2","\u1d67":"\u03b3","\u1d68":"\u03c1","\u1d69":"\u03d5","\u1d6a":"\u03c7","\u207a":"+","\u207b":"-","\u207c":"=","\u207d":"(","\u207e":")","\u2070":"0","\xb9":"1","\xb2":"2","\xb3":"3","\u2074":"4","\u2075":"5","\u2076":"6","\u2077":"7","\u2078":"8","\u2079":"9","\u1d2c":"A","\u1d2e":"B","\u1d30":"D","\u1d31":"E","\u1d33":"G","\u1d34":"H","\u1d35":"I","\u1d36":"J","\u1d37":"K","\u1d38":"L","\u1d39":"M","\u1d3a":"N","\u1d3c":"O","\u1d3e":"P","\u1d3f":"R","\u1d40":"T","\u1d41":"U","\u2c7d":"V","\u1d42":"W","\u1d43":"a","\u1d47":"b","\u1d9c":"c","\u1d48":"d","\u1d49":"e","\u1da0":"f","\u1d4d":"g","\u02b0":"h","\u2071":"i","\u02b2":"j","\u1d4f":"k","\u02e1":"l","\u1d50":"m","\u207f":"n","\u1d52":"o","\u1d56":"p","\u02b3":"r","\u02e2":"s","\u1d57":"t","\u1d58":"u","\u1d5b":"v","\u02b7":"w","\u02e3":"x","\u02b8":"y","\u1dbb":"z","\u1d5d":"\u03b2","\u1d5e":"\u03b3","\u1d5f":"\u03b4","\u1d60":"\u03d5","\u1d61":"\u03c7","\u1dbf":"\u03b8"}),_a={"\u0301":{text:"\\'",math:"\\acute"},"\u0300":{text:"\\`",math:"\\grave"},"\u0308":{text:'\\"',math:"\\ddot"},"\u0303":{text:"\\~",math:"\\tilde"},"\u0304":{text:"\\=",math:"\\bar"},"\u0306":{text:"\\u",math:"\\breve"},"\u030c":{text:"\\v",math:"\\check"},"\u0302":{text:"\\^",math:"\\hat"},"\u0307":{text:"\\.",math:"\\dot"},"\u030a":{text:"\\r",math:"\\mathring"},"\u030b":{text:"\\H"},"\u0327":{text:"\\c"}},ja={"\xe1":"a\u0301","\xe0":"a\u0300","\xe4":"a\u0308","\u01df":"a\u0308\u0304","\xe3":"a\u0303","\u0101":"a\u0304","\u0103":"a\u0306","\u1eaf":"a\u0306\u0301","\u1eb1":"a\u0306\u0300","\u1eb5":"a\u0306\u0303","\u01ce":"a\u030c","\xe2":"a\u0302","\u1ea5":"a\u0302\u0301","\u1ea7":"a\u0302\u0300","\u1eab":"a\u0302\u0303","\u0227":"a\u0307","\u01e1":"a\u0307\u0304","\xe5":"a\u030a","\u01fb":"a\u030a\u0301","\u1e03":"b\u0307","\u0107":"c\u0301","\u1e09":"c\u0327\u0301","\u010d":"c\u030c","\u0109":"c\u0302","\u010b":"c\u0307","\xe7":"c\u0327","\u010f":"d\u030c","\u1e0b":"d\u0307","\u1e11":"d\u0327","\xe9":"e\u0301","\xe8":"e\u0300","\xeb":"e\u0308","\u1ebd":"e\u0303","\u0113":"e\u0304","\u1e17":"e\u0304\u0301","\u1e15":"e\u0304\u0300","\u0115":"e\u0306","\u1e1d":"e\u0327\u0306","\u011b":"e\u030c","\xea":"e\u0302","\u1ebf":"e\u0302\u0301","\u1ec1":"e\u0302\u0300","\u1ec5":"e\u0302\u0303","\u0117":"e\u0307","\u0229":"e\u0327","\u1e1f":"f\u0307","\u01f5":"g\u0301","\u1e21":"g\u0304","\u011f":"g\u0306","\u01e7":"g\u030c","\u011d":"g\u0302","\u0121":"g\u0307","\u0123":"g\u0327","\u1e27":"h\u0308","\u021f":"h\u030c","\u0125":"h\u0302","\u1e23":"h\u0307","\u1e29":"h\u0327","\xed":"i\u0301","\xec":"i\u0300","\xef":"i\u0308","\u1e2f":"i\u0308\u0301","\u0129":"i\u0303","\u012b":"i\u0304","\u012d":"i\u0306","\u01d0":"i\u030c","\xee":"i\u0302","\u01f0":"j\u030c","\u0135":"j\u0302","\u1e31":"k\u0301","\u01e9":"k\u030c","\u0137":"k\u0327","\u013a":"l\u0301","\u013e":"l\u030c","\u013c":"l\u0327","\u1e3f":"m\u0301","\u1e41":"m\u0307","\u0144":"n\u0301","\u01f9":"n\u0300","\xf1":"n\u0303","\u0148":"n\u030c","\u1e45":"n\u0307","\u0146":"n\u0327","\xf3":"o\u0301","\xf2":"o\u0300","\xf6":"o\u0308","\u022b":"o\u0308\u0304","\xf5":"o\u0303","\u1e4d":"o\u0303\u0301","\u1e4f":"o\u0303\u0308","\u022d":"o\u0303\u0304","\u014d":"o\u0304","\u1e53":"o\u0304\u0301","\u1e51":"o\u0304\u0300","\u014f":"o\u0306","\u01d2":"o\u030c","\xf4":"o\u0302","\u1ed1":"o\u0302\u0301","\u1ed3":"o\u0302\u0300","\u1ed7":"o\u0302\u0303","\u022f":"o\u0307","\u0231":"o\u0307\u0304","\u0151":"o\u030b","\u1e55":"p\u0301","\u1e57":"p\u0307","\u0155":"r\u0301","\u0159":"r\u030c","\u1e59":"r\u0307","\u0157":"r\u0327","\u015b":"s\u0301","\u1e65":"s\u0301\u0307","\u0161":"s\u030c","\u1e67":"s\u030c\u0307","\u015d":"s\u0302","\u1e61":"s\u0307","\u015f":"s\u0327","\u1e97":"t\u0308","\u0165":"t\u030c","\u1e6b":"t\u0307","\u0163":"t\u0327","\xfa":"u\u0301","\xf9":"u\u0300","\xfc":"u\u0308","\u01d8":"u\u0308\u0301","\u01dc":"u\u0308\u0300","\u01d6":"u\u0308\u0304","\u01da":"u\u0308\u030c","\u0169":"u\u0303","\u1e79":"u\u0303\u0301","\u016b":"u\u0304","\u1e7b":"u\u0304\u0308","\u016d":"u\u0306","\u01d4":"u\u030c","\xfb":"u\u0302","\u016f":"u\u030a","\u0171":"u\u030b","\u1e7d":"v\u0303","\u1e83":"w\u0301","\u1e81":"w\u0300","\u1e85":"w\u0308","\u0175":"w\u0302","\u1e87":"w\u0307","\u1e98":"w\u030a","\u1e8d":"x\u0308","\u1e8b":"x\u0307","\xfd":"y\u0301","\u1ef3":"y\u0300","\xff":"y\u0308","\u1ef9":"y\u0303","\u0233":"y\u0304","\u0177":"y\u0302","\u1e8f":"y\u0307","\u1e99":"y\u030a","\u017a":"z\u0301","\u017e":"z\u030c","\u1e91":"z\u0302","\u017c":"z\u0307","\xc1":"A\u0301","\xc0":"A\u0300","\xc4":"A\u0308","\u01de":"A\u0308\u0304","\xc3":"A\u0303","\u0100":"A\u0304","\u0102":"A\u0306","\u1eae":"A\u0306\u0301","\u1eb0":"A\u0306\u0300","\u1eb4":"A\u0306\u0303","\u01cd":"A\u030c","\xc2":"A\u0302","\u1ea4":"A\u0302\u0301","\u1ea6":"A\u0302\u0300","\u1eaa":"A\u0302\u0303","\u0226":"A\u0307","\u01e0":"A\u0307\u0304","\xc5":"A\u030a","\u01fa":"A\u030a\u0301","\u1e02":"B\u0307","\u0106":"C\u0301","\u1e08":"C\u0327\u0301","\u010c":"C\u030c","\u0108":"C\u0302","\u010a":"C\u0307","\xc7":"C\u0327","\u010e":"D\u030c","\u1e0a":"D\u0307","\u1e10":"D\u0327","\xc9":"E\u0301","\xc8":"E\u0300","\xcb":"E\u0308","\u1ebc":"E\u0303","\u0112":"E\u0304","\u1e16":"E\u0304\u0301","\u1e14":"E\u0304\u0300","\u0114":"E\u0306","\u1e1c":"E\u0327\u0306","\u011a":"E\u030c","\xca":"E\u0302","\u1ebe":"E\u0302\u0301","\u1ec0":"E\u0302\u0300","\u1ec4":"E\u0302\u0303","\u0116":"E\u0307","\u0228":"E\u0327","\u1e1e":"F\u0307","\u01f4":"G\u0301","\u1e20":"G\u0304","\u011e":"G\u0306","\u01e6":"G\u030c","\u011c":"G\u0302","\u0120":"G\u0307","\u0122":"G\u0327","\u1e26":"H\u0308","\u021e":"H\u030c","\u0124":"H\u0302","\u1e22":"H\u0307","\u1e28":"H\u0327","\xcd":"I\u0301","\xcc":"I\u0300","\xcf":"I\u0308","\u1e2e":"I\u0308\u0301","\u0128":"I\u0303","\u012a":"I\u0304","\u012c":"I\u0306","\u01cf":"I\u030c","\xce":"I\u0302","\u0130":"I\u0307","\u0134":"J\u0302","\u1e30":"K\u0301","\u01e8":"K\u030c","\u0136":"K\u0327","\u0139":"L\u0301","\u013d":"L\u030c","\u013b":"L\u0327","\u1e3e":"M\u0301","\u1e40":"M\u0307","\u0143":"N\u0301","\u01f8":"N\u0300","\xd1":"N\u0303","\u0147":"N\u030c","\u1e44":"N\u0307","\u0145":"N\u0327","\xd3":"O\u0301","\xd2":"O\u0300","\xd6":"O\u0308","\u022a":"O\u0308\u0304","\xd5":"O\u0303","\u1e4c":"O\u0303\u0301","\u1e4e":"O\u0303\u0308","\u022c":"O\u0303\u0304","\u014c":"O\u0304","\u1e52":"O\u0304\u0301","\u1e50":"O\u0304\u0300","\u014e":"O\u0306","\u01d1":"O\u030c","\xd4":"O\u0302","\u1ed0":"O\u0302\u0301","\u1ed2":"O\u0302\u0300","\u1ed6":"O\u0302\u0303","\u022e":"O\u0307","\u0230":"O\u0307\u0304","\u0150":"O\u030b","\u1e54":"P\u0301","\u1e56":"P\u0307","\u0154":"R\u0301","\u0158":"R\u030c","\u1e58":"R\u0307","\u0156":"R\u0327","\u015a":"S\u0301","\u1e64":"S\u0301\u0307","\u0160":"S\u030c","\u1e66":"S\u030c\u0307","\u015c":"S\u0302","\u1e60":"S\u0307","\u015e":"S\u0327","\u0164":"T\u030c","\u1e6a":"T\u0307","\u0162":"T\u0327","\xda":"U\u0301","\xd9":"U\u0300","\xdc":"U\u0308","\u01d7":"U\u0308\u0301","\u01db":"U\u0308\u0300","\u01d5":"U\u0308\u0304","\u01d9":"U\u0308\u030c","\u0168":"U\u0303","\u1e78":"U\u0303\u0301","\u016a":"U\u0304","\u1e7a":"U\u0304\u0308","\u016c":"U\u0306","\u01d3":"U\u030c","\xdb":"U\u0302","\u016e":"U\u030a","\u0170":"U\u030b","\u1e7c":"V\u0303","\u1e82":"W\u0301","\u1e80":"W\u0300","\u1e84":"W\u0308","\u0174":"W\u0302","\u1e86":"W\u0307","\u1e8c":"X\u0308","\u1e8a":"X\u0307","\xdd":"Y\u0301","\u1ef2":"Y\u0300","\u0178":"Y\u0308","\u1ef8":"Y\u0303","\u0232":"Y\u0304","\u0176":"Y\u0302","\u1e8e":"Y\u0307","\u0179":"Z\u0301","\u017d":"Z\u030c","\u1e90":"Z\u0302","\u017b":"Z\u0307","\u03ac":"\u03b1\u0301","\u1f70":"\u03b1\u0300","\u1fb1":"\u03b1\u0304","\u1fb0":"\u03b1\u0306","\u03ad":"\u03b5\u0301","\u1f72":"\u03b5\u0300","\u03ae":"\u03b7\u0301","\u1f74":"\u03b7\u0300","\u03af":"\u03b9\u0301","\u1f76":"\u03b9\u0300","\u03ca":"\u03b9\u0308","\u0390":"\u03b9\u0308\u0301","\u1fd2":"\u03b9\u0308\u0300","\u1fd1":"\u03b9\u0304","\u1fd0":"\u03b9\u0306","\u03cc":"\u03bf\u0301","\u1f78":"\u03bf\u0300","\u03cd":"\u03c5\u0301","\u1f7a":"\u03c5\u0300","\u03cb":"\u03c5\u0308","\u03b0":"\u03c5\u0308\u0301","\u1fe2":"\u03c5\u0308\u0300","\u1fe1":"\u03c5\u0304","\u1fe0":"\u03c5\u0306","\u03ce":"\u03c9\u0301","\u1f7c":"\u03c9\u0300","\u038e":"\u03a5\u0301","\u1fea":"\u03a5\u0300","\u03ab":"\u03a5\u0308","\u1fe9":"\u03a5\u0304","\u1fe8":"\u03a5\u0306","\u038f":"\u03a9\u0301","\u1ffa":"\u03a9\u0300"};class $a{constructor(e,t){this.mode=void 0,this.gullet=void 0,this.settings=void 0,this.leftrightDepth=void 0,this.nextToken=void 0,this.mode="math",this.gullet=new Ya(e,t,this.mode),this.settings=t,this.leftrightDepth=0}expect(e,t){if(void 0===t&&(t=!0),this.fetch().text!==e)throw new i("Expected '"+e+"', got '"+this.fetch().text+"'",this.fetch());t&&this.consume()}consume(){this.nextToken=null}fetch(){return null==this.nextToken&&(this.nextToken=this.gullet.expandNextToken()),this.nextToken}switchMode(e){this.mode=e,this.gullet.switchMode(e)}parse(){this.settings.globalGroup||this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set("\\color","\\textcolor");try{var e=this.parseExpression(!1);return this.expect("EOF"),this.settings.globalGroup||this.gullet.endGroup(),e}finally{this.gullet.endGroups()}}subparse(e){var t=this.nextToken;this.consume(),this.gullet.pushToken(new n("}")),this.gullet.pushTokens(e);var r=this.parseExpression(!1);return this.expect("}"),this.nextToken=t,r}parseExpression(e,t){for(var r=[];;){"math"===this.mode&&this.consumeSpaces();var a=this.fetch();if(-1!==$a.endOfExpression.indexOf(a.text))break;if(t&&a.text===t)break;if(e&&Ba[a.text]&&Ba[a.text].infix)break;var n=this.parseAtom(t);if(!n)break;"internal"!==n.type&&r.push(n)}return"text"===this.mode&&this.formLigatures(r),this.handleInfixNodes(r)}handleInfixNodes(e){for(var t,r=-1,a=0;a=0&&this.settings.reportNonstrict("unicodeTextInMathMode",'Latin-1/Unicode text character "'+t[0]+'" used in math mode',e);var l,h=ie[this.mode][t].group,m=a.range(e);if(ae.hasOwnProperty(h)){var c=h;l={type:"atom",mode:this.mode,family:c,loc:m,text:t}}else l={type:h,mode:this.mode,loc:m,text:t};o=l}else{if(!(t.charCodeAt(0)>=128))return null;this.settings.strict&&(z(t.charCodeAt(0))?"math"===this.mode&&this.settings.reportNonstrict("unicodeTextInMathMode",'Unicode text character "'+t[0]+'" used in math mode',e):this.settings.reportNonstrict("unknownSymbol",'Unrecognized Unicode character "'+t[0]+'" ('+t.charCodeAt(0)+")",e)),o={type:"textord",mode:"text",loc:a.range(e),text:t}}if(this.consume(),s)for(var p=0;p{n.d(t,{A:()=>a});n(96540);var i=n(34164),o=n(21312),s=n(51107),r=n(74848);function a({className:e}){return(0,r.jsx)("main",{className:(0,i.A)("container margin-vert--xl",e),children:(0,r.jsx)("div",{className:"row",children:(0,r.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,r.jsx)(s.A,{as:"h1",className:"hero__title",children:(0,r.jsx)(o.A,{id:"theme.NotFound.title",description:"The title of the 404 page",children:"Page Not Found"})}),(0,r.jsx)("p",{children:(0,r.jsx)(o.A,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page",children:"We could not find what you were looking for."})}),(0,r.jsx)("p",{children:(0,r.jsx)(o.A,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page",children:"Please contact the owner of the site that linked you to the original URL and let them know their link is broken."})})]})})})}},82237:(e,t,n)=>{n.r(t),n.d(t,{default:()=>d});n(96540);var i=n(21312),o=n(45500),s=n(36882),r=n(23363),a=n(74848);function d(){const e=(0,i.T)({id:"theme.NotFound.title",message:"Page Not Found"});return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(o.be,{title:e}),(0,a.jsx)(s.A,{children:(0,a.jsx)(r.A,{})})]})}}}]); \ No newline at end of file diff --git a/assets/js/2279.aa0491db.js b/assets/js/2279.aa0491db.js new file mode 100644 index 00000000..84038301 --- /dev/null +++ b/assets/js/2279.aa0491db.js @@ -0,0 +1,2 @@ +/*! For license information please see 2279.aa0491db.js.LICENSE.txt */ +(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2279],{69119:(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.BLANK_URL=e.relativeFirstCharacters=e.whitespaceEscapeCharsRegex=e.urlSchemeRegex=e.ctrlCharactersRegex=e.htmlCtrlEntityRegex=e.htmlEntitiesRegex=e.invalidProtocolRegex=void 0,e.invalidProtocolRegex=/^([^\w]*)(javascript|data|vbscript)/im,e.htmlEntitiesRegex=/&#(\w+)(^\w|;)?/g,e.htmlCtrlEntityRegex=/&(newline|tab);/gi,e.ctrlCharactersRegex=/[\u0000-\u001F\u007F-\u009F\u2000-\u200D\uFEFF]/gim,e.urlSchemeRegex=/^.+(:|:)/gim,e.whitespaceEscapeCharsRegex=/(\\|%5[cC])((%(6[eE]|72|74))|[nrt])/g,e.relativeFirstCharacters=[".","/"],e.BLANK_URL="about:blank"},16750:(t,e,r)=>{"use strict";e.J=void 0;var i=r(69119);function n(t){try{return decodeURIComponent(t)}catch(e){return t}}e.J=function(t){if(!t)return i.BLANK_URL;var e,r,a=n(t.trim());do{e=(a=n(a=(r=a,r.replace(i.ctrlCharactersRegex,"").replace(i.htmlEntitiesRegex,(function(t,e){return String.fromCharCode(e)}))).replace(i.htmlCtrlEntityRegex,"").replace(i.ctrlCharactersRegex,"").replace(i.whitespaceEscapeCharsRegex,"").trim())).match(i.ctrlCharactersRegex)||a.match(i.htmlEntitiesRegex)||a.match(i.htmlCtrlEntityRegex)||a.match(i.whitespaceEscapeCharsRegex)}while(e&&e.length>0);var o=a;if(!o)return i.BLANK_URL;if(function(t){return i.relativeFirstCharacters.indexOf(t[0])>-1}(o))return o;var s=o.trimStart(),l=s.match(i.urlSchemeRegex);if(!l)return o;var c=l[0].toLowerCase().trim();if(i.invalidProtocolRegex.test(c))return i.BLANK_URL;var h=s.replace(/\\/g,"/");if("mailto:"===c||c.includes("://"))return h;if("http:"===c||"https:"===c){if(!function(t){return URL.canParse(t)}(h))return i.BLANK_URL;var u=new URL(h);return u.protocol=u.protocol.toLowerCase(),u.hostname=u.hostname.toLowerCase(),u.toString()}return h}},74353:function(t){t.exports=function(){"use strict";var t=1e3,e=6e4,r=36e5,i="millisecond",n="second",a="minute",o="hour",s="day",l="week",c="month",h="quarter",u="year",d="date",p="Invalid Date",f=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,g=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,y={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(t){var e=["th","st","nd","rd"],r=t%100;return"["+t+(e[(r-20)%10]||e[r]||e[0])+"]"}},m=function(t,e,r){var i=String(t);return!i||i.length>=e?t:""+Array(e+1-i.length).join(r)+t},x={s:m,z:function(t){var e=-t.utcOffset(),r=Math.abs(e),i=Math.floor(r/60),n=r%60;return(e<=0?"+":"-")+m(i,2,"0")+":"+m(n,2,"0")},m:function t(e,r){if(e.date()1)return t(o[0])}else{var s=e.name;k[s]=e,n=s}return!i&&n&&(b=n),n||!i&&b},v=function(t,e){if(C(t))return t.clone();var r="object"==typeof e?e:{};return r.date=t,r.args=arguments,new T(r)},S=x;S.l=_,S.i=C,S.w=function(t,e){return v(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var T=function(){function y(t){this.$L=_(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[w]=!0}var m=y.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,r=t.utc;if(null===e)return new Date(NaN);if(S.u(e))return new Date;if(e instanceof Date)return new Date(e);if("string"==typeof e&&!/Z$/i.test(e)){var i=e.match(f);if(i){var n=i[2]-1||0,a=(i[7]||"0").substring(0,3);return r?new Date(Date.UTC(i[1],n,i[3]||1,i[4]||0,i[5]||0,i[6]||0,a)):new Date(i[1],n,i[3]||1,i[4]||0,i[5]||0,i[6]||0,a)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return S},m.isValid=function(){return!(this.$d.toString()===p)},m.isSame=function(t,e){var r=v(t);return this.startOf(e)<=r&&r<=this.endOf(e)},m.isAfter=function(t,e){return v(t){"use strict";function i(t,e,r){if(t&&t.length){const[i,n]=e,a=Math.PI/180*r,o=Math.cos(a),s=Math.sin(a);for(const e of t){const[t,r]=e;e[0]=(t-i)*o-(r-n)*s+i,e[1]=(t-i)*s+(r-n)*o+n}}}function n(t,e){return t[0]===e[0]&&t[1]===e[1]}function a(t,e,r,a=1){const o=r,s=Math.max(e,.1),l=t[0]&&t[0][0]&&"number"==typeof t[0][0]?[t]:t,c=[0,0];if(o)for(const n of l)i(n,c,o);const h=function(t,e,r){const i=[];for(const h of t){const t=[...h];n(t[0],t[t.length-1])||t.push([t[0][0],t[0][1]]),t.length>2&&i.push(t)}const a=[];e=Math.max(e,.1);const o=[];for(const n of i)for(let t=0;tt.ymine.ymin?1:t.xe.x?1:t.ymax===e.ymax?0:(t.ymax-e.ymax)/Math.abs(t.ymax-e.ymax))),!o.length)return a;let s=[],l=o[0].ymin,c=0;for(;s.length||o.length;){if(o.length){let t=-1;for(let e=0;el);e++)t=e;o.splice(0,t+1).forEach((t=>{s.push({s:l,edge:t})}))}if(s=s.filter((t=>!(t.edge.ymax<=l))),s.sort(((t,e)=>t.edge.x===e.edge.x?0:(t.edge.x-e.edge.x)/Math.abs(t.edge.x-e.edge.x))),(1!==r||c%e==0)&&s.length>1)for(let t=0;t=s.length)break;const r=s[t].edge,i=s[e].edge;a.push([[Math.round(r.x),l],[Math.round(i.x),l]])}l+=r,s.forEach((t=>{t.edge.x=t.edge.x+r*t.edge.islope})),c++}return a}(l,s,a);if(o){for(const t of l)i(t,c,-o);!function(t,e,r){const n=[];t.forEach((t=>n.push(...t))),i(n,e,r)}(h,c,-o)}return h}function o(t,e){var r;const i=e.hachureAngle+90;let n=e.hachureGap;n<0&&(n=4*e.strokeWidth),n=Math.round(Math.max(n,.1));let o=1;return e.roughness>=1&&((null===(r=e.randomizer)||void 0===r?void 0:r.next())||Math.random())>.7&&(o=n),a(t,n,i,o||1)}r.d(e,{A:()=>st});class s{constructor(t){this.helper=t}fillPolygons(t,e){return this._fillPolygons(t,e)}_fillPolygons(t,e){const r=o(t,e);return{type:"fillSketch",ops:this.renderLines(r,e)}}renderLines(t,e){const r=[];for(const i of t)r.push(...this.helper.doubleLineOps(i[0][0],i[0][1],i[1][0],i[1][1],e));return r}}function l(t){const e=t[0],r=t[1];return Math.sqrt(Math.pow(e[0]-r[0],2)+Math.pow(e[1]-r[1],2))}class c extends s{fillPolygons(t,e){let r=e.hachureGap;r<0&&(r=4*e.strokeWidth),r=Math.max(r,.1);const i=o(t,Object.assign({},e,{hachureGap:r})),n=Math.PI/180*e.hachureAngle,a=[],s=.5*r*Math.cos(n),c=.5*r*Math.sin(n);for(const[o,h]of i)l([o,h])&&a.push([[o[0]-s,o[1]+c],[...h]],[[o[0]+s,o[1]-c],[...h]]);return{type:"fillSketch",ops:this.renderLines(a,e)}}}class h extends s{fillPolygons(t,e){const r=this._fillPolygons(t,e),i=Object.assign({},e,{hachureAngle:e.hachureAngle+90}),n=this._fillPolygons(t,i);return r.ops=r.ops.concat(n.ops),r}}class u{constructor(t){this.helper=t}fillPolygons(t,e){const r=o(t,e=Object.assign({},e,{hachureAngle:0}));return this.dotsOnLines(r,e)}dotsOnLines(t,e){const r=[];let i=e.hachureGap;i<0&&(i=4*e.strokeWidth),i=Math.max(i,.1);let n=e.fillWeight;n<0&&(n=e.strokeWidth/2);const a=i/4;for(const o of t){const t=l(o),s=t/i,c=Math.ceil(s)-1,h=t-c*i,u=(o[0][0]+o[1][0])/2-i/4,d=Math.min(o[0][1],o[1][1]);for(let o=0;o{const a=l(t),o=Math.floor(a/(r+i)),s=(a+i-o*(r+i))/2;let c=t[0],h=t[1];c[0]>h[0]&&(c=t[1],h=t[0]);const u=Math.atan((h[1]-c[1])/(h[0]-c[0]));for(let l=0;l{const n=l(t),a=Math.round(n/(2*e));let o=t[0],s=t[1];o[0]>s[0]&&(o=t[1],s=t[0]);const c=Math.atan((s[1]-o[1])/(s[0]-o[0]));for(let l=0;li%2?t+r:t+e));a.push({key:"C",data:t}),e=t[4],r=t[5];break}case"Q":a.push({key:"Q",data:[...s]}),e=s[2],r=s[3];break;case"q":{const t=s.map(((t,i)=>i%2?t+r:t+e));a.push({key:"Q",data:t}),e=t[2],r=t[3];break}case"A":a.push({key:"A",data:[...s]}),e=s[5],r=s[6];break;case"a":e+=s[5],r+=s[6],a.push({key:"A",data:[s[0],s[1],s[2],s[3],s[4],e,r]});break;case"H":a.push({key:"H",data:[...s]}),e=s[0];break;case"h":e+=s[0],a.push({key:"H",data:[e]});break;case"V":a.push({key:"V",data:[...s]}),r=s[0];break;case"v":r+=s[0],a.push({key:"V",data:[r]});break;case"S":a.push({key:"S",data:[...s]}),e=s[2],r=s[3];break;case"s":{const t=s.map(((t,i)=>i%2?t+r:t+e));a.push({key:"S",data:t}),e=t[2],r=t[3];break}case"T":a.push({key:"T",data:[...s]}),e=s[0],r=s[1];break;case"t":e+=s[0],r+=s[1],a.push({key:"T",data:[e,r]});break;case"Z":case"z":a.push({key:"Z",data:[]}),e=i,r=n}return a}function _(t){const e=[];let r="",i=0,n=0,a=0,o=0,s=0,l=0;for(const{key:c,data:h}of t){switch(c){case"M":e.push({key:"M",data:[...h]}),[i,n]=h,[a,o]=h;break;case"C":e.push({key:"C",data:[...h]}),i=h[4],n=h[5],s=h[2],l=h[3];break;case"L":e.push({key:"L",data:[...h]}),[i,n]=h;break;case"H":i=h[0],e.push({key:"L",data:[i,n]});break;case"V":n=h[0],e.push({key:"L",data:[i,n]});break;case"S":{let t=0,a=0;"C"===r||"S"===r?(t=i+(i-s),a=n+(n-l)):(t=i,a=n),e.push({key:"C",data:[t,a,...h]}),s=h[0],l=h[1],i=h[2],n=h[3];break}case"T":{const[t,a]=h;let o=0,c=0;"Q"===r||"T"===r?(o=i+(i-s),c=n+(n-l)):(o=i,c=n);const u=i+2*(o-i)/3,d=n+2*(c-n)/3,p=t+2*(o-t)/3,f=a+2*(c-a)/3;e.push({key:"C",data:[u,d,p,f,t,a]}),s=o,l=c,i=t,n=a;break}case"Q":{const[t,r,a,o]=h,c=i+2*(t-i)/3,u=n+2*(r-n)/3,d=a+2*(t-a)/3,p=o+2*(r-o)/3;e.push({key:"C",data:[c,u,d,p,a,o]}),s=t,l=r,i=a,n=o;break}case"A":{const t=Math.abs(h[0]),r=Math.abs(h[1]),a=h[2],o=h[3],s=h[4],l=h[5],c=h[6];0===t||0===r?(e.push({key:"C",data:[i,n,l,c,l,c]}),i=l,n=c):i===l&&n===c||(S(i,n,l,c,t,r,a,o,s).forEach((function(t){e.push({key:"C",data:t})})),i=l,n=c);break}case"Z":e.push({key:"Z",data:[]}),i=a,n=o}r=c}return e}function v(t,e,r){return[t*Math.cos(r)-e*Math.sin(r),t*Math.sin(r)+e*Math.cos(r)]}function S(t,e,r,i,n,a,o,s,l,c){const h=(u=o,Math.PI*u/180);var u;let d=[],p=0,f=0,g=0,y=0;if(c)[p,f,g,y]=c;else{[t,e]=v(t,e,-h),[r,i]=v(r,i,-h);const o=(t-r)/2,c=(e-i)/2;let u=o*o/(n*n)+c*c/(a*a);u>1&&(u=Math.sqrt(u),n*=u,a*=u);const d=n*n,m=a*a,x=d*m-d*c*c-m*o*o,b=d*c*c+m*o*o,k=(s===l?-1:1)*Math.sqrt(Math.abs(x/b));g=k*n*c/a+(t+r)/2,y=k*-a*o/n+(e+i)/2,p=Math.asin(parseFloat(((e-y)/a).toFixed(9))),f=Math.asin(parseFloat(((i-y)/a).toFixed(9))),tf&&(p-=2*Math.PI),!l&&f>p&&(f-=2*Math.PI)}let m=f-p;if(Math.abs(m)>120*Math.PI/180){const t=f,e=r,s=i;f=l&&f>p?p+120*Math.PI/180*1:p+120*Math.PI/180*-1,d=S(r=g+n*Math.cos(f),i=y+a*Math.sin(f),e,s,n,a,o,0,l,[f,t,g,y])}m=f-p;const x=Math.cos(p),b=Math.sin(p),k=Math.cos(f),w=Math.sin(f),C=Math.tan(m/4),_=4/3*n*C,T=4/3*a*C,A=[t,e],M=[t+_*b,e-T*x],B=[r+_*w,i-T*k],L=[r,i];if(M[0]=2*A[0]-M[0],M[1]=2*A[1]-M[1],c)return[M,B,L].concat(d);{d=[M,B,L].concat(d);const t=[];for(let e=0;e2){const n=[];for(let e=0;e2*Math.PI&&(p=0,f=2*Math.PI);const g=2*Math.PI/l.curveStepCount,y=Math.min(g/2,(f-p)/2),m=H(y,c,h,u,d,p,f,1,l);if(!l.disableMultiStroke){const t=H(y,c,h,u,d,p,f,1.5,l);m.push(...t)}return o&&(s?m.push(...z(c,h,c+u*Math.cos(p),h+d*Math.sin(p),l),...z(c,h,c+u*Math.cos(f),h+d*Math.sin(f),l)):m.push({op:"lineTo",data:[c,h]},{op:"lineTo",data:[c+u*Math.cos(p),h+d*Math.sin(p)]})),{type:"path",ops:m}}function E(t,e){const r=_(C(w(t))),i=[];let n=[0,0],a=[0,0];for(const{key:o,data:s}of r)switch(o){case"M":a=[s[0],s[1]],n=[s[0],s[1]];break;case"L":i.push(...z(a[0],a[1],s[0],s[1],e)),a=[s[0],s[1]];break;case"C":{const[t,r,n,o,l,c]=s;i.push(...U(t,r,n,o,l,c,a,e)),a=[l,c];break}case"Z":i.push(...z(a[0],a[1],n[0],n[1],e)),a=[n[0],n[1]]}return{type:"path",ops:i}}function D(t,e){const r=[];for(const i of t)if(i.length){const t=e.maxRandomnessOffset||0,n=i.length;if(n>2){r.push({op:"move",data:[i[0][0]+N(t,e),i[0][1]+N(t,e)]});for(let a=1;a500?.4:-.0016668*l+1.233334;let h=n.maxRandomnessOffset||0;h*h*100>s&&(h=l/10);const u=h/2,d=.2+.2*K(n);let p=n.bowing*n.maxRandomnessOffset*(i-e)/200,f=n.bowing*n.maxRandomnessOffset*(t-r)/200;p=N(p,n,c),f=N(f,n,c);const g=[],y=()=>N(u,n,c),m=()=>N(h,n,c),x=n.preserveVertices;return a&&(o?g.push({op:"move",data:[t+(x?0:y()),e+(x?0:y())]}):g.push({op:"move",data:[t+(x?0:N(h,n,c)),e+(x?0:N(h,n,c))]})),o?g.push({op:"bcurveTo",data:[p+t+(r-t)*d+y(),f+e+(i-e)*d+y(),p+t+2*(r-t)*d+y(),f+e+2*(i-e)*d+y(),r+(x?0:y()),i+(x?0:y())]}):g.push({op:"bcurveTo",data:[p+t+(r-t)*d+m(),f+e+(i-e)*d+m(),p+t+2*(r-t)*d+m(),f+e+2*(i-e)*d+m(),r+(x?0:m()),i+(x?0:m())]}),g}function q(t,e,r){if(!t.length)return[];const i=[];i.push([t[0][0]+N(e,r),t[0][1]+N(e,r)]),i.push([t[0][0]+N(e,r),t[0][1]+N(e,r)]);for(let n=1;n3){const a=[],o=1-r.curveTightness;n.push({op:"move",data:[t[1][0],t[1][1]]});for(let e=1;e+21&&n.push(r)):n.push(r),n.push(t[e+3])}else{const i=.5,a=t[e+0],o=t[e+1],s=t[e+2],l=t[e+3],c=Z(a,o,i),h=Z(o,s,i),u=Z(s,l,i),d=Z(c,h,i),p=Z(h,u,i),f=Z(d,p,i);Q([a,c,d,f],0,r,n),Q([f,p,u,l],0,r,n)}var a,o;return n}function J(t,e){return tt(t,0,t.length,e)}function tt(t,e,r,i,n){const a=n||[],o=t[e],s=t[r-1];let l=0,c=1;for(let h=e+1;hl&&(l=e,c=h)}return Math.sqrt(l)>i?(tt(t,e,c+1,i,a),tt(t,c,r,i,a)):(a.length||a.push(o),a.push(s)),a}function et(t,e=.15,r){const i=[],n=(t.length-1)/3;for(let a=0;a0?tt(i,0,i.length,r):i}const rt="none";class it{constructor(t){this.defaultOptions={maxRandomnessOffset:2,roughness:1,bowing:1,stroke:"#000",strokeWidth:1,curveTightness:0,curveFitting:.95,curveStepCount:9,fillStyle:"hachure",fillWeight:-1,hachureAngle:-41,hachureGap:-1,dashOffset:-1,dashGap:-1,zigzagOffset:-1,seed:0,disableMultiStroke:!1,disableMultiStrokeFill:!1,preserveVertices:!1,fillShapeRoughnessGain:.8},this.config=t||{},this.config.options&&(this.defaultOptions=this._o(this.config.options))}static newSeed(){return Math.floor(Math.random()*2**31)}_o(t){return t?Object.assign({},this.defaultOptions,t):this.defaultOptions}_d(t,e,r){return{shape:t,sets:e||[],options:r||this.defaultOptions}}line(t,e,r,i,n){const a=this._o(n);return this._d("line",[A(t,e,r,i,a)],a)}rectangle(t,e,r,i,n){const a=this._o(n),o=[],s=function(t,e,r,i,n){return function(t,e){return M(t,!0,e)}([[t,e],[t+r,e],[t+r,e+i],[t,e+i]],n)}(t,e,r,i,a);if(a.fill){const n=[[t,e],[t+r,e],[t+r,e+i],[t,e+i]];"solid"===a.fillStyle?o.push(D([n],a)):o.push(O([n],a))}return a.stroke!==rt&&o.push(s),this._d("rectangle",o,a)}ellipse(t,e,r,i,n){const a=this._o(n),o=[],s=L(r,i,a),l=F(t,e,a,s);if(a.fill)if("solid"===a.fillStyle){const r=F(t,e,a,s).opset;r.type="fillPath",o.push(r)}else o.push(O([l.estimatedPoints],a));return a.stroke!==rt&&o.push(l.opset),this._d("ellipse",o,a)}circle(t,e,r,i){const n=this.ellipse(t,e,r,r,i);return n.shape="circle",n}linearPath(t,e){const r=this._o(e);return this._d("linearPath",[M(t,!1,r)],r)}arc(t,e,r,i,n,a,o=!1,s){const l=this._o(s),c=[],h=$(t,e,r,i,n,a,o,!0,l);if(o&&l.fill)if("solid"===l.fillStyle){const o=Object.assign({},l);o.disableMultiStroke=!0;const s=$(t,e,r,i,n,a,!0,!1,o);s.type="fillPath",c.push(s)}else c.push(function(t,e,r,i,n,a,o){const s=t,l=e;let c=Math.abs(r/2),h=Math.abs(i/2);c+=N(.01*c,o),h+=N(.01*h,o);let u=n,d=a;for(;u<0;)u+=2*Math.PI,d+=2*Math.PI;d-u>2*Math.PI&&(u=0,d=2*Math.PI);const p=(d-u)/o.curveStepCount,f=[];for(let g=u;g<=d;g+=p)f.push([s+c*Math.cos(g),l+h*Math.sin(g)]);return f.push([s+c*Math.cos(d),l+h*Math.sin(d)]),f.push([s,l]),O([f],o)}(t,e,r,i,n,a,l));return l.stroke!==rt&&c.push(h),this._d("arc",c,l)}curve(t,e){const r=this._o(e),i=[],n=B(t,r);if(r.fill&&r.fill!==rt)if("solid"===r.fillStyle){const e=B(t,Object.assign(Object.assign({},r),{disableMultiStroke:!0,roughness:r.roughness?r.roughness+r.fillShapeRoughnessGain:0}));i.push({type:"fillPath",ops:this._mergedShape(e.ops)})}else{const e=[],n=t;if(n.length){const t="number"==typeof n[0][0]?[n]:n;for(const i of t)i.length<3?e.push(...i):3===i.length?e.push(...et(G([i[0],i[0],i[1],i[2]]),10,(1+r.roughness)/2)):e.push(...et(G(i),10,(1+r.roughness)/2))}e.length&&i.push(O([e],r))}return r.stroke!==rt&&i.push(n),this._d("curve",i,r)}polygon(t,e){const r=this._o(e),i=[],n=M(t,!0,r);return r.fill&&("solid"===r.fillStyle?i.push(D([t],r)):i.push(O([t],r))),r.stroke!==rt&&i.push(n),this._d("polygon",i,r)}path(t,e){const r=this._o(e),i=[];if(!t)return this._d("path",i,r);t=(t||"").replace(/\n/g," ").replace(/(-\s)/g,"-").replace("/(ss)/g"," ");const n=r.fill&&"transparent"!==r.fill&&r.fill!==rt,a=r.stroke!==rt,o=!!(r.simplification&&r.simplification<1),s=function(t,e,r){const i=_(C(w(t))),n=[];let a=[],o=[0,0],s=[];const l=()=>{s.length>=4&&a.push(...et(s,1)),s=[]},c=()=>{l(),a.length&&(n.push(a),a=[])};for(const{key:u,data:d}of i)switch(u){case"M":c(),o=[d[0],d[1]],a.push(o);break;case"L":l(),a.push([d[0],d[1]]);break;case"C":if(!s.length){const t=a.length?a[a.length-1]:o;s.push([t[0],t[1]])}s.push([d[0],d[1]]),s.push([d[2],d[3]]),s.push([d[4],d[5]]);break;case"Z":l(),a.push([o[0],o[1]])}if(c(),!r)return n;const h=[];for(const u of n){const t=J(u,r);t.length&&h.push(t)}return h}(t,0,o?4-4*(r.simplification||1):(1+r.roughness)/2),l=E(t,r);if(n)if("solid"===r.fillStyle)if(1===s.length){const e=E(t,Object.assign(Object.assign({},r),{disableMultiStroke:!0,roughness:r.roughness?r.roughness+r.fillShapeRoughnessGain:0}));i.push({type:"fillPath",ops:this._mergedShape(e.ops)})}else i.push(D(s,r));else i.push(O(s,r));return a&&(o?s.forEach((t=>{i.push(M(t,!1,r))})):i.push(l)),this._d("path",i,r)}opsToPath(t,e){let r="";for(const i of t.ops){const t="number"==typeof e&&e>=0?i.data.map((t=>+t.toFixed(e))):i.data;switch(i.op){case"move":r+=`M${t[0]} ${t[1]} `;break;case"bcurveTo":r+=`C${t[0]} ${t[1]}, ${t[2]} ${t[3]}, ${t[4]} ${t[5]} `;break;case"lineTo":r+=`L${t[0]} ${t[1]} `}}return r.trim()}toPaths(t){const e=t.sets||[],r=t.options||this.defaultOptions,i=[];for(const n of e){let t=null;switch(n.type){case"path":t={d:this.opsToPath(n),stroke:r.stroke,strokeWidth:r.strokeWidth,fill:rt};break;case"fillPath":t={d:this.opsToPath(n),stroke:rt,strokeWidth:0,fill:r.fill||rt};break;case"fillSketch":t=this.fillSketch(n,r)}t&&i.push(t)}return i}fillSketch(t,e){let r=e.fillWeight;return r<0&&(r=e.strokeWidth/2),{d:this.opsToPath(t),stroke:e.fill||rt,strokeWidth:r,fill:rt}}_mergedShape(t){return t.filter(((t,e)=>0===e||"move"!==t.op))}}class nt{constructor(t,e){this.canvas=t,this.ctx=this.canvas.getContext("2d"),this.gen=new it(e)}draw(t){const e=t.sets||[],r=t.options||this.getDefaultOptions(),i=this.ctx,n=t.options.fixedDecimalPlaceDigits;for(const a of e)switch(a.type){case"path":i.save(),i.strokeStyle="none"===r.stroke?"transparent":r.stroke,i.lineWidth=r.strokeWidth,r.strokeLineDash&&i.setLineDash(r.strokeLineDash),r.strokeLineDashOffset&&(i.lineDashOffset=r.strokeLineDashOffset),this._drawToContext(i,a,n),i.restore();break;case"fillPath":{i.save(),i.fillStyle=r.fill||"";const e="curve"===t.shape||"polygon"===t.shape||"path"===t.shape?"evenodd":"nonzero";this._drawToContext(i,a,n,e),i.restore();break}case"fillSketch":this.fillSketch(i,a,r)}}fillSketch(t,e,r){let i=r.fillWeight;i<0&&(i=r.strokeWidth/2),t.save(),r.fillLineDash&&t.setLineDash(r.fillLineDash),r.fillLineDashOffset&&(t.lineDashOffset=r.fillLineDashOffset),t.strokeStyle=r.fill||"",t.lineWidth=i,this._drawToContext(t,e,r.fixedDecimalPlaceDigits),t.restore()}_drawToContext(t,e,r,i="nonzero"){t.beginPath();for(const n of e.ops){const e="number"==typeof r&&r>=0?n.data.map((t=>+t.toFixed(r))):n.data;switch(n.op){case"move":t.moveTo(e[0],e[1]);break;case"bcurveTo":t.bezierCurveTo(e[0],e[1],e[2],e[3],e[4],e[5]);break;case"lineTo":t.lineTo(e[0],e[1])}}"fillPath"===e.type?t.fill(i):t.stroke()}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}line(t,e,r,i,n){const a=this.gen.line(t,e,r,i,n);return this.draw(a),a}rectangle(t,e,r,i,n){const a=this.gen.rectangle(t,e,r,i,n);return this.draw(a),a}ellipse(t,e,r,i,n){const a=this.gen.ellipse(t,e,r,i,n);return this.draw(a),a}circle(t,e,r,i){const n=this.gen.circle(t,e,r,i);return this.draw(n),n}linearPath(t,e){const r=this.gen.linearPath(t,e);return this.draw(r),r}polygon(t,e){const r=this.gen.polygon(t,e);return this.draw(r),r}arc(t,e,r,i,n,a,o=!1,s){const l=this.gen.arc(t,e,r,i,n,a,o,s);return this.draw(l),l}curve(t,e){const r=this.gen.curve(t,e);return this.draw(r),r}path(t,e){const r=this.gen.path(t,e);return this.draw(r),r}}const at="http://www.w3.org/2000/svg";class ot{constructor(t,e){this.svg=t,this.gen=new it(e)}draw(t){const e=t.sets||[],r=t.options||this.getDefaultOptions(),i=this.svg.ownerDocument||window.document,n=i.createElementNS(at,"g"),a=t.options.fixedDecimalPlaceDigits;for(const o of e){let e=null;switch(o.type){case"path":e=i.createElementNS(at,"path"),e.setAttribute("d",this.opsToPath(o,a)),e.setAttribute("stroke",r.stroke),e.setAttribute("stroke-width",r.strokeWidth+""),e.setAttribute("fill","none"),r.strokeLineDash&&e.setAttribute("stroke-dasharray",r.strokeLineDash.join(" ").trim()),r.strokeLineDashOffset&&e.setAttribute("stroke-dashoffset",`${r.strokeLineDashOffset}`);break;case"fillPath":e=i.createElementNS(at,"path"),e.setAttribute("d",this.opsToPath(o,a)),e.setAttribute("stroke","none"),e.setAttribute("stroke-width","0"),e.setAttribute("fill",r.fill||""),"curve"!==t.shape&&"polygon"!==t.shape||e.setAttribute("fill-rule","evenodd");break;case"fillSketch":e=this.fillSketch(i,o,r)}e&&n.appendChild(e)}return n}fillSketch(t,e,r){let i=r.fillWeight;i<0&&(i=r.strokeWidth/2);const n=t.createElementNS(at,"path");return n.setAttribute("d",this.opsToPath(e,r.fixedDecimalPlaceDigits)),n.setAttribute("stroke",r.fill||""),n.setAttribute("stroke-width",i+""),n.setAttribute("fill","none"),r.fillLineDash&&n.setAttribute("stroke-dasharray",r.fillLineDash.join(" ").trim()),r.fillLineDashOffset&&n.setAttribute("stroke-dashoffset",`${r.fillLineDashOffset}`),n}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}opsToPath(t,e){return this.gen.opsToPath(t,e)}line(t,e,r,i,n){const a=this.gen.line(t,e,r,i,n);return this.draw(a)}rectangle(t,e,r,i,n){const a=this.gen.rectangle(t,e,r,i,n);return this.draw(a)}ellipse(t,e,r,i,n){const a=this.gen.ellipse(t,e,r,i,n);return this.draw(a)}circle(t,e,r,i){const n=this.gen.circle(t,e,r,i);return this.draw(n)}linearPath(t,e){const r=this.gen.linearPath(t,e);return this.draw(r)}polygon(t,e){const r=this.gen.polygon(t,e);return this.draw(r)}arc(t,e,r,i,n,a,o=!1,s){const l=this.gen.arc(t,e,r,i,n,a,o,s);return this.draw(l)}curve(t,e){const r=this.gen.curve(t,e);return this.draw(r)}path(t,e){const r=this.gen.path(t,e);return this.draw(r)}}var st={canvas:(t,e)=>new nt(t,e),svg:(t,e)=>new ot(t,e),generator:t=>new it(t),newSeed:()=>it.newSeed()}},60513:(t,e,r)=>{"use strict";function i(t){for(var e=[],r=1;ri})},70451:(t,e,r)=>{"use strict";function i(t,e){let r;if(void 0===e)for(const i of t)null!=i&&(r=i)&&(r=i);else{let i=-1;for(let n of t)null!=(n=e(n,++i,t))&&(r=n)&&(r=n)}return r}function n(t,e){let r;if(void 0===e)for(const i of t)null!=i&&(r>i||void 0===r&&i>=i)&&(r=i);else{let i=-1;for(let n of t)null!=(n=e(n,++i,t))&&(r>n||void 0===r&&n>=n)&&(r=n)}return r}function a(t){return t}r.d(e,{JLW:()=>ks,l78:()=>x,tlR:()=>m,qrM:()=>Es,Yu4:()=>Os,IA3:()=>Ks,Wi0:()=>Ns,PGM:()=>zs,OEq:()=>qs,y8u:()=>Hs,olC:()=>Ys,IrU:()=>Xs,oDi:()=>Qs,Q7f:()=>tl,cVp:()=>rl,lUB:()=>_s,Lx9:()=>nl,nVG:()=>dl,uxU:()=>pl,Xf2:()=>yl,GZz:()=>xl,UPb:()=>kl,dyv:()=>bl,GPZ:()=>ei,Sk5:()=>si,bEH:()=>Pi,n8j:()=>Ts,T9B:()=>i,jkA:()=>n,rLf:()=>Bs,WH:()=>Vi,m4Y:()=>Mn,UMr:()=>Xi,w7C:()=>Ho,zt:()=>Uo,Ltv:()=>Yo,UAC:()=>Hn,DCK:()=>_a,TUC:()=>ta,Agd:()=>jn,t6C:()=>Nn,wXd:()=>Pn,ABi:()=>Vn,Ui6:()=>ha,rGn:()=>ea,ucG:()=>zn,YPH:()=>Xn,Mol:()=>Jn,PGu:()=>Zn,GuW:()=>Qn,hkb:()=>ki});var o=1,s=2,l=3,c=4,h=1e-6;function u(t){return"translate("+t+",0)"}function d(t){return"translate(0,"+t+")"}function p(t){return e=>+t(e)}function f(t,e){return e=Math.max(0,t.bandwidth()-2*e)/2,t.round()&&(e=Math.round(e)),r=>+t(r)+e}function g(){return!this.__axis}function y(t,e){var r=[],i=null,n=null,y=6,m=6,x=3,b="undefined"!=typeof window&&window.devicePixelRatio>1?0:.5,k=t===o||t===c?-1:1,w=t===c||t===s?"x":"y",C=t===o||t===l?u:d;function _(u){var d=null==i?e.ticks?e.ticks.apply(e,r):e.domain():i,_=null==n?e.tickFormat?e.tickFormat.apply(e,r):a:n,v=Math.max(y,0)+x,S=e.range(),T=+S[0]+b,A=+S[S.length-1]+b,M=(e.bandwidth?f:p)(e.copy(),b),B=u.selection?u.selection():u,L=B.selectAll(".domain").data([null]),F=B.selectAll(".tick").data(d,e).order(),$=F.exit(),E=F.enter().append("g").attr("class","tick"),D=F.select("line"),O=F.select("text");L=L.merge(L.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),F=F.merge(E),D=D.merge(E.append("line").attr("stroke","currentColor").attr(w+"2",k*y)),O=O.merge(E.append("text").attr("fill","currentColor").attr(w,k*v).attr("dy",t===o?"0em":t===l?"0.71em":"0.32em")),u!==B&&(L=L.transition(u),F=F.transition(u),D=D.transition(u),O=O.transition(u),$=$.transition(u).attr("opacity",h).attr("transform",(function(t){return isFinite(t=M(t))?C(t+b):this.getAttribute("transform")})),E.attr("opacity",h).attr("transform",(function(t){var e=this.parentNode.__axis;return C((e&&isFinite(e=e(t))?e:M(t))+b)}))),$.remove(),L.attr("d",t===c||t===s?m?"M"+k*m+","+T+"H"+b+"V"+A+"H"+k*m:"M"+b+","+T+"V"+A:m?"M"+T+","+k*m+"V"+b+"H"+A+"V"+k*m:"M"+T+","+b+"H"+A),F.attr("opacity",1).attr("transform",(function(t){return C(M(t)+b)})),D.attr(w+"2",k*y),O.attr(w,k*v).text(_),B.filter(g).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",t===s?"start":t===c?"end":"middle"),B.each((function(){this.__axis=M}))}return _.scale=function(t){return arguments.length?(e=t,_):e},_.ticks=function(){return r=Array.from(arguments),_},_.tickArguments=function(t){return arguments.length?(r=null==t?[]:Array.from(t),_):r.slice()},_.tickValues=function(t){return arguments.length?(i=null==t?null:Array.from(t),_):i&&i.slice()},_.tickFormat=function(t){return arguments.length?(n=t,_):n},_.tickSize=function(t){return arguments.length?(y=m=+t,_):y},_.tickSizeInner=function(t){return arguments.length?(y=+t,_):y},_.tickSizeOuter=function(t){return arguments.length?(m=+t,_):m},_.tickPadding=function(t){return arguments.length?(x=+t,_):x},_.offset=function(t){return arguments.length?(b=+t,_):b},_}function m(t){return y(o,t)}function x(t){return y(l,t)}function b(){}function k(t){return null==t?b:function(){return this.querySelector(t)}}function w(){return[]}function C(t){return null==t?w:function(){return this.querySelectorAll(t)}}function _(t){return function(){return null==(e=t.apply(this,arguments))?[]:Array.isArray(e)?e:Array.from(e);var e}}function v(t){return function(){return this.matches(t)}}function S(t){return function(e){return e.matches(t)}}var T=Array.prototype.find;function A(){return this.firstElementChild}var M=Array.prototype.filter;function B(){return Array.from(this.children)}function L(t){return new Array(t.length)}function F(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}function $(t,e,r,i,n,a){for(var o,s=0,l=e.length,c=a.length;se?1:t>=e?0:NaN}F.prototype={constructor:F,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,e){return this._parent.insertBefore(t,e)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};var K="http://www.w3.org/1999/xhtml";const I={svg:"http://www.w3.org/2000/svg",xhtml:K,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function N(t){var e=t+="",r=e.indexOf(":");return r>=0&&"xmlns"!==(e=t.slice(0,r))&&(t=t.slice(r+1)),I.hasOwnProperty(e)?{space:I[e],local:t}:t}function z(t){return function(){this.removeAttribute(t)}}function P(t){return function(){this.removeAttributeNS(t.space,t.local)}}function q(t,e){return function(){this.setAttribute(t,e)}}function j(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function W(t,e){return function(){var r=e.apply(this,arguments);null==r?this.removeAttribute(t):this.setAttribute(t,r)}}function H(t,e){return function(){var r=e.apply(this,arguments);null==r?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,r)}}function U(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function Y(t){return function(){this.style.removeProperty(t)}}function G(t,e,r){return function(){this.style.setProperty(t,e,r)}}function X(t,e,r){return function(){var i=e.apply(this,arguments);null==i?this.style.removeProperty(t):this.style.setProperty(t,i,r)}}function V(t,e){return t.style.getPropertyValue(e)||U(t).getComputedStyle(t,null).getPropertyValue(e)}function Z(t){return function(){delete this[t]}}function Q(t,e){return function(){this[t]=e}}function J(t,e){return function(){var r=e.apply(this,arguments);null==r?delete this[t]:this[t]=r}}function tt(t){return t.trim().split(/^|\s+/)}function et(t){return t.classList||new rt(t)}function rt(t){this._node=t,this._names=tt(t.getAttribute("class")||"")}function it(t,e){for(var r=et(t),i=-1,n=e.length;++i=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var Mt=[null];function Bt(t,e){this._groups=t,this._parents=e}function Lt(){return new Bt([[document.documentElement]],Mt)}Bt.prototype=Lt.prototype={constructor:Bt,select:function(t){"function"!=typeof t&&(t=k(t));for(var e=this._groups,r=e.length,i=new Array(r),n=0;n=w&&(w=k+1);!(b=m[w])&&++w=0;)(i=n[a])&&(o&&4^i.compareDocumentPosition(o)&&o.parentNode.insertBefore(i,o),o=i);return this},sort:function(t){function e(e,r){return e&&r?t(e.__data__,r.__data__):!e-!r}t||(t=R);for(var r=this._groups,i=r.length,n=new Array(i),a=0;a1?this.each((null==e?Y:"function"==typeof e?X:G)(t,e,null==r?"":r)):V(this.node(),t)},property:function(t,e){return arguments.length>1?this.each((null==e?Z:"function"==typeof e?J:Q)(t,e)):this.node()[t]},classed:function(t,e){var r=tt(t+"");if(arguments.length<2){for(var i=et(this.node()),n=-1,a=r.length;++n=0&&(e=t.slice(r+1),t=t.slice(0,r)),{type:t,name:e}}))}(t+""),o=a.length;if(!(arguments.length<2)){for(s=e?vt:_t,i=0;i{}};function Et(){for(var t,e=0,r=arguments.length,i={};e=0&&(e=t.slice(r+1),t=t.slice(0,r)),t&&!i.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:e}}))),o=-1,s=a.length;if(!(arguments.length<2)){if(null!=e&&"function"!=typeof e)throw new Error("invalid callback: "+e);for(;++o0)for(var r,i,n=new Array(r),a=0;a=0&&e._call.call(void 0,t),e=e._next;--zt}()}finally{zt=0,function(){var t,e,r=It,i=1/0;for(;r;)r._call?(i>r._time&&(i=r._time),t=r,r=r._next):(e=r._next,r._next=null,r=t?t._next=e:It=e);Nt=t,ee(i)}(),Ht=0}}function te(){var t=Yt.now(),e=t-Wt;e>jt&&(Ut-=e,Wt=t)}function ee(t){zt||(Pt&&(Pt=clearTimeout(Pt)),t-Ht>24?(t<1/0&&(Pt=setTimeout(Jt,t-Yt.now()-Ut)),qt&&(qt=clearInterval(qt))):(qt||(Wt=Yt.now(),qt=setInterval(te,jt)),zt=1,Gt(Jt)))}function re(t,e,r){var i=new Zt;return e=null==e?0:+e,i.restart((r=>{i.stop(),t(r+e)}),e,r),i}Zt.prototype=Qt.prototype={constructor:Zt,restart:function(t,e,r){if("function"!=typeof t)throw new TypeError("callback is not a function");r=(null==r?Xt():+r)+(null==e?0:+e),this._next||Nt===this||(Nt?Nt._next=this:It=this,Nt=this),this._call=t,this._time=r,ee()},stop:function(){this._call&&(this._call=null,this._time=1/0,ee())}};var ie=Kt("start","end","cancel","interrupt"),ne=[],ae=0,oe=1,se=2,le=3,ce=4,he=5,ue=6;function de(t,e,r,i,n,a){var o=t.__transition;if(o){if(r in o)return}else t.__transition={};!function(t,e,r){var i,n=t.__transition;function a(t){r.state=oe,r.timer.restart(o,r.delay,r.time),r.delay<=t&&o(t-r.delay)}function o(a){var c,h,u,d;if(r.state!==oe)return l();for(c in n)if((d=n[c]).name===r.name){if(d.state===le)return re(o);d.state===ce?(d.state=ue,d.timer.stop(),d.on.call("interrupt",t,t.__data__,d.index,d.group),delete n[c]):+cae)throw new Error("too late; already scheduled");return r}function fe(t,e){var r=ge(t,e);if(r.state>le)throw new Error("too late; already running");return r}function ge(t,e){var r=t.__transition;if(!r||!(r=r[e]))throw new Error("transition not found");return r}function ye(t,e){return t=+t,e=+e,function(r){return t*(1-r)+e*r}}var me,xe=180/Math.PI,be={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function ke(t,e,r,i,n,a){var o,s,l;return(o=Math.sqrt(t*t+e*e))&&(t/=o,e/=o),(l=t*r+e*i)&&(r-=t*l,i-=e*l),(s=Math.sqrt(r*r+i*i))&&(r/=s,i/=s,l/=s),t*i180?e+=360:e-t>180&&(t+=360),a.push({i:r.push(n(r)+"rotate(",null,i)-2,x:ye(t,e)})):e&&r.push(n(r)+"rotate("+e+i)}(a.rotate,o.rotate,s,l),function(t,e,r,a){t!==e?a.push({i:r.push(n(r)+"skewX(",null,i)-2,x:ye(t,e)}):e&&r.push(n(r)+"skewX("+e+i)}(a.skewX,o.skewX,s,l),function(t,e,r,i,a,o){if(t!==r||e!==i){var s=a.push(n(a)+"scale(",null,",",null,")");o.push({i:s-4,x:ye(t,r)},{i:s-2,x:ye(e,i)})}else 1===r&&1===i||a.push(n(a)+"scale("+r+","+i+")")}(a.scaleX,a.scaleY,o.scaleX,o.scaleY,s,l),a=o=null,function(t){for(var e,r=-1,i=l.length;++r>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):8===r?Ye(e>>24&255,e>>16&255,e>>8&255,(255&e)/255):4===r?Ye(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|240&e,((15&e)<<4|15&e)/255):null):(e=Re.exec(t))?new Ve(e[1],e[2],e[3],1):(e=Ke.exec(t))?new Ve(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=Ie.exec(t))?Ye(e[1],e[2],e[3],e[4]):(e=Ne.exec(t))?Ye(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=ze.exec(t))?rr(e[1],e[2]/100,e[3]/100,1):(e=Pe.exec(t))?rr(e[1],e[2]/100,e[3]/100,e[4]):qe.hasOwnProperty(t)?Ue(qe[t]):"transparent"===t?new Ve(NaN,NaN,NaN,0):null}function Ue(t){return new Ve(t>>16&255,t>>8&255,255&t,1)}function Ye(t,e,r,i){return i<=0&&(t=e=r=NaN),new Ve(t,e,r,i)}function Ge(t){return t instanceof Be||(t=He(t)),t?new Ve((t=t.rgb()).r,t.g,t.b,t.opacity):new Ve}function Xe(t,e,r,i){return 1===arguments.length?Ge(t):new Ve(t,e,r,null==i?1:i)}function Ve(t,e,r,i){this.r=+t,this.g=+e,this.b=+r,this.opacity=+i}function Ze(){return`#${er(this.r)}${er(this.g)}${er(this.b)}`}function Qe(){const t=Je(this.opacity);return`${1===t?"rgb(":"rgba("}${tr(this.r)}, ${tr(this.g)}, ${tr(this.b)}${1===t?")":`, ${t})`}`}function Je(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function tr(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function er(t){return((t=tr(t))<16?"0":"")+t.toString(16)}function rr(t,e,r,i){return i<=0?t=e=r=NaN:r<=0||r>=1?t=e=NaN:e<=0&&(t=NaN),new nr(t,e,r,i)}function ir(t){if(t instanceof nr)return new nr(t.h,t.s,t.l,t.opacity);if(t instanceof Be||(t=He(t)),!t)return new nr;if(t instanceof nr)return t;var e=(t=t.rgb()).r/255,r=t.g/255,i=t.b/255,n=Math.min(e,r,i),a=Math.max(e,r,i),o=NaN,s=a-n,l=(a+n)/2;return s?(o=e===a?(r-i)/s+6*(r0&&l<1?0:o,new nr(o,s,l,t.opacity)}function nr(t,e,r,i){this.h=+t,this.s=+e,this.l=+r,this.opacity=+i}function ar(t){return(t=(t||0)%360)<0?t+360:t}function or(t){return Math.max(0,Math.min(1,t||0))}function sr(t,e,r){return 255*(t<60?e+(r-e)*t/60:t<180?r:t<240?e+(r-e)*(240-t)/60:e)}function lr(t,e,r,i,n){var a=t*t,o=a*t;return((1-3*t+3*a-o)*e+(4-6*a+3*o)*r+(1+3*t+3*a-3*o)*i+o*n)/6}Ae(Be,He,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:je,formatHex:je,formatHex8:function(){return this.rgb().formatHex8()},formatHsl:function(){return ir(this).formatHsl()},formatRgb:We,toString:We}),Ae(Ve,Xe,Me(Be,{brighter(t){return t=null==t?Fe:Math.pow(Fe,t),new Ve(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=null==t?Le:Math.pow(Le,t),new Ve(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new Ve(tr(this.r),tr(this.g),tr(this.b),Je(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Ze,formatHex:Ze,formatHex8:function(){return`#${er(this.r)}${er(this.g)}${er(this.b)}${er(255*(isNaN(this.opacity)?1:this.opacity))}`},formatRgb:Qe,toString:Qe})),Ae(nr,(function(t,e,r,i){return 1===arguments.length?ir(t):new nr(t,e,r,null==i?1:i)}),Me(Be,{brighter(t){return t=null==t?Fe:Math.pow(Fe,t),new nr(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=null==t?Le:Math.pow(Le,t),new nr(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,r=this.l,i=r+(r<.5?r:1-r)*e,n=2*r-i;return new Ve(sr(t>=240?t-240:t+120,n,i),sr(t,n,i),sr(t<120?t+240:t-120,n,i),this.opacity)},clamp(){return new nr(ar(this.h),or(this.s),or(this.l),Je(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const t=Je(this.opacity);return`${1===t?"hsl(":"hsla("}${ar(this.h)}, ${100*or(this.s)}%, ${100*or(this.l)}%${1===t?")":`, ${t})`}`}}));const cr=t=>()=>t;function hr(t,e){return function(r){return t+r*e}}function ur(t){return 1==(t=+t)?dr:function(e,r){return r-e?function(t,e,r){return t=Math.pow(t,r),e=Math.pow(e,r)-t,r=1/r,function(i){return Math.pow(t+i*e,r)}}(e,r,t):cr(isNaN(e)?r:e)}}function dr(t,e){var r=e-t;return r?hr(t,r):cr(isNaN(t)?e:t)}const pr=function t(e){var r=ur(e);function i(t,e){var i=r((t=Xe(t)).r,(e=Xe(e)).r),n=r(t.g,e.g),a=r(t.b,e.b),o=dr(t.opacity,e.opacity);return function(e){return t.r=i(e),t.g=n(e),t.b=a(e),t.opacity=o(e),t+""}}return i.gamma=t,i}(1);function fr(t){return function(e){var r,i,n=e.length,a=new Array(n),o=new Array(n),s=new Array(n);for(r=0;r=1?(r=1,e-1):Math.floor(r*e),n=t[i],a=t[i+1],o=i>0?t[i-1]:2*n-a,s=ia&&(n=e.slice(a,n),s[o]?s[o]+=n:s[++o]=n),(r=r[0])===(i=i[0])?s[o]?s[o]+=i:s[++o]=i:(s[++o]=null,l.push({i:o,x:ye(r,i)})),a=yr.lastIndex;return a=0&&(t=t.slice(0,e)),!t||"start"===t}))}(e)?pe:fe;return function(){var o=a(this,t),s=o.on;s!==i&&(n=(i=s).copy()).on(e,r),o.on=n}}(r,t,e))},attr:function(t,e){var r=N(t),i="transform"===r?_e:xr;return this.attrTween(t,"function"==typeof e?(r.local?vr:_r)(r,i,Te(this,"attr."+t,e)):null==e?(r.local?kr:br)(r):(r.local?Cr:wr)(r,i,e))},attrTween:function(t,e){var r="attr."+t;if(arguments.length<2)return(r=this.tween(r))&&r._value;if(null==e)return this.tween(r,null);if("function"!=typeof e)throw new Error;var i=N(t);return this.tween(r,(i.local?Sr:Tr)(i,e))},style:function(t,e,r){var i="transform"==(t+="")?Ce:xr;return null==e?this.styleTween(t,function(t,e){var r,i,n;return function(){var a=V(this,t),o=(this.style.removeProperty(t),V(this,t));return a===o?null:a===r&&o===i?n:n=e(r=a,i=o)}}(t,i)).on("end.style."+t,$r(t)):"function"==typeof e?this.styleTween(t,function(t,e,r){var i,n,a;return function(){var o=V(this,t),s=r(this),l=s+"";return null==s&&(this.style.removeProperty(t),l=s=V(this,t)),o===l?null:o===i&&l===n?a:(n=l,a=e(i=o,s))}}(t,i,Te(this,"style."+t,e))).each(function(t,e){var r,i,n,a,o="style."+e,s="end."+o;return function(){var l=fe(this,t),c=l.on,h=null==l.value[o]?a||(a=$r(e)):void 0;c===r&&n===h||(i=(r=c).copy()).on(s,n=h),l.on=i}}(this._id,t)):this.styleTween(t,function(t,e,r){var i,n,a=r+"";return function(){var o=V(this,t);return o===a?null:o===i?n:n=e(i=o,r)}}(t,i,e),r).on("end.style."+t,null)},styleTween:function(t,e,r){var i="style."+(t+="");if(arguments.length<2)return(i=this.tween(i))&&i._value;if(null==e)return this.tween(i,null);if("function"!=typeof e)throw new Error;return this.tween(i,function(t,e,r){var i,n;function a(){var a=e.apply(this,arguments);return a!==n&&(i=(n=a)&&function(t,e,r){return function(i){this.style.setProperty(t,e.call(this,i),r)}}(t,a,r)),i}return a._value=e,a}(t,e,null==r?"":r))},text:function(t){return this.tween("text","function"==typeof t?function(t){return function(){var e=t(this);this.textContent=null==e?"":e}}(Te(this,"text",t)):function(t){return function(){this.textContent=t}}(null==t?"":t+""))},textTween:function(t){var e="text";if(arguments.length<1)return(e=this.tween(e))&&e._value;if(null==t)return this.tween(e,null);if("function"!=typeof t)throw new Error;return this.tween(e,function(t){var e,r;function i(){var i=t.apply(this,arguments);return i!==r&&(e=(r=i)&&function(t){return function(e){this.textContent=t.call(this,e)}}(i)),e}return i._value=t,i}(t))},remove:function(){return this.on("end.remove",function(t){return function(){var e=this.parentNode;for(var r in this.__transition)if(+r!==t)return;e&&e.removeChild(this)}}(this._id))},tween:function(t,e){var r=this._id;if(t+="",arguments.length<2){for(var i,n=ge(this.node(),r).tween,a=0,o=n.length;ase&&r.state1?i[0]+i.slice(2):i,+t.slice(r+1)]}function Ur(t){return(t=Hr(Math.abs(t)))?t[1]:NaN}var Yr,Gr=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Xr(t){if(!(e=Gr.exec(t)))throw new Error("invalid format: "+t);var e;return new Vr({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}function Vr(t){this.fill=void 0===t.fill?" ":t.fill+"",this.align=void 0===t.align?">":t.align+"",this.sign=void 0===t.sign?"-":t.sign+"",this.symbol=void 0===t.symbol?"":t.symbol+"",this.zero=!!t.zero,this.width=void 0===t.width?void 0:+t.width,this.comma=!!t.comma,this.precision=void 0===t.precision?void 0:+t.precision,this.trim=!!t.trim,this.type=void 0===t.type?"":t.type+""}function Zr(t,e){var r=Hr(t,e);if(!r)return t+"";var i=r[0],n=r[1];return n<0?"0."+new Array(-n).join("0")+i:i.length>n+1?i.slice(0,n+1)+"."+i.slice(n+1):i+new Array(n-i.length+2).join("0")}Xr.prototype=Vr.prototype,Vr.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};const Qr={"%":(t,e)=>(100*t).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:function(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)},e:(t,e)=>t.toExponential(e),f:(t,e)=>t.toFixed(e),g:(t,e)=>t.toPrecision(e),o:t=>Math.round(t).toString(8),p:(t,e)=>Zr(100*t,e),r:Zr,s:function(t,e){var r=Hr(t,e);if(!r)return t+"";var i=r[0],n=r[1],a=n-(Yr=3*Math.max(-8,Math.min(8,Math.floor(n/3))))+1,o=i.length;return a===o?i:a>o?i+new Array(a-o+1).join("0"):a>0?i.slice(0,a)+"."+i.slice(a):"0."+new Array(1-a).join("0")+Hr(t,Math.max(0,e+a-1))[0]},X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function Jr(t){return t}var ti,ei,ri,ii=Array.prototype.map,ni=["y","z","a","f","p","n","\xb5","m","","k","M","G","T","P","E","Z","Y"];function ai(t){var e,r,i=void 0===t.grouping||void 0===t.thousands?Jr:(e=ii.call(t.grouping,Number),r=t.thousands+"",function(t,i){for(var n=t.length,a=[],o=0,s=e[0],l=0;n>0&&s>0&&(l+s+1>i&&(s=Math.max(1,i-l)),a.push(t.substring(n-=s,n+s)),!((l+=s+1)>i));)s=e[o=(o+1)%e.length];return a.reverse().join(r)}),n=void 0===t.currency?"":t.currency[0]+"",a=void 0===t.currency?"":t.currency[1]+"",o=void 0===t.decimal?".":t.decimal+"",s=void 0===t.numerals?Jr:function(t){return function(e){return e.replace(/[0-9]/g,(function(e){return t[+e]}))}}(ii.call(t.numerals,String)),l=void 0===t.percent?"%":t.percent+"",c=void 0===t.minus?"\u2212":t.minus+"",h=void 0===t.nan?"NaN":t.nan+"";function u(t){var e=(t=Xr(t)).fill,r=t.align,u=t.sign,d=t.symbol,p=t.zero,f=t.width,g=t.comma,y=t.precision,m=t.trim,x=t.type;"n"===x?(g=!0,x="g"):Qr[x]||(void 0===y&&(y=12),m=!0,x="g"),(p||"0"===e&&"="===r)&&(p=!0,e="0",r="=");var b="$"===d?n:"#"===d&&/[boxX]/.test(x)?"0"+x.toLowerCase():"",k="$"===d?a:/[%p]/.test(x)?l:"",w=Qr[x],C=/[defgprs%]/.test(x);function _(t){var n,a,l,d=b,_=k;if("c"===x)_=w(t)+_,t="";else{var v=(t=+t)<0||1/t<0;if(t=isNaN(t)?h:w(Math.abs(t),y),m&&(t=function(t){t:for(var e,r=t.length,i=1,n=-1;i0&&(n=0)}return n>0?t.slice(0,n)+t.slice(e+1):t}(t)),v&&0==+t&&"+"!==u&&(v=!1),d=(v?"("===u?u:c:"-"===u||"("===u?"":u)+d,_=("s"===x?ni[8+Yr/3]:"")+_+(v&&"("===u?")":""),C)for(n=-1,a=t.length;++n(l=t.charCodeAt(n))||l>57){_=(46===l?o+t.slice(n+1):t.slice(n))+_,t=t.slice(0,n);break}}g&&!p&&(t=i(t,1/0));var S=d.length+t.length+_.length,T=S>1)+d+t+_+T.slice(S);break;default:t=T+d+t+_}return s(t)}return y=void 0===y?6:/[gprs]/.test(x)?Math.max(1,Math.min(21,y)):Math.max(0,Math.min(20,y)),_.toString=function(){return t+""},_}return{format:u,formatPrefix:function(t,e){var r=u(((t=Xr(t)).type="f",t)),i=3*Math.max(-8,Math.min(8,Math.floor(Ur(e)/3))),n=Math.pow(10,-i),a=ni[8+i/3];return function(t){return r(n*t)+a}}}}function oi(t){var e=0,r=t.children,i=r&&r.length;if(i)for(;--i>=0;)e+=r[i].value;else e=1;t.value=e}function si(t,e){t instanceof Map?(t=[void 0,t],void 0===e&&(e=ci)):void 0===e&&(e=li);for(var r,i,n,a,o,s=new di(t),l=[s];r=l.pop();)if((n=e(r.data))&&(o=(n=Array.from(n)).length))for(r.children=n,a=o-1;a>=0;--a)l.push(i=n[a]=new di(n[a])),i.parent=r,i.depth=r.depth+1;return s.eachBefore(ui)}function li(t){return t.children}function ci(t){return Array.isArray(t)?t[1]:null}function hi(t){void 0!==t.data.value&&(t.value=t.data.value),t.data=t.data.data}function ui(t){var e=0;do{t.height=e}while((t=t.parent)&&t.height<++e)}function di(t){this.data=t,this.depth=this.height=0,this.parent=null}function pi(t){t.x0=Math.round(t.x0),t.y0=Math.round(t.y0),t.x1=Math.round(t.x1),t.y1=Math.round(t.y1)}function fi(t,e,r,i,n){for(var a,o=t.children,s=-1,l=o.length,c=t.value&&(i-e)/t.value;++s=0;--i)a.push(r[i]);return this},find:function(t,e){let r=-1;for(const i of this)if(t.call(e,i,++r,this))return i},sum:function(t){return this.eachAfter((function(e){for(var r=+t(e.data)||0,i=e.children,n=i&&i.length;--n>=0;)r+=i[n].value;e.value=r}))},sort:function(t){return this.eachBefore((function(e){e.children&&e.children.sort(t)}))},path:function(t){for(var e=this,r=function(t,e){if(t===e)return t;var r=t.ancestors(),i=e.ancestors(),n=null;t=r.pop(),e=i.pop();for(;t===e;)n=t,t=r.pop(),e=i.pop();return n}(e,t),i=[e];e!==r;)e=e.parent,i.push(e);for(var n=i.length;t!==r;)i.splice(n,0,t),t=t.parent;return i},ancestors:function(){for(var t=this,e=[t];t=t.parent;)e.push(t);return e},descendants:function(){return Array.from(this)},leaves:function(){var t=[];return this.eachBefore((function(e){e.children||t.push(e)})),t},links:function(){var t=this,e=[];return t.each((function(r){r!==t&&e.push({source:r.parent,target:r})})),e},copy:function(){return si(this).eachBefore(hi)},[Symbol.iterator]:function*(){var t,e,r,i,n=this,a=[n];do{for(t=a.reverse(),a=[];n=t.pop();)if(yield n,e=n.children)for(r=0,i=e.length;rd&&(d=s),y=h*h*g,(p=Math.max(d/y,y/u))>f){h-=s;break}f=p}m.push(o={value:h,dice:l1?e:1)},r}((1+Math.sqrt(5))/2);function mi(t){if("function"!=typeof t)throw new Error;return t}function xi(){return 0}function bi(t){return function(){return t}}function ki(){var t=yi,e=!1,r=1,i=1,n=[0],a=xi,o=xi,s=xi,l=xi,c=xi;function h(t){return t.x0=t.y0=0,t.x1=r,t.y1=i,t.eachBefore(u),n=[0],e&&t.eachBefore(pi),t}function u(e){var r=n[e.depth],i=e.x0+r,h=e.y0+r,u=e.x1-r,d=e.y1-r;uBi?Math.pow(t,1/3):t/Mi+Ti}function Ei(t){return t>Ai?t*t*t:Mi*(t-Ti)}function Di(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function Oi(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function Ri(t){if(t instanceof Ii)return new Ii(t.h,t.c,t.l,t.opacity);if(t instanceof Fi||(t=Li(t)),0===t.a&&0===t.b)return new Ii(NaN,0180||r<-180?r-360*Math.round(r/360):r):cr(isNaN(t)?e:t)}));zi(dr);function qi(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t)}return this}class ji extends Map{constructor(t,e=Yi){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:e}}),null!=t)for(const[r,i]of t)this.set(r,i)}get(t){return super.get(Wi(this,t))}has(t){return super.has(Wi(this,t))}set(t,e){return super.set(Hi(this,t),e)}delete(t){return super.delete(Ui(this,t))}}Set;function Wi({_intern:t,_key:e},r){const i=e(r);return t.has(i)?t.get(i):r}function Hi({_intern:t,_key:e},r){const i=e(r);return t.has(i)?t.get(i):(t.set(i,r),r)}function Ui({_intern:t,_key:e},r){const i=e(r);return t.has(i)&&(r=t.get(i),t.delete(i)),r}function Yi(t){return null!==t&&"object"==typeof t?t.valueOf():t}const Gi=Symbol("implicit");function Xi(){var t=new ji,e=[],r=[],i=Gi;function n(n){let a=t.get(n);if(void 0===a){if(i!==Gi)return i;t.set(n,a=e.push(n)-1)}return r[a%r.length]}return n.domain=function(r){if(!arguments.length)return e.slice();e=[],t=new ji;for(const i of r)t.has(i)||t.set(i,e.push(i)-1);return n},n.range=function(t){return arguments.length?(r=Array.from(t),n):r.slice()},n.unknown=function(t){return arguments.length?(i=t,n):i},n.copy=function(){return Xi(e,r).unknown(i)},qi.apply(n,arguments),n}function Vi(){var t,e,r=Xi().unknown(void 0),i=r.domain,n=r.range,a=0,o=1,s=!1,l=0,c=0,h=.5;function u(){var r=i().length,u=o=Zi?10:a>=Qi?5:a>=Ji?2:1;let s,l,c;return n<0?(c=Math.pow(10,-n)/o,s=Math.round(t*c),l=Math.round(e*c),s/ce&&--l,c=-c):(c=Math.pow(10,n)*o,s=Math.round(t/c),l=Math.round(e/c),s*ce&&--l),le?1:t>=e?0:NaN}function an(t,e){return null==t||null==e?NaN:et?1:e>=t?0:NaN}function on(t){let e,r,i;function n(t,i,n=0,a=t.length){if(n>>1;r(t[e],i)<0?n=e+1:a=e}while(nnn(t(e),r),i=(e,r)=>t(e)-r):(e=t===nn||t===an?t:sn,r=t,i=t),{left:n,center:function(t,e,r=0,a=t.length){const o=n(t,e,r,a-1);return o>r&&i(t[o-1],e)>-i(t[o],e)?o-1:o},right:function(t,i,n=0,a=t.length){if(n>>1;r(t[e],i)<=0?n=e+1:a=e}while(ne&&(r=t,t=e,e=r),c=function(r){return Math.max(t,Math.min(e,r))}),i=l>2?Cn:wn,n=a=null,u}function u(e){return null==e||isNaN(e=+e)?r:(n||(n=i(o.map(t),s,l)))(t(c(e)))}return u.invert=function(r){return c(e((a||(a=i(s,o.map(t),ye)))(r)))},u.domain=function(t){return arguments.length?(o=Array.from(t,mn),h()):o.slice()},u.range=function(t){return arguments.length?(s=Array.from(t),h()):s.slice()},u.rangeRound=function(t){return s=Array.from(t),l=yn,h()},u.clamp=function(t){return arguments.length?(c=!!t||bn,h()):c!==bn},u.interpolate=function(t){return arguments.length?(l=t,h()):l},u.unknown=function(t){return arguments.length?(r=t,u):r},function(r,i){return t=r,e=i,h()}}function Sn(){return vn()(bn,bn)}function Tn(t,e,r,i){var n,a=rn(t,e,r);switch((i=Xr(null==i?",f":i)).type){case"s":var o=Math.max(Math.abs(t),Math.abs(e));return null!=i.precision||isNaN(n=function(t,e){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(Ur(e)/3)))-Ur(Math.abs(t)))}(a,o))||(i.precision=n),ri(i,o);case"":case"e":case"g":case"p":case"r":null!=i.precision||isNaN(n=function(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,Ur(e)-Ur(t))+1}(a,Math.max(Math.abs(t),Math.abs(e))))||(i.precision=n-("e"===i.type));break;case"f":case"%":null!=i.precision||isNaN(n=function(t){return Math.max(0,-Ur(Math.abs(t)))}(a))||(i.precision=n-2*("%"===i.type))}return ei(i)}function An(t){var e=t.domain;return t.ticks=function(t){var r=e();return function(t,e,r){if(!((r=+r)>0))return[];if((t=+t)==(e=+e))return[t];const i=e=n))return[];const s=a-n+1,l=new Array(s);if(i)if(o<0)for(let c=0;c0;){if((n=en(l,c,r))===i)return a[o]=l,a[s]=c,e(a);if(n>0)l=Math.floor(l/n)*n,c=Math.ceil(c/n)*n;else{if(!(n<0))break;l=Math.ceil(l*n)/n,c=Math.floor(c*n)/n}i=n}return t},t}function Mn(){var t=Sn();return t.copy=function(){return _n(t,Mn())},qi.apply(t,arguments),An(t)}const Bn=1e3,Ln=6e4,Fn=36e5,$n=864e5,En=6048e5,Dn=2592e6,On=31536e6,Rn=new Date,Kn=new Date;function In(t,e,r,i){function n(e){return t(e=0===arguments.length?new Date:new Date(+e)),e}return n.floor=e=>(t(e=new Date(+e)),e),n.ceil=r=>(t(r=new Date(r-1)),e(r,1),t(r),r),n.round=t=>{const e=n(t),r=n.ceil(t);return t-e(e(t=new Date(+t),null==r?1:Math.floor(r)),t),n.range=(r,i,a)=>{const o=[];if(r=n.ceil(r),a=null==a?1:Math.floor(a),!(r0))return o;let s;do{o.push(s=new Date(+r)),e(r,a),t(r)}while(sIn((e=>{if(e>=e)for(;t(e),!r(e);)e.setTime(e-1)}),((t,i)=>{if(t>=t)if(i<0)for(;++i<=0;)for(;e(t,-1),!r(t););else for(;--i>=0;)for(;e(t,1),!r(t););})),r&&(n.count=(e,i)=>(Rn.setTime(+e),Kn.setTime(+i),t(Rn),t(Kn),Math.floor(r(Rn,Kn))),n.every=t=>(t=Math.floor(t),isFinite(t)&&t>0?t>1?n.filter(i?e=>i(e)%t==0:e=>n.count(0,e)%t==0):n:null)),n}const Nn=In((()=>{}),((t,e)=>{t.setTime(+t+e)}),((t,e)=>e-t));Nn.every=t=>(t=Math.floor(t),isFinite(t)&&t>0?t>1?In((e=>{e.setTime(Math.floor(e/t)*t)}),((e,r)=>{e.setTime(+e+r*t)}),((e,r)=>(r-e)/t)):Nn:null);Nn.range;const zn=In((t=>{t.setTime(t-t.getMilliseconds())}),((t,e)=>{t.setTime(+t+e*Bn)}),((t,e)=>(e-t)/Bn),(t=>t.getUTCSeconds())),Pn=(zn.range,In((t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*Bn)}),((t,e)=>{t.setTime(+t+e*Ln)}),((t,e)=>(e-t)/Ln),(t=>t.getMinutes()))),qn=(Pn.range,In((t=>{t.setUTCSeconds(0,0)}),((t,e)=>{t.setTime(+t+e*Ln)}),((t,e)=>(e-t)/Ln),(t=>t.getUTCMinutes()))),jn=(qn.range,In((t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*Bn-t.getMinutes()*Ln)}),((t,e)=>{t.setTime(+t+e*Fn)}),((t,e)=>(e-t)/Fn),(t=>t.getHours()))),Wn=(jn.range,In((t=>{t.setUTCMinutes(0,0,0)}),((t,e)=>{t.setTime(+t+e*Fn)}),((t,e)=>(e-t)/Fn),(t=>t.getUTCHours()))),Hn=(Wn.range,In((t=>t.setHours(0,0,0,0)),((t,e)=>t.setDate(t.getDate()+e)),((t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*Ln)/$n),(t=>t.getDate()-1))),Un=(Hn.range,In((t=>{t.setUTCHours(0,0,0,0)}),((t,e)=>{t.setUTCDate(t.getUTCDate()+e)}),((t,e)=>(e-t)/$n),(t=>t.getUTCDate()-1))),Yn=(Un.range,In((t=>{t.setUTCHours(0,0,0,0)}),((t,e)=>{t.setUTCDate(t.getUTCDate()+e)}),((t,e)=>(e-t)/$n),(t=>Math.floor(t/$n))));Yn.range;function Gn(t){return In((e=>{e.setDate(e.getDate()-(e.getDay()+7-t)%7),e.setHours(0,0,0,0)}),((t,e)=>{t.setDate(t.getDate()+7*e)}),((t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*Ln)/En))}const Xn=Gn(0),Vn=Gn(1),Zn=Gn(2),Qn=Gn(3),Jn=Gn(4),ta=Gn(5),ea=Gn(6);Xn.range,Vn.range,Zn.range,Qn.range,Jn.range,ta.range,ea.range;function ra(t){return In((e=>{e.setUTCDate(e.getUTCDate()-(e.getUTCDay()+7-t)%7),e.setUTCHours(0,0,0,0)}),((t,e)=>{t.setUTCDate(t.getUTCDate()+7*e)}),((t,e)=>(e-t)/En))}const ia=ra(0),na=ra(1),aa=ra(2),oa=ra(3),sa=ra(4),la=ra(5),ca=ra(6),ha=(ia.range,na.range,aa.range,oa.range,sa.range,la.range,ca.range,In((t=>{t.setDate(1),t.setHours(0,0,0,0)}),((t,e)=>{t.setMonth(t.getMonth()+e)}),((t,e)=>e.getMonth()-t.getMonth()+12*(e.getFullYear()-t.getFullYear())),(t=>t.getMonth()))),ua=(ha.range,In((t=>{t.setUTCDate(1),t.setUTCHours(0,0,0,0)}),((t,e)=>{t.setUTCMonth(t.getUTCMonth()+e)}),((t,e)=>e.getUTCMonth()-t.getUTCMonth()+12*(e.getUTCFullYear()-t.getUTCFullYear())),(t=>t.getUTCMonth()))),da=(ua.range,In((t=>{t.setMonth(0,1),t.setHours(0,0,0,0)}),((t,e)=>{t.setFullYear(t.getFullYear()+e)}),((t,e)=>e.getFullYear()-t.getFullYear()),(t=>t.getFullYear())));da.every=t=>isFinite(t=Math.floor(t))&&t>0?In((e=>{e.setFullYear(Math.floor(e.getFullYear()/t)*t),e.setMonth(0,1),e.setHours(0,0,0,0)}),((e,r)=>{e.setFullYear(e.getFullYear()+r*t)})):null;da.range;const pa=In((t=>{t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)}),((t,e)=>{t.setUTCFullYear(t.getUTCFullYear()+e)}),((t,e)=>e.getUTCFullYear()-t.getUTCFullYear()),(t=>t.getUTCFullYear()));pa.every=t=>isFinite(t=Math.floor(t))&&t>0?In((e=>{e.setUTCFullYear(Math.floor(e.getUTCFullYear()/t)*t),e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)}),((e,r)=>{e.setUTCFullYear(e.getUTCFullYear()+r*t)})):null;pa.range;function fa(t,e,r,i,n,a){const o=[[zn,1,Bn],[zn,5,5e3],[zn,15,15e3],[zn,30,3e4],[a,1,Ln],[a,5,3e5],[a,15,9e5],[a,30,18e5],[n,1,Fn],[n,3,108e5],[n,6,216e5],[n,12,432e5],[i,1,$n],[i,2,1728e5],[r,1,En],[e,1,Dn],[e,3,7776e6],[t,1,On]];function s(e,r,i){const n=Math.abs(r-e)/i,a=on((([,,t])=>t)).right(o,n);if(a===o.length)return t.every(rn(e/On,r/On,i));if(0===a)return Nn.every(Math.max(rn(e,r,i),1));const[s,l]=o[n/o[a-1][2][t.toLowerCase(),e])))}function $a(t,e,r){var i=Sa.exec(e.slice(r,r+1));return i?(t.w=+i[0],r+i[0].length):-1}function Ea(t,e,r){var i=Sa.exec(e.slice(r,r+1));return i?(t.u=+i[0],r+i[0].length):-1}function Da(t,e,r){var i=Sa.exec(e.slice(r,r+2));return i?(t.U=+i[0],r+i[0].length):-1}function Oa(t,e,r){var i=Sa.exec(e.slice(r,r+2));return i?(t.V=+i[0],r+i[0].length):-1}function Ra(t,e,r){var i=Sa.exec(e.slice(r,r+2));return i?(t.W=+i[0],r+i[0].length):-1}function Ka(t,e,r){var i=Sa.exec(e.slice(r,r+4));return i?(t.y=+i[0],r+i[0].length):-1}function Ia(t,e,r){var i=Sa.exec(e.slice(r,r+2));return i?(t.y=+i[0]+(+i[0]>68?1900:2e3),r+i[0].length):-1}function Na(t,e,r){var i=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(e.slice(r,r+6));return i?(t.Z=i[1]?0:-(i[2]+(i[3]||"00")),r+i[0].length):-1}function za(t,e,r){var i=Sa.exec(e.slice(r,r+1));return i?(t.q=3*i[0]-3,r+i[0].length):-1}function Pa(t,e,r){var i=Sa.exec(e.slice(r,r+2));return i?(t.m=i[0]-1,r+i[0].length):-1}function qa(t,e,r){var i=Sa.exec(e.slice(r,r+2));return i?(t.d=+i[0],r+i[0].length):-1}function ja(t,e,r){var i=Sa.exec(e.slice(r,r+3));return i?(t.m=0,t.d=+i[0],r+i[0].length):-1}function Wa(t,e,r){var i=Sa.exec(e.slice(r,r+2));return i?(t.H=+i[0],r+i[0].length):-1}function Ha(t,e,r){var i=Sa.exec(e.slice(r,r+2));return i?(t.M=+i[0],r+i[0].length):-1}function Ua(t,e,r){var i=Sa.exec(e.slice(r,r+2));return i?(t.S=+i[0],r+i[0].length):-1}function Ya(t,e,r){var i=Sa.exec(e.slice(r,r+3));return i?(t.L=+i[0],r+i[0].length):-1}function Ga(t,e,r){var i=Sa.exec(e.slice(r,r+6));return i?(t.L=Math.floor(i[0]/1e3),r+i[0].length):-1}function Xa(t,e,r){var i=Ta.exec(e.slice(r,r+1));return i?r+i[0].length:-1}function Va(t,e,r){var i=Sa.exec(e.slice(r));return i?(t.Q=+i[0],r+i[0].length):-1}function Za(t,e,r){var i=Sa.exec(e.slice(r));return i?(t.s=+i[0],r+i[0].length):-1}function Qa(t,e){return Ma(t.getDate(),e,2)}function Ja(t,e){return Ma(t.getHours(),e,2)}function to(t,e){return Ma(t.getHours()%12||12,e,2)}function eo(t,e){return Ma(1+Hn.count(da(t),t),e,3)}function ro(t,e){return Ma(t.getMilliseconds(),e,3)}function io(t,e){return ro(t,e)+"000"}function no(t,e){return Ma(t.getMonth()+1,e,2)}function ao(t,e){return Ma(t.getMinutes(),e,2)}function oo(t,e){return Ma(t.getSeconds(),e,2)}function so(t){var e=t.getDay();return 0===e?7:e}function lo(t,e){return Ma(Xn.count(da(t)-1,t),e,2)}function co(t){var e=t.getDay();return e>=4||0===e?Jn(t):Jn.ceil(t)}function ho(t,e){return t=co(t),Ma(Jn.count(da(t),t)+(4===da(t).getDay()),e,2)}function uo(t){return t.getDay()}function po(t,e){return Ma(Vn.count(da(t)-1,t),e,2)}function fo(t,e){return Ma(t.getFullYear()%100,e,2)}function go(t,e){return Ma((t=co(t)).getFullYear()%100,e,2)}function yo(t,e){return Ma(t.getFullYear()%1e4,e,4)}function mo(t,e){var r=t.getDay();return Ma((t=r>=4||0===r?Jn(t):Jn.ceil(t)).getFullYear()%1e4,e,4)}function xo(t){var e=t.getTimezoneOffset();return(e>0?"-":(e*=-1,"+"))+Ma(e/60|0,"0",2)+Ma(e%60,"0",2)}function bo(t,e){return Ma(t.getUTCDate(),e,2)}function ko(t,e){return Ma(t.getUTCHours(),e,2)}function wo(t,e){return Ma(t.getUTCHours()%12||12,e,2)}function Co(t,e){return Ma(1+Un.count(pa(t),t),e,3)}function _o(t,e){return Ma(t.getUTCMilliseconds(),e,3)}function vo(t,e){return _o(t,e)+"000"}function So(t,e){return Ma(t.getUTCMonth()+1,e,2)}function To(t,e){return Ma(t.getUTCMinutes(),e,2)}function Ao(t,e){return Ma(t.getUTCSeconds(),e,2)}function Mo(t){var e=t.getUTCDay();return 0===e?7:e}function Bo(t,e){return Ma(ia.count(pa(t)-1,t),e,2)}function Lo(t){var e=t.getUTCDay();return e>=4||0===e?sa(t):sa.ceil(t)}function Fo(t,e){return t=Lo(t),Ma(sa.count(pa(t),t)+(4===pa(t).getUTCDay()),e,2)}function $o(t){return t.getUTCDay()}function Eo(t,e){return Ma(na.count(pa(t)-1,t),e,2)}function Do(t,e){return Ma(t.getUTCFullYear()%100,e,2)}function Oo(t,e){return Ma((t=Lo(t)).getUTCFullYear()%100,e,2)}function Ro(t,e){return Ma(t.getUTCFullYear()%1e4,e,4)}function Ko(t,e){var r=t.getUTCDay();return Ma((t=r>=4||0===r?sa(t):sa.ceil(t)).getUTCFullYear()%1e4,e,4)}function Io(){return"+0000"}function No(){return"%"}function zo(t){return+t}function Po(t){return Math.floor(+t/1e3)}function qo(t){return new Date(t)}function jo(t){return t instanceof Date?+t:+new Date(+t)}function Wo(t,e,r,i,n,a,o,s,l,c){var h=Sn(),u=h.invert,d=h.domain,p=c(".%L"),f=c(":%S"),g=c("%I:%M"),y=c("%I %p"),m=c("%a %d"),x=c("%b %d"),b=c("%B"),k=c("%Y");function w(t){return(l(t)=12)]},q:function(t){return 1+~~(t.getMonth()/3)},Q:zo,s:Po,S:oo,u:so,U:lo,V:ho,w:uo,W:po,x:null,X:null,y:fo,Y:yo,Z:xo,"%":No},k={a:function(t){return o[t.getUTCDay()]},A:function(t){return a[t.getUTCDay()]},b:function(t){return l[t.getUTCMonth()]},B:function(t){return s[t.getUTCMonth()]},c:null,d:bo,e:bo,f:vo,g:Oo,G:Ko,H:ko,I:wo,j:Co,L:_o,m:So,M:To,p:function(t){return n[+(t.getUTCHours()>=12)]},q:function(t){return 1+~~(t.getUTCMonth()/3)},Q:zo,s:Po,S:Ao,u:Mo,U:Bo,V:Fo,w:$o,W:Eo,x:null,X:null,y:Do,Y:Ro,Z:Io,"%":No},w={a:function(t,e,r){var i=p.exec(e.slice(r));return i?(t.w=f.get(i[0].toLowerCase()),r+i[0].length):-1},A:function(t,e,r){var i=u.exec(e.slice(r));return i?(t.w=d.get(i[0].toLowerCase()),r+i[0].length):-1},b:function(t,e,r){var i=m.exec(e.slice(r));return i?(t.m=x.get(i[0].toLowerCase()),r+i[0].length):-1},B:function(t,e,r){var i=g.exec(e.slice(r));return i?(t.m=y.get(i[0].toLowerCase()),r+i[0].length):-1},c:function(t,r,i){return v(t,e,r,i)},d:qa,e:qa,f:Ga,g:Ia,G:Ka,H:Wa,I:Wa,j:ja,L:Ya,m:Pa,M:Ha,p:function(t,e,r){var i=c.exec(e.slice(r));return i?(t.p=h.get(i[0].toLowerCase()),r+i[0].length):-1},q:za,Q:Va,s:Za,S:Ua,u:Ea,U:Da,V:Oa,w:$a,W:Ra,x:function(t,e,i){return v(t,r,e,i)},X:function(t,e,r){return v(t,i,e,r)},y:Ia,Y:Ka,Z:Na,"%":Xa};function C(t,e){return function(r){var i,n,a,o=[],s=-1,l=0,c=t.length;for(r instanceof Date||(r=new Date(+r));++s53)return null;"w"in a||(a.w=1),"Z"in a?(n=(i=ka(wa(a.y,0,1))).getUTCDay(),i=n>4||0===n?na.ceil(i):na(i),i=Un.offset(i,7*(a.V-1)),a.y=i.getUTCFullYear(),a.m=i.getUTCMonth(),a.d=i.getUTCDate()+(a.w+6)%7):(n=(i=ba(wa(a.y,0,1))).getDay(),i=n>4||0===n?Vn.ceil(i):Vn(i),i=Hn.offset(i,7*(a.V-1)),a.y=i.getFullYear(),a.m=i.getMonth(),a.d=i.getDate()+(a.w+6)%7)}else("W"in a||"U"in a)&&("w"in a||(a.w="u"in a?a.u%7:"W"in a?1:0),n="Z"in a?ka(wa(a.y,0,1)).getUTCDay():ba(wa(a.y,0,1)).getDay(),a.m=0,a.d="W"in a?(a.w+6)%7+7*a.W-(n+5)%7:a.w+7*a.U-(n+6)%7);return"Z"in a?(a.H+=a.Z/100|0,a.M+=a.Z%100,ka(a)):ba(a)}}function v(t,e,r,i){for(var n,a,o=0,s=e.length,l=r.length;o=l)return-1;if(37===(n=e.charCodeAt(o++))){if(n=e.charAt(o++),!(a=w[n in va?e.charAt(o++):n])||(i=a(t,r,i))<0)return-1}else if(n!=r.charCodeAt(i++))return-1}return i}return b.x=C(r,b),b.X=C(i,b),b.c=C(e,b),k.x=C(r,k),k.X=C(i,k),k.c=C(e,k),{format:function(t){var e=C(t+="",b);return e.toString=function(){return t},e},parse:function(t){var e=_(t+="",!1);return e.toString=function(){return t},e},utcFormat:function(t){var e=C(t+="",k);return e.toString=function(){return t},e},utcParse:function(t){var e=_(t+="",!0);return e.toString=function(){return t},e}}}(t),_a=Ca.format,Ca.parse,Ca.utcFormat,Ca.utcParse}({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});const Uo=function(t){for(var e=t.length/6|0,r=new Array(e),i=0;i=1?ns:t<=-1?-ns:Math.asin(t)}const ss=Math.PI,ls=2*ss,cs=1e-6,hs=ls-cs;function us(t){this._+=t[0];for(let e=1,r=t.length;e=0))throw new Error(`invalid digits: ${t}`);if(e>15)return us;const r=10**e;return function(t){this._+=t[0];for(let e=1,i=t.length;ecs)if(Math.abs(h*s-l*c)>cs&&n){let d=r-a,p=i-o,f=s*s+l*l,g=d*d+p*p,y=Math.sqrt(f),m=Math.sqrt(u),x=n*Math.tan((ss-Math.acos((f+u-g)/(2*y*m)))/2),b=x/m,k=x/y;Math.abs(b-1)>cs&&this._append`L${t+b*c},${e+b*h}`,this._append`A${n},${n},0,0,${+(h*d>c*p)},${this._x1=t+k*s},${this._y1=e+k*l}`}else this._append`L${this._x1=t},${this._y1=e}`;else;}arc(t,e,r,i,n,a){if(t=+t,e=+e,a=!!a,(r=+r)<0)throw new Error(`negative radius: ${r}`);let o=r*Math.cos(i),s=r*Math.sin(i),l=t+o,c=e+s,h=1^a,u=a?i-n:n-i;null===this._x1?this._append`M${l},${c}`:(Math.abs(this._x1-l)>cs||Math.abs(this._y1-c)>cs)&&this._append`L${l},${c}`,r&&(u<0&&(u=u%ls+ls),u>hs?this._append`A${r},${r},0,1,${h},${t-o},${e-s}A${r},${r},0,1,${h},${this._x1=l},${this._y1=c}`:u>cs&&this._append`A${r},${r},0,${+(u>=ss)},${h},${this._x1=t+r*Math.cos(n)},${this._y1=e+r*Math.sin(n)}`)}rect(t,e,r,i){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+e}h${r=+r}v${+i}h${-r}Z`}toString(){return this._}}function ps(t){let e=3;return t.digits=function(r){if(!arguments.length)return e;if(null==r)e=null;else{const t=Math.floor(r);if(!(t>=0))throw new RangeError(`invalid digits: ${r}`);e=t}return t},()=>new ds(e)}function fs(t){return t.innerRadius}function gs(t){return t.outerRadius}function ys(t){return t.startAngle}function ms(t){return t.endAngle}function xs(t){return t&&t.padAngle}function bs(t,e,r,i,n,a,o){var s=t-r,l=e-i,c=(o?a:-a)/es(s*s+l*l),h=c*l,u=-c*s,d=t+h,p=e+u,f=r+h,g=i+u,y=(d+f)/2,m=(p+g)/2,x=f-d,b=g-p,k=x*x+b*b,w=n-a,C=d*g-f*p,_=(b<0?-1:1)*es(Qo(0,w*w*k-C*C)),v=(C*b-x*_)/k,S=(-C*x-b*_)/k,T=(C*b+x*_)/k,A=(-C*x+b*_)/k,M=v-y,B=S-m,L=T-y,F=A-m;return M*M+B*B>L*L+F*F&&(v=T,S=A),{cx:v,cy:S,x01:-h,y01:-u,x11:v*(n/w-1),y11:S*(n/w-1)}}function ks(){var t=fs,e=gs,r=Go(0),i=null,n=ys,a=ms,o=xs,s=null,l=ps(c);function c(){var c,h,u,d=+t.apply(this,arguments),p=+e.apply(this,arguments),f=n.apply(this,arguments)-ns,g=a.apply(this,arguments)-ns,y=Xo(g-f),m=g>f;if(s||(s=c=l()),prs)if(y>as-rs)s.moveTo(p*Zo(f),p*ts(f)),s.arc(0,0,p,f,g,!m),d>rs&&(s.moveTo(d*Zo(g),d*ts(g)),s.arc(0,0,d,g,f,m));else{var x,b,k=f,w=g,C=f,_=g,v=y,S=y,T=o.apply(this,arguments)/2,A=T>rs&&(i?+i.apply(this,arguments):es(d*d+p*p)),M=Jo(Xo(p-d)/2,+r.apply(this,arguments)),B=M,L=M;if(A>rs){var F=os(A/d*ts(T)),$=os(A/p*ts(T));(v-=2*F)>rs?(C+=F*=m?1:-1,_-=F):(v=0,C=_=(f+g)/2),(S-=2*$)>rs?(k+=$*=m?1:-1,w-=$):(S=0,k=w=(f+g)/2)}var E=p*Zo(k),D=p*ts(k),O=d*Zo(_),R=d*ts(_);if(M>rs){var K,I=p*Zo(w),N=p*ts(w),z=d*Zo(C),P=d*ts(C);if(y1?0:u<-1?is:Math.acos(u))/2),Y=es(K[0]*K[0]+K[1]*K[1]);B=Jo(M,(d-Y)/(U-1)),L=Jo(M,(p-Y)/(U+1))}else B=L=0}S>rs?L>rs?(x=bs(z,P,E,D,p,L,m),b=bs(I,N,O,R,p,L,m),s.moveTo(x.cx+x.x01,x.cy+x.y01),Lrs&&v>rs?B>rs?(x=bs(O,R,I,N,d,-B,m),b=bs(E,D,z,P,d,-B,m),s.lineTo(x.cx+x.x01,x.cy+x.y01),Bt?1:e>=t?0:NaN}function Ms(t){return t}function Bs(){var t=Ms,e=As,r=null,i=Go(0),n=Go(as),a=Go(0);function o(o){var s,l,c,h,u,d=(o=ws(o)).length,p=0,f=new Array(d),g=new Array(d),y=+i.apply(this,arguments),m=Math.min(as,Math.max(-as,n.apply(this,arguments)-y)),x=Math.min(Math.abs(m)/d,a.apply(this,arguments)),b=x*(m<0?-1:1);for(s=0;s0&&(p+=u);for(null!=e?f.sort((function(t,r){return e(g[t],g[r])})):null!=r&&f.sort((function(t,e){return r(o[t],o[e])})),s=0,c=p?(m-d*b)/p:0;s0?u*c:0)+b,g[l]={data:o[l],index:s,value:u,startAngle:y,endAngle:h,padAngle:x};return g}return o.value=function(e){return arguments.length?(t="function"==typeof e?e:Go(+e),o):t},o.sortValues=function(t){return arguments.length?(e=t,r=null,o):e},o.sort=function(t){return arguments.length?(r=t,e=null,o):r},o.startAngle=function(t){return arguments.length?(i="function"==typeof t?t:Go(+t),o):i},o.endAngle=function(t){return arguments.length?(n="function"==typeof t?t:Go(+t),o):n},o.padAngle=function(t){return arguments.length?(a="function"==typeof t?t:Go(+t),o):a},o}function Ls(){}function Fs(t,e,r){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+e)/6,(t._y0+4*t._y1+r)/6)}function $s(t){this._context=t}function Es(t){return new $s(t)}function Ds(t){this._context=t}function Os(t){return new Ds(t)}function Rs(t){this._context=t}function Ks(t){return new Rs(t)}Cs.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:this._context.lineTo(t,e)}}},$s.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:Fs(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:Fs(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},Ds.prototype={areaStart:Ls,areaEnd:Ls,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x2=t,this._y2=e;break;case 1:this._point=2,this._x3=t,this._y3=e;break;case 2:this._point=3,this._x4=t,this._y4=e,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+e)/6);break;default:Fs(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}},Rs.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var r=(this._x0+4*this._x1+t)/6,i=(this._y0+4*this._y1+e)/6;this._line?this._context.lineTo(r,i):this._context.moveTo(r,i);break;case 3:this._point=4;default:Fs(this,t,e)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=e}};class Is{constructor(t,e){this._context=t,this._x=e}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line}point(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:this._x?this._context.bezierCurveTo(this._x0=(this._x0+t)/2,this._y0,this._x0,e,t,e):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+e)/2,t,this._y0,t,e)}this._x0=t,this._y0=e}}function Ns(t){return new Is(t,!0)}function zs(t){return new Is(t,!1)}function Ps(t,e){this._basis=new $s(t),this._beta=e}Ps.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var t=this._x,e=this._y,r=t.length-1;if(r>0)for(var i,n=t[0],a=e[0],o=t[r]-n,s=e[r]-a,l=-1;++l<=r;)i=l/r,this._basis.point(this._beta*t[l]+(1-this._beta)*(n+i*o),this._beta*e[l]+(1-this._beta)*(a+i*s));this._x=this._y=null,this._basis.lineEnd()},point:function(t,e){this._x.push(+t),this._y.push(+e)}};const qs=function t(e){function r(t){return 1===e?new $s(t):new Ps(t,e)}return r.beta=function(e){return t(+e)},r}(.85);function js(t,e,r){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-e),t._y2+t._k*(t._y1-r),t._x2,t._y2)}function Ws(t,e){this._context=t,this._k=(1-e)/6}Ws.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:js(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2,this._x1=t,this._y1=e;break;case 2:this._point=3;default:js(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const Hs=function t(e){function r(t){return new Ws(t,e)}return r.tension=function(e){return t(+e)},r}(0);function Us(t,e){this._context=t,this._k=(1-e)/6}Us.prototype={areaStart:Ls,areaEnd:Ls,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:js(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const Ys=function t(e){function r(t){return new Us(t,e)}return r.tension=function(e){return t(+e)},r}(0);function Gs(t,e){this._context=t,this._k=(1-e)/6}Gs.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:js(this,t,e)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const Xs=function t(e){function r(t){return new Gs(t,e)}return r.tension=function(e){return t(+e)},r}(0);function Vs(t,e,r){var i=t._x1,n=t._y1,a=t._x2,o=t._y2;if(t._l01_a>rs){var s=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,l=3*t._l01_a*(t._l01_a+t._l12_a);i=(i*s-t._x0*t._l12_2a+t._x2*t._l01_2a)/l,n=(n*s-t._y0*t._l12_2a+t._y2*t._l01_2a)/l}if(t._l23_a>rs){var c=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,h=3*t._l23_a*(t._l23_a+t._l12_a);a=(a*c+t._x1*t._l23_2a-e*t._l12_2a)/h,o=(o*c+t._y1*t._l23_2a-r*t._l12_2a)/h}t._context.bezierCurveTo(i,n,a,o,t._x2,t._y2)}function Zs(t,e){this._context=t,this._alpha=e}Zs.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,i=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+i*i,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;break;case 2:this._point=3;default:Vs(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const Qs=function t(e){function r(t){return e?new Zs(t,e):new Ws(t,0)}return r.alpha=function(e){return t(+e)},r}(.5);function Js(t,e){this._context=t,this._alpha=e}Js.prototype={areaStart:Ls,areaEnd:Ls,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,i=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+i*i,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=e;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=e);break;case 2:this._point=3,this._x5=t,this._y5=e;break;default:Vs(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const tl=function t(e){function r(t){return e?new Js(t,e):new Us(t,0)}return r.alpha=function(e){return t(+e)},r}(.5);function el(t,e){this._context=t,this._alpha=e}el.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,e){if(t=+t,e=+e,this._point){var r=this._x2-t,i=this._y2-e;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(r*r+i*i,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Vs(this,t,e)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=e}};const rl=function t(e){function r(t){return e?new el(t,e):new Gs(t,0)}return r.alpha=function(e){return t(+e)},r}(.5);function il(t){this._context=t}function nl(t){return new il(t)}function al(t){return t<0?-1:1}function ol(t,e,r){var i=t._x1-t._x0,n=e-t._x1,a=(t._y1-t._y0)/(i||n<0&&-0),o=(r-t._y1)/(n||i<0&&-0),s=(a*n+o*i)/(i+n);return(al(a)+al(o))*Math.min(Math.abs(a),Math.abs(o),.5*Math.abs(s))||0}function sl(t,e){var r=t._x1-t._x0;return r?(3*(t._y1-t._y0)/r-e)/2:e}function ll(t,e,r){var i=t._x0,n=t._y0,a=t._x1,o=t._y1,s=(a-i)/3;t._context.bezierCurveTo(i+s,n+s*e,a-s,o-s*r,a,o)}function cl(t){this._context=t}function hl(t){this._context=new ul(t)}function ul(t){this._context=t}function dl(t){return new cl(t)}function pl(t){return new hl(t)}function fl(t){this._context=t}function gl(t){var e,r,i=t.length-1,n=new Array(i),a=new Array(i),o=new Array(i);for(n[0]=0,a[0]=2,o[0]=t[0]+2*t[1],e=1;e=0;--e)n[e]=(o[e]-n[e+1])/a[e];for(a[i-1]=(t[i]+n[i-1])/2,e=0;e=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,e){switch(t=+t,e=+e,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,e),this._context.lineTo(t,e);else{var r=this._x*(1-this._t)+t*this._t;this._context.lineTo(r,this._y),this._context.lineTo(r,e)}}this._x=t,this._y=e}},wl.prototype={constructor:wl,scale:function(t){return 1===t?this:new wl(this.k*t,this.x,this.y)},translate:function(t,e){return 0===t&0===e?this:new wl(this.k,this.x+this.k*t,this.y+this.k*e)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};new wl(1,0,0);wl.prototype},99418:(t,e,r)=>{"use strict";r.d(e,{A:()=>st});const{entries:i,setPrototypeOf:n,isFrozen:a,getPrototypeOf:o,getOwnPropertyDescriptor:s}=Object;let{freeze:l,seal:c,create:h}=Object,{apply:u,construct:d}="undefined"!=typeof Reflect&&Reflect;l||(l=function(t){return t}),c||(c=function(t){return t}),u||(u=function(t,e){for(var r=arguments.length,i=new Array(r>2?r-2:0),n=2;n1?e-1:0),i=1;i1?r-1:0),n=1;n2&&void 0!==arguments[2]?arguments[2]:x;n&&n(t,null);let i=e.length;for(;i--;){let n=e[i];if("string"==typeof n){const t=r(n);t!==n&&(a(e)||(e[i]=t),n=t)}t[n]=!0}return t}function L(t){for(let e=0;e/gm),U=c(/\$\{[\w\W]*/gm),Y=c(/^data-[\-\w.\u00B7-\uFFFF]+$/),G=c(/^aria-[\-\w]+$/),X=c(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),V=c(/^(?:\w+script|data):/i),Z=c(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),Q=c(/^html$/i),J=c(/^[a-z][.\w]*(-[.\w]+)+$/i);var tt=Object.freeze({__proto__:null,ARIA_ATTR:G,ATTR_WHITESPACE:Z,CUSTOM_ELEMENT:J,DATA_ATTR:Y,DOCTYPE_NAME:Q,ERB_EXPR:H,IS_ALLOWED_URI:X,IS_SCRIPT_OR_DATA:V,MUSTACHE_EXPR:W,TMPLIT_EXPR:U});const et=1,rt=3,it=7,nt=8,at=9,ot=function(){return"undefined"==typeof window?null:window};var st=function t(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:ot();const r=e=>t(e);if(r.version="3.3.0",r.removed=[],!e||!e.document||e.document.nodeType!==at||!e.Element)return r.isSupported=!1,r;let{document:n}=e;const a=n,o=a.currentScript,{DocumentFragment:s,HTMLTemplateElement:c,Node:u,Element:d,NodeFilter:A,NamedNodeMap:M=e.NamedNodeMap||e.MozNamedAttrMap,HTMLFormElement:L,DOMParser:W,trustedTypes:H}=e,U=d.prototype,Y=$(U,"cloneNode"),G=$(U,"remove"),V=$(U,"nextSibling"),Z=$(U,"childNodes"),J=$(U,"parentNode");if("function"==typeof c){const t=n.createElement("template");t.content&&t.content.ownerDocument&&(n=t.content.ownerDocument)}let st,lt="";const{implementation:ct,createNodeIterator:ht,createDocumentFragment:ut,getElementsByTagName:dt}=n,{importNode:pt}=a;let ft={afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]};r.isSupported="function"==typeof i&&"function"==typeof J&&ct&&void 0!==ct.createHTMLDocument;const{MUSTACHE_EXPR:gt,ERB_EXPR:yt,TMPLIT_EXPR:mt,DATA_ATTR:xt,ARIA_ATTR:bt,IS_SCRIPT_OR_DATA:kt,ATTR_WHITESPACE:wt,CUSTOM_ELEMENT:Ct}=tt;let{IS_ALLOWED_URI:_t}=tt,vt=null;const St=B({},[...E,...D,...O,...K,...N]);let Tt=null;const At=B({},[...z,...P,...q,...j]);let Mt=Object.seal(h(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),Bt=null,Lt=null;const Ft=Object.seal(h(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}}));let $t=!0,Et=!0,Dt=!1,Ot=!0,Rt=!1,Kt=!0,It=!1,Nt=!1,zt=!1,Pt=!1,qt=!1,jt=!1,Wt=!0,Ht=!1,Ut=!0,Yt=!1,Gt={},Xt=null;const Vt=B({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]);let Zt=null;const Qt=B({},["audio","video","img","source","image","track"]);let Jt=null;const te=B({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),ee="http://www.w3.org/1998/Math/MathML",re="http://www.w3.org/2000/svg",ie="http://www.w3.org/1999/xhtml";let ne=ie,ae=!1,oe=null;const se=B({},[ee,re,ie],b);let le=B({},["mi","mo","mn","ms","mtext"]),ce=B({},["annotation-xml"]);const he=B({},["title","style","font","a","script"]);let ue=null;const de=["application/xhtml+xml","text/html"];let pe=null,fe=null;const ge=n.createElement("form"),ye=function(t){return t instanceof RegExp||t instanceof Function},me=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!fe||fe!==t){if(t&&"object"==typeof t||(t={}),t=F(t),ue=-1===de.indexOf(t.PARSER_MEDIA_TYPE)?"text/html":t.PARSER_MEDIA_TYPE,pe="application/xhtml+xml"===ue?b:x,vt=v(t,"ALLOWED_TAGS")?B({},t.ALLOWED_TAGS,pe):St,Tt=v(t,"ALLOWED_ATTR")?B({},t.ALLOWED_ATTR,pe):At,oe=v(t,"ALLOWED_NAMESPACES")?B({},t.ALLOWED_NAMESPACES,b):se,Jt=v(t,"ADD_URI_SAFE_ATTR")?B(F(te),t.ADD_URI_SAFE_ATTR,pe):te,Zt=v(t,"ADD_DATA_URI_TAGS")?B(F(Qt),t.ADD_DATA_URI_TAGS,pe):Qt,Xt=v(t,"FORBID_CONTENTS")?B({},t.FORBID_CONTENTS,pe):Vt,Bt=v(t,"FORBID_TAGS")?B({},t.FORBID_TAGS,pe):F({}),Lt=v(t,"FORBID_ATTR")?B({},t.FORBID_ATTR,pe):F({}),Gt=!!v(t,"USE_PROFILES")&&t.USE_PROFILES,$t=!1!==t.ALLOW_ARIA_ATTR,Et=!1!==t.ALLOW_DATA_ATTR,Dt=t.ALLOW_UNKNOWN_PROTOCOLS||!1,Ot=!1!==t.ALLOW_SELF_CLOSE_IN_ATTR,Rt=t.SAFE_FOR_TEMPLATES||!1,Kt=!1!==t.SAFE_FOR_XML,It=t.WHOLE_DOCUMENT||!1,Pt=t.RETURN_DOM||!1,qt=t.RETURN_DOM_FRAGMENT||!1,jt=t.RETURN_TRUSTED_TYPE||!1,zt=t.FORCE_BODY||!1,Wt=!1!==t.SANITIZE_DOM,Ht=t.SANITIZE_NAMED_PROPS||!1,Ut=!1!==t.KEEP_CONTENT,Yt=t.IN_PLACE||!1,_t=t.ALLOWED_URI_REGEXP||X,ne=t.NAMESPACE||ie,le=t.MATHML_TEXT_INTEGRATION_POINTS||le,ce=t.HTML_INTEGRATION_POINTS||ce,Mt=t.CUSTOM_ELEMENT_HANDLING||{},t.CUSTOM_ELEMENT_HANDLING&&ye(t.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(Mt.tagNameCheck=t.CUSTOM_ELEMENT_HANDLING.tagNameCheck),t.CUSTOM_ELEMENT_HANDLING&&ye(t.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(Mt.attributeNameCheck=t.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),t.CUSTOM_ELEMENT_HANDLING&&"boolean"==typeof t.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements&&(Mt.allowCustomizedBuiltInElements=t.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),Rt&&(Et=!1),qt&&(Pt=!0),Gt&&(vt=B({},N),Tt=[],!0===Gt.html&&(B(vt,E),B(Tt,z)),!0===Gt.svg&&(B(vt,D),B(Tt,P),B(Tt,j)),!0===Gt.svgFilters&&(B(vt,O),B(Tt,P),B(Tt,j)),!0===Gt.mathMl&&(B(vt,K),B(Tt,q),B(Tt,j))),t.ADD_TAGS&&("function"==typeof t.ADD_TAGS?Ft.tagCheck=t.ADD_TAGS:(vt===St&&(vt=F(vt)),B(vt,t.ADD_TAGS,pe))),t.ADD_ATTR&&("function"==typeof t.ADD_ATTR?Ft.attributeCheck=t.ADD_ATTR:(Tt===At&&(Tt=F(Tt)),B(Tt,t.ADD_ATTR,pe))),t.ADD_URI_SAFE_ATTR&&B(Jt,t.ADD_URI_SAFE_ATTR,pe),t.FORBID_CONTENTS&&(Xt===Vt&&(Xt=F(Xt)),B(Xt,t.FORBID_CONTENTS,pe)),Ut&&(vt["#text"]=!0),It&&B(vt,["html","head","body"]),vt.table&&(B(vt,["tbody"]),delete Bt.tbody),t.TRUSTED_TYPES_POLICY){if("function"!=typeof t.TRUSTED_TYPES_POLICY.createHTML)throw T('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if("function"!=typeof t.TRUSTED_TYPES_POLICY.createScriptURL)throw T('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');st=t.TRUSTED_TYPES_POLICY,lt=st.createHTML("")}else void 0===st&&(st=function(t,e){if("object"!=typeof t||"function"!=typeof t.createPolicy)return null;let r=null;const i="data-tt-policy-suffix";e&&e.hasAttribute(i)&&(r=e.getAttribute(i));const n="dompurify"+(r?"#"+r:"");try{return t.createPolicy(n,{createHTML:t=>t,createScriptURL:t=>t})}catch(a){return console.warn("TrustedTypes policy "+n+" could not be created."),null}}(H,o)),null!==st&&"string"==typeof lt&&(lt=st.createHTML(""));l&&l(t),fe=t}},xe=B({},[...D,...O,...R]),be=B({},[...K,...I]),ke=function(t){y(r.removed,{element:t});try{J(t).removeChild(t)}catch(e){G(t)}},we=function(t,e){try{y(r.removed,{attribute:e.getAttributeNode(t),from:e})}catch(i){y(r.removed,{attribute:null,from:e})}if(e.removeAttribute(t),"is"===t)if(Pt||qt)try{ke(e)}catch(i){}else try{e.setAttribute(t,"")}catch(i){}},Ce=function(t){let e=null,r=null;if(zt)t=""+t;else{const e=k(t,/^[\r\n\t ]+/);r=e&&e[0]}"application/xhtml+xml"===ue&&ne===ie&&(t=''+t+"");const i=st?st.createHTML(t):t;if(ne===ie)try{e=(new W).parseFromString(i,ue)}catch(o){}if(!e||!e.documentElement){e=ct.createDocument(ne,"template",null);try{e.documentElement.innerHTML=ae?lt:i}catch(o){}}const a=e.body||e.documentElement;return t&&r&&a.insertBefore(n.createTextNode(r),a.childNodes[0]||null),ne===ie?dt.call(e,It?"html":"body")[0]:It?e.documentElement:a},_e=function(t){return ht.call(t.ownerDocument||t,t,A.SHOW_ELEMENT|A.SHOW_COMMENT|A.SHOW_TEXT|A.SHOW_PROCESSING_INSTRUCTION|A.SHOW_CDATA_SECTION,null)},ve=function(t){return t instanceof L&&("string"!=typeof t.nodeName||"string"!=typeof t.textContent||"function"!=typeof t.removeChild||!(t.attributes instanceof M)||"function"!=typeof t.removeAttribute||"function"!=typeof t.setAttribute||"string"!=typeof t.namespaceURI||"function"!=typeof t.insertBefore||"function"!=typeof t.hasChildNodes)},Se=function(t){return"function"==typeof u&&t instanceof u};function Te(t,e,i){p(t,(t=>{t.call(r,e,i,fe)}))}const Ae=function(t){let e=null;if(Te(ft.beforeSanitizeElements,t,null),ve(t))return ke(t),!0;const i=pe(t.nodeName);if(Te(ft.uponSanitizeElement,t,{tagName:i,allowedTags:vt}),Kt&&t.hasChildNodes()&&!Se(t.firstElementChild)&&S(/<[/\w!]/g,t.innerHTML)&&S(/<[/\w!]/g,t.textContent))return ke(t),!0;if(t.nodeType===it)return ke(t),!0;if(Kt&&t.nodeType===nt&&S(/<[/\w]/g,t.data))return ke(t),!0;if(!(Ft.tagCheck instanceof Function&&Ft.tagCheck(i))&&(!vt[i]||Bt[i])){if(!Bt[i]&&Be(i)){if(Mt.tagNameCheck instanceof RegExp&&S(Mt.tagNameCheck,i))return!1;if(Mt.tagNameCheck instanceof Function&&Mt.tagNameCheck(i))return!1}if(Ut&&!Xt[i]){const e=J(t)||t.parentNode,r=Z(t)||t.childNodes;if(r&&e){for(let i=r.length-1;i>=0;--i){const n=Y(r[i],!0);n.__removalCount=(t.__removalCount||0)+1,e.insertBefore(n,V(t))}}}return ke(t),!0}return t instanceof d&&!function(t){let e=J(t);e&&e.tagName||(e={namespaceURI:ne,tagName:"template"});const r=x(t.tagName),i=x(e.tagName);return!!oe[t.namespaceURI]&&(t.namespaceURI===re?e.namespaceURI===ie?"svg"===r:e.namespaceURI===ee?"svg"===r&&("annotation-xml"===i||le[i]):Boolean(xe[r]):t.namespaceURI===ee?e.namespaceURI===ie?"math"===r:e.namespaceURI===re?"math"===r&&ce[i]:Boolean(be[r]):t.namespaceURI===ie?!(e.namespaceURI===re&&!ce[i])&&!(e.namespaceURI===ee&&!le[i])&&!be[r]&&(he[r]||!xe[r]):!("application/xhtml+xml"!==ue||!oe[t.namespaceURI]))}(t)?(ke(t),!0):"noscript"!==i&&"noembed"!==i&&"noframes"!==i||!S(/<\/no(script|embed|frames)/i,t.innerHTML)?(Rt&&t.nodeType===rt&&(e=t.textContent,p([gt,yt,mt],(t=>{e=w(e,t," ")})),t.textContent!==e&&(y(r.removed,{element:t.cloneNode()}),t.textContent=e)),Te(ft.afterSanitizeElements,t,null),!1):(ke(t),!0)},Me=function(t,e,r){if(Wt&&("id"===e||"name"===e)&&(r in n||r in ge))return!1;if(Et&&!Lt[e]&&S(xt,e));else if($t&&S(bt,e));else if(Ft.attributeCheck instanceof Function&&Ft.attributeCheck(e,t));else if(!Tt[e]||Lt[e]){if(!(Be(t)&&(Mt.tagNameCheck instanceof RegExp&&S(Mt.tagNameCheck,t)||Mt.tagNameCheck instanceof Function&&Mt.tagNameCheck(t))&&(Mt.attributeNameCheck instanceof RegExp&&S(Mt.attributeNameCheck,e)||Mt.attributeNameCheck instanceof Function&&Mt.attributeNameCheck(e,t))||"is"===e&&Mt.allowCustomizedBuiltInElements&&(Mt.tagNameCheck instanceof RegExp&&S(Mt.tagNameCheck,r)||Mt.tagNameCheck instanceof Function&&Mt.tagNameCheck(r))))return!1}else if(Jt[e]);else if(S(_t,w(r,wt,"")));else if("src"!==e&&"xlink:href"!==e&&"href"!==e||"script"===t||0!==C(r,"data:")||!Zt[t]){if(Dt&&!S(kt,w(r,wt,"")));else if(r)return!1}else;return!0},Be=function(t){return"annotation-xml"!==t&&k(t,Ct)},Le=function(t){Te(ft.beforeSanitizeAttributes,t,null);const{attributes:e}=t;if(!e||ve(t))return;const i={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:Tt,forceKeepAttr:void 0};let n=e.length;for(;n--;){const o=e[n],{name:s,namespaceURI:l,value:c}=o,h=pe(s),u=c;let d="value"===s?u:_(u);if(i.attrName=h,i.attrValue=d,i.keepAttr=!0,i.forceKeepAttr=void 0,Te(ft.uponSanitizeAttribute,t,i),d=i.attrValue,!Ht||"id"!==h&&"name"!==h||(we(s,t),d="user-content-"+d),Kt&&S(/((--!?|])>)|<\/(style|title|textarea)/i,d)){we(s,t);continue}if("attributename"===h&&k(d,"href")){we(s,t);continue}if(i.forceKeepAttr)continue;if(!i.keepAttr){we(s,t);continue}if(!Ot&&S(/\/>/i,d)){we(s,t);continue}Rt&&p([gt,yt,mt],(t=>{d=w(d,t," ")}));const f=pe(t.nodeName);if(Me(f,h,d)){if(st&&"object"==typeof H&&"function"==typeof H.getAttributeType)if(l);else switch(H.getAttributeType(f,h)){case"TrustedHTML":d=st.createHTML(d);break;case"TrustedScriptURL":d=st.createScriptURL(d)}if(d!==u)try{l?t.setAttributeNS(l,s,d):t.setAttribute(s,d),ve(t)?ke(t):g(r.removed)}catch(a){we(s,t)}}else we(s,t)}Te(ft.afterSanitizeAttributes,t,null)},Fe=function t(e){let r=null;const i=_e(e);for(Te(ft.beforeSanitizeShadowDOM,e,null);r=i.nextNode();)Te(ft.uponSanitizeShadowNode,r,null),Ae(r),Le(r),r.content instanceof s&&t(r.content);Te(ft.afterSanitizeShadowDOM,e,null)};return r.sanitize=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=null,n=null,o=null,l=null;if(ae=!t,ae&&(t="\x3c!--\x3e"),"string"!=typeof t&&!Se(t)){if("function"!=typeof t.toString)throw T("toString is not a function");if("string"!=typeof(t=t.toString()))throw T("dirty is not a string, aborting")}if(!r.isSupported)return t;if(Nt||me(e),r.removed=[],"string"==typeof t&&(Yt=!1),Yt){if(t.nodeName){const e=pe(t.nodeName);if(!vt[e]||Bt[e])throw T("root node is forbidden and cannot be sanitized in-place")}}else if(t instanceof u)i=Ce("\x3c!----\x3e"),n=i.ownerDocument.importNode(t,!0),n.nodeType===et&&"BODY"===n.nodeName||"HTML"===n.nodeName?i=n:i.appendChild(n);else{if(!Pt&&!Rt&&!It&&-1===t.indexOf("<"))return st&&jt?st.createHTML(t):t;if(i=Ce(t),!i)return Pt?null:jt?lt:""}i&&zt&&ke(i.firstChild);const c=_e(Yt?t:i);for(;o=c.nextNode();)Ae(o),Le(o),o.content instanceof s&&Fe(o.content);if(Yt)return t;if(Pt){if(qt)for(l=ut.call(i.ownerDocument);i.firstChild;)l.appendChild(i.firstChild);else l=i;return(Tt.shadowroot||Tt.shadowrootmode)&&(l=pt.call(a,l,!0)),l}let h=It?i.outerHTML:i.innerHTML;return It&&vt["!doctype"]&&i.ownerDocument&&i.ownerDocument.doctype&&i.ownerDocument.doctype.name&&S(Q,i.ownerDocument.doctype.name)&&(h="\n"+h),Rt&&p([gt,yt,mt],(t=>{h=w(h,t," ")})),st&&jt?st.createHTML(h):h},r.setConfig=function(){me(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}),Nt=!0},r.clearConfig=function(){fe=null,Nt=!1},r.isValidAttribute=function(t,e,r){fe||me({});const i=pe(t),n=pe(e);return Me(i,n,r)},r.addHook=function(t,e){"function"==typeof e&&y(ft[t],e)},r.removeHook=function(t,e){if(void 0!==e){const r=f(ft[t],e);return-1===r?void 0:m(ft[t],r,1)[0]}return g(ft[t])},r.removeHooks=function(t){ft[t]=[]},r.removeAllHooks=function(){ft={afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},r}()},93539:(t,e,r)=>{"use strict";r.d(e,{A:()=>o});var i=r(72453),n=r(63122);const a=class{constructor(){this.type=n.Z.ALL}get(){return this.type}set(t){if(this.type&&this.type!==t)throw new Error("Cannot change both RGB and HSL channels at the same time");this.type=t}reset(){this.type=n.Z.ALL}is(t){return this.type===t}};const o=new class{constructor(t,e){this.color=e,this.changed=!1,this.data=t,this.type=new a}set(t,e){return this.color=e,this.changed=!1,this.data=t,this.type.type=n.Z.ALL,this}_ensureHSL(){const t=this.data,{h:e,s:r,l:n}=t;void 0===e&&(t.h=i.A.channel.rgb2hsl(t,"h")),void 0===r&&(t.s=i.A.channel.rgb2hsl(t,"s")),void 0===n&&(t.l=i.A.channel.rgb2hsl(t,"l"))}_ensureRGB(){const t=this.data,{r:e,g:r,b:n}=t;void 0===e&&(t.r=i.A.channel.hsl2rgb(t,"r")),void 0===r&&(t.g=i.A.channel.hsl2rgb(t,"g")),void 0===n&&(t.b=i.A.channel.hsl2rgb(t,"b"))}get r(){const t=this.data,e=t.r;return this.type.is(n.Z.HSL)||void 0===e?(this._ensureHSL(),i.A.channel.hsl2rgb(t,"r")):e}get g(){const t=this.data,e=t.g;return this.type.is(n.Z.HSL)||void 0===e?(this._ensureHSL(),i.A.channel.hsl2rgb(t,"g")):e}get b(){const t=this.data,e=t.b;return this.type.is(n.Z.HSL)||void 0===e?(this._ensureHSL(),i.A.channel.hsl2rgb(t,"b")):e}get h(){const t=this.data,e=t.h;return this.type.is(n.Z.RGB)||void 0===e?(this._ensureRGB(),i.A.channel.rgb2hsl(t,"h")):e}get s(){const t=this.data,e=t.s;return this.type.is(n.Z.RGB)||void 0===e?(this._ensureRGB(),i.A.channel.rgb2hsl(t,"s")):e}get l(){const t=this.data,e=t.l;return this.type.is(n.Z.RGB)||void 0===e?(this._ensureRGB(),i.A.channel.rgb2hsl(t,"l")):e}get a(){return this.data.a}set r(t){this.type.set(n.Z.RGB),this.changed=!0,this.data.r=t}set g(t){this.type.set(n.Z.RGB),this.changed=!0,this.data.g=t}set b(t){this.type.set(n.Z.RGB),this.changed=!0,this.data.b=t}set h(t){this.type.set(n.Z.HSL),this.changed=!0,this.data.h=t}set s(t){this.type.set(n.Z.HSL),this.changed=!0,this.data.s=t}set l(t){this.type.set(n.Z.HSL),this.changed=!0,this.data.l=t}set a(t){this.changed=!0,this.data.a=t}}({r:0,g:0,b:0,a:0},"transparent")},74886:(t,e,r)=>{"use strict";r.d(e,{A:()=>g});var i=r(93539),n=r(63122);const a={re:/^#((?:[a-f0-9]{2}){2,4}|[a-f0-9]{3})$/i,parse:t=>{if(35!==t.charCodeAt(0))return;const e=t.match(a.re);if(!e)return;const r=e[1],n=parseInt(r,16),o=r.length,s=o%4==0,l=o>4,c=l?1:17,h=l?8:4,u=s?0:-1,d=l?255:15;return i.A.set({r:(n>>h*(u+3)&d)*c,g:(n>>h*(u+2)&d)*c,b:(n>>h*(u+1)&d)*c,a:s?(n&d)*c/255:1},t)},stringify:t=>{const{r:e,g:r,b:i,a:a}=t;return a<1?`#${n.Y[Math.round(e)]}${n.Y[Math.round(r)]}${n.Y[Math.round(i)]}${n.Y[Math.round(255*a)]}`:`#${n.Y[Math.round(e)]}${n.Y[Math.round(r)]}${n.Y[Math.round(i)]}`}},o=a;var s=r(72453);const l={re:/^hsla?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(?:deg|grad|rad|turn)?)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?%)(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e-?\d+)?(%)?))?\s*?\)$/i,hueRe:/^(.+?)(deg|grad|rad|turn)$/i,_hue2deg:t=>{const e=t.match(l.hueRe);if(e){const[,t,r]=e;switch(r){case"grad":return s.A.channel.clamp.h(.9*parseFloat(t));case"rad":return s.A.channel.clamp.h(180*parseFloat(t)/Math.PI);case"turn":return s.A.channel.clamp.h(360*parseFloat(t))}}return s.A.channel.clamp.h(parseFloat(t))},parse:t=>{const e=t.charCodeAt(0);if(104!==e&&72!==e)return;const r=t.match(l.re);if(!r)return;const[,n,a,o,c,h]=r;return i.A.set({h:l._hue2deg(n),s:s.A.channel.clamp.s(parseFloat(a)),l:s.A.channel.clamp.l(parseFloat(o)),a:c?s.A.channel.clamp.a(h?parseFloat(c)/100:parseFloat(c)):1},t)},stringify:t=>{const{h:e,s:r,l:i,a:n}=t;return n<1?`hsla(${s.A.lang.round(e)}, ${s.A.lang.round(r)}%, ${s.A.lang.round(i)}%, ${n})`:`hsl(${s.A.lang.round(e)}, ${s.A.lang.round(r)}%, ${s.A.lang.round(i)}%)`}},c=l,h={colors:{aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyanaqua:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",transparent:"#00000000",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},parse:t=>{t=t.toLowerCase();const e=h.colors[t];if(e)return o.parse(e)},stringify:t=>{const e=o.stringify(t);for(const r in h.colors)if(h.colors[r]===e)return r}},u=h,d={re:/^rgba?\(\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))\s*?(?:,|\s)\s*?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?))(?:\s*?(?:,|\/)\s*?\+?(-?(?:\d+(?:\.\d+)?|(?:\.\d+))(?:e\d+)?(%?)))?\s*?\)$/i,parse:t=>{const e=t.charCodeAt(0);if(114!==e&&82!==e)return;const r=t.match(d.re);if(!r)return;const[,n,a,o,l,c,h,u,p]=r;return i.A.set({r:s.A.channel.clamp.r(a?2.55*parseFloat(n):parseFloat(n)),g:s.A.channel.clamp.g(l?2.55*parseFloat(o):parseFloat(o)),b:s.A.channel.clamp.b(h?2.55*parseFloat(c):parseFloat(c)),a:u?s.A.channel.clamp.a(p?parseFloat(u)/100:parseFloat(u)):1},t)},stringify:t=>{const{r:e,g:r,b:i,a:n}=t;return n<1?`rgba(${s.A.lang.round(e)}, ${s.A.lang.round(r)}, ${s.A.lang.round(i)}, ${s.A.lang.round(n)})`:`rgb(${s.A.lang.round(e)}, ${s.A.lang.round(r)}, ${s.A.lang.round(i)})`}},p=d,f={format:{keyword:h,hex:o,rgb:d,rgba:d,hsl:l,hsla:l},parse:t=>{if("string"!=typeof t)return t;const e=o.parse(t)||p.parse(t)||c.parse(t)||u.parse(t);if(e)return e;throw new Error(`Unsupported color format: "${t}"`)},stringify:t=>!t.changed&&t.color?t.color:t.type.is(n.Z.HSL)||void 0===t.data.r?c.stringify(t):t.a<1||!Number.isInteger(t.r)||!Number.isInteger(t.g)||!Number.isInteger(t.b)?p.stringify(t):o.stringify(t)},g=f},63122:(t,e,r)=>{"use strict";r.d(e,{Y:()=>n,Z:()=>a});var i=r(72453);const n={};for(let o=0;o<=255;o++)n[o]=i.A.unit.dec2hex(o);const a={ALL:0,RGB:1,HSL:2}},95635:(t,e,r)=>{"use strict";r.d(e,{A:()=>a});var i=r(72453),n=r(74886);const a=(t,e,r)=>{const a=n.A.parse(t),o=a[e],s=i.A.channel.clamp[e](o+r);return o!==s&&(a[e]=s),n.A.stringify(a)}},8232:(t,e,r)=>{"use strict";r.d(e,{A:()=>a});var i=r(72453),n=r(74886);const a=(t,e)=>{const r=n.A.parse(t);for(const n in e)r[n]=i.A.channel.clamp[n](e[n]);return n.A.stringify(r)}},75263:(t,e,r)=>{"use strict";r.d(e,{A:()=>n});var i=r(95635);const n=(t,e)=>(0,i.A)(t,"l",-e)},3219:(t,e,r)=>{"use strict";r.d(e,{A:()=>s});var i=r(72453),n=r(74886);const a=t=>{const{r:e,g:r,b:a}=n.A.parse(t),o=.2126*i.A.channel.toLinear(e)+.7152*i.A.channel.toLinear(r)+.0722*i.A.channel.toLinear(a);return i.A.lang.round(o)},o=t=>a(t)>=.5,s=t=>!o(t)},78041:(t,e,r)=>{"use strict";r.d(e,{A:()=>n});var i=r(95635);const n=(t,e)=>(0,i.A)(t,"l",e)},25582:(t,e,r)=>{"use strict";r.d(e,{A:()=>s});var i=r(72453),n=r(93539),a=r(74886),o=r(8232);const s=(t,e,r=0,s=1)=>{if("number"!=typeof t)return(0,o.A)(t,{a:e});const l=n.A.set({r:i.A.channel.clamp.r(t),g:i.A.channel.clamp.g(e),b:i.A.channel.clamp.b(r),a:i.A.channel.clamp.a(s)});return a.A.stringify(l)}},72453:(t,e,r)=>{"use strict";r.d(e,{A:()=>n});const i={min:{r:0,g:0,b:0,s:0,l:0,a:0},max:{r:255,g:255,b:255,h:360,s:100,l:100,a:1},clamp:{r:t=>t>=255?255:t<0?0:t,g:t=>t>=255?255:t<0?0:t,b:t=>t>=255?255:t<0?0:t,h:t=>t%360,s:t=>t>=100?100:t<0?0:t,l:t=>t>=100?100:t<0?0:t,a:t=>t>=1?1:t<0?0:t},toLinear:t=>{const e=t/255;return t>.03928?Math.pow((e+.055)/1.055,2.4):e/12.92},hue2rgb:(t,e,r)=>(r<0&&(r+=1),r>1&&(r-=1),r<1/6?t+6*(e-t)*r:r<.5?e:r<2/3?t+(e-t)*(2/3-r)*6:t),hsl2rgb:({h:t,s:e,l:r},n)=>{if(!e)return 2.55*r;t/=360,e/=100;const a=(r/=100)<.5?r*(1+e):r+e-r*e,o=2*r-a;switch(n){case"r":return 255*i.hue2rgb(o,a,t+1/3);case"g":return 255*i.hue2rgb(o,a,t);case"b":return 255*i.hue2rgb(o,a,t-1/3)}},rgb2hsl:({r:t,g:e,b:r},i)=>{t/=255,e/=255,r/=255;const n=Math.max(t,e,r),a=Math.min(t,e,r),o=(n+a)/2;if("l"===i)return 100*o;if(n===a)return 0;const s=n-a;if("s"===i)return 100*(o>.5?s/(2-n-a):s/(n+a));switch(n){case t:return 60*((e-r)/s+(ee>r?Math.min(e,Math.max(r,t)):Math.min(r,Math.max(e,t)),round:t=>Math.round(1e10*t)/1e10},unit:{dec2hex:t=>{const e=Math.round(t).toString(16);return e.length>1?e:`0${e}`}}}},80127:(t,e,r)=>{"use strict";r.d(e,{A:()=>d});const i=function(){this.__data__=[],this.size=0};var n=r(66984);const a=function(t,e){for(var r=t.length;r--;)if((0,n.A)(t[r][0],e))return r;return-1};var o=Array.prototype.splice;const s=function(t){var e=this.__data__,r=a(e,t);return!(r<0)&&(r==e.length-1?e.pop():o.call(e,r,1),--this.size,!0)};const l=function(t){var e=this.__data__,r=a(e,t);return r<0?void 0:e[r][1]};const c=function(t){return a(this.__data__,t)>-1};const h=function(t,e){var r=this.__data__,i=a(r,t);return i<0?(++this.size,r.push([t,e])):r[i][1]=e,this};function u(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e{"use strict";r.d(e,{A:()=>a});var i=r(18744),n=r(41917);const a=(0,i.A)(n.A,"Map")},29471:(t,e,r)=>{"use strict";r.d(e,{A:()=>_});const i=(0,r(18744).A)(Object,"create");const n=function(){this.__data__=i?i(null):{},this.size=0};const a=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e};var o=Object.prototype.hasOwnProperty;const s=function(t){var e=this.__data__;if(i){var r=e[t];return"__lodash_hash_undefined__"===r?void 0:r}return o.call(e,t)?e[t]:void 0};var l=Object.prototype.hasOwnProperty;const c=function(t){var e=this.__data__;return i?void 0!==e[t]:l.call(e,t)};const h=function(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=i&&void 0===e?"__lodash_hash_undefined__":e,this};function u(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e{"use strict";r.d(e,{A:()=>a});var i=r(18744),n=r(41917);const a=(0,i.A)(n.A,"Set")},11754:(t,e,r)=>{"use strict";r.d(e,{A:()=>d});var i=r(80127);const n=function(){this.__data__=new i.A,this.size=0};const a=function(t){var e=this.__data__,r=e.delete(t);return this.size=e.size,r};const o=function(t){return this.__data__.get(t)};const s=function(t){return this.__data__.has(t)};var l=r(68335),c=r(29471);const h=function(t,e){var r=this.__data__;if(r instanceof i.A){var n=r.__data__;if(!l.A||n.length<199)return n.push([t,e]),this.size=++r.size,this;r=this.__data__=new c.A(n)}return r.set(t,e),this.size=r.size,this};function u(t){var e=this.__data__=new i.A(t);this.size=e.size}u.prototype.clear=n,u.prototype.delete=a,u.prototype.get=o,u.prototype.has=s,u.prototype.set=h;const d=u},241:(t,e,r)=>{"use strict";r.d(e,{A:()=>i});const i=r(41917).A.Symbol},43988:(t,e,r)=>{"use strict";r.d(e,{A:()=>i});const i=r(41917).A.Uint8Array},83607:(t,e,r)=>{"use strict";r.d(e,{A:()=>h});const i=function(t,e){for(var r=-1,i=Array(t);++r{"use strict";r.d(e,{A:()=>o});var i=r(52528),n=r(66984),a=Object.prototype.hasOwnProperty;const o=function(t,e,r){var o=t[e];a.call(t,e)&&(0,n.A)(o,r)&&(void 0!==r||e in t)||(0,i.A)(t,e,r)}},52528:(t,e,r)=>{"use strict";r.d(e,{A:()=>n});var i=r(84171);const n=function(t,e,r){"__proto__"==e&&i.A?(0,i.A)(t,e,{configurable:!0,enumerable:!0,value:r,writable:!0}):t[e]=r}},4574:(t,e,r)=>{"use strict";r.d(e,{A:()=>i});const i=function(t){return function(e,r,i){for(var n=-1,a=Object(e),o=i(e),s=o.length;s--;){var l=o[t?s:++n];if(!1===r(a[l],l,a))break}return e}}()},88496:(t,e,r)=>{"use strict";r.d(e,{A:()=>d});var i=r(241),n=Object.prototype,a=n.hasOwnProperty,o=n.toString,s=i.A?i.A.toStringTag:void 0;const l=function(t){var e=a.call(t,s),r=t[s];try{t[s]=void 0;var i=!0}catch(l){}var n=o.call(t);return i&&(e?t[s]=r:delete t[s]),n};var c=Object.prototype.toString;const h=function(t){return c.call(t)};var u=i.A?i.A.toStringTag:void 0;const d=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":u&&u in Object(t)?l(t):h(t)}},69471:(t,e,r)=>{"use strict";r.d(e,{A:()=>o});var i=r(97271);const n=(0,r(40367).A)(Object.keys,Object);var a=Object.prototype.hasOwnProperty;const o=function(t){if(!(0,i.A)(t))return n(t);var e=[];for(var r in Object(t))a.call(t,r)&&"constructor"!=r&&e.push(r);return e}},24326:(t,e,r)=>{"use strict";r.d(e,{A:()=>o});var i=r(29008),n=r(76875),a=r(67525);const o=function(t,e){return(0,a.A)((0,n.A)(t,e,i.A),t+"")}},52789:(t,e,r)=>{"use strict";r.d(e,{A:()=>i});const i=function(t){return function(e){return t(e)}}},90565:(t,e,r)=>{"use strict";r.d(e,{A:()=>n});var i=r(43988);const n=function(t){var e=new t.constructor(t.byteLength);return new i.A(e).set(new i.A(t)),e}},80154:(t,e,r)=>{"use strict";r.d(e,{A:()=>l});var i=r(41917),n="object"==typeof exports&&exports&&!exports.nodeType&&exports,a=n&&"object"==typeof module&&module&&!module.nodeType&&module,o=a&&a.exports===n?i.A.Buffer:void 0,s=o?o.allocUnsafe:void 0;const l=function(t,e){if(e)return t.slice();var r=t.length,i=s?s(r):new t.constructor(r);return t.copy(i),i}},1801:(t,e,r)=>{"use strict";r.d(e,{A:()=>n});var i=r(90565);const n=function(t,e){var r=e?(0,i.A)(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.length)}},39759:(t,e,r)=>{"use strict";r.d(e,{A:()=>i});const i=function(t,e){var r=-1,i=t.length;for(e||(e=Array(i));++r{"use strict";r.d(e,{A:()=>a});var i=r(52851),n=r(52528);const a=function(t,e,r,a){var o=!r;r||(r={});for(var s=-1,l=e.length;++s{"use strict";r.d(e,{A:()=>a});var i=r(24326),n=r(6832);const a=function(t){return(0,i.A)((function(e,r){var i=-1,a=r.length,o=a>1?r[a-1]:void 0,s=a>2?r[2]:void 0;for(o=t.length>3&&"function"==typeof o?(a--,o):void 0,s&&(0,n.A)(r[0],r[1],s)&&(o=a<3?void 0:o,a=1),e=Object(e);++i{"use strict";r.d(e,{A:()=>n});var i=r(18744);const n=function(){try{var t=(0,i.A)(Object,"defineProperty");return t({},"",{}),t}catch(e){}}()},72136:(t,e,r)=>{"use strict";r.d(e,{A:()=>i});const i="object"==typeof global&&global&&global.Object===Object&&global},18744:(t,e,r)=>{"use strict";r.d(e,{A:()=>x});var i=r(89610);const n=r(41917).A["__core-js_shared__"];var a,o=(a=/[^.]+$/.exec(n&&n.keys&&n.keys.IE_PROTO||""))?"Symbol(src)_1."+a:"";const s=function(t){return!!o&&o in t};var l=r(23149),c=r(81121),h=/^\[object .+?Constructor\]$/,u=Function.prototype,d=Object.prototype,p=u.toString,f=d.hasOwnProperty,g=RegExp("^"+p.call(f).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");const y=function(t){return!(!(0,l.A)(t)||s(t))&&((0,i.A)(t)?g:h).test((0,c.A)(t))};const m=function(t,e){return null==t?void 0:t[e]};const x=function(t,e){var r=m(t,e);return y(r)?r:void 0}},15647:(t,e,r)=>{"use strict";r.d(e,{A:()=>i});const i=(0,r(40367).A)(Object.getPrototypeOf,Object)},9779:(t,e,r)=>{"use strict";r.d(e,{A:()=>_});var i=r(18744),n=r(41917);const a=(0,i.A)(n.A,"DataView");var o=r(68335);const s=(0,i.A)(n.A,"Promise");var l=r(39857);const c=(0,i.A)(n.A,"WeakMap");var h=r(88496),u=r(81121),d="[object Map]",p="[object Promise]",f="[object Set]",g="[object WeakMap]",y="[object DataView]",m=(0,u.A)(a),x=(0,u.A)(o.A),b=(0,u.A)(s),k=(0,u.A)(l.A),w=(0,u.A)(c),C=h.A;(a&&C(new a(new ArrayBuffer(1)))!=y||o.A&&C(new o.A)!=d||s&&C(s.resolve())!=p||l.A&&C(new l.A)!=f||c&&C(new c)!=g)&&(C=function(t){var e=(0,h.A)(t),r="[object Object]"==e?t.constructor:void 0,i=r?(0,u.A)(r):"";if(i)switch(i){case m:return y;case x:return d;case b:return p;case k:return f;case w:return g}return e});const _=C},18598:(t,e,r)=>{"use strict";r.d(e,{A:()=>l});var i=r(23149),n=Object.create;const a=function(){function t(){}return function(e){if(!(0,i.A)(e))return{};if(n)return n(e);t.prototype=e;var r=new t;return t.prototype=void 0,r}}();var o=r(15647),s=r(97271);const l=function(t){return"function"!=typeof t.constructor||(0,s.A)(t)?{}:a((0,o.A)(t))}},25353:(t,e,r)=>{"use strict";r.d(e,{A:()=>n});var i=/^(?:0|[1-9]\d*)$/;const n=function(t,e){var r=typeof t;return!!(e=null==e?9007199254740991:e)&&("number"==r||"symbol"!=r&&i.test(t))&&t>-1&&t%1==0&&t{"use strict";r.d(e,{A:()=>s});var i=r(66984),n=r(38446),a=r(25353),o=r(23149);const s=function(t,e,r){if(!(0,o.A)(r))return!1;var s=typeof e;return!!("number"==s?(0,n.A)(r)&&(0,a.A)(e,r.length):"string"==s&&e in r)&&(0,i.A)(r[e],t)}},97271:(t,e,r)=>{"use strict";r.d(e,{A:()=>n});var i=Object.prototype;const n=function(t){var e=t&&t.constructor;return t===("function"==typeof e&&e.prototype||i)}},64841:(t,e,r)=>{"use strict";r.d(e,{A:()=>s});var i=r(72136),n="object"==typeof exports&&exports&&!exports.nodeType&&exports,a=n&&"object"==typeof module&&module&&!module.nodeType&&module,o=a&&a.exports===n&&i.A.process;const s=function(){try{var t=a&&a.require&&a.require("util").types;return t||o&&o.binding&&o.binding("util")}catch(e){}}()},40367:(t,e,r)=>{"use strict";r.d(e,{A:()=>i});const i=function(t,e){return function(r){return t(e(r))}}},76875:(t,e,r)=>{"use strict";r.d(e,{A:()=>a});const i=function(t,e,r){switch(r.length){case 0:return t.call(e);case 1:return t.call(e,r[0]);case 2:return t.call(e,r[0],r[1]);case 3:return t.call(e,r[0],r[1],r[2])}return t.apply(e,r)};var n=Math.max;const a=function(t,e,r){return e=n(void 0===e?t.length-1:e,0),function(){for(var a=arguments,o=-1,s=n(a.length-e,0),l=Array(s);++o{"use strict";r.d(e,{A:()=>a});var i=r(72136),n="object"==typeof self&&self&&self.Object===Object&&self;const a=i.A||n||Function("return this")()},67525:(t,e,r)=>{"use strict";r.d(e,{A:()=>l});var i=r(39142),n=r(84171),a=r(29008);const o=n.A?function(t,e){return(0,n.A)(t,"toString",{configurable:!0,enumerable:!1,value:(0,i.A)(e),writable:!0})}:a.A;var s=Date.now;const l=function(t){var e=0,r=0;return function(){var i=s(),n=16-(i-r);if(r=i,n>0){if(++e>=800)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(o)},81121:(t,e,r)=>{"use strict";r.d(e,{A:()=>n});var i=Function.prototype.toString;const n=function(t){if(null!=t){try{return i.call(t)}catch(e){}try{return t+""}catch(e){}}return""}},39142:(t,e,r)=>{"use strict";r.d(e,{A:()=>i});const i=function(t){return function(){return t}}},66984:(t,e,r)=>{"use strict";r.d(e,{A:()=>i});const i=function(t,e){return t===e||t!=t&&e!=e}},29008:(t,e,r)=>{"use strict";r.d(e,{A:()=>i});const i=function(t){return t}},52274:(t,e,r)=>{"use strict";r.d(e,{A:()=>c});var i=r(88496),n=r(53098);const a=function(t){return(0,n.A)(t)&&"[object Arguments]"==(0,i.A)(t)};var o=Object.prototype,s=o.hasOwnProperty,l=o.propertyIsEnumerable;const c=a(function(){return arguments}())?a:function(t){return(0,n.A)(t)&&s.call(t,"callee")&&!l.call(t,"callee")}},92049:(t,e,r)=>{"use strict";r.d(e,{A:()=>i});const i=Array.isArray},38446:(t,e,r)=>{"use strict";r.d(e,{A:()=>a});var i=r(89610),n=r(5254);const a=function(t){return null!=t&&(0,n.A)(t.length)&&!(0,i.A)(t)}},53533:(t,e,r)=>{"use strict";r.d(e,{A:()=>a});var i=r(38446),n=r(53098);const a=function(t){return(0,n.A)(t)&&(0,i.A)(t)}},99912:(t,e,r)=>{"use strict";r.d(e,{A:()=>l});var i=r(41917);const n=function(){return!1};var a="object"==typeof exports&&exports&&!exports.nodeType&&exports,o=a&&"object"==typeof module&&module&&!module.nodeType&&module,s=o&&o.exports===a?i.A.Buffer:void 0;const l=(s?s.isBuffer:void 0)||n},66401:(t,e,r)=>{"use strict";r.d(e,{A:()=>d});var i=r(69471),n=r(9779),a=r(52274),o=r(92049),s=r(38446),l=r(99912),c=r(97271),h=r(33858),u=Object.prototype.hasOwnProperty;const d=function(t){if(null==t)return!0;if((0,s.A)(t)&&((0,o.A)(t)||"string"==typeof t||"function"==typeof t.splice||(0,l.A)(t)||(0,h.A)(t)||(0,a.A)(t)))return!t.length;var e=(0,n.A)(t);if("[object Map]"==e||"[object Set]"==e)return!t.size;if((0,c.A)(t))return!(0,i.A)(t).length;for(var r in t)if(u.call(t,r))return!1;return!0}},89610:(t,e,r)=>{"use strict";r.d(e,{A:()=>a});var i=r(88496),n=r(23149);const a=function(t){if(!(0,n.A)(t))return!1;var e=(0,i.A)(t);return"[object Function]"==e||"[object GeneratorFunction]"==e||"[object AsyncFunction]"==e||"[object Proxy]"==e}},5254:(t,e,r)=>{"use strict";r.d(e,{A:()=>i});const i=function(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=9007199254740991}},23149:(t,e,r)=>{"use strict";r.d(e,{A:()=>i});const i=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}},53098:(t,e,r)=>{"use strict";r.d(e,{A:()=>i});const i=function(t){return null!=t&&"object"==typeof t}},33858:(t,e,r)=>{"use strict";r.d(e,{A:()=>u});var i=r(88496),n=r(5254),a=r(53098),o={};o["[object Float32Array]"]=o["[object Float64Array]"]=o["[object Int8Array]"]=o["[object Int16Array]"]=o["[object Int32Array]"]=o["[object Uint8Array]"]=o["[object Uint8ClampedArray]"]=o["[object Uint16Array]"]=o["[object Uint32Array]"]=!0,o["[object Arguments]"]=o["[object Array]"]=o["[object ArrayBuffer]"]=o["[object Boolean]"]=o["[object DataView]"]=o["[object Date]"]=o["[object Error]"]=o["[object Function]"]=o["[object Map]"]=o["[object Number]"]=o["[object Object]"]=o["[object RegExp]"]=o["[object Set]"]=o["[object String]"]=o["[object WeakMap]"]=!1;const s=function(t){return(0,a.A)(t)&&(0,n.A)(t.length)&&!!o[(0,i.A)(t)]};var l=r(52789),c=r(64841),h=c.A&&c.A.isTypedArray;const u=h?(0,l.A)(h):s},55615:(t,e,r)=>{"use strict";r.d(e,{A:()=>h});var i=r(83607),n=r(23149),a=r(97271);const o=function(t){var e=[];if(null!=t)for(var r in Object(t))e.push(r);return e};var s=Object.prototype.hasOwnProperty;const l=function(t){if(!(0,n.A)(t))return o(t);var e=(0,a.A)(t),r=[];for(var i in t)("constructor"!=i||!e&&s.call(t,i))&&r.push(i);return r};var c=r(38446);const h=function(t){return(0,c.A)(t)?(0,i.A)(t,!0):l(t)}},46632:(t,e,r)=>{"use strict";r.d(e,{A:()=>a});var i=r(29471);function n(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new TypeError("Expected a function");var r=function(){var i=arguments,n=e?e.apply(this,i):i[0],a=r.cache;if(a.has(n))return a.get(n);var o=t.apply(this,i);return r.cache=a.set(n,o)||a,o};return r.cache=new(n.Cache||i.A),r}n.Cache=i.A;const a=n},42837:(t,e,r)=>{"use strict";r.d(e,{A:()=>D});var i=r(11754),n=r(52528),a=r(66984);const o=function(t,e,r){(void 0!==r&&!(0,a.A)(t[e],r)||void 0===r&&!(e in t))&&(0,n.A)(t,e,r)};var s=r(4574),l=r(80154),c=r(1801),h=r(39759),u=r(18598),d=r(52274),p=r(92049),f=r(53533),g=r(99912),y=r(89610),m=r(23149),x=r(88496),b=r(15647),k=r(53098),w=Function.prototype,C=Object.prototype,_=w.toString,v=C.hasOwnProperty,S=_.call(Object);const T=function(t){if(!(0,k.A)(t)||"[object Object]"!=(0,x.A)(t))return!1;var e=(0,b.A)(t);if(null===e)return!0;var r=v.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&_.call(r)==S};var A=r(33858);const M=function(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]};var B=r(22031),L=r(55615);const F=function(t){return(0,B.A)(t,(0,L.A)(t))};const $=function(t,e,r,i,n,a,s){var x=M(t,r),b=M(e,r),k=s.get(b);if(k)o(t,r,k);else{var w=a?a(x,b,r+"",t,e,s):void 0,C=void 0===w;if(C){var _=(0,p.A)(b),v=!_&&(0,g.A)(b),S=!_&&!v&&(0,A.A)(b);w=b,_||v||S?(0,p.A)(x)?w=x:(0,f.A)(x)?w=(0,h.A)(x):v?(C=!1,w=(0,l.A)(b,!0)):S?(C=!1,w=(0,c.A)(b,!0)):w=[]:T(b)||(0,d.A)(b)?(w=x,(0,d.A)(x)?w=F(x):(0,m.A)(x)&&!(0,y.A)(x)||(w=(0,u.A)(b))):C=!1}C&&(s.set(b,w),n(w,b,i,a,s),s.delete(b)),o(t,r,w)}};const E=function t(e,r,n,a,l){e!==r&&(0,s.A)(r,(function(s,c){if(l||(l=new i.A),(0,m.A)(s))$(e,r,c,n,t,a,l);else{var h=a?a(M(e,c),s,c+"",e,r,l):void 0;void 0===h&&(h=s),o(e,c,h)}}),L.A)};const D=(0,r(3767).A)((function(t,e,r){E(t,e,r)}))},98621:(t,e,r)=>{"use strict";r.d(e,{n:()=>i});var i={name:"mermaid",version:"11.12.1",description:"Markdown-ish syntax for generating flowcharts, mindmaps, sequence diagrams, class diagrams, gantt charts, git graphs and more.",type:"module",module:"./dist/mermaid.core.mjs",types:"./dist/mermaid.d.ts",exports:{".":{types:"./dist/mermaid.d.ts",import:"./dist/mermaid.core.mjs",default:"./dist/mermaid.core.mjs"},"./*":"./*"},keywords:["diagram","markdown","flowchart","sequence diagram","gantt","class diagram","git graph","mindmap","packet diagram","c4 diagram","er diagram","pie chart","pie diagram","quadrant chart","requirement diagram","graph"],scripts:{clean:"rimraf dist",dev:"pnpm -w dev","docs:code":"typedoc src/defaultConfig.ts src/config.ts src/mermaid.ts && prettier --write ./src/docs/config/setup","docs:build":"rimraf ../../docs && pnpm docs:code && pnpm docs:spellcheck && tsx scripts/docs.cli.mts","docs:verify":"pnpm docs:code && pnpm docs:spellcheck && tsx scripts/docs.cli.mts --verify","docs:pre:vitepress":"pnpm --filter ./src/docs prefetch && rimraf src/vitepress && pnpm docs:code && tsx scripts/docs.cli.mts --vitepress && pnpm --filter ./src/vitepress install --no-frozen-lockfile --ignore-scripts","docs:build:vitepress":"pnpm docs:pre:vitepress && (cd src/vitepress && pnpm run build) && cpy --flat src/docs/landing/ ./src/vitepress/.vitepress/dist/landing","docs:dev":'pnpm docs:pre:vitepress && concurrently "pnpm --filter ./src/vitepress dev" "tsx scripts/docs.cli.mts --watch --vitepress"',"docs:dev:docker":'pnpm docs:pre:vitepress && concurrently "pnpm --filter ./src/vitepress dev:docker" "tsx scripts/docs.cli.mts --watch --vitepress"',"docs:serve":"pnpm docs:build:vitepress && vitepress serve src/vitepress","docs:spellcheck":'cspell "src/docs/**/*.md"',"docs:release-version":"tsx scripts/update-release-version.mts","docs:verify-version":"tsx scripts/update-release-version.mts --verify","types:build-config":"tsx scripts/create-types-from-json-schema.mts","types:verify-config":"tsx scripts/create-types-from-json-schema.mts --verify",checkCircle:"npx madge --circular ./src",prepublishOnly:"pnpm docs:verify-version"},repository:{type:"git",url:"https://github.com/mermaid-js/mermaid"},author:"Knut Sveidqvist",license:"MIT",standard:{ignore:["**/parser/*.js","dist/**/*.js","cypress/**/*.js"],globals:["page"]},dependencies:{"@braintree/sanitize-url":"^7.1.1","@iconify/utils":"^3.0.1","@mermaid-js/parser":"workspace:^","@types/d3":"^7.4.3",cytoscape:"^3.29.3","cytoscape-cose-bilkent":"^4.1.0","cytoscape-fcose":"^2.2.0",d3:"^7.9.0","d3-sankey":"^0.12.3","dagre-d3-es":"7.0.13",dayjs:"^1.11.18",dompurify:"^3.2.5",katex:"^0.16.22",khroma:"^2.1.0","lodash-es":"^4.17.21",marked:"^16.2.1",roughjs:"^4.6.6",stylis:"^4.3.6","ts-dedent":"^2.2.0",uuid:"^11.1.0"},devDependencies:{"@adobe/jsonschema2md":"^8.0.5","@iconify/types":"^2.0.0","@types/cytoscape":"^3.21.9","@types/cytoscape-fcose":"^2.2.4","@types/d3-sankey":"^0.12.4","@types/d3-scale":"^4.0.9","@types/d3-scale-chromatic":"^3.1.0","@types/d3-selection":"^3.0.11","@types/d3-shape":"^3.1.7","@types/jsdom":"^21.1.7","@types/katex":"^0.16.7","@types/lodash-es":"^4.17.12","@types/micromatch":"^4.0.9","@types/stylis":"^4.2.7","@types/uuid":"^10.0.0",ajv:"^8.17.1",canvas:"^3.1.2",chokidar:"3.6.0",concurrently:"^9.1.2","csstree-validator":"^4.0.1",globby:"^14.1.0",jison:"^0.4.18","js-base64":"^3.7.8",jsdom:"^26.1.0","json-schema-to-typescript":"^15.0.4",micromatch:"^4.0.8","path-browserify":"^1.0.1",prettier:"^3.5.3",remark:"^15.0.1","remark-frontmatter":"^5.0.0","remark-gfm":"^4.0.1",rimraf:"^6.0.1","start-server-and-test":"^2.0.13","type-fest":"^4.35.0",typedoc:"^0.28.12","typedoc-plugin-markdown":"^4.8.1",typescript:"~5.7.3","unist-util-flatmap":"^1.0.0","unist-util-visit":"^5.0.0",vitepress:"^1.6.4","vitepress-plugin-search":"1.0.4-alpha.22"},files:["dist/","README.md"],publishConfig:{access:"public"}}},67633:(t,e,r)=>{"use strict";r.d(e,{C0:()=>x,xA:()=>nt,hH:()=>S,Dl:()=>Dt,IU:()=>Zt,Wt:()=>Ut,Y2:()=>Kt,a$:()=>zt,sb:()=>U,ME:()=>le,UI:()=>j,Ch:()=>k,mW:()=>b,DB:()=>y,_3:()=>vt,EJ:()=>g,m7:()=>ee,iN:()=>Jt,zj:()=>rt,D7:()=>oe,Gs:()=>fe,J$:()=>_,ab:()=>ie,Q2:()=>tt,P$:()=>D,ID:()=>_t,TM:()=>ht,Wi:()=>Et,H1:()=>ut,QO:()=>At,Js:()=>pe,Xd:()=>w,dj:()=>Rt,cL:()=>at,$i:()=>W,jZ:()=>mt,oB:()=>ce,wZ:()=>Q,EI:()=>te,SV:()=>Qt,Nk:()=>et,XV:()=>se,ke:()=>re,UU:()=>Z,ot:()=>Pt,mj:()=>he,tM:()=>Ht,H$:()=>I,B6:()=>J});var i=r(40797),n=r(74886),a=r(8232);const o=(t,e)=>{const r=n.A.parse(t),i={};for(const n in e)e[n]&&(i[n]=r[n]+e[n]);return(0,a.A)(t,i)};var s=r(25582);const l=(t,e,r=50)=>{const{r:i,g:a,b:o,a:l}=n.A.parse(t),{r:c,g:h,b:u,a:d}=n.A.parse(e),p=r/100,f=2*p-1,g=l-d,y=((f*g==-1?f:(f+g)/(1+f*g))+1)/2,m=1-y,x=i*y+c*m,b=a*y+h*m,k=o*y+u*m,w=l*p+d*(1-p);return(0,s.A)(x,b,k,w)},c=(t,e=100)=>{const r=n.A.parse(t);return r.r=255-r.r,r.g=255-r.g,r.b=255-r.b,l(r,t,e)};var h,u=r(75263),d=r(78041),p=r(3219),f=r(99418),g=/^-{3}\s*[\n\r](.*?)[\n\r]-{3}\s*[\n\r]+/s,y=/%{2}{\s*(?:(\w+)\s*:|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,m=/\s*%%.*\n/gm,x=class extends Error{static{(0,i.K2)(this,"UnknownDiagramError")}constructor(t){super(t),this.name="UnknownDiagramError"}},b={},k=(0,i.K2)((function(t,e){t=t.replace(g,"").replace(y,"").replace(m,"\n");for(const[r,{detector:i}]of Object.entries(b)){if(i(t,e))return r}throw new x(`No diagram type detected matching given configuration for text: ${t}`)}),"detectType"),w=(0,i.K2)(((...t)=>{for(const{id:e,detector:r,loader:i}of t)C(e,r,i)}),"registerLazyLoadedDiagrams"),C=(0,i.K2)(((t,e,r)=>{b[t]&&i.Rm.warn(`Detector with key ${t} already exists. Overwriting.`),b[t]={detector:e,loader:r},i.Rm.debug(`Detector with key ${t} added${r?" with loader":""}`)}),"addDetector"),_=(0,i.K2)((t=>b[t].loader),"getDiagramLoader"),v=(0,i.K2)(((t,e,{depth:r=2,clobber:i=!1}={})=>{const n={depth:r,clobber:i};return Array.isArray(e)&&!Array.isArray(t)?(e.forEach((e=>v(t,e,n))),t):Array.isArray(e)&&Array.isArray(t)?(e.forEach((e=>{t.includes(e)||t.push(e)})),t):void 0===t||r<=0?null!=t&&"object"==typeof t&&"object"==typeof e?Object.assign(t,e):e:(void 0!==e&&"object"==typeof t&&"object"==typeof e&&Object.keys(e).forEach((n=>{"object"!=typeof e[n]||void 0!==t[n]&&"object"!=typeof t[n]?(i||"object"!=typeof t[n]&&"object"!=typeof e[n])&&(t[n]=e[n]):(void 0===t[n]&&(t[n]=Array.isArray(e[n])?[]:{}),t[n]=v(t[n],e[n],{depth:r-1,clobber:i}))})),t)}),"assignWithDepth"),S=v,T="#ffffff",A="#f2f2f2",M=(0,i.K2)(((t,e)=>o(t,e?{s:-40,l:10}:{s:-40,l:-10})),"mkBorder"),B=class{static{(0,i.K2)(this,"Theme")}constructor(){this.background="#f4f4f4",this.primaryColor="#fff4dd",this.noteBkgColor="#fff5ad",this.noteTextColor="#333",this.THEME_COLOR_LIMIT=12,this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px"}updateColors(){if(this.primaryTextColor=this.primaryTextColor||(this.darkMode?"#eee":"#333"),this.secondaryColor=this.secondaryColor||o(this.primaryColor,{h:-120}),this.tertiaryColor=this.tertiaryColor||o(this.primaryColor,{h:180,l:5}),this.primaryBorderColor=this.primaryBorderColor||M(this.primaryColor,this.darkMode),this.secondaryBorderColor=this.secondaryBorderColor||M(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=this.tertiaryBorderColor||M(this.tertiaryColor,this.darkMode),this.noteBorderColor=this.noteBorderColor||M(this.noteBkgColor,this.darkMode),this.noteBkgColor=this.noteBkgColor||"#fff5ad",this.noteTextColor=this.noteTextColor||"#333",this.secondaryTextColor=this.secondaryTextColor||c(this.secondaryColor),this.tertiaryTextColor=this.tertiaryTextColor||c(this.tertiaryColor),this.lineColor=this.lineColor||c(this.background),this.arrowheadColor=this.arrowheadColor||c(this.background),this.textColor=this.textColor||this.primaryTextColor,this.border2=this.border2||this.tertiaryBorderColor,this.nodeBkg=this.nodeBkg||this.primaryColor,this.mainBkg=this.mainBkg||this.primaryColor,this.nodeBorder=this.nodeBorder||this.primaryBorderColor,this.clusterBkg=this.clusterBkg||this.tertiaryColor,this.clusterBorder=this.clusterBorder||this.tertiaryBorderColor,this.defaultLinkColor=this.defaultLinkColor||this.lineColor,this.titleColor=this.titleColor||this.tertiaryTextColor,this.edgeLabelBackground=this.edgeLabelBackground||(this.darkMode?(0,u.A)(this.secondaryColor,30):this.secondaryColor),this.nodeTextColor=this.nodeTextColor||this.primaryTextColor,this.actorBorder=this.actorBorder||this.primaryBorderColor,this.actorBkg=this.actorBkg||this.mainBkg,this.actorTextColor=this.actorTextColor||this.primaryTextColor,this.actorLineColor=this.actorLineColor||this.actorBorder,this.labelBoxBkgColor=this.labelBoxBkgColor||this.actorBkg,this.signalColor=this.signalColor||this.textColor,this.signalTextColor=this.signalTextColor||this.textColor,this.labelBoxBorderColor=this.labelBoxBorderColor||this.actorBorder,this.labelTextColor=this.labelTextColor||this.actorTextColor,this.loopTextColor=this.loopTextColor||this.actorTextColor,this.activationBorderColor=this.activationBorderColor||(0,u.A)(this.secondaryColor,10),this.activationBkgColor=this.activationBkgColor||this.secondaryColor,this.sequenceNumberColor=this.sequenceNumberColor||c(this.lineColor),this.sectionBkgColor=this.sectionBkgColor||this.tertiaryColor,this.altSectionBkgColor=this.altSectionBkgColor||"white",this.sectionBkgColor=this.sectionBkgColor||this.secondaryColor,this.sectionBkgColor2=this.sectionBkgColor2||this.primaryColor,this.excludeBkgColor=this.excludeBkgColor||"#eeeeee",this.taskBorderColor=this.taskBorderColor||this.primaryBorderColor,this.taskBkgColor=this.taskBkgColor||this.primaryColor,this.activeTaskBorderColor=this.activeTaskBorderColor||this.primaryColor,this.activeTaskBkgColor=this.activeTaskBkgColor||(0,d.A)(this.primaryColor,23),this.gridColor=this.gridColor||"lightgrey",this.doneTaskBkgColor=this.doneTaskBkgColor||"lightgrey",this.doneTaskBorderColor=this.doneTaskBorderColor||"grey",this.critBorderColor=this.critBorderColor||"#ff8888",this.critBkgColor=this.critBkgColor||"red",this.todayLineColor=this.todayLineColor||"red",this.vertLineColor=this.vertLineColor||"navy",this.taskTextColor=this.taskTextColor||this.textColor,this.taskTextOutsideColor=this.taskTextOutsideColor||this.textColor,this.taskTextLightColor=this.taskTextLightColor||this.textColor,this.taskTextColor=this.taskTextColor||this.primaryTextColor,this.taskTextDarkColor=this.taskTextDarkColor||this.textColor,this.taskTextClickableColor=this.taskTextClickableColor||"#003163",this.personBorder=this.personBorder||this.primaryBorderColor,this.personBkg=this.personBkg||this.mainBkg,this.darkMode?(this.rowOdd=this.rowOdd||(0,u.A)(this.mainBkg,5)||"#ffffff",this.rowEven=this.rowEven||(0,u.A)(this.mainBkg,10)):(this.rowOdd=this.rowOdd||(0,d.A)(this.mainBkg,75)||"#ffffff",this.rowEven=this.rowEven||(0,d.A)(this.mainBkg,5)),this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||this.tertiaryColor,this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.nodeBorder,this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.transitionColor=this.transitionColor||this.lineColor,this.specialStateColor=this.lineColor,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||o(this.primaryColor,{h:30}),this.cScale4=this.cScale4||o(this.primaryColor,{h:60}),this.cScale5=this.cScale5||o(this.primaryColor,{h:90}),this.cScale6=this.cScale6||o(this.primaryColor,{h:120}),this.cScale7=this.cScale7||o(this.primaryColor,{h:150}),this.cScale8=this.cScale8||o(this.primaryColor,{h:210,l:150}),this.cScale9=this.cScale9||o(this.primaryColor,{h:270}),this.cScale10=this.cScale10||o(this.primaryColor,{h:300}),this.cScale11=this.cScale11||o(this.primaryColor,{h:330}),this.darkMode)for(let e=0;e{this[e]=t[e]})),this.updateColors(),e.forEach((e=>{this[e]=t[e]}))}},L=(0,i.K2)((t=>{const e=new B;return e.calculate(t),e}),"getThemeVariables"),F=class{static{(0,i.K2)(this,"Theme")}constructor(){this.background="#333",this.primaryColor="#1f2020",this.secondaryColor=(0,d.A)(this.primaryColor,16),this.tertiaryColor=o(this.primaryColor,{h:-160}),this.primaryBorderColor=c(this.background),this.secondaryBorderColor=M(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=M(this.tertiaryColor,this.darkMode),this.primaryTextColor=c(this.primaryColor),this.secondaryTextColor=c(this.secondaryColor),this.tertiaryTextColor=c(this.tertiaryColor),this.lineColor=c(this.background),this.textColor=c(this.background),this.mainBkg="#1f2020",this.secondBkg="calculated",this.mainContrastColor="lightgrey",this.darkTextColor=(0,d.A)(c("#323D47"),10),this.lineColor="calculated",this.border1="#ccc",this.border2=(0,s.A)(255,255,255,.25),this.arrowheadColor="calculated",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.labelBackground="#181818",this.textColor="#ccc",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="#F9FFFE",this.edgeLabelBackground="calculated",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="calculated",this.actorLineColor="calculated",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="calculated",this.activationBkgColor="calculated",this.sequenceNumberColor="black",this.sectionBkgColor=(0,u.A)("#EAE8D9",30),this.altSectionBkgColor="calculated",this.sectionBkgColor2="#EAE8D9",this.excludeBkgColor=(0,u.A)(this.sectionBkgColor,10),this.taskBorderColor=(0,s.A)(255,255,255,70),this.taskBkgColor="calculated",this.taskTextColor="calculated",this.taskTextLightColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor=(0,s.A)(255,255,255,50),this.activeTaskBkgColor="#81B1DB",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="grey",this.critBorderColor="#E83737",this.critBkgColor="#E83737",this.taskTextDarkColor="calculated",this.todayLineColor="#DB5757",this.vertLineColor="#00BFFF",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.rowOdd=this.rowOdd||(0,d.A)(this.mainBkg,5)||"#ffffff",this.rowEven=this.rowEven||(0,u.A)(this.mainBkg,10),this.labelColor="calculated",this.errorBkgColor="#a44141",this.errorTextColor="#ddd"}updateColors(){this.secondBkg=(0,d.A)(this.mainBkg,16),this.lineColor=this.mainContrastColor,this.arrowheadColor=this.mainContrastColor,this.nodeBkg=this.mainBkg,this.nodeBorder=this.border1,this.clusterBkg=this.secondBkg,this.clusterBorder=this.border2,this.defaultLinkColor=this.lineColor,this.edgeLabelBackground=(0,d.A)(this.labelBackground,25),this.actorBorder=this.border1,this.actorBkg=this.mainBkg,this.actorTextColor=this.mainContrastColor,this.actorLineColor=this.actorBorder,this.signalColor=this.mainContrastColor,this.signalTextColor=this.mainContrastColor,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.mainContrastColor,this.loopTextColor=this.mainContrastColor,this.noteBorderColor=this.secondaryBorderColor,this.noteBkgColor=this.secondBkg,this.noteTextColor=this.secondaryTextColor,this.activationBorderColor=this.border1,this.activationBkgColor=this.secondBkg,this.altSectionBkgColor=this.background,this.taskBkgColor=(0,d.A)(this.mainBkg,23),this.taskTextColor=this.darkTextColor,this.taskTextLightColor=this.mainContrastColor,this.taskTextOutsideColor=this.taskTextLightColor,this.gridColor=this.mainContrastColor,this.doneTaskBkgColor=this.mainContrastColor,this.taskTextDarkColor=this.darkTextColor,this.archEdgeColor=this.lineColor,this.archEdgeArrowColor=this.lineColor,this.transitionColor=this.transitionColor||this.lineColor,this.transitionLabelColor=this.transitionLabelColor||this.textColor,this.stateLabelColor=this.stateLabelColor||this.stateBkg||this.primaryTextColor,this.stateBkg=this.stateBkg||this.mainBkg,this.labelBackgroundColor=this.labelBackgroundColor||this.stateBkg,this.compositeBackground=this.compositeBackground||this.background||this.tertiaryColor,this.altBackground=this.altBackground||"#555",this.compositeTitleBackground=this.compositeTitleBackground||this.mainBkg,this.compositeBorder=this.compositeBorder||this.nodeBorder,this.innerEndBackground=this.primaryBorderColor,this.specialStateColor="#f4f4f4",this.errorBkgColor=this.errorBkgColor||this.tertiaryColor,this.errorTextColor=this.errorTextColor||this.tertiaryTextColor,this.fillType0=this.primaryColor,this.fillType1=this.secondaryColor,this.fillType2=o(this.primaryColor,{h:64}),this.fillType3=o(this.secondaryColor,{h:64}),this.fillType4=o(this.primaryColor,{h:-64}),this.fillType5=o(this.secondaryColor,{h:-64}),this.fillType6=o(this.primaryColor,{h:128}),this.fillType7=o(this.secondaryColor,{h:128}),this.cScale1=this.cScale1||"#0b0000",this.cScale2=this.cScale2||"#4d1037",this.cScale3=this.cScale3||"#3f5258",this.cScale4=this.cScale4||"#4f2f1b",this.cScale5=this.cScale5||"#6e0a0a",this.cScale6=this.cScale6||"#3b0048",this.cScale7=this.cScale7||"#995a01",this.cScale8=this.cScale8||"#154706",this.cScale9=this.cScale9||"#161722",this.cScale10=this.cScale10||"#00296f",this.cScale11=this.cScale11||"#01629c",this.cScale12=this.cScale12||"#010029",this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||o(this.primaryColor,{h:30}),this.cScale4=this.cScale4||o(this.primaryColor,{h:60}),this.cScale5=this.cScale5||o(this.primaryColor,{h:90}),this.cScale6=this.cScale6||o(this.primaryColor,{h:120}),this.cScale7=this.cScale7||o(this.primaryColor,{h:150}),this.cScale8=this.cScale8||o(this.primaryColor,{h:210}),this.cScale9=this.cScale9||o(this.primaryColor,{h:270}),this.cScale10=this.cScale10||o(this.primaryColor,{h:300}),this.cScale11=this.cScale11||o(this.primaryColor,{h:330});for(let t=0;t{this[e]=t[e]})),this.updateColors(),e.forEach((e=>{this[e]=t[e]}))}},$=(0,i.K2)((t=>{const e=new F;return e.calculate(t),e}),"getThemeVariables"),E=class{static{(0,i.K2)(this,"Theme")}constructor(){this.background="#f4f4f4",this.primaryColor="#ECECFF",this.secondaryColor=o(this.primaryColor,{h:120}),this.secondaryColor="#ffffde",this.tertiaryColor=o(this.primaryColor,{h:-160}),this.primaryBorderColor=M(this.primaryColor,this.darkMode),this.secondaryBorderColor=M(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=M(this.tertiaryColor,this.darkMode),this.primaryTextColor=c(this.primaryColor),this.secondaryTextColor=c(this.secondaryColor),this.tertiaryTextColor=c(this.tertiaryColor),this.lineColor=c(this.background),this.textColor=c(this.background),this.background="white",this.mainBkg="#ECECFF",this.secondBkg="#ffffde",this.lineColor="#333333",this.border1="#9370DB",this.border2="#aaaa33",this.arrowheadColor="#333333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.labelBackground="rgba(232,232,232, 0.8)",this.textColor="#333",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="calculated",this.edgeLabelBackground="calculated",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="black",this.actorLineColor="calculated",this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="calculated",this.altSectionBkgColor="calculated",this.sectionBkgColor2="calculated",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="calculated",this.taskTextLightColor="calculated",this.taskTextColor=this.taskTextLightColor,this.taskTextDarkColor="calculated",this.taskTextOutsideColor=this.taskTextDarkColor,this.taskTextClickableColor="calculated",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="calculated",this.critBorderColor="calculated",this.critBkgColor="calculated",this.todayLineColor="calculated",this.vertLineColor="calculated",this.sectionBkgColor=(0,s.A)(102,102,255,.49),this.altSectionBkgColor="white",this.sectionBkgColor2="#fff400",this.taskBorderColor="#534fbc",this.taskBkgColor="#8a90dd",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="black",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="#534fbc",this.activeTaskBkgColor="#bfc7ff",this.gridColor="lightgrey",this.doneTaskBkgColor="lightgrey",this.doneTaskBorderColor="grey",this.critBorderColor="#ff8888",this.critBkgColor="red",this.todayLineColor="red",this.vertLineColor="navy",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.rowOdd="calculated",this.rowEven="calculated",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222",this.updateColors()}updateColors(){this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||o(this.primaryColor,{h:30}),this.cScale4=this.cScale4||o(this.primaryColor,{h:60}),this.cScale5=this.cScale5||o(this.primaryColor,{h:90}),this.cScale6=this.cScale6||o(this.primaryColor,{h:120}),this.cScale7=this.cScale7||o(this.primaryColor,{h:150}),this.cScale8=this.cScale8||o(this.primaryColor,{h:210}),this.cScale9=this.cScale9||o(this.primaryColor,{h:270}),this.cScale10=this.cScale10||o(this.primaryColor,{h:300}),this.cScale11=this.cScale11||o(this.primaryColor,{h:330}),this.cScalePeer1=this.cScalePeer1||(0,u.A)(this.secondaryColor,45),this.cScalePeer2=this.cScalePeer2||(0,u.A)(this.tertiaryColor,40);for(let t=0;t{"calculated"===this[t]&&(this[t]=void 0)})),"object"!=typeof t)return void this.updateColors();const e=Object.keys(t);e.forEach((e=>{this[e]=t[e]})),this.updateColors(),e.forEach((e=>{this[e]=t[e]}))}},D=(0,i.K2)((t=>{const e=new E;return e.calculate(t),e}),"getThemeVariables"),O=class{static{(0,i.K2)(this,"Theme")}constructor(){this.background="#f4f4f4",this.primaryColor="#cde498",this.secondaryColor="#cdffb2",this.background="white",this.mainBkg="#cde498",this.secondBkg="#cdffb2",this.lineColor="green",this.border1="#13540c",this.border2="#6eaa49",this.arrowheadColor="green",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.tertiaryColor=(0,d.A)("#cde498",10),this.primaryBorderColor=M(this.primaryColor,this.darkMode),this.secondaryBorderColor=M(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=M(this.tertiaryColor,this.darkMode),this.primaryTextColor=c(this.primaryColor),this.secondaryTextColor=c(this.secondaryColor),this.tertiaryTextColor=c(this.primaryColor),this.lineColor=c(this.background),this.textColor=c(this.background),this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="#333",this.edgeLabelBackground="#e8e8e8",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="black",this.actorLineColor="calculated",this.signalColor="#333",this.signalTextColor="#333",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="#326932",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="#fff5ad",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="#6eaa49",this.altSectionBkgColor="white",this.sectionBkgColor2="#6eaa49",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="#487e3a",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="black",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="lightgrey",this.doneTaskBkgColor="lightgrey",this.doneTaskBorderColor="grey",this.critBorderColor="#ff8888",this.critBkgColor="red",this.todayLineColor="red",this.vertLineColor="#00BFFF",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222"}updateColors(){this.actorBorder=(0,u.A)(this.mainBkg,20),this.actorBkg=this.mainBkg,this.labelBoxBkgColor=this.actorBkg,this.labelTextColor=this.actorTextColor,this.loopTextColor=this.actorTextColor,this.noteBorderColor=this.border2,this.noteTextColor=this.actorTextColor,this.actorLineColor=this.actorBorder,this.cScale0=this.cScale0||this.primaryColor,this.cScale1=this.cScale1||this.secondaryColor,this.cScale2=this.cScale2||this.tertiaryColor,this.cScale3=this.cScale3||o(this.primaryColor,{h:30}),this.cScale4=this.cScale4||o(this.primaryColor,{h:60}),this.cScale5=this.cScale5||o(this.primaryColor,{h:90}),this.cScale6=this.cScale6||o(this.primaryColor,{h:120}),this.cScale7=this.cScale7||o(this.primaryColor,{h:150}),this.cScale8=this.cScale8||o(this.primaryColor,{h:210}),this.cScale9=this.cScale9||o(this.primaryColor,{h:270}),this.cScale10=this.cScale10||o(this.primaryColor,{h:300}),this.cScale11=this.cScale11||o(this.primaryColor,{h:330}),this.cScalePeer1=this.cScalePeer1||(0,u.A)(this.secondaryColor,45),this.cScalePeer2=this.cScalePeer2||(0,u.A)(this.tertiaryColor,40);for(let t=0;t{this[e]=t[e]})),this.updateColors(),e.forEach((e=>{this[e]=t[e]}))}},R=(0,i.K2)((t=>{const e=new O;return e.calculate(t),e}),"getThemeVariables"),K=class{static{(0,i.K2)(this,"Theme")}constructor(){this.primaryColor="#eee",this.contrast="#707070",this.secondaryColor=(0,d.A)(this.contrast,55),this.background="#ffffff",this.tertiaryColor=o(this.primaryColor,{h:-160}),this.primaryBorderColor=M(this.primaryColor,this.darkMode),this.secondaryBorderColor=M(this.secondaryColor,this.darkMode),this.tertiaryBorderColor=M(this.tertiaryColor,this.darkMode),this.primaryTextColor=c(this.primaryColor),this.secondaryTextColor=c(this.secondaryColor),this.tertiaryTextColor=c(this.tertiaryColor),this.lineColor=c(this.background),this.textColor=c(this.background),this.mainBkg="#eee",this.secondBkg="calculated",this.lineColor="#666",this.border1="#999",this.border2="calculated",this.note="#ffa",this.text="#333",this.critical="#d42",this.done="#bbb",this.arrowheadColor="#333333",this.fontFamily='"trebuchet ms", verdana, arial, sans-serif',this.fontSize="16px",this.THEME_COLOR_LIMIT=12,this.nodeBkg="calculated",this.nodeBorder="calculated",this.clusterBkg="calculated",this.clusterBorder="calculated",this.defaultLinkColor="calculated",this.titleColor="calculated",this.edgeLabelBackground="white",this.actorBorder="calculated",this.actorBkg="calculated",this.actorTextColor="calculated",this.actorLineColor=this.actorBorder,this.signalColor="calculated",this.signalTextColor="calculated",this.labelBoxBkgColor="calculated",this.labelBoxBorderColor="calculated",this.labelTextColor="calculated",this.loopTextColor="calculated",this.noteBorderColor="calculated",this.noteBkgColor="calculated",this.noteTextColor="calculated",this.activationBorderColor="#666",this.activationBkgColor="#f4f4f4",this.sequenceNumberColor="white",this.sectionBkgColor="calculated",this.altSectionBkgColor="white",this.sectionBkgColor2="calculated",this.excludeBkgColor="#eeeeee",this.taskBorderColor="calculated",this.taskBkgColor="calculated",this.taskTextLightColor="white",this.taskTextColor="calculated",this.taskTextDarkColor="calculated",this.taskTextOutsideColor="calculated",this.taskTextClickableColor="#003163",this.activeTaskBorderColor="calculated",this.activeTaskBkgColor="calculated",this.gridColor="calculated",this.doneTaskBkgColor="calculated",this.doneTaskBorderColor="calculated",this.critBkgColor="calculated",this.critBorderColor="calculated",this.todayLineColor="calculated",this.vertLineColor="calculated",this.personBorder=this.primaryBorderColor,this.personBkg=this.mainBkg,this.archEdgeColor="calculated",this.archEdgeArrowColor="calculated",this.archEdgeWidth="3",this.archGroupBorderColor=this.primaryBorderColor,this.archGroupBorderWidth="2px",this.rowOdd=this.rowOdd||(0,d.A)(this.mainBkg,75)||"#ffffff",this.rowEven=this.rowEven||"#f4f4f4",this.labelColor="black",this.errorBkgColor="#552222",this.errorTextColor="#552222"}updateColors(){this.secondBkg=(0,d.A)(this.contrast,55),this.border2=this.contrast,this.actorBorder=(0,d.A)(this.border1,23),this.actorBkg=this.mainBkg,this.actorTextColor=this.text,this.actorLineColor=this.actorBorder,this.signalColor=this.text,this.signalTextColor=this.text,this.labelBoxBkgColor=this.actorBkg,this.labelBoxBorderColor=this.actorBorder,this.labelTextColor=this.text,this.loopTextColor=this.text,this.noteBorderColor="#999",this.noteBkgColor="#666",this.noteTextColor="#fff",this.cScale0=this.cScale0||"#555",this.cScale1=this.cScale1||"#F4F4F4",this.cScale2=this.cScale2||"#555",this.cScale3=this.cScale3||"#BBB",this.cScale4=this.cScale4||"#777",this.cScale5=this.cScale5||"#999",this.cScale6=this.cScale6||"#DDD",this.cScale7=this.cScale7||"#FFF",this.cScale8=this.cScale8||"#DDD",this.cScale9=this.cScale9||"#BBB",this.cScale10=this.cScale10||"#999",this.cScale11=this.cScale11||"#777";for(let t=0;t{this[e]=t[e]})),this.updateColors(),e.forEach((e=>{this[e]=t[e]}))}},I={base:{getThemeVariables:L},dark:{getThemeVariables:$},default:{getThemeVariables:D},forest:{getThemeVariables:R},neutral:{getThemeVariables:(0,i.K2)((t=>{const e=new K;return e.calculate(t),e}),"getThemeVariables")}},N={flowchart:{useMaxWidth:!0,titleTopMargin:25,subGraphTitleMargin:{top:0,bottom:0},diagramPadding:8,htmlLabels:!0,nodeSpacing:50,rankSpacing:50,curve:"basis",padding:15,defaultRenderer:"dagre-wrapper",wrappingWidth:200,inheritDir:!1},sequence:{useMaxWidth:!0,hideUnusedParticipants:!1,activationWidth:10,diagramMarginX:50,diagramMarginY:10,actorMargin:50,width:150,height:65,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",mirrorActors:!0,forceMenus:!1,bottomMarginAdj:1,rightAngles:!1,showSequenceNumbers:!1,actorFontSize:14,actorFontFamily:'"Open Sans", sans-serif',actorFontWeight:400,noteFontSize:14,noteFontFamily:'"trebuchet ms", verdana, arial, sans-serif',noteFontWeight:400,noteAlign:"center",messageFontSize:16,messageFontFamily:'"trebuchet ms", verdana, arial, sans-serif',messageFontWeight:400,wrap:!1,wrapPadding:10,labelBoxWidth:50,labelBoxHeight:20},gantt:{useMaxWidth:!0,titleTopMargin:25,barHeight:20,barGap:4,topPadding:50,rightPadding:75,leftPadding:75,gridLineStartPadding:35,fontSize:11,sectionFontSize:11,numberSectionStyles:4,axisFormat:"%Y-%m-%d",topAxis:!1,displayMode:"",weekday:"sunday"},journey:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,leftMargin:150,maxLabelWidth:360,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,rightAngles:!1,taskFontSize:14,taskFontFamily:'"Open Sans", sans-serif',taskMargin:50,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"],titleColor:"",titleFontFamily:'"trebuchet ms", verdana, arial, sans-serif',titleFontSize:"4ex"},class:{useMaxWidth:!0,titleTopMargin:25,arrowMarkerAbsolute:!1,dividerMargin:10,padding:5,textHeight:10,defaultRenderer:"dagre-wrapper",htmlLabels:!1,hideEmptyMembersBox:!1},state:{useMaxWidth:!0,titleTopMargin:25,dividerMargin:10,sizeUnit:5,padding:8,textHeight:10,titleShift:-15,noteMargin:10,forkWidth:70,forkHeight:7,miniPadding:2,fontSizeFactor:5.02,fontSize:24,labelHeight:16,edgeLengthFactor:"20",compositTitleSize:35,radius:5,defaultRenderer:"dagre-wrapper"},er:{useMaxWidth:!0,titleTopMargin:25,diagramPadding:20,layoutDirection:"TB",minEntityWidth:100,minEntityHeight:75,entityPadding:15,nodeSpacing:140,rankSpacing:80,stroke:"gray",fill:"honeydew",fontSize:12},pie:{useMaxWidth:!0,textPosition:.75},quadrantChart:{useMaxWidth:!0,chartWidth:500,chartHeight:500,titleFontSize:20,titlePadding:10,quadrantPadding:5,xAxisLabelPadding:5,yAxisLabelPadding:5,xAxisLabelFontSize:16,yAxisLabelFontSize:16,quadrantLabelFontSize:16,quadrantTextTopPadding:5,pointTextPadding:5,pointLabelFontSize:12,pointRadius:5,xAxisPosition:"top",yAxisPosition:"left",quadrantInternalBorderStrokeWidth:1,quadrantExternalBorderStrokeWidth:2},xyChart:{useMaxWidth:!0,width:700,height:500,titleFontSize:20,titlePadding:10,showDataLabel:!1,showTitle:!0,xAxis:{$ref:"#/$defs/XYChartAxisConfig",showLabel:!0,labelFontSize:14,labelPadding:5,showTitle:!0,titleFontSize:16,titlePadding:5,showTick:!0,tickLength:5,tickWidth:2,showAxisLine:!0,axisLineWidth:2},yAxis:{$ref:"#/$defs/XYChartAxisConfig",showLabel:!0,labelFontSize:14,labelPadding:5,showTitle:!0,titleFontSize:16,titlePadding:5,showTick:!0,tickLength:5,tickWidth:2,showAxisLine:!0,axisLineWidth:2},chartOrientation:"vertical",plotReservedSpacePercent:50},requirement:{useMaxWidth:!0,rect_fill:"#f9f9f9",text_color:"#333",rect_border_size:"0.5px",rect_border_color:"#bbb",rect_min_width:200,rect_min_height:200,fontSize:14,rect_padding:10,line_height:20},mindmap:{useMaxWidth:!0,padding:10,maxNodeWidth:200,layoutAlgorithm:"cose-bilkent"},kanban:{useMaxWidth:!0,padding:8,sectionWidth:200,ticketBaseUrl:""},timeline:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,leftMargin:150,width:150,height:50,boxMargin:10,boxTextMargin:5,noteMargin:10,messageMargin:35,messageAlign:"center",bottomMarginAdj:1,rightAngles:!1,taskFontSize:14,taskFontFamily:'"Open Sans", sans-serif',taskMargin:50,activationWidth:10,textPlacement:"fo",actorColours:["#8FBC8F","#7CFC00","#00FFFF","#20B2AA","#B0E0E6","#FFFFE0"],sectionFills:["#191970","#8B008B","#4B0082","#2F4F4F","#800000","#8B4513","#00008B"],sectionColours:["#fff"],disableMulticolor:!1},gitGraph:{useMaxWidth:!0,titleTopMargin:25,diagramPadding:8,nodeLabel:{width:75,height:100,x:-25,y:0},mainBranchName:"main",mainBranchOrder:0,showCommitLabel:!0,showBranches:!0,rotateCommitLabel:!0,parallelCommits:!1,arrowMarkerAbsolute:!1},c4:{useMaxWidth:!0,diagramMarginX:50,diagramMarginY:10,c4ShapeMargin:50,c4ShapePadding:20,width:216,height:60,boxMargin:10,c4ShapeInRow:4,nextLinePaddingX:0,c4BoundaryInRow:2,personFontSize:14,personFontFamily:'"Open Sans", sans-serif',personFontWeight:"normal",external_personFontSize:14,external_personFontFamily:'"Open Sans", sans-serif',external_personFontWeight:"normal",systemFontSize:14,systemFontFamily:'"Open Sans", sans-serif',systemFontWeight:"normal",external_systemFontSize:14,external_systemFontFamily:'"Open Sans", sans-serif',external_systemFontWeight:"normal",system_dbFontSize:14,system_dbFontFamily:'"Open Sans", sans-serif',system_dbFontWeight:"normal",external_system_dbFontSize:14,external_system_dbFontFamily:'"Open Sans", sans-serif',external_system_dbFontWeight:"normal",system_queueFontSize:14,system_queueFontFamily:'"Open Sans", sans-serif',system_queueFontWeight:"normal",external_system_queueFontSize:14,external_system_queueFontFamily:'"Open Sans", sans-serif',external_system_queueFontWeight:"normal",boundaryFontSize:14,boundaryFontFamily:'"Open Sans", sans-serif',boundaryFontWeight:"normal",messageFontSize:12,messageFontFamily:'"Open Sans", sans-serif',messageFontWeight:"normal",containerFontSize:14,containerFontFamily:'"Open Sans", sans-serif',containerFontWeight:"normal",external_containerFontSize:14,external_containerFontFamily:'"Open Sans", sans-serif',external_containerFontWeight:"normal",container_dbFontSize:14,container_dbFontFamily:'"Open Sans", sans-serif',container_dbFontWeight:"normal",external_container_dbFontSize:14,external_container_dbFontFamily:'"Open Sans", sans-serif',external_container_dbFontWeight:"normal",container_queueFontSize:14,container_queueFontFamily:'"Open Sans", sans-serif',container_queueFontWeight:"normal",external_container_queueFontSize:14,external_container_queueFontFamily:'"Open Sans", sans-serif',external_container_queueFontWeight:"normal",componentFontSize:14,componentFontFamily:'"Open Sans", sans-serif',componentFontWeight:"normal",external_componentFontSize:14,external_componentFontFamily:'"Open Sans", sans-serif',external_componentFontWeight:"normal",component_dbFontSize:14,component_dbFontFamily:'"Open Sans", sans-serif',component_dbFontWeight:"normal",external_component_dbFontSize:14,external_component_dbFontFamily:'"Open Sans", sans-serif',external_component_dbFontWeight:"normal",component_queueFontSize:14,component_queueFontFamily:'"Open Sans", sans-serif',component_queueFontWeight:"normal",external_component_queueFontSize:14,external_component_queueFontFamily:'"Open Sans", sans-serif',external_component_queueFontWeight:"normal",wrap:!0,wrapPadding:10,person_bg_color:"#08427B",person_border_color:"#073B6F",external_person_bg_color:"#686868",external_person_border_color:"#8A8A8A",system_bg_color:"#1168BD",system_border_color:"#3C7FC0",system_db_bg_color:"#1168BD",system_db_border_color:"#3C7FC0",system_queue_bg_color:"#1168BD",system_queue_border_color:"#3C7FC0",external_system_bg_color:"#999999",external_system_border_color:"#8A8A8A",external_system_db_bg_color:"#999999",external_system_db_border_color:"#8A8A8A",external_system_queue_bg_color:"#999999",external_system_queue_border_color:"#8A8A8A",container_bg_color:"#438DD5",container_border_color:"#3C7FC0",container_db_bg_color:"#438DD5",container_db_border_color:"#3C7FC0",container_queue_bg_color:"#438DD5",container_queue_border_color:"#3C7FC0",external_container_bg_color:"#B3B3B3",external_container_border_color:"#A6A6A6",external_container_db_bg_color:"#B3B3B3",external_container_db_border_color:"#A6A6A6",external_container_queue_bg_color:"#B3B3B3",external_container_queue_border_color:"#A6A6A6",component_bg_color:"#85BBF0",component_border_color:"#78A8D8",component_db_bg_color:"#85BBF0",component_db_border_color:"#78A8D8",component_queue_bg_color:"#85BBF0",component_queue_border_color:"#78A8D8",external_component_bg_color:"#CCCCCC",external_component_border_color:"#BFBFBF",external_component_db_bg_color:"#CCCCCC",external_component_db_border_color:"#BFBFBF",external_component_queue_bg_color:"#CCCCCC",external_component_queue_border_color:"#BFBFBF"},sankey:{useMaxWidth:!0,width:600,height:400,linkColor:"gradient",nodeAlignment:"justify",showValues:!0,prefix:"",suffix:""},block:{useMaxWidth:!0,padding:8},packet:{useMaxWidth:!0,rowHeight:32,bitWidth:32,bitsPerRow:32,showBits:!0,paddingX:5,paddingY:5},architecture:{useMaxWidth:!0,padding:40,iconSize:80,fontSize:16},radar:{useMaxWidth:!0,width:600,height:600,marginTop:50,marginRight:50,marginBottom:50,marginLeft:50,axisScaleFactor:1,axisLabelFactor:1.05,curveTension:.17},theme:"default",look:"classic",handDrawnSeed:0,layout:"dagre",maxTextSize:5e4,maxEdges:500,darkMode:!1,fontFamily:'"trebuchet ms", verdana, arial, sans-serif;',logLevel:5,securityLevel:"strict",startOnLoad:!0,arrowMarkerAbsolute:!1,secure:["secure","securityLevel","startOnLoad","maxTextSize","suppressErrorRendering","maxEdges"],legacyMathML:!1,forceLegacyMathML:!1,deterministicIds:!1,fontSize:16,markdownAutoWrap:!0,suppressErrorRendering:!1},z={...N,deterministicIDSeed:void 0,elk:{mergeEdges:!1,nodePlacementStrategy:"BRANDES_KOEPF",forceNodeModelOrder:!1,considerModelOrder:"NODES_AND_EDGES"},themeCSS:void 0,themeVariables:I.default.getThemeVariables(),sequence:{...N.sequence,messageFont:(0,i.K2)((function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}}),"messageFont"),noteFont:(0,i.K2)((function(){return{fontFamily:this.noteFontFamily,fontSize:this.noteFontSize,fontWeight:this.noteFontWeight}}),"noteFont"),actorFont:(0,i.K2)((function(){return{fontFamily:this.actorFontFamily,fontSize:this.actorFontSize,fontWeight:this.actorFontWeight}}),"actorFont")},class:{hideEmptyMembersBox:!1},gantt:{...N.gantt,tickInterval:void 0,useWidth:void 0},c4:{...N.c4,useWidth:void 0,personFont:(0,i.K2)((function(){return{fontFamily:this.personFontFamily,fontSize:this.personFontSize,fontWeight:this.personFontWeight}}),"personFont"),flowchart:{...N.flowchart,inheritDir:!1},external_personFont:(0,i.K2)((function(){return{fontFamily:this.external_personFontFamily,fontSize:this.external_personFontSize,fontWeight:this.external_personFontWeight}}),"external_personFont"),systemFont:(0,i.K2)((function(){return{fontFamily:this.systemFontFamily,fontSize:this.systemFontSize,fontWeight:this.systemFontWeight}}),"systemFont"),external_systemFont:(0,i.K2)((function(){return{fontFamily:this.external_systemFontFamily,fontSize:this.external_systemFontSize,fontWeight:this.external_systemFontWeight}}),"external_systemFont"),system_dbFont:(0,i.K2)((function(){return{fontFamily:this.system_dbFontFamily,fontSize:this.system_dbFontSize,fontWeight:this.system_dbFontWeight}}),"system_dbFont"),external_system_dbFont:(0,i.K2)((function(){return{fontFamily:this.external_system_dbFontFamily,fontSize:this.external_system_dbFontSize,fontWeight:this.external_system_dbFontWeight}}),"external_system_dbFont"),system_queueFont:(0,i.K2)((function(){return{fontFamily:this.system_queueFontFamily,fontSize:this.system_queueFontSize,fontWeight:this.system_queueFontWeight}}),"system_queueFont"),external_system_queueFont:(0,i.K2)((function(){return{fontFamily:this.external_system_queueFontFamily,fontSize:this.external_system_queueFontSize,fontWeight:this.external_system_queueFontWeight}}),"external_system_queueFont"),containerFont:(0,i.K2)((function(){return{fontFamily:this.containerFontFamily,fontSize:this.containerFontSize,fontWeight:this.containerFontWeight}}),"containerFont"),external_containerFont:(0,i.K2)((function(){return{fontFamily:this.external_containerFontFamily,fontSize:this.external_containerFontSize,fontWeight:this.external_containerFontWeight}}),"external_containerFont"),container_dbFont:(0,i.K2)((function(){return{fontFamily:this.container_dbFontFamily,fontSize:this.container_dbFontSize,fontWeight:this.container_dbFontWeight}}),"container_dbFont"),external_container_dbFont:(0,i.K2)((function(){return{fontFamily:this.external_container_dbFontFamily,fontSize:this.external_container_dbFontSize,fontWeight:this.external_container_dbFontWeight}}),"external_container_dbFont"),container_queueFont:(0,i.K2)((function(){return{fontFamily:this.container_queueFontFamily,fontSize:this.container_queueFontSize,fontWeight:this.container_queueFontWeight}}),"container_queueFont"),external_container_queueFont:(0,i.K2)((function(){return{fontFamily:this.external_container_queueFontFamily,fontSize:this.external_container_queueFontSize,fontWeight:this.external_container_queueFontWeight}}),"external_container_queueFont"),componentFont:(0,i.K2)((function(){return{fontFamily:this.componentFontFamily,fontSize:this.componentFontSize,fontWeight:this.componentFontWeight}}),"componentFont"),external_componentFont:(0,i.K2)((function(){return{fontFamily:this.external_componentFontFamily,fontSize:this.external_componentFontSize,fontWeight:this.external_componentFontWeight}}),"external_componentFont"),component_dbFont:(0,i.K2)((function(){return{fontFamily:this.component_dbFontFamily,fontSize:this.component_dbFontSize,fontWeight:this.component_dbFontWeight}}),"component_dbFont"),external_component_dbFont:(0,i.K2)((function(){return{fontFamily:this.external_component_dbFontFamily,fontSize:this.external_component_dbFontSize,fontWeight:this.external_component_dbFontWeight}}),"external_component_dbFont"),component_queueFont:(0,i.K2)((function(){return{fontFamily:this.component_queueFontFamily,fontSize:this.component_queueFontSize,fontWeight:this.component_queueFontWeight}}),"component_queueFont"),external_component_queueFont:(0,i.K2)((function(){return{fontFamily:this.external_component_queueFontFamily,fontSize:this.external_component_queueFontSize,fontWeight:this.external_component_queueFontWeight}}),"external_component_queueFont"),boundaryFont:(0,i.K2)((function(){return{fontFamily:this.boundaryFontFamily,fontSize:this.boundaryFontSize,fontWeight:this.boundaryFontWeight}}),"boundaryFont"),messageFont:(0,i.K2)((function(){return{fontFamily:this.messageFontFamily,fontSize:this.messageFontSize,fontWeight:this.messageFontWeight}}),"messageFont")},pie:{...N.pie,useWidth:984},xyChart:{...N.xyChart,useWidth:void 0},requirement:{...N.requirement,useWidth:void 0},packet:{...N.packet},radar:{...N.radar},treemap:{useMaxWidth:!0,padding:10,diagramPadding:8,showValues:!0,nodeWidth:100,nodeHeight:40,borderWidth:1,valueFontSize:12,labelFontSize:14,valueFormat:","}},P=(0,i.K2)(((t,e="")=>Object.keys(t).reduce(((r,i)=>Array.isArray(t[i])?r:"object"==typeof t[i]&&null!==t[i]?[...r,e+i,...P(t[i],"")]:[...r,e+i]),[])),"keyify"),q=new Set(P(z,"")),j=z,W=(0,i.K2)((t=>{if(i.Rm.debug("sanitizeDirective called with",t),"object"==typeof t&&null!=t)if(Array.isArray(t))t.forEach((t=>W(t)));else{for(const e of Object.keys(t)){if(i.Rm.debug("Checking key",e),e.startsWith("__")||e.includes("proto")||e.includes("constr")||!q.has(e)||null==t[e]){i.Rm.debug("sanitize deleting key: ",e),delete t[e];continue}if("object"==typeof t[e]){i.Rm.debug("sanitizing object",e),W(t[e]);continue}const r=["themeCSS","fontFamily","altFontFamily"];for(const n of r)e.includes(n)&&(i.Rm.debug("sanitizing css option",e),t[e]=H(t[e]))}if(t.themeVariables)for(const e of Object.keys(t.themeVariables)){const r=t.themeVariables[e];r?.match&&!r.match(/^[\d "#%(),.;A-Za-z]+$/)&&(t.themeVariables[e]="")}i.Rm.debug("After sanitization",t)}}),"sanitizeDirective"),H=(0,i.K2)((t=>{let e=0,r=0;for(const i of t){if(e{let r=S({},t),i={};for(const n of e)it(n),i=S(i,n);if(r=S(r,i),i.theme&&i.theme in I){const t=S({},h),e=S(t.themeVariables||{},i.themeVariables);r.theme&&r.theme in I&&(r.themeVariables=I[r.theme].getThemeVariables(e))}return ct(X=r),X}),"updateCurrentConfig"),Z=(0,i.K2)((t=>(Y=S({},U),Y=S(Y,t),t.theme&&I[t.theme]&&(Y.themeVariables=I[t.theme].getThemeVariables(t.themeVariables)),V(Y,G),Y)),"setSiteConfig"),Q=(0,i.K2)((t=>{h=S({},t)}),"saveConfigFromInitialize"),J=(0,i.K2)((t=>(Y=S(Y,t),V(Y,G),Y)),"updateSiteConfig"),tt=(0,i.K2)((()=>S({},Y)),"getSiteConfig"),et=(0,i.K2)((t=>(ct(t),S(X,t),rt())),"setConfig"),rt=(0,i.K2)((()=>S({},X)),"getConfig"),it=(0,i.K2)((t=>{t&&(["secure",...Y.secure??[]].forEach((e=>{Object.hasOwn(t,e)&&(i.Rm.debug(`Denied attempt to modify a secure key ${e}`,t[e]),delete t[e])})),Object.keys(t).forEach((e=>{e.startsWith("__")&&delete t[e]})),Object.keys(t).forEach((e=>{"string"==typeof t[e]&&(t[e].includes("<")||t[e].includes(">")||t[e].includes("url(data:"))&&delete t[e],"object"==typeof t[e]&&it(t[e])})))}),"sanitize"),nt=(0,i.K2)((t=>{W(t),t.fontFamily&&!t.themeVariables?.fontFamily&&(t.themeVariables={...t.themeVariables,fontFamily:t.fontFamily}),G.push(t),V(Y,G)}),"addDirective"),at=(0,i.K2)(((t=Y)=>{V(t,G=[])}),"reset"),ot={LAZY_LOAD_DEPRECATED:"The configuration options lazyLoadedDiagrams and loadExternalDiagramsAtStartup are deprecated. Please use registerExternalDiagrams instead."},st={},lt=(0,i.K2)((t=>{st[t]||(i.Rm.warn(ot[t]),st[t]=!0)}),"issueWarning"),ct=(0,i.K2)((t=>{t&&(t.lazyLoadedDiagrams||t.loadExternalDiagramsAtStartup)&<("LAZY_LOAD_DEPRECATED")}),"checkConfig"),ht=(0,i.K2)((()=>{let t={};h&&(t=S(t,h));for(const e of G)t=S(t,e);return t}),"getUserDefinedConfig"),ut=//gi,dt=(0,i.K2)((t=>{if(!t)return[""];return Ct(t).replace(/\\n/g,"#br#").split("#br#")}),"getRows"),pt=(()=>{let t=!1;return()=>{t||(ft(),t=!0)}})();function ft(){const t="data-temp-href-target";f.A.addHook("beforeSanitizeAttributes",(e=>{"A"===e.tagName&&e.hasAttribute("target")&&e.setAttribute(t,e.getAttribute("target")??"")})),f.A.addHook("afterSanitizeAttributes",(e=>{"A"===e.tagName&&e.hasAttribute(t)&&(e.setAttribute("target",e.getAttribute(t)??""),e.removeAttribute(t),"_blank"===e.getAttribute("target")&&e.setAttribute("rel","noopener"))}))}(0,i.K2)(ft,"setupDompurifyHooks");var gt=(0,i.K2)((t=>{pt();return f.A.sanitize(t)}),"removeScript"),yt=(0,i.K2)(((t,e)=>{if(!1!==e.flowchart?.htmlLabels){const r=e.securityLevel;"antiscript"===r||"strict"===r?t=gt(t):"loose"!==r&&(t=(t=(t=Ct(t)).replace(//g,">")).replace(/=/g,"="),t=wt(t))}return t}),"sanitizeMore"),mt=(0,i.K2)(((t,e)=>t?t=e.dompurifyConfig?f.A.sanitize(yt(t,e),e.dompurifyConfig).toString():f.A.sanitize(yt(t,e),{FORBID_TAGS:["style"]}).toString():t),"sanitizeText"),xt=(0,i.K2)(((t,e)=>"string"==typeof t?mt(t,e):t.flat().map((t=>mt(t,e)))),"sanitizeTextOrArray"),bt=(0,i.K2)((t=>ut.test(t)),"hasBreaks"),kt=(0,i.K2)((t=>t.split(ut)),"splitBreaks"),wt=(0,i.K2)((t=>t.replace(/#br#/g,"
")),"placeholderToBreak"),Ct=(0,i.K2)((t=>t.replace(ut,"#br#")),"breakToPlaceholder"),_t=(0,i.K2)((t=>{let e="";return t&&(e=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,e=CSS.escape(e)),e}),"getUrl"),vt=(0,i.K2)((t=>!1!==t&&!["false","null","0"].includes(String(t).trim().toLowerCase())),"evaluate"),St=(0,i.K2)((function(...t){const e=t.filter((t=>!isNaN(t)));return Math.max(...e)}),"getMax"),Tt=(0,i.K2)((function(...t){const e=t.filter((t=>!isNaN(t)));return Math.min(...e)}),"getMin"),At=(0,i.K2)((function(t){const e=t.split(/(,)/),r=[];for(let i=0;i0&&i+1Math.max(0,t.split(e).length-1)),"countOccurrence"),Bt=(0,i.K2)(((t,e)=>{const r=Mt(t,"~"),i=Mt(e,"~");return 1===r&&1===i}),"shouldCombineSets"),Lt=(0,i.K2)((t=>{const e=Mt(t,"~");let r=!1;if(e<=1)return t;e%2!=0&&t.startsWith("~")&&(t=t.substring(1),r=!0);const i=[...t];let n=i.indexOf("~"),a=i.lastIndexOf("~");for(;-1!==n&&-1!==a&&n!==a;)i[n]="<",i[a]=">",n=i.indexOf("~"),a=i.lastIndexOf("~");return r&&i.unshift("~"),i.join("")}),"processSet"),Ft=(0,i.K2)((()=>void 0!==window.MathMLElement),"isMathMLSupported"),$t=/\$\$(.*)\$\$/g,Et=(0,i.K2)((t=>(t.match($t)?.length??0)>0),"hasKatex"),Dt=(0,i.K2)((async(t,e)=>{const r=document.createElement("div");r.innerHTML=await Rt(t,e),r.id="katex-temp",r.style.visibility="hidden",r.style.position="absolute",r.style.top="0";const i=document.querySelector("body");i?.insertAdjacentElement("beforeend",r);const n={width:r.clientWidth,height:r.clientHeight};return r.remove(),n}),"calculateMathMLDimensions"),Ot=(0,i.K2)((async(t,e)=>{if(!Et(t))return t;if(!(Ft()||e.legacyMathML||e.forceLegacyMathML))return t.replace($t,"MathML is unsupported in this environment.");{const{default:i}=await r.e(2130).then(r.bind(r,22130)),n=e.forceLegacyMathML||!Ft()&&e.legacyMathML?"htmlAndMathml":"mathml";return t.split(ut).map((t=>Et(t)?`
${t}
`:`
${t}
`)).join("").replace($t,((t,e)=>i.renderToString(e,{throwOnError:!0,displayMode:!0,output:n}).replace(/\n/g," ").replace(//g,"")))}}),"renderKatexUnsanitized"),Rt=(0,i.K2)((async(t,e)=>mt(await Ot(t,e),e)),"renderKatexSanitized"),Kt={getRows:dt,sanitizeText:mt,sanitizeTextOrArray:xt,hasBreaks:bt,splitBreaks:kt,lineBreakRegex:ut,removeScript:gt,getUrl:_t,evaluate:vt,getMax:St,getMin:Tt},It=(0,i.K2)((function(t,e){for(let r of e)t.attr(r[0],r[1])}),"d3Attrs"),Nt=(0,i.K2)((function(t,e,r){let i=new Map;return r?(i.set("width","100%"),i.set("style",`max-width: ${e}px;`)):(i.set("height",t),i.set("width",e)),i}),"calculateSvgSizeAttrs"),zt=(0,i.K2)((function(t,e,r,i){const n=Nt(e,r,i);It(t,n)}),"configureSvgSize"),Pt=(0,i.K2)((function(t,e,r,n){const a=e.node().getBBox(),o=a.width,s=a.height;i.Rm.info(`SVG bounds: ${o}x${s}`,a);let l=0,c=0;i.Rm.info(`Graph bounds: ${l}x${c}`,t),l=o+2*r,c=s+2*r,i.Rm.info(`Calculated bounds: ${l}x${c}`),zt(e,c,l,n);const h=`${a.x-r} ${a.y-r} ${a.width+2*r} ${a.height+2*r}`;e.attr("viewBox",h)}),"setupGraphViewbox"),qt={},jt=(0,i.K2)(((t,e,r)=>{let n="";return t in qt&&qt[t]?n=qt[t](r):i.Rm.warn(`No theme found for ${t}`),` & {\n font-family: ${r.fontFamily};\n font-size: ${r.fontSize};\n fill: ${r.textColor}\n }\n @keyframes edge-animation-frame {\n from {\n stroke-dashoffset: 0;\n }\n }\n @keyframes dash {\n to {\n stroke-dashoffset: 0;\n }\n }\n & .edge-animation-slow {\n stroke-dasharray: 9,5 !important;\n stroke-dashoffset: 900;\n animation: dash 50s linear infinite;\n stroke-linecap: round;\n }\n & .edge-animation-fast {\n stroke-dasharray: 9,5 !important;\n stroke-dashoffset: 900;\n animation: dash 20s linear infinite;\n stroke-linecap: round;\n }\n /* Classes common for multiple diagrams */\n\n & .error-icon {\n fill: ${r.errorBkgColor};\n }\n & .error-text {\n fill: ${r.errorTextColor};\n stroke: ${r.errorTextColor};\n }\n\n & .edge-thickness-normal {\n stroke-width: 1px;\n }\n & .edge-thickness-thick {\n stroke-width: 3.5px\n }\n & .edge-pattern-solid {\n stroke-dasharray: 0;\n }\n & .edge-thickness-invisible {\n stroke-width: 0;\n fill: none;\n }\n & .edge-pattern-dashed{\n stroke-dasharray: 3;\n }\n .edge-pattern-dotted {\n stroke-dasharray: 2;\n }\n\n & .marker {\n fill: ${r.lineColor};\n stroke: ${r.lineColor};\n }\n & .marker.cross {\n stroke: ${r.lineColor};\n }\n\n & svg {\n font-family: ${r.fontFamily};\n font-size: ${r.fontSize};\n }\n & p {\n margin: 0\n }\n\n ${n}\n\n ${e}\n`}),"getStyles"),Wt=(0,i.K2)(((t,e)=>{void 0!==e&&(qt[t]=e)}),"addStylesForDiagram"),Ht=jt,Ut={};(0,i.VA)(Ut,{clear:()=>Zt,getAccDescription:()=>ee,getAccTitle:()=>Jt,getDiagramTitle:()=>ie,setAccDescription:()=>te,setAccTitle:()=>Qt,setDiagramTitle:()=>re});var Yt="",Gt="",Xt="",Vt=(0,i.K2)((t=>mt(t,rt())),"sanitizeText"),Zt=(0,i.K2)((()=>{Yt="",Xt="",Gt=""}),"clear"),Qt=(0,i.K2)((t=>{Yt=Vt(t).replace(/^\s+/g,"")}),"setAccTitle"),Jt=(0,i.K2)((()=>Yt),"getAccTitle"),te=(0,i.K2)((t=>{Xt=Vt(t).replace(/\n\s+/g,"\n")}),"setAccDescription"),ee=(0,i.K2)((()=>Xt),"getAccDescription"),re=(0,i.K2)((t=>{Gt=Vt(t)}),"setDiagramTitle"),ie=(0,i.K2)((()=>Gt),"getDiagramTitle"),ne=i.Rm,ae=i.He,oe=rt,se=et,le=U,ce=(0,i.K2)((t=>mt(t,oe())),"sanitizeText"),he=Pt,ue=(0,i.K2)((()=>Ut),"getCommonDb"),de={},pe=(0,i.K2)(((t,e,r)=>{de[t]&&ne.warn(`Diagram with id ${t} already registered. Overwriting.`),de[t]=e,r&&C(t,r),Wt(t,e.styles),e.injectUtils?.(ne,ae,oe,ce,he,ue(),(()=>{}))}),"registerDiagram"),fe=(0,i.K2)((t=>{if(t in de)return de[t];throw new ge(t)}),"getDiagram"),ge=class extends Error{static{(0,i.K2)(this,"DiagramNotFoundError")}constructor(t){super(`Diagram ${t} not found.`)}}},40797:(t,e,r)=>{"use strict";r.d(e,{He:()=>c,K2:()=>a,Rm:()=>l,VA:()=>o});var i=r(74353),n=Object.defineProperty,a=(t,e)=>n(t,"name",{value:e,configurable:!0}),o=(t,e)=>{for(var r in e)n(t,r,{get:e[r],enumerable:!0})},s={trace:0,debug:1,info:2,warn:3,error:4,fatal:5},l={trace:a(((...t)=>{}),"trace"),debug:a(((...t)=>{}),"debug"),info:a(((...t)=>{}),"info"),warn:a(((...t)=>{}),"warn"),error:a(((...t)=>{}),"error"),fatal:a(((...t)=>{}),"fatal")},c=a((function(t="fatal"){let e=s.fatal;"string"==typeof t?t.toLowerCase()in s&&(e=s[t]):"number"==typeof t&&(e=t),l.trace=()=>{},l.debug=()=>{},l.info=()=>{},l.warn=()=>{},l.error=()=>{},l.fatal=()=>{},e<=s.fatal&&(l.fatal=console.error?console.error.bind(console,h("FATAL"),"color: orange"):console.log.bind(console,"\x1b[35m",h("FATAL"))),e<=s.error&&(l.error=console.error?console.error.bind(console,h("ERROR"),"color: orange"):console.log.bind(console,"\x1b[31m",h("ERROR"))),e<=s.warn&&(l.warn=console.warn?console.warn.bind(console,h("WARN"),"color: orange"):console.log.bind(console,"\x1b[33m",h("WARN"))),e<=s.info&&(l.info=console.info?console.info.bind(console,h("INFO"),"color: lightblue"):console.log.bind(console,"\x1b[34m",h("INFO"))),e<=s.debug&&(l.debug=console.debug?console.debug.bind(console,h("DEBUG"),"color: lightgreen"):console.log.bind(console,"\x1b[32m",h("DEBUG"))),e<=s.trace&&(l.trace=console.debug?console.debug.bind(console,h("TRACE"),"color: lightgreen"):console.log.bind(console,"\x1b[32m",h("TRACE")))}),"setLogLevel"),h=a((t=>`%c${i().format("ss.SSS")} : ${t} : `),"format")},32387:(t,e,r)=>{"use strict";r.d(e,{Fr:()=>h,GX:()=>c,KX:()=>l,WW:()=>o,ue:()=>a});var i=r(67633),n=r(40797),a=(0,n.K2)((t=>{const{handDrawnSeed:e}=(0,i.D7)();return{fill:t,hachureAngle:120,hachureGap:4,fillWeight:2,roughness:.7,stroke:t,seed:e}}),"solidStateFill"),o=(0,n.K2)((t=>{const e=s([...t.cssCompiledStyles||[],...t.cssStyles||[],...t.labelStyle||[]]);return{stylesMap:e,stylesArray:[...e]}}),"compileStyles"),s=(0,n.K2)((t=>{const e=new Map;return t.forEach((t=>{const[r,i]=t.split(":");e.set(r.trim(),i?.trim())})),e}),"styles2Map"),l=(0,n.K2)((t=>"color"===t||"font-size"===t||"font-family"===t||"font-weight"===t||"font-style"===t||"text-decoration"===t||"text-align"===t||"text-transform"===t||"line-height"===t||"letter-spacing"===t||"word-spacing"===t||"text-shadow"===t||"text-overflow"===t||"white-space"===t||"word-wrap"===t||"word-break"===t||"overflow-wrap"===t||"hyphens"===t),"isLabelStyle"),c=(0,n.K2)((t=>{const{stylesArray:e}=o(t),r=[],i=[],n=[],a=[];return e.forEach((t=>{const e=t[0];l(e)?r.push(t.join(":")+" !important"):(i.push(t.join(":")+" !important"),e.includes("stroke")&&n.push(t.join(":")+" !important"),"fill"===e&&a.push(t.join(":")+" !important"))})),{labelStyles:r.join(";"),nodeStyles:i.join(";"),stylesArray:e,borderStyles:n,backgroundStyles:a}}),"styles2String"),h=(0,n.K2)(((t,e)=>{const{themeVariables:r,handDrawnSeed:n}=(0,i.D7)(),{nodeBorder:a,mainBkg:s}=r,{stylesMap:l}=o(t);return Object.assign({roughness:.7,fill:l.get("fill")||s,fillStyle:"hachure",fillWeight:4,hachureGap:5.2,stroke:l.get("stroke")||a,seed:n,strokeWidth:l.get("stroke-width")?.replace("px","")||1.3,fillLineDash:[0,0],strokeLineDash:u(l.get("stroke-dasharray"))},e)}),"userNodeOverrides"),u=(0,n.K2)((t=>{if(!t)return[0,0];const e=t.trim().split(/\s+/).map(Number);if(1===e.length){const t=isNaN(e[0])?0:e[0];return[t,t]}return[isNaN(e[0])?0:e[0],isNaN(e[1])?0:e[1]]}),"getStrokeDashArray")},63245:(t,e,r)=>{"use strict";r.d(e,{O:()=>i});var i=(0,r(40797).K2)((({flowchart:t})=>{const e=t?.subGraphTitleMargin?.top??0,r=t?.subGraphTitleMargin?.bottom??0;return{subGraphTitleTopMargin:e,subGraphTitleBottomMargin:r,subGraphTitleTotalMargin:e+r}}),"getSubGraphTitleMargins")},73590:(t,e,r)=>{"use strict";r.d(e,{D:()=>o});var i=r(67633),n=r(40797),a=r(70451),o=(0,n.K2)((t=>{const{securityLevel:e}=(0,i.D7)();let r=(0,a.Ltv)("body");if("sandbox"===e){const e=(0,a.Ltv)(`#i${t}`),i=e.node()?.contentDocument??document;r=(0,a.Ltv)(i.body)}return r.select(`#${t}`)}),"selectSvgElement")},28698:(t,e,r)=>{"use strict";r.d(e,{Nq:()=>a,RI:()=>l,hq:()=>n});var i=r(40797),n={aggregation:17.25,extension:17.25,composition:17.25,dependency:6,lollipop:13.5,arrow_point:4},a={arrow_point:9,arrow_cross:12.5,arrow_circle:12.5};function o(t,e){if(void 0===t||void 0===e)return{angle:0,deltaX:0,deltaY:0};t=s(t),e=s(e);const[r,i]=[t.x,t.y],[n,a]=[e.x,e.y],o=n-r,l=a-i;return{angle:Math.atan(l/o),deltaX:o,deltaY:l}}(0,i.K2)(o,"calculateDeltaAndAngle");var s=(0,i.K2)((t=>Array.isArray(t)?{x:t[0],y:t[1]}:t),"pointTransformer"),l=(0,i.K2)((t=>({x:(0,i.K2)((function(e,r,i){let a=0;const l=s(i[0]).x=0?1:-1)}else if(r===i.length-1&&Object.hasOwn(n,t.arrowTypeEnd)){const{angle:e,deltaX:r}=o(i[i.length-1],i[i.length-2]);a=n[t.arrowTypeEnd]*Math.cos(e)*(r>=0?1:-1)}const c=Math.abs(s(e).x-s(i[i.length-1]).x),h=Math.abs(s(e).y-s(i[i.length-1]).y),u=Math.abs(s(e).x-s(i[0]).x),d=Math.abs(s(e).y-s(i[0]).y),p=n[t.arrowTypeStart],f=n[t.arrowTypeEnd];if(c0&&h0&&d=0?1:-1)}else if(r===i.length-1&&Object.hasOwn(n,t.arrowTypeEnd)){const{angle:e,deltaY:r}=o(i[i.length-1],i[i.length-2]);a=n[t.arrowTypeEnd]*Math.abs(Math.sin(e))*(r>=0?1:-1)}const c=Math.abs(s(e).y-s(i[i.length-1]).y),h=Math.abs(s(e).x-s(i[i.length-1]).x),u=Math.abs(s(e).y-s(i[0]).y),d=Math.abs(s(e).x-s(i[0]).x),p=n[t.arrowTypeStart],f=n[t.arrowTypeEnd];if(c0&&h0&&d{"use strict";r.d(e,{W6:()=>ie,GZ:()=>se,WY:()=>Wt,pC:()=>Pt,hE:()=>oe,Gc:()=>It});var i=r(13226),n=r(67633),a=r(40797);const o=(t,e)=>!!t&&!(!(e&&""===t.prefix||t.prefix)||!t.name),s=Object.freeze({left:0,top:0,width:16,height:16}),l=Object.freeze({rotate:0,vFlip:!1,hFlip:!1}),c=Object.freeze({...s,...l}),h=Object.freeze({...c,body:"",hidden:!1});function u(t,e){const r=function(t,e){const r={};!t.hFlip!=!e.hFlip&&(r.hFlip=!0),!t.vFlip!=!e.vFlip&&(r.vFlip=!0);const i=((t.rotate||0)+(e.rotate||0))%4;return i&&(r.rotate=i),r}(t,e);for(const i in h)i in l?i in t&&!(i in r)&&(r[i]=l[i]):i in e?r[i]=e[i]:i in t&&(r[i]=t[i]);return r}function d(t,e,r){const i=t.icons,n=t.aliases||Object.create(null);let a={};function o(t){a=u(i[t]||n[t],a)}return o(e),r.forEach(o),u(t,a)}function p(t,e){if(t.icons[e])return d(t,e,[]);const r=function(t,e){const r=t.icons,i=t.aliases||Object.create(null),n=Object.create(null);return(e||Object.keys(r).concat(Object.keys(i))).forEach((function t(e){if(r[e])return n[e]=[];if(!(e in n)){n[e]=null;const r=i[e]&&i[e].parent,a=r&&t(r);a&&(n[e]=[r].concat(a))}return n[e]})),n}(t,[e])[e];return r?d(t,e,r):null}const f=Object.freeze({width:null,height:null}),g=Object.freeze({...f,...l}),y=/(-?[0-9.]*[0-9]+[0-9.]*)/g,m=/^-?[0-9.]*[0-9]+[0-9.]*$/g;function x(t,e,r){if(1===e)return t;if(r=r||100,"number"==typeof t)return Math.ceil(t*e*r)/r;if("string"!=typeof t)return t;const i=t.split(y);if(null===i||!i.length)return t;const n=[];let a=i.shift(),o=m.test(a);for(;;){if(o){const t=parseFloat(a);isNaN(t)?n.push(a):n.push(Math.ceil(t*e*r)/r)}else n.push(a);if(a=i.shift(),void 0===a)return n.join("");o=!o}}const b=/\sid="(\S+)"/g,k="IconifyId"+Date.now().toString(16)+(16777216*Math.random()|0).toString(16);let w=0;var C=r(70451);function _(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var v={async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null};function S(t){v=t}var T={exec:()=>null};function A(t,e=""){let r="string"==typeof t?t:t.source,i={replace:(t,e)=>{let n="string"==typeof e?e:e.source;return n=n.replace(B.caret,"$1"),r=r.replace(t,n),i},getRegex:()=>new RegExp(r,e)};return i}var M=(()=>{try{return!!new RegExp("(?<=1)(?/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceTabs:/^\t+/,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] /,listReplaceTask:/^\[[ xX]\] +/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,unescapeTest:/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:t=>new RegExp(`^( {0,3}${t})((?:[\t ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ \t][^\\n]*)?(?:\\n|$))`),hrRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}#`),htmlBeginRegex:t=>new RegExp(`^ {0,${Math.min(3,t-1)}}<(?:[a-z].*>|!--)`,"i")},L=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,F=/(?:[*+-]|\d{1,9}[.)])/,$=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,E=A($).replace(/bull/g,F).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),D=A($).replace(/bull/g,F).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),O=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,R=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,K=A(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",R).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),I=A(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,F).getRegex(),N="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",z=/|$))/,P=A("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$))","i").replace("comment",z).replace("tag",N).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),q=A(O).replace("hr",L).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",N).getRegex(),j={blockquote:A(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",q).getRegex(),code:/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,def:K,fences:/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,heading:/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,hr:L,html:P,lheading:E,list:I,newline:/^(?:[ \t]*(?:\n|$))+/,paragraph:q,table:T,text:/^[^\n]+/},W=A("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",L).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3}\t)[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",N).getRegex(),H={...j,lheading:D,table:W,paragraph:A(O).replace("hr",L).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",W).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",N).getRegex()},U={...j,html:A("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",z).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:T,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:A(O).replace("hr",L).replace("heading"," *#{1,6} *[^\n]").replace("lheading",E).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},Y=/^( {2,}|\\)\n(?!\s*$)/,G=/[\p{P}\p{S}]/u,X=/[\s\p{P}\p{S}]/u,V=/[^\s\p{P}\p{S}]/u,Z=A(/^((?![*_])punctSpace)/,"u").replace(/punctSpace/g,X).getRegex(),Q=/(?!~)[\p{P}\p{S}]/u,J=A(/link|precode-code|html/,"g").replace("link",/\[(?:[^\[\]`]|(?`+)[^`]+\k(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace("precode-",M?"(?`+)[^`]+\k(?!`)/).replace("html",/<(?! )[^<>]*?>/).getRegex(),tt=/^(?:\*+(?:((?!\*)punct)|[^\s*]))|^_+(?:((?!_)punct)|([^\s_]))/,et=A(tt,"u").replace(/punct/g,G).getRegex(),rt=A(tt,"u").replace(/punct/g,Q).getRegex(),it="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",nt=A(it,"gu").replace(/notPunctSpace/g,V).replace(/punctSpace/g,X).replace(/punct/g,G).getRegex(),at=A(it,"gu").replace(/notPunctSpace/g,/(?:[^\s\p{P}\p{S}]|~)/u).replace(/punctSpace/g,/(?!~)[\s\p{P}\p{S}]/u).replace(/punct/g,Q).getRegex(),ot=A("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,V).replace(/punctSpace/g,X).replace(/punct/g,G).getRegex(),st=A(/\\(punct)/,"gu").replace(/punct/g,G).getRegex(),lt=A(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),ct=A(z).replace("(?:--\x3e|$)","--\x3e").getRegex(),ht=A("^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^").replace("comment",ct).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),ut=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+[^`]*?`+(?!`)|[^\[\]\\`])*?/,dt=A(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]*(?:\n[ \t]*)?)(title))?\s*\)/).replace("label",ut).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),pt=A(/^!?\[(label)\]\[(ref)\]/).replace("label",ut).replace("ref",R).getRegex(),ft=A(/^!?\[(ref)\](?:\[\])?/).replace("ref",R).getRegex(),gt=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,yt={_backpedal:T,anyPunctuation:st,autolink:lt,blockSkip:J,br:Y,code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,del:T,emStrongLDelim:et,emStrongRDelimAst:nt,emStrongRDelimUnd:ot,escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,link:dt,nolink:ft,punctuation:Z,reflink:pt,reflinkSearch:A("reflink|nolink(?!\\()","g").replace("reflink",pt).replace("nolink",ft).getRegex(),tag:ht,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\":">",'"':""","'":"'"},_t=t=>Ct[t];function vt(t,e){if(e){if(B.escapeTest.test(t))return t.replace(B.escapeReplace,_t)}else if(B.escapeTestNoEncode.test(t))return t.replace(B.escapeReplaceNoEncode,_t);return t}function St(t){try{t=encodeURI(t).replace(B.percentDecode,"%")}catch{return null}return t}function Tt(t,e){let r=t.replace(B.findPipe,((t,e,r)=>{let i=!1,n=e;for(;--n>=0&&"\\"===r[n];)i=!i;return i?"|":" |"})).split(B.splitPipe),i=0;if(r[0].trim()||r.shift(),r.length>0&&!r.at(-1)?.trim()&&r.pop(),e)if(r.length>e)r.splice(e);else for(;r.length0)return{type:"space",raw:e[0]}}code(t){let e=this.rules.block.code.exec(t);if(e){let t=e[0].replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:e[0],codeBlockStyle:"indented",text:this.options.pedantic?t:At(t,"\n")}}}fences(t){let e=this.rules.block.fences.exec(t);if(e){let t=e[0],r=function(t,e,r){let i=t.match(r.other.indentCodeCompensation);if(null===i)return e;let n=i[1];return e.split("\n").map((t=>{let e=t.match(r.other.beginningSpace);if(null===e)return t;let[i]=e;return i.length>=n.length?t.slice(n.length):t})).join("\n")}(t,e[3]||"",this.rules);return{type:"code",raw:t,lang:e[2]?e[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):e[2],text:r}}}heading(t){let e=this.rules.block.heading.exec(t);if(e){let t=e[2].trim();if(this.rules.other.endingHash.test(t)){let e=At(t,"#");(this.options.pedantic||!e||this.rules.other.endingSpaceChar.test(e))&&(t=e.trim())}return{type:"heading",raw:e[0],depth:e[1].length,text:t,tokens:this.lexer.inline(t)}}}hr(t){let e=this.rules.block.hr.exec(t);if(e)return{type:"hr",raw:At(e[0],"\n")}}blockquote(t){let e=this.rules.block.blockquote.exec(t);if(e){let t=At(e[0],"\n").split("\n"),r="",i="",n=[];for(;t.length>0;){let e,a=!1,o=[];for(e=0;e1,n={type:"list",raw:"",ordered:i,start:i?+r.slice(0,-1):"",loose:!1,items:[]};r=i?`\\d{1,9}\\${r.slice(-1)}`:`\\${r}`,this.options.pedantic&&(r=i?r:"[*+-]");let a=this.rules.other.listItemRegex(r),o=!1;for(;t;){let r=!1,i="",s="";if(!(e=a.exec(t))||this.rules.block.hr.test(t))break;i=e[0],t=t.substring(i.length);let l=e[2].split("\n",1)[0].replace(this.rules.other.listReplaceTabs,(t=>" ".repeat(3*t.length))),c=t.split("\n",1)[0],h=!l.trim(),u=0;if(this.options.pedantic?(u=2,s=l.trimStart()):h?u=e[1].length+1:(u=e[2].search(this.rules.other.nonSpaceChar),u=u>4?1:u,s=l.slice(u),u+=e[1].length),h&&this.rules.other.blankLine.test(c)&&(i+=c+"\n",t=t.substring(c.length+1),r=!0),!r){let e=this.rules.other.nextBulletRegex(u),r=this.rules.other.hrRegex(u),n=this.rules.other.fencesBeginRegex(u),a=this.rules.other.headingBeginRegex(u),o=this.rules.other.htmlBeginRegex(u);for(;t;){let d,p=t.split("\n",1)[0];if(c=p,this.options.pedantic?(c=c.replace(this.rules.other.listReplaceNesting," "),d=c):d=c.replace(this.rules.other.tabCharGlobal," "),n.test(c)||a.test(c)||o.test(c)||e.test(c)||r.test(c))break;if(d.search(this.rules.other.nonSpaceChar)>=u||!c.trim())s+="\n"+d.slice(u);else{if(h||l.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||n.test(l)||a.test(l)||r.test(l))break;s+="\n"+c}!h&&!c.trim()&&(h=!0),i+=p+"\n",t=t.substring(p.length+1),l=d.slice(u)}}n.loose||(o?n.loose=!0:this.rules.other.doubleBlankLine.test(i)&&(o=!0));let d,p=null;this.options.gfm&&(p=this.rules.other.listIsTask.exec(s),p&&(d="[ ] "!==p[0],s=s.replace(this.rules.other.listReplaceTask,""))),n.items.push({type:"list_item",raw:i,task:!!p,checked:d,loose:!1,text:s,tokens:[]}),n.raw+=i}let s=n.items.at(-1);if(!s)return;s.raw=s.raw.trimEnd(),s.text=s.text.trimEnd(),n.raw=n.raw.trimEnd();for(let t=0;t"space"===t.type)),r=e.length>0&&e.some((t=>this.rules.other.anyLine.test(t.raw)));n.loose=r}if(n.loose)for(let t=0;t({text:t,tokens:this.lexer.inline(t),header:!1,align:a.align[e]}))));return a}}lheading(t){let e=this.rules.block.lheading.exec(t);if(e)return{type:"heading",raw:e[0],depth:"="===e[2].charAt(0)?1:2,text:e[1],tokens:this.lexer.inline(e[1])}}paragraph(t){let e=this.rules.block.paragraph.exec(t);if(e){let t="\n"===e[1].charAt(e[1].length-1)?e[1].slice(0,-1):e[1];return{type:"paragraph",raw:e[0],text:t,tokens:this.lexer.inline(t)}}}text(t){let e=this.rules.block.text.exec(t);if(e)return{type:"text",raw:e[0],text:e[0],tokens:this.lexer.inline(e[0])}}escape(t){let e=this.rules.inline.escape.exec(t);if(e)return{type:"escape",raw:e[0],text:e[1]}}tag(t){let e=this.rules.inline.tag.exec(t);if(e)return!this.lexer.state.inLink&&this.rules.other.startATag.test(e[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(e[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(e[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(e[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:e[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:e[0]}}link(t){let e=this.rules.inline.link.exec(t);if(e){let t=e[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(t)){if(!this.rules.other.endAngleBracket.test(t))return;let e=At(t.slice(0,-1),"\\");if((t.length-e.length)%2==0)return}else{let t=function(t,e){if(-1===t.indexOf(e[1]))return-1;let r=0;for(let i=0;i0?-2:-1}(e[2],"()");if(-2===t)return;if(t>-1){let r=(0===e[0].indexOf("!")?5:4)+e[1].length+t;e[2]=e[2].substring(0,t),e[0]=e[0].substring(0,r).trim(),e[3]=""}}let r=e[2],i="";if(this.options.pedantic){let t=this.rules.other.pedanticHrefTitle.exec(r);t&&(r=t[1],i=t[3])}else i=e[3]?e[3].slice(1,-1):"";return r=r.trim(),this.rules.other.startAngleBracket.test(r)&&(r=this.options.pedantic&&!this.rules.other.endAngleBracket.test(t)?r.slice(1):r.slice(1,-1)),Mt(e,{href:r&&r.replace(this.rules.inline.anyPunctuation,"$1"),title:i&&i.replace(this.rules.inline.anyPunctuation,"$1")},e[0],this.lexer,this.rules)}}reflink(t,e){let r;if((r=this.rules.inline.reflink.exec(t))||(r=this.rules.inline.nolink.exec(t))){let t=e[(r[2]||r[1]).replace(this.rules.other.multipleSpaceGlobal," ").toLowerCase()];if(!t){let t=r[0].charAt(0);return{type:"text",raw:t,text:t}}return Mt(r,t,r[0],this.lexer,this.rules)}}emStrong(t,e,r=""){let i=this.rules.inline.emStrongLDelim.exec(t);if(!(!i||i[3]&&r.match(this.rules.other.unicodeAlphaNumeric))&&(!i[1]&&!i[2]||!r||this.rules.inline.punctuation.exec(r))){let r,n,a=[...i[0]].length-1,o=a,s=0,l="*"===i[0][0]?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(l.lastIndex=0,e=e.slice(-1*t.length+a);null!=(i=l.exec(e));){if(r=i[1]||i[2]||i[3]||i[4]||i[5]||i[6],!r)continue;if(n=[...r].length,i[3]||i[4]){o+=n;continue}if((i[5]||i[6])&&a%3&&!((a+n)%3)){s+=n;continue}if(o-=n,o>0)continue;n=Math.min(n,n+o+s);let e=[...i[0]][0].length,l=t.slice(0,a+i.index+e+n);if(Math.min(a,n)%2){let t=l.slice(1,-1);return{type:"em",raw:l,text:t,tokens:this.lexer.inlineTokens(t)}}let c=l.slice(2,-2);return{type:"strong",raw:l,text:c,tokens:this.lexer.inlineTokens(c)}}}}codespan(t){let e=this.rules.inline.code.exec(t);if(e){let t=e[2].replace(this.rules.other.newLineCharGlobal," "),r=this.rules.other.nonSpaceChar.test(t),i=this.rules.other.startingSpaceChar.test(t)&&this.rules.other.endingSpaceChar.test(t);return r&&i&&(t=t.substring(1,t.length-1)),{type:"codespan",raw:e[0],text:t}}}br(t){let e=this.rules.inline.br.exec(t);if(e)return{type:"br",raw:e[0]}}del(t){let e=this.rules.inline.del.exec(t);if(e)return{type:"del",raw:e[0],text:e[2],tokens:this.lexer.inlineTokens(e[2])}}autolink(t){let e=this.rules.inline.autolink.exec(t);if(e){let t,r;return"@"===e[2]?(t=e[1],r="mailto:"+t):(t=e[1],r=t),{type:"link",raw:e[0],text:t,href:r,tokens:[{type:"text",raw:t,text:t}]}}}url(t){let e;if(e=this.rules.inline.url.exec(t)){let t,r;if("@"===e[2])t=e[0],r="mailto:"+t;else{let i;do{i=e[0],e[0]=this.rules.inline._backpedal.exec(e[0])?.[0]??""}while(i!==e[0]);t=e[0],r="www."===e[1]?"http://"+e[0]:e[0]}return{type:"link",raw:e[0],text:t,href:r,tokens:[{type:"text",raw:t,text:t}]}}}inlineText(t){let e=this.rules.inline.text.exec(t);if(e){let t=this.lexer.state.inRawBlock;return{type:"text",raw:e[0],text:e[0],escaped:t}}}},Lt=class t{tokens;options;state;tokenizer;inlineQueue;constructor(t){this.tokens=[],this.tokens.links=Object.create(null),this.options=t||v,this.options.tokenizer=this.options.tokenizer||new Bt,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let e={other:B,block:kt.normal,inline:wt.normal};this.options.pedantic?(e.block=kt.pedantic,e.inline=wt.pedantic):this.options.gfm&&(e.block=kt.gfm,this.options.breaks?e.inline=wt.breaks:e.inline=wt.gfm),this.tokenizer.rules=e}static get rules(){return{block:kt,inline:wt}}static lex(e,r){return new t(r).lex(e)}static lexInline(e,r){return new t(r).inlineTokens(e)}lex(t){t=t.replace(B.carriageReturn,"\n"),this.blockTokens(t,this.tokens);for(let e=0;e!!(i=r.call({lexer:this},t,e))&&(t=t.substring(i.raw.length),e.push(i),!0))))continue;if(i=this.tokenizer.space(t)){t=t.substring(i.raw.length);let r=e.at(-1);1===i.raw.length&&void 0!==r?r.raw+="\n":e.push(i);continue}if(i=this.tokenizer.code(t)){t=t.substring(i.raw.length);let r=e.at(-1);"paragraph"===r?.type||"text"===r?.type?(r.raw+=(r.raw.endsWith("\n")?"":"\n")+i.raw,r.text+="\n"+i.text,this.inlineQueue.at(-1).src=r.text):e.push(i);continue}if(i=this.tokenizer.fences(t)){t=t.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.heading(t)){t=t.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.hr(t)){t=t.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.blockquote(t)){t=t.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.list(t)){t=t.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.html(t)){t=t.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.def(t)){t=t.substring(i.raw.length);let r=e.at(-1);"paragraph"===r?.type||"text"===r?.type?(r.raw+=(r.raw.endsWith("\n")?"":"\n")+i.raw,r.text+="\n"+i.raw,this.inlineQueue.at(-1).src=r.text):this.tokens.links[i.tag]||(this.tokens.links[i.tag]={href:i.href,title:i.title},e.push(i));continue}if(i=this.tokenizer.table(t)){t=t.substring(i.raw.length),e.push(i);continue}if(i=this.tokenizer.lheading(t)){t=t.substring(i.raw.length),e.push(i);continue}let n=t;if(this.options.extensions?.startBlock){let e,r=1/0,i=t.slice(1);this.options.extensions.startBlock.forEach((t=>{e=t.call({lexer:this},i),"number"==typeof e&&e>=0&&(r=Math.min(r,e))})),r<1/0&&r>=0&&(n=t.substring(0,r+1))}if(this.state.top&&(i=this.tokenizer.paragraph(n))){let a=e.at(-1);r&&"paragraph"===a?.type?(a.raw+=(a.raw.endsWith("\n")?"":"\n")+i.raw,a.text+="\n"+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=a.text):e.push(i),r=n.length!==t.length,t=t.substring(i.raw.length)}else if(i=this.tokenizer.text(t)){t=t.substring(i.raw.length);let r=e.at(-1);"text"===r?.type?(r.raw+=(r.raw.endsWith("\n")?"":"\n")+i.raw,r.text+="\n"+i.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=r.text):e.push(i)}else if(t){let e="Infinite loop on byte: "+t.charCodeAt(0);if(this.options.silent){console.error(e);break}throw new Error(e)}}return this.state.top=!0,e}inline(t,e=[]){return this.inlineQueue.push({src:t,tokens:e}),e}inlineTokens(t,e=[]){let r,i=t,n=null;if(this.tokens.links){let t=Object.keys(this.tokens.links);if(t.length>0)for(;null!=(n=this.tokenizer.rules.inline.reflinkSearch.exec(i));)t.includes(n[0].slice(n[0].lastIndexOf("[")+1,-1))&&(i=i.slice(0,n.index)+"["+"a".repeat(n[0].length-2)+"]"+i.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;null!=(n=this.tokenizer.rules.inline.anyPunctuation.exec(i));)i=i.slice(0,n.index)+"++"+i.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);for(;null!=(n=this.tokenizer.rules.inline.blockSkip.exec(i));)r=n[2]?n[2].length:0,i=i.slice(0,n.index+r)+"["+"a".repeat(n[0].length-r-2)+"]"+i.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);i=this.options.hooks?.emStrongMask?.call({lexer:this},i)??i;let a=!1,o="";for(;t;){let r;if(a||(o=""),a=!1,this.options.extensions?.inline?.some((i=>!!(r=i.call({lexer:this},t,e))&&(t=t.substring(r.raw.length),e.push(r),!0))))continue;if(r=this.tokenizer.escape(t)){t=t.substring(r.raw.length),e.push(r);continue}if(r=this.tokenizer.tag(t)){t=t.substring(r.raw.length),e.push(r);continue}if(r=this.tokenizer.link(t)){t=t.substring(r.raw.length),e.push(r);continue}if(r=this.tokenizer.reflink(t,this.tokens.links)){t=t.substring(r.raw.length);let i=e.at(-1);"text"===r.type&&"text"===i?.type?(i.raw+=r.raw,i.text+=r.text):e.push(r);continue}if(r=this.tokenizer.emStrong(t,i,o)){t=t.substring(r.raw.length),e.push(r);continue}if(r=this.tokenizer.codespan(t)){t=t.substring(r.raw.length),e.push(r);continue}if(r=this.tokenizer.br(t)){t=t.substring(r.raw.length),e.push(r);continue}if(r=this.tokenizer.del(t)){t=t.substring(r.raw.length),e.push(r);continue}if(r=this.tokenizer.autolink(t)){t=t.substring(r.raw.length),e.push(r);continue}if(!this.state.inLink&&(r=this.tokenizer.url(t))){t=t.substring(r.raw.length),e.push(r);continue}let n=t;if(this.options.extensions?.startInline){let e,r=1/0,i=t.slice(1);this.options.extensions.startInline.forEach((t=>{e=t.call({lexer:this},i),"number"==typeof e&&e>=0&&(r=Math.min(r,e))})),r<1/0&&r>=0&&(n=t.substring(0,r+1))}if(r=this.tokenizer.inlineText(n)){t=t.substring(r.raw.length),"_"!==r.raw.slice(-1)&&(o=r.raw.slice(-1)),a=!0;let i=e.at(-1);"text"===i?.type?(i.raw+=r.raw,i.text+=r.text):e.push(r)}else if(t){let e="Infinite loop on byte: "+t.charCodeAt(0);if(this.options.silent){console.error(e);break}throw new Error(e)}}return e}},Ft=class{options;parser;constructor(t){this.options=t||v}space(t){return""}code({text:t,lang:e,escaped:r}){let i=(e||"").match(B.notSpaceStart)?.[0],n=t.replace(B.endingNewline,"")+"\n";return i?'
'+(r?n:vt(n,!0))+"
\n":"
"+(r?n:vt(n,!0))+"
\n"}blockquote({tokens:t}){return`
\n${this.parser.parse(t)}
\n`}html({text:t}){return t}def(t){return""}heading({tokens:t,depth:e}){return`${this.parser.parseInline(t)}\n`}hr(t){return"
\n"}list(t){let e=t.ordered,r=t.start,i="";for(let a=0;a\n"+i+"\n"}listitem(t){let e="";if(t.task){let r=this.checkbox({checked:!!t.checked});t.loose?"paragraph"===t.tokens[0]?.type?(t.tokens[0].text=r+" "+t.tokens[0].text,t.tokens[0].tokens&&t.tokens[0].tokens.length>0&&"text"===t.tokens[0].tokens[0].type&&(t.tokens[0].tokens[0].text=r+" "+vt(t.tokens[0].tokens[0].text),t.tokens[0].tokens[0].escaped=!0)):t.tokens.unshift({type:"text",raw:r+" ",text:r+" ",escaped:!0}):e+=r+" "}return e+=this.parser.parse(t.tokens,!!t.loose),`
  • ${e}
  • \n`}checkbox({checked:t}){return"'}paragraph({tokens:t}){return`

    ${this.parser.parseInline(t)}

    \n`}table(t){let e="",r="";for(let n=0;n${i}`),"\n\n"+e+"\n"+i+"
    \n"}tablerow({text:t}){return`\n${t}\n`}tablecell(t){let e=this.parser.parseInline(t.tokens),r=t.header?"th":"td";return(t.align?`<${r} align="${t.align}">`:`<${r}>`)+e+`\n`}strong({tokens:t}){return`${this.parser.parseInline(t)}`}em({tokens:t}){return`${this.parser.parseInline(t)}`}codespan({text:t}){return`${vt(t,!0)}`}br(t){return"
    "}del({tokens:t}){return`${this.parser.parseInline(t)}`}link({href:t,title:e,tokens:r}){let i=this.parser.parseInline(r),n=St(t);if(null===n)return i;let a='
    ",a}image({href:t,title:e,text:r,tokens:i}){i&&(r=this.parser.parseInline(i,this.parser.textRenderer));let n=St(t);if(null===n)return vt(r);let a=`${r}{let n=t[i].flat(1/0);r=r.concat(this.walkTokens(n,e))})):t.tokens&&(r=r.concat(this.walkTokens(t.tokens,e)))}}return r}use(...t){let e=this.defaults.extensions||{renderers:{},childTokens:{}};return t.forEach((t=>{let r={...t};if(r.async=this.defaults.async||r.async||!1,t.extensions&&(t.extensions.forEach((t=>{if(!t.name)throw new Error("extension name required");if("renderer"in t){let r=e.renderers[t.name];e.renderers[t.name]=r?function(...e){let i=t.renderer.apply(this,e);return!1===i&&(i=r.apply(this,e)),i}:t.renderer}if("tokenizer"in t){if(!t.level||"block"!==t.level&&"inline"!==t.level)throw new Error("extension level must be 'block' or 'inline'");let r=e[t.level];r?r.unshift(t.tokenizer):e[t.level]=[t.tokenizer],t.start&&("block"===t.level?e.startBlock?e.startBlock.push(t.start):e.startBlock=[t.start]:"inline"===t.level&&(e.startInline?e.startInline.push(t.start):e.startInline=[t.start]))}"childTokens"in t&&t.childTokens&&(e.childTokens[t.name]=t.childTokens)})),r.extensions=e),t.renderer){let e=this.defaults.renderer||new Ft(this.defaults);for(let r in t.renderer){if(!(r in e))throw new Error(`renderer '${r}' does not exist`);if(["options","parser"].includes(r))continue;let i=r,n=t.renderer[i],a=e[i];e[i]=(...t)=>{let r=n.apply(e,t);return!1===r&&(r=a.apply(e,t)),r||""}}r.renderer=e}if(t.tokenizer){let e=this.defaults.tokenizer||new Bt(this.defaults);for(let r in t.tokenizer){if(!(r in e))throw new Error(`tokenizer '${r}' does not exist`);if(["options","rules","lexer"].includes(r))continue;let i=r,n=t.tokenizer[i],a=e[i];e[i]=(...t)=>{let r=n.apply(e,t);return!1===r&&(r=a.apply(e,t)),r}}r.tokenizer=e}if(t.hooks){let e=this.defaults.hooks||new Dt;for(let r in t.hooks){if(!(r in e))throw new Error(`hook '${r}' does not exist`);if(["options","block"].includes(r))continue;let i=r,n=t.hooks[i],a=e[i];Dt.passThroughHooks.has(r)?e[i]=t=>{if(this.defaults.async&&Dt.passThroughHooksRespectAsync.has(r))return(async()=>{let r=await n.call(e,t);return a.call(e,r)})();let i=n.call(e,t);return a.call(e,i)}:e[i]=(...t)=>{if(this.defaults.async)return(async()=>{let r=await n.apply(e,t);return!1===r&&(r=await a.apply(e,t)),r})();let r=n.apply(e,t);return!1===r&&(r=a.apply(e,t)),r}}r.hooks=e}if(t.walkTokens){let e=this.defaults.walkTokens,i=t.walkTokens;r.walkTokens=function(t){let r=[];return r.push(i.call(this,t)),e&&(r=r.concat(e.call(this,t))),r}}this.defaults={...this.defaults,...r}})),this}setOptions(t){return this.defaults={...this.defaults,...t},this}lexer(t,e){return Lt.lex(t,e??this.defaults)}parser(t,e){return Et.parse(t,e??this.defaults)}parseMarkdown(t){return(e,r)=>{let i={...r},n={...this.defaults,...i},a=this.onError(!!n.silent,!!n.async);if(!0===this.defaults.async&&!1===i.async)return a(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof e>"u"||null===e)return a(new Error("marked(): input parameter is undefined or null"));if("string"!=typeof e)return a(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected"));if(n.hooks&&(n.hooks.options=n,n.hooks.block=t),n.async)return(async()=>{let r=n.hooks?await n.hooks.preprocess(e):e,i=await(n.hooks?await n.hooks.provideLexer():t?Lt.lex:Lt.lexInline)(r,n),a=n.hooks?await n.hooks.processAllTokens(i):i;n.walkTokens&&await Promise.all(this.walkTokens(a,n.walkTokens));let o=await(n.hooks?await n.hooks.provideParser():t?Et.parse:Et.parseInline)(a,n);return n.hooks?await n.hooks.postprocess(o):o})().catch(a);try{n.hooks&&(e=n.hooks.preprocess(e));let r=(n.hooks?n.hooks.provideLexer():t?Lt.lex:Lt.lexInline)(e,n);n.hooks&&(r=n.hooks.processAllTokens(r)),n.walkTokens&&this.walkTokens(r,n.walkTokens);let i=(n.hooks?n.hooks.provideParser():t?Et.parse:Et.parseInline)(r,n);return n.hooks&&(i=n.hooks.postprocess(i)),i}catch(o){return a(o)}}}onError(t,e){return r=>{if(r.message+="\nPlease report this to https://github.com/markedjs/marked.",t){let t="

    An error occurred:

    "+vt(r.message+"",!0)+"
    ";return e?Promise.resolve(t):t}if(e)return Promise.reject(r);throw r}}};function Rt(t,e){return Ot.parse(t,e)}Rt.options=Rt.setOptions=function(t){return Ot.setOptions(t),Rt.defaults=Ot.defaults,S(Rt.defaults),Rt},Rt.getDefaults=_,Rt.defaults=v,Rt.use=function(...t){return Ot.use(...t),Rt.defaults=Ot.defaults,S(Rt.defaults),Rt},Rt.walkTokens=function(t,e){return Ot.walkTokens(t,e)},Rt.parseInline=Ot.parseInline,Rt.Parser=Et,Rt.parser=Et.parse,Rt.Renderer=Ft,Rt.TextRenderer=$t,Rt.Lexer=Lt,Rt.lexer=Lt.lex,Rt.Tokenizer=Bt,Rt.Hooks=Dt,Rt.parse=Rt;Rt.options,Rt.setOptions,Rt.use,Rt.walkTokens,Rt.parseInline,Et.parse,Lt.lex;var Kt=r(60513),It={body:'?',height:80,width:80},Nt=new Map,zt=new Map,Pt=(0,a.K2)((t=>{for(const e of t){if(!e.name)throw new Error('Invalid icon loader. Must have a "name" property with non-empty string value.');if(a.Rm.debug("Registering icon pack:",e.name),"loader"in e)zt.set(e.name,e.loader);else{if(!("icons"in e))throw a.Rm.error("Invalid icon loader:",e),new Error('Invalid icon loader. Must have either "icons" or "loader" property.');Nt.set(e.name,e.icons)}}}),"registerIconPacks"),qt=(0,a.K2)((async(t,e)=>{const r=((t,e,r,i="")=>{const n=t.split(":");if("@"===t.slice(0,1)){if(n.length<2||n.length>3)return null;i=n.shift().slice(1)}if(n.length>3||!n.length)return null;if(n.length>1){const t=n.pop(),r=n.pop(),a={provider:n.length>0?n[0]:i,prefix:r,name:t};return e&&!o(a)?null:a}const a=n[0],s=a.split("-");if(s.length>1){const t={provider:i,prefix:s.shift(),name:s.join("-")};return e&&!o(t)?null:t}if(r&&""===i){const t={provider:i,prefix:"",name:a};return e&&!o(t,r)?null:t}return null})(t,!0,void 0!==e);if(!r)throw new Error(`Invalid icon name: ${t}`);const i=r.prefix||e;if(!i)throw new Error(`Icon name must contain a prefix: ${t}`);let n=Nt.get(i);if(!n){const t=zt.get(i);if(!t)throw new Error(`Icon set not found: ${r.prefix}`);try{n={...await t(),prefix:i},Nt.set(i,n)}catch(l){throw a.Rm.error(l),new Error(`Failed to load icon set: ${r.prefix}`)}}const s=p(n,r.name);if(!s)throw new Error(`Icon not found: ${t}`);return s}),"getRegisteredIconData"),jt=(0,a.K2)((async t=>{try{return await qt(t),!0}catch{return!1}}),"isIconAvailable"),Wt=(0,a.K2)((async(t,e,r)=>{let i;try{i=await qt(t,e?.fallbackPrefix)}catch(l){a.Rm.error(l),i=It}const o=function(t,e){const r={...c,...t},i={...g,...e},n={left:r.left,top:r.top,width:r.width,height:r.height};let a=r.body;[r,i].forEach((t=>{const e=[],r=t.hFlip,i=t.vFlip;let o,s=t.rotate;switch(r?i?s+=2:(e.push("translate("+(n.width+n.left).toString()+" "+(0-n.top).toString()+")"),e.push("scale(-1 1)"),n.top=n.left=0):i&&(e.push("translate("+(0-n.left).toString()+" "+(n.height+n.top).toString()+")"),e.push("scale(1 -1)"),n.top=n.left=0),s<0&&(s-=4*Math.floor(s/4)),s%=4,s){case 1:o=n.height/2+n.top,e.unshift("rotate(90 "+o.toString()+" "+o.toString()+")");break;case 2:e.unshift("rotate(180 "+(n.width/2+n.left).toString()+" "+(n.height/2+n.top).toString()+")");break;case 3:o=n.width/2+n.left,e.unshift("rotate(-90 "+o.toString()+" "+o.toString()+")")}s%2==1&&(n.left!==n.top&&(o=n.left,n.left=n.top,n.top=o),n.width!==n.height&&(o=n.width,n.width=n.height,n.height=o)),e.length&&(a=function(t,e,r){const i=function(t,e="defs"){let r="";const i=t.indexOf("<"+e);for(;i>=0;){const n=t.indexOf(">",i),a=t.indexOf("",a);if(-1===o)break;r+=t.slice(n+1,a).trim(),t=t.slice(0,i).trim()+t.slice(o+1)}return{defs:r,content:t}}(t);return n=i.defs,a=e+i.content+r,n?""+n+""+a:a;var n,a}(a,'',""))}));const o=i.width,s=i.height,l=n.width,h=n.height;let u,d;null===o?(d=null===s?"1em":"auto"===s?h:s,u=x(d,l/h)):(u="auto"===o?l:o,d=null===s?x(u,h/l):"auto"===s?h:s);const p={},f=(t,e)=>{(t=>"unset"===t||"undefined"===t||"none"===t)(e)||(p[t]=e.toString())};f("width",u),f("height",d);const y=[n.left,n.top,l,h];return p.viewBox=y.join(" "),{attributes:p,viewBox:y,body:a}}(i,e),s=function(t,e){let r=-1===t.indexOf("xlink:")?"":' xmlns:xlink="http://www.w3.org/1999/xlink"';for(const i in e)r+=" "+i+'="'+e[i]+'"';return'"+t+""}(function(t,e=k){const r=[];let i;for(;i=b.exec(t);)r.push(i[1]);if(!r.length)return t;const n="suffix"+(16777216*Math.random()|Date.now()).toString(16);return r.forEach((r=>{const i="function"==typeof e?e(r):e+(w++).toString(),a=r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");t=t.replace(new RegExp('([#;"])('+a+')([")]|\\.[a-z])',"g"),"$1"+i+n+"$3")})),t=t.replace(new RegExp(n,"g"),"")}(o.body),{...o.attributes,...r});return(0,n.jZ)(s,(0,n.zj)())}),"getIconSVG");function Ht(t,{markdownAutoWrap:e}){const r=t.replace(//g,"\n").replace(/\n{2,}/g,"\n"),i=(0,Kt.T)(r);return!1===e?i.replace(/ /g," "):i}function Ut(t,e={}){const r=Ht(t,e),i=Rt.lexer(r),n=[[]];let o=0;function s(t,e="normal"){if("text"===t.type){t.text.split("\n").forEach(((t,r)=>{0!==r&&(o++,n.push([])),t.split(" ").forEach((t=>{(t=t.replace(/'/g,"'"))&&n[o].push({content:t,type:e})}))}))}else"strong"===t.type||"em"===t.type?t.tokens.forEach((e=>{s(e,t.type)})):"html"===t.type&&n[o].push({content:t.text,type:"normal"})}return(0,a.K2)(s,"processNode"),i.forEach((t=>{"paragraph"===t.type?t.tokens?.forEach((t=>{s(t)})):"html"===t.type?n[o].push({content:t.text,type:"normal"}):n[o].push({content:t.raw,type:"normal"})})),n}function Yt(t,{markdownAutoWrap:e}={}){const r=Rt.lexer(t);function i(t){return"text"===t.type?!1===e?t.text.replace(/\n */g,"
    ").replace(/ /g," "):t.text.replace(/\n */g,"
    "):"strong"===t.type?`${t.tokens?.map(i).join("")}`:"em"===t.type?`${t.tokens?.map(i).join("")}`:"paragraph"===t.type?`

    ${t.tokens?.map(i).join("")}

    `:"space"===t.type?"":"html"===t.type?`${t.text}`:"escape"===t.type?t.text:(a.Rm.warn(`Unsupported markdown: ${t.type}`),t.raw)}return(0,a.K2)(i,"output"),r.map(i).join("")}function Gt(t){return Intl.Segmenter?[...(new Intl.Segmenter).segment(t)].map((t=>t.segment)):[...t]}function Xt(t,e){return Vt(t,[],Gt(e.content),e.type)}function Vt(t,e,r,i){if(0===r.length)return[{content:e.join(""),type:i},{content:"",type:i}];const[n,...a]=r,o=[...e,n];return t([{content:o.join(""),type:i}])?Vt(t,o,a,i):(0===e.length&&n&&(e.push(n),r.shift()),[{content:e.join(""),type:i},{content:r.join(""),type:i}])}function Zt(t,e){if(t.some((({content:t})=>t.includes("\n"))))throw new Error("splitLineToFitWidth does not support newlines in the line");return Qt(t,e)}function Qt(t,e,r=[],i=[]){if(0===t.length)return i.length>0&&r.push(i),r.length>0?r:[];let n="";" "===t[0].content&&(n=" ",t.shift());const a=t.shift()??{content:" ",type:"normal"},o=[...i];if(""!==n&&o.push({content:n,type:"normal"}),o.push(a),e(o))return Qt(t,e,r,o);if(i.length>0)r.push(i),t.unshift(a);else if(a.content){const[i,n]=Xt(e,a);r.push([i]),n.content&&t.unshift(n)}return Qt(t,e,r)}function Jt(t,e){e&&t.attr("style",e)}async function te(t,e,r,i,a=!1,o=(0,n.zj)()){const s=t.append("foreignObject");s.attr("width",10*r+"px"),s.attr("height",10*r+"px");const l=s.append("xhtml:div"),c=(0,n.Wi)(e.label)?await(0,n.dj)(e.label.replace(n.Y2.lineBreakRegex,"\n"),o):(0,n.jZ)(e.label,o),h=e.isNode?"nodeLabel":"edgeLabel",u=l.append("span");u.html(c),Jt(u,e.labelStyle),u.attr("class",`${h} ${i}`),Jt(l,e.labelStyle),l.style("display","table-cell"),l.style("white-space","nowrap"),l.style("line-height","1.5"),l.style("max-width",r+"px"),l.style("text-align","center"),l.attr("xmlns","http://www.w3.org/1999/xhtml"),a&&l.attr("class","labelBkg");let d=l.node().getBoundingClientRect();return d.width===r&&(l.style("display","table"),l.style("white-space","break-spaces"),l.style("width",r+"px"),d=l.node().getBoundingClientRect()),s.node()}function ee(t,e,r){return t.append("tspan").attr("class","text-outer-tspan").attr("x",0).attr("y",e*r-.1+"em").attr("dy",r+"em")}function re(t,e,r){const i=t.append("text"),n=ee(i,1,e);ae(n,r);const a=n.node().getComputedTextLength();return i.remove(),a}function ie(t,e,r){const i=t.append("text"),n=ee(i,1,e);ae(n,[{content:r,type:"normal"}]);const a=n.node()?.getBoundingClientRect();return a&&i.remove(),a}function ne(t,e,r,i=!1){const n=e.append("g"),o=n.insert("rect").attr("class","background").attr("style","stroke: none"),s=n.append("text").attr("y","-10.1");let l=0;for(const c of r){const e=(0,a.K2)((e=>re(n,1.1,e)<=t),"checkWidth"),r=e(c)?[c]:Zt(c,e);for(const t of r){ae(ee(s,l,1.1),t),l++}}if(i){const t=s.node().getBBox(),e=2;return o.attr("x",t.x-e).attr("y",t.y-e).attr("width",t.width+2*e).attr("height",t.height+2*e),n.node()}return s.node()}function ae(t,e){t.text(""),e.forEach(((e,r)=>{const i=t.append("tspan").attr("font-style","em"===e.type?"italic":"normal").attr("class","text-inner-tspan").attr("font-weight","strong"===e.type?"bold":"normal");0===r?i.text(e.content):i.text(" "+e.content)}))}async function oe(t,e={}){const r=[];t.replace(/(fa[bklrs]?):fa-([\w-]+)/g,((t,i,a)=>(r.push((async()=>{const r=`${i}:${a}`;return await jt(r)?await Wt(r,void 0,{class:"label-icon"}):``})()),t)));const i=await Promise.all(r);return t.replace(/(fa[bklrs]?):fa-([\w-]+)/g,(()=>i.shift()??""))}(0,a.K2)(Ht,"preprocessMarkdown"),(0,a.K2)(Ut,"markdownToLines"),(0,a.K2)(Yt,"markdownToHTML"),(0,a.K2)(Gt,"splitTextToChars"),(0,a.K2)(Xt,"splitWordToFitWidth"),(0,a.K2)(Vt,"splitWordToFitWidthRecursion"),(0,a.K2)(Zt,"splitLineToFitWidth"),(0,a.K2)(Qt,"splitLineToFitWidthRecursion"),(0,a.K2)(Jt,"applyStyle"),(0,a.K2)(te,"addHtmlSpan"),(0,a.K2)(ee,"createTspan"),(0,a.K2)(re,"computeWidthOfText"),(0,a.K2)(ie,"computeDimensionOfText"),(0,a.K2)(ne,"createFormattedText"),(0,a.K2)(ae,"updateTextContentAndStyles"),(0,a.K2)(oe,"replaceIconSubstring");var se=(0,a.K2)((async(t,e="",{style:r="",isTitle:o=!1,classes:s="",useHtmlLabels:l=!0,isNode:c=!0,width:h=200,addSvgBackground:u=!1}={},d)=>{if(a.Rm.debug("XYZ createText",e,r,o,s,l,c,"addSvgBackground: ",u),l){const a=Yt(e,d),o=await oe((0,i.Sm)(a),d),l=e.replace(/\\\\/g,"\\"),p={isNode:c,label:(0,n.Wi)(e)?l:o,labelStyle:r.replace("fill:","color:")};return await te(t,p,h,s,u,d)}{const i=ne(h,t,Ut(e.replace(//g,"
    ").replace("
    ","
    "),d),!!e&&u);if(c){/stroke:/.exec(r)&&(r=r.replace("stroke:","lineColor:"));const t=r.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/color:/g,"fill:");(0,C.Ltv)(i).attr("style",t)}else{const t=r.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/background:/g,"fill:");(0,C.Ltv)(i).select("rect").attr("style",t.replace(/background:/g,"fill:"));const e=r.replace(/stroke:[^;]+;?/g,"").replace(/stroke-width:[^;]+;?/g,"").replace(/fill:[^;]+;?/g,"").replace(/color:/g,"fill:");(0,C.Ltv)(i).select("text").attr("style",e)}return i}}),"createText")},5894:(t,e,r)=>{"use strict";r.d(e,{DA:()=>w,IU:()=>L,U:()=>B,U7:()=>Te,U_:()=>Me,Zk:()=>u,aP:()=>_e,gh:()=>Ae,lC:()=>p,on:()=>Se});var i=r(63245),n=r(32387),a=r(30092),o=r(13226),s=r(67633),l=r(40797),c=r(70451),h=r(29893),u=(0,l.K2)((async(t,e,r)=>{let i;const n=e.useHtmlLabels||(0,s._3)((0,s.D7)()?.htmlLabels);i=r||"node default";const h=t.insert("g").attr("class",i).attr("id",e.domId||e.id),u=h.insert("g").attr("class","label").attr("style",(0,o.KL)(e.labelStyle));let d;d=void 0===e.label?"":"string"==typeof e.label?e.label:e.label[0];const p=await(0,a.GZ)(u,(0,s.jZ)((0,o.Sm)(d),(0,s.D7)()),{useHtmlLabels:n,width:e.width||(0,s.D7)().flowchart?.wrappingWidth,cssClasses:"markdown-node-label",style:e.labelStyle,addSvgBackground:!!e.icon||!!e.img});let f=p.getBBox();const g=(e?.padding??0)/2;if(n){const t=p.children[0],e=(0,c.Ltv)(p),r=t.getElementsByTagName("img");if(r){const t=""===d.replace(/]*>/g,"").trim();await Promise.all([...r].map((e=>new Promise((r=>{function i(){if(e.style.display="flex",e.style.flexDirection="column",t){const t=(0,s.D7)().fontSize?(0,s.D7)().fontSize:window.getComputedStyle(document.body).fontSize,r=5,[i=s.UI.fontSize]=(0,o.I5)(t),n=i*r+"px";e.style.minWidth=n,e.style.maxWidth=n}else e.style.width="100%";r(e)}(0,l.K2)(i,"setupImage"),setTimeout((()=>{e.complete&&i()})),e.addEventListener("error",i),e.addEventListener("load",i)})))))}f=t.getBoundingClientRect(),e.attr("width",f.width),e.attr("height",f.height)}return n?u.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"):u.attr("transform","translate(0, "+-f.height/2+")"),e.centerLabel&&u.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"),u.insert("rect",":first-child"),{shapeSvg:h,bbox:f,halfPadding:g,label:u}}),"labelHelper"),d=(0,l.K2)((async(t,e,r)=>{const i=r.useHtmlLabels||(0,s._3)((0,s.D7)()?.flowchart?.htmlLabels),n=t.insert("g").attr("class","label").attr("style",r.labelStyle||""),l=await(0,a.GZ)(n,(0,s.jZ)((0,o.Sm)(e),(0,s.D7)()),{useHtmlLabels:i,width:r.width||(0,s.D7)()?.flowchart?.wrappingWidth,style:r.labelStyle,addSvgBackground:!!r.icon||!!r.img});let h=l.getBBox();const u=r.padding/2;if((0,s._3)((0,s.D7)()?.flowchart?.htmlLabels)){const t=l.children[0],e=(0,c.Ltv)(l);h=t.getBoundingClientRect(),e.attr("width",h.width),e.attr("height",h.height)}return i?n.attr("transform","translate("+-h.width/2+", "+-h.height/2+")"):n.attr("transform","translate(0, "+-h.height/2+")"),r.centerLabel&&n.attr("transform","translate("+-h.width/2+", "+-h.height/2+")"),n.insert("rect",":first-child"),{shapeSvg:t,bbox:h,halfPadding:u,label:n}}),"insertLabel"),p=(0,l.K2)(((t,e)=>{const r=e.node().getBBox();t.width=r.width,t.height=r.height}),"updateNodeBounds"),f=(0,l.K2)(((t,e)=>("handDrawn"===t.look?"rough-node":"node")+" "+t.cssClasses+" "+(e||"")),"getNodeClasses");function g(t){const e=t.map(((t,e)=>`${0===e?"M":"L"}${t.x},${t.y}`));return e.push("Z"),e.join(" ")}function y(t,e,r,i,n,a){const o=[],s=r-t,l=i-e,c=s/a,h=2*Math.PI/c,u=e+l/2;for(let d=0;d<=50;d++){const e=t+d/50*s,r=u+n*Math.sin(h*(e-t));o.push({x:e,y:r})}return o}function m(t,e,r,i,n,a){const o=[],s=n*Math.PI/180,l=(a*Math.PI/180-s)/(i-1);for(let c=0;c{var r,i,n=t.x,a=t.y,o=e.x-n,s=e.y-a,l=t.width/2,c=t.height/2;return Math.abs(s)*l>Math.abs(o)*c?(s<0&&(c=-c),r=0===s?0:c*o/s,i=c):(o<0&&(l=-l),r=l,i=0===o?0:l*s/o),{x:n+r,y:a+i}}),"intersectRect");function b(t,e){e&&t.attr("style",e)}async function k(t){const e=(0,c.Ltv)(document.createElementNS("http://www.w3.org/2000/svg","foreignObject")),r=e.append("xhtml:div"),i=(0,s.D7)();let n=t.label;t.label&&(0,s.Wi)(t.label)&&(n=await(0,s.dj)(t.label.replace(s.Y2.lineBreakRegex,"\n"),i));const a='"+n+"";return r.html((0,s.jZ)(a,i)),b(r,t.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"),e.node()}(0,l.K2)(b,"applyStyle"),(0,l.K2)(k,"addHtmlLabel");var w=(0,l.K2)((async(t,e,r,i)=>{let n=t||"";if("object"==typeof n&&(n=n[0]),(0,s._3)((0,s.D7)().flowchart.htmlLabels)){n=n.replace(/\\n|\n/g,"
    "),l.Rm.info("vertexText"+n);const t={isNode:i,label:(0,o.Sm)(n).replace(/fa[blrs]?:fa-[\w-]+/g,(t=>``)),labelStyle:e?e.replace("fill:","color:"):e};return await k(t)}{const t=document.createElementNS("http://www.w3.org/2000/svg","text");t.setAttribute("style",e.replace("color:","fill:"));let i=[];i="string"==typeof n?n.split(/\\n|\n|/gi):Array.isArray(n)?n:[];for(const e of i){const i=document.createElementNS("http://www.w3.org/2000/svg","tspan");i.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),i.setAttribute("dy","1em"),i.setAttribute("x","0"),r?i.setAttribute("class","title-row"):i.setAttribute("class","row"),i.textContent=e.trim(),t.appendChild(i)}return t}}),"createLabel"),C=(0,l.K2)(((t,e,r,i,n)=>["M",t+n,e,"H",t+r-n,"A",n,n,0,0,1,t+r,e+n,"V",e+i-n,"A",n,n,0,0,1,t+r-n,e+i,"H",t+n,"A",n,n,0,0,1,t,e+i-n,"V",e+n,"A",n,n,0,0,1,t+n,e,"Z"].join(" ")),"createRoundedRectPathD"),_=(0,l.K2)((async(t,e)=>{l.Rm.info("Creating subgraph rect for ",e.id,e);const r=(0,s.D7)(),{themeVariables:o,handDrawnSeed:u}=r,{clusterBkg:d,clusterBorder:p}=o,{labelStyles:f,nodeStyles:g,borderStyles:y,backgroundStyles:m}=(0,n.GX)(e),b=t.insert("g").attr("class","cluster "+e.cssClasses).attr("id",e.id).attr("data-look",e.look),k=(0,s._3)(r.flowchart.htmlLabels),w=b.insert("g").attr("class","cluster-label "),_=await(0,a.GZ)(w,e.label,{style:e.labelStyle,useHtmlLabels:k,isNode:!0});let v=_.getBBox();if((0,s._3)(r.flowchart.htmlLabels)){const t=_.children[0],e=(0,c.Ltv)(_);v=t.getBoundingClientRect(),e.attr("width",v.width),e.attr("height",v.height)}const S=e.width<=v.width+e.padding?v.width+e.padding:e.width;e.width<=v.width+e.padding?e.diff=(S-e.width)/2-e.padding:e.diff=-e.padding;const T=e.height,A=e.x-S/2,M=e.y-T/2;let B;if(l.Rm.trace("Data ",e,JSON.stringify(e)),"handDrawn"===e.look){const t=h.A.svg(b),r=(0,n.Fr)(e,{roughness:.7,fill:d,stroke:p,fillWeight:3,seed:u}),i=t.path(C(A,M,S,T,0),r);B=b.insert((()=>(l.Rm.debug("Rough node insert CXC",i),i)),":first-child"),B.select("path:nth-child(2)").attr("style",y.join(";")),B.select("path").attr("style",m.join(";").replace("fill","stroke"))}else B=b.insert("rect",":first-child"),B.attr("style",g).attr("rx",e.rx).attr("ry",e.ry).attr("x",A).attr("y",M).attr("width",S).attr("height",T);const{subGraphTitleTopMargin:L}=(0,i.O)(r);if(w.attr("transform",`translate(${e.x-v.width/2}, ${e.y-e.height/2+L})`),f){const t=w.select("span");t&&t.attr("style",f)}const F=B.node().getBBox();return e.offsetX=0,e.width=F.width,e.height=F.height,e.offsetY=v.height-e.padding/2,e.intersect=function(t){return x(e,t)},{cluster:b,labelBBox:v}}),"rect"),v=(0,l.K2)(((t,e)=>{const r=t.insert("g").attr("class","note-cluster").attr("id",e.id),i=r.insert("rect",":first-child"),n=0*e.padding,a=n/2;i.attr("rx",e.rx).attr("ry",e.ry).attr("x",e.x-e.width/2-a).attr("y",e.y-e.height/2-a).attr("width",e.width+n).attr("height",e.height+n).attr("fill","none");const o=i.node().getBBox();return e.width=o.width,e.height=o.height,e.intersect=function(t){return x(e,t)},{cluster:r,labelBBox:{width:0,height:0}}}),"noteGroup"),S=(0,l.K2)((async(t,e)=>{const r=(0,s.D7)(),{themeVariables:i,handDrawnSeed:n}=r,{altBackground:a,compositeBackground:o,compositeTitleBackground:l,nodeBorder:u}=i,d=t.insert("g").attr("class",e.cssClasses).attr("id",e.id).attr("data-id",e.id).attr("data-look",e.look),p=d.insert("g",":first-child"),f=d.insert("g").attr("class","cluster-label");let g=d.append("rect");const y=f.node().appendChild(await w(e.label,e.labelStyle,void 0,!0));let m=y.getBBox();if((0,s._3)(r.flowchart.htmlLabels)){const t=y.children[0],e=(0,c.Ltv)(y);m=t.getBoundingClientRect(),e.attr("width",m.width),e.attr("height",m.height)}const b=0*e.padding,k=b/2,_=(e.width<=m.width+e.padding?m.width+e.padding:e.width)+b;e.width<=m.width+e.padding?e.diff=(_-e.width)/2-e.padding:e.diff=-e.padding;const v=e.height+b,S=e.height+b-m.height-6,T=e.x-_/2,A=e.y-v/2;e.width=_;const M=e.y-e.height/2-k+m.height+2;let B;if("handDrawn"===e.look){const t=e.cssClasses.includes("statediagram-cluster-alt"),r=h.A.svg(d),i=e.rx||e.ry?r.path(C(T,A,_,v,10),{roughness:.7,fill:l,fillStyle:"solid",stroke:u,seed:n}):r.rectangle(T,A,_,v,{seed:n});B=d.insert((()=>i),":first-child");const s=r.rectangle(T,M,_,S,{fill:t?a:o,fillStyle:t?"hachure":"solid",stroke:u,seed:n});B=d.insert((()=>i),":first-child"),g=d.insert((()=>s))}else{B=p.insert("rect",":first-child");const t="outer";B.attr("class",t).attr("x",T).attr("y",A).attr("width",_).attr("height",v).attr("data-look",e.look),g.attr("class","inner").attr("x",T).attr("y",M).attr("width",_).attr("height",S)}f.attr("transform",`translate(${e.x-m.width/2}, ${A+1-((0,s._3)(r.flowchart.htmlLabels)?0:3)})`);const L=B.node().getBBox();return e.height=L.height,e.offsetX=0,e.offsetY=m.height-e.padding/2,e.labelBBox=m,e.intersect=function(t){return x(e,t)},{cluster:d,labelBBox:m}}),"roundedWithTitle"),T=(0,l.K2)((async(t,e)=>{l.Rm.info("Creating subgraph rect for ",e.id,e);const r=(0,s.D7)(),{themeVariables:o,handDrawnSeed:u}=r,{clusterBkg:d,clusterBorder:p}=o,{labelStyles:f,nodeStyles:g,borderStyles:y,backgroundStyles:m}=(0,n.GX)(e),b=t.insert("g").attr("class","cluster "+e.cssClasses).attr("id",e.id).attr("data-look",e.look),k=(0,s._3)(r.flowchart.htmlLabels),w=b.insert("g").attr("class","cluster-label "),_=await(0,a.GZ)(w,e.label,{style:e.labelStyle,useHtmlLabels:k,isNode:!0,width:e.width});let v=_.getBBox();if((0,s._3)(r.flowchart.htmlLabels)){const t=_.children[0],e=(0,c.Ltv)(_);v=t.getBoundingClientRect(),e.attr("width",v.width),e.attr("height",v.height)}const S=e.width<=v.width+e.padding?v.width+e.padding:e.width;e.width<=v.width+e.padding?e.diff=(S-e.width)/2-e.padding:e.diff=-e.padding;const T=e.height,A=e.x-S/2,M=e.y-T/2;let B;if(l.Rm.trace("Data ",e,JSON.stringify(e)),"handDrawn"===e.look){const t=h.A.svg(b),r=(0,n.Fr)(e,{roughness:.7,fill:d,stroke:p,fillWeight:4,seed:u}),i=t.path(C(A,M,S,T,e.rx),r);B=b.insert((()=>(l.Rm.debug("Rough node insert CXC",i),i)),":first-child"),B.select("path:nth-child(2)").attr("style",y.join(";")),B.select("path").attr("style",m.join(";").replace("fill","stroke"))}else B=b.insert("rect",":first-child"),B.attr("style",g).attr("rx",e.rx).attr("ry",e.ry).attr("x",A).attr("y",M).attr("width",S).attr("height",T);const{subGraphTitleTopMargin:L}=(0,i.O)(r);if(w.attr("transform",`translate(${e.x-v.width/2}, ${e.y-e.height/2+L})`),f){const t=w.select("span");t&&t.attr("style",f)}const F=B.node().getBBox();return e.offsetX=0,e.width=F.width,e.height=F.height,e.offsetY=v.height-e.padding/2,e.intersect=function(t){return x(e,t)},{cluster:b,labelBBox:v}}),"kanbanSection"),A={rect:_,squareRect:_,roundedWithTitle:S,noteGroup:v,divider:(0,l.K2)(((t,e)=>{const r=(0,s.D7)(),{themeVariables:i,handDrawnSeed:n}=r,{nodeBorder:a}=i,o=t.insert("g").attr("class",e.cssClasses).attr("id",e.id).attr("data-look",e.look),l=o.insert("g",":first-child"),c=0*e.padding,u=e.width+c;e.diff=-e.padding;const d=e.height+c,p=e.x-u/2,f=e.y-d/2;let g;if(e.width=u,"handDrawn"===e.look){const t=h.A.svg(o).rectangle(p,f,u,d,{fill:"lightgrey",roughness:.5,strokeLineDash:[5],stroke:a,seed:n});g=o.insert((()=>t),":first-child")}else{g=l.insert("rect",":first-child");const t="divider";g.attr("class",t).attr("x",p).attr("y",f).attr("width",u).attr("height",d).attr("data-look",e.look)}const y=g.node().getBBox();return e.height=y.height,e.offsetX=0,e.offsetY=0,e.intersect=function(t){return x(e,t)},{cluster:o,labelBBox:{}}}),"divider"),kanbanSection:T},M=new Map,B=(0,l.K2)((async(t,e)=>{const r=e.shape||"rect",i=await A[r](t,e);return M.set(e.id,i),i}),"insertCluster"),L=(0,l.K2)((()=>{M=new Map}),"clear");function F(t,e){return t.intersect(e)}(0,l.K2)(F,"intersectNode");var $=F;function E(t,e,r,i){var n=t.x,a=t.y,o=n-i.x,s=a-i.y,l=Math.sqrt(e*e*s*s+r*r*o*o),c=Math.abs(e*r*o/l);i.x0}(0,l.K2)(K,"intersectLine"),(0,l.K2)(I,"sameSign");var N=K;function z(t,e,r){let i=t.x,n=t.y,a=[],o=Number.POSITIVE_INFINITY,s=Number.POSITIVE_INFINITY;"function"==typeof e.forEach?e.forEach((function(t){o=Math.min(o,t.x),s=Math.min(s,t.y)})):(o=Math.min(o,e.x),s=Math.min(s,e.y));let l=i-t.width/2-o,c=n-t.height/2-s;for(let h=0;h1&&a.sort((function(t,e){let i=t.x-r.x,n=t.y-r.y,a=Math.sqrt(i*i+n*n),o=e.x-r.x,s=e.y-r.y,l=Math.sqrt(o*o+s*s);return ag),":first-child");return y.attr("class","anchor").attr("style",(0,o.KL)(c)),p(e,y),e.intersect=function(t){return l.Rm.info("Circle intersect",e,1,t),P.circle(e,1,t)},s}function j(t,e,r,i,n,a,o){const s=(t+r)/2,l=(e+i)/2,c=Math.atan2(i-e,r-t),h=(r-t)/2/n,u=(i-e)/2/a,d=Math.sqrt(h**2+u**2);if(d>1)throw new Error("The given radii are too small to create an arc between the points.");const p=Math.sqrt(1-d**2),f=s+p*a*Math.sin(c)*(o?-1:1),g=l-p*n*Math.cos(c)*(o?-1:1),y=Math.atan2((e-g)/a,(t-f)/n);let m=Math.atan2((i-g)/a,(r-f)/n)-y;o&&m<0&&(m+=2*Math.PI),!o&&m>0&&(m-=2*Math.PI);const x=[];for(let b=0;b<20;b++){const t=y+b/19*m,e=f+n*Math.cos(t),r=g+a*Math.sin(t);x.push({x:e,y:r})}return x}async function W(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o}=await u(t,e,f(e)),s=o.width+e.padding+20,l=o.height+e.padding,c=l/2,d=c/(2.5+l/50),{cssStyles:y}=e,m=[{x:s/2,y:-l/2},{x:-s/2,y:-l/2},...j(-s/2,-l/2,-s/2,l/2,d,c,!1),{x:s/2,y:l/2},...j(s/2,l/2,s/2,-l/2,d,c,!0)],x=h.A.svg(a),b=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(b.roughness=0,b.fillStyle="solid");const k=g(m),w=x.path(k,b),C=a.insert((()=>w),":first-child");return C.attr("class","basic label-container"),y&&"handDrawn"!==e.look&&C.selectAll("path").attr("style",y),i&&"handDrawn"!==e.look&&C.selectAll("path").attr("style",i),C.attr("transform",`translate(${d/2}, 0)`),p(e,C),e.intersect=function(t){return P.polygon(e,m,t)},a}function H(t,e,r,i){return t.insert("polygon",":first-child").attr("points",i.map((function(t){return t.x+","+t.y})).join(" ")).attr("class","label-container").attr("transform","translate("+-e/2+","+r/2+")")}async function U(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o}=await u(t,e,f(e)),s=o.height+e.padding,l=o.width+e.padding+12,c=-s,d=[{x:12,y:c},{x:l,y:c},{x:l,y:0},{x:0,y:0},{x:0,y:c+12},{x:12,y:c}];let y;const{cssStyles:m}=e;if("handDrawn"===e.look){const t=h.A.svg(a),r=(0,n.Fr)(e,{}),i=g(d),o=t.path(i,r);y=a.insert((()=>o),":first-child").attr("transform",`translate(${-l/2}, ${s/2})`),m&&y.attr("style",m)}else y=H(a,l,s,d);return i&&y.attr("style",i),p(e,y),e.intersect=function(t){return P.polygon(e,d,t)},a}function Y(t,e){const{nodeStyles:r}=(0,n.GX)(e);e.label="";const i=t.insert("g").attr("class",f(e)).attr("id",e.domId??e.id),{cssStyles:a}=e,o=Math.max(28,e.width??0),s=[{x:0,y:o/2},{x:o/2,y:0},{x:0,y:-o/2},{x:-o/2,y:0}],l=h.A.svg(i),c=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(c.roughness=0,c.fillStyle="solid");const u=g(s),d=l.path(u,c),p=i.insert((()=>d),":first-child");return a&&"handDrawn"!==e.look&&p.selectAll("path").attr("style",a),r&&"handDrawn"!==e.look&&p.selectAll("path").attr("style",r),e.width=28,e.height=28,e.intersect=function(t){return P.polygon(e,s,t)},i}async function G(t,e,r){const{labelStyles:i,nodeStyles:a}=(0,n.GX)(e);e.labelStyle=i;const{shapeSvg:s,bbox:c,halfPadding:d}=await u(t,e,f(e)),g=r?.padding??d,y=c.width/2+g;let m;const{cssStyles:x}=e;if("handDrawn"===e.look){const t=h.A.svg(s),r=(0,n.Fr)(e,{}),i=t.circle(0,0,2*y,r);m=s.insert((()=>i),":first-child"),m.attr("class","basic label-container").attr("style",(0,o.KL)(x))}else m=s.insert("circle",":first-child").attr("class","basic label-container").attr("style",a).attr("r",y).attr("cx",0).attr("cy",0);return p(e,m),e.calcIntersect=function(t,e){const r=t.width/2;return P.circle(t,r,e)},e.intersect=function(t){return l.Rm.info("Circle intersect",e,y,t),P.circle(e,y,t)},s}function X(t){const e=Math.cos(Math.PI/4),r=Math.sin(Math.PI/4),i=2*t;return`M ${-i/2*e},${i/2*r} L ${i/2*e},${-i/2*r}\n M ${i/2*e},${i/2*r} L ${-i/2*e},${-i/2*r}`}function V(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r,e.label="";const a=t.insert("g").attr("class",f(e)).attr("id",e.domId??e.id),o=Math.max(30,e?.width??0),{cssStyles:s}=e,c=h.A.svg(a),u=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(u.roughness=0,u.fillStyle="solid");const d=c.circle(0,0,2*o,u),g=X(o),y=c.path(g,u),m=a.insert((()=>d),":first-child");return m.insert((()=>y)),s&&"handDrawn"!==e.look&&m.selectAll("path").attr("style",s),i&&"handDrawn"!==e.look&&m.selectAll("path").attr("style",i),p(e,m),e.intersect=function(t){l.Rm.info("crossedCircle intersect",e,{radius:o,point:t});return P.circle(e,o,t)},a}function Z(t,e,r,i=100,n=0,a=180){const o=[],s=n*Math.PI/180,l=(a*Math.PI/180-s)/(i-1);for(let c=0;cv),":first-child").attr("stroke-opacity",0),S.insert((()=>C),":first-child"),S.attr("class","text"),y&&"handDrawn"!==e.look&&S.selectAll("path").attr("style",y),i&&"handDrawn"!==e.look&&S.selectAll("path").attr("style",i),S.attr("transform",`translate(${d}, 0)`),s.attr("transform",`translate(${-l/2+d-(o.x-(o.left??0))},${-c/2+(e.padding??0)/2-(o.y-(o.top??0))})`),p(e,S),e.intersect=function(t){return P.polygon(e,x,t)},a}function J(t,e,r,i=100,n=0,a=180){const o=[],s=n*Math.PI/180,l=(a*Math.PI/180-s)/(i-1);for(let c=0;cv),":first-child").attr("stroke-opacity",0),S.insert((()=>C),":first-child"),S.attr("class","text"),y&&"handDrawn"!==e.look&&S.selectAll("path").attr("style",y),i&&"handDrawn"!==e.look&&S.selectAll("path").attr("style",i),S.attr("transform",`translate(${-d}, 0)`),s.attr("transform",`translate(${-l/2+(e.padding??0)/2-(o.x-(o.left??0))},${-c/2+(e.padding??0)/2-(o.y-(o.top??0))})`),p(e,S),e.intersect=function(t){return P.polygon(e,x,t)},a}function et(t,e,r,i=100,n=0,a=180){const o=[],s=n*Math.PI/180,l=(a*Math.PI/180-s)/(i-1);for(let c=0;cA),":first-child").attr("stroke-opacity",0),M.insert((()=>_),":first-child"),M.insert((()=>S),":first-child"),M.attr("class","text"),y&&"handDrawn"!==e.look&&M.selectAll("path").attr("style",y),i&&"handDrawn"!==e.look&&M.selectAll("path").attr("style",i),M.attr("transform",`translate(${d-d/4}, 0)`),s.attr("transform",`translate(${-l/2+(e.padding??0)/2-(o.x-(o.left??0))},${-c/2+(e.padding??0)/2-(o.y-(o.top??0))})`),p(e,M),e.intersect=function(t){return P.polygon(e,b,t)},a}async function it(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o}=await u(t,e,f(e)),s=Math.max(80,1.25*(o.width+2*(e.padding??0)),e?.width??0),l=Math.max(20,o.height+2*(e.padding??0),e?.height??0),c=l/2,{cssStyles:d}=e,y=h.A.svg(a),x=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(x.roughness=0,x.fillStyle="solid");const b=s-c,k=l/4,w=[{x:b,y:0},{x:k,y:0},{x:0,y:l/2},{x:k,y:l},{x:b,y:l},...m(-b,-l/2,c,50,270,90)],C=g(w),_=y.path(C,x),v=a.insert((()=>_),":first-child");return v.attr("class","basic label-container"),d&&"handDrawn"!==e.look&&v.selectChildren("path").attr("style",d),i&&"handDrawn"!==e.look&&v.selectChildren("path").attr("style",i),v.attr("transform",`translate(${-s/2}, ${-l/2})`),p(e,v),e.intersect=function(t){return P.polygon(e,w,t)},a}(0,l.K2)(q,"anchor"),(0,l.K2)(j,"generateArcPoints"),(0,l.K2)(W,"bowTieRect"),(0,l.K2)(H,"insertPolygonShape"),(0,l.K2)(U,"card"),(0,l.K2)(Y,"choice"),(0,l.K2)(G,"circle"),(0,l.K2)(X,"createLine"),(0,l.K2)(V,"crossedCircle"),(0,l.K2)(Z,"generateCirclePoints"),(0,l.K2)(Q,"curlyBraceLeft"),(0,l.K2)(J,"generateCirclePoints"),(0,l.K2)(tt,"curlyBraceRight"),(0,l.K2)(et,"generateCirclePoints"),(0,l.K2)(rt,"curlyBraces"),(0,l.K2)(it,"curvedTrapezoid");var nt=(0,l.K2)(((t,e,r,i,n,a)=>[`M${t},${e+a}`,`a${n},${a} 0,0,0 ${r},0`,`a${n},${a} 0,0,0 ${-r},0`,`l0,${i}`,`a${n},${a} 0,0,0 ${r},0`,"l0,"+-i].join(" ")),"createCylinderPathD"),at=(0,l.K2)(((t,e,r,i,n,a)=>[`M${t},${e+a}`,`M${t+r},${e+a}`,`a${n},${a} 0,0,0 ${-r},0`,`l0,${i}`,`a${n},${a} 0,0,0 ${r},0`,"l0,"+-i].join(" ")),"createOuterCylinderPathD"),ot=(0,l.K2)(((t,e,r,i,n,a)=>[`M${t-r/2},${-i/2}`,`a${n},${a} 0,0,0 ${r},0`].join(" ")),"createInnerCylinderPathD");async function st(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:s,label:l}=await u(t,e,f(e)),c=Math.max(s.width+e.padding,e.width??0),d=c/2,g=d/(2.5+c/50),y=Math.max(s.height+g+e.padding,e.height??0);let m;const{cssStyles:x}=e;if("handDrawn"===e.look){const t=h.A.svg(a),r=at(0,0,c,y,d,g),i=ot(0,g,c,y,d,g),o=t.path(r,(0,n.Fr)(e,{})),s=t.path(i,(0,n.Fr)(e,{fill:"none"}));m=a.insert((()=>s),":first-child"),m=a.insert((()=>o),":first-child"),m.attr("class","basic label-container"),x&&m.attr("style",x)}else{const t=nt(0,0,c,y,d,g);m=a.insert("path",":first-child").attr("d",t).attr("class","basic label-container").attr("style",(0,o.KL)(x)).attr("style",i)}return m.attr("label-offset-y",g),m.attr("transform",`translate(${-c/2}, ${-(y/2+g)})`),p(e,m),l.attr("transform",`translate(${-s.width/2-(s.x-(s.left??0))}, ${-s.height/2+(e.padding??0)/1.5-(s.y-(s.top??0))})`),e.intersect=function(t){const r=P.rect(e,t),i=r.x-(e.x??0);if(0!=d&&(Math.abs(i)<(e.width??0)/2||Math.abs(i)==(e.width??0)/2&&Math.abs(r.y-(e.y??0))>(e.height??0)/2-g)){let n=g*g*(1-i*i/(d*d));n>0&&(n=Math.sqrt(n)),n=g-n,t.y-(e.y??0)>0&&(n=-n),r.y+=n}return r},a}async function lt(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o,label:s}=await u(t,e,f(e)),l=o.width+e.padding,c=o.height+e.padding,d=.2*c,g=-l/2,y=-c/2-d/2,{cssStyles:m}=e,x=h.A.svg(a),b=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(b.roughness=0,b.fillStyle="solid");const k=[{x:g,y:y+d},{x:-g,y:y+d},{x:-g,y:-y},{x:g,y:-y},{x:g,y:y},{x:-g,y:y},{x:-g,y:y+d}],w=x.polygon(k.map((t=>[t.x,t.y])),b),C=a.insert((()=>w),":first-child");return C.attr("class","basic label-container"),m&&"handDrawn"!==e.look&&C.selectAll("path").attr("style",m),i&&"handDrawn"!==e.look&&C.selectAll("path").attr("style",i),s.attr("transform",`translate(${g+(e.padding??0)/2-(o.x-(o.left??0))}, ${y+d+(e.padding??0)/2-(o.y-(o.top??0))})`),p(e,C),e.intersect=function(t){return P.rect(e,t)},a}async function ct(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:s,halfPadding:c}=await u(t,e,f(e)),d=s.width/2+c+5,g=s.width/2+c;let y;const{cssStyles:m}=e;if("handDrawn"===e.look){const t=h.A.svg(a),r=(0,n.Fr)(e,{roughness:.2,strokeWidth:2.5}),i=(0,n.Fr)(e,{roughness:.2,strokeWidth:1.5}),s=t.circle(0,0,2*d,r),l=t.circle(0,0,2*g,i);y=a.insert("g",":first-child"),y.attr("class",(0,o.KL)(e.cssClasses)).attr("style",(0,o.KL)(m)),y.node()?.appendChild(s),y.node()?.appendChild(l)}else{y=a.insert("g",":first-child");const t=y.insert("circle",":first-child"),e=y.insert("circle");y.attr("class","basic label-container").attr("style",i),t.attr("class","outer-circle").attr("style",i).attr("r",d).attr("cx",0).attr("cy",0),e.attr("class","inner-circle").attr("style",i).attr("r",g).attr("cx",0).attr("cy",0)}return p(e,y),e.intersect=function(t){return l.Rm.info("DoubleCircle intersect",e,d,t),P.circle(e,d,t)},a}function ht(t,e,{config:{themeVariables:r}}){const{labelStyles:i,nodeStyles:a}=(0,n.GX)(e);e.label="",e.labelStyle=i;const o=t.insert("g").attr("class",f(e)).attr("id",e.domId??e.id),{cssStyles:s}=e,c=h.A.svg(o),{nodeBorder:u}=r,d=(0,n.Fr)(e,{fillStyle:"solid"});"handDrawn"!==e.look&&(d.roughness=0);const g=c.circle(0,0,14,d),y=o.insert((()=>g),":first-child");return y.selectAll("path").attr("style",`fill: ${u} !important;`),s&&s.length>0&&"handDrawn"!==e.look&&y.selectAll("path").attr("style",s),a&&"handDrawn"!==e.look&&y.selectAll("path").attr("style",a),p(e,y),e.intersect=function(t){l.Rm.info("filledCircle intersect",e,{radius:7,point:t});return P.circle(e,7,t)},o}async function ut(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o,label:s}=await u(t,e,f(e)),c=o.width+(e.padding??0),d=c+o.height,y=c+o.height,m=[{x:0,y:-d},{x:y,y:-d},{x:y/2,y:0}],{cssStyles:x}=e,b=h.A.svg(a),k=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(k.roughness=0,k.fillStyle="solid");const w=g(m),C=b.path(w,k),_=a.insert((()=>C),":first-child").attr("transform",`translate(${-d/2}, ${d/2})`);return x&&"handDrawn"!==e.look&&_.selectChildren("path").attr("style",x),i&&"handDrawn"!==e.look&&_.selectChildren("path").attr("style",i),e.width=c,e.height=d,p(e,_),s.attr("transform",`translate(${-o.width/2-(o.x-(o.left??0))}, ${-d/2+(e.padding??0)/2+(o.y-(o.top??0))})`),e.intersect=function(t){return l.Rm.info("Triangle intersect",e,m,t),P.polygon(e,m,t)},a}function dt(t,e,{dir:r,config:{state:i,themeVariables:a}}){const{nodeStyles:o}=(0,n.GX)(e);e.label="";const s=t.insert("g").attr("class",f(e)).attr("id",e.domId??e.id),{cssStyles:l}=e;let c=Math.max(70,e?.width??0),u=Math.max(10,e?.height??0);"LR"===r&&(c=Math.max(10,e?.width??0),u=Math.max(70,e?.height??0));const d=-1*c/2,g=-1*u/2,y=h.A.svg(s),m=(0,n.Fr)(e,{stroke:a.lineColor,fill:a.lineColor});"handDrawn"!==e.look&&(m.roughness=0,m.fillStyle="solid");const x=y.rectangle(d,g,c,u,m),b=s.insert((()=>x),":first-child");l&&"handDrawn"!==e.look&&b.selectAll("path").attr("style",l),o&&"handDrawn"!==e.look&&b.selectAll("path").attr("style",o),p(e,b);const k=i?.padding??0;return e.width&&e.height&&(e.width+=k/2||0,e.height+=k/2||0),e.intersect=function(t){return P.rect(e,t)},s}async function pt(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o}=await u(t,e,f(e)),s=Math.max(80,o.width+2*(e.padding??0),e?.width??0),c=Math.max(50,o.height+2*(e.padding??0),e?.height??0),d=c/2,{cssStyles:y}=e,x=h.A.svg(a),b=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(b.roughness=0,b.fillStyle="solid");const k=[{x:-s/2,y:-c/2},{x:s/2-d,y:-c/2},...m(-s/2+d,0,d,50,90,270),{x:s/2-d,y:c/2},{x:-s/2,y:c/2}],w=g(k),C=x.path(w,b),_=a.insert((()=>C),":first-child");return _.attr("class","basic label-container"),y&&"handDrawn"!==e.look&&_.selectChildren("path").attr("style",y),i&&"handDrawn"!==e.look&&_.selectChildren("path").attr("style",i),p(e,_),e.intersect=function(t){l.Rm.info("Pill intersect",e,{radius:d,point:t});return P.polygon(e,k,t)},a}async function ft(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o}=await u(t,e,f(e)),s=o.height+(e.padding??0),l=o.width+2.5*(e.padding??0),{cssStyles:c}=e,d=h.A.svg(a),y=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(y.roughness=0,y.fillStyle="solid");let m=l/2;m+=m/6;const x=s/2,b=m-x/2,k=[{x:-b,y:-x},{x:0,y:-x},{x:b,y:-x},{x:m,y:0},{x:b,y:x},{x:0,y:x},{x:-b,y:x},{x:-m,y:0}],w=g(k),C=d.path(w,y),_=a.insert((()=>C),":first-child");return _.attr("class","basic label-container"),c&&"handDrawn"!==e.look&&_.selectChildren("path").attr("style",c),i&&"handDrawn"!==e.look&&_.selectChildren("path").attr("style",i),e.width=l,e.height=s,p(e,_),e.intersect=function(t){return P.polygon(e,k,t)},a}async function gt(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.label="",e.labelStyle=r;const{shapeSvg:a}=await u(t,e,f(e)),o=Math.max(30,e?.width??0),s=Math.max(30,e?.height??0),{cssStyles:c}=e,d=h.A.svg(a),y=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(y.roughness=0,y.fillStyle="solid");const m=[{x:0,y:0},{x:o,y:0},{x:0,y:s},{x:o,y:s}],x=g(m),b=d.path(x,y),k=a.insert((()=>b),":first-child");return k.attr("class","basic label-container"),c&&"handDrawn"!==e.look&&k.selectChildren("path").attr("style",c),i&&"handDrawn"!==e.look&&k.selectChildren("path").attr("style",i),k.attr("transform",`translate(${-o/2}, ${-s/2})`),p(e,k),e.intersect=function(t){l.Rm.info("Pill intersect",e,{points:m});return P.polygon(e,m,t)},a}async function yt(t,e,{config:{themeVariables:r,flowchart:i}}){const{labelStyles:o}=(0,n.GX)(e);e.labelStyle=o;const s=e.assetHeight??48,c=e.assetWidth??48,d=Math.max(s,c),f=i?.wrappingWidth;e.width=Math.max(d,f??0);const{shapeSvg:g,bbox:y,label:m}=await u(t,e,"icon-shape default"),x="t"===e.pos,b=d,k=d,{nodeBorder:w}=r,{stylesMap:C}=(0,n.WW)(e),_=-k/2,v=-b/2,S=e.label?8:0,T=h.A.svg(g),A=(0,n.Fr)(e,{stroke:"none",fill:"none"});"handDrawn"!==e.look&&(A.roughness=0,A.fillStyle="solid");const M=T.rectangle(_,v,k,b,A),B=Math.max(k,y.width),L=b+y.height+S,F=T.rectangle(-B/2,-L/2,B,L,{...A,fill:"transparent",stroke:"none"}),$=g.insert((()=>M),":first-child"),E=g.insert((()=>F));if(e.icon){const t=g.append("g");t.html(`${await(0,a.WY)(e.icon,{height:d,width:d,fallbackPrefix:""})}`);const r=t.node().getBBox(),i=r.width,n=r.height,o=r.x,s=r.y;t.attr("transform",`translate(${-i/2-o},${x?y.height/2+S/2-n/2-s:-y.height/2-S/2-n/2-s})`),t.attr("style",`color: ${C.get("stroke")??w};`)}return m.attr("transform",`translate(${-y.width/2-(y.x-(y.left??0))},${x?-L/2:L/2-y.height})`),$.attr("transform",`translate(0,${x?y.height/2+S/2:-y.height/2-S/2})`),p(e,E),e.intersect=function(t){if(l.Rm.info("iconSquare intersect",e,t),!e.label)return P.rect(e,t);const r=e.x??0,i=e.y??0,n=e.height??0;let a=[];a=x?[{x:r-y.width/2,y:i-n/2},{x:r+y.width/2,y:i-n/2},{x:r+y.width/2,y:i-n/2+y.height+S},{x:r+k/2,y:i-n/2+y.height+S},{x:r+k/2,y:i+n/2},{x:r-k/2,y:i+n/2},{x:r-k/2,y:i-n/2+y.height+S},{x:r-y.width/2,y:i-n/2+y.height+S}]:[{x:r-k/2,y:i-n/2},{x:r+k/2,y:i-n/2},{x:r+k/2,y:i-n/2+b},{x:r+y.width/2,y:i-n/2+b},{x:r+y.width/2/2,y:i+n/2},{x:r-y.width/2,y:i+n/2},{x:r-y.width/2,y:i-n/2+b},{x:r-k/2,y:i-n/2+b}];return P.polygon(e,a,t)},g}async function mt(t,e,{config:{themeVariables:r,flowchart:i}}){const{labelStyles:o}=(0,n.GX)(e);e.labelStyle=o;const s=e.assetHeight??48,c=e.assetWidth??48,d=Math.max(s,c),f=i?.wrappingWidth;e.width=Math.max(d,f??0);const{shapeSvg:g,bbox:y,label:m}=await u(t,e,"icon-shape default"),x=e.label?8:0,b="t"===e.pos,{nodeBorder:k,mainBkg:w}=r,{stylesMap:C}=(0,n.WW)(e),_=h.A.svg(g),v=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(v.roughness=0,v.fillStyle="solid");const S=C.get("fill");v.stroke=S??w;const T=g.append("g");e.icon&&T.html(`${await(0,a.WY)(e.icon,{height:d,width:d,fallbackPrefix:""})}`);const A=T.node().getBBox(),M=A.width,B=A.height,L=A.x,F=A.y,$=Math.max(M,B)*Math.SQRT2+40,E=_.circle(0,0,$,v),D=Math.max($,y.width),O=$+y.height+x,R=_.rectangle(-D/2,-O/2,D,O,{...v,fill:"transparent",stroke:"none"}),K=g.insert((()=>E),":first-child"),I=g.insert((()=>R));return T.attr("transform",`translate(${-M/2-L},${b?y.height/2+x/2-B/2-F:-y.height/2-x/2-B/2-F})`),T.attr("style",`color: ${C.get("stroke")??k};`),m.attr("transform",`translate(${-y.width/2-(y.x-(y.left??0))},${b?-O/2:O/2-y.height})`),K.attr("transform",`translate(0,${b?y.height/2+x/2:-y.height/2-x/2})`),p(e,I),e.intersect=function(t){l.Rm.info("iconSquare intersect",e,t);return P.rect(e,t)},g}async function xt(t,e,{config:{themeVariables:r,flowchart:i}}){const{labelStyles:o}=(0,n.GX)(e);e.labelStyle=o;const s=e.assetHeight??48,c=e.assetWidth??48,d=Math.max(s,c),f=i?.wrappingWidth;e.width=Math.max(d,f??0);const{shapeSvg:g,bbox:y,halfPadding:m,label:x}=await u(t,e,"icon-shape default"),b="t"===e.pos,k=d+2*m,w=d+2*m,{nodeBorder:_,mainBkg:v}=r,{stylesMap:S}=(0,n.WW)(e),T=-w/2,A=-k/2,M=e.label?8:0,B=h.A.svg(g),L=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(L.roughness=0,L.fillStyle="solid");const F=S.get("fill");L.stroke=F??v;const $=B.path(C(T,A,w,k,5),L),E=Math.max(w,y.width),D=k+y.height+M,O=B.rectangle(-E/2,-D/2,E,D,{...L,fill:"transparent",stroke:"none"}),R=g.insert((()=>$),":first-child").attr("class","icon-shape2"),K=g.insert((()=>O));if(e.icon){const t=g.append("g");t.html(`${await(0,a.WY)(e.icon,{height:d,width:d,fallbackPrefix:""})}`);const r=t.node().getBBox(),i=r.width,n=r.height,o=r.x,s=r.y;t.attr("transform",`translate(${-i/2-o},${b?y.height/2+M/2-n/2-s:-y.height/2-M/2-n/2-s})`),t.attr("style",`color: ${S.get("stroke")??_};`)}return x.attr("transform",`translate(${-y.width/2-(y.x-(y.left??0))},${b?-D/2:D/2-y.height})`),R.attr("transform",`translate(0,${b?y.height/2+M/2:-y.height/2-M/2})`),p(e,K),e.intersect=function(t){if(l.Rm.info("iconSquare intersect",e,t),!e.label)return P.rect(e,t);const r=e.x??0,i=e.y??0,n=e.height??0;let a=[];a=b?[{x:r-y.width/2,y:i-n/2},{x:r+y.width/2,y:i-n/2},{x:r+y.width/2,y:i-n/2+y.height+M},{x:r+w/2,y:i-n/2+y.height+M},{x:r+w/2,y:i+n/2},{x:r-w/2,y:i+n/2},{x:r-w/2,y:i-n/2+y.height+M},{x:r-y.width/2,y:i-n/2+y.height+M}]:[{x:r-w/2,y:i-n/2},{x:r+w/2,y:i-n/2},{x:r+w/2,y:i-n/2+k},{x:r+y.width/2,y:i-n/2+k},{x:r+y.width/2/2,y:i+n/2},{x:r-y.width/2,y:i+n/2},{x:r-y.width/2,y:i-n/2+k},{x:r-w/2,y:i-n/2+k}];return P.polygon(e,a,t)},g}async function bt(t,e,{config:{themeVariables:r,flowchart:i}}){const{labelStyles:o}=(0,n.GX)(e);e.labelStyle=o;const s=e.assetHeight??48,c=e.assetWidth??48,d=Math.max(s,c),f=i?.wrappingWidth;e.width=Math.max(d,f??0);const{shapeSvg:g,bbox:y,halfPadding:m,label:x}=await u(t,e,"icon-shape default"),b="t"===e.pos,k=d+2*m,w=d+2*m,{nodeBorder:_,mainBkg:v}=r,{stylesMap:S}=(0,n.WW)(e),T=-w/2,A=-k/2,M=e.label?8:0,B=h.A.svg(g),L=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(L.roughness=0,L.fillStyle="solid");const F=S.get("fill");L.stroke=F??v;const $=B.path(C(T,A,w,k,.1),L),E=Math.max(w,y.width),D=k+y.height+M,O=B.rectangle(-E/2,-D/2,E,D,{...L,fill:"transparent",stroke:"none"}),R=g.insert((()=>$),":first-child"),K=g.insert((()=>O));if(e.icon){const t=g.append("g");t.html(`${await(0,a.WY)(e.icon,{height:d,width:d,fallbackPrefix:""})}`);const r=t.node().getBBox(),i=r.width,n=r.height,o=r.x,s=r.y;t.attr("transform",`translate(${-i/2-o},${b?y.height/2+M/2-n/2-s:-y.height/2-M/2-n/2-s})`),t.attr("style",`color: ${S.get("stroke")??_};`)}return x.attr("transform",`translate(${-y.width/2-(y.x-(y.left??0))},${b?-D/2:D/2-y.height})`),R.attr("transform",`translate(0,${b?y.height/2+M/2:-y.height/2-M/2})`),p(e,K),e.intersect=function(t){if(l.Rm.info("iconSquare intersect",e,t),!e.label)return P.rect(e,t);const r=e.x??0,i=e.y??0,n=e.height??0;let a=[];a=b?[{x:r-y.width/2,y:i-n/2},{x:r+y.width/2,y:i-n/2},{x:r+y.width/2,y:i-n/2+y.height+M},{x:r+w/2,y:i-n/2+y.height+M},{x:r+w/2,y:i+n/2},{x:r-w/2,y:i+n/2},{x:r-w/2,y:i-n/2+y.height+M},{x:r-y.width/2,y:i-n/2+y.height+M}]:[{x:r-w/2,y:i-n/2},{x:r+w/2,y:i-n/2},{x:r+w/2,y:i-n/2+k},{x:r+y.width/2,y:i-n/2+k},{x:r+y.width/2/2,y:i+n/2},{x:r-y.width/2,y:i+n/2},{x:r-y.width/2,y:i-n/2+k},{x:r-w/2,y:i-n/2+k}];return P.polygon(e,a,t)},g}async function kt(t,e,{config:{flowchart:r}}){const i=new Image;i.src=e?.img??"",await i.decode();const a=Number(i.naturalWidth.toString().replace("px","")),o=Number(i.naturalHeight.toString().replace("px",""));e.imageAspectRatio=a/o;const{labelStyles:s}=(0,n.GX)(e);e.labelStyle=s;const c=r?.wrappingWidth;e.defaultWidth=r?.wrappingWidth;const d=Math.max(e.label?c??0:0,e?.assetWidth??a),f="on"===e.constraint&&e?.assetHeight?e.assetHeight*e.imageAspectRatio:d,g="on"===e.constraint?f/e.imageAspectRatio:e?.assetHeight??o;e.width=Math.max(f,c??0);const{shapeSvg:y,bbox:m,label:x}=await u(t,e,"image-shape default"),b="t"===e.pos,k=-f/2,w=-g/2,C=e.label?8:0,_=h.A.svg(y),v=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(v.roughness=0,v.fillStyle="solid");const S=_.rectangle(k,w,f,g,v),T=Math.max(f,m.width),A=g+m.height+C,M=_.rectangle(-T/2,-A/2,T,A,{...v,fill:"none",stroke:"none"}),B=y.insert((()=>S),":first-child"),L=y.insert((()=>M));if(e.img){const t=y.append("image");t.attr("href",e.img),t.attr("width",f),t.attr("height",g),t.attr("preserveAspectRatio","none"),t.attr("transform",`translate(${-f/2},${b?A/2-g:-A/2})`)}return x.attr("transform",`translate(${-m.width/2-(m.x-(m.left??0))},${b?-g/2-m.height/2-C/2:g/2-m.height/2+C/2})`),B.attr("transform",`translate(0,${b?m.height/2+C/2:-m.height/2-C/2})`),p(e,L),e.intersect=function(t){if(l.Rm.info("iconSquare intersect",e,t),!e.label)return P.rect(e,t);const r=e.x??0,i=e.y??0,n=e.height??0;let a=[];a=b?[{x:r-m.width/2,y:i-n/2},{x:r+m.width/2,y:i-n/2},{x:r+m.width/2,y:i-n/2+m.height+C},{x:r+f/2,y:i-n/2+m.height+C},{x:r+f/2,y:i+n/2},{x:r-f/2,y:i+n/2},{x:r-f/2,y:i-n/2+m.height+C},{x:r-m.width/2,y:i-n/2+m.height+C}]:[{x:r-f/2,y:i-n/2},{x:r+f/2,y:i-n/2},{x:r+f/2,y:i-n/2+g},{x:r+m.width/2,y:i-n/2+g},{x:r+m.width/2/2,y:i+n/2},{x:r-m.width/2,y:i+n/2},{x:r-m.width/2,y:i-n/2+g},{x:r-f/2,y:i-n/2+g}];return P.polygon(e,a,t)},y}async function wt(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o}=await u(t,e,f(e)),s=Math.max(o.width+2*(e.padding??0),e?.width??0),l=Math.max(o.height+2*(e.padding??0),e?.height??0),c=[{x:0,y:0},{x:s,y:0},{x:s+3*l/6,y:-l},{x:-3*l/6,y:-l}];let d;const{cssStyles:y}=e;if("handDrawn"===e.look){const t=h.A.svg(a),r=(0,n.Fr)(e,{}),i=g(c),o=t.path(i,r);d=a.insert((()=>o),":first-child").attr("transform",`translate(${-s/2}, ${l/2})`),y&&d.attr("style",y)}else d=H(a,s,l,c);return i&&d.attr("style",i),e.width=s,e.height=l,p(e,d),e.intersect=function(t){return P.polygon(e,c,t)},a}async function Ct(t,e,r){const{labelStyles:i,nodeStyles:a}=(0,n.GX)(e);e.labelStyle=i;const{shapeSvg:s,bbox:l}=await u(t,e,f(e)),c=Math.max(l.width+2*r.labelPaddingX,e?.width||0),d=Math.max(l.height+2*r.labelPaddingY,e?.height||0),g=-c/2,y=-d/2;let m,{rx:x,ry:b}=e;const{cssStyles:k}=e;if(r?.rx&&r.ry&&(x=r.rx,b=r.ry),"handDrawn"===e.look){const t=h.A.svg(s),r=(0,n.Fr)(e,{}),i=x||b?t.path(C(g,y,c,d,x||0),r):t.rectangle(g,y,c,d,r);m=s.insert((()=>i),":first-child"),m.attr("class","basic label-container").attr("style",(0,o.KL)(k))}else m=s.insert("rect",":first-child"),m.attr("class","basic label-container").attr("style",a).attr("rx",(0,o.KL)(x)).attr("ry",(0,o.KL)(b)).attr("x",g).attr("y",y).attr("width",c).attr("height",d);return p(e,m),e.calcIntersect=function(t,e){return P.rect(t,e)},e.intersect=function(t){return P.rect(e,t)},s}async function _t(t,e){const{shapeSvg:r,bbox:i,label:n}=await u(t,e,"label"),a=r.insert("rect",":first-child");return a.attr("width",.1).attr("height",.1),r.attr("class","label edgeLabel"),n.attr("transform",`translate(${-i.width/2-(i.x-(i.left??0))}, ${-i.height/2-(i.y-(i.top??0))})`),p(e,a),e.intersect=function(t){return P.rect(e,t)},r}async function vt(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o}=await u(t,e,f(e)),s=Math.max(o.width+(e.padding??0),e?.width??0),l=Math.max(o.height+(e.padding??0),e?.height??0),c=[{x:0,y:0},{x:s+3*l/6,y:0},{x:s,y:-l},{x:-3*l/6,y:-l}];let d;const{cssStyles:y}=e;if("handDrawn"===e.look){const t=h.A.svg(a),r=(0,n.Fr)(e,{}),i=g(c),o=t.path(i,r);d=a.insert((()=>o),":first-child").attr("transform",`translate(${-s/2}, ${l/2})`),y&&d.attr("style",y)}else d=H(a,s,l,c);return i&&d.attr("style",i),e.width=s,e.height=l,p(e,d),e.intersect=function(t){return P.polygon(e,c,t)},a}async function St(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o}=await u(t,e,f(e)),s=Math.max(o.width+(e.padding??0),e?.width??0),l=Math.max(o.height+(e.padding??0),e?.height??0),c=[{x:-3*l/6,y:0},{x:s,y:0},{x:s+3*l/6,y:-l},{x:0,y:-l}];let d;const{cssStyles:y}=e;if("handDrawn"===e.look){const t=h.A.svg(a),r=(0,n.Fr)(e,{}),i=g(c),o=t.path(i,r);d=a.insert((()=>o),":first-child").attr("transform",`translate(${-s/2}, ${l/2})`),y&&d.attr("style",y)}else d=H(a,s,l,c);return i&&d.attr("style",i),e.width=s,e.height=l,p(e,d),e.intersect=function(t){return P.polygon(e,c,t)},a}function Tt(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.label="",e.labelStyle=r;const a=t.insert("g").attr("class",f(e)).attr("id",e.domId??e.id),{cssStyles:o}=e,s=Math.max(35,e?.width??0),c=Math.max(35,e?.height??0),u=[{x:s,y:0},{x:0,y:c+3.5},{x:s-14,y:c+3.5},{x:0,y:2*c},{x:s,y:c-3.5},{x:14,y:c-3.5}],d=h.A.svg(a),y=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(y.roughness=0,y.fillStyle="solid");const m=g(u),x=d.path(m,y),b=a.insert((()=>x),":first-child");return o&&"handDrawn"!==e.look&&b.selectAll("path").attr("style",o),i&&"handDrawn"!==e.look&&b.selectAll("path").attr("style",i),b.attr("transform",`translate(-${s/2},${-c})`),p(e,b),e.intersect=function(t){l.Rm.info("lightningBolt intersect",e,t);return P.polygon(e,u,t)},a}(0,l.K2)(st,"cylinder"),(0,l.K2)(lt,"dividedRectangle"),(0,l.K2)(ct,"doublecircle"),(0,l.K2)(ht,"filledCircle"),(0,l.K2)(ut,"flippedTriangle"),(0,l.K2)(dt,"forkJoin"),(0,l.K2)(pt,"halfRoundedRectangle"),(0,l.K2)(ft,"hexagon"),(0,l.K2)(gt,"hourglass"),(0,l.K2)(yt,"icon"),(0,l.K2)(mt,"iconCircle"),(0,l.K2)(xt,"iconRounded"),(0,l.K2)(bt,"iconSquare"),(0,l.K2)(kt,"imageSquare"),(0,l.K2)(wt,"inv_trapezoid"),(0,l.K2)(Ct,"drawRect"),(0,l.K2)(_t,"labelRect"),(0,l.K2)(vt,"lean_left"),(0,l.K2)(St,"lean_right"),(0,l.K2)(Tt,"lightningBolt");var At=(0,l.K2)(((t,e,r,i,n,a,o)=>[`M${t},${e+a}`,`a${n},${a} 0,0,0 ${r},0`,`a${n},${a} 0,0,0 ${-r},0`,`l0,${i}`,`a${n},${a} 0,0,0 ${r},0`,"l0,"+-i,`M${t},${e+a+o}`,`a${n},${a} 0,0,0 ${r},0`].join(" ")),"createCylinderPathD"),Mt=(0,l.K2)(((t,e,r,i,n,a,o)=>[`M${t},${e+a}`,`M${t+r},${e+a}`,`a${n},${a} 0,0,0 ${-r},0`,`l0,${i}`,`a${n},${a} 0,0,0 ${r},0`,"l0,"+-i,`M${t},${e+a+o}`,`a${n},${a} 0,0,0 ${r},0`].join(" ")),"createOuterCylinderPathD"),Bt=(0,l.K2)(((t,e,r,i,n,a)=>[`M${t-r/2},${-i/2}`,`a${n},${a} 0,0,0 ${r},0`].join(" ")),"createInnerCylinderPathD");async function Lt(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:s,label:l}=await u(t,e,f(e)),c=Math.max(s.width+(e.padding??0),e.width??0),d=c/2,g=d/(2.5+c/50),y=Math.max(s.height+g+(e.padding??0),e.height??0),m=.1*y;let x;const{cssStyles:b}=e;if("handDrawn"===e.look){const t=h.A.svg(a),r=Mt(0,0,c,y,d,g,m),i=Bt(0,g,c,y,d,g),o=(0,n.Fr)(e,{}),s=t.path(r,o),l=t.path(i,o);a.insert((()=>l),":first-child").attr("class","line"),x=a.insert((()=>s),":first-child"),x.attr("class","basic label-container"),b&&x.attr("style",b)}else{const t=At(0,0,c,y,d,g,m);x=a.insert("path",":first-child").attr("d",t).attr("class","basic label-container").attr("style",(0,o.KL)(b)).attr("style",i)}return x.attr("label-offset-y",g),x.attr("transform",`translate(${-c/2}, ${-(y/2+g)})`),p(e,x),l.attr("transform",`translate(${-s.width/2-(s.x-(s.left??0))}, ${-s.height/2+g-(s.y-(s.top??0))})`),e.intersect=function(t){const r=P.rect(e,t),i=r.x-(e.x??0);if(0!=d&&(Math.abs(i)<(e.width??0)/2||Math.abs(i)==(e.width??0)/2&&Math.abs(r.y-(e.y??0))>(e.height??0)/2-g)){let n=g*g*(1-i*i/(d*d));n>0&&(n=Math.sqrt(n)),n=g-n,t.y-(e.y??0)>0&&(n=-n),r.y+=n}return r},a}async function Ft(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o,label:s}=await u(t,e,f(e)),l=Math.max(o.width+2*(e.padding??0),e?.width??0),c=Math.max(o.height+2*(e.padding??0),e?.height??0),d=c/4,g=c+d,{cssStyles:m}=e,x=h.A.svg(a),b=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(b.roughness=0,b.fillStyle="solid");const k=[{x:-l/2-l/2*.1,y:-g/2},{x:-l/2-l/2*.1,y:g/2},...y(-l/2-l/2*.1,g/2,l/2+l/2*.1,g/2,d,.8),{x:l/2+l/2*.1,y:-g/2},{x:-l/2-l/2*.1,y:-g/2},{x:-l/2,y:-g/2},{x:-l/2,y:g/2*1.1},{x:-l/2,y:-g/2}],w=x.polygon(k.map((t=>[t.x,t.y])),b),C=a.insert((()=>w),":first-child");return C.attr("class","basic label-container"),m&&"handDrawn"!==e.look&&C.selectAll("path").attr("style",m),i&&"handDrawn"!==e.look&&C.selectAll("path").attr("style",i),C.attr("transform",`translate(0,${-d/2})`),s.attr("transform",`translate(${-l/2+(e.padding??0)+l/2*.1/2-(o.x-(o.left??0))},${-c/2+(e.padding??0)-d/2-(o.y-(o.top??0))})`),p(e,C),e.intersect=function(t){return P.polygon(e,k,t)},a}async function $t(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o,label:s}=await u(t,e,f(e)),l=Math.max(o.width+2*(e.padding??0),e?.width??0),c=Math.max(o.height+2*(e.padding??0),e?.height??0),d=-l/2,y=-c/2,{cssStyles:m}=e,x=h.A.svg(a),b=(0,n.Fr)(e,{}),k=[{x:d-5,y:y+5},{x:d-5,y:y+c+5},{x:d+l-5,y:y+c+5},{x:d+l-5,y:y+c},{x:d+l,y:y+c},{x:d+l,y:y+c-5},{x:d+l+5,y:y+c-5},{x:d+l+5,y:y-5},{x:d+5,y:y-5},{x:d+5,y:y},{x:d,y:y},{x:d,y:y+5}],w=[{x:d,y:y+5},{x:d+l-5,y:y+5},{x:d+l-5,y:y+c},{x:d+l,y:y+c},{x:d+l,y:y},{x:d,y:y}];"handDrawn"!==e.look&&(b.roughness=0,b.fillStyle="solid");const C=g(k),_=x.path(C,b),v=g(w),S=x.path(v,{...b,fill:"none"}),T=a.insert((()=>S),":first-child");return T.insert((()=>_),":first-child"),T.attr("class","basic label-container"),m&&"handDrawn"!==e.look&&T.selectAll("path").attr("style",m),i&&"handDrawn"!==e.look&&T.selectAll("path").attr("style",i),s.attr("transform",`translate(${-o.width/2-5-(o.x-(o.left??0))}, ${-o.height/2+5-(o.y-(o.top??0))})`),p(e,T),e.intersect=function(t){return P.polygon(e,k,t)},a}async function Et(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o,label:s}=await u(t,e,f(e)),l=Math.max(o.width+2*(e.padding??0),e?.width??0),c=Math.max(o.height+2*(e.padding??0),e?.height??0),d=c/4,m=c+d,x=-l/2,b=-m/2,{cssStyles:k}=e,w=y(x-5,b+m+5,x+l-5,b+m+5,d,.8),C=w?.[w.length-1],_=[{x:x-5,y:b+5},{x:x-5,y:b+m+5},...w,{x:x+l-5,y:C.y-5},{x:x+l,y:C.y-5},{x:x+l,y:C.y-10},{x:x+l+5,y:C.y-10},{x:x+l+5,y:b-5},{x:x+5,y:b-5},{x:x+5,y:b},{x:x,y:b},{x:x,y:b+5}],v=[{x:x,y:b+5},{x:x+l-5,y:b+5},{x:x+l-5,y:C.y-5},{x:x+l,y:C.y-5},{x:x+l,y:b},{x:x,y:b}],S=h.A.svg(a),T=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(T.roughness=0,T.fillStyle="solid");const A=g(_),M=S.path(A,T),B=g(v),L=S.path(B,T),F=a.insert((()=>M),":first-child");return F.insert((()=>L)),F.attr("class","basic label-container"),k&&"handDrawn"!==e.look&&F.selectAll("path").attr("style",k),i&&"handDrawn"!==e.look&&F.selectAll("path").attr("style",i),F.attr("transform",`translate(0,${-d/2})`),s.attr("transform",`translate(${-o.width/2-5-(o.x-(o.left??0))}, ${-o.height/2+5-d/2-(o.y-(o.top??0))})`),p(e,F),e.intersect=function(t){return P.polygon(e,_,t)},a}async function Dt(t,e,{config:{themeVariables:r}}){const{labelStyles:i,nodeStyles:a}=(0,n.GX)(e);e.labelStyle=i;e.useHtmlLabels||!1!==(0,s.zj)().flowchart?.htmlLabels||(e.centerLabel=!0);const{shapeSvg:o,bbox:l,label:c}=await u(t,e,f(e)),d=Math.max(l.width+2*(e.padding??0),e?.width??0),g=Math.max(l.height+2*(e.padding??0),e?.height??0),y=-d/2,m=-g/2,{cssStyles:x}=e,b=h.A.svg(o),k=(0,n.Fr)(e,{fill:r.noteBkgColor,stroke:r.noteBorderColor});"handDrawn"!==e.look&&(k.roughness=0,k.fillStyle="solid");const w=b.rectangle(y,m,d,g,k),C=o.insert((()=>w),":first-child");return C.attr("class","basic label-container"),x&&"handDrawn"!==e.look&&C.selectAll("path").attr("style",x),a&&"handDrawn"!==e.look&&C.selectAll("path").attr("style",a),c.attr("transform",`translate(${-l.width/2-(l.x-(l.left??0))}, ${-l.height/2-(l.y-(l.top??0))})`),p(e,C),e.intersect=function(t){return P.rect(e,t)},o}(0,l.K2)(Lt,"linedCylinder"),(0,l.K2)(Ft,"linedWaveEdgedRect"),(0,l.K2)($t,"multiRect"),(0,l.K2)(Et,"multiWaveEdgedRectangle"),(0,l.K2)(Dt,"note");var Ot=(0,l.K2)(((t,e,r)=>[`M${t+r/2},${e}`,`L${t+r},${e-r/2}`,`L${t+r/2},${e-r}`,`L${t},${e-r/2}`,"Z"].join(" ")),"createDecisionBoxPathD");async function Rt(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o}=await u(t,e,f(e)),s=o.width+e.padding+(o.height+e.padding),l=[{x:s/2,y:0},{x:s,y:-s/2},{x:s/2,y:-s},{x:0,y:-s/2}];let c;const{cssStyles:d}=e;if("handDrawn"===e.look){const t=h.A.svg(a),r=(0,n.Fr)(e,{}),i=Ot(0,0,s),o=t.path(i,r);c=a.insert((()=>o),":first-child").attr("transform",`translate(${-s/2+.5}, ${s/2})`),d&&c.attr("style",d)}else c=H(a,s,s,l),c.attr("transform",`translate(${-s/2+.5}, ${s/2})`);return i&&c.attr("style",i),p(e,c),e.calcIntersect=function(t,e){const r=t.width,i=[{x:r/2,y:0},{x:r,y:-r/2},{x:r/2,y:-r},{x:0,y:-r/2}],n=P.polygon(t,i,e);return{x:n.x-.5,y:n.y-.5}},e.intersect=function(t){return this.calcIntersect(e,t)},a}async function Kt(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o,label:s}=await u(t,e,f(e)),l=-Math.max(o.width+(e.padding??0),e?.width??0)/2,c=-Math.max(o.height+(e.padding??0),e?.height??0)/2,d=c/2,y=[{x:l+d,y:c},{x:l,y:0},{x:l+d,y:-c},{x:-l,y:-c},{x:-l,y:c}],{cssStyles:m}=e,x=h.A.svg(a),b=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(b.roughness=0,b.fillStyle="solid");const k=g(y),w=x.path(k,b),C=a.insert((()=>w),":first-child");return C.attr("class","basic label-container"),m&&"handDrawn"!==e.look&&C.selectAll("path").attr("style",m),i&&"handDrawn"!==e.look&&C.selectAll("path").attr("style",i),C.attr("transform",`translate(${-d/2},0)`),s.attr("transform",`translate(${-d/2-o.width/2-(o.x-(o.left??0))}, ${-o.height/2-(o.y-(o.top??0))})`),p(e,C),e.intersect=function(t){return P.polygon(e,y,t)},a}async function It(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);let a;e.labelStyle=r,a=e.cssClasses?"node "+e.cssClasses:"node default";const o=t.insert("g").attr("class",a).attr("id",e.domId||e.id),u=o.insert("g"),d=o.insert("g").attr("class","label").attr("style",i),f=e.description,g=e.label,y=d.node().appendChild(await w(g,e.labelStyle,!0,!0));let m={width:0,height:0};if((0,s._3)((0,s.D7)()?.flowchart?.htmlLabels)){const t=y.children[0],e=(0,c.Ltv)(y);m=t.getBoundingClientRect(),e.attr("width",m.width),e.attr("height",m.height)}l.Rm.info("Text 2",f);const x=f||[],b=y.getBBox(),k=d.node().appendChild(await w(x.join?x.join("
    "):x,e.labelStyle,!0,!0)),_=k.children[0],v=(0,c.Ltv)(k);m=_.getBoundingClientRect(),v.attr("width",m.width),v.attr("height",m.height);const S=(e.padding||0)/2;(0,c.Ltv)(k).attr("transform","translate( "+(m.width>b.width?0:(b.width-m.width)/2)+", "+(b.height+S+5)+")"),(0,c.Ltv)(y).attr("transform","translate( "+(m.width(l.Rm.debug("Rough node insert CXC",i),a)),":first-child"),L=o.insert((()=>(l.Rm.debug("Rough node insert CXC",i),i)),":first-child")}else L=u.insert("rect",":first-child"),F=u.insert("line"),L.attr("class","outer title-state").attr("style",i).attr("x",-m.width/2-S).attr("y",-m.height/2-S).attr("width",m.width+(e.padding||0)).attr("height",m.height+(e.padding||0)),F.attr("class","divider").attr("x1",-m.width/2-S).attr("x2",m.width/2+S).attr("y1",-m.height/2-S+b.height+S).attr("y2",-m.height/2-S+b.height+S);return p(e,L),e.intersect=function(t){return P.rect(e,t)},o}function Nt(t,e,r,i,n,a,o){const s=(t+r)/2,l=(e+i)/2,c=Math.atan2(i-e,r-t),h=(r-t)/2/n,u=(i-e)/2/a,d=Math.sqrt(h**2+u**2);if(d>1)throw new Error("The given radii are too small to create an arc between the points.");const p=Math.sqrt(1-d**2),f=s+p*a*Math.sin(c)*(o?-1:1),g=l-p*n*Math.cos(c)*(o?-1:1),y=Math.atan2((e-g)/a,(t-f)/n);let m=Math.atan2((i-g)/a,(r-f)/n)-y;o&&m<0&&(m+=2*Math.PI),!o&&m>0&&(m-=2*Math.PI);const x=[];for(let b=0;b<20;b++){const t=y+b/19*m,e=f+n*Math.cos(t),r=g+a*Math.sin(t);x.push({x:e,y:r})}return x}async function zt(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o}=await u(t,e,f(e)),s=e?.padding??0,l=e?.padding??0,c=(e?.width?e?.width:o.width)+2*s,d=(e?.height?e?.height:o.height)+2*l,y=e.radius||5,m=e.taper||5,{cssStyles:x}=e,b=h.A.svg(a),k=(0,n.Fr)(e,{});e.stroke&&(k.stroke=e.stroke),"handDrawn"!==e.look&&(k.roughness=0,k.fillStyle="solid");const w=[{x:-c/2+m,y:-d/2},{x:c/2-m,y:-d/2},...Nt(c/2-m,-d/2,c/2,-d/2+m,y,y,!0),{x:c/2,y:-d/2+m},{x:c/2,y:d/2-m},...Nt(c/2,d/2-m,c/2-m,d/2,y,y,!0),{x:c/2-m,y:d/2},{x:-c/2+m,y:d/2},...Nt(-c/2+m,d/2,-c/2,d/2-m,y,y,!0),{x:-c/2,y:d/2-m},{x:-c/2,y:-d/2+m},...Nt(-c/2,-d/2+m,-c/2+m,-d/2,y,y,!0)],C=g(w),_=b.path(C,k),v=a.insert((()=>_),":first-child");return v.attr("class","basic label-container outer-path"),x&&"handDrawn"!==e.look&&v.selectChildren("path").attr("style",x),i&&"handDrawn"!==e.look&&v.selectChildren("path").attr("style",i),p(e,v),e.intersect=function(t){return P.polygon(e,w,t)},a}async function Pt(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:s,label:l}=await u(t,e,f(e)),c=e?.padding??0,d=Math.max(s.width+2*(e.padding??0),e?.width??0),g=Math.max(s.height+2*(e.padding??0),e?.height??0),y=-s.width/2-c,m=-s.height/2-c,{cssStyles:x}=e,b=h.A.svg(a),k=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(k.roughness=0,k.fillStyle="solid");const w=[{x:y,y:m},{x:y+d+8,y:m},{x:y+d+8,y:m+g},{x:y-8,y:m+g},{x:y-8,y:m},{x:y,y:m},{x:y,y:m+g}],C=b.polygon(w.map((t=>[t.x,t.y])),k),_=a.insert((()=>C),":first-child");return _.attr("class","basic label-container").attr("style",(0,o.KL)(x)),i&&"handDrawn"!==e.look&&_.selectAll("path").attr("style",i),x&&"handDrawn"!==e.look&&_.selectAll("path").attr("style",i),l.attr("transform",`translate(${-d/2+4+(e.padding??0)-(s.x-(s.left??0))},${-g/2+(e.padding??0)-(s.y-(s.top??0))})`),p(e,_),e.intersect=function(t){return P.rect(e,t)},a}async function qt(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o,label:s}=await u(t,e,f(e)),l=Math.max(o.width+2*(e.padding??0),e?.width??0),c=Math.max(o.height+2*(e.padding??0),e?.height??0),d=-l/2,y=-c/2,{cssStyles:m}=e,x=h.A.svg(a),b=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(b.roughness=0,b.fillStyle="solid");const k=[{x:d,y:y},{x:d,y:y+c},{x:d+l,y:y+c},{x:d+l,y:y-c/2}],w=g(k),C=x.path(w,b),_=a.insert((()=>C),":first-child");return _.attr("class","basic label-container"),m&&"handDrawn"!==e.look&&_.selectChildren("path").attr("style",m),i&&"handDrawn"!==e.look&&_.selectChildren("path").attr("style",i),_.attr("transform",`translate(0, ${c/4})`),s.attr("transform",`translate(${-l/2+(e.padding??0)-(o.x-(o.left??0))}, ${-c/4+(e.padding??0)-(o.y-(o.top??0))})`),p(e,_),e.intersect=function(t){return P.polygon(e,k,t)},a}async function jt(t,e){return Ct(t,e,{rx:0,ry:0,classes:"",labelPaddingX:e.labelPaddingX??2*(e?.padding||0),labelPaddingY:1*(e?.padding||0)})}async function Wt(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o}=await u(t,e,f(e)),s=o.height+e.padding,l=o.width+s/4+e.padding,c=s/2,{cssStyles:d}=e,y=h.A.svg(a),x=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(x.roughness=0,x.fillStyle="solid");const b=[{x:-l/2+c,y:-s/2},{x:l/2-c,y:-s/2},...m(-l/2+c,0,c,50,90,270),{x:l/2-c,y:s/2},...m(l/2-c,0,c,50,270,450)],k=g(b),w=y.path(k,x),C=a.insert((()=>w),":first-child");return C.attr("class","basic label-container outer-path"),d&&"handDrawn"!==e.look&&C.selectChildren("path").attr("style",d),i&&"handDrawn"!==e.look&&C.selectChildren("path").attr("style",i),p(e,C),e.intersect=function(t){return P.polygon(e,b,t)},a}async function Ht(t,e){return Ct(t,e,{rx:5,ry:5,classes:"flowchart-node"})}function Ut(t,e,{config:{themeVariables:r}}){const{labelStyles:i,nodeStyles:a}=(0,n.GX)(e);e.labelStyle=i;const{cssStyles:o}=e,{lineColor:s,stateBorder:l,nodeBorder:c}=r,u=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),d=h.A.svg(u),f=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(f.roughness=0,f.fillStyle="solid");const g=d.circle(0,0,14,{...f,stroke:s,strokeWidth:2}),y=l??c,m=d.circle(0,0,5,{...f,fill:y,stroke:y,strokeWidth:2,fillStyle:"solid"}),x=u.insert((()=>g),":first-child");return x.insert((()=>m)),o&&x.selectAll("path").attr("style",o),a&&x.selectAll("path").attr("style",a),p(e,x),e.intersect=function(t){return P.circle(e,7,t)},u}function Yt(t,e,{config:{themeVariables:r}}){const{lineColor:i}=r,a=t.insert("g").attr("class","node default").attr("id",e.domId||e.id);let o;if("handDrawn"===e.look){const t=h.A.svg(a).circle(0,0,14,(0,n.ue)(i));o=a.insert((()=>t)),o.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14)}else o=a.insert("circle",":first-child"),o.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14);return p(e,o),e.intersect=function(t){return P.circle(e,7,t)},a}async function Gt(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:s}=await u(t,e,f(e)),l=(e?.padding||0)/2,c=s.width+e.padding,d=s.height+e.padding,g=-s.width/2-l,y=-s.height/2-l,m=[{x:0,y:0},{x:c,y:0},{x:c,y:-d},{x:0,y:-d},{x:0,y:0},{x:-8,y:0},{x:c+8,y:0},{x:c+8,y:-d},{x:-8,y:-d},{x:-8,y:0}];if("handDrawn"===e.look){const t=h.A.svg(a),r=(0,n.Fr)(e,{}),i=t.rectangle(g-8,y,c+16,d,r),s=t.line(g,y,g,y+d,r),l=t.line(g+c,y,g+c,y+d,r);a.insert((()=>s),":first-child"),a.insert((()=>l),":first-child");const u=a.insert((()=>i),":first-child"),{cssStyles:f}=e;u.attr("class","basic label-container").attr("style",(0,o.KL)(f)),p(e,u)}else{const t=H(a,c,d,m);i&&t.attr("style",i),p(e,t)}return e.intersect=function(t){return P.polygon(e,m,t)},a}async function Xt(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o}=await u(t,e,f(e)),s=Math.max(o.width+2*(e.padding??0),e?.width??0),l=Math.max(o.height+2*(e.padding??0),e?.height??0),c=-s/2,d=-l/2,y=.2*l,m=.2*l,{cssStyles:x}=e,b=h.A.svg(a),k=(0,n.Fr)(e,{}),w=[{x:c-y/2,y:d},{x:c+s+y/2,y:d},{x:c+s+y/2,y:d+l},{x:c-y/2,y:d+l}],C=[{x:c+s-y/2,y:d+l},{x:c+s+y/2,y:d+l},{x:c+s+y/2,y:d+l-m}];"handDrawn"!==e.look&&(k.roughness=0,k.fillStyle="solid");const _=g(w),v=b.path(_,k),S=g(C),T=b.path(S,{...k,fillStyle:"solid"}),A=a.insert((()=>T),":first-child");return A.insert((()=>v),":first-child"),A.attr("class","basic label-container"),x&&"handDrawn"!==e.look&&A.selectAll("path").attr("style",x),i&&"handDrawn"!==e.look&&A.selectAll("path").attr("style",i),p(e,A),e.intersect=function(t){return P.polygon(e,w,t)},a}async function Vt(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o,label:s}=await u(t,e,f(e)),l=Math.max(o.width+2*(e.padding??0),e?.width??0),c=Math.max(o.height+2*(e.padding??0),e?.height??0),d=c/4,m=.2*l,x=.2*c,b=c+d,{cssStyles:k}=e,w=h.A.svg(a),C=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(C.roughness=0,C.fillStyle="solid");const _=[{x:-l/2-l/2*.1,y:b/2},...y(-l/2-l/2*.1,b/2,l/2+l/2*.1,b/2,d,.8),{x:l/2+l/2*.1,y:-b/2},{x:-l/2-l/2*.1,y:-b/2}],v=-l/2+l/2*.1,S=-b/2-.4*x,T=[{x:v+l-m,y:1.4*(S+c)},{x:v+l,y:S+c-x},{x:v+l,y:.9*(S+c)},...y(v+l,1.3*(S+c),v+l-m,1.5*(S+c),.03*-c,.5)],A=g(_),M=w.path(A,C),B=g(T),L=w.path(B,{...C,fillStyle:"solid"}),F=a.insert((()=>L),":first-child");return F.insert((()=>M),":first-child"),F.attr("class","basic label-container"),k&&"handDrawn"!==e.look&&F.selectAll("path").attr("style",k),i&&"handDrawn"!==e.look&&F.selectAll("path").attr("style",i),F.attr("transform",`translate(0,${-d/2})`),s.attr("transform",`translate(${-l/2+(e.padding??0)-(o.x-(o.left??0))},${-c/2+(e.padding??0)-d/2-(o.y-(o.top??0))})`),p(e,F),e.intersect=function(t){return P.polygon(e,_,t)},a}async function Zt(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o}=await u(t,e,f(e)),s=Math.max(o.width+e.padding,e?.width||0),l=Math.max(o.height+e.padding,e?.height||0),c=-s/2,h=-l/2,d=a.insert("rect",":first-child");return d.attr("class","text").attr("style",i).attr("rx",0).attr("ry",0).attr("x",c).attr("y",h).attr("width",s).attr("height",l),p(e,d),e.intersect=function(t){return P.rect(e,t)},a}(0,l.K2)(Rt,"question"),(0,l.K2)(Kt,"rect_left_inv_arrow"),(0,l.K2)(It,"rectWithTitle"),(0,l.K2)(Nt,"generateArcPoints"),(0,l.K2)(zt,"roundedRect"),(0,l.K2)(Pt,"shadedProcess"),(0,l.K2)(qt,"slopedRect"),(0,l.K2)(jt,"squareRect"),(0,l.K2)(Wt,"stadium"),(0,l.K2)(Ht,"state"),(0,l.K2)(Ut,"stateEnd"),(0,l.K2)(Yt,"stateStart"),(0,l.K2)(Gt,"subroutine"),(0,l.K2)(Xt,"taggedRect"),(0,l.K2)(Vt,"taggedWaveEdgedRectangle"),(0,l.K2)(Zt,"text");var Qt=(0,l.K2)(((t,e,r,i,n,a)=>`M${t},${e}\n a${n},${a} 0,0,1 0,${-i}\n l${r},0\n a${n},${a} 0,0,1 0,${i}\n M${r},${-i}\n a${n},${a} 0,0,0 0,${i}\n l${-r},0`),"createCylinderPathD"),Jt=(0,l.K2)(((t,e,r,i,n,a)=>[`M${t},${e}`,`M${t+r},${e}`,`a${n},${a} 0,0,0 0,${-i}`,`l${-r},0`,`a${n},${a} 0,0,0 0,${i}`,`l${r},0`].join(" ")),"createOuterCylinderPathD"),te=(0,l.K2)(((t,e,r,i,n,a)=>[`M${t+r/2},${-i/2}`,`a${n},${a} 0,0,0 0,${i}`].join(" ")),"createInnerCylinderPathD");async function ee(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:s,label:l,halfPadding:c}=await u(t,e,f(e)),d="neo"===e.look?2*c:c,g=s.height+d,y=g/2,m=y/(2.5+g/50),x=s.width+m+d,{cssStyles:b}=e;let k;if("handDrawn"===e.look){const t=h.A.svg(a),r=Jt(0,0,x,g,m,y),i=te(0,0,x,g,m,y),o=t.path(r,(0,n.Fr)(e,{})),s=t.path(i,(0,n.Fr)(e,{fill:"none"}));k=a.insert((()=>s),":first-child"),k=a.insert((()=>o),":first-child"),k.attr("class","basic label-container"),b&&k.attr("style",b)}else{const t=Qt(0,0,x,g,m,y);k=a.insert("path",":first-child").attr("d",t).attr("class","basic label-container").attr("style",(0,o.KL)(b)).attr("style",i),k.attr("class","basic label-container"),b&&k.selectAll("path").attr("style",b),i&&k.selectAll("path").attr("style",i)}return k.attr("label-offset-x",m),k.attr("transform",`translate(${-x/2}, ${g/2} )`),l.attr("transform",`translate(${-s.width/2-m-(s.x-(s.left??0))}, ${-s.height/2-(s.y-(s.top??0))})`),p(e,k),e.intersect=function(t){const r=P.rect(e,t),i=r.y-(e.y??0);if(0!=y&&(Math.abs(i)<(e.height??0)/2||Math.abs(i)==(e.height??0)/2&&Math.abs(r.x-(e.x??0))>(e.width??0)/2-m)){let n=m*m*(1-i*i/(y*y));0!=n&&(n=Math.sqrt(Math.abs(n))),n=m-n,t.x-(e.x??0)>0&&(n=-n),r.x+=n}return r},a}async function re(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o}=await u(t,e,f(e)),s=o.width+e.padding,l=o.height+e.padding,c=[{x:-3*l/6,y:0},{x:s+3*l/6,y:0},{x:s,y:-l},{x:0,y:-l}];let d;const{cssStyles:y}=e;if("handDrawn"===e.look){const t=h.A.svg(a),r=(0,n.Fr)(e,{}),i=g(c),o=t.path(i,r);d=a.insert((()=>o),":first-child").attr("transform",`translate(${-s/2}, ${l/2})`),y&&d.attr("style",y)}else d=H(a,s,l,c);return i&&d.attr("style",i),e.width=s,e.height=l,p(e,d),e.intersect=function(t){return P.polygon(e,c,t)},a}async function ie(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o}=await u(t,e,f(e)),s=Math.max(60,o.width+2*(e.padding??0),e?.width??0),l=Math.max(20,o.height+2*(e.padding??0),e?.height??0),{cssStyles:c}=e,d=h.A.svg(a),y=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(y.roughness=0,y.fillStyle="solid");const m=[{x:-s/2*.8,y:-l/2},{x:s/2*.8,y:-l/2},{x:s/2,y:-l/2*.6},{x:s/2,y:l/2},{x:-s/2,y:l/2},{x:-s/2,y:-l/2*.6}],x=g(m),b=d.path(x,y),k=a.insert((()=>b),":first-child");return k.attr("class","basic label-container"),c&&"handDrawn"!==e.look&&k.selectChildren("path").attr("style",c),i&&"handDrawn"!==e.look&&k.selectChildren("path").attr("style",i),p(e,k),e.intersect=function(t){return P.polygon(e,m,t)},a}async function ne(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o,label:c}=await u(t,e,f(e)),d=(0,s._3)((0,s.D7)().flowchart?.htmlLabels),y=o.width+(e.padding??0),m=y+o.height,x=y+o.height,b=[{x:0,y:0},{x:x,y:0},{x:x/2,y:-m}],{cssStyles:k}=e,w=h.A.svg(a),C=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(C.roughness=0,C.fillStyle="solid");const _=g(b),v=w.path(_,C),S=a.insert((()=>v),":first-child").attr("transform",`translate(${-m/2}, ${m/2})`);return k&&"handDrawn"!==e.look&&S.selectChildren("path").attr("style",k),i&&"handDrawn"!==e.look&&S.selectChildren("path").attr("style",i),e.width=y,e.height=m,p(e,S),c.attr("transform",`translate(${-o.width/2-(o.x-(o.left??0))}, ${m/2-(o.height+(e.padding??0)/(d?2:1)-(o.y-(o.top??0)))})`),e.intersect=function(t){return l.Rm.info("Triangle intersect",e,b,t),P.polygon(e,b,t)},a}async function ae(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o,label:s}=await u(t,e,f(e)),l=Math.max(o.width+2*(e.padding??0),e?.width??0),c=Math.max(o.height+2*(e.padding??0),e?.height??0),d=c/8,m=c+d,{cssStyles:x}=e,b=70-l,k=b>0?b/2:0,w=h.A.svg(a),C=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(C.roughness=0,C.fillStyle="solid");const _=[{x:-l/2-k,y:m/2},...y(-l/2-k,m/2,l/2+k,m/2,d,.8),{x:l/2+k,y:-m/2},{x:-l/2-k,y:-m/2}],v=g(_),S=w.path(v,C),T=a.insert((()=>S),":first-child");return T.attr("class","basic label-container"),x&&"handDrawn"!==e.look&&T.selectAll("path").attr("style",x),i&&"handDrawn"!==e.look&&T.selectAll("path").attr("style",i),T.attr("transform",`translate(0,${-d/2})`),s.attr("transform",`translate(${-l/2+(e.padding??0)-(o.x-(o.left??0))},${-c/2+(e.padding??0)-d-(o.y-(o.top??0))})`),p(e,T),e.intersect=function(t){return P.polygon(e,_,t)},a}async function oe(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o}=await u(t,e,f(e)),s=Math.max(o.width+2*(e.padding??0),e?.width??0),l=Math.max(o.height+2*(e.padding??0),e?.height??0),c=s/l;let d=s,m=l;d>m*c?m=d/c:d=m*c,d=Math.max(d,100),m=Math.max(m,50);const x=Math.min(.2*m,m/4),b=m+2*x,{cssStyles:k}=e,w=h.A.svg(a),C=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(C.roughness=0,C.fillStyle="solid");const _=[{x:-d/2,y:b/2},...y(-d/2,b/2,d/2,b/2,x,1),{x:d/2,y:-b/2},...y(d/2,-b/2,-d/2,-b/2,x,-1)],v=g(_),S=w.path(v,C),T=a.insert((()=>S),":first-child");return T.attr("class","basic label-container"),k&&"handDrawn"!==e.look&&T.selectAll("path").attr("style",k),i&&"handDrawn"!==e.look&&T.selectAll("path").attr("style",i),p(e,T),e.intersect=function(t){return P.polygon(e,_,t)},a}async function se(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o,label:s}=await u(t,e,f(e)),l=Math.max(o.width+2*(e.padding??0),e?.width??0),c=Math.max(o.height+2*(e.padding??0),e?.height??0),d=-l/2,g=-c/2,{cssStyles:y}=e,m=h.A.svg(a),x=(0,n.Fr)(e,{}),b=[{x:d-5,y:g-5},{x:d-5,y:g+c},{x:d+l,y:g+c},{x:d+l,y:g-5}],k=`M${d-5},${g-5} L${d+l},${g-5} L${d+l},${g+c} L${d-5},${g+c} L${d-5},${g-5}\n M${d-5},${g} L${d+l},${g}\n M${d},${g-5} L${d},${g+c}`;"handDrawn"!==e.look&&(x.roughness=0,x.fillStyle="solid");const w=m.path(k,x),C=a.insert((()=>w),":first-child");return C.attr("transform","translate(2.5, 2.5)"),C.attr("class","basic label-container"),y&&"handDrawn"!==e.look&&C.selectAll("path").attr("style",y),i&&"handDrawn"!==e.look&&C.selectAll("path").attr("style",i),s.attr("transform",`translate(${-o.width/2+2.5-(o.x-(o.left??0))}, ${-o.height/2+2.5-(o.y-(o.top??0))})`),p(e,C),e.intersect=function(t){return P.polygon(e,b,t)},a}async function le(t,e){const r=e;if(r.alias&&(e.label=r.alias),"handDrawn"===e.look){const{themeVariables:r}=(0,s.zj)(),{background:i}=r,n={...e,id:e.id+"-background",look:"default",cssStyles:["stroke: none",`fill: ${i}`]};await le(t,n)}const i=(0,s.zj)();e.useHtmlLabels=i.htmlLabels;let a=i.er?.diagramPadding??10,l=i.er?.entityPadding??6;const{cssStyles:u}=e,{labelStyles:d,nodeStyles:g}=(0,n.GX)(e);if(0===r.attributes.length&&e.label){const r={rx:0,ry:0,labelPaddingX:a,labelPaddingY:1.5*a,classes:""};(0,o.Un)(e.label,i)+2*r.labelPaddingX0){const t=x.width+2*a-(C+_+v+S);C+=t/M,_+=t/M,v>0&&(v+=t/M),S>0&&(S+=t/M)}const L=C+_+v+S,F=h.A.svg(m),$=(0,n.Fr)(e,{});"handDrawn"!==e.look&&($.roughness=0,$.fillStyle="solid");let E=0;w.length>0&&(E=w.reduce(((t,e)=>t+(e?.rowHeight??0)),0));const D=Math.max(B.width+2*a,e?.width||0,L),O=Math.max((E??0)+x.height,e?.height||0),R=-D/2,K=-O/2;m.selectAll("g:not(:first-child)").each(((t,e,r)=>{const i=(0,c.Ltv)(r[e]),n=i.attr("transform");let o=0,s=0;if(n){const t=RegExp(/translate\(([^,]+),([^)]+)\)/).exec(n);t&&(o=parseFloat(t[1]),s=parseFloat(t[2]),i.attr("class").includes("attribute-name")?o+=C:i.attr("class").includes("attribute-keys")?o+=C+_:i.attr("class").includes("attribute-comment")&&(o+=C+_+v))}i.attr("transform",`translate(${R+a/2+o}, ${s+K+x.height+l/2})`)})),m.select(".name").attr("transform","translate("+-x.width/2+", "+(K+l/2)+")");const I=F.rectangle(R,K,D,O,$),N=m.insert((()=>I),":first-child").attr("style",u.join("")),{themeVariables:z}=(0,s.zj)(),{rowEven:q,rowOdd:j,nodeBorder:W}=z;k.push(0);for(const[n,o]of w.entries()){const t=(n+1)%2==0&&0!==o.yOffset,e=F.rectangle(R,x.height+K+o?.yOffset,D,o?.rowHeight,{...$,fill:t?q:j,stroke:W});m.insert((()=>e),"g.label").attr("style",u.join("")).attr("class","row-rect-"+(t?"even":"odd"))}let H=F.line(R,x.height+K,D+R,x.height+K,$);m.insert((()=>H)).attr("class","divider"),H=F.line(C+R,x.height+K,C+R,O+K,$),m.insert((()=>H)).attr("class","divider"),T&&(H=F.line(C+_+R,x.height+K,C+_+R,O+K,$),m.insert((()=>H)).attr("class","divider")),A&&(H=F.line(C+_+v+R,x.height+K,C+_+v+R,O+K,$),m.insert((()=>H)).attr("class","divider"));for(const n of k)H=F.line(R,x.height+K+n,D+R,x.height+K+n,$),m.insert((()=>H)).attr("class","divider");if(p(e,N),g&&"handDrawn"!==e.look){const t=g.split(";"),e=t?.filter((t=>t.includes("stroke")))?.map((t=>`${t}`)).join("; ");m.selectAll("path").attr("style",e??""),m.selectAll(".row-rect-even path").attr("style",g)}return e.intersect=function(t){return P.rect(e,t)},m}async function ce(t,e,r,i=0,n=0,l=[],h=""){const u=t.insert("g").attr("class",`label ${l.join(" ")}`).attr("transform",`translate(${i}, ${n})`).attr("style",h);e!==(0,s.QO)(e)&&(e=(e=(0,s.QO)(e)).replaceAll("<","<").replaceAll(">",">"));const d=u.node().appendChild(await(0,a.GZ)(u,e,{width:(0,o.Un)(e,r)+100,style:h,useHtmlLabels:r.htmlLabels},r));if(e.includes("<")||e.includes(">")){let t=d.children[0];for(t.textContent=t.textContent.replaceAll("<","<").replaceAll(">",">");t.childNodes[0];)t=t.childNodes[0],t.textContent=t.textContent.replaceAll("<","<").replaceAll(">",">")}let p=d.getBBox();if((0,s._3)(r.htmlLabels)){const t=d.children[0];t.style.textAlign="start";const e=(0,c.Ltv)(d);p=t.getBoundingClientRect(),e.attr("width",p.width),e.attr("height",p.height)}return p}async function he(t,e,r,i,n=r.class.padding??12){const a=i?0:3,o=t.insert("g").attr("class",f(e)).attr("id",e.domId||e.id);let s=null,l=null,c=null,h=null,u=0,d=0,p=0;if(s=o.insert("g").attr("class","annotation-group text"),e.annotations.length>0){const t=e.annotations[0];await ue(s,{text:`\xab${t}\xbb`},0);u=s.node().getBBox().height}l=o.insert("g").attr("class","label-group text"),await ue(l,e,0,["font-weight: bolder"]);const g=l.node().getBBox();d=g.height,c=o.insert("g").attr("class","members-group text");let y=0;for(const f of e.members){y+=await ue(c,f,y,[f.parseClassifier()])+a}p=c.node().getBBox().height,p<=0&&(p=n/2),h=o.insert("g").attr("class","methods-group text");let m=0;for(const f of e.methods){m+=await ue(h,f,m,[f.parseClassifier()])+a}let x=o.node().getBBox();if(null!==s){const t=s.node().getBBox();s.attr("transform",`translate(${-t.width/2})`)}return l.attr("transform",`translate(${-g.width/2}, ${u})`),x=o.node().getBBox(),c.attr("transform",`translate(0, ${u+d+2*n})`),x=o.node().getBBox(),h.attr("transform",`translate(0, ${u+d+(p?p+4*n:2*n)})`),x=o.node().getBBox(),{shapeSvg:o,bbox:x}}async function ue(t,e,r,i=[]){const n=t.insert("g").attr("class","label").attr("style",i.join("; ")),h=(0,s.zj)();let u="useHtmlLabels"in e?e.useHtmlLabels:(0,s._3)(h.htmlLabels)??!0,d="";d="text"in e?e.text:e.label,!u&&d.startsWith("\\")&&(d=d.substring(1)),(0,s.Wi)(d)&&(u=!0);const p=await(0,a.GZ)(n,(0,s.oB)((0,o.Sm)(d)),{width:(0,o.Un)(d,h)+50,classes:"markdown-node-label",useHtmlLabels:u},h);let f,g=1;if(u){const t=p.children[0],e=(0,c.Ltv)(p);g=t.innerHTML.split("
    ").length,t.innerHTML.includes("")&&(g+=t.innerHTML.split("").length-1);const r=t.getElementsByTagName("img");if(r){const t=""===d.replace(/]*>/g,"").trim();await Promise.all([...r].map((e=>new Promise((r=>{function i(){if(e.style.display="flex",e.style.flexDirection="column",t){const t=h.fontSize?.toString()??window.getComputedStyle(document.body).fontSize,r=5,i=parseInt(t,10)*r+"px";e.style.minWidth=i,e.style.maxWidth=i}else e.style.width="100%";r(e)}(0,l.K2)(i,"setupImage"),setTimeout((()=>{e.complete&&i()})),e.addEventListener("error",i),e.addEventListener("load",i)})))))}f=t.getBoundingClientRect(),e.attr("width",f.width),e.attr("height",f.height)}else{i.includes("font-weight: bolder")&&(0,c.Ltv)(p).selectAll("tspan").attr("font-weight",""),g=p.children.length;const t=p.children[0];if(""===p.textContent||p.textContent.includes(">")){t.textContent=d[0]+d.substring(1).replaceAll(">",">").replaceAll("<","<").trim();" "===d[1]&&(t.textContent=t.textContent[0]+" "+t.textContent.substring(1))}"undefined"===t.textContent&&(t.textContent=""),f=p.getBBox()}return n.attr("transform","translate(0,"+(-f.height/(2*g)+r)+")"),f.height}async function de(t,e){const r=(0,s.D7)(),i=r.class.padding??12,a=i,o=e.useHtmlLabels??(0,s._3)(r.htmlLabels)??!0,l=e;l.annotations=l.annotations??[],l.members=l.members??[],l.methods=l.methods??[];const{shapeSvg:u,bbox:d}=await he(t,e,r,o,a),{labelStyles:f,nodeStyles:g}=(0,n.GX)(e);e.labelStyle=f,e.cssStyles=l.styles||"";const y=l.styles?.join(";")||g||"";e.cssStyles||(e.cssStyles=y.replaceAll("!important","").split(";"));const m=0===l.members.length&&0===l.methods.length&&!r.class?.hideEmptyMembersBox,x=h.A.svg(u),b=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(b.roughness=0,b.fillStyle="solid");const k=d.width;let w=d.height;0===l.members.length&&0===l.methods.length?w+=a:l.members.length>0&&0===l.methods.length&&(w+=2*a);const C=-k/2,_=-w/2,v=x.rectangle(C-i,_-i-(m?i:0===l.members.length&&0===l.methods.length?-i/2:0),k+2*i,w+2*i+(m?2*i:0===l.members.length&&0===l.methods.length?-i:0),b),S=u.insert((()=>v),":first-child");S.attr("class","basic label-container");const T=S.node().getBBox();u.selectAll(".text").each(((t,e,r)=>{const n=(0,c.Ltv)(r[e]),a=n.attr("transform");let s=0;if(a){const t=RegExp(/translate\(([^,]+),([^)]+)\)/).exec(a);t&&(s=parseFloat(t[2]))}let h=s+_+i-(m?i:0===l.members.length&&0===l.methods.length?-i/2:0);o||(h-=4);let d=C;(n.attr("class").includes("label-group")||n.attr("class").includes("annotation-group"))&&(d=-n.node()?.getBBox().width/2||0,u.selectAll("text").each((function(t,e,r){"middle"===window.getComputedStyle(r[e]).textAnchor&&(d=0)}))),n.attr("transform",`translate(${d}, ${h})`)}));const A=u.select(".annotation-group").node().getBBox().height-(m?i/2:0)||0,M=u.select(".label-group").node().getBBox().height-(m?i/2:0)||0,B=u.select(".members-group").node().getBBox().height-(m?i/2:0)||0;if(l.members.length>0||l.methods.length>0||m){const t=x.line(T.x,A+M+_+i,T.x+T.width,A+M+_+i,b);u.insert((()=>t)).attr("class","divider").attr("style",y)}if(m||l.members.length>0||l.methods.length>0){const t=x.line(T.x,A+M+B+_+2*a+i,T.x+T.width,A+M+B+_+i+2*a,b);u.insert((()=>t)).attr("class","divider").attr("style",y)}if("handDrawn"!==l.look&&u.selectAll("path").attr("style",y),S.select(":nth-child(2)").attr("style",y),u.selectAll(".divider").select("path").attr("style",y),e.labelStyle?u.selectAll("span").attr("style",e.labelStyle):u.selectAll("span").attr("style",y),!o){const t=RegExp(/color\s*:\s*([^;]*)/),e=t.exec(y);if(e){const t=e[0].replace("color","fill");u.selectAll("tspan").attr("style",t)}else if(f){const e=t.exec(f);if(e){const t=e[0].replace("color","fill");u.selectAll("tspan").attr("style",t)}}}return p(e,S),e.intersect=function(t){return P.rect(e,t)},u}async function pe(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const a=e,o=e,s="verifyMethod"in e,l=f(e),u=t.insert("g").attr("class",l).attr("id",e.domId??e.id);let d;d=s?await fe(u,`<<${a.type}>>`,0,e.labelStyle):await fe(u,"<<Element>>",0,e.labelStyle);let g=d;const y=await fe(u,a.name,g,e.labelStyle+"; font-weight: bold;");if(g+=y+20,s){g+=await fe(u,""+(a.requirementId?`ID: ${a.requirementId}`:""),g,e.labelStyle);g+=await fe(u,""+(a.text?`Text: ${a.text}`:""),g,e.labelStyle);g+=await fe(u,""+(a.risk?`Risk: ${a.risk}`:""),g,e.labelStyle),await fe(u,""+(a.verifyMethod?`Verification: ${a.verifyMethod}`:""),g,e.labelStyle)}else{g+=await fe(u,""+(o.type?`Type: ${o.type}`:""),g,e.labelStyle),await fe(u,""+(o.docRef?`Doc Ref: ${o.docRef}`:""),g,e.labelStyle)}const m=(u.node()?.getBBox().width??200)+20,x=(u.node()?.getBBox().height??200)+20,b=-m/2,k=-x/2,w=h.A.svg(u),C=(0,n.Fr)(e,{});"handDrawn"!==e.look&&(C.roughness=0,C.fillStyle="solid");const _=w.rectangle(b,k,m,x,C),v=u.insert((()=>_),":first-child");if(v.attr("class","basic label-container").attr("style",i),u.selectAll(".label").each(((t,e,r)=>{const i=(0,c.Ltv)(r[e]),n=i.attr("transform");let a=0,o=0;if(n){const t=RegExp(/translate\(([^,]+),([^)]+)\)/).exec(n);t&&(a=parseFloat(t[1]),o=parseFloat(t[2]))}const s=o-x/2;let l=b+10;0!==e&&1!==e||(l=a),i.attr("transform",`translate(${l}, ${s+20})`)})),g>d+y+20){const t=w.line(b,k+d+y+20,b+m,k+d+y+20,C);u.insert((()=>t)).attr("style",i)}return p(e,v),e.intersect=function(t){return P.rect(e,t)},u}async function fe(t,e,r,i=""){if(""===e)return 0;const n=t.insert("g").attr("class","label").attr("style",i),l=(0,s.D7)(),h=l.htmlLabels??!0,u=await(0,a.GZ)(n,(0,s.oB)((0,o.Sm)(e)),{width:(0,o.Un)(e,l)+50,classes:"markdown-node-label",useHtmlLabels:h,style:i},l);let d;if(h){const t=u.children[0],e=(0,c.Ltv)(u);d=t.getBoundingClientRect(),e.attr("width",d.width),e.attr("height",d.height)}else{const t=u.children[0];for(const e of t.children)e.textContent=e.textContent.replaceAll(">",">").replaceAll("<","<"),i&&e.setAttribute("style",i);d=u.getBBox(),d.height+=6}return n.attr("transform",`translate(${-d.width/2},${-d.height/2+r})`),d.height}(0,l.K2)(ee,"tiltedCylinder"),(0,l.K2)(re,"trapezoid"),(0,l.K2)(ie,"trapezoidalPentagon"),(0,l.K2)(ne,"triangle"),(0,l.K2)(ae,"waveEdgedRectangle"),(0,l.K2)(oe,"waveRectangle"),(0,l.K2)(se,"windowPane"),(0,l.K2)(le,"erBox"),(0,l.K2)(ce,"addText"),(0,l.K2)(he,"textHelper"),(0,l.K2)(ue,"addText"),(0,l.K2)(de,"classBox"),(0,l.K2)(pe,"requirementBox"),(0,l.K2)(fe,"addText");var ge=(0,l.K2)((t=>{switch(t){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 ye(t,e,{config:r}){const{labelStyles:i,nodeStyles:a}=(0,n.GX)(e);e.labelStyle=i||"";const o=e.width;e.width=(e.width??200)-10;const{shapeSvg:s,bbox:l,label:c}=await u(t,e,f(e)),g=e.padding||10;let y,m="";"ticket"in e&&e.ticket&&r?.kanban?.ticketBaseUrl&&(m=r?.kanban?.ticketBaseUrl.replace("#TICKET#",e.ticket),y=s.insert("svg:a",":first-child").attr("class","kanban-ticket-link").attr("xlink:href",m).attr("target","_blank"));const x={useHtmlLabels:e.useHtmlLabels,labelStyle:e.labelStyle||"",width:e.width,img:e.img,padding:e.padding||8,centerLabel:!1};let b,k;({label:b,bbox:k}=y?await d(y,"ticket"in e&&e.ticket||"",x):await d(s,"ticket"in e&&e.ticket||"",x));const{label:w,bbox:_}=await d(s,"assigned"in e&&e.assigned||"",x);e.width=o;const v=e?.width||0,S=Math.max(k.height,_.height)/2,T=Math.max(l.height+20,e?.height||0)+S,A=-v/2,M=-T/2;let B;c.attr("transform","translate("+(g-v/2)+", "+(-S-l.height/2)+")"),b.attr("transform","translate("+(g-v/2)+", "+(-S+l.height/2)+")"),w.attr("transform","translate("+(g+v/2-_.width-20)+", "+(-S+l.height/2)+")");const{rx:L,ry:F}=e,{cssStyles:$}=e;if("handDrawn"===e.look){const t=h.A.svg(s),r=(0,n.Fr)(e,{}),i=L||F?t.path(C(A,M,v,T,L||0),r):t.rectangle(A,M,v,T,r);B=s.insert((()=>i),":first-child"),B.attr("class","basic label-container").attr("style",$||null)}else{B=s.insert("rect",":first-child"),B.attr("class","basic label-container __APA__").attr("style",a).attr("rx",L??5).attr("ry",F??5).attr("x",A).attr("y",M).attr("width",v).attr("height",T);const t="priority"in e&&e.priority;if(t){const e=s.append("line"),r=A+2,i=M+Math.floor((L??0)/2),n=M+T-Math.floor((L??0)/2);e.attr("x1",r).attr("y1",i).attr("x2",r).attr("y2",n).attr("stroke-width","4").attr("stroke",ge(t))}}return p(e,B),e.height=T,e.intersect=function(t){return P.rect(e,t)},s}async function me(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:s,halfPadding:c,label:d}=await u(t,e,f(e)),g=s.width+10*c,y=s.height+8*c,m=.15*g,{cssStyles:x}=e,b=s.width+20,k=s.height+20,w=Math.max(g,b),C=Math.max(y,k);let _;d.attr("transform",`translate(${-s.width/2}, ${-s.height/2})`);const v=`M0 0 \n a${m},${m} 1 0,0 ${.25*w},${-1*C*.1}\n a${m},${m} 1 0,0 ${.25*w},0\n a${m},${m} 1 0,0 ${.25*w},0\n a${m},${m} 1 0,0 ${.25*w},${.1*C}\n\n a${m},${m} 1 0,0 ${.15*w},${.33*C}\n a${.8*m},${.8*m} 1 0,0 0,${.34*C}\n a${m},${m} 1 0,0 ${-1*w*.15},${.33*C}\n\n a${m},${m} 1 0,0 ${-1*w*.25},${.15*C}\n a${m},${m} 1 0,0 ${-1*w*.25},0\n a${m},${m} 1 0,0 ${-1*w*.25},0\n a${m},${m} 1 0,0 ${-1*w*.25},${-1*C*.15}\n\n a${m},${m} 1 0,0 ${-1*w*.1},${-1*C*.33}\n a${.8*m},${.8*m} 1 0,0 0,${-1*C*.34}\n a${m},${m} 1 0,0 ${.1*w},${-1*C*.33}\n H0 V0 Z`;if("handDrawn"===e.look){const t=h.A.svg(a),r=(0,n.Fr)(e,{}),i=t.path(v,r);_=a.insert((()=>i),":first-child"),_.attr("class","basic label-container").attr("style",(0,o.KL)(x))}else _=a.insert("path",":first-child").attr("class","basic label-container").attr("style",i).attr("d",v);return _.attr("transform",`translate(${-w/2}, ${-C/2})`),p(e,_),e.calcIntersect=function(t,e){return P.rect(t,e)},e.intersect=function(t){return l.Rm.info("Bang intersect",e,t),P.rect(e,t)},a}async function xe(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:s,halfPadding:c,label:d}=await u(t,e,f(e)),g=s.width+2*c,y=s.height+2*c,m=.15*g,x=.25*g,b=.35*g,k=.2*g,{cssStyles:w}=e;let C;const _=`M0 0 \n a${m},${m} 0 0,1 ${.25*g},${-1*g*.1}\n a${b},${b} 1 0,1 ${.4*g},${-1*g*.1}\n a${x},${x} 1 0,1 ${.35*g},${.2*g}\n\n a${m},${m} 1 0,1 ${.15*g},${.35*y}\n a${k},${k} 1 0,1 ${-1*g*.15},${.65*y}\n\n a${x},${m} 1 0,1 ${-1*g*.25},${.15*g}\n a${b},${b} 1 0,1 ${-1*g*.5},0\n a${m},${m} 1 0,1 ${-1*g*.25},${-1*g*.15}\n\n a${m},${m} 1 0,1 ${-1*g*.1},${-1*y*.35}\n a${k},${k} 1 0,1 ${.1*g},${-1*y*.65}\n H0 V0 Z`;if("handDrawn"===e.look){const t=h.A.svg(a),r=(0,n.Fr)(e,{}),i=t.path(_,r);C=a.insert((()=>i),":first-child"),C.attr("class","basic label-container").attr("style",(0,o.KL)(w))}else C=a.insert("path",":first-child").attr("class","basic label-container").attr("style",i).attr("d",_);return d.attr("transform",`translate(${-s.width/2}, ${-s.height/2})`),C.attr("transform",`translate(${-g/2}, ${-y/2})`),p(e,C),e.calcIntersect=function(t,e){return P.rect(t,e)},e.intersect=function(t){return l.Rm.info("Cloud intersect",e,t),P.rect(e,t)},a}async function be(t,e){const{labelStyles:r,nodeStyles:i}=(0,n.GX)(e);e.labelStyle=r;const{shapeSvg:a,bbox:o,halfPadding:s,label:l}=await u(t,e,f(e)),c=o.width+8*s,h=o.height+2*s,d=`\n M${-c/2} ${h/2-5}\n v${10-h}\n q0,-5 5,-5\n h${c-10}\n q5,0 5,5\n v${h-10}\n q0,5 -5,5\n h${10-c}\n q-5,0 -5,-5\n Z\n `,g=a.append("path").attr("id","node-"+e.id).attr("class","node-bkg node-"+e.type).attr("style",i).attr("d",d);return a.append("line").attr("class","node-line-").attr("x1",-c/2).attr("y1",h/2).attr("x2",c/2).attr("y2",h/2),l.attr("transform",`translate(${-o.width/2}, ${-o.height/2})`),a.append((()=>l.node())),p(e,g),e.calcIntersect=function(t,e){return P.rect(t,e)},e.intersect=function(t){return P.rect(e,t)},a}async function ke(t,e){return G(t,e,{padding:e.padding??0})}(0,l.K2)(ye,"kanbanItem"),(0,l.K2)(me,"bang"),(0,l.K2)(xe,"cloud"),(0,l.K2)(be,"defaultMindmapNode"),(0,l.K2)(ke,"mindmapCircle");var we=[{semanticName:"Process",name:"Rectangle",shortName:"rect",description:"Standard process shape",aliases:["proc","process","rectangle"],internalAliases:["squareRect"],handler:jt},{semanticName:"Event",name:"Rounded Rectangle",shortName:"rounded",description:"Represents an event",aliases:["event"],internalAliases:["roundedRect"],handler:zt},{semanticName:"Terminal Point",name:"Stadium",shortName:"stadium",description:"Terminal point",aliases:["terminal","pill"],handler:Wt},{semanticName:"Subprocess",name:"Framed Rectangle",shortName:"fr-rect",description:"Subprocess",aliases:["subprocess","subproc","framed-rectangle","subroutine"],handler:Gt},{semanticName:"Database",name:"Cylinder",shortName:"cyl",description:"Database storage",aliases:["db","database","cylinder"],handler:st},{semanticName:"Start",name:"Circle",shortName:"circle",description:"Starting point",aliases:["circ"],handler:G},{semanticName:"Bang",name:"Bang",shortName:"bang",description:"Bang",aliases:["bang"],handler:me},{semanticName:"Cloud",name:"Cloud",shortName:"cloud",description:"cloud",aliases:["cloud"],handler:xe},{semanticName:"Decision",name:"Diamond",shortName:"diam",description:"Decision-making step",aliases:["decision","diamond","question"],handler:Rt},{semanticName:"Prepare Conditional",name:"Hexagon",shortName:"hex",description:"Preparation or condition step",aliases:["hexagon","prepare"],handler:ft},{semanticName:"Data Input/Output",name:"Lean Right",shortName:"lean-r",description:"Represents input or output",aliases:["lean-right","in-out"],internalAliases:["lean_right"],handler:St},{semanticName:"Data Input/Output",name:"Lean Left",shortName:"lean-l",description:"Represents output or input",aliases:["lean-left","out-in"],internalAliases:["lean_left"],handler:vt},{semanticName:"Priority Action",name:"Trapezoid Base Bottom",shortName:"trap-b",description:"Priority action",aliases:["priority","trapezoid-bottom","trapezoid"],handler:re},{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:wt},{semanticName:"Stop",name:"Double Circle",shortName:"dbl-circ",description:"Represents a stop point",aliases:["double-circle"],internalAliases:["doublecircle"],handler:ct},{semanticName:"Text Block",name:"Text Block",shortName:"text",description:"Text block",handler:Zt},{semanticName:"Card",name:"Notched Rectangle",shortName:"notch-rect",description:"Represents a card",aliases:["card","notched-rectangle"],handler:U},{semanticName:"Lined/Shaded Process",name:"Lined Rectangle",shortName:"lin-rect",description:"Lined process shape",aliases:["lined-rectangle","lined-process","lin-proc","shaded-process"],handler:Pt},{semanticName:"Start",name:"Small Circle",shortName:"sm-circ",description:"Small starting point",aliases:["start","small-circle"],internalAliases:["stateStart"],handler:Yt},{semanticName:"Stop",name:"Framed Circle",shortName:"fr-circ",description:"Stop point",aliases:["stop","framed-circle"],internalAliases:["stateEnd"],handler:Ut},{semanticName:"Fork/Join",name:"Filled Rectangle",shortName:"fork",description:"Fork or join in process flow",aliases:["join"],internalAliases:["forkJoin"],handler:dt},{semanticName:"Collate",name:"Hourglass",shortName:"hourglass",description:"Represents a collate operation",aliases:["hourglass","collate"],handler:gt},{semanticName:"Comment",name:"Curly Brace",shortName:"brace",description:"Adds a comment",aliases:["comment","brace-l"],handler:Q},{semanticName:"Comment Right",name:"Curly Brace",shortName:"brace-r",description:"Adds a comment",handler:tt},{semanticName:"Comment with braces on both sides",name:"Curly Braces",shortName:"braces",description:"Adds a comment",handler:rt},{semanticName:"Com Link",name:"Lightning Bolt",shortName:"bolt",description:"Communication link",aliases:["com-link","lightning-bolt"],handler:Tt},{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:pt},{semanticName:"Direct Access Storage",name:"Horizontal Cylinder",shortName:"h-cyl",description:"Direct access storage",aliases:["das","horizontal-cylinder"],handler:ee},{semanticName:"Disk Storage",name:"Lined Cylinder",shortName:"lin-cyl",description:"Disk storage",aliases:["disk","lined-cylinder"],handler:Lt},{semanticName:"Display",name:"Curved Trapezoid",shortName:"curv-trap",description:"Represents a display",aliases:["curved-trapezoid","display"],handler:it},{semanticName:"Divided Process",name:"Divided Rectangle",shortName:"div-rect",description:"Divided process shape",aliases:["div-proc","divided-rectangle","divided-process"],handler:lt},{semanticName:"Extract",name:"Triangle",shortName:"tri",description:"Extraction process",aliases:["extract","triangle"],handler:ne},{semanticName:"Internal Storage",name:"Window Pane",shortName:"win-pane",description:"Internal storage",aliases:["internal-storage","window-pane"],handler:se},{semanticName:"Junction",name:"Filled Circle",shortName:"f-circ",description:"Junction point",aliases:["junction","filled-circle"],handler:ht},{semanticName:"Loop Limit",name:"Trapezoidal Pentagon",shortName:"notch-pent",description:"Loop limit step",aliases:["loop-limit","notched-pentagon"],handler:ie},{semanticName:"Manual File",name:"Flipped Triangle",shortName:"flip-tri",description:"Manual file operation",aliases:["manual-file","flipped-triangle"],handler:ut},{semanticName:"Manual Input",name:"Sloped Rectangle",shortName:"sl-rect",description:"Manual input step",aliases:["manual-input","sloped-rectangle"],handler:qt},{semanticName:"Multi-Document",name:"Stacked Document",shortName:"docs",description:"Multiple documents",aliases:["documents","st-doc","stacked-document"],handler:Et},{semanticName:"Multi-Process",name:"Stacked Rectangle",shortName:"st-rect",description:"Multiple processes",aliases:["procs","processes","stacked-rectangle"],handler:$t},{semanticName:"Stored Data",name:"Bow Tie Rectangle",shortName:"bow-rect",description:"Stored data",aliases:["stored-data","bow-tie-rectangle"],handler:W},{semanticName:"Summary",name:"Crossed Circle",shortName:"cross-circ",description:"Summary",aliases:["summary","crossed-circle"],handler:V},{semanticName:"Tagged Document",name:"Tagged Document",shortName:"tag-doc",description:"Tagged document",aliases:["tag-doc","tagged-document"],handler:Vt},{semanticName:"Tagged Process",name:"Tagged Rectangle",shortName:"tag-rect",description:"Tagged process",aliases:["tagged-rectangle","tag-proc","tagged-process"],handler:Xt},{semanticName:"Paper Tape",name:"Flag",shortName:"flag",description:"Paper tape",aliases:["paper-tape"],handler:oe},{semanticName:"Odd",name:"Odd",shortName:"odd",description:"Odd shape",internalAliases:["rect_left_inv_arrow"],handler:Kt},{semanticName:"Lined Document",name:"Lined Document",shortName:"lin-doc",description:"Lined document",aliases:["lined-document"],handler:Ft}],Ce=(0,l.K2)((()=>{const t={state:Ht,choice:Y,note:Dt,rectWithTitle:It,labelRect:_t,iconSquare:bt,iconCircle:mt,icon:yt,iconRounded:xt,imageSquare:kt,anchor:q,kanbanItem:ye,mindmapCircle:ke,defaultMindmapNode:be,classBox:de,erBox:le,requirementBox:pe},e=[...Object.entries(t),...we.flatMap((t=>[t.shortName,..."aliases"in t?t.aliases:[],..."internalAliases"in t?t.internalAliases:[]].map((e=>[e,t.handler]))))];return Object.fromEntries(e)}),"generateShapeMap")();function _e(t){return t in Ce}(0,l.K2)(_e,"isValidShape");var ve=new Map;async function Se(t,e,r){let i,n;"rect"===e.shape&&(e.rx&&e.ry?e.shape="roundedRect":e.shape="squareRect");const a=e.shape?Ce[e.shape]:void 0;if(!a)throw new Error(`No such shape: ${e.shape}. Please check your syntax.`);if(e.link){let o;"sandbox"===r.config.securityLevel?o="_top":e.linkTarget&&(o=e.linkTarget||"_blank"),i=t.insert("svg:a").attr("xlink:href",e.link).attr("target",o??null),n=await a(i,e,r)}else n=await a(t,e,r),i=n;return e.tooltip&&n.attr("title",e.tooltip),ve.set(e.id,i),e.haveCallback&&i.attr("class",i.attr("class")+" clickable"),i}(0,l.K2)(Se,"insertNode");var Te=(0,l.K2)(((t,e)=>{ve.set(e.id,t)}),"setNodeElem"),Ae=(0,l.K2)((()=>{ve.clear()}),"clear"),Me=(0,l.K2)((t=>{const e=ve.get(t.id);l.Rm.trace("Transforming node",t.diff,t,"translate("+(t.x-t.width/2-5)+", "+t.width/2+")");const r=t.diff||0;return t.clusterNode?e.attr("transform","translate("+(t.x+r-t.width/2)+", "+(t.y-t.height/2-8)+")"):e.attr("transform","translate("+t.x+", "+t.y+")"),r}),"positionNode")},73981:(t,e,r)=>{"use strict";r.d(e,{H:()=>zr,r:()=>Nr});var i=r(40797);function n(t){return null==t}function a(t){return"object"==typeof t&&null!==t}function o(t){return Array.isArray(t)?t:n(t)?[]:[t]}function s(t,e){var r,i,n,a;if(e)for(r=0,i=(a=Object.keys(e)).length;rs&&(e=i-s+(a=" ... ").length),r-i>s&&(r=i+s-(o=" ...").length),{str:a+t.slice(e,r).replace(/\t/g,"\u2192")+o,pos:i-e+a.length}}function g(t,e){return h.repeat(" ",e-t.length)+t}function y(t,e){if(e=Object.create(e||null),!t.buffer)return null;e.maxLength||(e.maxLength=79),"number"!=typeof e.indent&&(e.indent=1),"number"!=typeof e.linesBefore&&(e.linesBefore=3),"number"!=typeof e.linesAfter&&(e.linesAfter=2);for(var r,i=/\r?\n|\r|\0/g,n=[0],a=[],o=-1;r=i.exec(t.buffer);)a.push(r.index),n.push(r.index+r[0].length),t.position<=r.index&&o<0&&(o=n.length-2);o<0&&(o=n.length-1);var s,l,c="",u=Math.min(t.line+e.linesAfter,a.length).toString().length,d=e.maxLength-(e.indent+u+3);for(s=1;s<=e.linesBefore&&!(o-s<0);s++)l=f(t.buffer,n[o-s],a[o-s],t.position-(n[o]-n[o-s]),d),c=h.repeat(" ",e.indent)+g((t.line-s+1).toString(),u)+" | "+l.str+"\n"+c;for(l=f(t.buffer,n[o],a[o],t.position,d),c+=h.repeat(" ",e.indent)+g((t.line+1).toString(),u)+" | "+l.str+"\n",c+=h.repeat("-",e.indent+u+3+l.pos)+"^\n",s=1;s<=e.linesAfter&&!(o+s>=a.length);s++)l=f(t.buffer,n[o+s],a[o+s],t.position-(n[o]-n[o+s]),d),c+=h.repeat(" ",e.indent)+g((t.line+s+1).toString(),u)+" | "+l.str+"\n";return c.replace(/\n$/,"")}(0,i.K2)(f,"getLine"),(0,i.K2)(g,"padStart"),(0,i.K2)(y,"makeSnippet");var m=y,x=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],b=["scalar","sequence","mapping"];function k(t){var e={};return null!==t&&Object.keys(t).forEach((function(r){t[r].forEach((function(t){e[String(t)]=r}))})),e}function w(t,e){if(e=e||{},Object.keys(e).forEach((function(e){if(-1===x.indexOf(e))throw new p('Unknown option "'+e+'" is met in definition of "'+t+'" YAML type.')})),this.options=e,this.tag=t,this.kind=e.kind||null,this.resolve=e.resolve||function(){return!0},this.construct=e.construct||function(t){return t},this.instanceOf=e.instanceOf||null,this.predicate=e.predicate||null,this.represent=e.represent||null,this.representName=e.representName||null,this.defaultStyle=e.defaultStyle||null,this.multi=e.multi||!1,this.styleAliases=k(e.styleAliases||null),-1===b.indexOf(this.kind))throw new p('Unknown kind "'+this.kind+'" is specified for "'+t+'" YAML type.')}(0,i.K2)(k,"compileStyleAliases"),(0,i.K2)(w,"Type$1");var C=w;function _(t,e){var r=[];return t[e].forEach((function(t){var e=r.length;r.forEach((function(r,i){r.tag===t.tag&&r.kind===t.kind&&r.multi===t.multi&&(e=i)})),r[e]=t})),r}function v(){var t,e,r={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}};function n(t){t.multi?(r.multi[t.kind].push(t),r.multi.fallback.push(t)):r[t.kind][t.tag]=r.fallback[t.tag]=t}for((0,i.K2)(n,"collectType"),t=0,e=arguments.length;t=0?"0b"+t.toString(2):"-0b"+t.toString(2).slice(1)}),"binary"),octal:(0,i.K2)((function(t){return t>=0?"0o"+t.toString(8):"-0o"+t.toString(8).slice(1)}),"octal"),decimal:(0,i.K2)((function(t){return t.toString(10)}),"decimal"),hexadecimal:(0,i.K2)((function(t){return t>=0?"0x"+t.toString(16).toUpperCase():"-0x"+t.toString(16).toUpperCase().slice(1)}),"hexadecimal")},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),q=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function j(t){return null!==t&&!(!q.test(t)||"_"===t[t.length-1])}function W(t){var e,r;return r="-"===(e=t.replace(/_/g,"").toLowerCase())[0]?-1:1,"+-".indexOf(e[0])>=0&&(e=e.slice(1)),".inf"===e?1===r?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:".nan"===e?NaN:r*parseFloat(e,10)}(0,i.K2)(j,"resolveYamlFloat"),(0,i.K2)(W,"constructYamlFloat");var H=/^[-+]?[0-9]+e/;function U(t,e){var r;if(isNaN(t))switch(e){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===t)switch(e){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===t)switch(e){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(h.isNegativeZero(t))return"-0.0";return r=t.toString(10),H.test(r)?r.replace("e",".e"):r}function Y(t){return"[object Number]"===Object.prototype.toString.call(t)&&(t%1!=0||h.isNegativeZero(t))}(0,i.K2)(U,"representYamlFloat"),(0,i.K2)(Y,"isFloat");var G=new C("tag:yaml.org,2002:float",{kind:"scalar",resolve:j,construct:W,predicate:Y,represent:U,defaultStyle:"lowercase"}),X=T.extend({implicit:[L,D,P,G]}),V=X,Z=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),Q=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");function J(t){return null!==t&&(null!==Z.exec(t)||null!==Q.exec(t))}function tt(t){var e,r,i,n,a,o,s,l,c=0,h=null;if(null===(e=Z.exec(t))&&(e=Q.exec(t)),null===e)throw new Error("Date resolve error");if(r=+e[1],i=+e[2]-1,n=+e[3],!e[4])return new Date(Date.UTC(r,i,n));if(a=+e[4],o=+e[5],s=+e[6],e[7]){for(c=e[7].slice(0,3);c.length<3;)c+="0";c=+c}return e[9]&&(h=6e4*(60*+e[10]+ +(e[11]||0)),"-"===e[9]&&(h=-h)),l=new Date(Date.UTC(r,i,n,a,o,s,c)),h&&l.setTime(l.getTime()-h),l}function et(t){return t.toISOString()}(0,i.K2)(J,"resolveYamlTimestamp"),(0,i.K2)(tt,"constructYamlTimestamp"),(0,i.K2)(et,"representYamlTimestamp");var rt=new C("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:J,construct:tt,instanceOf:Date,represent:et});function it(t){return"<<"===t||null===t}(0,i.K2)(it,"resolveYamlMerge");var nt=new C("tag:yaml.org,2002:merge",{kind:"scalar",resolve:it}),at="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r";function ot(t){if(null===t)return!1;var e,r,i=0,n=t.length,a=at;for(r=0;r64)){if(e<0)return!1;i+=6}return i%8==0}function st(t){var e,r,i=t.replace(/[\r\n=]/g,""),n=i.length,a=at,o=0,s=[];for(e=0;e>16&255),s.push(o>>8&255),s.push(255&o)),o=o<<6|a.indexOf(i.charAt(e));return 0===(r=n%4*6)?(s.push(o>>16&255),s.push(o>>8&255),s.push(255&o)):18===r?(s.push(o>>10&255),s.push(o>>2&255)):12===r&&s.push(o>>4&255),new Uint8Array(s)}function lt(t){var e,r,i="",n=0,a=t.length,o=at;for(e=0;e>18&63],i+=o[n>>12&63],i+=o[n>>6&63],i+=o[63&n]),n=(n<<8)+t[e];return 0===(r=a%3)?(i+=o[n>>18&63],i+=o[n>>12&63],i+=o[n>>6&63],i+=o[63&n]):2===r?(i+=o[n>>10&63],i+=o[n>>4&63],i+=o[n<<2&63],i+=o[64]):1===r&&(i+=o[n>>2&63],i+=o[n<<4&63],i+=o[64],i+=o[64]),i}function ct(t){return"[object Uint8Array]"===Object.prototype.toString.call(t)}(0,i.K2)(ot,"resolveYamlBinary"),(0,i.K2)(st,"constructYamlBinary"),(0,i.K2)(lt,"representYamlBinary"),(0,i.K2)(ct,"isBinary");var ht=new C("tag:yaml.org,2002:binary",{kind:"scalar",resolve:ot,construct:st,predicate:ct,represent:lt}),ut=Object.prototype.hasOwnProperty,dt=Object.prototype.toString;function pt(t){if(null===t)return!0;var e,r,i,n,a,o=[],s=t;for(e=0,r=s.length;e>10),56320+(t-65536&1023))}(0,i.K2)(It,"_class"),(0,i.K2)(Nt,"is_EOL"),(0,i.K2)(zt,"is_WHITE_SPACE"),(0,i.K2)(Pt,"is_WS_OR_EOL"),(0,i.K2)(qt,"is_FLOW_INDICATOR"),(0,i.K2)(jt,"fromHexCode"),(0,i.K2)(Wt,"escapedHexLen"),(0,i.K2)(Ht,"fromDecimalCode"),(0,i.K2)(Ut,"simpleEscapeSequence"),(0,i.K2)(Yt,"charFromCodepoint");var Gt,Xt=new Array(256),Vt=new Array(256);for(Gt=0;Gt<256;Gt++)Xt[Gt]=Ut(Gt)?1:0,Vt[Gt]=Ut(Gt);function Zt(t,e){this.input=t,this.filename=e.filename||null,this.schema=e.schema||vt,this.onWarning=e.onWarning||null,this.legacy=e.legacy||!1,this.json=e.json||!1,this.listener=e.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=t.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function Qt(t,e){var r={name:t.filename,buffer:t.input.slice(0,-1),position:t.position,line:t.line,column:t.position-t.lineStart};return r.snippet=m(r),new p(e,r)}function Jt(t,e){throw Qt(t,e)}function te(t,e){t.onWarning&&t.onWarning.call(null,Qt(t,e))}(0,i.K2)(Zt,"State$1"),(0,i.K2)(Qt,"generateError"),(0,i.K2)(Jt,"throwError"),(0,i.K2)(te,"throwWarning");var ee={YAML:(0,i.K2)((function(t,e,r){var i,n,a;null!==t.version&&Jt(t,"duplication of %YAML directive"),1!==r.length&&Jt(t,"YAML directive accepts exactly one argument"),null===(i=/^([0-9]+)\.([0-9]+)$/.exec(r[0]))&&Jt(t,"ill-formed argument of the YAML directive"),n=parseInt(i[1],10),a=parseInt(i[2],10),1!==n&&Jt(t,"unacceptable YAML version of the document"),t.version=r[0],t.checkLineBreaks=a<2,1!==a&&2!==a&&te(t,"unsupported YAML version of the document")}),"handleYamlDirective"),TAG:(0,i.K2)((function(t,e,r){var i,n;2!==r.length&&Jt(t,"TAG directive accepts exactly two arguments"),i=r[0],n=r[1],Rt.test(i)||Jt(t,"ill-formed tag handle (first argument) of the TAG directive"),St.call(t.tagMap,i)&&Jt(t,'there is a previously declared suffix for "'+i+'" tag handle'),Kt.test(n)||Jt(t,"ill-formed tag prefix (second argument) of the TAG directive");try{n=decodeURIComponent(n)}catch(a){Jt(t,"tag prefix is malformed: "+n)}t.tagMap[i]=n}),"handleTagDirective")};function re(t,e,r,i){var n,a,o,s;if(e1&&(t.result+=h.repeat("\n",e-1))}function ce(t,e,r){var i,n,a,o,s,l,c,h,u=t.kind,d=t.result;if(Pt(h=t.input.charCodeAt(t.position))||qt(h)||35===h||38===h||42===h||33===h||124===h||62===h||39===h||34===h||37===h||64===h||96===h)return!1;if((63===h||45===h)&&(Pt(i=t.input.charCodeAt(t.position+1))||r&&qt(i)))return!1;for(t.kind="scalar",t.result="",n=a=t.position,o=!1;0!==h;){if(58===h){if(Pt(i=t.input.charCodeAt(t.position+1))||r&&qt(i))break}else if(35===h){if(Pt(t.input.charCodeAt(t.position-1)))break}else{if(t.position===t.lineStart&&se(t)||r&&qt(h))break;if(Nt(h)){if(s=t.line,l=t.lineStart,c=t.lineIndent,oe(t,!1,-1),t.lineIndent>=e){o=!0,h=t.input.charCodeAt(t.position);continue}t.position=a,t.line=s,t.lineStart=l,t.lineIndent=c;break}}o&&(re(t,n,a,!1),le(t,t.line-s),n=a=t.position,o=!1),zt(h)||(a=t.position+1),h=t.input.charCodeAt(++t.position)}return re(t,n,a,!1),!!t.result||(t.kind=u,t.result=d,!1)}function he(t,e){var r,i,n;if(39!==(r=t.input.charCodeAt(t.position)))return!1;for(t.kind="scalar",t.result="",t.position++,i=n=t.position;0!==(r=t.input.charCodeAt(t.position));)if(39===r){if(re(t,i,t.position,!0),39!==(r=t.input.charCodeAt(++t.position)))return!0;i=t.position,t.position++,n=t.position}else Nt(r)?(re(t,i,n,!0),le(t,oe(t,!1,e)),i=n=t.position):t.position===t.lineStart&&se(t)?Jt(t,"unexpected end of the document within a single quoted scalar"):(t.position++,n=t.position);Jt(t,"unexpected end of the stream within a single quoted scalar")}function ue(t,e){var r,i,n,a,o,s;if(34!==(s=t.input.charCodeAt(t.position)))return!1;for(t.kind="scalar",t.result="",t.position++,r=i=t.position;0!==(s=t.input.charCodeAt(t.position));){if(34===s)return re(t,r,t.position,!0),t.position++,!0;if(92===s){if(re(t,r,t.position,!0),Nt(s=t.input.charCodeAt(++t.position)))oe(t,!1,e);else if(s<256&&Xt[s])t.result+=Vt[s],t.position++;else if((o=Wt(s))>0){for(n=o,a=0;n>0;n--)(o=jt(s=t.input.charCodeAt(++t.position)))>=0?a=(a<<4)+o:Jt(t,"expected hexadecimal character");t.result+=Yt(a),t.position++}else Jt(t,"unknown escape sequence");r=i=t.position}else Nt(s)?(re(t,r,i,!0),le(t,oe(t,!1,e)),r=i=t.position):t.position===t.lineStart&&se(t)?Jt(t,"unexpected end of the document within a double quoted scalar"):(t.position++,i=t.position)}Jt(t,"unexpected end of the stream within a double quoted scalar")}function de(t,e){var r,i,n,a,o,s,l,c,h,u,d,p,f=!0,g=t.tag,y=t.anchor,m=Object.create(null);if(91===(p=t.input.charCodeAt(t.position)))o=93,c=!1,a=[];else{if(123!==p)return!1;o=125,c=!0,a={}}for(null!==t.anchor&&(t.anchorMap[t.anchor]=a),p=t.input.charCodeAt(++t.position);0!==p;){if(oe(t,!0,e),(p=t.input.charCodeAt(t.position))===o)return t.position++,t.tag=g,t.anchor=y,t.kind=c?"mapping":"sequence",t.result=a,!0;f?44===p&&Jt(t,"expected the node content, but found ','"):Jt(t,"missed comma between flow collection entries"),d=null,s=l=!1,63===p&&Pt(t.input.charCodeAt(t.position+1))&&(s=l=!0,t.position++,oe(t,!0,e)),r=t.line,i=t.lineStart,n=t.position,be(t,e,Tt,!1,!0),u=t.tag,h=t.result,oe(t,!0,e),p=t.input.charCodeAt(t.position),!l&&t.line!==r||58!==p||(s=!0,p=t.input.charCodeAt(++t.position),oe(t,!0,e),be(t,e,Tt,!1,!0),d=t.result),c?ne(t,a,m,u,h,d,r,i,n):s?a.push(ne(t,null,m,u,h,d,r,i,n)):a.push(h),oe(t,!0,e),44===(p=t.input.charCodeAt(t.position))?(f=!0,p=t.input.charCodeAt(++t.position)):f=!1}Jt(t,"unexpected end of the stream within a flow collection")}function pe(t,e){var r,i,n,a,o=Lt,s=!1,l=!1,c=e,u=0,d=!1;if(124===(a=t.input.charCodeAt(t.position)))i=!1;else{if(62!==a)return!1;i=!0}for(t.kind="scalar",t.result="";0!==a;)if(43===(a=t.input.charCodeAt(++t.position))||45===a)Lt===o?o=43===a?$t:Ft:Jt(t,"repeat of a chomping mode identifier");else{if(!((n=Ht(a))>=0))break;0===n?Jt(t,"bad explicit indentation width of a block scalar; it cannot be less than one"):l?Jt(t,"repeat of an indentation width identifier"):(c=e+n-1,l=!0)}if(zt(a)){do{a=t.input.charCodeAt(++t.position)}while(zt(a));if(35===a)do{a=t.input.charCodeAt(++t.position)}while(!Nt(a)&&0!==a)}for(;0!==a;){for(ae(t),t.lineIndent=0,a=t.input.charCodeAt(t.position);(!l||t.lineIndentc&&(c=t.lineIndent),Nt(a))u++;else{if(t.lineIndente)&&0!==i)Jt(t,"bad indentation of a sequence entry");else if(t.lineIndente)&&(m&&(o=t.line,s=t.lineStart,l=t.position),be(t,e,Bt,!0,n)&&(m?g=t.result:y=t.result),m||(ne(t,d,p,f,g,y,o,s,l),f=g=y=null),oe(t,!0,-1),c=t.input.charCodeAt(t.position)),(t.line===a||t.lineIndent>e)&&0!==c)Jt(t,"bad indentation of a mapping entry");else if(t.lineIndente?f=1:t.lineIndent===e?f=0:t.lineIndente?f=1:t.lineIndent===e?f=0:t.lineIndent tag; it should be "scalar", not "'+t.kind+'"'),l=0,c=t.implicitTypes.length;l"),null!==t.result&&u.kind!==t.kind&&Jt(t,"unacceptable node kind for !<"+t.tag+'> tag; it should be "'+u.kind+'", not "'+t.kind+'"'),u.resolve(t.result,t.tag)?(t.result=u.construct(t.result,t.tag),null!==t.anchor&&(t.anchorMap[t.anchor]=t.result)):Jt(t,"cannot resolve a node with !<"+t.tag+"> explicit tag")}return null!==t.listener&&t.listener("close",t),null!==t.tag||null!==t.anchor||y}function ke(t){var e,r,i,n,a=t.position,o=!1;for(t.version=null,t.checkLineBreaks=t.legacy,t.tagMap=Object.create(null),t.anchorMap=Object.create(null);0!==(n=t.input.charCodeAt(t.position))&&(oe(t,!0,-1),n=t.input.charCodeAt(t.position),!(t.lineIndent>0||37!==n));){for(o=!0,n=t.input.charCodeAt(++t.position),e=t.position;0!==n&&!Pt(n);)n=t.input.charCodeAt(++t.position);for(i=[],(r=t.input.slice(e,t.position)).length<1&&Jt(t,"directive name must not be less than one character in length");0!==n;){for(;zt(n);)n=t.input.charCodeAt(++t.position);if(35===n){do{n=t.input.charCodeAt(++t.position)}while(0!==n&&!Nt(n));break}if(Nt(n))break;for(e=t.position;0!==n&&!Pt(n);)n=t.input.charCodeAt(++t.position);i.push(t.input.slice(e,t.position))}0!==n&&ae(t),St.call(ee,r)?ee[r](t,r,i):te(t,'unknown document directive "'+r+'"')}oe(t,!0,-1),0===t.lineIndent&&45===t.input.charCodeAt(t.position)&&45===t.input.charCodeAt(t.position+1)&&45===t.input.charCodeAt(t.position+2)?(t.position+=3,oe(t,!0,-1)):o&&Jt(t,"directives end mark is expected"),be(t,t.lineIndent-1,Bt,!1,!0),oe(t,!0,-1),t.checkLineBreaks&&Dt.test(t.input.slice(a,t.position))&&te(t,"non-ASCII line breaks are interpreted as content"),t.documents.push(t.result),t.position===t.lineStart&&se(t)?46===t.input.charCodeAt(t.position)&&(t.position+=3,oe(t,!0,-1)):t.position=55296&&i<=56319&&e+1=56320&&r<=57343?1024*(i-55296)+r-56320+65536:i}function yr(t){return/^\n* /.test(t)}(0,i.K2)(ar,"State"),(0,i.K2)(or,"indentString"),(0,i.K2)(sr,"generateNextLine"),(0,i.K2)(lr,"testImplicitResolving"),(0,i.K2)(cr,"isWhitespace"),(0,i.K2)(hr,"isPrintable"),(0,i.K2)(ur,"isNsCharOrWhitespace"),(0,i.K2)(dr,"isPlainSafe"),(0,i.K2)(pr,"isPlainSafeFirst"),(0,i.K2)(fr,"isPlainSafeLast"),(0,i.K2)(gr,"codePointAt"),(0,i.K2)(yr,"needIndentIndicator");var mr=1,xr=2,br=3,kr=4,wr=5;function Cr(t,e,r,i,n,a,o,s){var l,c=0,h=null,u=!1,d=!1,p=-1!==i,f=-1,g=pr(gr(t,0))&&fr(gr(t,t.length-1));if(e||o)for(l=0;l=65536?l+=2:l++){if(!hr(c=gr(t,l)))return wr;g=g&&dr(c,h,s),h=c}else{for(l=0;l=65536?l+=2:l++){if((c=gr(t,l))===Be)u=!0,p&&(d=d||l-f-1>i&&" "!==t[f+1],f=l);else if(!hr(c))return wr;g=g&&dr(c,h,s),h=c}d=d||p&&l-f-1>i&&" "!==t[f+1]}return u||d?r>9&&yr(t)?wr:o?a===nr?wr:xr:d?kr:br:!g||o||n(t)?a===nr?wr:xr:mr}function _r(t,e,r,n,a){t.dump=function(){if(0===e.length)return t.quotingType===nr?'""':"''";if(!t.noCompatMode&&(-1!==Je.indexOf(e)||tr.test(e)))return t.quotingType===nr?'"'+e+'"':"'"+e+"'";var o=t.indent*Math.max(1,r),s=-1===t.lineWidth?-1:Math.max(Math.min(t.lineWidth,40),t.lineWidth-o),l=n||t.flowLevel>-1&&r>=t.flowLevel;function c(e){return lr(t,e)}switch((0,i.K2)(c,"testAmbiguity"),Cr(e,l,t.indent,s,c,t.quotingType,t.forceQuotes&&!n,a)){case mr:return e;case xr:return"'"+e.replace(/'/g,"''")+"'";case br:return"|"+vr(e,t.indent)+Sr(or(e,o));case kr:return">"+vr(e,t.indent)+Sr(or(Tr(e,s),o));case wr:return'"'+Mr(e)+'"';default:throw new p("impossible error: invalid scalar style")}}()}function vr(t,e){var r=yr(t)?String(e):"",i="\n"===t[t.length-1];return r+(i&&("\n"===t[t.length-2]||"\n"===t)?"+":i?"":"-")+"\n"}function Sr(t){return"\n"===t[t.length-1]?t.slice(0,-1):t}function Tr(t,e){for(var r,i,n,a=/(\n+)([^\n]*)/g,o=(r=-1!==(r=t.indexOf("\n"))?r:t.length,a.lastIndex=r,Ar(t.slice(0,r),e)),s="\n"===t[0]||" "===t[0];n=a.exec(t);){var l=n[1],c=n[2];i=" "===c[0],o+=l+(s||i||""===c?"":"\n")+Ar(c,e),s=i}return o}function Ar(t,e){if(""===t||" "===t[0])return t;for(var r,i,n=/ [^ ]/g,a=0,o=0,s=0,l="";r=n.exec(t);)(s=r.index)-a>e&&(i=o>a?o:s,l+="\n"+t.slice(a,i),a=i+1),o=s;return l+="\n",t.length-a>e&&o>a?l+=t.slice(a,o)+"\n"+t.slice(o+1):l+=t.slice(a),l.slice(1)}function Mr(t){for(var e,r="",i=0,n=0;n=65536?n+=2:n++)i=gr(t,n),!(e=Qe[i])&&hr(i)?(r+=t[n],i>=65536&&(r+=t[n+1])):r+=e||rr(i);return r}function Br(t,e,r){var i,n,a,o="",s=t.tag;for(i=0,n=r.length;i1024&&(s+="? "),s+=t.dump+(t.condenseFlow?'"':"")+":"+(t.condenseFlow?"":" "),Dr(t,e,o,!1,!1)&&(l+=s+=t.dump));t.tag=c,t.dump="{"+l+"}"}function $r(t,e,r,i){var n,a,o,s,l,c,h="",u=t.tag,d=Object.keys(r);if(!0===t.sortKeys)d.sort();else if("function"==typeof t.sortKeys)d.sort(t.sortKeys);else if(t.sortKeys)throw new p("sortKeys must be a boolean or a function");for(n=0,a=d.length;n1024)&&(t.dump&&Be===t.dump.charCodeAt(0)?c+="?":c+="? "),c+=t.dump,l&&(c+=sr(t,e)),Dr(t,e+1,s,!0,l)&&(t.dump&&Be===t.dump.charCodeAt(0)?c+=":":c+=": ",h+=c+=t.dump));t.tag=u,t.dump=h||"{}"}function Er(t,e,r){var i,n,a,o,s,l;for(a=0,o=(n=r?t.explicitTypes:t.implicitTypes).length;a tag resolver accepts not "'+l+'" style');i=s.represent[l](e,l)}t.dump=i}return!0}return!1}function Dr(t,e,r,i,n,a,o){t.tag=null,t.dump=r,Er(t,r,!1)||Er(t,r,!0);var s,l=Se.call(t.dump),c=i;i&&(i=t.flowLevel<0||t.flowLevel>e);var h,u,d="[object Object]"===l||"[object Array]"===l;if(d&&(u=-1!==(h=t.duplicates.indexOf(r))),(null!==t.tag&&"?"!==t.tag||u||2!==t.indent&&e>0)&&(n=!1),u&&t.usedDuplicates[h])t.dump="*ref_"+h;else{if(d&&u&&!t.usedDuplicates[h]&&(t.usedDuplicates[h]=!0),"[object Object]"===l)i&&0!==Object.keys(t.dump).length?($r(t,e,t.dump,n),u&&(t.dump="&ref_"+h+t.dump)):(Fr(t,e,t.dump),u&&(t.dump="&ref_"+h+" "+t.dump));else if("[object Array]"===l)i&&0!==t.dump.length?(t.noArrayIndent&&!o&&e>0?Lr(t,e-1,t.dump,n):Lr(t,e,t.dump,n),u&&(t.dump="&ref_"+h+t.dump)):(Br(t,e,t.dump),u&&(t.dump="&ref_"+h+" "+t.dump));else{if("[object String]"!==l){if("[object Undefined]"===l)return!1;if(t.skipInvalid)return!1;throw new p("unacceptable kind of an object to dump "+l)}"?"!==t.tag&&_r(t,t.dump,e,a,c)}null!==t.tag&&"?"!==t.tag&&(s=encodeURI("!"===t.tag[0]?t.tag.slice(1):t.tag).replace(/!/g,"%21"),s="!"===t.tag[0]?"!"+s:"tag:yaml.org,2002:"===s.slice(0,18)?"!!"+s.slice(18):"!<"+s+">",t.dump=s+" "+t.dump)}return!0}function Or(t,e){var r,i,n=[],a=[];for(Rr(t,n,a),r=0,i=a.length;r{"use strict";r.d(e,{XX:()=>u,q7:()=>d,sO:()=>h});var i=r(5164),n=r(5894),a=r(13226),o=r(67633),s=r(40797),l={common:o.Y2,getConfig:o.zj,insertCluster:n.U,insertEdge:i.Jo,insertEdgeLabel:i.jP,insertMarkers:i.g0,insertNode:n.on,interpolateToCurve:a.Ib,labelHelper:n.Zk,log:s.Rm,positionEdgeLabel:i.T_},c={},h=(0,s.K2)((t=>{for(const e of t)c[e.name]=e}),"registerLayoutLoaders");(0,s.K2)((()=>{h([{name:"dagre",loader:(0,s.K2)((async()=>await Promise.all([r.e(3624),r.e(2334),r.e(7873)]).then(r.bind(r,57873))),"loader")},{name:"cose-bilkent",loader:(0,s.K2)((async()=>await Promise.all([r.e(165),r.e(7928)]).then(r.bind(r,77928))),"loader")}])}),"registerDefaultLayoutLoaders")();var u=(0,s.K2)((async(t,e)=>{if(!(t.layoutAlgorithm in c))throw new Error(`Unknown layout algorithm: ${t.layoutAlgorithm}`);const r=c[t.layoutAlgorithm];return(await r.loader()).render(t,e,l,{algorithm:r.algorithm})}),"render"),d=(0,s.K2)(((t="",{fallback:e="dagre"}={})=>{if(t in c)return t;if(e in c)return s.Rm.warn(`Layout algorithm ${t} is not registered. Using ${e} as fallback.`),e;throw new Error(`Both layout algorithms ${t} and ${e} are not registered.`)}),"getRegisteredLayoutAlgorithm")},5164:(t,e,r)=>{"use strict";r.d(e,{IU:()=>x,Jo:()=>L,T_:()=>C,g0:()=>R,jP:()=>k});var i=r(28698),n=r(5894),a=r(63245),o=r(32387),s=r(30092),l=r(13226),c=r(67633),h=r(40797),u=r(70451),d=r(29893),p=(0,h.K2)(((t,e,r,i,n,a)=>{e.arrowTypeStart&&g(t,"start",e.arrowTypeStart,r,i,n,a),e.arrowTypeEnd&&g(t,"end",e.arrowTypeEnd,r,i,n,a)}),"addEdgeMarkers"),f={arrow_cross:{type:"cross",fill:!1},arrow_point:{type:"point",fill:!0},arrow_barb:{type:"barb",fill:!0},arrow_circle:{type:"circle",fill:!1},aggregation:{type:"aggregation",fill:!1},extension:{type:"extension",fill:!1},composition:{type:"composition",fill:!0},dependency:{type:"dependency",fill:!0},lollipop:{type:"lollipop",fill:!1},only_one:{type:"onlyOne",fill:!1},zero_or_one:{type:"zeroOrOne",fill:!1},one_or_more:{type:"oneOrMore",fill:!1},zero_or_more:{type:"zeroOrMore",fill:!1},requirement_arrow:{type:"requirement_arrow",fill:!1},requirement_contains:{type:"requirement_contains",fill:!1}},g=(0,h.K2)(((t,e,r,i,n,a,o)=>{const s=f[r];if(!s)return void h.Rm.warn(`Unknown arrow type: ${r}`);const l=`${n}_${a}-${s.type}${"start"===e?"Start":"End"}`;if(o&&""!==o.trim()){const r=`${l}_${o.replace(/[^\dA-Za-z]/g,"_")}`;if(!document.getElementById(r)){const t=document.getElementById(l);if(t){const e=t.cloneNode(!0);e.id=r;e.querySelectorAll("path, circle, line").forEach((t=>{t.setAttribute("stroke",o),s.fill&&t.setAttribute("fill",o)})),t.parentNode?.appendChild(e)}}t.attr(`marker-${e}`,`url(${i}#${r})`)}else t.attr(`marker-${e}`,`url(${i}#${l})`)}),"addEdgeMarker"),y=new Map,m=new Map,x=(0,h.K2)((()=>{y.clear(),m.clear()}),"clear"),b=(0,h.K2)((t=>t?t.reduce(((t,e)=>t+";"+e),""):""),"getLabelStyles"),k=(0,h.K2)((async(t,e)=>{let r=(0,c._3)((0,c.D7)().flowchart.htmlLabels);const{labelStyles:i}=(0,o.GX)(e);e.labelStyle=i;const a=await(0,s.GZ)(t,e.label,{style:e.labelStyle,useHtmlLabels:r,addSvgBackground:!0,isNode:!1});h.Rm.info("abc82",e,e.labelType);const l=t.insert("g").attr("class","edgeLabel"),d=l.insert("g").attr("class","label").attr("data-id",e.id);d.node().appendChild(a);let p,f=a.getBBox();if(r){const t=a.children[0],e=(0,u.Ltv)(a);f=t.getBoundingClientRect(),e.attr("width",f.width),e.attr("height",f.height)}if(d.attr("transform","translate("+-f.width/2+", "+-f.height/2+")"),y.set(e.id,l),e.width=f.width,e.height=f.height,e.startLabelLeft){const r=await(0,n.DA)(e.startLabelLeft,b(e.labelStyle)),i=t.insert("g").attr("class","edgeTerminals"),a=i.insert("g").attr("class","inner");p=a.node().appendChild(r);const o=r.getBBox();a.attr("transform","translate("+-o.width/2+", "+-o.height/2+")"),m.get(e.id)||m.set(e.id,{}),m.get(e.id).startLeft=i,w(p,e.startLabelLeft)}if(e.startLabelRight){const r=await(0,n.DA)(e.startLabelRight,b(e.labelStyle)),i=t.insert("g").attr("class","edgeTerminals"),a=i.insert("g").attr("class","inner");p=i.node().appendChild(r),a.node().appendChild(r);const o=r.getBBox();a.attr("transform","translate("+-o.width/2+", "+-o.height/2+")"),m.get(e.id)||m.set(e.id,{}),m.get(e.id).startRight=i,w(p,e.startLabelRight)}if(e.endLabelLeft){const r=await(0,n.DA)(e.endLabelLeft,b(e.labelStyle)),i=t.insert("g").attr("class","edgeTerminals"),a=i.insert("g").attr("class","inner");p=a.node().appendChild(r);const o=r.getBBox();a.attr("transform","translate("+-o.width/2+", "+-o.height/2+")"),i.node().appendChild(r),m.get(e.id)||m.set(e.id,{}),m.get(e.id).endLeft=i,w(p,e.endLabelLeft)}if(e.endLabelRight){const r=await(0,n.DA)(e.endLabelRight,b(e.labelStyle)),i=t.insert("g").attr("class","edgeTerminals"),a=i.insert("g").attr("class","inner");p=a.node().appendChild(r);const o=r.getBBox();a.attr("transform","translate("+-o.width/2+", "+-o.height/2+")"),i.node().appendChild(r),m.get(e.id)||m.set(e.id,{}),m.get(e.id).endRight=i,w(p,e.endLabelRight)}return a}),"insertEdgeLabel");function w(t,e){(0,c.D7)().flowchart.htmlLabels&&t&&(t.style.width=9*e.length+"px",t.style.height="12px")}(0,h.K2)(w,"setTerminalWidth");var C=(0,h.K2)(((t,e)=>{h.Rm.debug("Moving label abc88 ",t.id,t.label,y.get(t.id),e);let r=e.updatedPath?e.updatedPath:e.originalPath;const i=(0,c.D7)(),{subGraphTitleTotalMargin:n}=(0,a.O)(i);if(t.label){const i=y.get(t.id);let a=t.x,o=t.y;if(r){const i=l._K.calcLabelPosition(r);h.Rm.debug("Moving label "+t.label+" from (",a,",",o,") to (",i.x,",",i.y,") abc88"),e.updatedPath&&(a=i.x,o=i.y)}i.attr("transform",`translate(${a}, ${o+n/2})`)}if(t.startLabelLeft){const e=m.get(t.id).startLeft;let i=t.x,n=t.y;if(r){const e=l._K.calcTerminalLabelPosition(t.arrowTypeStart?10:0,"start_left",r);i=e.x,n=e.y}e.attr("transform",`translate(${i}, ${n})`)}if(t.startLabelRight){const e=m.get(t.id).startRight;let i=t.x,n=t.y;if(r){const e=l._K.calcTerminalLabelPosition(t.arrowTypeStart?10:0,"start_right",r);i=e.x,n=e.y}e.attr("transform",`translate(${i}, ${n})`)}if(t.endLabelLeft){const e=m.get(t.id).endLeft;let i=t.x,n=t.y;if(r){const e=l._K.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,"end_left",r);i=e.x,n=e.y}e.attr("transform",`translate(${i}, ${n})`)}if(t.endLabelRight){const e=m.get(t.id).endRight;let i=t.x,n=t.y;if(r){const e=l._K.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,"end_right",r);i=e.x,n=e.y}e.attr("transform",`translate(${i}, ${n})`)}}),"positionEdgeLabel"),_=(0,h.K2)(((t,e)=>{const r=t.x,i=t.y,n=Math.abs(e.x-r),a=Math.abs(e.y-i),o=t.width/2,s=t.height/2;return n>=o||a>=s}),"outsideNode"),v=(0,h.K2)(((t,e,r)=>{h.Rm.debug(`intersection calc abc89:\n outsidePoint: ${JSON.stringify(e)}\n insidePoint : ${JSON.stringify(r)}\n node : x:${t.x} y:${t.y} w:${t.width} h:${t.height}`);const i=t.x,n=t.y,a=Math.abs(i-r.x),o=t.width/2;let s=r.xMath.abs(i-e.x)*l){let t=r.y{h.Rm.warn("abc88 cutPathAtIntersect",t,e);let r=[],i=t[0],n=!1;return t.forEach((t=>{if(h.Rm.info("abc88 checking point",t,e),_(e,t)||n)h.Rm.warn("abc88 outside",t,i),i=t,n||r.push(t);else{const a=v(e,i,t);h.Rm.debug("abc88 inside",t,i,a),h.Rm.debug("abc88 intersection",a,e);let o=!1;r.forEach((t=>{o=o||t.x===a.x&&t.y===a.y})),r.some((t=>t.x===a.x&&t.y===a.y))?h.Rm.warn("abc88 no intersect",a,r):r.push(a),n=!0}})),h.Rm.debug("returning points",r),r}),"cutPathAtIntersect");function T(t){const e=[],r=[];for(let i=1;i5&&Math.abs(a.y-n.y)>5||n.y===a.y&&a.x===o.x&&Math.abs(a.x-n.x)>5&&Math.abs(a.y-o.y)>5)&&(e.push(a),r.push(i))}return{cornerPoints:e,cornerPointPositions:r}}(0,h.K2)(T,"extractCornerPoints");var A=(0,h.K2)((function(t,e,r){const i=e.x-t.x,n=e.y-t.y,a=r/Math.sqrt(i*i+n*n);return{x:e.x-a*i,y:e.y-a*n}}),"findAdjacentPoint"),M=(0,h.K2)((function(t){const{cornerPointPositions:e}=T(t),r=[];for(let i=0;i10&&Math.abs(n.y-e.y)>=10){h.Rm.debug("Corner point fixing",Math.abs(n.x-e.x),Math.abs(n.y-e.y));const t=5;d=a.x===o.x?{x:l<0?o.x-t+u:o.x+t-u,y:c<0?o.y-u:o.y+u}:{x:l<0?o.x-u:o.x+u,y:c<0?o.y-t+u:o.y+t-u}}else h.Rm.debug("Corner point skipping fixing",Math.abs(n.x-e.x),Math.abs(n.y-e.y));r.push(d,s)}else r.push(t[i]);return r}),"fixCorners"),B=(0,h.K2)(((t,e,r)=>{const i=t-e-r,n=Math.floor(i/4);return`0 ${e} ${Array(n).fill("2 2").join(" ")} ${r}`}),"generateDashArray"),L=(0,h.K2)((function(t,e,r,n,a,s,f,g=!1){const{handDrawnSeed:y}=(0,c.D7)();let m=e.points,x=!1;const b=a;var k=s;const w=[];for(const i in e.cssCompiledStyles)(0,o.KX)(i)||w.push(e.cssCompiledStyles[i]);h.Rm.debug("UIO intersect check",e.points,k.x,b.x),k.intersect&&b.intersect&&!g&&(m=m.slice(1,e.points.length-1),m.unshift(b.intersect(m[0])),h.Rm.debug("Last point UIO",e.start,"--\x3e",e.end,m[m.length-1],k,k.intersect(m[m.length-1])),m.push(k.intersect(m[m.length-1])));const C=btoa(JSON.stringify(m));e.toCluster&&(h.Rm.info("to cluster abc88",r.get(e.toCluster)),m=S(e.points,r.get(e.toCluster).node),x=!0),e.fromCluster&&(h.Rm.debug("from cluster abc88",r.get(e.fromCluster),JSON.stringify(m,null,2)),m=S(m.reverse(),r.get(e.fromCluster).node).reverse(),x=!0);let _=m.filter((t=>!Number.isNaN(t.y)));_=M(_);let v=u.qrM;switch(v=u.lUB,e.curve){case"linear":v=u.lUB;break;case"basis":default:v=u.qrM;break;case"cardinal":v=u.y8u;break;case"bumpX":v=u.Wi0;break;case"bumpY":v=u.PGM;break;case"catmullRom":v=u.oDi;break;case"monotoneX":v=u.nVG;break;case"monotoneY":v=u.uxU;break;case"natural":v=u.Xf2;break;case"step":v=u.GZz;break;case"stepAfter":v=u.UPb;break;case"stepBefore":v=u.dyv}const{x:T,y:A}=(0,i.RI)(e),L=(0,u.n8j)().x(T).y(A).curve(v);let $,D;switch(e.thickness){case"normal":default:$="edge-thickness-normal";break;case"thick":$="edge-thickness-thick";break;case"invisible":$="edge-thickness-invisible"}switch(e.pattern){case"solid":default:$+=" edge-pattern-solid";break;case"dotted":$+=" edge-pattern-dotted";break;case"dashed":$+=" edge-pattern-dashed"}let O="rounded"===e.curve?F(E(_,e),5):L(_);const R=Array.isArray(e.style)?e.style:[e.style];let K=R.find((t=>t?.startsWith("stroke:"))),I=!1;if("handDrawn"===e.look){const r=d.A.svg(t);Object.assign([],_);const i=r.path(O,{roughness:.3,seed:y});$+=" transition",D=(0,u.Ltv)(i).select("path").attr("id",e.id).attr("class"," "+$+(e.classes?" "+e.classes:"")).attr("style",R?R.reduce(((t,e)=>t+";"+e),""):"");let n=D.attr("d");D.attr("d",n),t.node().appendChild(D.node())}else{const r=w.join(";"),n=R?R.reduce(((t,e)=>t+e+";"),""):"";let a="";e.animate&&(a=" edge-animation-fast"),e.animation&&(a=" edge-animation-"+e.animation);const o=(r?r+";"+n+";":n)+";"+(R?R.reduce(((t,e)=>t+";"+e),""):"");D=t.append("path").attr("d",O).attr("id",e.id).attr("class"," "+$+(e.classes?" "+e.classes:"")+(a??"")).attr("style",o),K=o.match(/stroke:([^;]+)/)?.[1],I=!0===e.animate||!!e.animation||r.includes("animation");const s=D.node(),l="function"==typeof s.getTotalLength?s.getTotalLength():0,c=i.Nq[e.arrowTypeStart]||0,h=i.Nq[e.arrowTypeEnd]||0;if("neo"===e.look&&!I){const t=`stroke-dasharray: ${"dotted"===e.pattern||"dashed"===e.pattern?B(l,c,h):`0 ${c} ${l-c-h} ${h}`}; stroke-dashoffset: 0;`;D.attr("style",t+D.attr("style"))}}D.attr("data-edge",!0),D.attr("data-et","edge"),D.attr("data-id",e.id),D.attr("data-points",C),e.showPoints&&_.forEach((e=>{t.append("circle").style("stroke","red").style("fill","red").attr("r",1).attr("cx",e.x).attr("cy",e.y)}));let N="";((0,c.D7)().flowchart.arrowMarkerAbsolute||(0,c.D7)().state.arrowMarkerAbsolute)&&(N=window.location.protocol+"//"+window.location.host+window.location.pathname+window.location.search,N=N.replace(/\(/g,"\\(").replace(/\)/g,"\\)")),h.Rm.info("arrowTypeStart",e.arrowTypeStart),h.Rm.info("arrowTypeEnd",e.arrowTypeEnd),p(D,e,N,f,n,K);const z=m[Math.floor(m.length/2)];l._K.isLabelCoordinateInPath(z,D.attr("d"))||(x=!0);let P={};return x&&(P.updatedPath=m),P.originalPath=e.points,P}),"insertEdge");function F(t,e){if(t.length<2)return"";let r="";const i=t.length,n=1e-5;for(let a=0;a({...t})));if(t.length>=2&&i.hq[e.arrowTypeStart]){const n=i.hq[e.arrowTypeStart],a=t[0],o=t[1],{angle:s}=$(a,o),l=n*Math.cos(s),c=n*Math.sin(s);r[0].x=a.x+l,r[0].y=a.y+c}const n=t.length;if(n>=2&&i.hq[e.arrowTypeEnd]){const a=i.hq[e.arrowTypeEnd],o=t[n-1],s=t[n-2],{angle:l}=$(s,o),c=a*Math.cos(l),h=a*Math.sin(l);r[n-1].x=o.x-c,r[n-1].y=o.y-h}return r}(0,h.K2)(F,"generateRoundedPath"),(0,h.K2)($,"calculateDeltaAndAngle"),(0,h.K2)(E,"applyMarkerOffsetsToPoints");var D=(0,h.K2)(((t,e,r,i)=>{e.forEach((e=>{O[e](t,r,i)}))}),"insertMarkers"),O={extension:(0,h.K2)(((t,e,r)=>{h.Rm.trace("Making markers for ",r),t.append("defs").append("marker").attr("id",r+"_"+e+"-extensionStart").attr("class","marker extension "+e).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-extensionEnd").attr("class","marker extension "+e).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z")}),"extension"),composition:(0,h.K2)(((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-compositionStart").attr("class","marker composition "+e).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-compositionEnd").attr("class","marker composition "+e).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")}),"composition"),aggregation:(0,h.K2)(((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-aggregationStart").attr("class","marker aggregation "+e).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-aggregationEnd").attr("class","marker aggregation "+e).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")}),"aggregation"),dependency:(0,h.K2)(((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-dependencyStart").attr("class","marker dependency "+e).attr("refX",6).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-dependencyEnd").attr("class","marker dependency "+e).attr("refX",13).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")}),"dependency"),lollipop:(0,h.K2)(((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-lollipopStart").attr("class","marker lollipop "+e).attr("refX",13).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6),t.append("defs").append("marker").attr("id",r+"_"+e+"-lollipopEnd").attr("class","marker lollipop "+e).attr("refX",1).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6)}),"lollipop"),point:(0,h.K2)(((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-pointEnd").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",5).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",8).attr("markerHeight",8).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-pointStart").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",4.5).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",8).attr("markerHeight",8).attr("orient","auto").append("path").attr("d","M 0 5 L 10 10 L 10 0 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")}),"point"),circle:(0,h.K2)(((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-circleEnd").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",11).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-circleStart").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",-1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")}),"circle"),cross:(0,h.K2)(((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-crossEnd").attr("class","marker cross "+e).attr("viewBox","0 0 11 11").attr("refX",12).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-crossStart").attr("class","marker cross "+e).attr("viewBox","0 0 11 11").attr("refX",-1).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0")}),"cross"),barb:(0,h.K2)(((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-barbEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","userSpaceOnUse").attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")}),"barb"),only_one:(0,h.K2)(((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-onlyOneStart").attr("class","marker onlyOne "+e).attr("refX",0).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("d","M9,0 L9,18 M15,0 L15,18"),t.append("defs").append("marker").attr("id",r+"_"+e+"-onlyOneEnd").attr("class","marker onlyOne "+e).attr("refX",18).attr("refY",9).attr("markerWidth",18).attr("markerHeight",18).attr("orient","auto").append("path").attr("d","M3,0 L3,18 M9,0 L9,18")}),"only_one"),zero_or_one:(0,h.K2)(((t,e,r)=>{const i=t.append("defs").append("marker").attr("id",r+"_"+e+"-zeroOrOneStart").attr("class","marker zeroOrOne "+e).attr("refX",0).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto");i.append("circle").attr("fill","white").attr("cx",21).attr("cy",9).attr("r",6),i.append("path").attr("d","M9,0 L9,18");const n=t.append("defs").append("marker").attr("id",r+"_"+e+"-zeroOrOneEnd").attr("class","marker zeroOrOne "+e).attr("refX",30).attr("refY",9).attr("markerWidth",30).attr("markerHeight",18).attr("orient","auto");n.append("circle").attr("fill","white").attr("cx",9).attr("cy",9).attr("r",6),n.append("path").attr("d","M21,0 L21,18")}),"zero_or_one"),one_or_more:(0,h.K2)(((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-oneOrMoreStart").attr("class","marker oneOrMore "+e).attr("refX",18).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("d","M0,18 Q 18,0 36,18 Q 18,36 0,18 M42,9 L42,27"),t.append("defs").append("marker").attr("id",r+"_"+e+"-oneOrMoreEnd").attr("class","marker oneOrMore "+e).attr("refX",27).attr("refY",18).attr("markerWidth",45).attr("markerHeight",36).attr("orient","auto").append("path").attr("d","M3,9 L3,27 M9,18 Q27,0 45,18 Q27,36 9,18")}),"one_or_more"),zero_or_more:(0,h.K2)(((t,e,r)=>{const i=t.append("defs").append("marker").attr("id",r+"_"+e+"-zeroOrMoreStart").attr("class","marker zeroOrMore "+e).attr("refX",18).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto");i.append("circle").attr("fill","white").attr("cx",48).attr("cy",18).attr("r",6),i.append("path").attr("d","M0,18 Q18,0 36,18 Q18,36 0,18");const n=t.append("defs").append("marker").attr("id",r+"_"+e+"-zeroOrMoreEnd").attr("class","marker zeroOrMore "+e).attr("refX",39).attr("refY",18).attr("markerWidth",57).attr("markerHeight",36).attr("orient","auto");n.append("circle").attr("fill","white").attr("cx",9).attr("cy",18).attr("r",6),n.append("path").attr("d","M21,18 Q39,0 57,18 Q39,36 21,18")}),"zero_or_more"),requirement_arrow:(0,h.K2)(((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-requirement_arrowEnd").attr("refX",20).attr("refY",10).attr("markerWidth",20).attr("markerHeight",20).attr("orient","auto").append("path").attr("d","M0,0\n L20,10\n M20,10\n L0,20")}),"requirement_arrow"),requirement_contains:(0,h.K2)(((t,e,r)=>{const i=t.append("defs").append("marker").attr("id",r+"_"+e+"-requirement_containsStart").attr("refX",0).attr("refY",10).attr("markerWidth",20).attr("markerHeight",20).attr("orient","auto").append("g");i.append("circle").attr("cx",10).attr("cy",10).attr("r",9).attr("fill","none"),i.append("line").attr("x1",1).attr("x2",19).attr("y1",10).attr("y2",10),i.append("line").attr("y1",1).attr("y2",19).attr("x1",10).attr("x2",10)}),"requirement_contains")},R=D},13226:(t,e,r)=>{"use strict";r.d(e,{$C:()=>M,$t:()=>W,C4:()=>U,I5:()=>j,Ib:()=>y,KL:()=>X,Sm:()=>Y,Un:()=>R,_K:()=>H,bH:()=>E,dq:()=>P,pe:()=>c,rY:()=>G,ru:()=>O,sM:()=>T,vU:()=>f,yT:()=>L});var i=r(67633),n=r(40797),a=r(16750),o=r(70451),s=r(46632),l=r(42837),c="\u200b",h={curveBasis:o.qrM,curveBasisClosed:o.Yu4,curveBasisOpen:o.IA3,curveBumpX:o.Wi0,curveBumpY:o.PGM,curveBundle:o.OEq,curveCardinalClosed:o.olC,curveCardinalOpen:o.IrU,curveCardinal:o.y8u,curveCatmullRomClosed:o.Q7f,curveCatmullRomOpen:o.cVp,curveCatmullRom:o.oDi,curveLinear:o.lUB,curveLinearClosed:o.Lx9,curveMonotoneX:o.nVG,curveMonotoneY:o.uxU,curveNatural:o.Xf2,curveStep:o.GZz,curveStepAfter:o.UPb,curveStepBefore:o.dyv},u=/\s*(?:(\w+)(?=:):|(\w+))\s*(?:(\w+)|((?:(?!}%{2}).|\r?\n)*))?\s*(?:}%{2})?/gi,d=(0,n.K2)((function(t,e){const r=p(t,/(?:init\b)|(?:initialize\b)/);let n={};if(Array.isArray(r)){const t=r.map((t=>t.args));(0,i.$i)(t),n=(0,i.hH)(n,[...t])}else n=r.args;if(!n)return;let a=(0,i.Ch)(t,e);const o="config";return void 0!==n[o]&&("flowchart-v2"===a&&(a="flowchart"),n[a]=n[o],delete n[o]),n}),"detectInit"),p=(0,n.K2)((function(t,e=null){try{const r=new RegExp(`[%]{2}(?![{]${u.source})(?=[}][%]{2}).*\n`,"ig");let a;t=t.trim().replace(r,"").replace(/'/gm,'"'),n.Rm.debug(`Detecting diagram directive${null!==e?" type:"+e:""} based on the text:${t}`);const o=[];for(;null!==(a=i.DB.exec(t));)if(a.index===i.DB.lastIndex&&i.DB.lastIndex++,a&&!e||e&&a[1]?.match(e)||e&&a[2]?.match(e)){const t=a[1]?a[1]:a[2],e=a[3]?a[3].trim():a[4]?JSON.parse(a[4].trim()):null;o.push({type:t,args:e})}return 0===o.length?{type:t,args:null}:1===o.length?o[0]:o}catch(r){return n.Rm.error(`ERROR: ${r.message} - Unable to parse directive type: '${e}' based on the text: '${t}'`),{type:void 0,args:null}}}),"detectDirective"),f=(0,n.K2)((function(t){return t.replace(i.DB,"")}),"removeDirectives"),g=(0,n.K2)((function(t,e){for(const[r,i]of e.entries())if(i.match(t))return r;return-1}),"isSubstringInArray");function y(t,e){if(!t)return e;const r=`curve${t.charAt(0).toUpperCase()+t.slice(1)}`;return h[r]??e}function m(t,e){const r=t.trim();if(r)return"loose"!==e.securityLevel?(0,a.J)(r):r}(0,n.K2)(y,"interpolateToCurve"),(0,n.K2)(m,"formatUrl");var x=(0,n.K2)(((t,...e)=>{const r=t.split("."),i=r.length-1,a=r[i];let o=window;for(let s=0;s{r+=b(t,e),e=t}));return _(t,r/2)}function w(t){return 1===t.length?t[0]:k(t)}(0,n.K2)(b,"distance"),(0,n.K2)(k,"traverseEdge"),(0,n.K2)(w,"calcLabelPosition");var C=(0,n.K2)(((t,e=2)=>{const r=Math.pow(10,e);return Math.round(t*r)/r}),"roundNumber"),_=(0,n.K2)(((t,e)=>{let r,i=e;for(const n of t){if(r){const t=b(n,r);if(0===t)return r;if(t=1)return{x:n.x,y:n.y};if(e>0&&e<1)return{x:C((1-e)*r.x+e*n.x,5),y:C((1-e)*r.y+e*n.y,5)}}}r=n}throw new Error("Could not find a suitable point for the given distance")}),"calculatePoint"),v=(0,n.K2)(((t,e,r)=>{n.Rm.info(`our points ${JSON.stringify(e)}`),e[0]!==r&&(e=e.reverse());const i=_(e,25),a=t?10:5,o=Math.atan2(e[0].y-i.y,e[0].x-i.x),s={x:0,y:0};return s.x=Math.sin(o)*a+(e[0].x+i.x)/2,s.y=-Math.cos(o)*a+(e[0].y+i.y)/2,s}),"calcCardinalityPosition");function S(t,e,r){const i=structuredClone(r);n.Rm.info("our points",i),"start_left"!==e&&"start_right"!==e&&i.reverse();const a=_(i,25+t),o=10+.5*t,s=Math.atan2(i[0].y-a.y,i[0].x-a.x),l={x:0,y:0};return"start_left"===e?(l.x=Math.sin(s+Math.PI)*o+(i[0].x+a.x)/2,l.y=-Math.cos(s+Math.PI)*o+(i[0].y+a.y)/2):"end_right"===e?(l.x=Math.sin(s-Math.PI)*o+(i[0].x+a.x)/2-5,l.y=-Math.cos(s-Math.PI)*o+(i[0].y+a.y)/2-5):"end_left"===e?(l.x=Math.sin(s)*o+(i[0].x+a.x)/2-5,l.y=-Math.cos(s)*o+(i[0].y+a.y)/2-5):(l.x=Math.sin(s)*o+(i[0].x+a.x)/2,l.y=-Math.cos(s)*o+(i[0].y+a.y)/2),l}function T(t){let e="",r="";for(const i of t)void 0!==i&&(i.startsWith("color:")||i.startsWith("text-align:")?r=r+i+";":e=e+i+";");return{style:e,labelStyle:r}}(0,n.K2)(S,"calcTerminalLabelPosition"),(0,n.K2)(T,"getStylesFromArray");var A=0,M=(0,n.K2)((()=>(A++,"id-"+Math.random().toString(36).substr(2,12)+"-"+A)),"generateId");function B(t){let e="";const r="0123456789abcdef";for(let i=0;iB(t.length)),"random"),F=(0,n.K2)((function(){return{x:0,y:0,fill:void 0,anchor:"start",style:"#666",width:100,height:100,textMargin:0,rx:0,ry:0,valign:void 0,text:""}}),"getTextObj"),$=(0,n.K2)((function(t,e){const r=e.text.replace(i.Y2.lineBreakRegex," "),[,n]=j(e.fontSize),a=t.append("text");a.attr("x",e.x),a.attr("y",e.y),a.style("text-anchor",e.anchor),a.style("font-family",e.fontFamily),a.style("font-size",n),a.style("font-weight",e.fontWeight),a.attr("fill",e.fill),void 0!==e.class&&a.attr("class",e.class);const o=a.append("tspan");return o.attr("x",e.x+2*e.textMargin),o.attr("fill",e.fill),o.text(r),a}),"drawSimpleText"),E=(0,s.A)(((t,e,r)=>{if(!t)return t;if(r=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",joinWith:"
    "},r),i.Y2.lineBreakRegex.test(t))return t;const n=t.split(" ").filter(Boolean),a=[];let o="";return n.forEach(((t,i)=>{const s=R(`${t} `,r),l=R(o,r);if(s>e){const{hyphenatedStrings:i,remainingWord:n}=D(t,e,"-",r);a.push(o,...i),o=n}else l+s>=e?(a.push(o),o=t):o=[o,t].filter(Boolean).join(" ");i+1===n.length&&a.push(o)})),a.filter((t=>""!==t)).join(r.joinWith)}),((t,e,r)=>`${t}${e}${r.fontSize}${r.fontWeight}${r.fontFamily}${r.joinWith}`)),D=(0,s.A)(((t,e,r="-",i)=>{i=Object.assign({fontSize:12,fontWeight:400,fontFamily:"Arial",margin:0},i);const n=[...t],a=[];let o="";return n.forEach(((t,s)=>{const l=`${o}${t}`;if(R(l,i)>=e){const t=s+1,e=n.length===t,i=`${l}${r}`;a.push(e?l:i),o=""}else o=l})),{hyphenatedStrings:a,remainingWord:o}}),((t,e,r="-",i)=>`${t}${e}${r}${i.fontSize}${i.fontWeight}${i.fontFamily}`));function O(t,e){return I(t,e).height}function R(t,e){return I(t,e).width}(0,n.K2)(O,"calculateTextHeight"),(0,n.K2)(R,"calculateTextWidth");var K,I=(0,s.A)(((t,e)=>{const{fontSize:r=12,fontFamily:n="Arial",fontWeight:a=400}=e;if(!t)return{width:0,height:0};const[,s]=j(r),l=["sans-serif",n],h=t.split(i.Y2.lineBreakRegex),u=[],d=(0,o.Ltv)("body");if(!d.remove)return{width:0,height:0,lineHeight:0};const p=d.append("svg");for(const i of l){let t=0;const e={width:0,height:0,lineHeight:0};for(const r of h){const n=F();n.text=r||c;const o=$(p,n).style("font-size",s).style("font-weight",a).style("font-family",i),l=(o._groups||o)[0][0].getBBox();if(0===l.width&&0===l.height)throw new Error("svg element not in render tree");e.width=Math.round(Math.max(e.width,l.width)),t=Math.round(l.height),e.height+=t,e.lineHeight=Math.round(Math.max(e.lineHeight,t))}u.push(e)}p.remove();return u[isNaN(u[1].height)||isNaN(u[1].width)||isNaN(u[1].lineHeight)||u[0].height>u[1].height&&u[0].width>u[1].width&&u[0].lineHeight>u[1].lineHeight?0:1]}),((t,e)=>`${t}${e.fontSize}${e.fontWeight}${e.fontFamily}`)),N=class{constructor(t=!1,e){this.count=0,this.count=e?e.length:0,this.next=t?()=>this.count++:()=>Date.now()}static{(0,n.K2)(this,"InitIDGenerator")}},z=(0,n.K2)((function(t){return K=K||document.createElement("div"),t=escape(t).replace(/%26/g,"&").replace(/%23/g,"#").replace(/%3B/g,";"),K.innerHTML=t,unescape(K.textContent)}),"entityDecode");function P(t){return"str"in t}(0,n.K2)(P,"isDetailedError");var q=(0,n.K2)(((t,e,r,i)=>{if(!i)return;const n=t.node()?.getBBox();n&&t.append("text").text(i).attr("text-anchor","middle").attr("x",n.x+n.width/2).attr("y",-r).attr("class",e)}),"insertTitle"),j=(0,n.K2)((t=>{if("number"==typeof t)return[t,t+"px"];const e=parseInt(t??"",10);return Number.isNaN(e)?[void 0,void 0]:t===String(e)?[e,t+"px"]:[e,t]}),"parseFontSize");function W(t,e){return(0,l.A)({},t,e)}(0,n.K2)(W,"cleanAndMerge");var H={assignWithDepth:i.hH,wrapLabel:E,calculateTextHeight:O,calculateTextWidth:R,calculateTextDimensions:I,cleanAndMerge:W,detectInit:d,detectDirective:p,isSubstringInArray:g,interpolateToCurve:y,calcLabelPosition:w,calcCardinalityPosition:v,calcTerminalLabelPosition:S,formatUrl:m,getStylesFromArray:T,generateId:M,random:L,runFunc:x,entityDecode:z,insertTitle:q,isLabelCoordinateInPath:V,parseFontSize:j,InitIDGenerator:N},U=(0,n.K2)((function(t){let e=t;return e=e.replace(/style.*:\S*#.*;/g,(function(t){return t.substring(0,t.length-1)})),e=e.replace(/classDef.*:\S*#.*;/g,(function(t){return t.substring(0,t.length-1)})),e=e.replace(/#\w+;/g,(function(t){const e=t.substring(1,t.length-1);return/^\+?\d+$/.test(e)?"\ufb02\xb0\xb0"+e+"\xb6\xdf":"\ufb02\xb0"+e+"\xb6\xdf"})),e}),"encodeEntities"),Y=(0,n.K2)((function(t){return t.replace(/\ufb02\xb0\xb0/g,"&#").replace(/\ufb02\xb0/g,"&").replace(/\xb6\xdf/g,";")}),"decodeEntities"),G=(0,n.K2)(((t,e,{counter:r=0,prefix:i,suffix:n},a)=>a||`${i?`${i}_`:""}${t}_${e}_${r}${n?`_${n}`:""}`),"getEdgeId");function X(t){return t??null}function V(t,e){const r=Math.round(t.x),i=Math.round(t.y),n=e.replace(/(\d+\.\d+)/g,(t=>Math.round(parseFloat(t)).toString()));return n.includes(r.toString())||n.includes(i.toString())}(0,n.K2)(X,"handleUndefinedAttr"),(0,n.K2)(V,"isLabelCoordinateInPath")},22279:(t,e,r)=>{"use strict";r.r(e),r.d(e,{default:()=>Xe});var i=r(98621),n=r(73590),a=r(73981),o=r(10045),s=(r(5164),r(28698),r(5894),r(63245),r(32387),r(30092)),l=r(13226),c=r(67633),h=r(40797),u=r(60513),d=r(70451),p="comm",f="rule",g="decl",y=Math.abs,m=String.fromCharCode;Object.assign;function x(t){return t.trim()}function b(t,e,r){return t.replace(e,r)}function k(t,e,r){return t.indexOf(e,r)}function w(t,e){return 0|t.charCodeAt(e)}function C(t,e,r){return t.slice(e,r)}function _(t){return t.length}function v(t,e){return e.push(t),t}function S(t,e){for(var r="",i=0;i0?w($,--L):0,M--,10===F&&(M=1,A--),F}function O(){return F=L2||N(F)>3?"":" "}function W(t,e){for(;--e&&O()&&!(F<48||F>102||F>57&&F<65||F>70&&F<97););return I(t,K()+(e<6&&32==R()&&32==O()))}function H(t){for(;O();)switch(F){case t:return L;case 34:case 39:34!==t&&39!==t&&H(F);break;case 40:41===t&&H(t);break;case 92:O()}return L}function U(t,e){for(;O()&&t+F!==57&&(t+F!==84||47!==R()););return"/*"+I(e,L-1)+"*"+m(47===t?t:O())}function Y(t){for(;!N(R());)O();return I(t,L)}function G(t){return P(X("",null,null,null,[""],t=z(t),0,[0],t))}function X(t,e,r,i,n,a,o,s,l){for(var c=0,h=0,u=o,d=0,p=0,f=0,g=1,x=1,S=1,T=0,A="",M=n,B=a,L=i,F=A;x;)switch(f=T,T=O()){case 40:if(108!=f&&58==w(F,u-1)){-1!=k(F+=b(q(T),"&","&\f"),"&\f",y(c?s[c-1]:0))&&(S=-1);break}case 34:case 39:case 91:F+=q(T);break;case 9:case 10:case 13:case 32:F+=j(f);break;case 92:F+=W(K()-1,7);continue;case 47:switch(R()){case 42:case 47:v(Z(U(O(),K()),e,r,l),l),5!=N(f||1)&&5!=N(R()||1)||!_(F)||" "===C(F,-1,void 0)||(F+=" ");break;default:F+="/"}break;case 123*g:s[c++]=_(F)*S;case 125*g:case 59:case 0:switch(T){case 0:case 125:x=0;case 59+h:-1==S&&(F=b(F,/\f/g,"")),p>0&&(_(F)-u||0===g&&47===f)&&v(p>32?Q(F+";",i,r,u-1,l):Q(b(F," ","")+";",i,r,u-2,l),l);break;case 59:F+=";";default:if(v(L=V(F,e,r,c,h,n,s,A,M=[],B=[],u,a),a),123===T)if(0===h)X(F,e,L,L,M,a,u,s,B);else{switch(d){case 99:if(110===w(F,3))break;case 108:if(97===w(F,2))break;default:h=0;case 100:case 109:case 115:}h?X(t,L,L,i&&v(V(t,L,L,0,0,n,s,A,n,M=[],u,B),B),n,B,u,s,i?M:B):X(F,L,L,L,[""],B,0,s,B)}}c=h=p=0,g=S=1,A=F="",u=o;break;case 58:u=1+_(F),p=f;default:if(g<1)if(123==T)--g;else if(125==T&&0==g++&&125==D())continue;switch(F+=m(T),T*g){case 38:S=h>0?1:(F+="\f",-1);break;case 44:s[c++]=(_(F)-1)*S,S=1;break;case 64:45===R()&&(F+=q(O())),d=R(),h=u=_(A=F+=Y(K())),T++;break;case 45:45===f&&2==_(F)&&(g=0)}}return a}function V(t,e,r,i,n,a,o,s,l,c,h,u){for(var d=n-1,p=0===n?a:[""],g=function(t){return t.length}(p),m=0,k=0,w=0;m0?p[_]+" "+v:b(v,/&\f/g,p[_])))&&(l[w++]=S);return E(t,e,r,0===n?f:s,l,c,h,u)}function Z(t,e,r,i){return E(t,e,r,p,m(F),C(t,2,-2),0,i)}function Q(t,e,r,i,n){return E(t,e,r,g,C(t,0,i),C(t,i+1,-1),i,n)}var J=r(99418),tt=r(66401),et={id:"c4",detector:(0,h.K2)((t=>/^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/.test(t)),"detector"),loader:(0,h.K2)((async()=>{const{diagram:t}=await r.e(4981).then(r.bind(r,54981));return{id:"c4",diagram:t}}),"loader")},rt="flowchart",it={id:rt,detector:(0,h.K2)(((t,e)=>"dagre-wrapper"!==e?.flowchart?.defaultRenderer&&"elk"!==e?.flowchart?.defaultRenderer&&/^\s*graph/.test(t)),"detector"),loader:(0,h.K2)((async()=>{const{diagram:t}=await r.e(2291).then(r.bind(r,22291));return{id:rt,diagram:t}}),"loader")},nt="flowchart-v2",at={id:nt,detector:(0,h.K2)(((t,e)=>"dagre-d3"!==e?.flowchart?.defaultRenderer&&("elk"===e?.flowchart?.defaultRenderer&&(e.layout="elk"),!(!/^\s*graph/.test(t)||"dagre-wrapper"!==e?.flowchart?.defaultRenderer)||/^\s*flowchart/.test(t))),"detector"),loader:(0,h.K2)((async()=>{const{diagram:t}=await r.e(2291).then(r.bind(r,22291));return{id:nt,diagram:t}}),"loader")},ot={id:"er",detector:(0,h.K2)((t=>/^\s*erDiagram/.test(t)),"detector"),loader:(0,h.K2)((async()=>{const{diagram:t}=await r.e(8756).then(r.bind(r,8756));return{id:"er",diagram:t}}),"loader")},st="gitGraph",lt={id:st,detector:(0,h.K2)((t=>/^\s*gitGraph/.test(t)),"detector"),loader:(0,h.K2)((async()=>{const{diagram:t}=await Promise.all([r.e(3624),r.e(8731),r.e(6319)]).then(r.bind(r,66319));return{id:st,diagram:t}}),"loader")},ct="gantt",ht={id:ct,detector:(0,h.K2)((t=>/^\s*gantt/.test(t)),"detector"),loader:(0,h.K2)((async()=>{const{diagram:t}=await r.e(4379).then(r.bind(r,64379));return{id:ct,diagram:t}}),"loader")},ut="info",dt={id:ut,detector:(0,h.K2)((t=>/^\s*info/.test(t)),"detector"),loader:(0,h.K2)((async()=>{const{diagram:t}=await Promise.all([r.e(3624),r.e(8731),r.e(8246)]).then(r.bind(r,8246));return{id:ut,diagram:t}}),"loader")},pt={id:"pie",detector:(0,h.K2)((t=>/^\s*pie/.test(t)),"detector"),loader:(0,h.K2)((async()=>{const{diagram:t}=await Promise.all([r.e(3624),r.e(8731),r.e(9412)]).then(r.bind(r,69412));return{id:"pie",diagram:t}}),"loader")},ft="quadrantChart",gt={id:ft,detector:(0,h.K2)((t=>/^\s*quadrantChart/.test(t)),"detector"),loader:(0,h.K2)((async()=>{const{diagram:t}=await r.e(1203).then(r.bind(r,51203));return{id:ft,diagram:t}}),"loader")},yt="xychart",mt={id:yt,detector:(0,h.K2)((t=>/^\s*xychart(-beta)?/.test(t)),"detector"),loader:(0,h.K2)((async()=>{const{diagram:t}=await r.e(5955).then(r.bind(r,45955));return{id:yt,diagram:t}}),"loader")},xt="requirement",bt={id:xt,detector:(0,h.K2)((t=>/^\s*requirement(Diagram)?/.test(t)),"detector"),loader:(0,h.K2)((async()=>{const{diagram:t}=await r.e(9032).then(r.bind(r,29032));return{id:xt,diagram:t}}),"loader")},kt="sequence",wt={id:kt,detector:(0,h.K2)((t=>/^\s*sequenceDiagram/.test(t)),"detector"),loader:(0,h.K2)((async()=>{const{diagram:t}=await r.e(7592).then(r.bind(r,17592));return{id:kt,diagram:t}}),"loader")},Ct="class",_t={id:Ct,detector:(0,h.K2)(((t,e)=>"dagre-wrapper"!==e?.class?.defaultRenderer&&/^\s*classDiagram/.test(t)),"detector"),loader:(0,h.K2)((async()=>{const{diagram:t}=await Promise.all([r.e(1746),r.e(9510)]).then(r.bind(r,29510));return{id:Ct,diagram:t}}),"loader")},vt="classDiagram",St={id:vt,detector:(0,h.K2)(((t,e)=>!(!/^\s*classDiagram/.test(t)||"dagre-wrapper"!==e?.class?.defaultRenderer)||/^\s*classDiagram-v2/.test(t)),"detector"),loader:(0,h.K2)((async()=>{const{diagram:t}=await Promise.all([r.e(1746),r.e(3815)]).then(r.bind(r,53815));return{id:vt,diagram:t}}),"loader")},Tt="state",At={id:Tt,detector:(0,h.K2)(((t,e)=>"dagre-wrapper"!==e?.state?.defaultRenderer&&/^\s*stateDiagram/.test(t)),"detector"),loader:(0,h.K2)((async()=>{const{diagram:t}=await Promise.all([r.e(3624),r.e(2334),r.e(4616),r.e(8142)]).then(r.bind(r,88142));return{id:Tt,diagram:t}}),"loader")},Mt="stateDiagram",Bt={id:Mt,detector:(0,h.K2)(((t,e)=>!!/^\s*stateDiagram-v2/.test(t)||!(!/^\s*stateDiagram/.test(t)||"dagre-wrapper"!==e?.state?.defaultRenderer)),"detector"),loader:(0,h.K2)((async()=>{const{diagram:t}=await Promise.all([r.e(4616),r.e(4802)]).then(r.bind(r,84802));return{id:Mt,diagram:t}}),"loader")},Lt="journey",Ft={id:Lt,detector:(0,h.K2)((t=>/^\s*journey/.test(t)),"detector"),loader:(0,h.K2)((async()=>{const{diagram:t}=await r.e(5480).then(r.bind(r,45480));return{id:Lt,diagram:t}}),"loader")},$t={draw:(0,h.K2)(((t,e,r)=>{h.Rm.debug("rendering svg for syntax error\n");const i=(0,n.D)(e),a=i.append("g");i.attr("viewBox","0 0 2412 512"),(0,c.a$)(i,100,512,!0),a.append("path").attr("class","error-icon").attr("d","m411.313,123.313c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32-9.375,9.375-20.688-20.688c-12.484-12.5-32.766-12.5-45.25,0l-16,16c-1.261,1.261-2.304,2.648-3.31,4.051-21.739-8.561-45.324-13.426-70.065-13.426-105.867,0-192,86.133-192,192s86.133,192 192,192 192-86.133 192-192c0-24.741-4.864-48.327-13.426-70.065 1.402-1.007 2.79-2.049 4.051-3.31l16-16c12.5-12.492 12.5-32.758 0-45.25l-20.688-20.688 9.375-9.375 32.001-31.999zm-219.313,100.687c-52.938,0-96,43.063-96,96 0,8.836-7.164,16-16,16s-16-7.164-16-16c0-70.578 57.422-128 128-128 8.836,0 16,7.164 16,16s-7.164,16-16,16z"),a.append("path").attr("class","error-icon").attr("d","m459.02,148.98c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l16,16c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16.001-16z"),a.append("path").attr("class","error-icon").attr("d","m340.395,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688 6.25-6.25 6.25-16.375 0-22.625l-16-16c-6.25-6.25-16.375-6.25-22.625,0s-6.25,16.375 0,22.625l15.999,16z"),a.append("path").attr("class","error-icon").attr("d","m400,64c8.844,0 16-7.164 16-16v-32c0-8.836-7.156-16-16-16-8.844,0-16,7.164-16,16v32c0,8.836 7.156,16 16,16z"),a.append("path").attr("class","error-icon").attr("d","m496,96.586h-32c-8.844,0-16,7.164-16,16 0,8.836 7.156,16 16,16h32c8.844,0 16-7.164 16-16 0-8.836-7.156-16-16-16z"),a.append("path").attr("class","error-icon").attr("d","m436.98,75.605c3.125,3.125 7.219,4.688 11.313,4.688 4.094,0 8.188-1.563 11.313-4.688l32-32c6.25-6.25 6.25-16.375 0-22.625s-16.375-6.25-22.625,0l-32,32c-6.251,6.25-6.251,16.375-0.001,22.625z"),a.append("text").attr("class","error-text").attr("x",1440).attr("y",250).attr("font-size","150px").style("text-anchor","middle").text("Syntax error in text"),a.append("text").attr("class","error-text").attr("x",1250).attr("y",400).attr("font-size","100px").style("text-anchor","middle").text(`mermaid version ${r}`)}),"draw")},Et=$t,Dt={db:{},renderer:$t,parser:{parse:(0,h.K2)((()=>{}),"parse")}},Ot="flowchart-elk",Rt={id:Ot,detector:(0,h.K2)(((t,e={})=>!!(/^\s*flowchart-elk/.test(t)||/^\s*(flowchart|graph)/.test(t)&&"elk"===e?.flowchart?.defaultRenderer)&&(e.layout="elk",!0)),"detector"),loader:(0,h.K2)((async()=>{const{diagram:t}=await r.e(2291).then(r.bind(r,22291));return{id:Ot,diagram:t}}),"loader")},Kt="timeline",It={id:Kt,detector:(0,h.K2)((t=>/^\s*timeline/.test(t)),"detector"),loader:(0,h.K2)((async()=>{const{diagram:t}=await r.e(291).then(r.bind(r,50291));return{id:Kt,diagram:t}}),"loader")},Nt="mindmap",zt={id:Nt,detector:(0,h.K2)((t=>/^\s*mindmap/.test(t)),"detector"),loader:(0,h.K2)((async()=>{const{diagram:t}=await r.e(8565).then(r.bind(r,78565));return{id:Nt,diagram:t}}),"loader")},Pt="kanban",qt={id:Pt,detector:(0,h.K2)((t=>/^\s*kanban/.test(t)),"detector"),loader:(0,h.K2)((async()=>{const{diagram:t}=await r.e(6241).then(r.bind(r,16241));return{id:Pt,diagram:t}}),"loader")},jt="sankey",Wt={id:jt,detector:(0,h.K2)((t=>/^\s*sankey(-beta)?/.test(t)),"detector"),loader:(0,h.K2)((async()=>{const{diagram:t}=await r.e(1741).then(r.bind(r,11741));return{id:jt,diagram:t}}),"loader")},Ht="packet",Ut={id:Ht,detector:(0,h.K2)((t=>/^\s*packet(-beta)?/.test(t)),"detector"),loader:(0,h.K2)((async()=>{const{diagram:t}=await Promise.all([r.e(3624),r.e(8731),r.e(6567)]).then(r.bind(r,16567));return{id:Ht,diagram:t}}),"loader")},Yt="radar",Gt={id:Yt,detector:(0,h.K2)((t=>/^\s*radar-beta/.test(t)),"detector"),loader:(0,h.K2)((async()=>{const{diagram:t}=await Promise.all([r.e(3624),r.e(8731),r.e(6992)]).then(r.bind(r,16992));return{id:Yt,diagram:t}}),"loader")},Xt="block",Vt={id:Xt,detector:(0,h.K2)((t=>/^\s*block(-beta)?/.test(t)),"detector"),loader:(0,h.K2)((async()=>{const{diagram:t}=await Promise.all([r.e(3624),r.e(5996)]).then(r.bind(r,65996));return{id:Xt,diagram:t}}),"loader")},Zt="architecture",Qt={id:Zt,detector:(0,h.K2)((t=>/^\s*architecture/.test(t)),"detector"),loader:(0,h.K2)((async()=>{const{diagram:t}=await Promise.all([r.e(3624),r.e(8731),r.e(165),r.e(8249)]).then(r.bind(r,8249));return{id:Zt,diagram:t}}),"loader")},Jt="treemap",te={id:Jt,detector:(0,h.K2)((t=>/^\s*treemap/.test(t)),"detector"),loader:(0,h.K2)((async()=>{const{diagram:t}=await Promise.all([r.e(3624),r.e(8731),r.e(2821)]).then(r.bind(r,82821));return{id:Jt,diagram:t}}),"loader")},ee=!1,re=(0,h.K2)((()=>{ee||(ee=!0,(0,c.Js)("error",Dt,(t=>"error"===t.toLowerCase().trim())),(0,c.Js)("---",{db:{clear:(0,h.K2)((()=>{}),"clear")},styles:{},renderer:{draw:(0,h.K2)((()=>{}),"draw")},parser:{parse:(0,h.K2)((()=>{throw new Error("Diagrams beginning with --- are not valid. If you were trying to use a YAML front-matter, please ensure that you've correctly opened and closed the YAML front-matter with un-indented `---` blocks")}),"parse")},init:(0,h.K2)((()=>null),"init")},(t=>t.toLowerCase().trimStart().startsWith("---"))),(0,c.Xd)(Rt,zt,Qt),(0,c.Xd)(et,qt,St,_t,ot,ht,dt,pt,bt,wt,at,it,It,lt,Bt,At,Ft,gt,Wt,Ut,mt,Vt,Gt,te))}),"addDiagrams"),ie=(0,h.K2)((async()=>{h.Rm.debug("Loading registered diagrams");const t=(await Promise.allSettled(Object.entries(c.mW).map((async([t,{detector:e,loader:r}])=>{if(r)try{(0,c.Gs)(t)}catch{try{const{diagram:t,id:i}=await r();(0,c.Js)(i,t,e)}catch(i){throw h.Rm.error(`Failed to load external diagram with key ${t}. Removing from detectors.`),delete c.mW[t],i}}})))).filter((t=>"rejected"===t.status));if(t.length>0){h.Rm.error(`Failed to load ${t.length} external diagrams`);for(const e of t)h.Rm.error(e);throw new Error(`Failed to load ${t.length} external diagrams`)}}),"loadRegisteredDiagrams"),ne="graphics-document document";function ae(t,e){t.attr("role",ne),""!==e&&t.attr("aria-roledescription",e)}function oe(t,e,r,i){if(void 0!==t.insert){if(r){const e=`chart-desc-${i}`;t.attr("aria-describedby",e),t.insert("desc",":first-child").attr("id",e).text(r)}if(e){const r=`chart-title-${i}`;t.attr("aria-labelledby",r),t.insert("title",":first-child").attr("id",r).text(e)}}}(0,h.K2)(ae,"setA11yDiagramInfo"),(0,h.K2)(oe,"addSVGa11yTitleDescription");var se=class t{constructor(t,e,r,i,n){this.type=t,this.text=e,this.db=r,this.parser=i,this.renderer=n}static{(0,h.K2)(this,"Diagram")}static async fromText(e,r={}){const i=(0,c.zj)(),n=(0,c.Ch)(e,i);e=(0,l.C4)(e)+"\n";try{(0,c.Gs)(n)}catch{const t=(0,c.J$)(n);if(!t)throw new c.C0(`Diagram ${n} not found.`);const{id:e,diagram:r}=await t();(0,c.Js)(e,r)}const{db:a,parser:o,renderer:s,init:h}=(0,c.Gs)(n);return o.parser&&(o.parser.yy=a),a.clear?.(),h?.(i),r.title&&a.setDiagramTitle?.(r.title),await o.parse(e),new t(n,e,a,o,s)}async render(t,e){await this.renderer.draw(this.text,t,e,this)}getParser(){return this.parser}getType(){return this.type}},le=[],ce=(0,h.K2)((()=>{le.forEach((t=>{t()})),le=[]}),"attachFunctions"),he=(0,h.K2)((t=>t.replace(/^\s*%%(?!{)[^\n]+\n?/gm,"").trimStart()),"cleanupComments");function ue(t){const e=t.match(c.EJ);if(!e)return{text:t,metadata:{}};let r=(0,a.H)(e[1],{schema:a.r})??{};r="object"!=typeof r||Array.isArray(r)?{}:r;const i={};return r.displayMode&&(i.displayMode=r.displayMode.toString()),r.title&&(i.title=r.title.toString()),r.config&&(i.config=r.config),{text:t.slice(e[0].length),metadata:i}}(0,h.K2)(ue,"extractFrontMatter");var de=(0,h.K2)((t=>t.replace(/\r\n?/g,"\n").replace(/<(\w+)([^>]*)>/g,((t,e,r)=>"<"+e+r.replace(/="([^"]*)"/g,"='$1'")+">"))),"cleanupText"),pe=(0,h.K2)((t=>{const{text:e,metadata:r}=ue(t),{displayMode:i,title:n,config:a={}}=r;return i&&(a.gantt||(a.gantt={}),a.gantt.displayMode=i),{title:n,config:a,text:e}}),"processFrontmatter"),fe=(0,h.K2)((t=>{const e=l._K.detectInit(t)??{},r=l._K.detectDirective(t,"wrap");return Array.isArray(r)?e.wrap=r.some((({type:t})=>"wrap"===t)):"wrap"===r?.type&&(e.wrap=!0),{text:(0,l.vU)(t),directive:e}}),"processDirectives");function ge(t){const e=de(t),r=pe(e),i=fe(r.text),n=(0,l.$t)(r.config,i.directive);return{code:t=he(i.text),title:r.title,config:n}}function ye(t){const e=(new TextEncoder).encode(t),r=Array.from(e,(t=>String.fromCodePoint(t))).join("");return btoa(r)}(0,h.K2)(ge,"preprocessDiagram"),(0,h.K2)(ye,"toBase64");var me=["foreignobject"],xe=["dominant-baseline"];function be(t){const e=ge(t);return(0,c.cL)(),(0,c.xA)(e.config??{}),e}async function ke(t,e){re();try{const{code:e,config:r}=be(t);return{diagramType:(await Fe(e)).type,config:r}}catch(r){if(e?.suppressErrors)return!1;throw r}}(0,h.K2)(be,"processAndSetConfigs"),(0,h.K2)(ke,"parse");var we=(0,h.K2)(((t,e,r=[])=>`\n.${t} ${e} { ${r.join(" !important; ")} !important; }`),"cssImportantStyles"),Ce=(0,h.K2)(((t,e=new Map)=>{let r="";if(void 0!==t.themeCSS&&(r+=`\n${t.themeCSS}`),void 0!==t.fontFamily&&(r+=`\n:root { --mermaid-font-family: ${t.fontFamily}}`),void 0!==t.altFontFamily&&(r+=`\n:root { --mermaid-alt-font-family: ${t.altFontFamily}}`),e instanceof Map){const i=t.htmlLabels??t.flowchart?.htmlLabels?["> *","span"]:["rect","polygon","ellipse","circle","path"];e.forEach((t=>{(0,tt.A)(t.styles)||i.forEach((e=>{r+=we(t.id,e,t.styles)})),(0,tt.A)(t.textStyles)||(r+=we(t.id,"tspan",(t?.textStyles||[]).map((t=>t.replace("color","fill")))))}))}return r}),"createCssStyles"),_e=(0,h.K2)(((t,e,r,i)=>{const n=Ce(t,r);return S(G(`${i}{${(0,c.tM)(e,n,t.themeVariables)}}`),T)}),"createUserStyles"),ve=(0,h.K2)(((t="",e,r)=>{let i=t;return r||e||(i=i.replace(/marker-end="url\([\d+./:=?A-Za-z-]*?#/g,'marker-end="url(#')),i=(0,l.Sm)(i),i=i.replace(/
    /g,"
    "),i}),"cleanUpSvgCode"),Se=(0,h.K2)(((t="",e)=>``),"putIntoIFrame"),Te=(0,h.K2)(((t,e,r,i,n)=>{const a=t.append("div");a.attr("id",r),i&&a.attr("style",i);const o=a.append("svg").attr("id",e).attr("width","100%").attr("xmlns","http://www.w3.org/2000/svg");return n&&o.attr("xmlns:xlink",n),o.append("g"),t}),"appendDivSvgG");function Ae(t,e){return t.append("iframe").attr("id",e).attr("style","width: 100%; height: 100%;").attr("sandbox","")}(0,h.K2)(Ae,"sandboxedIframe");var Me=(0,h.K2)(((t,e,r,i)=>{t.getElementById(e)?.remove(),t.getElementById(r)?.remove(),t.getElementById(i)?.remove()}),"removeExistingElements"),Be=(0,h.K2)((async function(t,e,r){re();const n=be(e);e=n.code;const a=(0,c.zj)();h.Rm.debug(a),e.length>(a?.maxTextSize??5e4)&&(e="graph TB;a[Maximum text size in diagram exceeded];style a fill:#faa");const o="#"+t,s="i"+t,l="#"+s,u="d"+t,p="#"+u,f=(0,h.K2)((()=>{const t=y?l:p,e=(0,d.Ltv)(t).node();e&&"remove"in e&&e.remove()}),"removeTempElements");let g=(0,d.Ltv)("body");const y="sandbox"===a.securityLevel,m="loose"===a.securityLevel,x=a.fontFamily;if(void 0!==r){if(r&&(r.innerHTML=""),y){const t=Ae((0,d.Ltv)(r),s);g=(0,d.Ltv)(t.nodes()[0].contentDocument.body),g.node().style.margin=0}else g=(0,d.Ltv)(r);Te(g,t,u,`font-family: ${x}`,"http://www.w3.org/1999/xlink")}else{if(Me(document,t,u,s),y){const t=Ae((0,d.Ltv)("body"),s);g=(0,d.Ltv)(t.nodes()[0].contentDocument.body),g.node().style.margin=0}else g=(0,d.Ltv)("body");Te(g,t,u)}let b,k;try{b=await se.fromText(e,{title:n.title})}catch($){if(a.suppressErrorRendering)throw f(),$;b=await se.fromText("error"),k=$}const w=g.select(p).node(),C=b.type,_=w.firstChild,v=_.firstChild,S=b.renderer.getClasses?.(e,b),T=_e(a,C,S,o),A=document.createElement("style");A.innerHTML=T,_.insertBefore(A,v);try{await b.renderer.draw(e,t,i.n.version,b)}catch(E){throw a.suppressErrorRendering?f():Et.draw(e,t,i.n.version),E}const M=g.select(`${p} svg`),B=b.db.getAccTitle?.(),L=b.db.getAccDescription?.();$e(C,M,B,L),g.select(`[id="${t}"]`).selectAll("foreignobject > *").attr("xmlns","http://www.w3.org/1999/xhtml");let F=g.select(p).node().innerHTML;if(h.Rm.debug("config.arrowMarkerAbsolute",a.arrowMarkerAbsolute),F=ve(F,y,(0,c._3)(a.arrowMarkerAbsolute)),y){const t=g.select(p+" svg").node();F=Se(F,t)}else m||(F=J.A.sanitize(F,{ADD_TAGS:me,ADD_ATTR:xe,HTML_INTEGRATION_POINTS:{foreignobject:!0}}));if(ce(),k)throw k;return f(),{diagramType:C,svg:F,bindFunctions:b.db.bindFunctions}}),"render");function Le(t={}){const e=(0,c.hH)({},t);e?.fontFamily&&!e.themeVariables?.fontFamily&&(e.themeVariables||(e.themeVariables={}),e.themeVariables.fontFamily=e.fontFamily),(0,c.wZ)(e),e?.theme&&e.theme in c.H$?e.themeVariables=c.H$[e.theme].getThemeVariables(e.themeVariables):e&&(e.themeVariables=c.H$.default.getThemeVariables(e.themeVariables));const r="object"==typeof e?(0,c.UU)(e):(0,c.Q2)();(0,h.He)(r.logLevel),re()}(0,h.K2)(Le,"initialize");var Fe=(0,h.K2)(((t,e={})=>{const{code:r}=ge(t);return se.fromText(r,e)}),"getDiagramFromText");function $e(t,e,r,i){ae(e,t),oe(e,r,i,e.attr("id"))}(0,h.K2)($e,"addA11yInfo");var Ee=Object.freeze({render:Be,parse:ke,getDiagramFromText:Fe,initialize:Le,getConfig:c.zj,setConfig:c.Nk,getSiteConfig:c.Q2,updateSiteConfig:c.B6,reset:(0,h.K2)((()=>{(0,c.cL)()}),"reset"),globalReset:(0,h.K2)((()=>{(0,c.cL)(c.sb)}),"globalReset"),defaultConfig:c.sb});(0,h.He)((0,c.zj)().logLevel),(0,c.cL)((0,c.zj)());var De=(0,h.K2)(((t,e,r)=>{h.Rm.warn(t),(0,l.dq)(t)?(r&&r(t.str,t.hash),e.push({...t,message:t.str,error:t})):(r&&r(t),t instanceof Error&&e.push({str:t.message,message:t.message,hash:t.name,error:t}))}),"handleError"),Oe=(0,h.K2)((async function(t={querySelector:".mermaid"}){try{await Re(t)}catch(e){if((0,l.dq)(e)&&h.Rm.error(e.str),Ge.parseError&&Ge.parseError(e),!t.suppressErrors)throw h.Rm.error("Use the suppressErrors option to suppress these errors"),e}}),"run"),Re=(0,h.K2)((async function({postRenderCallback:t,querySelector:e,nodes:r}={querySelector:".mermaid"}){const i=Ee.getConfig();let n;if(h.Rm.debug((t?"":"No ")+"Callback function found"),r)n=r;else{if(!e)throw new Error("Nodes and querySelector are both undefined");n=document.querySelectorAll(e)}h.Rm.debug(`Found ${n.length} diagrams`),void 0!==i?.startOnLoad&&(h.Rm.debug("Start On Load: "+i?.startOnLoad),Ee.updateSiteConfig({startOnLoad:i?.startOnLoad}));const a=new l._K.InitIDGenerator(i.deterministicIds,i.deterministicIDSeed);let o;const s=[];for(const d of Array.from(n)){if(h.Rm.info("Rendering diagram: "+d.id),d.getAttribute("data-processed"))continue;d.setAttribute("data-processed","true");const e=`mermaid-${a.next()}`;o=d.innerHTML,o=(0,u.T)(l._K.entityDecode(o)).trim().replace(//gi,"
    ");const r=l._K.detectInit(o);r&&h.Rm.debug("Detected early reinit: ",r);try{const{svg:r,bindFunctions:i}=await Ue(e,o,d);d.innerHTML=r,t&&await t(e),i&&i(d)}catch(c){De(c,s,Ge.parseError)}}if(s.length>0)throw s[0]}),"runThrowsErrors"),Ke=(0,h.K2)((function(t){Ee.initialize(t)}),"initialize"),Ie=(0,h.K2)((async function(t,e,r){h.Rm.warn("mermaid.init is deprecated. Please use run instead."),t&&Ke(t);const i={postRenderCallback:r,querySelector:".mermaid"};"string"==typeof e?i.querySelector=e:e&&(e instanceof HTMLElement?i.nodes=[e]:i.nodes=e),await Oe(i)}),"init"),Ne=(0,h.K2)((async(t,{lazyLoad:e=!0}={})=>{re(),(0,c.Xd)(...t),!1===e&&await ie()}),"registerExternalDiagrams"),ze=(0,h.K2)((function(){if(Ge.startOnLoad){const{startOnLoad:t}=Ee.getConfig();t&&Ge.run().catch((t=>h.Rm.error("Mermaid failed to initialize",t)))}}),"contentLoaded");"undefined"!=typeof document&&window.addEventListener("load",ze,!1);var Pe=(0,h.K2)((function(t){Ge.parseError=t}),"setParseErrorHandler"),qe=[],je=!1,We=(0,h.K2)((async()=>{if(!je){for(je=!0;qe.length>0;){const e=qe.shift();if(e)try{await e()}catch(t){h.Rm.error("Error executing queue",t)}}je=!1}}),"executeQueue"),He=(0,h.K2)((async(t,e)=>new Promise(((r,i)=>{const n=(0,h.K2)((()=>new Promise(((n,a)=>{Ee.parse(t,e).then((t=>{n(t),r(t)}),(t=>{h.Rm.error("Error parsing",t),Ge.parseError?.(t),a(t),i(t)}))}))),"performCall");qe.push(n),We().catch(i)}))),"parse"),Ue=(0,h.K2)(((t,e,r)=>new Promise(((i,n)=>{const a=(0,h.K2)((()=>new Promise(((a,o)=>{Ee.render(t,e,r).then((t=>{a(t),i(t)}),(t=>{h.Rm.error("Error parsing",t),Ge.parseError?.(t),o(t),n(t)}))}))),"performCall");qe.push(a),We().catch(n)}))),"render"),Ye=(0,h.K2)((()=>Object.keys(c.mW).map((t=>({id:t})))),"getRegisteredDiagramsMetadata"),Ge={startOnLoad:!0,mermaidAPI:Ee,parse:He,render:Ue,init:Ie,run:Oe,registerExternalDiagrams:Ne,registerLayoutLoaders:o.sO,initialize:Ke,parseError:void 0,contentLoaded:ze,setParseErrorHandler:Pe,detectType:c.Ch,registerIconPacks:s.pC,getRegisteredDiagramsMetadata:Ye},Xe=Ge}}]); \ No newline at end of file diff --git a/assets/js/2279.aa0491db.js.LICENSE.txt b/assets/js/2279.aa0491db.js.LICENSE.txt new file mode 100644 index 00000000..0c0dc03a --- /dev/null +++ b/assets/js/2279.aa0491db.js.LICENSE.txt @@ -0,0 +1,13 @@ +/*! + * Wait for document loaded before starting the execution + */ + +/*! @license DOMPurify 3.3.0 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/3.3.0/LICENSE */ + +/*! Bundled license information: + +js-yaml/dist/js-yaml.mjs: + (*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT *) +*/ + +/*! Check if previously processed */ diff --git a/assets/js/2291.68009859.js b/assets/js/2291.68009859.js new file mode 100644 index 00000000..73f5a8a0 --- /dev/null +++ b/assets/js/2291.68009859.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2291],{75937:(t,e,s)=>{s.d(e,{A:()=>r});var i=s(72453),n=s(74886);const r=(t,e)=>i.A.lang.round(n.A.parse(t)[e])},89625:(t,e,s)=>{s.d(e,{A:()=>r});var i=s(40797),n=s(70451),r=(0,i.K2)(((t,e)=>{let s;"sandbox"===e&&(s=(0,n.Ltv)("#i"+t));return("sandbox"===e?(0,n.Ltv)(s.nodes()[0].contentDocument.body):(0,n.Ltv)("body")).select(`[id="${t}"]`)}),"getDiagramElement")},52501:(t,e,s)=>{s.d(e,{o:()=>i});var i=(0,s(40797).K2)((()=>"\n /* Font Awesome icon styling - consolidated */\n .label-icon {\n display: inline-block;\n height: 1em;\n overflow: visible;\n vertical-align: -0.125em;\n }\n \n .node .label-icon path {\n fill: currentColor;\n stroke: revert;\n stroke-width: revert;\n }\n"),"getIconStyles")},21152:(t,e,s)=>{s.d(e,{P:()=>r});var i=s(67633),n=s(40797),r=(0,n.K2)(((t,e,s,r)=>{t.attr("class",s);const{width:o,height:l,x:c,y:h}=a(t,e);(0,i.a$)(t,l,o,r);const d=u(c,h,o,l,e);t.attr("viewBox",d),n.Rm.debug(`viewBox configured: ${d} with padding: ${e}`)}),"setupViewPortForSVG"),a=(0,n.K2)(((t,e)=>{const s=t.node()?.getBBox()||{width:0,height:0,x:0,y:0};return{width:s.width+2*e,height:s.height+2*e,x:s.x,y:s.y}}),"calculateDimensionsWithPadding"),u=(0,n.K2)(((t,e,s,i,n)=>`${t-n} ${e-n} ${s} ${i}`),"createViewBox")},22291:(t,e,s)=>{s.d(e,{diagram:()=>D});var i=s(52501),n=s(73981),r=s(89625),a=s(21152),u=s(10045),o=(s(5164),s(28698),s(5894)),l=(s(63245),s(32387),s(30092),s(13226)),c=s(67633),h=s(40797),d=s(70451),p=s(75937),g=s(25582),A=class{constructor(){this.vertexCounter=0,this.config=(0,c.D7)(),this.vertices=new Map,this.edges=[],this.classes=new Map,this.subGraphs=[],this.subGraphLookup=new Map,this.tooltips=new Map,this.subCount=0,this.firstGraphFlag=!0,this.secCount=-1,this.posCrossRef=[],this.funs=[],this.setAccTitle=c.SV,this.setAccDescription=c.EI,this.setDiagramTitle=c.ke,this.getAccTitle=c.iN,this.getAccDescription=c.m7,this.getDiagramTitle=c.ab,this.funs.push(this.setupToolTips.bind(this)),this.addVertex=this.addVertex.bind(this),this.firstGraph=this.firstGraph.bind(this),this.setDirection=this.setDirection.bind(this),this.addSubGraph=this.addSubGraph.bind(this),this.addLink=this.addLink.bind(this),this.setLink=this.setLink.bind(this),this.updateLink=this.updateLink.bind(this),this.addClass=this.addClass.bind(this),this.setClass=this.setClass.bind(this),this.destructLink=this.destructLink.bind(this),this.setClickEvent=this.setClickEvent.bind(this),this.setTooltip=this.setTooltip.bind(this),this.updateLinkInterpolate=this.updateLinkInterpolate.bind(this),this.setClickFun=this.setClickFun.bind(this),this.bindFunctions=this.bindFunctions.bind(this),this.lex={firstGraph:this.firstGraph.bind(this)},this.clear(),this.setGen("gen-2")}static{(0,h.K2)(this,"FlowDB")}sanitizeText(t){return c.Y2.sanitizeText(t,this.config)}lookUpDomId(t){for(const e of this.vertices.values())if(e.id===t)return e.domId;return t}addVertex(t,e,s,i,r,a,u={},l){if(!t||0===t.trim().length)return;let h;if(void 0!==l){let t;t=l.includes("\n")?l+"\n":"{\n"+l+"\n}",h=(0,n.H)(t,{schema:n.r})}const d=this.edges.find((e=>e.id===t));if(d){const t=h;return void 0!==t?.animate&&(d.animate=t.animate),void 0!==t?.animation&&(d.animation=t.animation),void(void 0!==t?.curve&&(d.interpolate=t.curve))}let p,g=this.vertices.get(t);if(void 0===g&&(g={id:t,labelType:"text",domId:"flowchart-"+t+"-"+this.vertexCounter,styles:[],classes:[]},this.vertices.set(t,g)),this.vertexCounter++,void 0!==e?(this.config=(0,c.D7)(),p=this.sanitizeText(e.text.trim()),g.labelType=e.type,p.startsWith('"')&&p.endsWith('"')&&(p=p.substring(1,p.length-1)),g.text=p):void 0===g.text&&(g.text=t),void 0!==s&&(g.type=s),null!=i&&i.forEach((t=>{g.styles.push(t)})),null!=r&&r.forEach((t=>{g.classes.push(t)})),void 0!==a&&(g.dir=a),void 0===g.props?g.props=u:void 0!==u&&Object.assign(g.props,u),void 0!==h){if(h.shape){if(h.shape!==h.shape.toLowerCase()||h.shape.includes("_"))throw new Error(`No such shape: ${h.shape}. Shape names should be lowercase.`);if(!(0,o.aP)(h.shape))throw new Error(`No such shape: ${h.shape}.`);g.type=h?.shape}h?.label&&(g.text=h?.label),h?.icon&&(g.icon=h?.icon,h.label?.trim()||g.text!==t||(g.text="")),h?.form&&(g.form=h?.form),h?.pos&&(g.pos=h?.pos),h?.img&&(g.img=h?.img,h.label?.trim()||g.text!==t||(g.text="")),h?.constraint&&(g.constraint=h.constraint),h.w&&(g.assetWidth=Number(h.w)),h.h&&(g.assetHeight=Number(h.h))}}addSingleLink(t,e,s,i){const n={start:t,end:e,type:void 0,text:"",labelType:"text",classes:[],isUserDefinedId:!1,interpolate:this.edges.defaultInterpolate};h.Rm.info("abc78 Got edge...",n);const r=s.text;if(void 0!==r&&(n.text=this.sanitizeText(r.text.trim()),n.text.startsWith('"')&&n.text.endsWith('"')&&(n.text=n.text.substring(1,n.text.length-1)),n.labelType=r.type),void 0!==s&&(n.type=s.type,n.stroke=s.stroke,n.length=s.length>10?10:s.length),i&&!this.edges.some((t=>t.id===i)))n.id=i,n.isUserDefinedId=!0;else{const t=this.edges.filter((t=>t.start===n.start&&t.end===n.end));0===t.length?n.id=(0,l.rY)(n.start,n.end,{counter:0,prefix:"L"}):n.id=(0,l.rY)(n.start,n.end,{counter:t.length+1,prefix:"L"})}if(!(this.edges.length<(this.config.maxEdges??500)))throw new Error(`Edge limit exceeded. ${this.edges.length} edges found, but the limit is ${this.config.maxEdges}.\n\nInitialize mermaid with maxEdges set to a higher number to allow more edges.\nYou cannot set this config via configuration inside the diagram as it is a secure config.\nYou have to call mermaid.initialize.`);h.Rm.info("Pushing edge..."),this.edges.push(n)}isLinkData(t){return null!==t&&"object"==typeof t&&"id"in t&&"string"==typeof t.id}addLink(t,e,s){const i=this.isLinkData(s)?s.id.replace("@",""):void 0;h.Rm.info("addLink",t,e,i);for(const n of t)for(const r of e){const a=n===t[t.length-1],u=r===e[0];a&&u?this.addSingleLink(n,r,s,i):this.addSingleLink(n,r,s,void 0)}}updateLinkInterpolate(t,e){t.forEach((t=>{"default"===t?this.edges.defaultInterpolate=e:this.edges[t].interpolate=e}))}updateLink(t,e){t.forEach((t=>{if("number"==typeof t&&t>=this.edges.length)throw new Error(`The index ${t} for linkStyle is out of bounds. Valid indices for linkStyle are between 0 and ${this.edges.length-1}. (Help: Ensure that the index is within the range of existing edges.)`);"default"===t?this.edges.defaultStyle=e:(this.edges[t].style=e,(this.edges[t]?.style?.length??0)>0&&!this.edges[t]?.style?.some((t=>t?.startsWith("fill")))&&this.edges[t]?.style?.push("fill:none"))}))}addClass(t,e){const s=e.join().replace(/\\,/g,"\xa7\xa7\xa7").replace(/,/g,";").replace(/\xa7\xa7\xa7/g,",").split(";");t.split(",").forEach((t=>{let e=this.classes.get(t);void 0===e&&(e={id:t,styles:[],textStyles:[]},this.classes.set(t,e)),null!=s&&s.forEach((t=>{if(/color/.exec(t)){const s=t.replace("fill","bgFill");e.textStyles.push(s)}e.styles.push(t)}))}))}setDirection(t){this.direction=t.trim(),/.*/.exec(this.direction)&&(this.direction="LR"),/.*v/.exec(this.direction)&&(this.direction="TB"),"TD"===this.direction&&(this.direction="TB")}setClass(t,e){for(const s of t.split(",")){const t=this.vertices.get(s);t&&t.classes.push(e);const i=this.edges.find((t=>t.id===s));i&&i.classes.push(e);const n=this.subGraphLookup.get(s);n&&n.classes.push(e)}}setTooltip(t,e){if(void 0!==e){e=this.sanitizeText(e);for(const s of t.split(","))this.tooltips.set("gen-1"===this.version?this.lookUpDomId(s):s,e)}}setClickFun(t,e,s){const i=this.lookUpDomId(t);if("loose"!==(0,c.D7)().securityLevel)return;if(void 0===e)return;let n=[];if("string"==typeof s){n=s.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let t=0;t{const t=document.querySelector(`[id="${i}"]`);null!==t&&t.addEventListener("click",(()=>{l._K.runFunc(e,...n)}),!1)})))}setLink(t,e,s){t.split(",").forEach((t=>{const i=this.vertices.get(t);void 0!==i&&(i.link=l._K.formatUrl(e,this.config),i.linkTarget=s)})),this.setClass(t,"clickable")}getTooltip(t){return this.tooltips.get(t)}setClickEvent(t,e,s){t.split(",").forEach((t=>{this.setClickFun(t,e,s)})),this.setClass(t,"clickable")}bindFunctions(t){this.funs.forEach((e=>{e(t)}))}getDirection(){return this.direction?.trim()}getVertices(){return this.vertices}getEdges(){return this.edges}getClasses(){return this.classes}setupToolTips(t){let e=(0,d.Ltv)(".mermaidTooltip");null===(e._groups||e)[0][0]&&(e=(0,d.Ltv)("body").append("div").attr("class","mermaidTooltip").style("opacity",0));(0,d.Ltv)(t).select("svg").selectAll("g.node").on("mouseover",(t=>{const s=(0,d.Ltv)(t.currentTarget);if(null===s.attr("title"))return;const i=t.currentTarget?.getBoundingClientRect();e.transition().duration(200).style("opacity",".9"),e.text(s.attr("title")).style("left",window.scrollX+i.left+(i.right-i.left)/2+"px").style("top",window.scrollY+i.bottom+"px"),e.html(e.html().replace(/<br\/>/g,"
    ")),s.classed("hover",!0)})).on("mouseout",(t=>{e.transition().duration(500).style("opacity",0);(0,d.Ltv)(t.currentTarget).classed("hover",!1)}))}clear(t="gen-2"){this.vertices=new Map,this.classes=new Map,this.edges=[],this.funs=[this.setupToolTips.bind(this)],this.subGraphs=[],this.subGraphLookup=new Map,this.subCount=0,this.tooltips=new Map,this.firstGraphFlag=!0,this.version=t,this.config=(0,c.D7)(),(0,c.IU)()}setGen(t){this.version=t||"gen-2"}defaultStyle(){return"fill:#ffa;stroke: #f66; stroke-width: 3px; stroke-dasharray: 5, 5;fill:#ffa;stroke: #666;"}addSubGraph(t,e,s){let i=t.text.trim(),n=s.text;t===s&&/\s/.exec(s.text)&&(i=void 0);const r=(0,h.K2)((t=>{const e={boolean:{},number:{},string:{}},s=[];let i;return{nodeList:t.filter((function(t){const n=typeof t;return t.stmt&&"dir"===t.stmt?(i=t.value,!1):""!==t.trim()&&(n in e?!e[n].hasOwnProperty(t)&&(e[n][t]=!0):!s.includes(t)&&s.push(t))})),dir:i}}),"uniq")(e.flat()),a=r.nodeList;let u=r.dir;const o=(0,c.D7)().flowchart??{};if(u=u??(o.inheritDir?this.getDirection()??(0,c.D7)().direction??void 0:void 0),"gen-1"===this.version)for(let c=0;c2e3)return{result:!1,count:0};if(this.posCrossRef[this.secCount]=e,this.subGraphs[e].id===t)return{result:!0,count:0};let i=0,n=1;for(;i=0){const s=this.indexNodes2(t,e);if(s.result)return{result:!0,count:n+s.count};n+=s.count}i+=1}return{result:!1,count:n}}getDepthFirstPos(t){return this.posCrossRef[t]}indexNodes(){this.secCount=-1,this.subGraphs.length>0&&this.indexNodes2("none",this.subGraphs.length-1)}getSubGraphs(){return this.subGraphs}firstGraph(){return!!this.firstGraphFlag&&(this.firstGraphFlag=!1,!0)}destructStartLink(t){let e=t.trim(),s="arrow_open";switch(e[0]){case"<":s="arrow_point",e=e.slice(1);break;case"x":s="arrow_cross",e=e.slice(1);break;case"o":s="arrow_circle",e=e.slice(1)}let i="normal";return e.includes("=")&&(i="thick"),e.includes(".")&&(i="dotted"),{type:s,stroke:i}}countChar(t,e){const s=e.length;let i=0;for(let n=0;n":i="arrow_point",e.startsWith("<")&&(i="double_"+i,s=s.slice(1));break;case"o":i="arrow_circle",e.startsWith("o")&&(i="double_"+i,s=s.slice(1))}let n="normal",r=s.length-1;s.startsWith("=")&&(n="thick"),s.startsWith("~")&&(n="invisible");const a=this.countChar(".",s);return a&&(n="dotted",r=a),{type:i,stroke:n,length:r}}destructLink(t,e){const s=this.destructEndLink(t);let i;if(e){if(i=this.destructStartLink(e),i.stroke!==s.stroke)return{type:"INVALID",stroke:"INVALID"};if("arrow_open"===i.type)i.type=s.type;else{if(i.type!==s.type)return{type:"INVALID",stroke:"INVALID"};i.type="double_"+i.type}return"double_arrow"===i.type&&(i.type="double_arrow_point"),i.length=s.length,i}return s}exists(t,e){for(const s of t)if(s.nodes.includes(e))return!0;return!1}makeUniq(t,e){const s=[];return t.nodes.forEach(((i,n)=>{this.exists(e,i)||s.push(t.nodes[n])})),{nodes:s}}getTypeFromVertex(t){if(t.img)return"imageSquare";if(t.icon)return"circle"===t.form?"iconCircle":"square"===t.form?"iconSquare":"rounded"===t.form?"iconRounded":"icon";switch(t.type){case"square":case void 0:return"squareRect";case"round":return"roundedRect";case"ellipse":return"ellipse";default:return t.type}}findNode(t,e){return t.find((t=>t.id===e))}destructEdgeType(t){let e="none",s="arrow_point";switch(t){case"arrow_point":case"arrow_circle":case"arrow_cross":s=t;break;case"double_arrow_point":case"double_arrow_circle":case"double_arrow_cross":e=t.replace("double_",""),s=e}return{arrowTypeStart:e,arrowTypeEnd:s}}addNodeFromVertex(t,e,s,i,n,r){const a=s.get(t.id),u=i.get(t.id)??!1,o=this.findNode(e,t.id);if(o)o.cssStyles=t.styles,o.cssCompiledStyles=this.getCompiledStyles(t.classes),o.cssClasses=t.classes.join(" ");else{const s={id:t.id,label:t.text,labelStyle:"",parentId:a,padding:n.flowchart?.padding||8,cssStyles:t.styles,cssCompiledStyles:this.getCompiledStyles(["default","node",...t.classes]),cssClasses:"default "+t.classes.join(" "),dir:t.dir,domId:t.domId,look:r,link:t.link,linkTarget:t.linkTarget,tooltip:this.getTooltip(t.id),icon:t.icon,pos:t.pos,img:t.img,assetWidth:t.assetWidth,assetHeight:t.assetHeight,constraint:t.constraint};u?e.push({...s,isGroup:!0,shape:"rect"}):e.push({...s,isGroup:!1,shape:this.getTypeFromVertex(t)})}}getCompiledStyles(t){let e=[];for(const s of t){const t=this.classes.get(s);t?.styles&&(e=[...e,...t.styles??[]].map((t=>t.trim()))),t?.textStyles&&(e=[...e,...t.textStyles??[]].map((t=>t.trim())))}return e}getData(){const t=(0,c.D7)(),e=[],s=[],i=this.getSubGraphs(),n=new Map,r=new Map;for(let u=i.length-1;u>=0;u--){const t=i[u];t.nodes.length>0&&r.set(t.id,!0);for(const e of t.nodes)n.set(e,t.id)}for(let u=i.length-1;u>=0;u--){const s=i[u];e.push({id:s.id,label:s.title,labelStyle:"",parentId:n.get(s.id),padding:8,cssCompiledStyles:this.getCompiledStyles(s.classes),cssClasses:s.classes.join(" "),shape:"rect",dir:s.dir,isGroup:!0,look:t.look})}this.getVertices().forEach((s=>{this.addNodeFromVertex(s,e,n,r,t,t.look||"classic")}));const a=this.getEdges();return a.forEach(((e,i)=>{const{arrowTypeStart:n,arrowTypeEnd:r}=this.destructEdgeType(e.type),u=[...a.defaultStyle??[]];e.style&&u.push(...e.style);const o={id:(0,l.rY)(e.start,e.end,{counter:i,prefix:"L"},e.id),isUserDefinedId:e.isUserDefinedId,start:e.start,end:e.end,type:e.type??"normal",label:e.text,labelpos:"c",thickness:e.stroke,minlen:e.length,classes:"invisible"===e?.stroke?"":"edge-thickness-normal edge-pattern-solid flowchart-link",arrowTypeStart:"invisible"===e?.stroke||"arrow_open"===e?.type?"none":n,arrowTypeEnd:"invisible"===e?.stroke||"arrow_open"===e?.type?"none":r,arrowheadStyle:"fill: #333",cssCompiledStyles:this.getCompiledStyles(e.classes),labelStyle:u,style:u,pattern:e.stroke,look:t.look,animate:e.animate,animation:e.animation,curve:e.interpolate||this.edges.defaultInterpolate||t.flowchart?.curve};s.push(o)})),{nodes:e,edges:s,other:{},config:t}}defaultConfig(){return c.ME.flowchart}},b={getClasses:(0,h.K2)((function(t,e){return e.db.getClasses()}),"getClasses"),draw:(0,h.K2)((async function(t,e,s,i){h.Rm.info("REF0:"),h.Rm.info("Drawing state diagram (v2)",e);const{securityLevel:n,flowchart:o,layout:p}=(0,c.D7)();let g;"sandbox"===n&&(g=(0,d.Ltv)("#i"+e));const A="sandbox"===n?g.nodes()[0].contentDocument:document;h.Rm.debug("Before getData: ");const b=i.db.getData();h.Rm.debug("Data: ",b);const y=(0,r.A)(e,n),k=i.db.getDirection();b.type=i.type,b.layoutAlgorithm=(0,u.q7)(p),"dagre"===b.layoutAlgorithm&&"elk"===p&&h.Rm.warn("flowchart-elk was moved to an external package in Mermaid v11. Please refer [release notes](https://github.com/mermaid-js/mermaid/releases/tag/v11.0.0) for more details. This diagram will be rendered using `dagre` layout as a fallback."),b.direction=k,b.nodeSpacing=o?.nodeSpacing||50,b.rankSpacing=o?.rankSpacing||50,b.markers=["point","circle","cross"],b.diagramId=e,h.Rm.debug("REF1:",b),await(0,u.XX)(b,y);const f=b.config.flowchart?.diagramPadding??8;l._K.insertTitle(y,"flowchartTitleText",o?.titleTopMargin||0,i.db.getDiagramTitle()),(0,a.P)(y,f,"flowchart",o?.useMaxWidth||!1);for(const r of b.nodes){const t=(0,d.Ltv)(`#${e} [id="${r.id}"]`);if(!t||!r.link)continue;const s=A.createElementNS("http://www.w3.org/2000/svg","a");s.setAttributeNS("http://www.w3.org/2000/svg","class",r.cssClasses),s.setAttributeNS("http://www.w3.org/2000/svg","rel","noopener"),"sandbox"===n?s.setAttributeNS("http://www.w3.org/2000/svg","target","_top"):r.linkTarget&&s.setAttributeNS("http://www.w3.org/2000/svg","target",r.linkTarget);const i=t.insert((function(){return s}),":first-child"),a=t.select(".label-container");a&&i.append((function(){return a.node()}));const u=t.select(".label");u&&i.append((function(){return u.node()}))}}),"draw")},y=function(){var t=(0,h.K2)((function(t,e,s,i){for(s=s||{},i=t.length;i--;s[t[i]]=e);return s}),"o"),e=[1,4],s=[1,3],i=[1,5],n=[1,8,9,10,11,27,34,36,38,44,60,84,85,86,87,88,89,102,105,106,109,111,114,115,116,121,122,123,124],r=[2,2],a=[1,13],u=[1,14],o=[1,15],l=[1,16],c=[1,23],d=[1,25],p=[1,26],g=[1,27],A=[1,49],b=[1,48],y=[1,29],k=[1,30],f=[1,31],m=[1,32],E=[1,33],D=[1,44],C=[1,46],x=[1,42],T=[1,47],S=[1,43],F=[1,50],_=[1,45],v=[1,51],B=[1,52],w=[1,34],L=[1,35],$=[1,36],I=[1,37],R=[1,57],N=[1,8,9,10,11,27,32,34,36,38,44,60,84,85,86,87,88,89,102,105,106,109,111,114,115,116,121,122,123,124],P=[1,61],K=[1,60],G=[1,62],O=[8,9,11,75,77,78],V=[1,78],M=[1,91],U=[1,96],W=[1,95],Y=[1,92],j=[1,88],z=[1,94],X=[1,90],H=[1,97],q=[1,93],Q=[1,98],Z=[1,89],J=[8,9,10,11,40,75,77,78],tt=[8,9,10,11,40,46,75,77,78],et=[8,9,10,11,29,40,44,46,48,50,52,54,56,58,60,63,65,67,68,70,75,77,78,89,102,105,106,109,111,114,115,116],st=[8,9,11,44,60,75,77,78,89,102,105,106,109,111,114,115,116],it=[44,60,89,102,105,106,109,111,114,115,116],nt=[1,121],rt=[1,122],at=[1,124],ut=[1,123],ot=[44,60,62,74,89,102,105,106,109,111,114,115,116],lt=[1,133],ct=[1,147],ht=[1,148],dt=[1,149],pt=[1,150],gt=[1,135],At=[1,137],bt=[1,141],yt=[1,142],kt=[1,143],ft=[1,144],mt=[1,145],Et=[1,146],Dt=[1,151],Ct=[1,152],xt=[1,131],Tt=[1,132],St=[1,139],Ft=[1,134],_t=[1,138],vt=[1,136],Bt=[8,9,10,11,27,32,34,36,38,44,60,84,85,86,87,88,89,102,105,106,109,111,114,115,116,121,122,123,124],wt=[1,154],Lt=[1,156],$t=[8,9,11],It=[8,9,10,11,14,44,60,89,105,106,109,111,114,115,116],Rt=[1,176],Nt=[1,172],Pt=[1,173],Kt=[1,177],Gt=[1,174],Ot=[1,175],Vt=[77,116,119],Mt=[8,9,10,11,12,14,27,29,32,44,60,75,84,85,86,87,88,89,90,105,109,111,114,115,116],Ut=[10,106],Wt=[31,49,51,53,55,57,62,64,66,67,69,71,116,117,118],Yt=[1,247],jt=[1,245],zt=[1,249],Xt=[1,243],Ht=[1,244],qt=[1,246],Qt=[1,248],Zt=[1,250],Jt=[1,268],te=[8,9,11,106],ee=[8,9,10,11,60,84,105,106,109,110,111,112],se={trace:(0,h.K2)((function(){}),"trace"),yy:{},symbols_:{error:2,start:3,graphConfig:4,document:5,line:6,statement:7,SEMI:8,NEWLINE:9,SPACE:10,EOF:11,GRAPH:12,NODIR:13,DIR:14,FirstStmtSeparator:15,ending:16,endToken:17,spaceList:18,spaceListNewline:19,vertexStatement:20,separator:21,styleStatement:22,linkStyleStatement:23,classDefStatement:24,classStatement:25,clickStatement:26,subgraph:27,textNoTags:28,SQS:29,text:30,SQE:31,end:32,direction:33,acc_title:34,acc_title_value:35,acc_descr:36,acc_descr_value:37,acc_descr_multiline_value:38,shapeData:39,SHAPE_DATA:40,link:41,node:42,styledVertex:43,AMP:44,vertex:45,STYLE_SEPARATOR:46,idString:47,DOUBLECIRCLESTART:48,DOUBLECIRCLEEND:49,PS:50,PE:51,"(-":52,"-)":53,STADIUMSTART:54,STADIUMEND:55,SUBROUTINESTART:56,SUBROUTINEEND:57,VERTEX_WITH_PROPS_START:58,"NODE_STRING[field]":59,COLON:60,"NODE_STRING[value]":61,PIPE:62,CYLINDERSTART:63,CYLINDEREND:64,DIAMOND_START:65,DIAMOND_STOP:66,TAGEND:67,TRAPSTART:68,TRAPEND:69,INVTRAPSTART:70,INVTRAPEND:71,linkStatement:72,arrowText:73,TESTSTR:74,START_LINK:75,edgeText:76,LINK:77,LINK_ID:78,edgeTextToken:79,STR:80,MD_STR:81,textToken:82,keywords:83,STYLE:84,LINKSTYLE:85,CLASSDEF:86,CLASS:87,CLICK:88,DOWN:89,UP:90,textNoTagsToken:91,stylesOpt:92,"idString[vertex]":93,"idString[class]":94,CALLBACKNAME:95,CALLBACKARGS:96,HREF:97,LINK_TARGET:98,"STR[link]":99,"STR[tooltip]":100,alphaNum:101,DEFAULT:102,numList:103,INTERPOLATE:104,NUM:105,COMMA:106,style:107,styleComponent:108,NODE_STRING:109,UNIT:110,BRKT:111,PCT:112,idStringToken:113,MINUS:114,MULT:115,UNICODE_TEXT:116,TEXT:117,TAGSTART:118,EDGE_TEXT:119,alphaNumToken:120,direction_tb:121,direction_bt:122,direction_rl:123,direction_lr:124,$accept:0,$end:1},terminals_:{2:"error",8:"SEMI",9:"NEWLINE",10:"SPACE",11:"EOF",12:"GRAPH",13:"NODIR",14:"DIR",27:"subgraph",29:"SQS",31:"SQE",32:"end",34:"acc_title",35:"acc_title_value",36:"acc_descr",37:"acc_descr_value",38:"acc_descr_multiline_value",40:"SHAPE_DATA",44:"AMP",46:"STYLE_SEPARATOR",48:"DOUBLECIRCLESTART",49:"DOUBLECIRCLEEND",50:"PS",51:"PE",52:"(-",53:"-)",54:"STADIUMSTART",55:"STADIUMEND",56:"SUBROUTINESTART",57:"SUBROUTINEEND",58:"VERTEX_WITH_PROPS_START",59:"NODE_STRING[field]",60:"COLON",61:"NODE_STRING[value]",62:"PIPE",63:"CYLINDERSTART",64:"CYLINDEREND",65:"DIAMOND_START",66:"DIAMOND_STOP",67:"TAGEND",68:"TRAPSTART",69:"TRAPEND",70:"INVTRAPSTART",71:"INVTRAPEND",74:"TESTSTR",75:"START_LINK",77:"LINK",78:"LINK_ID",80:"STR",81:"MD_STR",84:"STYLE",85:"LINKSTYLE",86:"CLASSDEF",87:"CLASS",88:"CLICK",89:"DOWN",90:"UP",93:"idString[vertex]",94:"idString[class]",95:"CALLBACKNAME",96:"CALLBACKARGS",97:"HREF",98:"LINK_TARGET",99:"STR[link]",100:"STR[tooltip]",102:"DEFAULT",104:"INTERPOLATE",105:"NUM",106:"COMMA",109:"NODE_STRING",110:"UNIT",111:"BRKT",112:"PCT",114:"MINUS",115:"MULT",116:"UNICODE_TEXT",117:"TEXT",118:"TAGSTART",119:"EDGE_TEXT",121:"direction_tb",122:"direction_bt",123:"direction_rl",124:"direction_lr"},productions_:[0,[3,2],[5,0],[5,2],[6,1],[6,1],[6,1],[6,1],[6,1],[4,2],[4,2],[4,2],[4,3],[16,2],[16,1],[17,1],[17,1],[17,1],[15,1],[15,1],[15,2],[19,2],[19,2],[19,1],[19,1],[18,2],[18,1],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,9],[7,6],[7,4],[7,1],[7,2],[7,2],[7,1],[21,1],[21,1],[21,1],[39,2],[39,1],[20,4],[20,3],[20,4],[20,2],[20,2],[20,1],[42,1],[42,6],[42,5],[43,1],[43,3],[45,4],[45,4],[45,6],[45,4],[45,4],[45,4],[45,8],[45,4],[45,4],[45,4],[45,6],[45,4],[45,4],[45,4],[45,4],[45,4],[45,1],[41,2],[41,3],[41,3],[41,1],[41,3],[41,4],[76,1],[76,2],[76,1],[76,1],[72,1],[72,2],[73,3],[30,1],[30,2],[30,1],[30,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[83,1],[28,1],[28,2],[28,1],[28,1],[24,5],[25,5],[26,2],[26,4],[26,3],[26,5],[26,3],[26,5],[26,5],[26,7],[26,2],[26,4],[26,2],[26,4],[26,4],[26,6],[22,5],[23,5],[23,5],[23,9],[23,9],[23,7],[23,7],[103,1],[103,3],[92,1],[92,3],[107,1],[107,2],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[108,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[113,1],[82,1],[82,1],[82,1],[82,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[91,1],[79,1],[79,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[120,1],[47,1],[47,2],[101,1],[101,2],[33,1],[33,1],[33,1],[33,1]],performAction:(0,h.K2)((function(t,e,s,i,n,r,a){var u=r.length-1;switch(n){case 2:case 28:case 29:case 30:case 31:case 32:this.$=[];break;case 3:(!Array.isArray(r[u])||r[u].length>0)&&r[u-1].push(r[u]),this.$=r[u-1];break;case 4:case 183:case 44:case 54:case 76:case 181:this.$=r[u];break;case 11:i.setDirection("TB"),this.$="TB";break;case 12:i.setDirection(r[u-1]),this.$=r[u-1];break;case 27:this.$=r[u-1].nodes;break;case 33:this.$=i.addSubGraph(r[u-6],r[u-1],r[u-4]);break;case 34:this.$=i.addSubGraph(r[u-3],r[u-1],r[u-3]);break;case 35:this.$=i.addSubGraph(void 0,r[u-1],void 0);break;case 37:this.$=r[u].trim(),i.setAccTitle(this.$);break;case 38:case 39:this.$=r[u].trim(),i.setAccDescription(this.$);break;case 43:case 133:this.$=r[u-1]+r[u];break;case 45:i.addVertex(r[u-1][r[u-1].length-1],void 0,void 0,void 0,void 0,void 0,void 0,r[u]),i.addLink(r[u-3].stmt,r[u-1],r[u-2]),this.$={stmt:r[u-1],nodes:r[u-1].concat(r[u-3].nodes)};break;case 46:i.addLink(r[u-2].stmt,r[u],r[u-1]),this.$={stmt:r[u],nodes:r[u].concat(r[u-2].nodes)};break;case 47:i.addLink(r[u-3].stmt,r[u-1],r[u-2]),this.$={stmt:r[u-1],nodes:r[u-1].concat(r[u-3].nodes)};break;case 48:this.$={stmt:r[u-1],nodes:r[u-1]};break;case 49:i.addVertex(r[u-1][r[u-1].length-1],void 0,void 0,void 0,void 0,void 0,void 0,r[u]),this.$={stmt:r[u-1],nodes:r[u-1],shapeData:r[u]};break;case 50:this.$={stmt:r[u],nodes:r[u]};break;case 51:case 128:case 130:this.$=[r[u]];break;case 52:i.addVertex(r[u-5][r[u-5].length-1],void 0,void 0,void 0,void 0,void 0,void 0,r[u-4]),this.$=r[u-5].concat(r[u]);break;case 53:this.$=r[u-4].concat(r[u]);break;case 55:this.$=r[u-2],i.setClass(r[u-2],r[u]);break;case 56:this.$=r[u-3],i.addVertex(r[u-3],r[u-1],"square");break;case 57:this.$=r[u-3],i.addVertex(r[u-3],r[u-1],"doublecircle");break;case 58:this.$=r[u-5],i.addVertex(r[u-5],r[u-2],"circle");break;case 59:this.$=r[u-3],i.addVertex(r[u-3],r[u-1],"ellipse");break;case 60:this.$=r[u-3],i.addVertex(r[u-3],r[u-1],"stadium");break;case 61:this.$=r[u-3],i.addVertex(r[u-3],r[u-1],"subroutine");break;case 62:this.$=r[u-7],i.addVertex(r[u-7],r[u-1],"rect",void 0,void 0,void 0,Object.fromEntries([[r[u-5],r[u-3]]]));break;case 63:this.$=r[u-3],i.addVertex(r[u-3],r[u-1],"cylinder");break;case 64:this.$=r[u-3],i.addVertex(r[u-3],r[u-1],"round");break;case 65:this.$=r[u-3],i.addVertex(r[u-3],r[u-1],"diamond");break;case 66:this.$=r[u-5],i.addVertex(r[u-5],r[u-2],"hexagon");break;case 67:this.$=r[u-3],i.addVertex(r[u-3],r[u-1],"odd");break;case 68:this.$=r[u-3],i.addVertex(r[u-3],r[u-1],"trapezoid");break;case 69:this.$=r[u-3],i.addVertex(r[u-3],r[u-1],"inv_trapezoid");break;case 70:this.$=r[u-3],i.addVertex(r[u-3],r[u-1],"lean_right");break;case 71:this.$=r[u-3],i.addVertex(r[u-3],r[u-1],"lean_left");break;case 72:this.$=r[u],i.addVertex(r[u]);break;case 73:r[u-1].text=r[u],this.$=r[u-1];break;case 74:case 75:r[u-2].text=r[u-1],this.$=r[u-2];break;case 77:var o=i.destructLink(r[u],r[u-2]);this.$={type:o.type,stroke:o.stroke,length:o.length,text:r[u-1]};break;case 78:o=i.destructLink(r[u],r[u-2]);this.$={type:o.type,stroke:o.stroke,length:o.length,text:r[u-1],id:r[u-3]};break;case 79:case 86:case 101:case 103:this.$={text:r[u],type:"text"};break;case 80:case 87:case 102:this.$={text:r[u-1].text+""+r[u],type:r[u-1].type};break;case 81:case 88:this.$={text:r[u],type:"string"};break;case 82:case 89:case 104:this.$={text:r[u],type:"markdown"};break;case 83:o=i.destructLink(r[u]);this.$={type:o.type,stroke:o.stroke,length:o.length};break;case 84:o=i.destructLink(r[u]);this.$={type:o.type,stroke:o.stroke,length:o.length,id:r[u-1]};break;case 85:this.$=r[u-1];break;case 105:this.$=r[u-4],i.addClass(r[u-2],r[u]);break;case 106:this.$=r[u-4],i.setClass(r[u-2],r[u]);break;case 107:case 115:this.$=r[u-1],i.setClickEvent(r[u-1],r[u]);break;case 108:case 116:this.$=r[u-3],i.setClickEvent(r[u-3],r[u-2]),i.setTooltip(r[u-3],r[u]);break;case 109:this.$=r[u-2],i.setClickEvent(r[u-2],r[u-1],r[u]);break;case 110:this.$=r[u-4],i.setClickEvent(r[u-4],r[u-3],r[u-2]),i.setTooltip(r[u-4],r[u]);break;case 111:this.$=r[u-2],i.setLink(r[u-2],r[u]);break;case 112:this.$=r[u-4],i.setLink(r[u-4],r[u-2]),i.setTooltip(r[u-4],r[u]);break;case 113:this.$=r[u-4],i.setLink(r[u-4],r[u-2],r[u]);break;case 114:this.$=r[u-6],i.setLink(r[u-6],r[u-4],r[u]),i.setTooltip(r[u-6],r[u-2]);break;case 117:this.$=r[u-1],i.setLink(r[u-1],r[u]);break;case 118:this.$=r[u-3],i.setLink(r[u-3],r[u-2]),i.setTooltip(r[u-3],r[u]);break;case 119:this.$=r[u-3],i.setLink(r[u-3],r[u-2],r[u]);break;case 120:this.$=r[u-5],i.setLink(r[u-5],r[u-4],r[u]),i.setTooltip(r[u-5],r[u-2]);break;case 121:this.$=r[u-4],i.addVertex(r[u-2],void 0,void 0,r[u]);break;case 122:this.$=r[u-4],i.updateLink([r[u-2]],r[u]);break;case 123:this.$=r[u-4],i.updateLink(r[u-2],r[u]);break;case 124:this.$=r[u-8],i.updateLinkInterpolate([r[u-6]],r[u-2]),i.updateLink([r[u-6]],r[u]);break;case 125:this.$=r[u-8],i.updateLinkInterpolate(r[u-6],r[u-2]),i.updateLink(r[u-6],r[u]);break;case 126:this.$=r[u-6],i.updateLinkInterpolate([r[u-4]],r[u]);break;case 127:this.$=r[u-6],i.updateLinkInterpolate(r[u-4],r[u]);break;case 129:case 131:r[u-2].push(r[u]),this.$=r[u-2];break;case 182:case 184:this.$=r[u-1]+""+r[u];break;case 185:this.$={stmt:"dir",value:"TB"};break;case 186:this.$={stmt:"dir",value:"BT"};break;case 187:this.$={stmt:"dir",value:"RL"};break;case 188:this.$={stmt:"dir",value:"LR"}}}),"anonymous"),table:[{3:1,4:2,9:e,10:s,12:i},{1:[3]},t(n,r,{5:6}),{4:7,9:e,10:s,12:i},{4:8,9:e,10:s,12:i},{13:[1,9],14:[1,10]},{1:[2,1],6:11,7:12,8:a,9:u,10:o,11:l,20:17,22:18,23:19,24:20,25:21,26:22,27:c,33:24,34:d,36:p,38:g,42:28,43:38,44:A,45:39,47:40,60:b,84:y,85:k,86:f,87:m,88:E,89:D,102:C,105:x,106:T,109:S,111:F,113:41,114:_,115:v,116:B,121:w,122:L,123:$,124:I},t(n,[2,9]),t(n,[2,10]),t(n,[2,11]),{8:[1,54],9:[1,55],10:R,15:53,18:56},t(N,[2,3]),t(N,[2,4]),t(N,[2,5]),t(N,[2,6]),t(N,[2,7]),t(N,[2,8]),{8:P,9:K,11:G,21:58,41:59,72:63,75:[1,64],77:[1,66],78:[1,65]},{8:P,9:K,11:G,21:67},{8:P,9:K,11:G,21:68},{8:P,9:K,11:G,21:69},{8:P,9:K,11:G,21:70},{8:P,9:K,11:G,21:71},{8:P,9:K,10:[1,72],11:G,21:73},t(N,[2,36]),{35:[1,74]},{37:[1,75]},t(N,[2,39]),t(O,[2,50],{18:76,39:77,10:R,40:V}),{10:[1,79]},{10:[1,80]},{10:[1,81]},{10:[1,82]},{14:M,44:U,60:W,80:[1,86],89:Y,95:[1,83],97:[1,84],101:85,105:j,106:z,109:X,111:H,114:q,115:Q,116:Z,120:87},t(N,[2,185]),t(N,[2,186]),t(N,[2,187]),t(N,[2,188]),t(J,[2,51]),t(J,[2,54],{46:[1,99]}),t(tt,[2,72],{113:112,29:[1,100],44:A,48:[1,101],50:[1,102],52:[1,103],54:[1,104],56:[1,105],58:[1,106],60:b,63:[1,107],65:[1,108],67:[1,109],68:[1,110],70:[1,111],89:D,102:C,105:x,106:T,109:S,111:F,114:_,115:v,116:B}),t(et,[2,181]),t(et,[2,142]),t(et,[2,143]),t(et,[2,144]),t(et,[2,145]),t(et,[2,146]),t(et,[2,147]),t(et,[2,148]),t(et,[2,149]),t(et,[2,150]),t(et,[2,151]),t(et,[2,152]),t(n,[2,12]),t(n,[2,18]),t(n,[2,19]),{9:[1,113]},t(st,[2,26],{18:114,10:R}),t(N,[2,27]),{42:115,43:38,44:A,45:39,47:40,60:b,89:D,102:C,105:x,106:T,109:S,111:F,113:41,114:_,115:v,116:B},t(N,[2,40]),t(N,[2,41]),t(N,[2,42]),t(it,[2,76],{73:116,62:[1,118],74:[1,117]}),{76:119,79:120,80:nt,81:rt,116:at,119:ut},{75:[1,125],77:[1,126]},t(ot,[2,83]),t(N,[2,28]),t(N,[2,29]),t(N,[2,30]),t(N,[2,31]),t(N,[2,32]),{10:lt,12:ct,14:ht,27:dt,28:127,32:pt,44:gt,60:At,75:bt,80:[1,129],81:[1,130],83:140,84:yt,85:kt,86:ft,87:mt,88:Et,89:Dt,90:Ct,91:128,105:xt,109:Tt,111:St,114:Ft,115:_t,116:vt},t(Bt,r,{5:153}),t(N,[2,37]),t(N,[2,38]),t(O,[2,48],{44:wt}),t(O,[2,49],{18:155,10:R,40:Lt}),t(J,[2,44]),{44:A,47:157,60:b,89:D,102:C,105:x,106:T,109:S,111:F,113:41,114:_,115:v,116:B},{102:[1,158],103:159,105:[1,160]},{44:A,47:161,60:b,89:D,102:C,105:x,106:T,109:S,111:F,113:41,114:_,115:v,116:B},{44:A,47:162,60:b,89:D,102:C,105:x,106:T,109:S,111:F,113:41,114:_,115:v,116:B},t($t,[2,107],{10:[1,163],96:[1,164]}),{80:[1,165]},t($t,[2,115],{120:167,10:[1,166],14:M,44:U,60:W,89:Y,105:j,106:z,109:X,111:H,114:q,115:Q,116:Z}),t($t,[2,117],{10:[1,168]}),t(It,[2,183]),t(It,[2,170]),t(It,[2,171]),t(It,[2,172]),t(It,[2,173]),t(It,[2,174]),t(It,[2,175]),t(It,[2,176]),t(It,[2,177]),t(It,[2,178]),t(It,[2,179]),t(It,[2,180]),{44:A,47:169,60:b,89:D,102:C,105:x,106:T,109:S,111:F,113:41,114:_,115:v,116:B},{30:170,67:Rt,80:Nt,81:Pt,82:171,116:Kt,117:Gt,118:Ot},{30:178,67:Rt,80:Nt,81:Pt,82:171,116:Kt,117:Gt,118:Ot},{30:180,50:[1,179],67:Rt,80:Nt,81:Pt,82:171,116:Kt,117:Gt,118:Ot},{30:181,67:Rt,80:Nt,81:Pt,82:171,116:Kt,117:Gt,118:Ot},{30:182,67:Rt,80:Nt,81:Pt,82:171,116:Kt,117:Gt,118:Ot},{30:183,67:Rt,80:Nt,81:Pt,82:171,116:Kt,117:Gt,118:Ot},{109:[1,184]},{30:185,67:Rt,80:Nt,81:Pt,82:171,116:Kt,117:Gt,118:Ot},{30:186,65:[1,187],67:Rt,80:Nt,81:Pt,82:171,116:Kt,117:Gt,118:Ot},{30:188,67:Rt,80:Nt,81:Pt,82:171,116:Kt,117:Gt,118:Ot},{30:189,67:Rt,80:Nt,81:Pt,82:171,116:Kt,117:Gt,118:Ot},{30:190,67:Rt,80:Nt,81:Pt,82:171,116:Kt,117:Gt,118:Ot},t(et,[2,182]),t(n,[2,20]),t(st,[2,25]),t(O,[2,46],{39:191,18:192,10:R,40:V}),t(it,[2,73],{10:[1,193]}),{10:[1,194]},{30:195,67:Rt,80:Nt,81:Pt,82:171,116:Kt,117:Gt,118:Ot},{77:[1,196],79:197,116:at,119:ut},t(Vt,[2,79]),t(Vt,[2,81]),t(Vt,[2,82]),t(Vt,[2,168]),t(Vt,[2,169]),{76:198,79:120,80:nt,81:rt,116:at,119:ut},t(ot,[2,84]),{8:P,9:K,10:lt,11:G,12:ct,14:ht,21:200,27:dt,29:[1,199],32:pt,44:gt,60:At,75:bt,83:140,84:yt,85:kt,86:ft,87:mt,88:Et,89:Dt,90:Ct,91:201,105:xt,109:Tt,111:St,114:Ft,115:_t,116:vt},t(Mt,[2,101]),t(Mt,[2,103]),t(Mt,[2,104]),t(Mt,[2,157]),t(Mt,[2,158]),t(Mt,[2,159]),t(Mt,[2,160]),t(Mt,[2,161]),t(Mt,[2,162]),t(Mt,[2,163]),t(Mt,[2,164]),t(Mt,[2,165]),t(Mt,[2,166]),t(Mt,[2,167]),t(Mt,[2,90]),t(Mt,[2,91]),t(Mt,[2,92]),t(Mt,[2,93]),t(Mt,[2,94]),t(Mt,[2,95]),t(Mt,[2,96]),t(Mt,[2,97]),t(Mt,[2,98]),t(Mt,[2,99]),t(Mt,[2,100]),{6:11,7:12,8:a,9:u,10:o,11:l,20:17,22:18,23:19,24:20,25:21,26:22,27:c,32:[1,202],33:24,34:d,36:p,38:g,42:28,43:38,44:A,45:39,47:40,60:b,84:y,85:k,86:f,87:m,88:E,89:D,102:C,105:x,106:T,109:S,111:F,113:41,114:_,115:v,116:B,121:w,122:L,123:$,124:I},{10:R,18:203},{44:[1,204]},t(J,[2,43]),{10:[1,205],44:A,60:b,89:D,102:C,105:x,106:T,109:S,111:F,113:112,114:_,115:v,116:B},{10:[1,206]},{10:[1,207],106:[1,208]},t(Ut,[2,128]),{10:[1,209],44:A,60:b,89:D,102:C,105:x,106:T,109:S,111:F,113:112,114:_,115:v,116:B},{10:[1,210],44:A,60:b,89:D,102:C,105:x,106:T,109:S,111:F,113:112,114:_,115:v,116:B},{80:[1,211]},t($t,[2,109],{10:[1,212]}),t($t,[2,111],{10:[1,213]}),{80:[1,214]},t(It,[2,184]),{80:[1,215],98:[1,216]},t(J,[2,55],{113:112,44:A,60:b,89:D,102:C,105:x,106:T,109:S,111:F,114:_,115:v,116:B}),{31:[1,217],67:Rt,82:218,116:Kt,117:Gt,118:Ot},t(Wt,[2,86]),t(Wt,[2,88]),t(Wt,[2,89]),t(Wt,[2,153]),t(Wt,[2,154]),t(Wt,[2,155]),t(Wt,[2,156]),{49:[1,219],67:Rt,82:218,116:Kt,117:Gt,118:Ot},{30:220,67:Rt,80:Nt,81:Pt,82:171,116:Kt,117:Gt,118:Ot},{51:[1,221],67:Rt,82:218,116:Kt,117:Gt,118:Ot},{53:[1,222],67:Rt,82:218,116:Kt,117:Gt,118:Ot},{55:[1,223],67:Rt,82:218,116:Kt,117:Gt,118:Ot},{57:[1,224],67:Rt,82:218,116:Kt,117:Gt,118:Ot},{60:[1,225]},{64:[1,226],67:Rt,82:218,116:Kt,117:Gt,118:Ot},{66:[1,227],67:Rt,82:218,116:Kt,117:Gt,118:Ot},{30:228,67:Rt,80:Nt,81:Pt,82:171,116:Kt,117:Gt,118:Ot},{31:[1,229],67:Rt,82:218,116:Kt,117:Gt,118:Ot},{67:Rt,69:[1,230],71:[1,231],82:218,116:Kt,117:Gt,118:Ot},{67:Rt,69:[1,233],71:[1,232],82:218,116:Kt,117:Gt,118:Ot},t(O,[2,45],{18:155,10:R,40:Lt}),t(O,[2,47],{44:wt}),t(it,[2,75]),t(it,[2,74]),{62:[1,234],67:Rt,82:218,116:Kt,117:Gt,118:Ot},t(it,[2,77]),t(Vt,[2,80]),{77:[1,235],79:197,116:at,119:ut},{30:236,67:Rt,80:Nt,81:Pt,82:171,116:Kt,117:Gt,118:Ot},t(Bt,r,{5:237}),t(Mt,[2,102]),t(N,[2,35]),{43:238,44:A,45:39,47:40,60:b,89:D,102:C,105:x,106:T,109:S,111:F,113:41,114:_,115:v,116:B},{10:R,18:239},{10:Yt,60:jt,84:zt,92:240,105:Xt,107:241,108:242,109:Ht,110:qt,111:Qt,112:Zt},{10:Yt,60:jt,84:zt,92:251,104:[1,252],105:Xt,107:241,108:242,109:Ht,110:qt,111:Qt,112:Zt},{10:Yt,60:jt,84:zt,92:253,104:[1,254],105:Xt,107:241,108:242,109:Ht,110:qt,111:Qt,112:Zt},{105:[1,255]},{10:Yt,60:jt,84:zt,92:256,105:Xt,107:241,108:242,109:Ht,110:qt,111:Qt,112:Zt},{44:A,47:257,60:b,89:D,102:C,105:x,106:T,109:S,111:F,113:41,114:_,115:v,116:B},t($t,[2,108]),{80:[1,258]},{80:[1,259],98:[1,260]},t($t,[2,116]),t($t,[2,118],{10:[1,261]}),t($t,[2,119]),t(tt,[2,56]),t(Wt,[2,87]),t(tt,[2,57]),{51:[1,262],67:Rt,82:218,116:Kt,117:Gt,118:Ot},t(tt,[2,64]),t(tt,[2,59]),t(tt,[2,60]),t(tt,[2,61]),{109:[1,263]},t(tt,[2,63]),t(tt,[2,65]),{66:[1,264],67:Rt,82:218,116:Kt,117:Gt,118:Ot},t(tt,[2,67]),t(tt,[2,68]),t(tt,[2,70]),t(tt,[2,69]),t(tt,[2,71]),t([10,44,60,89,102,105,106,109,111,114,115,116],[2,85]),t(it,[2,78]),{31:[1,265],67:Rt,82:218,116:Kt,117:Gt,118:Ot},{6:11,7:12,8:a,9:u,10:o,11:l,20:17,22:18,23:19,24:20,25:21,26:22,27:c,32:[1,266],33:24,34:d,36:p,38:g,42:28,43:38,44:A,45:39,47:40,60:b,84:y,85:k,86:f,87:m,88:E,89:D,102:C,105:x,106:T,109:S,111:F,113:41,114:_,115:v,116:B,121:w,122:L,123:$,124:I},t(J,[2,53]),{43:267,44:A,45:39,47:40,60:b,89:D,102:C,105:x,106:T,109:S,111:F,113:41,114:_,115:v,116:B},t($t,[2,121],{106:Jt}),t(te,[2,130],{108:269,10:Yt,60:jt,84:zt,105:Xt,109:Ht,110:qt,111:Qt,112:Zt}),t(ee,[2,132]),t(ee,[2,134]),t(ee,[2,135]),t(ee,[2,136]),t(ee,[2,137]),t(ee,[2,138]),t(ee,[2,139]),t(ee,[2,140]),t(ee,[2,141]),t($t,[2,122],{106:Jt}),{10:[1,270]},t($t,[2,123],{106:Jt}),{10:[1,271]},t(Ut,[2,129]),t($t,[2,105],{106:Jt}),t($t,[2,106],{113:112,44:A,60:b,89:D,102:C,105:x,106:T,109:S,111:F,114:_,115:v,116:B}),t($t,[2,110]),t($t,[2,112],{10:[1,272]}),t($t,[2,113]),{98:[1,273]},{51:[1,274]},{62:[1,275]},{66:[1,276]},{8:P,9:K,11:G,21:277},t(N,[2,34]),t(J,[2,52]),{10:Yt,60:jt,84:zt,105:Xt,107:278,108:242,109:Ht,110:qt,111:Qt,112:Zt},t(ee,[2,133]),{14:M,44:U,60:W,89:Y,101:279,105:j,106:z,109:X,111:H,114:q,115:Q,116:Z,120:87},{14:M,44:U,60:W,89:Y,101:280,105:j,106:z,109:X,111:H,114:q,115:Q,116:Z,120:87},{98:[1,281]},t($t,[2,120]),t(tt,[2,58]),{30:282,67:Rt,80:Nt,81:Pt,82:171,116:Kt,117:Gt,118:Ot},t(tt,[2,66]),t(Bt,r,{5:283}),t(te,[2,131],{108:269,10:Yt,60:jt,84:zt,105:Xt,109:Ht,110:qt,111:Qt,112:Zt}),t($t,[2,126],{120:167,10:[1,284],14:M,44:U,60:W,89:Y,105:j,106:z,109:X,111:H,114:q,115:Q,116:Z}),t($t,[2,127],{120:167,10:[1,285],14:M,44:U,60:W,89:Y,105:j,106:z,109:X,111:H,114:q,115:Q,116:Z}),t($t,[2,114]),{31:[1,286],67:Rt,82:218,116:Kt,117:Gt,118:Ot},{6:11,7:12,8:a,9:u,10:o,11:l,20:17,22:18,23:19,24:20,25:21,26:22,27:c,32:[1,287],33:24,34:d,36:p,38:g,42:28,43:38,44:A,45:39,47:40,60:b,84:y,85:k,86:f,87:m,88:E,89:D,102:C,105:x,106:T,109:S,111:F,113:41,114:_,115:v,116:B,121:w,122:L,123:$,124:I},{10:Yt,60:jt,84:zt,92:288,105:Xt,107:241,108:242,109:Ht,110:qt,111:Qt,112:Zt},{10:Yt,60:jt,84:zt,92:289,105:Xt,107:241,108:242,109:Ht,110:qt,111:Qt,112:Zt},t(tt,[2,62]),t(N,[2,33]),t($t,[2,124],{106:Jt}),t($t,[2,125],{106:Jt})],defaultActions:{},parseError:(0,h.K2)((function(t,e){if(!e.recoverable){var s=new Error(t);throw s.hash=e,s}this.trace(t)}),"parseError"),parse:(0,h.K2)((function(t){var e=this,s=[0],i=[],n=[null],r=[],a=this.table,u="",o=0,l=0,c=0,d=r.slice.call(arguments,1),p=Object.create(this.lexer),g={yy:{}};for(var A in this.yy)Object.prototype.hasOwnProperty.call(this.yy,A)&&(g.yy[A]=this.yy[A]);p.setInput(t,g.yy),g.yy.lexer=p,g.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var b=p.yylloc;r.push(b);var y=p.options&&p.options.ranges;function k(){var t;return"number"!=typeof(t=i.pop()||p.lex()||1)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof g.yy.parseError?this.parseError=g.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,h.K2)((function(t){s.length=s.length-2*t,n.length=n.length-t,r.length=r.length-t}),"popStack"),(0,h.K2)(k,"lex");for(var f,m,E,D,C,x,T,S,F,_={};;){if(E=s[s.length-1],this.defaultActions[E]?D=this.defaultActions[E]:(null==f&&(f=k()),D=a[E]&&a[E][f]),void 0===D||!D.length||!D[0]){var v="";for(x in F=[],a[E])this.terminals_[x]&&x>2&&F.push("'"+this.terminals_[x]+"'");v=p.showPosition?"Parse error on line "+(o+1)+":\n"+p.showPosition()+"\nExpecting "+F.join(", ")+", got '"+(this.terminals_[f]||f)+"'":"Parse error on line "+(o+1)+": Unexpected "+(1==f?"end of input":"'"+(this.terminals_[f]||f)+"'"),this.parseError(v,{text:p.match,token:this.terminals_[f]||f,line:p.yylineno,loc:b,expected:F})}if(D[0]instanceof Array&&D.length>1)throw new Error("Parse Error: multiple actions possible at state: "+E+", token: "+f);switch(D[0]){case 1:s.push(f),n.push(p.yytext),r.push(p.yylloc),s.push(D[1]),f=null,m?(f=m,m=null):(l=p.yyleng,u=p.yytext,o=p.yylineno,b=p.yylloc,c>0&&c--);break;case 2:if(T=this.productions_[D[1]][1],_.$=n[n.length-T],_._$={first_line:r[r.length-(T||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-(T||1)].first_column,last_column:r[r.length-1].last_column},y&&(_._$.range=[r[r.length-(T||1)].range[0],r[r.length-1].range[1]]),void 0!==(C=this.performAction.apply(_,[u,l,o,g.yy,D[1],n,r].concat(d))))return C;T&&(s=s.slice(0,-1*T*2),n=n.slice(0,-1*T),r=r.slice(0,-1*T)),s.push(this.productions_[D[1]][0]),n.push(_.$),r.push(_._$),S=a[s[s.length-2]][s[s.length-1]],s.push(S);break;case 3:return!0}}return!0}),"parse")},ie=function(){return{EOF:1,parseError:(0,h.K2)((function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)}),"parseError"),setInput:(0,h.K2)((function(t,e){return this.yy=e||this.yy||{},this._input=t,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:(0,h.K2)((function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t}),"input"),unput:(0,h.K2)((function(t){var e=t.length,s=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=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),s.length-1&&(this.yylineno-=s.length-1);var n=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:s?(s.length===i.length?this.yylloc.first_column:0)+i[i.length-s.length].length-s[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[n[0],n[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this}),"unput"),more:(0,h.K2)((function(){return this._more=!0,this}),"more"),reject:(0,h.K2)((function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):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).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})}),"reject"),less:(0,h.K2)((function(t){this.unput(this.match.slice(t))}),"less"),pastInput:(0,h.K2)((function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")}),"pastInput"),upcomingInput:(0,h.K2)((function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")}),"upcomingInput"),showPosition:(0,h.K2)((function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"}),"showPosition"),test_match:(0,h.K2)((function(t,e){var s,i,n;if(this.options.backtrack_lexer&&(n={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&&(n.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,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(t[0].length),this.matched+=t[0],s=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),s)return s;if(this._backtrack){for(var r in n)this[r]=n[r];return!1}return!1}),"test_match"),next:(0,h.K2)((function(){if(this.done)return this.EOF;var t,e,s,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var n=this._currentRules(),r=0;re[0].length)){if(e=s,i=r,this.options.backtrack_lexer){if(!1!==(t=this.test_match(s,n[r])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,n[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})}),"next"),lex:(0,h.K2)((function(){var t=this.next();return t||this.lex()}),"lex"),begin:(0,h.K2)((function(t){this.conditionStack.push(t)}),"begin"),popState:(0,h.K2)((function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]}),"popState"),_currentRules:(0,h.K2)((function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules}),"_currentRules"),topState:(0,h.K2)((function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"}),"topState"),pushState:(0,h.K2)((function(t){this.begin(t)}),"pushState"),stateStackSize:(0,h.K2)((function(){return this.conditionStack.length}),"stateStackSize"),options:{},performAction:(0,h.K2)((function(t,e,s,i){switch(s){case 0:return this.begin("acc_title"),34;case 1:return this.popState(),"acc_title_value";case 2:return this.begin("acc_descr"),36;case 3:return this.popState(),"acc_descr_value";case 4:this.begin("acc_descr_multiline");break;case 5:case 12:case 14:case 17:case 20:case 23:case 33:this.popState();break;case 6:return"acc_descr_multiline_value";case 7:return this.pushState("shapeData"),e.yytext="",40;case 8:return this.pushState("shapeDataStr"),40;case 9:return this.popState(),40;case 10:const s=/\n\s*/g;return e.yytext=e.yytext.replace(s,"
    "),40;case 11:return 40;case 13:this.begin("callbackname");break;case 15:this.popState(),this.begin("callbackargs");break;case 16:return 95;case 18:return 96;case 19:return"MD_STR";case 21:this.begin("md_string");break;case 22:return"STR";case 24:this.pushState("string");break;case 25:return 84;case 26:return 102;case 27:return 85;case 28:return 104;case 29:return 86;case 30:return 87;case 31:return 97;case 32:this.begin("click");break;case 34:return 88;case 35:case 36:case 37:return t.lex.firstGraph()&&this.begin("dir"),12;case 38:return 27;case 39:return 32;case 40:case 41:case 42:case 43:return 98;case 44:return this.popState(),13;case 45:case 46:case 47:case 48:case 49:case 50:case 51:case 52:case 53:case 54:return this.popState(),14;case 55:return 121;case 56:return 122;case 57:return 123;case 58:return 124;case 59:return 78;case 60:return 105;case 61:case 102:return 111;case 62:return 46;case 63:return 60;case 64:case 103:return 44;case 65:return 8;case 66:return 106;case 67:case 101:return 115;case 68:case 71:case 74:return this.popState(),77;case 69:return this.pushState("edgeText"),75;case 70:case 73:case 76:return 119;case 72:return this.pushState("thickEdgeText"),75;case 75:return this.pushState("dottedEdgeText"),75;case 77:return 77;case 78:return this.popState(),53;case 79:case 115:return"TEXT";case 80:return this.pushState("ellipseText"),52;case 81:return this.popState(),55;case 82:return this.pushState("text"),54;case 83:return this.popState(),57;case 84:return this.pushState("text"),56;case 85:return 58;case 86:return this.pushState("text"),67;case 87:return this.popState(),64;case 88:return this.pushState("text"),63;case 89:return this.popState(),49;case 90:return this.pushState("text"),48;case 91:return this.popState(),69;case 92:return this.popState(),71;case 93:return 117;case 94:return this.pushState("trapText"),68;case 95:return this.pushState("trapText"),70;case 96:return 118;case 97:return 67;case 98:return 90;case 99:return"SEP";case 100:return 89;case 104:return 109;case 105:return 114;case 106:return 116;case 107:return this.popState(),62;case 108:return this.pushState("text"),62;case 109:return this.popState(),51;case 110:return this.pushState("text"),50;case 111:return this.popState(),31;case 112:return this.pushState("text"),29;case 113:return this.popState(),66;case 114:return this.pushState("text"),65;case 116:return"QUOTE";case 117:return 9;case 118:return 10;case 119:return 11}}),"anonymous"),rules:[/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:@\{)/,/^(?:["])/,/^(?:["])/,/^(?:[^\"]+)/,/^(?:[^}^"]+)/,/^(?:\})/,/^(?:call[\s]+)/,/^(?:\([\s]*\))/,/^(?:\()/,/^(?:[^(]*)/,/^(?:\))/,/^(?:[^)]*)/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["][`])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:["])/,/^(?:style\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\b)/,/^(?:class\b)/,/^(?:href[\s])/,/^(?:click[\s]+)/,/^(?:[\s\n])/,/^(?:[^\s\n]*)/,/^(?:flowchart-elk\b)/,/^(?:graph\b)/,/^(?:flowchart\b)/,/^(?:subgraph\b)/,/^(?:end\b\s*)/,/^(?:_self\b)/,/^(?:_blank\b)/,/^(?:_parent\b)/,/^(?:_top\b)/,/^(?:(\r?\n)*\s*\n)/,/^(?:\s*LR\b)/,/^(?:\s*RL\b)/,/^(?:\s*TB\b)/,/^(?:\s*BT\b)/,/^(?:\s*TD\b)/,/^(?:\s*BR\b)/,/^(?:\s*<)/,/^(?:\s*>)/,/^(?:\s*\^)/,/^(?:\s*v\b)/,/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:[^\s\"]+@(?=[^\{\"]))/,/^(?:[0-9]+)/,/^(?:#)/,/^(?::::)/,/^(?::)/,/^(?:&)/,/^(?:;)/,/^(?:,)/,/^(?:\*)/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?--\s*)/,/^(?:[^-]|-(?!-)+)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?==\s*)/,/^(?:[^=]|=(?!))/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?:\s*[xo<]?-\.\s*)/,/^(?:[^\.]|\.(?!))/,/^(?:\s*~~[\~]+\s*)/,/^(?:[-/\)][\)])/,/^(?:[^\(\)\[\]\{\}]|!\)+)/,/^(?:\(-)/,/^(?:\]\))/,/^(?:\(\[)/,/^(?:\]\])/,/^(?:\[\[)/,/^(?:\[\|)/,/^(?:>)/,/^(?:\)\])/,/^(?:\[\()/,/^(?:\)\)\))/,/^(?:\(\(\()/,/^(?:[\\(?=\])][\]])/,/^(?:\/(?=\])\])/,/^(?:\/(?!\])|\\(?!\])|[^\\\[\]\(\)\{\}\/]+)/,/^(?:\[\/)/,/^(?:\[\\)/,/^(?:<)/,/^(?:>)/,/^(?:\^)/,/^(?:\\\|)/,/^(?:v\b)/,/^(?:\*)/,/^(?:#)/,/^(?:&)/,/^(?:([A-Za-z0-9!"\#$%&'*+\.`?\\_\/]|-(?=[^\>\-\.])|(?!))+)/,/^(?:-)/,/^(?:[\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6]|[\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377]|[\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5]|[\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA]|[\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE]|[\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA]|[\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0]|[\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977]|[\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2]|[\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A]|[\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39]|[\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8]|[\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C]|[\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C]|[\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99]|[\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0]|[\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D]|[\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3]|[\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10]|[\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1]|[\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81]|[\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3]|[\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6]|[\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A]|[\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081]|[\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D]|[\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0]|[\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310]|[\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C]|[\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711]|[\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7]|[\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C]|[\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16]|[\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF]|[\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC]|[\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D]|[\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D]|[\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3]|[\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F]|[\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128]|[\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184]|[\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3]|[\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6]|[\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE]|[\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C]|[\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D]|[\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC]|[\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B]|[\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788]|[\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805]|[\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB]|[\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28]|[\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5]|[\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4]|[\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E]|[\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D]|[\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36]|[\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D]|[\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC]|[\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF]|[\uFFD2-\uFFD7\uFFDA-\uFFDC])/,/^(?:\|)/,/^(?:\|)/,/^(?:\))/,/^(?:\()/,/^(?:\])/,/^(?:\[)/,/^(?:(\}))/,/^(?:\{)/,/^(?:[^\[\]\(\)\{\}\|\"]+)/,/^(?:")/,/^(?:(\r?\n)+)/,/^(?:\s)/,/^(?:$)/],conditions:{shapeDataEndBracket:{rules:[21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},shapeDataStr:{rules:[9,10,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},shapeData:{rules:[8,11,12,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},callbackargs:{rules:[17,18,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},callbackname:{rules:[14,15,16,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},href:{rules:[21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},click:{rules:[21,24,33,34,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},dottedEdgeText:{rules:[21,24,74,76,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},thickEdgeText:{rules:[21,24,71,73,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},edgeText:{rules:[21,24,68,70,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},trapText:{rules:[21,24,77,80,82,84,88,90,91,92,93,94,95,108,110,112,114],inclusive:!1},ellipseText:{rules:[21,24,77,78,79,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},text:{rules:[21,24,77,80,81,82,83,84,87,88,89,90,94,95,107,108,109,110,111,112,113,114,115],inclusive:!1},vertex:{rules:[21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},dir:{rules:[21,24,44,45,46,47,48,49,50,51,52,53,54,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},acc_descr_multiline:{rules:[5,6,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},acc_descr:{rules:[3,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},acc_title:{rules:[1,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},md_string:{rules:[19,20,21,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},string:{rules:[21,22,23,24,77,80,82,84,88,90,94,95,108,110,112,114],inclusive:!1},INITIAL:{rules:[0,2,4,7,13,21,24,25,26,27,28,29,30,31,32,35,36,37,38,39,40,41,42,43,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,71,72,74,75,77,80,82,84,85,86,88,90,94,95,96,97,98,99,100,101,102,103,104,105,106,108,110,112,114,116,117,118,119],inclusive:!0}}}}();function ne(){this.yy={}}return se.lexer=ie,(0,h.K2)(ne,"Parser"),ne.prototype=se,se.Parser=ne,new ne}();y.parser=y;var k=y,f=Object.assign({},k);f.parse=t=>{const e=t.replace(/}\s*\n/g,"}\n");return k.parse(e)};var m=f,E=(0,h.K2)(((t,e)=>{const s=p.A,i=s(t,"r"),n=s(t,"g"),r=s(t,"b");return g.A(i,n,r,e)}),"fade"),D={parser:m,get db(){return new A},renderer:b,styles:(0,h.K2)((t=>`.label {\n font-family: ${t.fontFamily};\n color: ${t.nodeTextColor||t.textColor};\n }\n .cluster-label text {\n fill: ${t.titleColor};\n }\n .cluster-label span {\n color: ${t.titleColor};\n }\n .cluster-label span p {\n background-color: transparent;\n }\n\n .label text,span {\n fill: ${t.nodeTextColor||t.textColor};\n color: ${t.nodeTextColor||t.textColor};\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n stroke-width: 1px;\n }\n .rough-node .label text , .node .label text, .image-shape .label, .icon-shape .label {\n text-anchor: middle;\n }\n // .flowchart-label .text-outer-tspan {\n // text-anchor: middle;\n // }\n // .flowchart-label .text-inner-tspan {\n // text-anchor: start;\n // }\n\n .node .katex path {\n fill: #000;\n stroke: #000;\n stroke-width: 1px;\n }\n\n .rough-node .label,.node .label, .image-shape .label, .icon-shape .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n\n .root .anchor path {\n fill: ${t.lineColor} !important;\n stroke-width: 0;\n stroke: ${t.lineColor};\n }\n\n .arrowheadPath {\n fill: ${t.arrowheadColor};\n }\n\n .edgePath .path {\n stroke: ${t.lineColor};\n stroke-width: 2.0px;\n }\n\n .flowchart-link {\n stroke: ${t.lineColor};\n fill: none;\n }\n\n .edgeLabel {\n background-color: ${t.edgeLabelBackground};\n p {\n background-color: ${t.edgeLabelBackground};\n }\n rect {\n opacity: 0.5;\n background-color: ${t.edgeLabelBackground};\n fill: ${t.edgeLabelBackground};\n }\n text-align: center;\n }\n\n /* For html labels only */\n .labelBkg {\n background-color: ${E(t.edgeLabelBackground,.5)};\n // background-color:\n }\n\n .cluster rect {\n fill: ${t.clusterBkg};\n stroke: ${t.clusterBorder};\n stroke-width: 1px;\n }\n\n .cluster text {\n fill: ${t.titleColor};\n }\n\n .cluster span {\n color: ${t.titleColor};\n }\n /* .cluster div {\n color: ${t.titleColor};\n } */\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: ${t.fontFamily};\n font-size: 12px;\n background: ${t.tertiaryColor};\n border: 1px solid ${t.border2};\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n\n .flowchartTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${t.textColor};\n }\n\n rect.text {\n fill: none;\n stroke-width: 0;\n }\n\n .icon-shape, .image-shape {\n background-color: ${t.edgeLabelBackground};\n p {\n background-color: ${t.edgeLabelBackground};\n padding: 2px;\n }\n rect {\n opacity: 0.5;\n background-color: ${t.edgeLabelBackground};\n fill: ${t.edgeLabelBackground};\n }\n text-align: center;\n }\n ${(0,i.o)()}\n`),"getStyles"),init:(0,h.K2)((t=>{t.flowchart||(t.flowchart={}),t.layout&&(0,c.XV)({layout:t.layout}),t.flowchart.arrowMarkerAbsolute=t.arrowMarkerAbsolute,(0,c.XV)({flowchart:{arrowMarkerAbsolute:t.arrowMarkerAbsolute}})}),"init")}}}]); \ No newline at end of file diff --git a/assets/js/2325.9d50e9fa.js b/assets/js/2325.9d50e9fa.js new file mode 100644 index 00000000..a68cc73e --- /dev/null +++ b/assets/js/2325.9d50e9fa.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2325],{2325:(e,c,s)=>{s.d(c,{createPacketServices:()=>a.$});var a=s(51477);s(87960)}}]); \ No newline at end of file diff --git a/assets/js/2334.04a1501f.js b/assets/js/2334.04a1501f.js new file mode 100644 index 00000000..76f11ba8 --- /dev/null +++ b/assets/js/2334.04a1501f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2334],{62334:(e,n,t)=>{t.d(n,{Zp:()=>Rn});var r=t(8058),o=t(28894),i=0;const u=function(e){var n=++i;return(0,o.A)(e)+n};var a=t(39142),s=t(34098),d=t(74722),c=Math.ceil,h=Math.max;const f=function(e,n,t,r){for(var o=-1,i=h(c((n-e)/(t||1)),0),u=Array(i);i--;)u[r?i:++o]=e,e+=t;return u};var l=t(6832),v=t(74342);const g=function(e){return function(n,t,r){return r&&"number"!=typeof r&&(0,l.A)(n,t,r)&&(t=r=void 0),n=(0,v.A)(n),void 0===t?(t=n,n=0):t=(0,v.A)(t),r=void 0===r?n0;--a)if(r=n[a].dequeue()){o=o.concat(_(e,n,t,r,!0));break}}return o}(t.graph,t.buckets,t.zeroIdx);return s.A(d.A(o,(function(n){return e.outEdges(n.v,n.w)})))}function _(e,n,t,o,i){var u=i?[]:void 0;return r.A(e.inEdges(o.v),(function(r){var o=e.edge(r),a=e.node(r.v);i&&u.push({v:r.v,w:r.w}),a.out-=o,E(n,t,a)})),r.A(e.outEdges(o.v),(function(r){var o=e.edge(r),i=r.w,u=e.node(i);u.in-=o,E(n,t,u)})),e.removeNode(o.v),u}function E(e,n,t){t.out?t.in?e[t.out-t.in+n].enqueue(t):e[e.length-1].enqueue(t):e[0].enqueue(t)}function O(e){var n="greedy"===e.graph().acyclicer?y(e,function(e){return function(n){return e.edge(n).weight}}(e)):function(e){var n=[],t={},o={};function i(u){Object.prototype.hasOwnProperty.call(o,u)||(o[u]=!0,t[u]=!0,r.A(e.outEdges(u),(function(e){Object.prototype.hasOwnProperty.call(t,e.w)?n.push(e):i(e.w)})),delete t[u])}return r.A(e.nodes(),i),n}(e);r.A(n,(function(n){var t=e.edge(n);e.removeEdge(n),t.forwardName=n.name,t.reversed=!0,e.setEdge(n.w,n.v,t,u("rev"))}))}var x=t(42837),k=t(99354),N=t(39188);const P=function(e,n){return(0,k.A)(e,n,(function(n,t){return(0,N.A)(e,t)}))};var j=t(76875),C=t(67525);const I=function(e){return(0,C.A)((0,j.A)(e,void 0,s.A),e+"")}((function(e,n){return null==e?{}:P(e,n)}));var L=t(23068),T=t(72559);const M=function(e,n){return e>n};var R=t(29008);const F=function(e){return e&&e.length?(0,T.A)(e,R.A,M):void 0};var D=t(26666),S=t(52528),G=t(79841),V=t(23958);const B=function(e,n){var t={};return n=(0,V.A)(n,3),(0,G.A)(e,(function(e,r,o){(0,S.A)(t,r,n(e,r,o))})),t};var q=t(69592),Y=t(86452),z=t(48585),$=t(41917);const J=function(){return $.A.Date.now()};function Z(e,n,t,r){var o;do{o=u(r)}while(e.hasNode(o));return t.dummy=n,e.setNode(o,t),o}function H(e){var n=new p.T({multigraph:e.isMultigraph()}).setGraph(e.graph());return r.A(e.nodes(),(function(t){e.children(t).length||n.setNode(t,e.node(t))})),r.A(e.edges(),(function(t){n.setEdge(t,e.edge(t))})),n}function K(e,n){var t,r,o=e.x,i=e.y,u=n.x-o,a=n.y-i,s=e.width/2,d=e.height/2;if(!u&&!a)throw new Error("Not possible to find intersection inside of the rectangle");return Math.abs(a)*s>Math.abs(u)*d?(a<0&&(d=-d),t=d*u/a,r=d):(u<0&&(s=-s),t=s,r=s*a/u),{x:o+t,y:i+r}}function Q(e){var n=d.A(g(W(e)+1),(function(){return[]}));return r.A(e.nodes(),(function(t){var r=e.node(t),o=r.rank;q.A(o)||(n[o][r.order]=t)})),n}function U(e,n,t,r){var o={width:0,height:0};return arguments.length>=4&&(o.rank=t,o.order=r),Z(e,"border",o,n)}function W(e){return F(d.A(e.nodes(),(function(n){var t=e.node(n).rank;if(!q.A(t))return t})))}function X(e,n){var t=J();try{return n()}finally{console.log(e+" time: "+(J()-t)+"ms")}}function ee(e,n){return n()}function ne(e,n,t,r,o,i){var u={width:0,height:0,rank:i,borderType:n},a=o[n][i-1],s=Z(e,"border",u,t);o[n][i]=s,e.setParent(s,r),a&&e.setEdge(a,s,{weight:1})}function te(e){var n=e.graph().rankdir.toLowerCase();"bt"!==n&&"rl"!==n||function(e){r.A(e.nodes(),(function(n){ie(e.node(n))})),r.A(e.edges(),(function(n){var t=e.edge(n);r.A(t.points,ie),Object.prototype.hasOwnProperty.call(t,"y")&&ie(t)}))}(e),"lr"!==n&&"rl"!==n||(!function(e){r.A(e.nodes(),(function(n){ue(e.node(n))})),r.A(e.edges(),(function(n){var t=e.edge(n);r.A(t.points,ue),Object.prototype.hasOwnProperty.call(t,"x")&&ue(t)}))}(e),re(e))}function re(e){r.A(e.nodes(),(function(n){oe(e.node(n))})),r.A(e.edges(),(function(n){oe(e.edge(n))}))}function oe(e){var n=e.width;e.width=e.height,e.height=n}function ie(e){e.y=-e.y}function ue(e){var n=e.x;e.x=e.y,e.y=n}function ae(e){e.graph().dummyChains=[],r.A(e.edges(),(function(n){!function(e,n){var t=n.v,r=e.node(t).rank,o=n.w,i=e.node(o).rank,u=n.name,a=e.edge(n),s=a.labelRank;if(i===r+1)return;e.removeEdge(n);var d,c,h=void 0;for(c=0,++r;ru.lim&&(a=u,s=!0);var d=Ae.A(n.edges(),(function(n){return s===Be(e,e.node(n.v),a)&&s!==Be(e,e.node(n.w),a)}));return de(d,(function(e){return he(n,e)}))}function Ve(e,n,t,o){var i=t.v,u=t.w;e.removeEdge(i,u),e.setEdge(o.v,o.w,{}),Fe(e),Me(e,n),function(e,n){var t=pe.A(e.nodes(),(function(e){return!n.node(e).parent})),o=function(e,n){return Ie(e,n,"pre")}(e,t);o=o.slice(1),r.A(o,(function(t){var r=e.node(t).parent,o=n.edge(t,r),i=!1;o||(o=n.edge(r,t),i=!0),n.node(t).rank=n.node(r).rank+(i?o.minlen:-o.minlen)}))}(e,n)}function Be(e,n,t){return t.low<=n.lim&&n.lim<=t.lim}function qe(e){switch(e.graph().ranker){case"network-simplex":default:ze(e);break;case"tight-tree":!function(e){ce(e),fe(e)}(e);break;case"longest-path":Ye(e)}}Te.initLowLimValues=Fe,Te.initCutValues=Me,Te.calcCutValue=Re,Te.leaveEdge=Se,Te.enterEdge=Ge,Te.exchangeEdges=Ve;var Ye=ce;function ze(e){Te(e)}var $e=t(38207),Je=t(89463);function Ze(e){var n=Z(e,"root",{},"_root"),t=function(e){var n={};function t(o,i){var u=e.children(o);u&&u.length&&r.A(u,(function(e){t(e,i+1)})),n[o]=i}return r.A(e.children(),(function(e){t(e,1)})),n}(e),o=F($e.A(t))-1,i=2*o+1;e.graph().nestingRoot=n,r.A(e.edges(),(function(n){e.edge(n).minlen*=i}));var u=function(e){return Je.A(e.edges(),(function(n,t){return n+e.edge(t).weight}),0)}(e)+1;r.A(e.children(),(function(r){He(e,n,i,u,o,t,r)})),e.graph().nodeRankFactor=i}function He(e,n,t,o,i,u,a){var s=e.children(a);if(s.length){var d=U(e,"_bt"),c=U(e,"_bb"),h=e.node(a);e.setParent(d,a),h.borderTop=d,e.setParent(c,a),h.borderBottom=c,r.A(s,(function(r){He(e,n,t,o,i,u,r);var s=e.node(r),h=s.borderTop?s.borderTop:r,f=s.borderBottom?s.borderBottom:r,l=s.borderTop?o:2*o,v=h!==f?1:i-u[a]+1;e.setEdge(d,h,{weight:l,minlen:v,nestingEdge:!0}),e.setEdge(f,c,{weight:l,minlen:v,nestingEdge:!0})})),e.parent(a)||e.setEdge(n,d,{weight:0,minlen:i+u[a]})}else a!==n&&e.setEdge(n,a,{weight:0,minlen:t})}var Ke=t(68675);const Qe=function(e){return(0,Ke.A)(e,5)};function Ue(e,n,t){var o=function(e){var n;for(;e.hasNode(n=u("_root")););return n}(e),i=new p.T({compound:!0}).setGraph({root:o}).setDefaultNodeLabel((function(n){return e.node(n)}));return r.A(e.nodes(),(function(u){var a=e.node(u),s=e.parent(u);(a.rank===n||a.minRank<=n&&n<=a.maxRank)&&(i.setNode(u),i.setParent(u,s||o),r.A(e[t](u),(function(n){var t=n.v===u?n.w:n.v,r=i.edge(t,u),o=q.A(r)?0:r.weight;i.setEdge(t,u,{weight:e.edge(n).weight+o})})),Object.prototype.hasOwnProperty.call(a,"minRank")&&i.setNode(u,{borderLeft:a.borderLeft[n],borderRight:a.borderRight[n]}))})),i}var We=t(52851);const Xe=function(e,n,t){for(var r=-1,o=e.length,i=n.length,u={};++rn||i&&u&&s&&!a&&!d||r&&u&&s||!t&&s||!o)return 1;if(!r&&!i&&!d&&e=a?s:s*("desc"==t[r]?-1:1)}return e.index-n.index};const hn=function(e,n,t){n=n.length?(0,tn.A)(n,(function(e){return(0,Ce.A)(e)?function(n){return(0,rn.A)(n,1===e.length?e[0]:e)}:e})):[R.A];var r=-1;n=(0,tn.A)(n,(0,an.A)(V.A));var o=(0,on.A)(e,(function(e,t,o){return{criteria:(0,tn.A)(n,(function(n){return n(e)})),index:++r,value:e}}));return un(o,(function(e,n){return cn(e,n,t)}))};const fn=(0,t(24326).A)((function(e,n){if(null==e)return[];var t=n.length;return t>1&&(0,l.A)(e,n[0],n[1])?n=[]:t>2&&(0,l.A)(n[0],n[1],n[2])&&(n=[n[0]]),hn(e,(0,nn.A)(n,1),[])}));function ln(e,n){for(var t=0,r=1;r0;)n%2&&(t+=c[n+1]),c[n=n-1>>1]+=e.weight;h+=e.weight*t}))),h}function gn(e,n){var t={};return r.A(e,(function(e,n){var r=t[e.v]={indegree:0,in:[],out:[],vs:[e.v],i:n};q.A(e.barycenter)||(r.barycenter=e.barycenter,r.weight=e.weight)})),r.A(n.edges(),(function(e){var n=t[e.v],r=t[e.w];q.A(n)||q.A(r)||(r.indegree++,n.out.push(t[e.w]))})),function(e){var n=[];function t(e){return function(n){n.merged||(q.A(n.barycenter)||q.A(e.barycenter)||n.barycenter>=e.barycenter)&&function(e,n){var t=0,r=0;e.weight&&(t+=e.barycenter*e.weight,r+=e.weight);n.weight&&(t+=n.barycenter*n.weight,r+=n.weight);e.vs=n.vs.concat(e.vs),e.barycenter=t/r,e.weight=r,e.i=Math.min(n.i,e.i),n.merged=!0}(e,n)}}function o(n){return function(t){t.in.push(n),0==--t.indegree&&e.push(t)}}for(;e.length;){var i=e.pop();n.push(i),r.A(i.in.reverse(),t(i)),r.A(i.out,o(i))}return d.A(Ae.A(n,(function(e){return!e.merged})),(function(e){return I(e,["vs","i","barycenter","weight"])}))}(Ae.A(t,(function(e){return!e.indegree})))}function pn(e,n){var t,o=function(e,n){var t={lhs:[],rhs:[]};return r.A(e,(function(e){n(e)?t.lhs.push(e):t.rhs.push(e)})),t}(e,(function(e){return Object.prototype.hasOwnProperty.call(e,"barycenter")})),i=o.lhs,u=fn(o.rhs,(function(e){return-e.i})),a=[],d=0,c=0,h=0;i.sort((t=!!n,function(e,n){return e.barycentern.barycenter?1:t?n.i-e.i:e.i-n.i})),h=An(a,u,h),r.A(i,(function(e){h+=e.vs.length,a.push(e.vs),d+=e.barycenter*e.weight,c+=e.weight,h=An(a,u,h)}));var f={vs:s.A(a)};return c&&(f.barycenter=d/c,f.weight=c),f}function An(e,n,t){for(var r;n.length&&(r=D.A(n)).i<=t;)n.pop(),e.push(r.vs),t++;return t}function wn(e,n,t,o){var i=e.children(n),u=e.node(n),a=u?u.borderLeft:void 0,c=u?u.borderRight:void 0,h={};a&&(i=Ae.A(i,(function(e){return e!==a&&e!==c})));var f=function(e,n){return d.A(n,(function(n){var t=e.inEdges(n);if(t.length){var r=Je.A(t,(function(n,t){var r=e.edge(t),o=e.node(t.v);return{sum:n.sum+r.weight*o.order,weight:n.weight+r.weight}}),{sum:0,weight:0});return{v:n,barycenter:r.sum/r.weight,weight:r.weight}}return{v:n}}))}(e,i);r.A(f,(function(n){if(e.children(n.v).length){var r=wn(e,n.v,t,o);h[n.v]=r,Object.prototype.hasOwnProperty.call(r,"barycenter")&&(i=n,u=r,q.A(i.barycenter)?(i.barycenter=u.barycenter,i.weight=u.weight):(i.barycenter=(i.barycenter*i.weight+u.barycenter*u.weight)/(i.weight+u.weight),i.weight+=u.weight))}var i,u}));var l=gn(f,t);!function(e,n){r.A(e,(function(e){e.vs=s.A(e.vs.map((function(e){return n[e]?n[e].vs:e})))}))}(l,h);var v=pn(l,o);if(a&&(v.vs=s.A([a,v.vs,c]),e.predecessors(a).length)){var g=e.node(e.predecessors(a)[0]),p=e.node(e.predecessors(c)[0]);Object.prototype.hasOwnProperty.call(v,"barycenter")||(v.barycenter=0,v.weight=0),v.barycenter=(v.barycenter*v.weight+g.order+p.order)/(v.weight+2),v.weight+=2}return v}function bn(e){var n=W(e),t=mn(e,g(1,n+1),"inEdges"),o=mn(e,g(n-1,-1,-1),"outEdges"),i=function(e){var n={},t=Ae.A(e.nodes(),(function(n){return!e.children(n).length})),o=F(d.A(t,(function(n){return e.node(n).rank}))),i=d.A(g(o+1),(function(){return[]})),u=fn(t,(function(n){return e.node(n).rank}));return r.A(u,(function t(o){if(!z.A(n,o)){n[o]=!0;var u=e.node(o);i[u.rank].push(o),r.A(e.successors(o),t)}})),i}(e);_n(e,i);for(var u,a=Number.POSITIVE_INFINITY,s=0,c=0;c<4;++s,++c){yn(s%2?t:o,s%4>=2);var h=ln(e,i=Q(e));hs||d>n[o].lim));i=o,o=r;for(;(o=e.parent(o))!==i;)a.push(o);return{path:u.concat(a.reverse()),lca:i}}(e,n,o.v,o.w),u=i.path,a=i.lca,s=0,d=u[s],c=!0;t!==o.w;){if(r=e.node(t),c){for(;(d=u[s])!==a&&e.node(d).maxRankt){var r=n;n=t,t=r}Object.prototype.hasOwnProperty.call(e,n)||Object.defineProperty(e,n,{enumerable:!0,configurable:!0,value:{},writable:!0});var o=e[n];Object.defineProperty(o,t,{enumerable:!0,configurable:!0,value:!0,writable:!0})}function In(e,n,t){if(n>t){var r=n;n=t,t=r}return!!e[n]&&Object.prototype.hasOwnProperty.call(e[n],t)}function Ln(e,n,t,o,i){var u={},a=function(e,n,t,o){var i=new p.T,u=e.graph(),a=function(e,n,t){return function(r,o,i){var u,a=r.node(o),s=r.node(i),d=0;if(d+=a.width/2,Object.prototype.hasOwnProperty.call(a,"labelpos"))switch(a.labelpos.toLowerCase()){case"l":u=-a.width/2;break;case"r":u=a.width/2}if(u&&(d+=t?u:-u),u=0,d+=(a.dummy?n:e)/2,d+=(s.dummy?n:e)/2,d+=s.width/2,Object.prototype.hasOwnProperty.call(s,"labelpos"))switch(s.labelpos.toLowerCase()){case"l":u=s.width/2;break;case"r":u=-s.width/2}return u&&(d+=t?u:-u),u=0,d}}(u.nodesep,u.edgesep,o);return r.A(n,(function(n){var o;r.A(n,(function(n){var r=t[n];if(i.setNode(r),o){var u=t[o],s=i.edge(u,r);i.setEdge(u,r,Math.max(a(e,n,o),s||0))}o=n}))})),i}(e,n,t,i),s=i?"borderLeft":"borderRight";function d(e,n){for(var t=a.nodes(),r=t.pop(),o={};r;)o[r]?e(r):(o[r]=!0,t.push(r),t=t.concat(n(r))),r=t.pop()}return d((function(e){u[e]=a.inEdges(e).reduce((function(e,n){return Math.max(e,u[n.v]+a.edge(n))}),0)}),a.predecessors.bind(a)),d((function(n){var t=a.outEdges(n).reduce((function(e,n){return Math.min(e,u[n.w]-a.edge(n))}),Number.POSITIVE_INFINITY),r=e.node(n);t!==Number.POSITIVE_INFINITY&&r.borderType!==s&&(u[n]=Math.max(u[n],t))}),a.successors.bind(a)),r.A(o,(function(e){u[e]=u[t[e]]})),u}function Tn(e){var n,t=Q(e),o=x.A(jn(e,t),function(e,n){var t={};function o(n,o,i,u,a){var s;r.A(g(o,i),(function(o){s=n[o],e.node(s).dummy&&r.A(e.predecessors(s),(function(n){var r=e.node(n);r.dummy&&(r.ordera)&&Cn(t,n,s)}))}))}return Je.A(n,(function(n,t){var i,u=-1,a=0;return r.A(t,(function(r,s){if("border"===e.node(r).dummy){var d=e.predecessors(r);d.length&&(i=e.node(d[0]).order,o(t,a,s,u,i),a=s,u=i)}o(t,a,t.length,i,n.length)})),t})),t}(e,t)),i={};r.A(["u","d"],(function(u){n="u"===u?t:$e.A(t).reverse(),r.A(["l","r"],(function(t){"r"===t&&(n=d.A(n,(function(e){return $e.A(e).reverse()})));var a=("u"===u?e.predecessors:e.successors).bind(e),s=function(e,n,t,o){var i={},u={},a={};return r.A(n,(function(e){r.A(e,(function(e,n){i[e]=e,u[e]=e,a[e]=n}))})),r.A(n,(function(e){var n=-1;r.A(e,(function(e){var r=o(e);if(r.length){r=fn(r,(function(e){return a[e]}));for(var s=(r.length-1)/2,d=Math.floor(s),c=Math.ceil(s);d<=c;++d){var h=r[d];u[e]===e&&n{var n=t(" buildLayoutGraph",(()=>function(e){var n=new p.T({multigraph:!0,compound:!0}),t=$n(e.graph());return n.setGraph(x.A({},Dn,zn(t,Fn),I(t,Sn))),r.A(e.nodes(),(function(t){var r=$n(e.node(t));n.setNode(t,L.A(zn(r,Gn),Vn)),n.setParent(t,e.parent(t))})),r.A(e.edges(),(function(t){var r=$n(e.edge(t));n.setEdge(t,x.A({},qn,zn(r,Bn),I(r,Yn)))})),n}(e)));t(" runLayout",(()=>function(e,n){n(" makeSpaceForEdgeLabels",(()=>function(e){var n=e.graph();n.ranksep/=2,r.A(e.edges(),(function(t){var r=e.edge(t);r.minlen*=2,"c"!==r.labelpos.toLowerCase()&&("TB"===n.rankdir||"BT"===n.rankdir?r.width+=r.labeloffset:r.height+=r.labeloffset)}))}(e))),n(" removeSelfEdges",(()=>function(e){r.A(e.edges(),(function(n){if(n.v===n.w){var t=e.node(n.v);t.selfEdges||(t.selfEdges=[]),t.selfEdges.push({e:n,label:e.edge(n)}),e.removeEdge(n)}}))}(e))),n(" acyclic",(()=>O(e))),n(" nestingGraph.run",(()=>Ze(e))),n(" rank",(()=>qe(H(e)))),n(" injectEdgeLabelProxies",(()=>function(e){r.A(e.edges(),(function(n){var t=e.edge(n);if(t.width&&t.height){var r=e.node(n.v),o={rank:(e.node(n.w).rank-r.rank)/2+r.rank,e:n};Z(e,"edge-proxy",o,"_ep")}}))}(e))),n(" removeEmptyRanks",(()=>function(e){var n=Y.A(d.A(e.nodes(),(function(n){return e.node(n).rank}))),t=[];r.A(e.nodes(),(function(r){var o=e.node(r).rank-n;t[o]||(t[o]=[]),t[o].push(r)}));var o=0,i=e.graph().nodeRankFactor;r.A(t,(function(n,t){q.A(n)&&t%i!=0?--o:o&&r.A(n,(function(n){e.node(n).rank+=o}))}))}(e))),n(" nestingGraph.cleanup",(()=>function(e){var n=e.graph();e.removeNode(n.nestingRoot),delete n.nestingRoot,r.A(e.edges(),(function(n){e.edge(n).nestingEdge&&e.removeEdge(n)}))}(e))),n(" normalizeRanks",(()=>function(e){var n=Y.A(d.A(e.nodes(),(function(n){return e.node(n).rank})));r.A(e.nodes(),(function(t){var r=e.node(t);z.A(r,"rank")&&(r.rank-=n)}))}(e))),n(" assignRankMinMax",(()=>function(e){var n=0;r.A(e.nodes(),(function(t){var r=e.node(t);r.borderTop&&(r.minRank=e.node(r.borderTop).rank,r.maxRank=e.node(r.borderBottom).rank,n=F(n,r.maxRank))})),e.graph().maxRank=n}(e))),n(" removeEdgeLabelProxies",(()=>function(e){r.A(e.nodes(),(function(n){var t=e.node(n);"edge-proxy"===t.dummy&&(e.edge(t.e).labelRank=t.rank,e.removeNode(n))}))}(e))),n(" normalize.run",(()=>ae(e))),n(" parentDummyChains",(()=>En(e))),n(" addBorderSegments",(()=>function(e){r.A(e.children(),(function n(t){var o=e.children(t),i=e.node(t);if(o.length&&r.A(o,n),Object.prototype.hasOwnProperty.call(i,"minRank")){i.borderLeft=[],i.borderRight=[];for(var u=i.minRank,a=i.maxRank+1;ubn(e))),n(" insertSelfEdges",(()=>function(e){var n=Q(e);r.A(n,(function(n){var t=0;r.A(n,(function(n,o){var i=e.node(n);i.order=o+t,r.A(i.selfEdges,(function(n){Z(e,"selfedge",{width:n.label.width,height:n.label.height,rank:i.rank,order:o+ ++t,e:n.e,label:n.label},"_se")})),delete i.selfEdges}))}))}(e))),n(" adjustCoordinateSystem",(()=>function(e){var n=e.graph().rankdir.toLowerCase();"lr"!==n&&"rl"!==n||re(e)}(e))),n(" position",(()=>Mn(e))),n(" positionSelfEdges",(()=>function(e){r.A(e.nodes(),(function(n){var t=e.node(n);if("selfedge"===t.dummy){var r=e.node(t.e.v),o=r.x+r.width/2,i=r.y,u=t.x-o,a=r.height/2;e.setEdge(t.e,t.label),e.removeNode(n),t.label.points=[{x:o+2*u/3,y:i-a},{x:o+5*u/6,y:i-a},{x:o+u,y:i},{x:o+5*u/6,y:i+a},{x:o+2*u/3,y:i+a}],t.label.x=t.x,t.label.y=t.y}}))}(e))),n(" removeBorderNodes",(()=>function(e){r.A(e.nodes(),(function(n){if(e.children(n).length){var t=e.node(n),r=e.node(t.borderTop),o=e.node(t.borderBottom),i=e.node(D.A(t.borderLeft)),u=e.node(D.A(t.borderRight));t.width=Math.abs(u.x-i.x),t.height=Math.abs(o.y-r.y),t.x=i.x+t.width/2,t.y=r.y+t.height/2}})),r.A(e.nodes(),(function(n){"border"===e.node(n).dummy&&e.removeNode(n)}))}(e))),n(" normalize.undo",(()=>function(e){r.A(e.graph().dummyChains,(function(n){var t,r=e.node(n),o=r.edgeLabel;for(e.setEdge(r.edgeObj,o);r.dummy;)t=e.successors(n)[0],e.removeNode(n),o.points.push({x:r.x,y:r.y}),"edge-label"===r.dummy&&(o.x=r.x,o.y=r.y,o.width=r.width,o.height=r.height),n=t,r=e.node(n)}))}(e))),n(" fixupEdgeLabelCoords",(()=>function(e){r.A(e.edges(),(function(n){var t=e.edge(n);if(Object.prototype.hasOwnProperty.call(t,"x"))switch("l"!==t.labelpos&&"r"!==t.labelpos||(t.width-=t.labeloffset),t.labelpos){case"l":t.x-=t.width/2+t.labeloffset;break;case"r":t.x+=t.width/2+t.labeloffset}}))}(e))),n(" undoCoordinateSystem",(()=>te(e))),n(" translateGraph",(()=>function(e){var n=Number.POSITIVE_INFINITY,t=0,o=Number.POSITIVE_INFINITY,i=0,u=e.graph(),a=u.marginx||0,s=u.marginy||0;function d(e){var r=e.x,u=e.y,a=e.width,s=e.height;n=Math.min(n,r-a/2),t=Math.max(t,r+a/2),o=Math.min(o,u-s/2),i=Math.max(i,u+s/2)}r.A(e.nodes(),(function(n){d(e.node(n))})),r.A(e.edges(),(function(n){var t=e.edge(n);Object.prototype.hasOwnProperty.call(t,"x")&&d(t)})),n-=a,o-=s,r.A(e.nodes(),(function(t){var r=e.node(t);r.x-=n,r.y-=o})),r.A(e.edges(),(function(t){var i=e.edge(t);r.A(i.points,(function(e){e.x-=n,e.y-=o})),Object.prototype.hasOwnProperty.call(i,"x")&&(i.x-=n),Object.prototype.hasOwnProperty.call(i,"y")&&(i.y-=o)})),u.width=t-n+a,u.height=i-o+s}(e))),n(" assignNodeIntersects",(()=>function(e){r.A(e.edges(),(function(n){var t,r,o=e.edge(n),i=e.node(n.v),u=e.node(n.w);o.points?(t=o.points[0],r=o.points[o.points.length-1]):(o.points=[],t=u,r=i),o.points.unshift(K(i,t)),o.points.push(K(u,r))}))}(e))),n(" reversePoints",(()=>function(e){r.A(e.edges(),(function(n){var t=e.edge(n);t.reversed&&t.points.reverse()}))}(e))),n(" acyclic.undo",(()=>function(e){r.A(e.edges(),(function(n){var t=e.edge(n);if(t.reversed){e.removeEdge(n);var r=t.forwardName;delete t.reversed,delete t.forwardName,e.setEdge(n.w,n.v,t,r)}}))}(e)))}(n,t))),t(" updateInputGraph",(()=>function(e,n){r.A(e.nodes(),(function(t){var r=e.node(t),o=n.node(t);r&&(r.x=o.x,r.y=o.y,n.children(t).length&&(r.width=o.width,r.height=o.height))})),r.A(e.edges(),(function(t){var r=e.edge(t),o=n.edge(t);r.points=o.points,Object.prototype.hasOwnProperty.call(o,"x")&&(r.x=o.x,r.y=o.y)})),e.graph().width=n.graph().width,e.graph().height=n.graph().height}(e,n)))}))}var Fn=["nodesep","edgesep","ranksep","marginx","marginy"],Dn={ranksep:50,edgesep:20,nodesep:50,rankdir:"tb"},Sn=["acyclicer","ranker","rankdir","align"],Gn=["width","height"],Vn={width:0,height:0},Bn=["minlen","weight","width","height","labeloffset"],qn={minlen:1,weight:1,width:0,height:0,labeloffset:10,labelpos:"r"},Yn=["labelpos"];function zn(e,n){return B(I(e,n),Number)}function $n(e){var n={};return r.A(e,(function(e,t){n[t.toLowerCase()]=e})),n}},37981:(e,n,t)=>{t.d(n,{T:()=>m});var r=t(39142),o=t(89610),i=t(27422),u=t(94092),a=t(66401),s=t(8058),d=t(69592),c=t(13588),h=t(24326),f=t(99902),l=t(53533);const v=(0,h.A)((function(e){return(0,f.A)((0,c.A)(e,1,l.A,!0))}));var g=t(38207),p=t(89463),A="\0",w="\0",b="\x01";class m{constructor(e={}){this._isDirected=!Object.prototype.hasOwnProperty.call(e,"directed")||e.directed,this._isMultigraph=!!Object.prototype.hasOwnProperty.call(e,"multigraph")&&e.multigraph,this._isCompound=!!Object.prototype.hasOwnProperty.call(e,"compound")&&e.compound,this._label=void 0,this._defaultNodeLabelFn=r.A(void 0),this._defaultEdgeLabelFn=r.A(void 0),this._nodes={},this._isCompound&&(this._parent={},this._children={},this._children[w]={}),this._in={},this._preds={},this._out={},this._sucs={},this._edgeObjs={},this._edgeLabels={}}isDirected(){return this._isDirected}isMultigraph(){return this._isMultigraph}isCompound(){return this._isCompound}setGraph(e){return this._label=e,this}graph(){return this._label}setDefaultNodeLabel(e){return o.A(e)||(e=r.A(e)),this._defaultNodeLabelFn=e,this}nodeCount(){return this._nodeCount}nodes(){return i.A(this._nodes)}sources(){var e=this;return u.A(this.nodes(),(function(n){return a.A(e._in[n])}))}sinks(){var e=this;return u.A(this.nodes(),(function(n){return a.A(e._out[n])}))}setNodes(e,n){var t=arguments,r=this;return s.A(e,(function(e){t.length>1?r.setNode(e,n):r.setNode(e)})),this}setNode(e,n){return Object.prototype.hasOwnProperty.call(this._nodes,e)?(arguments.length>1&&(this._nodes[e]=n),this):(this._nodes[e]=arguments.length>1?n:this._defaultNodeLabelFn(e),this._isCompound&&(this._parent[e]=w,this._children[e]={},this._children[w][e]=!0),this._in[e]={},this._preds[e]={},this._out[e]={},this._sucs[e]={},++this._nodeCount,this)}node(e){return this._nodes[e]}hasNode(e){return Object.prototype.hasOwnProperty.call(this._nodes,e)}removeNode(e){if(Object.prototype.hasOwnProperty.call(this._nodes,e)){var n=e=>this.removeEdge(this._edgeObjs[e]);delete this._nodes[e],this._isCompound&&(this._removeFromParentsChildList(e),delete this._parent[e],s.A(this.children(e),(e=>{this.setParent(e)})),delete this._children[e]),s.A(i.A(this._in[e]),n),delete this._in[e],delete this._preds[e],s.A(i.A(this._out[e]),n),delete this._out[e],delete this._sucs[e],--this._nodeCount}return this}setParent(e,n){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(d.A(n))n=w;else{for(var t=n+="";!d.A(t);t=this.parent(t))if(t===e)throw new Error("Setting "+n+" as parent of "+e+" would create a cycle");this.setNode(n)}return this.setNode(e),this._removeFromParentsChildList(e),this._parent[e]=n,this._children[n][e]=!0,this}_removeFromParentsChildList(e){delete this._children[this._parent[e]][e]}parent(e){if(this._isCompound){var n=this._parent[e];if(n!==w)return n}}children(e){if(d.A(e)&&(e=w),this._isCompound){var n=this._children[e];if(n)return i.A(n)}else{if(e===w)return this.nodes();if(this.hasNode(e))return[]}}predecessors(e){var n=this._preds[e];if(n)return i.A(n)}successors(e){var n=this._sucs[e];if(n)return i.A(n)}neighbors(e){var n=this.predecessors(e);if(n)return v(n,this.successors(e))}isLeaf(e){return 0===(this.isDirected()?this.successors(e):this.neighbors(e)).length}filterNodes(e){var n=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});n.setGraph(this.graph());var t=this;s.A(this._nodes,(function(t,r){e(r)&&n.setNode(r,t)})),s.A(this._edgeObjs,(function(e){n.hasNode(e.v)&&n.hasNode(e.w)&&n.setEdge(e,t.edge(e))}));var r={};function o(e){var i=t.parent(e);return void 0===i||n.hasNode(i)?(r[e]=i,i):i in r?r[i]:o(i)}return this._isCompound&&s.A(n.nodes(),(function(e){n.setParent(e,o(e))})),n}setDefaultEdgeLabel(e){return o.A(e)||(e=r.A(e)),this._defaultEdgeLabelFn=e,this}edgeCount(){return this._edgeCount}edges(){return g.A(this._edgeObjs)}setPath(e,n){var t=this,r=arguments;return p.A(e,(function(e,o){return r.length>1?t.setEdge(e,o,n):t.setEdge(e,o),o})),this}setEdge(){var e,n,t,r,o=!1,i=arguments[0];"object"==typeof i&&null!==i&&"v"in i?(e=i.v,n=i.w,t=i.name,2===arguments.length&&(r=arguments[1],o=!0)):(e=i,n=arguments[1],t=arguments[3],arguments.length>2&&(r=arguments[2],o=!0)),e=""+e,n=""+n,d.A(t)||(t=""+t);var u=E(this._isDirected,e,n,t);if(Object.prototype.hasOwnProperty.call(this._edgeLabels,u))return o&&(this._edgeLabels[u]=r),this;if(!d.A(t)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(e),this.setNode(n),this._edgeLabels[u]=o?r:this._defaultEdgeLabelFn(e,n,t);var a=function(e,n,t,r){var o=""+n,i=""+t;if(!e&&o>i){var u=o;o=i,i=u}var a={v:o,w:i};r&&(a.name=r);return a}(this._isDirected,e,n,t);return e=a.v,n=a.w,Object.freeze(a),this._edgeObjs[u]=a,y(this._preds[n],e),y(this._sucs[e],n),this._in[n][u]=a,this._out[e][u]=a,this._edgeCount++,this}edge(e,n,t){var r=1===arguments.length?O(this._isDirected,arguments[0]):E(this._isDirected,e,n,t);return this._edgeLabels[r]}hasEdge(e,n,t){var r=1===arguments.length?O(this._isDirected,arguments[0]):E(this._isDirected,e,n,t);return Object.prototype.hasOwnProperty.call(this._edgeLabels,r)}removeEdge(e,n,t){var r=1===arguments.length?O(this._isDirected,arguments[0]):E(this._isDirected,e,n,t),o=this._edgeObjs[r];return o&&(e=o.v,n=o.w,delete this._edgeLabels[r],delete this._edgeObjs[r],_(this._preds[n],e),_(this._sucs[e],n),delete this._in[n][r],delete this._out[e][r],this._edgeCount--),this}inEdges(e,n){var t=this._in[e];if(t){var r=g.A(t);return n?u.A(r,(function(e){return e.v===n})):r}}outEdges(e,n){var t=this._out[e];if(t){var r=g.A(t);return n?u.A(r,(function(e){return e.w===n})):r}}nodeEdges(e,n){var t=this.inEdges(e,n);if(t)return t.concat(this.outEdges(e,n))}}function y(e,n){e[n]?e[n]++:e[n]=1}function _(e,n){--e[n]||delete e[n]}function E(e,n,t,r){var o=""+n,i=""+t;if(!e&&o>i){var u=o;o=i,i=u}return o+b+i+b+(d.A(r)?A:r)}function O(e,n){return E(e,n.v,n.w,n.name)}m.prototype._nodeCount=0,m.prototype._edgeCount=0},697:(e,n,t)=>{t.d(n,{T:()=>r.T});var r=t(37981)},72559:(e,n,t)=>{t.d(n,{A:()=>o});var r=t(61882);const o=function(e,n,t){for(var o=-1,i=e.length;++o{t.d(n,{A:()=>r});const r=function(e,n){return e{t.d(n,{A:()=>i});var r=t(6240),o=t(38446);const i=function(e,n){var t=-1,i=(0,o.A)(e)?Array(e.length):[];return(0,r.A)(e,(function(e,r,o){i[++t]=n(e,r,o)})),i}},99354:(e,n,t)=>{t.d(n,{A:()=>c});var r=t(66318),o=t(52851),i=t(7819),u=t(25353),a=t(23149),s=t(30901);const d=function(e,n,t,r){if(!(0,a.A)(e))return e;for(var d=-1,c=(n=(0,i.A)(n,e)).length,h=c-1,f=e;null!=f&&++d{t.d(n,{A:()=>d});var r=t(24326),o=t(66984),i=t(6832),u=t(55615),a=Object.prototype,s=a.hasOwnProperty;const d=(0,r.A)((function(e,n){e=Object(e);var t=-1,r=n.length,d=r>2?n[2]:void 0;for(d&&(0,i.A)(n[0],n[1],d)&&(r=1);++t{t.d(n,{A:()=>c});var r=t(23958),o=t(38446),i=t(27422);const u=function(e){return function(n,t,u){var a=Object(n);if(!(0,o.A)(n)){var s=(0,r.A)(t,3);n=(0,i.A)(n),t=function(e){return s(a[e],e,a)}}var d=e(n,t,u);return d>-1?a[s?n[d]:d]:void 0}};var a=t(25707),s=t(18593),d=Math.max;const c=u((function(e,n,t){var o=null==e?0:e.length;if(!o)return-1;var i=null==t?0:(0,s.A)(t);return i<0&&(i=d(o+i,0)),(0,a.A)(e,(0,r.A)(n,3),i)}))},34098:(e,n,t)=>{t.d(n,{A:()=>o});var r=t(13588);const o=function(e){return(null==e?0:e.length)?(0,r.A)(e,1):[]}},48585:(e,n,t)=>{t.d(n,{A:()=>u});var r=Object.prototype.hasOwnProperty;const o=function(e,n){return null!=e&&r.call(e,n)};var i=t(85054);const u=function(e,n){return null!=e&&(0,i.A)(e,n,o)}},9703:(e,n,t)=>{t.d(n,{A:()=>u});var r=t(88496),o=t(92049),i=t(53098);const u=function(e){return"string"==typeof e||!(0,o.A)(e)&&(0,i.A)(e)&&"[object String]"==(0,r.A)(e)}},26666:(e,n,t)=>{t.d(n,{A:()=>r});const r=function(e){var n=null==e?0:e.length;return n?e[n-1]:void 0}},74722:(e,n,t)=>{t.d(n,{A:()=>a});var r=t(45572),o=t(23958),i=t(52568),u=t(92049);const a=function(e,n){return((0,u.A)(e)?r.A:i.A)(e,(0,o.A)(n,3))}},86452:(e,n,t)=>{t.d(n,{A:()=>u});var r=t(72559),o=t(36224),i=t(29008);const u=function(e){return e&&e.length?(0,r.A)(e,i.A,o.A):void 0}},74342:(e,n,t)=>{t.d(n,{A:()=>g});var r=/\s/;const o=function(e){for(var n=e.length;n--&&r.test(e.charAt(n)););return n};var i=/^\s+/;const u=function(e){return e?e.slice(0,o(e)+1).replace(i,""):e};var a=t(23149),s=t(61882),d=/^[-+]0x[0-9a-f]+$/i,c=/^0b[01]+$/i,h=/^0o[0-7]+$/i,f=parseInt;const l=function(e){if("number"==typeof e)return e;if((0,s.A)(e))return NaN;if((0,a.A)(e)){var n="function"==typeof e.valueOf?e.valueOf():e;e=(0,a.A)(n)?n+"":n}if("string"!=typeof e)return 0===e?e:+e;e=u(e);var t=c.test(e);return t||h.test(e)?f(e.slice(2),t?2:8):d.test(e)?NaN:+e};var v=1/0;const g=function(e){return e?(e=l(e))===v||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0}},18593:(e,n,t)=>{t.d(n,{A:()=>o});var r=t(74342);const o=function(e){var n=(0,r.A)(e),t=n%1;return n==n?t?n-t:n:0}}}]); \ No newline at end of file diff --git a/assets/js/23926e4f.4ae49a37.js b/assets/js/23926e4f.4ae49a37.js new file mode 100644 index 00000000..3fcaeaef --- /dev/null +++ b/assets/js/23926e4f.4ae49a37.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4578],{67249:e=>{e.exports=JSON.parse('{"tag":{"label":"Live Code Hints","permalink":"/blog/tags/live-code-hints","allTagsPath":"/blog/tags","count":3,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/live-code-hints","page":1,"postsPerPage":10,"totalPages":1,"totalCount":3,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]); \ No newline at end of file diff --git a/assets/js/24242421.f71b9fc4.js b/assets/js/24242421.f71b9fc4.js new file mode 100644 index 00000000..6ae630cd --- /dev/null +++ b/assets/js/24242421.f71b9fc4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[114],{65025:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>h,contentTitle:()=>a,default:()=>c,frontMatter:()=>o,metadata:()=>i,toc:()=>d});const i=JSON.parse('{"id":"API-Reference/editor/CodeHintManager","title":"CodeHintManager","description":"Import :","source":"@site/api/API-Reference/editor/CodeHintManager.md","sourceDirName":"API-Reference/editor","slug":"/API-Reference/editor/CodeHintManager","permalink":"/api/API-Reference/editor/CodeHintManager","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"Editor","permalink":"/api/API-Reference/editor/"},"next":{"title":"EditorManager","permalink":"/api/API-Reference/editor/EditorManager"}}');var r=t(74848),s=t(28453);const o={},a=void 0,h={},d=[{value:"Import :",id:"import-",level:3},{value:"CodeHintManager",id:"codehintmanager",level:2},{value:"CodeHintManager.registerHintProvider(provider, languageIds, priority)",id:"codehintmanagerregisterhintproviderprovider-languageids-priority",level:3},{value:"CodeHintManager.hasValidExclusion(exclusion, textAfterCursor) \u21d2 boolean",id:"codehintmanagerhasvalidexclusionexclusion-textaftercursor--boolean",level:3},{value:"CodeHintManager.isOpen() \u21d2 boolean",id:"codehintmanagerisopen--boolean",level:3},{value:"CodeHintManager.showHintsAtTop(handler)",id:"codehintmanagershowhintsattophandler",level:3},{value:"CodeHintManager.clearHintsAtTop()",id:"codehintmanagerclearhintsattop",level:3}];function l(e){const n={a:"a",br:"br",code:"code",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"import-",children:"Import :"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-js",children:'const CodeHintManager = brackets.getModule("editor/CodeHintManager")\n'})}),"\n",(0,r.jsx)("a",{name:"module_CodeHintManager"}),"\n",(0,r.jsx)(n.h2,{id:"codehintmanager",children:"CodeHintManager"}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"CodeHintManager Overview:"})}),"\n",(0,r.jsx)(n.p,{children:"The CodeHintManager mediates the interaction between the editor and a\ncollection of hint providers. If hints are requested explicitly by the\nuser, then the providers registered for the current language are queried\nfor their ability to provide hints in order of descending priority by\nway their hasHints methods. Character insertions may also constitute an\nimplicit request for hints; consequently, providers for the current\nlanguage are also queried on character insertion for both their ability to\nprovide hints and also for the suitability of providing implicit hints\nin the given editor context."}),"\n",(0,r.jsx)(n.p,{children:"Once a provider responds affirmatively to a request for hints, the\nmanager begins a hinting session with that provider, begins to query\nthat provider for hints by way of its getHints method, and opens the\nhint list window. The hint list is kept open for the duration of the\ncurrent session. The manager maintains the session until either:"}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsx)(n.li,{children:"the provider gives a null response to a request for hints;"}),"\n",(0,r.jsx)(n.li,{children:"a deferred response to getHints fails to resolve;"}),"\n",(0,r.jsx)(n.li,{children:"the user explicitly dismisses the hint list window;"}),"\n",(0,r.jsx)(n.li,{children:"the editor is closed or becomes inactive; or"}),"\n",(0,r.jsx)(n.li,{children:'the editor undergoes a "complex" change, e.g., a multi-character\ninsertion, deletion or navigation.'}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"Single-character insertions, deletions or navigations may not\ninvalidate the current session; in which case, each such change\nprecipitates a successive call to getHints."}),"\n",(0,r.jsx)(n.p,{children:"If the user selects a hint from the rendered hint list then the\nprovider is responsible for inserting the hint into the editor context\nfor the current session by way of its insertHint method. The provider\nmay use the return value of insertHint to request that an additional\nexplicit hint request be triggered, potentially beginning a new\nsession."}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"CodeHintProvider Overview:"})}),"\n",(0,r.jsx)(n.p,{children:"A code hint provider should implement the following three functions:"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-js",children:"- `CodeHintProvider.hasHints(editor, implicitChar)`\n- `CodeHintProvider.getHints(implicitChar)`\n- `CodeHintProvider.insertHint(hint)`\n"})}),"\n",(0,r.jsx)(n.p,{children:"The behavior of these three functions is described in detail below."}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-js",children:"__CodeHintProvider.hasHints(editor, implicitChar)__\n"})}),"\n",(0,r.jsx)(n.p,{children:"The method by which a provider indicates intent to provide hints for a\ngiven editor. The manager calls this method both when hints are\nexplicitly requested (via, e.g., Ctrl-Space) and when they may be\nimplicitly requested as a result of character insertion in the editor.\nIf the provider responds negatively then the manager may query other\nproviders for hints. Otherwise, a new hinting session begins with this\nprovider, during which the manager may repeatedly query the provider\nfor hints via the getHints method. Note that no other providers will be\nqueried until the hinting session ends."}),"\n",(0,r.jsx)(n.p,{children:"The implicitChar parameter is used to determine whether the hinting\nrequest is explicit or implicit. If the string is null then hints were\nexplicitly requested and the provider should reply based on whether it\nis possible to return hints for the given editor context. Otherwise,\nthe string contains just the last character inserted into the editor's\ndocument and the request for hints is implicit. In this case, the\nprovider should determine whether it is both possible and appropriate\nto show hints. Because implicit hints can be triggered by every\ncharacter insertion, hasHints may be called frequently; consequently,\nthe provider should endeavor to return a value as quickly as possible."}),"\n",(0,r.jsx)(n.p,{children:"Because calls to hasHints imply that a hinting session is about to\nbegin, a provider may wish to clean up cached data from previous\nsessions in this method. Similarly, if the provider returns true, it\nmay wish to prepare to cache data suitable for the current session. In\nparticular, it should keep a reference to the editor object so that it\ncan access the editor in future calls to getHints and insertHints."}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-js",children:"param {Editor} editor\n"})}),"\n",(0,r.jsx)(n.p,{children:"A non-null editor object for the active window."}),"\n",(0,r.jsxs)(n.p,{children:["param ",String," implicitChar\nEither null, if the hinting request was explicit, or a single character\nthat represents the last insertion and that indicates an implicit\nhinting request."]}),"\n",(0,r.jsxs)(n.p,{children:["return ",Boolean,"\nDetermines whether the current provider is able to provide hints for\nthe given editor context and, in case implicitChar is non- null,\nwhether it is appropriate to do so."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-js",children:"__CodeHintProvider.getHints(implicitChar)__\n"})}),"\n",(0,r.jsx)(n.p,{children:"The method by which a provider provides hints for the editor context\nassociated with the current session. The getHints method is called only\nif the provider asserted its willingness to provide hints in an earlier\ncall to hasHints. The provider may return null or false, which indicates\nthat the manager should end the current hinting session and close the hint\nlist window; or true, which indicates that the manager should end the\ncurrent hinting session but immediately attempt to begin a new hinting\nsession by querying registered providers. Otherwise, the provider should\nreturn a response object that contains the following properties:"}),"\n",(0,r.jsxs)(n.ol,{children:["\n",(0,r.jsx)(n.li,{children:"hints, a sorted array hints that the provider could later insert\ninto the editor;"}),"\n",(0,r.jsx)(n.li,{children:"match, a string that the manager may use to emphasize substrings of\nhints in the hint list (case-insensitive); and"}),"\n",(0,r.jsx)(n.li,{children:"selectInitial, a boolean that indicates whether or not the\nfirst hint in the list should be selected by default."}),"\n",(0,r.jsx)(n.li,{children:"handleWideResults, a boolean (or undefined) that indicates whether\nto allow result string to stretch width of display."}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"If the array of\nhints is empty, then the manager will render an empty list, but the\nhinting session will remain open and the value of the selectInitial\nproperty is irrelevant."}),"\n",(0,r.jsx)(n.p,{children:"Alternatively, the provider may return a jQuery.Deferred object\nthat resolves with an object with the structure described above. In\nthis case, the manager will initially render the hint list window with\na throbber and will render the actual list once the deferred object\nresolves to a response object. If a hint list has already been rendered\n(from an earlier call to getHints), then the old list will continue\nto be displayed until the new deferred has resolved."}),"\n",(0,r.jsx)(n.p,{children:"Both the manager and the provider can reject the deferred object. The\nmanager will reject the deferred if the editor changes state (e.g., the\nuser types a character) or if the hinting session ends (e.g., the user\nexplicitly closes the hints by pressing escape). The provider can use\nthis event to, e.g., abort an expensive computation. Consequently, the\nprovider may assume that getHints will not be called again until the\ndeferred object from the current call has resolved or been rejected. If\nthe provider rejects the deferred, the manager will end the hinting\nsession."}),"\n",(0,r.jsx)(n.p,{children:"The getHints method may be called by the manager repeatedly during a\nhinting session. Providers may wish to cache information for efficiency\nthat may be useful throughout these sessions. The same editor context\nwill be used throughout a session, and will only change during the\nsession as a result of single-character insertions, deletions and\ncursor navigations. The provider may assume that, throughout the\nlifetime of the session, the getHints method will be called exactly\nonce for each such editor change. Consequently, the provider may also\nassume that the document will not be changed outside of the editor\nduring a session."}),"\n",(0,r.jsxs)(n.p,{children:["param ",String," implicitChar\nEither null, if the request to update the hint list was a result of\nnavigation, or a single character that represents the last insertion."]}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-js",children:" return {jQuery.Deferred|{\n hints: Array.,\n match: string,\n selectInitial: boolean,\n handleWideResults: boolean}}\n"})}),"\n",(0,r.jsx)(n.p,{children:"Null if the provider wishes to end the hinting session. Otherwise, a\nresponse object, possibly deferred, that provides 1. a sorted array\nhints that consists either of strings or jQuery objects; 2. a string\nmatch, possibly null, that is used by the manager to emphasize\nmatching substrings when rendering the hint list; and 3. a boolean that\nindicates whether the first result, if one exists, should be selected\nby default in the hint list window. If match is non-null, then the\nhints should be strings."}),"\n",(0,r.jsx)(n.p,{children:"If the match is null, the manager will not\nattempt to emphasize any parts of the hints when rendering the hint\nlist; instead the provider may return strings or jQuery objects for\nwhich emphasis is self-contained. For example, the strings may contain\nsubstrings that wrapped in bold tags. In this way, the provider can\nchoose to let the manager handle emphasis for the simple and common case\nof prefix matching, or can provide its own emphasis if it wishes to use\na more sophisticated matching algorithm."}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-js",children:"__CodeHintProvider.insertHint(hint)__\n"})}),"\n",(0,r.jsx)(n.p,{children:"The method by which a provider inserts a hint into the editor context\nassociated with the current session. The provider may assume that the\ngiven hint was returned by the provider in some previous call in the\ncurrent session to getHints, but not necessarily the most recent call.\nAfter the insertion has been performed, the current hinting session is\nclosed. The provider should return a boolean value to indicate whether\nor not the end of the session should be immediately followed by a new\nexplicit hinting request, which may result in a new hinting session\nbeing opened with some provider, but not necessarily the current one."}),"\n",(0,r.jsxs)(n.p,{children:["param ",String," hint\nThe hint to be inserted into the editor context for the current session."]}),"\n",(0,r.jsxs)(n.p,{children:["return ",Boolean,"\nIndicates whether the manager should follow hint insertion with an\nexplicit hint request."]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.strong,{children:"CodeHintProvider.insertHintOnTab"})}),"\n",(0,r.jsxs)(n.p,{children:["type ",Boolean," insertHintOnTab\nIndicates whether the CodeHintManager should request that the provider of\nthe current session insert the currently selected hint on tab key events,\nor if instead a tab character should be inserted into the editor. If omitted,\nthe fallback behavior is determined by the CodeHintManager. The default\nbehavior is to insert a tab character, but this can be changed with the\ninsertHintOnTab Preference."]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.a,{href:"#module_CodeHintManager",children:"CodeHintManager"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#module_CodeHintManager..registerHintProvider",children:".registerHintProvider(provider, languageIds, priority)"})}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.a,{href:"#module_CodeHintManager..hasValidExclusion",children:".hasValidExclusion(exclusion, textAfterCursor)"})," \u21d2 ",(0,r.jsx)("code",{children:"boolean"})]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.a,{href:"#module_CodeHintManager..isOpen",children:".isOpen()"})," \u21d2 ",(0,r.jsx)("code",{children:"boolean"})]}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#module_CodeHintManager..showHintsAtTop",children:".showHintsAtTop(handler)"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#module_CodeHintManager..clearHintsAtTop",children:".clearHintsAtTop()"})}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)("a",{name:"module_CodeHintManager..registerHintProvider"}),"\n",(0,r.jsx)(n.h3,{id:"codehintmanagerregisterhintproviderprovider-languageids-priority",children:"CodeHintManager.registerHintProvider(provider, languageIds, priority)"}),"\n",(0,r.jsx)(n.p,{children:"The method by which a CodeHintProvider registers its willingness to\nproviding hints for editors in a given language."}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,r.jsx)(n.a,{href:"#module_CodeHintManager",children:(0,r.jsx)("code",{children:"CodeHintManager"})})]}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Param"}),(0,r.jsx)(n.th,{children:"Type"}),(0,r.jsx)(n.th,{children:"Description"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"provider"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"CodeHintProvider"})}),(0,r.jsx)(n.td,{children:"The hint provider to be registered, described below."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"languageIds"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"Array."})}),(0,r.jsx)(n.td,{children:'The set of language ids for which the provider is capable of providing hints. If the special language id name "all" is included then the provider may be called for any language.'})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"priority"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"number"})}),(0,r.jsx)(n.td,{children:"Used to break ties among hint providers for a particular language. Providers with a higher number will be asked for hints before those with a lower priority value. Defaults to zero."})]})]})]}),"\n",(0,r.jsx)("a",{name:"module_CodeHintManager..hasValidExclusion"}),"\n",(0,r.jsxs)(n.h3,{id:"codehintmanagerhasvalidexclusionexclusion-textaftercursor--boolean",children:["CodeHintManager.hasValidExclusion(exclusion, textAfterCursor) \u21d2 ",(0,r.jsx)("code",{children:"boolean"})]}),"\n",(0,r.jsx)(n.p,{children:"Test whether the provider has an exclusion that is still the same as text after the cursor."}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,r.jsx)(n.a,{href:"#module_CodeHintManager",children:(0,r.jsx)("code",{children:"CodeHintManager"})}),(0,r.jsx)(n.br,{}),"\n",(0,r.jsx)(n.strong,{children:"Returns"}),": ",(0,r.jsx)("code",{children:"boolean"})," - true if the exclusion is not null and is exactly the same as textAfterCursor,\nfalse otherwise."]}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Param"}),(0,r.jsx)(n.th,{children:"Type"}),(0,r.jsx)(n.th,{children:"Description"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"exclusion"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"string"})}),(0,r.jsx)(n.td,{children:"Text not to be overwritten when the provider inserts the selected hint."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"textAfterCursor"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"string"})}),(0,r.jsx)(n.td,{children:"Text that is immediately after the cursor position."})]})]})]}),"\n",(0,r.jsx)("a",{name:"module_CodeHintManager..isOpen"}),"\n",(0,r.jsxs)(n.h3,{id:"codehintmanagerisopen--boolean",children:["CodeHintManager.isOpen() \u21d2 ",(0,r.jsx)("code",{children:"boolean"})]}),"\n",(0,r.jsx)(n.p,{children:"Test if a hint popup is open."}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,r.jsx)(n.a,{href:"#module_CodeHintManager",children:(0,r.jsx)("code",{children:"CodeHintManager"})}),(0,r.jsx)(n.br,{}),"\n",(0,r.jsx)(n.strong,{children:"Returns"}),": ",(0,r.jsx)("code",{children:"boolean"})," - - true if the hints are open, false otherwise."]}),"\n",(0,r.jsx)("a",{name:"module_CodeHintManager..showHintsAtTop"}),"\n",(0,r.jsx)(n.h3,{id:"codehintmanagershowhintsattophandler",children:"CodeHintManager.showHintsAtTop(handler)"}),"\n",(0,r.jsx)(n.p,{children:"Register a handler to show hints at the top of the hint list.\nThis API allows extensions to add their own hints at the top of the standard hint list."}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,r.jsx)(n.a,{href:"#module_CodeHintManager",children:(0,r.jsx)("code",{children:"CodeHintManager"})})]}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Param"}),(0,r.jsx)(n.th,{children:"Type"}),(0,r.jsx)(n.th,{children:"Description"})]})}),(0,r.jsx)(n.tbody,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"handler"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"Object"})}),(0,r.jsx)(n.td,{children:"A hint provider object with standard methods: - hasHints: function(editor, implicitChar) - returns true if hints are available - getHints: function(editor, implicitChar) - returns hint response object with hints array - insertHint: function(hint) - handles hint insertion, returns true if handled"})]})})]}),"\n",(0,r.jsx)("a",{name:"module_CodeHintManager..clearHintsAtTop"}),"\n",(0,r.jsx)(n.h3,{id:"codehintmanagerclearhintsattop",children:"CodeHintManager.clearHintsAtTop()"}),"\n",(0,r.jsx)(n.p,{children:"Unregister the hints at top handler."}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,r.jsx)(n.a,{href:"#module_CodeHintManager",children:(0,r.jsx)("code",{children:"CodeHintManager"})})]})]})}function c(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(l,{...e})}):l(e)}},28453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>a});var i=t(96540);const r={},s=i.createContext(r);function o(e){const n=i.useContext(s);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),i.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/25802b5a.f9e4a717.js b/assets/js/25802b5a.f9e4a717.js new file mode 100644 index 00000000..f31b021a --- /dev/null +++ b/assets/js/25802b5a.f9e4a717.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2722],{50257:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>p,frontMatter:()=>d,metadata:()=>t,toc:()=>h});const t=JSON.parse('{"id":"ai","title":"AI","description":"Upgrade to Phoenix Code Pro to access this feature.","source":"@site/docs/03-ai.md","sourceDirName":".","slug":"/Pro Features/ai-chat","permalink":"/docs/Pro Features/ai-chat","draft":false,"unlisted":false,"editUrl":"https://github.com/phcode-dev/docs/blob/main/docs/03-ai.md","tags":[],"version":"current","sidebarPosition":3,"frontMatter":{"title":"AI","slug":"/Pro Features/ai-chat"},"sidebar":"tutorialSidebar","previous":{"title":"Custom Live Preview Server","permalink":"/docs/Features/Live Preview/live-preview-settings"},"next":{"title":"Editing Text","permalink":"/docs/editing-text"}}');var i=s(74848),o=s(28453),r=(s(96540),s(56399));const d={title:"AI",slug:"/Pro Features/ai-chat"},a=void 0,l={},h=[{value:"What you can do",id:"what-you-can-do",level:2},{value:"Getting Started",id:"getting-started",level:2},{value:"Opening the AI Panel",id:"opening-the-ai-panel",level:2},{value:"Sending Messages",id:"sending-messages",level:2},{value:"Context",id:"context",level:3},{value:"Attachments and Screenshots",id:"attachments-and-screenshots",level:2},{value:"Permission Modes",id:"permission-modes",level:2},{value:"Approving Terminal Commands",id:"approving-terminal-commands",level:2},{value:"Reviewing Diffs",id:"reviewing-diffs",level:2},{value:"Session History",id:"session-history",level:2},{value:"Undo and Restore",id:"undo-and-restore",level:2},{value:"Settings",id:"settings",level:2},{value:"Compatible providers",id:"compatible-providers",level:3},{value:"Keyboard Shortcuts",id:"keyboard-shortcuts",level:2}];function c(e){const n={a:"a",admonition:"admonition",blockquote:"blockquote",code:"code",em:"em",h2:"h2",h3:"h3",img:"img",li:"li",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,o.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.admonition,{title:"Pro Feature",type:"info",children:(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.a,{href:"https://phcode.io/pricing",children:"Upgrade to Phoenix Code Pro"})," to access this feature."]})}),"\n",(0,i.jsx)(n.p,{children:"Phoenix Code comes with a built-in AI assistant powered by Claude Code. You can ask it to write code, fix bugs, explain files, and more. The AI can read and edit your project files, run terminal commands, take screenshots, and work alongside you as you code."}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsx)(n.p,{children:"AI is available only in desktop apps."}),"\n"]}),"\n",(0,i.jsx)(n.admonition,{type:"note",children:(0,i.jsxs)(n.p,{children:["Free users get a daily and monthly chat limit. Once you're past halfway on either limit, a usage bar appears at the top of the chat. ",(0,i.jsx)(n.a,{href:"https://phcode.io/pricing",children:"Upgrade to Phoenix Code Pro"})," for unlimited access."]})}),"\n",(0,i.jsx)(r.A,{src:"https://docs-images.phcode.dev/website/videos/ai-pro-dialog.mp4"}),"\n",(0,i.jsx)(n.h2,{id:"what-you-can-do",children:"What you can do"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:(0,i.jsx)(n.a,{href:"#permission-modes",children:"Plan, Auto-Edit, and Edit modes"})})," let you decide how much freedom the AI has. Plan mode confirms before any change, Auto-Edit applies safe edits automatically, and Edit lets you approve each action."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:(0,i.jsx)(n.a,{href:"#undo-and-restore",children:"Restore points and a visual undo timeline"})})," mean every AI change is reversible. If you don't like what it did, roll back with one click."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Live preview integration"})," \u2014 the AI can see your running app, take screenshots, click around, and verify its own work."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:(0,i.jsx)(n.a,{href:"#settings",children:"Bring your own provider"})})," \u2014 Claude from Anthropic (the default) gives the best results, or bring your own API key from any Claude Code CLI-compatible provider."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Privacy-first onboarding"})," with a clear consent dialog and a video walkthrough."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:(0,i.jsx)(n.a,{href:"#sending-messages",children:"Type while the AI is still working"})})," \u2014 your next message gets queued."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:(0,i.jsx)(n.a,{href:"#session-history",children:"Session history"})})," keeps your conversations alive across restarts."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Free-tier quotas"})," let everyone try AI; pro users get unlimited use."]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"getting-started",children:"Getting Started"}),"\n",(0,i.jsx)(n.p,{children:"AI requires the Claude Code CLI to be installed on your machine. If it's not installed, Phoenix Code shows a setup screen with the install command for your platform."}),"\n",(0,i.jsxs)(n.p,{children:["Once installed, click ",(0,i.jsx)(n.strong,{children:"Set up Claude Code"})," to log in. Phoenix Code detects when the login is complete and opens the chat panel automatically."]}),"\n",(0,i.jsx)(r.A,{src:"https://docs-images.phcode.dev/website/videos/claude-code-config.mp4"}),"\n",(0,i.jsx)(n.h2,{id:"opening-the-ai-panel",children:"Opening the AI Panel"}),"\n",(0,i.jsxs)(n.p,{children:["Click the ",(0,i.jsx)(n.strong,{children:"AI tab"})," ",(0,i.jsx)(n.em,{children:"(sparkle icon)"})," in the sidebar to open the chat panel."]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"AI tab in the sidebar",src:s(22299).A+"",title:"AI tab in the sidebar",width:"721",height:"350"})}),"\n",(0,i.jsx)(n.h2,{id:"sending-messages",children:"Sending Messages"}),"\n",(0,i.jsxs)(n.p,{children:["Type your message in the input box at the bottom and press ",(0,i.jsx)(n.code,{children:"Enter"})," to send. Press ",(0,i.jsx)(n.code,{children:"Shift + Enter"})," to add a new line."]}),"\n",(0,i.jsx)(n.p,{children:"While the AI is working, you can type your next message. It shows up as a queued message and gets sent automatically once the AI finishes its current response."}),"\n",(0,i.jsxs)(n.p,{children:["To stop the AI mid-response, click the ",(0,i.jsx)(n.strong,{children:"stop button"})," ",(0,i.jsx)(n.em,{children:"(square icon)"})," that appears next to the send button while the AI is working, or press ",(0,i.jsx)(n.code,{children:"Escape"}),"."]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Stop button",src:s(73156).A+"",title:"Stop button",width:"717",height:"227"})}),"\n",(0,i.jsx)(n.h3,{id:"context",children:"Context"}),"\n",(0,i.jsx)(n.p,{children:"Phoenix Code automatically provides context about what you're working on. Small chips appear above the input box showing:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Selection"})," - the file and line range you have selected in the editor"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Cursor"})," - your current line and file"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Live Preview"})," - if the Live Preview panel is open"]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["You can dismiss any of these by clicking the ",(0,i.jsx)(n.strong,{children:"x"})," button on the chip."]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Context chips above the input box",src:s(2879).A+"",title:"Context chips above the input box",width:"716",height:"172"})}),"\n",(0,i.jsx)(n.h2,{id:"attachments-and-screenshots",children:"Attachments and Screenshots"}),"\n",(0,i.jsxs)(n.p,{children:["Click the ",(0,i.jsx)(n.strong,{children:"paperclip button"})," to attach a file or folder. The dropdown lets you choose:"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Attach a file"})," - attach a single file. Supported image formats include PNG, JPG, GIF, WebP, and SVG. You can also attach code or document files."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Add folder as context"})," - attach an entire folder so the AI can read its contents."]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Paperclip attach dropdown",src:s(19189).A+"",title:"Paperclip attach dropdown",width:"705",height:"284"})}),"\n",(0,i.jsx)(n.p,{children:"You can also paste an image directly from your clipboard into the input box."}),"\n",(0,i.jsxs)(n.p,{children:["Click the ",(0,i.jsx)(n.strong,{children:"camera button"})," to take a screenshot and attach it. The dropdown lets you choose what to capture:"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Live Preview"})," - your Live Preview panel (if open)"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Live Preview Selection"})," - the currently selected element in Live Preview"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full Editor"})," - the entire editor window"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Select Area"})," - a custom region you select with a crop tool"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Upload from Device"})," - choose an existing image from your computer instead of taking a new screenshot"]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Camera screenshot dropdown",src:s(73912).A+"",title:"Camera screenshot dropdown",width:"711",height:"452"})}),"\n",(0,i.jsx)(n.h2,{id:"permission-modes",children:"Permission Modes"}),"\n",(0,i.jsxs)(n.p,{children:["The AI has three permission levels that control how much it can do on its own. Click the ",(0,i.jsx)(n.strong,{children:"permission label"})," at the bottom of the panel to cycle between them."]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Plan"})," - the AI proposes a plan first as a card in the chat (titled ",(0,i.jsx)(n.strong,{children:"Proposed Plan"}),"). Click the ",(0,i.jsx)(n.strong,{children:"expand icon"})," in the card header to view the plan in full screen. Then click ",(0,i.jsx)(n.strong,{children:"Approve"})," to proceed, or ",(0,i.jsx)(n.strong,{children:"Revise"})," to open an inline feedback box where you describe what should change before the AI tries again. If the AI tries to edit a file while in Plan mode, you'll see an ",(0,i.jsx)(n.strong,{children:"Allow / Stay in Plan"})," prompt; choosing ",(0,i.jsx)(n.strong,{children:"Allow"})," switches the session to Edit mode for the rest of the turn. Good for complex tasks where you want to stay in control."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Edit"})," (default) - the AI can read and edit files on its own, but asks for your approval before running terminal commands."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Full Auto"})," - the AI runs everything without pausing \u2014 file edits, terminal commands, and tool calls all execute without confirmation. The first time you turn this on in a project, Phoenix Code shows a one-time warning so you understand the risk."]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Permission mode selector",src:s(34626).A+"",title:"Permission mode selector",width:"708",height:"158"})}),"\n",(0,i.jsx)(n.h2,{id:"approving-terminal-commands",children:"Approving Terminal Commands"}),"\n",(0,i.jsxs)(n.p,{children:["In Edit mode (the default), the AI shows an ",(0,i.jsx)(n.strong,{children:"Allow / Deny"})," card before running any terminal command. The card displays the full command so you can verify it before approving. Choosing ",(0,i.jsx)(n.strong,{children:"Deny"})," lets the AI continue with the rest of its response without running it."]}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsx)(n.p,{children:"Bash confirmations are skipped in Full Auto mode."}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"reviewing-diffs",children:"Reviewing Diffs"}),"\n",(0,i.jsxs)(n.p,{children:["Every edit card shows the number of lines added and removed, along with a ",(0,i.jsx)(n.strong,{children:"Show diff"})," button that toggles a unified diff of the change inline. Click the ",(0,i.jsx)(n.strong,{children:"three-dot menu"})," on the card to:"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Expand all"})," - open every diff section on the card at once"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Collapse all"})," - hide every diff section on the card"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Always show"})," - keep diffs open by default on future edits without clicking Show diff each time"]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Edit card with the diff menu open",src:s(59453).A+"",title:"The three-dot menu on an edit card shows Expand all, Collapse all, and Always show",width:"919",height:"216"})}),"\n",(0,i.jsx)(n.h2,{id:"session-history",children:"Session History"}),"\n",(0,i.jsxs)(n.p,{children:["Every conversation is saved automatically. Click the ",(0,i.jsx)(n.strong,{children:"history dropdown"})," at the top of the panel to see your recent sessions and switch between them."]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Session history dropdown",src:s(71246).A+"",title:"Session history dropdown",width:"720",height:"350"})}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsx)(n.p,{children:"Sessions are saved per project, so each project has its own chat history."}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"undo-and-restore",children:"Undo and Restore"}),"\n",(0,i.jsxs)(n.p,{children:["Before each AI response that edits files, Phoenix Code creates a ",(0,i.jsx)(n.strong,{children:"restore point"}),". Each edit summary card has a button to revert to that point: it reads ",(0,i.jsx)(n.strong,{children:"Undo"})," on the most recent response and ",(0,i.jsx)(n.strong,{children:"Restore to this point"})," on earlier ones. Both do the same thing: they roll your files back to the saved state."]}),"\n",(0,i.jsx)(n.p,{children:"The first time you undo or restore in a session, Phoenix Code shows a confirmation dialog before reverting."}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsx)(n.p,{children:"Restore only reverts changes made by the AI. Edits you made outside the AI panel are not tracked and may be lost if they overlap with files the AI also edited. For full version history, use version control like Git."}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Undo and Restore",src:s(84934).A+"",title:"Undo and Restore",width:"664",height:"1080"})}),"\n",(0,i.jsx)(n.h2,{id:"settings",children:"Settings"}),"\n",(0,i.jsxs)(n.p,{children:["Click the ",(0,i.jsx)(n.strong,{children:"gear icon"})," in the chat panel to open AI settings.\n",(0,i.jsx)(n.img,{alt:"AI settings button",src:s(58483).A+"",title:"AI settings button",width:"720",height:"350"})]}),"\n",(0,i.jsx)(n.p,{children:"This will open a dialog where you can:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Pick the ",(0,i.jsx)(n.strong,{children:"active provider"})," from a dropdown at the top"]}),"\n",(0,i.jsx)(n.li,{children:"Add a custom API provider with a name, API key (masked), and base URL"}),"\n",(0,i.jsx)(n.li,{children:"Edit or delete any custom provider you've added"}),"\n",(0,i.jsx)(n.li,{children:"Set a custom API timeout"}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["When a custom provider with a base URL is active, the chat shows a one-time ",(0,i.jsx)(n.strong,{children:"Using custom endpoint: "})," notice on your next message."]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Claude Code Settings dialog",src:s(83450).A+"",title:"Claude Code Settings dialog",width:"839",height:"406"})}),"\n",(0,i.jsx)(n.h3,{id:"compatible-providers",children:"Compatible providers"}),"\n",(0,i.jsx)(n.p,{children:"Phoenix Code uses the Claude Code CLI under the hood, so it works with any provider that exposes an Anthropic-compatible API."}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Anthropic Claude"})," (default) \u2014 recommended; gives the best results."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"z.ai GLM"})," \u2014 tested working as a drop-in alternative. Use z.ai's Anthropic-compatible endpoint as the base URL."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Other Anthropic-API-compatible providers"})," \u2014 add the provider's base URL and API key in the dialog above."]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"keyboard-shortcuts",children:"Keyboard Shortcuts"}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Action"}),(0,i.jsx)(n.th,{children:"Shortcut"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Send message"}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"Enter"})})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"New line"}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"Shift + Enter"})})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Cycle permission mode"}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"Shift + Tab"})})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Stop the AI mid-response"}),(0,i.jsxs)(n.td,{children:[(0,i.jsx)(n.code,{children:"Escape"})," (while AI is generating)"]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Clear input and focus the editor"}),(0,i.jsxs)(n.td,{children:[(0,i.jsx)(n.code,{children:"Escape"})," (when idle)"]})]})]})]})]})}function p(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},56399:(e,n,s)=>{s.d(n,{A:()=>o});var t=s(96540),i=s(74848);const o=({src:e,winLinuxTitle:n,macTitle:s})=>{const[o,r]=(0,t.useState)("");(0,t.useEffect)((()=>{navigator.platform.toLowerCase().includes("mac")?r(s):r(n)}),[n,s]);return(0,i.jsxs)("div",{style:{maxHeight:"68vh",width:"100%",display:"flex",justifyContent:"center",alignItems:"center",flexDirection:"column"},children:[(0,i.jsxs)("video",{style:{height:"90%",width:"100%"},controls:!0,autoPlay:!0,muted:!0,loop:!0,children:[(0,i.jsx)("source",{src:e,type:"video/mp4"}),"Your browser does not support the video tag."]}),(0,i.jsx)("div",{style:{width:"100%",textAlign:"center",fontSize:"1em",marginTop:"10px"},children:o})]})}},19189:(e,n,s)=>{s.d(n,{A:()=>t});const t=s.p+"assets/images/ai-attach-dropdown-784ff31d32b89626ad3e713ea4003537.png"},22299:(e,n,s)=>{s.d(n,{A:()=>t});const t=s.p+"assets/images/ai-chat-panel-b0b0d9b641a0101804099ea7afc7313b.png"},2879:(e,n,s)=>{s.d(n,{A:()=>t});const t=s.p+"assets/images/ai-chips-0b33a8c34b1201fe4489dfa2ce9e7ead.png"},59453:(e,n,s)=>{s.d(n,{A:()=>t});const t=s.p+"assets/images/ai-diff-d8e662b0eed142007395e8f7f4301e15.png"},71246:(e,n,s)=>{s.d(n,{A:()=>t});const t=s.p+"assets/images/ai-history-d817a0b975a1ea768e4aa6d5500a8864.png"},34626:(e,n,s)=>{s.d(n,{A:()=>t});const t=s.p+"assets/images/ai-permissions-4a614c6b00f5c955c6ea7a7ba79104ed.png"},73912:(e,n,s)=>{s.d(n,{A:()=>t});const t=s.p+"assets/images/ai-screenshot-dropdown-739f02b4602fe7a0cd6a1bf08b1814c6.png"},83450:(e,n,s)=>{s.d(n,{A:()=>t});const t=s.p+"assets/images/ai-settings-dialog-2db5a84268eac13befff6d988b5486b9.png"},58483:(e,n,s)=>{s.d(n,{A:()=>t});const t=s.p+"assets/images/ai-settings-87168e345e0d965d0a66bfa1403dfdcd.png"},73156:(e,n,s)=>{s.d(n,{A:()=>t});const t=s.p+"assets/images/ai-stop-3d1698784f0e06c84de3ad18133c3ae0.png"},84934:(e,n,s)=>{s.d(n,{A:()=>t});const t=s.p+"assets/images/ai-undo-63f2cbf78b22e66a28ec0df67a16f7f2.png"},28453:(e,n,s)=>{s.d(n,{R:()=>r,x:()=>d});var t=s(96540);const i={},o=t.createContext(i);function r(e){const n=t.useContext(o);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),t.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/27b0d44a.17a14067.js b/assets/js/27b0d44a.17a14067.js new file mode 100644 index 00000000..d830f08e --- /dev/null +++ b/assets/js/27b0d44a.17a14067.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5873],{40546:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>a,frontMatter:()=>s,metadata:()=>t,toc:()=>d});const t=JSON.parse('{"id":"API-Reference/project/FileViewController","title":"FileViewController","description":"Import :","source":"@site/api/API-Reference/project/FileViewController.md","sourceDirName":"API-Reference/project","slug":"/API-Reference/project/FileViewController","permalink":"/api/API-Reference/project/FileViewController","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"FileTreeViewModel","permalink":"/api/API-Reference/project/FileTreeViewModel"},"next":{"title":"ProjectManager","permalink":"/api/API-Reference/project/ProjectManager"}}');var l=i(74848),r=i(28453);const s={},o=void 0,c={},d=[{value:"Import :",id:"import-",level:3},{value:"WORKING_SET_VIEW : string",id:"working_set_view--string",level:2},{value:"PROJECT_MANAGER : string",id:"project_manager--string",level:2},{value:"setFileViewFocus(fileSelectionFocus)",id:"setfileviewfocusfileselectionfocus",level:2},{value:"openAndSelectDocument(fullPath, fileSelectionFocus, paneId) \u21d2 $.Promise",id:"openandselectdocumentfullpath-fileselectionfocus-paneid--promise",level:2},{value:"openFileAndAddToWorkingSet(fullPath, [paneId]) \u21d2 $.Promise",id:"openfileandaddtoworkingsetfullpath-paneid--promise",level:2},{value:"openWithExternalApplication()",id:"openwithexternalapplication",level:2},{value:"getFileSelectionFocus() \u21d2 String",id:"getfileselectionfocus--string",level:2}];function h(e){const n={code:"code",h2:"h2",h3:"h3",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,r.R)(),...e.components};return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(n.h3,{id:"import-",children:"Import :"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-js",children:'const FileViewController = brackets.getModule("project/FileViewController")\n'})}),"\n",(0,l.jsx)("a",{name:"WORKING_SET_VIEW"}),"\n",(0,l.jsxs)(n.h2,{id:"working_set_view--string",children:["WORKING_SET_VIEW : ",(0,l.jsx)("code",{children:"string"})]}),"\n",(0,l.jsx)(n.p,{children:"view managing working set."}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,l.jsx)("a",{name:"PROJECT_MANAGER"}),"\n",(0,l.jsxs)(n.h2,{id:"project_manager--string",children:["PROJECT_MANAGER : ",(0,l.jsx)("code",{children:"string"})]}),"\n",(0,l.jsx)(n.p,{children:"manager handling project-related operations."}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,l.jsx)("a",{name:"setFileViewFocus"}),"\n",(0,l.jsx)(n.h2,{id:"setfileviewfocusfileselectionfocus",children:"setFileViewFocus(fileSelectionFocus)"}),"\n",(0,l.jsx)(n.p,{children:"Modifies the selection focus in the project side bar. A file can either be selected\nin the working set (the open files) or in the file tree, but not both."}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,l.jsxs)(n.table,{children:[(0,l.jsx)(n.thead,{children:(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.th,{children:"Param"}),(0,l.jsx)(n.th,{children:"Type"}),(0,l.jsx)(n.th,{children:"Description"})]})}),(0,l.jsx)(n.tbody,{children:(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.td,{children:"fileSelectionFocus"}),(0,l.jsx)(n.td,{children:(0,l.jsx)("code",{children:"String"})}),(0,l.jsx)(n.td,{children:"either PROJECT_MANAGER or WORKING_SET_VIEW"})]})})]}),"\n",(0,l.jsx)("a",{name:"openAndSelectDocument"}),"\n",(0,l.jsxs)(n.h2,{id:"openandselectdocumentfullpath-fileselectionfocus-paneid--promise",children:["openAndSelectDocument(fullPath, fileSelectionFocus, paneId) \u21d2 ",(0,l.jsx)("code",{children:"$.Promise"})]}),"\n",(0,l.jsx)(n.p,{children:"Opens a document if it's not open and selects the file in the UI corresponding to\nfileSelectionFocus"}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,l.jsxs)(n.table,{children:[(0,l.jsx)(n.thead,{children:(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.th,{children:"Param"}),(0,l.jsx)(n.th,{children:"Type"}),(0,l.jsx)(n.th,{children:"Description"})]})}),(0,l.jsxs)(n.tbody,{children:[(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.td,{children:"fullPath"}),(0,l.jsx)(n.td,{children:(0,l.jsx)("code",{children:"fullPath"})}),(0,l.jsx)(n.td,{children:"full path of the document to open"})]}),(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.td,{children:"fileSelectionFocus"}),(0,l.jsx)(n.td,{children:(0,l.jsx)("code",{children:"string"})}),(0,l.jsx)(n.td,{children:"(WORKING_SET_VIEW"})]}),(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.td,{children:"paneId"}),(0,l.jsx)(n.td,{children:(0,l.jsx)("code",{children:"string"})}),(0,l.jsx)(n.td,{children:"pane in which to open the document"})]})]})]}),"\n",(0,l.jsx)("a",{name:"openFileAndAddToWorkingSet"}),"\n",(0,l.jsxs)(n.h2,{id:"openfileandaddtoworkingsetfullpath-paneid--promise",children:["openFileAndAddToWorkingSet(fullPath, [paneId]) \u21d2 ",(0,l.jsx)("code",{children:"$.Promise"})]}),"\n",(0,l.jsx)(n.p,{children:"Opens the specified document if it's not already open, adds it to the working set,\nand selects it in the WorkingSetView"}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,l.jsxs)(n.table,{children:[(0,l.jsx)(n.thead,{children:(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.th,{children:"Param"}),(0,l.jsx)(n.th,{children:"Type"}),(0,l.jsx)(n.th,{children:"Description"})]})}),(0,l.jsxs)(n.tbody,{children:[(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.td,{children:"fullPath"}),(0,l.jsx)(n.td,{children:(0,l.jsx)("code",{children:"fullPath"})}),(0,l.jsx)(n.td,{})]}),(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.td,{children:"[paneId]"}),(0,l.jsx)(n.td,{children:(0,l.jsx)("code",{children:"string"})}),(0,l.jsx)(n.td,{children:"Pane in which to add the view. If omitted, the command default is to use the ACTIVE_PANE"})]})]})]}),"\n",(0,l.jsx)("a",{name:"openWithExternalApplication"}),"\n",(0,l.jsx)(n.h2,{id:"openwithexternalapplication",children:"openWithExternalApplication()"}),"\n",(0,l.jsx)(n.p,{children:"Opens the specified document with its associated external editor,"}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,l.jsx)("a",{name:"getFileSelectionFocus"}),"\n",(0,l.jsxs)(n.h2,{id:"getfileselectionfocus--string",children:["getFileSelectionFocus() \u21d2 ",(0,l.jsx)("code",{children:"String"})]}),"\n",(0,l.jsx)(n.p,{children:"returns either WORKING_SET_VIEW or PROJECT_MANAGER"}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"Kind"}),": global function"]})]})}function a(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,l.jsx)(n,{...e,children:(0,l.jsx)(h,{...e})}):h(e)}},28453:(e,n,i)=>{i.d(n,{R:()=>s,x:()=>o});var t=i(96540);const l={},r=t.createContext(l);function s(e){const n=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:s(e.components),t.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/2821.597774f1.js b/assets/js/2821.597774f1.js new file mode 100644 index 00000000..384fef57 --- /dev/null +++ b/assets/js/2821.597774f1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2821],{25871:(e,t,a)=>{function l(e,t){e.accDescr&&t.setAccDescription?.(e.accDescr),e.accTitle&&t.setAccTitle?.(e.accTitle),e.title&&t.setDiagramTitle?.(e.title)}a.d(t,{S:()=>l}),(0,a(40797).K2)(l,"populateCommonDb")},21152:(e,t,a)=>{a.d(t,{P:()=>r});var l=a(67633),s=a(40797),r=(0,s.K2)(((e,t,a,r)=>{e.attr("class",a);const{width:o,height:c,x:d,y:p}=n(e,t);(0,l.a$)(e,c,o,r);const h=i(d,p,o,c,t);e.attr("viewBox",h),s.Rm.debug(`viewBox configured: ${h} with padding: ${t}`)}),"setupViewPortForSVG"),n=(0,s.K2)(((e,t)=>{const a=e.node()?.getBBox()||{width:0,height:0,x:0,y:0};return{width:a.width+2*t,height:a.height+2*t,x:a.x,y:a.y}}),"calculateDimensionsWithPadding"),i=(0,s.K2)(((e,t,a,l,s)=>`${e-s} ${t-s} ${a} ${l}`),"createViewBox")},82821:(e,t,a)=>{a.d(t,{diagram:()=>x});var l=a(73590),s=a(21152),r=a(32387),n=a(25871),i=a(13226),o=a(67633),c=a(40797),d=a(78731),p=a(70451),h=class{constructor(){this.nodes=[],this.levels=new Map,this.outerNodes=[],this.classes=new Map,this.setAccTitle=o.SV,this.getAccTitle=o.iN,this.setDiagramTitle=o.ke,this.getDiagramTitle=o.ab,this.getAccDescription=o.m7,this.setAccDescription=o.EI}static{(0,c.K2)(this,"TreeMapDB")}getNodes(){return this.nodes}getConfig(){const e=o.UI,t=(0,o.zj)();return(0,i.$t)({...e.treemap,...t.treemap??{}})}addNode(e,t){this.nodes.push(e),this.levels.set(e,t),0===t&&(this.outerNodes.push(e),this.root??=e)}getRoot(){return{name:"",children:this.outerNodes}}addClass(e,t){const a=this.classes.get(e)??{id:e,styles:[],textStyles:[]},l=t.replace(/\\,/g,"\xa7\xa7\xa7").replace(/,/g,";").replace(/\xa7\xa7\xa7/g,",").split(";");l&&l.forEach((e=>{(0,r.KX)(e)&&(a?.textStyles?a.textStyles.push(e):a.textStyles=[e]),a?.styles?a.styles.push(e):a.styles=[e]})),this.classes.set(e,a)}getClasses(){return this.classes}getStylesForClass(e){return this.classes.get(e)?.styles??[]}clear(){(0,o.IU)(),this.nodes=[],this.levels=new Map,this.outerNodes=[],this.classes=new Map,this.root=void 0}};function m(e){if(!e.length)return[];const t=[],a=[];return e.forEach((e=>{const l={name:e.name,children:"Leaf"===e.type?void 0:[]};for(l.classSelector=e?.classSelector,e?.cssCompiledStyles&&(l.cssCompiledStyles=[e.cssCompiledStyles]),"Leaf"===e.type&&void 0!==e.value&&(l.value=e.value);a.length>0&&a[a.length-1].level>=e.level;)a.pop();if(0===a.length)t.push(l);else{const e=a[a.length-1].node;e.children?e.children.push(l):e.children=[l]}"Leaf"!==e.type&&a.push({node:l,level:e.level})})),t}(0,c.K2)(m,"buildHierarchy");var y=(0,c.K2)(((e,t)=>{(0,n.S)(e,t);const a=[];for(const r of e.TreemapRows??[])"ClassDefStatement"===r.$type&&t.addClass(r.className??"",r.styleText??"");for(const r of e.TreemapRows??[]){const e=r.item;if(!e)continue;const l=r.indent?parseInt(r.indent):0,s=f(e),n=e.classSelector?t.getStylesForClass(e.classSelector):[],i=n.length>0?n.join(";"):void 0,o={level:l,name:s,type:e.$type,value:e.value,classSelector:e.classSelector,cssCompiledStyles:i};a.push(o)}const l=m(a),s=(0,c.K2)(((e,a)=>{for(const l of e)t.addNode(l,a),l.children&&l.children.length>0&&s(l.children,a+1)}),"addNodesRecursively");s(l,0)}),"populate"),f=(0,c.K2)((e=>e.name?String(e.name):""),"getItemName"),u={parser:{yy:void 0},parse:(0,c.K2)((async e=>{try{const t=d.qg,a=await t("treemap",e);c.Rm.debug("Treemap AST:",a);const l=u.parser?.yy;if(!(l instanceof h))throw new Error("parser.parser?.yy was not a TreemapDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.");y(a,l)}catch(t){throw c.Rm.error("Error parsing treemap:",t),t}}),"parse")},S=10,g={sectionStrokeColor:"black",sectionStrokeWidth:"1",sectionFillColor:"#efefef",leafStrokeColor:"black",leafStrokeWidth:"1",leafFillColor:"#efefef",labelColor:"black",labelFontSize:"12px",valueFontSize:"10px",valueColor:"black",titleColor:"black",titleFontSize:"14px"},x={parser:u,get db(){return new h},renderer:{draw:(0,c.K2)(((e,t,a,n)=>{const i=n.db,d=i.getConfig(),h=d.padding??10,m=i.getDiagramTitle(),y=i.getRoot(),{themeVariables:f}=(0,o.zj)();if(!y)return;const u=m?30:0,g=(0,l.D)(t),x=d.nodeWidth?d.nodeWidth*S:960,b=d.nodeHeight?d.nodeHeight*S:500,v=x,$=b+u;let C;g.attr("viewBox",`0 0 ${v} ${$}`),(0,o.a$)(g,$,v,d.useMaxWidth);try{const e=d.valueFormat||",";if("$0,0"===e)C=(0,c.K2)((e=>"$"+(0,p.GPZ)(",")(e)),"valueFormat");else if(e.startsWith("$")&&e.includes(",")){const t=/\.\d+/.exec(e),a=t?t[0]:"";C=(0,c.K2)((e=>"$"+(0,p.GPZ)(","+a)(e)),"valueFormat")}else if(e.startsWith("$")){const t=e.substring(1);C=(0,c.K2)((e=>"$"+(0,p.GPZ)(t||"")(e)),"valueFormat")}else C=(0,p.GPZ)(e)}catch(G){c.Rm.error("Error creating format function:",G),C=(0,p.GPZ)(",")}const w=(0,p.UMr)().range(["transparent",f.cScale0,f.cScale1,f.cScale2,f.cScale3,f.cScale4,f.cScale5,f.cScale6,f.cScale7,f.cScale8,f.cScale9,f.cScale10,f.cScale11]),L=(0,p.UMr)().range(["transparent",f.cScalePeer0,f.cScalePeer1,f.cScalePeer2,f.cScalePeer3,f.cScalePeer4,f.cScalePeer5,f.cScalePeer6,f.cScalePeer7,f.cScalePeer8,f.cScalePeer9,f.cScalePeer10,f.cScalePeer11]),k=(0,p.UMr)().range([f.cScaleLabel0,f.cScaleLabel1,f.cScaleLabel2,f.cScaleLabel3,f.cScaleLabel4,f.cScaleLabel5,f.cScaleLabel6,f.cScaleLabel7,f.cScaleLabel8,f.cScaleLabel9,f.cScaleLabel10,f.cScaleLabel11]);m&&g.append("text").attr("x",v/2).attr("y",u/2).attr("class","treemapTitle").attr("text-anchor","middle").attr("dominant-baseline","middle").text(m);const T=g.append("g").attr("transform",`translate(0, ${u})`).attr("class","treemapContainer"),M=(0,p.Sk5)(y).sum((e=>e.value??0)).sort(((e,t)=>(t.value??0)-(e.value??0))),P=(0,p.hkb)().size([x,b]).paddingTop((e=>e.children&&e.children.length>0?35:0)).paddingInner(h).paddingLeft((e=>e.children&&e.children.length>0?S:0)).paddingRight((e=>e.children&&e.children.length>0?S:0)).paddingBottom((e=>e.children&&e.children.length>0?S:0)).round(!0)(M),z=P.descendants().filter((e=>e.children&&e.children.length>0)),F=T.selectAll(".treemapSection").data(z).enter().append("g").attr("class","treemapSection").attr("transform",(e=>`translate(${e.x0},${e.y0})`));F.append("rect").attr("width",(e=>e.x1-e.x0)).attr("height",25).attr("class","treemapSectionHeader").attr("fill","none").attr("fill-opacity",.6).attr("stroke-width",.6).attr("style",(e=>0===e.depth?"display: none;":"")),F.append("clipPath").attr("id",((e,a)=>`clip-section-${t}-${a}`)).append("rect").attr("width",(e=>Math.max(0,e.x1-e.x0-12))).attr("height",25),F.append("rect").attr("width",(e=>e.x1-e.x0)).attr("height",(e=>e.y1-e.y0)).attr("class",((e,t)=>`treemapSection section${t}`)).attr("fill",(e=>w(e.data.name))).attr("fill-opacity",.6).attr("stroke",(e=>L(e.data.name))).attr("stroke-width",2).attr("stroke-opacity",.4).attr("style",(e=>{if(0===e.depth)return"display: none;";const t=(0,r.GX)({cssCompiledStyles:e.data.cssCompiledStyles});return t.nodeStyles+";"+t.borderStyles.join(";")})),F.append("text").attr("class","treemapSectionLabel").attr("x",6).attr("y",12.5).attr("dominant-baseline","middle").text((e=>0===e.depth?"":e.data.name)).attr("font-weight","bold").attr("style",(e=>{if(0===e.depth)return"display: none;";return"dominant-baseline: middle; font-size: 12px; fill:"+k(e.data.name)+"; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;"+(0,r.GX)({cssCompiledStyles:e.data.cssCompiledStyles}).labelStyles.replace("color:","fill:")})).each((function(e){if(0===e.depth)return;const t=(0,p.Ltv)(this),a=e.data.name;t.text(a);const l=e.x1-e.x0;let s;if(!1!==d.showValues&&e.value){s=l-10-30-10-6}else{s=l-6-6}const r=Math.max(15,s),n=t.node();if(n.getComputedTextLength()>r){const e="...";let l=a;for(;l.length>0;){if(l=a.substring(0,l.length-1),0===l.length){t.text(e),n.getComputedTextLength()>r&&t.text("");break}if(t.text(l+e),n.getComputedTextLength()<=r)break}}})),!1!==d.showValues&&F.append("text").attr("class","treemapSectionValue").attr("x",(e=>e.x1-e.x0-10)).attr("y",12.5).attr("text-anchor","end").attr("dominant-baseline","middle").text((e=>e.value?C(e.value):"")).attr("font-style","italic").attr("style",(e=>{if(0===e.depth)return"display: none;";return"text-anchor: end; dominant-baseline: middle; font-size: 10px; fill:"+k(e.data.name)+"; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;"+(0,r.GX)({cssCompiledStyles:e.data.cssCompiledStyles}).labelStyles.replace("color:","fill:")}));const K=P.leaves(),D=T.selectAll(".treemapLeafGroup").data(K).enter().append("g").attr("class",((e,t)=>`treemapNode treemapLeafGroup leaf${t}${e.data.classSelector?` ${e.data.classSelector}`:""}x`)).attr("transform",(e=>`translate(${e.x0},${e.y0})`));D.append("rect").attr("width",(e=>e.x1-e.x0)).attr("height",(e=>e.y1-e.y0)).attr("class","treemapLeaf").attr("fill",(e=>e.parent?w(e.parent.data.name):w(e.data.name))).attr("style",(e=>(0,r.GX)({cssCompiledStyles:e.data.cssCompiledStyles}).nodeStyles)).attr("fill-opacity",.3).attr("stroke",(e=>e.parent?w(e.parent.data.name):w(e.data.name))).attr("stroke-width",3),D.append("clipPath").attr("id",((e,a)=>`clip-${t}-${a}`)).append("rect").attr("width",(e=>Math.max(0,e.x1-e.x0-4))).attr("height",(e=>Math.max(0,e.y1-e.y0-4)));if(D.append("text").attr("class","treemapLabel").attr("x",(e=>(e.x1-e.x0)/2)).attr("y",(e=>(e.y1-e.y0)/2)).attr("style",(e=>"text-anchor: middle; dominant-baseline: middle; font-size: 38px;fill:"+k(e.data.name)+";"+(0,r.GX)({cssCompiledStyles:e.data.cssCompiledStyles}).labelStyles.replace("color:","fill:"))).attr("clip-path",((e,a)=>`url(#clip-${t}-${a})`)).text((e=>e.data.name)).each((function(e){const t=(0,p.Ltv)(this),a=e.x1-e.x0,l=e.y1-e.y0,s=t.node(),r=a-8,n=l-8;if(r<10||n<10)return void t.style("display","none");let i=parseInt(t.style("font-size"),10);for(;s.getComputedTextLength()>r&&i>8;)i--,t.style("font-size",`${i}px`);let o=Math.max(6,Math.min(28,Math.round(.6*i))),c=i+2+o;for(;c>n&&i>8&&(i--,o=Math.max(6,Math.min(28,Math.round(.6*i))),!(o<6&&8===i));)t.style("font-size",`${i}px`),c=i+2+o;t.style("font-size",`${i}px`),(s.getComputedTextLength()>r||i<8||n(e.x1-e.x0)/2)).attr("y",(function(e){return(e.y1-e.y0)/2})).attr("style",(e=>"text-anchor: middle; dominant-baseline: hanging; font-size: 28px;fill:"+k(e.data.name)+";"+(0,r.GX)({cssCompiledStyles:e.data.cssCompiledStyles}).labelStyles.replace("color:","fill:"))).attr("clip-path",((e,a)=>`url(#clip-${t}-${a})`)).text((e=>e.value?C(e.value):"")).each((function(e){const t=(0,p.Ltv)(this),a=this.parentNode;if(!a)return void t.style("display","none");const l=(0,p.Ltv)(a).select(".treemapLabel");if(l.empty()||"none"===l.style("display"))return void t.style("display","none");const s=parseFloat(l.style("font-size")),r=Math.max(6,Math.min(28,Math.round(.6*s)));t.style("font-size",`${r}px`);const n=(e.y1-e.y0)/2+s/2+2;t.attr("y",n);const i=e.x1-e.x0,o=e.y1-e.y0-4,c=i-8;t.node().getComputedTextLength()>c||n+r>o||r<6?t.style("display","none"):t.style("display",null)}))}const N=d.diagramPadding??8;(0,s.P)(g,N,"flowchart",d?.useMaxWidth||!1)}),"draw"),getClasses:(0,c.K2)((function(e,t){return t.db.getClasses()}),"getClasses")},styles:(0,c.K2)((({treemap:e}={})=>{const t=(0,i.$t)(g,e);return`\n .treemapNode.section {\n stroke: ${t.sectionStrokeColor};\n stroke-width: ${t.sectionStrokeWidth};\n fill: ${t.sectionFillColor};\n }\n .treemapNode.leaf {\n stroke: ${t.leafStrokeColor};\n stroke-width: ${t.leafStrokeWidth};\n fill: ${t.leafFillColor};\n }\n .treemapLabel {\n fill: ${t.labelColor};\n font-size: ${t.labelFontSize};\n }\n .treemapValue {\n fill: ${t.valueColor};\n font-size: ${t.valueFontSize};\n }\n .treemapTitle {\n fill: ${t.titleColor};\n font-size: ${t.titleFontSize};\n }\n `}),"getStyles")}}}]); \ No newline at end of file diff --git a/assets/js/291.cd72bf50.js b/assets/js/291.cd72bf50.js new file mode 100644 index 00000000..8719a5ec --- /dev/null +++ b/assets/js/291.cd72bf50.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[291],{50291:(t,e,n)=>{n.d(e,{diagram:()=>Y});var i=n(67633),s=n(40797),r=n(70451),a=n(3219),o=n(78041),c=n(75263),l=function(){var t=(0,s.K2)((function(t,e,n,i){for(n=n||{},i=t.length;i--;n[t[i]]=e);return n}),"o"),e=[6,8,10,11,12,14,16,17,20,21],n=[1,9],i=[1,10],r=[1,11],a=[1,12],o=[1,13],c=[1,16],l=[1,17],h={trace:(0,s.K2)((function(){}),"trace"),yy:{},symbols_:{error:2,start:3,timeline:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,title:11,acc_title:12,acc_title_value:13,acc_descr:14,acc_descr_value:15,acc_descr_multiline_value:16,section:17,period_statement:18,event_statement:19,period:20,event:21,$accept:0,$end:1},terminals_:{2:"error",4:"timeline",6:"EOF",8:"SPACE",10:"NEWLINE",11:"title",12:"acc_title",13:"acc_title_value",14:"acc_descr",15:"acc_descr_value",16:"acc_descr_multiline_value",17:"section",20:"period",21:"event"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,1],[9,1],[18,1],[19,1]],performAction:(0,s.K2)((function(t,e,n,i,s,r,a){var o=r.length-1;switch(s){case 1:return r[o-1];case 2:case 6:case 7:this.$=[];break;case 3:r[o-1].push(r[o]),this.$=r[o-1];break;case 4:case 5:this.$=r[o];break;case 8:i.getCommonDb().setDiagramTitle(r[o].substr(6)),this.$=r[o].substr(6);break;case 9:this.$=r[o].trim(),i.getCommonDb().setAccTitle(this.$);break;case 10:case 11:this.$=r[o].trim(),i.getCommonDb().setAccDescription(this.$);break;case 12:i.addSection(r[o].substr(8)),this.$=r[o].substr(8);break;case 15:i.addTask(r[o],0,""),this.$=r[o];break;case 16:i.addEvent(r[o].substr(2)),this.$=r[o]}}),"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:n,12:i,14:r,16:a,17:o,18:14,19:15,20:c,21:l},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:18,11:n,12:i,14:r,16:a,17:o,18:14,19:15,20:c,21:l},t(e,[2,5]),t(e,[2,6]),t(e,[2,8]),{13:[1,19]},{15:[1,20]},t(e,[2,11]),t(e,[2,12]),t(e,[2,13]),t(e,[2,14]),t(e,[2,15]),t(e,[2,16]),t(e,[2,4]),t(e,[2,9]),t(e,[2,10])],defaultActions:{},parseError:(0,s.K2)((function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)}),"parseError"),parse:(0,s.K2)((function(t){var e=this,n=[0],i=[],r=[null],a=[],o=this.table,c="",l=0,h=0,d=0,u=a.slice.call(arguments,1),p=Object.create(this.lexer),y={yy:{}};for(var g in this.yy)Object.prototype.hasOwnProperty.call(this.yy,g)&&(y.yy[g]=this.yy[g]);p.setInput(t,y.yy),y.yy.lexer=p,y.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var f=p.yylloc;a.push(f);var m=p.options&&p.options.ranges;function x(){var t;return"number"!=typeof(t=i.pop()||p.lex()||1)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof y.yy.parseError?this.parseError=y.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,s.K2)((function(t){n.length=n.length-2*t,r.length=r.length-t,a.length=a.length-t}),"popStack"),(0,s.K2)(x,"lex");for(var b,k,_,w,v,K,S,$,E,T={};;){if(_=n[n.length-1],this.defaultActions[_]?w=this.defaultActions[_]:(null==b&&(b=x()),w=o[_]&&o[_][b]),void 0===w||!w.length||!w[0]){var I="";for(K in E=[],o[_])this.terminals_[K]&&K>2&&E.push("'"+this.terminals_[K]+"'");I=p.showPosition?"Parse error on line "+(l+1)+":\n"+p.showPosition()+"\nExpecting "+E.join(", ")+", got '"+(this.terminals_[b]||b)+"'":"Parse error on line "+(l+1)+": Unexpected "+(1==b?"end of input":"'"+(this.terminals_[b]||b)+"'"),this.parseError(I,{text:p.match,token:this.terminals_[b]||b,line:p.yylineno,loc:f,expected:E})}if(w[0]instanceof Array&&w.length>1)throw new Error("Parse Error: multiple actions possible at state: "+_+", token: "+b);switch(w[0]){case 1:n.push(b),r.push(p.yytext),a.push(p.yylloc),n.push(w[1]),b=null,k?(b=k,k=null):(h=p.yyleng,c=p.yytext,l=p.yylineno,f=p.yylloc,d>0&&d--);break;case 2:if(S=this.productions_[w[1]][1],T.$=r[r.length-S],T._$={first_line:a[a.length-(S||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(S||1)].first_column,last_column:a[a.length-1].last_column},m&&(T._$.range=[a[a.length-(S||1)].range[0],a[a.length-1].range[1]]),void 0!==(v=this.performAction.apply(T,[c,h,l,y.yy,w[1],r,a].concat(u))))return v;S&&(n=n.slice(0,-1*S*2),r=r.slice(0,-1*S),a=a.slice(0,-1*S)),n.push(this.productions_[w[1]][0]),r.push(T.$),a.push(T._$),$=o[n[n.length-2]][n[n.length-1]],n.push($);break;case 3:return!0}}return!0}),"parse")},d=function(){return{EOF:1,parseError:(0,s.K2)((function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)}),"parseError"),setInput:(0,s.K2)((function(t,e){return this.yy=e||this.yy||{},this._input=t,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:(0,s.K2)((function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t}),"input"),unput:(0,s.K2)((function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=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),n.length-1&&(this.yylineno-=n.length-1);var s=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:n?(n.length===i.length?this.yylloc.first_column:0)+i[i.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[s[0],s[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this}),"unput"),more:(0,s.K2)((function(){return this._more=!0,this}),"more"),reject:(0,s.K2)((function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):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).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})}),"reject"),less:(0,s.K2)((function(t){this.unput(this.match.slice(t))}),"less"),pastInput:(0,s.K2)((function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")}),"pastInput"),upcomingInput:(0,s.K2)((function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")}),"upcomingInput"),showPosition:(0,s.K2)((function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"}),"showPosition"),test_match:(0,s.K2)((function(t,e){var n,i,s;if(this.options.backtrack_lexer&&(s={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&&(s.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,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(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var r in s)this[r]=s[r];return!1}return!1}),"test_match"),next:(0,s.K2)((function(){if(this.done)return this.EOF;var t,e,n,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var s=this._currentRules(),r=0;re[0].length)){if(e=n,i=r,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,s[r])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,s[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})}),"next"),lex:(0,s.K2)((function(){var t=this.next();return t||this.lex()}),"lex"),begin:(0,s.K2)((function(t){this.conditionStack.push(t)}),"begin"),popState:(0,s.K2)((function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]}),"popState"),_currentRules:(0,s.K2)((function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules}),"_currentRules"),topState:(0,s.K2)((function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"}),"topState"),pushState:(0,s.K2)((function(t){this.begin(t)}),"pushState"),stateStackSize:(0,s.K2)((function(){return this.conditionStack.length}),"stateStackSize"),options:{"case-insensitive":!0},performAction:(0,s.K2)((function(t,e,n,i){switch(n){case 0:case 1:case 3:case 4:break;case 2:return 10;case 5:return 4;case 6:return 11;case 7:return this.begin("acc_title"),12;case 8:return this.popState(),"acc_title_value";case 9:return this.begin("acc_descr"),14;case 10:return this.popState(),"acc_descr_value";case 11:this.begin("acc_descr_multiline");break;case 12:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:return 17;case 15:return 21;case 16:return 20;case 17:return 6;case 18:return"INVALID"}}),"anonymous"),rules:[/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:timeline\b)/i,/^(?:title\s[^\n]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:section\s[^:\n]+)/i,/^(?::\s(?:[^:\n]|:(?!\s))+)/i,/^(?:[^#:\n]+)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,9,11,14,15,16,17,18],inclusive:!0}}}}();function u(){this.yy={}}return h.lexer=d,(0,s.K2)(u,"Parser"),u.prototype=h,h.Parser=u,new u}();l.parser=l;var h=l,d={};(0,s.VA)(d,{addEvent:()=>v,addSection:()=>b,addTask:()=>w,addTaskOrg:()=>K,clear:()=>x,default:()=>$,getCommonDb:()=>m,getSections:()=>k,getTasks:()=>_});var u="",p=0,y=[],g=[],f=[],m=(0,s.K2)((()=>i.Wt),"getCommonDb"),x=(0,s.K2)((function(){y.length=0,g.length=0,u="",f.length=0,(0,i.IU)()}),"clear"),b=(0,s.K2)((function(t){u=t,y.push(t)}),"addSection"),k=(0,s.K2)((function(){return y}),"getSections"),_=(0,s.K2)((function(){let t=S();let e=0;for(;!t&&e<100;)t=S(),e++;return g.push(...f),g}),"getTasks"),w=(0,s.K2)((function(t,e,n){const i={id:p++,section:u,type:u,task:t,score:e||0,events:n?[n]:[]};f.push(i)}),"addTask"),v=(0,s.K2)((function(t){f.find((t=>t.id===p-1)).events.push(t)}),"addEvent"),K=(0,s.K2)((function(t){const e={section:u,type:u,description:t,task:t,classes:[]};g.push(e)}),"addTaskOrg"),S=(0,s.K2)((function(){const t=(0,s.K2)((function(t){return f[t].processed}),"compileTask");let e=!0;for(const[n,i]of f.entries())t(n),e=e&&i.processed;return e}),"compileTasks"),$={clear:x,getCommonDb:m,addSection:b,getSections:k,getTasks:_,addTask:w,addTaskOrg:K,addEvent:v},E=(0,s.K2)((function(t,e){const n=t.append("rect");return n.attr("x",e.x),n.attr("y",e.y),n.attr("fill",e.fill),n.attr("stroke",e.stroke),n.attr("width",e.width),n.attr("height",e.height),n.attr("rx",e.rx),n.attr("ry",e.ry),void 0!==e.class&&n.attr("class",e.class),n}),"drawRect"),T=(0,s.K2)((function(t,e){const n=15,i=t.append("circle").attr("cx",e.cx).attr("cy",e.cy).attr("class","face").attr("r",n).attr("stroke-width",2).attr("overflow","visible"),a=t.append("g");function o(t){const i=(0,r.JLW)().startAngle(Math.PI/2).endAngle(Math.PI/2*3).innerRadius(7.5).outerRadius(n/2.2);t.append("path").attr("class","mouth").attr("d",i).attr("transform","translate("+e.cx+","+(e.cy+2)+")")}function c(t){const i=(0,r.JLW)().startAngle(3*Math.PI/2).endAngle(Math.PI/2*5).innerRadius(7.5).outerRadius(n/2.2);t.append("path").attr("class","mouth").attr("d",i).attr("transform","translate("+e.cx+","+(e.cy+7)+")")}function l(t){t.append("line").attr("class","mouth").attr("stroke",2).attr("x1",e.cx-5).attr("y1",e.cy+7).attr("x2",e.cx+5).attr("y2",e.cy+7).attr("class","mouth").attr("stroke-width","1px").attr("stroke","#666")}return a.append("circle").attr("cx",e.cx-5).attr("cy",e.cy-5).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),a.append("circle").attr("cx",e.cx+5).attr("cy",e.cy-5).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),(0,s.K2)(o,"smile"),(0,s.K2)(c,"sad"),(0,s.K2)(l,"ambivalent"),e.score>3?o(a):e.score<3?c(a):l(a),i}),"drawFace"),I=(0,s.K2)((function(t,e){const n=t.append("circle");return n.attr("cx",e.cx),n.attr("cy",e.cy),n.attr("class","actor-"+e.pos),n.attr("fill",e.fill),n.attr("stroke",e.stroke),n.attr("r",e.r),void 0!==n.class&&n.attr("class",n.class),void 0!==e.title&&n.append("title").text(e.title),n}),"drawCircle"),R=(0,s.K2)((function(t,e){const n=e.text.replace(//gi," "),i=t.append("text");i.attr("x",e.x),i.attr("y",e.y),i.attr("class","legend"),i.style("text-anchor",e.anchor),void 0!==e.class&&i.attr("class",e.class);const s=i.append("tspan");return s.attr("x",e.x+2*e.textMargin),s.text(n),i}),"drawText"),A=(0,s.K2)((function(t,e){function n(t,e,n,i,s){return t+","+e+" "+(t+n)+","+e+" "+(t+n)+","+(e+i-s)+" "+(t+n-1.2*s)+","+(e+i)+" "+t+","+(e+i)}(0,s.K2)(n,"genPoints");const i=t.append("polygon");i.attr("points",n(e.x,e.y,50,20,7)),i.attr("class","labelBox"),e.y=e.y+e.labelMargin,e.x=e.x+.5*e.labelMargin,R(t,e)}),"drawLabel"),L=(0,s.K2)((function(t,e,n){const i=t.append("g"),s=H();s.x=e.x,s.y=e.y,s.fill=e.fill,s.width=n.width,s.height=n.height,s.class="journey-section section-type-"+e.num,s.rx=3,s.ry=3,E(i,s),O(n)(e.text,i,s.x,s.y,s.width,s.height,{class:"journey-section section-type-"+e.num},n,e.colour)}),"drawSection"),M=-1,C=(0,s.K2)((function(t,e,n){const i=e.x+n.width/2,s=t.append("g");M++;s.append("line").attr("id","task"+M).attr("x1",i).attr("y1",e.y).attr("x2",i).attr("y2",450).attr("class","task-line").attr("stroke-width","1px").attr("stroke-dasharray","4 2").attr("stroke","#666"),T(s,{cx:i,cy:300+30*(5-e.score),score:e.score});const r=H();r.x=e.x,r.y=e.y,r.fill=e.fill,r.width=n.width,r.height=n.height,r.class="task task-type-"+e.num,r.rx=3,r.ry=3,E(s,r),O(n)(e.task,s,r.x,r.y,r.width,r.height,{class:"task"},n,e.colour)}),"drawTask"),N=(0,s.K2)((function(t,e){E(t,{x:e.startx,y:e.starty,width:e.stopx-e.startx,height:e.stopy-e.starty,fill:e.fill,class:"rect"}).lower()}),"drawBackgroundRect"),P=(0,s.K2)((function(){return{x:0,y:0,fill:void 0,"text-anchor":"start",width:100,height:100,textMargin:0,rx:0,ry:0}}),"getTextObj"),H=(0,s.K2)((function(){return{x:0,y:0,width:100,anchor:"start",height:100,rx:0,ry:0}}),"getNoteRect"),O=function(){function t(t,e,n,s,r,a,o,c){i(e.append("text").attr("x",n+r/2).attr("y",s+a/2+5).style("font-color",c).style("text-anchor","middle").text(t),o)}function e(t,e,n,s,r,a,o,c,l){const{taskFontSize:h,taskFontFamily:d}=c,u=t.split(//gi);for(let p=0;p)/).reverse(),s=[],a=n.attr("y"),o=parseFloat(n.attr("dy")),c=n.text(null).append("tspan").attr("x",0).attr("y",a).attr("dy",o+"em");for(let r=0;re||"
    "===t)&&(s.pop(),c.text(s.join(" ").trim()),s="
    "===t?[""]:[t],c=n.append("tspan").attr("x",0).attr("y",a).attr("dy","1.1em").text(t))}))}(0,s.K2)(D,"wrap");var z=(0,s.K2)((function(t,e,n,i){const s=n%12-1,r=t.append("g");e.section=s,r.attr("class",(e.class?e.class+" ":"")+"timeline-node section-"+s);const a=r.append("g"),o=r.append("g"),c=o.append("text").text(e.descr).attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle").call(D,e.width).node().getBBox(),l=i.fontSize?.replace?i.fontSize.replace("px",""):i.fontSize;return e.height=c.height+1.1*l*.5+e.padding,e.height=Math.max(e.height,e.maxHeight),e.width=e.width+2*e.padding,o.attr("transform","translate("+e.width/2+", "+e.padding/2+")"),B(a,e,s,i),e}),"drawNode"),W=(0,s.K2)((function(t,e,n){const i=t.append("g"),s=i.append("text").text(e.descr).attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle").call(D,e.width).node().getBBox(),r=n.fontSize?.replace?n.fontSize.replace("px",""):n.fontSize;return i.remove(),s.height+1.1*r*.5+e.padding}),"getVirtualNodeHeight"),B=(0,s.K2)((function(t,e,n){t.append("path").attr("id","node-"+e.id).attr("class","node-bkg node-"+e.type).attr("d",`M0 ${e.height-5} v${10-e.height} q0,-5 5,-5 h${e.width-10} q5,0 5,5 v${e.height-5} H0 Z`),t.append("line").attr("class","node-line-"+n).attr("x1",0).attr("y1",e.height).attr("x2",e.width).attr("y2",e.height)}),"defaultBkg"),F={drawRect:E,drawCircle:I,drawSection:L,drawText:R,drawLabel:A,drawTask:C,drawBackgroundRect:N,getTextObj:P,getNoteRect:H,initGraphics:j,drawNode:z,getVirtualNodeHeight:W},V=(0,s.K2)((function(t,e,n,a){const o=(0,i.D7)(),c=o.timeline?.leftMargin??50;s.Rm.debug("timeline",a.db);const l=o.securityLevel;let h;"sandbox"===l&&(h=(0,r.Ltv)("#i"+e));const d=("sandbox"===l?(0,r.Ltv)(h.nodes()[0].contentDocument.body):(0,r.Ltv)("body")).select("#"+e);d.append("g");const u=a.db.getTasks(),p=a.db.getCommonDb().getDiagramTitle();s.Rm.debug("task",u),F.initGraphics(d);const y=a.db.getSections();s.Rm.debug("sections",y);let g=0,f=0,m=0,x=0,b=50+c,k=50;x=50;let _=0,w=!0;y.forEach((function(t){const e={number:_,descr:t,section:_,width:150,padding:20,maxHeight:g},n=F.getVirtualNodeHeight(d,e,o);s.Rm.debug("sectionHeight before draw",n),g=Math.max(g,n+20)}));let v=0,K=0;s.Rm.debug("tasks.length",u.length);for(const[i,r]of u.entries()){const t={number:i,descr:r,section:r.section,width:150,padding:20,maxHeight:f},e=F.getVirtualNodeHeight(d,t,o);s.Rm.debug("taskHeight before draw",e),f=Math.max(f,e+20),v=Math.max(v,r.events.length);let n=0;for(const i of r.events){const t={descr:i,section:r.section,number:r.section,width:150,padding:20,maxHeight:50};n+=F.getVirtualNodeHeight(d,t,o)}r.events.length>0&&(n+=10*(r.events.length-1)),K=Math.max(K,n)}s.Rm.debug("maxSectionHeight before draw",g),s.Rm.debug("maxTaskHeight before draw",f),y&&y.length>0?y.forEach((t=>{const e=u.filter((e=>e.section===t)),n={number:_,descr:t,section:_,width:200*Math.max(e.length,1)-50,padding:20,maxHeight:g};s.Rm.debug("sectionNode",n);const i=d.append("g"),r=F.drawNode(i,n,_,o);s.Rm.debug("sectionNode output",r),i.attr("transform",`translate(${b}, 50)`),k+=g+50,e.length>0&&G(d,e,_,b,k,f,o,v,K,g,!1),b+=200*Math.max(e.length,1),k=50,_++})):(w=!1,G(d,u,_,b,k,f,o,v,K,g,!0));const S=d.node().getBBox();s.Rm.debug("bounds",S),p&&d.append("text").text(p).attr("x",S.width/2-c).attr("font-size","4ex").attr("font-weight","bold").attr("y",20),m=w?g+f+150:f+100;d.append("g").attr("class","lineWrapper").append("line").attr("x1",c).attr("y1",m).attr("x2",S.width+3*c).attr("y2",m).attr("stroke-width",4).attr("stroke","black").attr("marker-end","url(#arrowhead)"),(0,i.ot)(void 0,d,o.timeline?.padding??50,o.timeline?.useMaxWidth??!1)}),"draw"),G=(0,s.K2)((function(t,e,n,i,r,a,o,c,l,h,d){for(const u of e){const e={descr:u.task,section:n,number:n,width:150,padding:20,maxHeight:a};s.Rm.debug("taskNode",e);const c=t.append("g").attr("class","taskWrapper"),h=F.drawNode(c,e,n,o).height;if(s.Rm.debug("taskHeight after draw",h),c.attr("transform",`translate(${i}, ${r})`),a=Math.max(a,h),u.events){const e=t.append("g").attr("class","lineWrapper");let s=a;r+=100,s+=U(t,u.events,n,i,r,o),r-=100,e.append("line").attr("x1",i+95).attr("y1",r+a).attr("x2",i+95).attr("y2",r+a+100+l+100).attr("stroke-width",2).attr("stroke","black").attr("marker-end","url(#arrowhead)").attr("stroke-dasharray","5,5")}i+=200,d&&!o.timeline?.disableMulticolor&&n++}r-=10}),"drawTasks"),U=(0,s.K2)((function(t,e,n,i,r,a){let o=0;const c=r;r+=100;for(const l of e){const e={descr:l,section:n,number:n,width:150,padding:20,maxHeight:50};s.Rm.debug("eventNode",e);const c=t.append("g").attr("class","eventWrapper"),h=F.drawNode(c,e,n,a).height;o+=h,c.attr("transform",`translate(${i}, ${r})`),r=r+10+h}return r=c,o}),"drawEvents"),q={setConf:(0,s.K2)((()=>{}),"setConf"),draw:V},J=(0,s.K2)((t=>{let e="";for(let n=0;n`\n .edge {\n stroke-width: 3;\n }\n ${J(t)}\n .section-root rect, .section-root path, .section-root circle {\n fill: ${t.git0};\n }\n .section-root text {\n fill: ${t.gitBranchLabel0};\n }\n .icon-container {\n height:100%;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n .edge {\n fill: none;\n }\n .eventWrapper {\n filter: brightness(120%);\n }\n`),"getStyles")}}}]); \ No newline at end of file diff --git a/assets/js/29bb8383.c3f447fc.js b/assets/js/29bb8383.c3f447fc.js new file mode 100644 index 00000000..569ebc26 --- /dev/null +++ b/assets/js/29bb8383.c3f447fc.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8568],{12474:l=>{l.exports=JSON.parse('{"tag":{"label":"hello world","permalink":"/blog/tags/hello-world","allTagsPath":"/blog/tags","count":1,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/hello-world","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]); \ No newline at end of file diff --git a/assets/js/2aded1cf.a3dbcf78.js b/assets/js/2aded1cf.a3dbcf78.js new file mode 100644 index 00000000..bf7c1b6f --- /dev/null +++ b/assets/js/2aded1cf.a3dbcf78.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3471],{27520:e=>{e.exports=JSON.parse('{"tag":{"label":"Phoenix Neo","permalink":"/blog/tags/phoenix-neo","allTagsPath":"/blog/tags","count":1,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/phoenix-neo","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]); \ No newline at end of file diff --git a/assets/js/2b3740aa.ace21985.js b/assets/js/2b3740aa.ace21985.js new file mode 100644 index 00000000..42fd6825 --- /dev/null +++ b/assets/js/2b3740aa.ace21985.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4735],{22395:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>d,contentTitle:()=>a,default:()=>l,frontMatter:()=>s,metadata:()=>n,toc:()=>h});var n=o(84446),i=o(74848),r=o(28453);const s={slug:"Blog-Legacy",title:"Phoenix Code: The Legacy of Brackets - Continued",description:"The story of Brackets \u2014 from its birth at Adobe to Phoenix Code. How a community kept the spirit of Brackets alive and built its future.",authors:["arun","charly"],tags:["Brackets","Continued","Phoenix Code","History"]},a=void 0,d={authorsImageUrls:[void 0,void 0]},h=[{value:"Brackets 1.0 - The Beginning",id:"brackets-10---the-beginning",level:2},{value:"Brackets 2.0 - The Brackets Open Source Community is Born",id:"brackets-20---the-brackets-open-source-community-is-born",level:2},{value:"Phoenix Code - 3.0, The Next Generation of Brackets",id:"phoenix-code---30-the-next-generation-of-brackets",level:2},{value:"Phoenix Code - 4.0, Present & Future",id:"phoenix-code---40-present--future",level:2}];function c(e){const t={a:"a",em:"em",h2:"h2",p:"p",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.p,{children:"Some stories refuse to end because of the people who believe in them. Brackets was one such story. Born at Adobe,\nit wasn\u2019t just a code editor; it was a vision to bridge the gap between designers and developers on\nhow we build for the web. But when its creators moved on, the future of Brackets seemed uncertain."}),"\n",(0,i.jsx)(t.p,{children:"Yet, Brackets lived on. Too many people loved it, relied on it, and believed in its potential. From that\npassion, Phoenix Code was born\u2014not as a replacement, but as a continuation of everything Brackets stood for.\nJoin us as we trace this journey from the birth of Brackets to the rise of Phoenix Code\u2014and discover how a\ncommunity\u2019s dedication kept the spirit of Brackets alive."}),"\n",(0,i.jsx)(t.h2,{id:"brackets-10---the-beginning",children:"Brackets 1.0 - The Beginning"}),"\n",(0,i.jsx)(t.p,{children:"Brackets 1.0 was released 10 years ago at Adobe, on the 4th of November 2014. At the time, Atom from GitHub was\nthe only peer editor built on the same web-based architecture as Brackets. The web was a very different place then.\nAdobe was preparing for a post-Flash world (Read: Thoughts on Flash - an open letter by Steve Jobs, April 2010).\nJust a month earlier, in October 2014, HTML5 had become a W3C Recommendation."}),"\n",(0,i.jsx)(t.p,{children:"Brackets was born as an editor built on web standards, designed for building the web\u2014a window into the future\nfrom Adobe. Adobe was mostly right in this vision. Visual Studio Code (VSCode), built on similar web technologies,\nhas since risen to dominate the landscape of code editors."}),"\n",(0,i.jsx)(t.p,{children:"Brackets was created to serve as a bridge between Designer and Developer workflows before the time of Figma and XD.\nHowever, Adobe was primarily about design tools. As a free developer tool, Brackets was never able to find a place\namong its design-focused peers."}),"\n",(0,i.jsx)(t.h2,{id:"brackets-20---the-brackets-open-source-community-is-born",children:"Brackets 2.0 - The Brackets Open Source Community is Born"}),"\n",(0,i.jsxs)(t.p,{children:["In January 2022, Adobe ",(0,i.jsx)(t.a,{href:"https://x.com/brackets/status/1480581149604782080",children:"transitioned the development of Brackets"})," to the newly formed Brackets Community.\nVersion 2.0 focused on establishing an independent foothold to continue Brackets' development."]}),"\n",(0,i.jsx)(t.p,{children:"We kick-started the Phoenix Code project as we recognized the need to address nearly three years of\ndevelopment backlog. This laid the groundwork for the next generation of Brackets."}),"\n",(0,i.jsx)(t.h2,{id:"phoenix-code---30-the-next-generation-of-brackets",children:"Phoenix Code - 3.0, The Next Generation of Brackets"}),"\n",(0,i.jsx)(t.p,{children:"With Phoenix Code, we built the foundation to run Brackets almost anywhere with a web browser. The first web\nversion launched in June 2023, followed by desktop builds in February 2024."}),"\n",(0,i.jsx)(t.p,{children:"Version 3.0 was primarily about achieving feature parity and stability with Brackets\u2014and then surpassing it."}),"\n",(0,i.jsx)(t.h2,{id:"phoenix-code---40-present--future",children:"Phoenix Code - 4.0, Present & Future"}),"\n",(0,i.jsxs)(t.p,{children:["We start this year(2025) with the ",(0,i.jsx)(t.a,{href:"https://docs.phcode.dev/blog/release-4.0",children:"release of Phoenix Code 4.0"}),"- as we reach feature parity with Brackets and exceeds it\nin most cases. With this milestone, we return to the original mission of Brackets - to serve as a\nbridge between Designer and Developer workflows for the Web. To help ",(0,i.jsx)(t.em,{children:"people"})," get things done simpler and faster."]}),"\n",(0,i.jsx)(t.p,{children:"With immense gratitude for our users' support, we're excited to begin this next chapter of Phoenix Code."})]})}function l(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},28453:(e,t,o)=>{o.d(t,{R:()=>s,x:()=>a});var n=o(96540);const i={},r=n.createContext(i);function s(e){const t=n.useContext(r);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:s(e.components),n.createElement(r.Provider,{value:t},e.children)}},84446:e=>{e.exports=JSON.parse('{"permalink":"/blog/Blog-Legacy","editUrl":"https://github.com/phcode-dev/docs/blob/main/blog/2025-01-30-The Legacy of Brackets - Continued/index.md","source":"@site/blog/2025-01-30-The Legacy of Brackets - Continued/index.md","title":"Phoenix Code: The Legacy of Brackets - Continued","description":"The story of Brackets \u2014 from its birth at Adobe to Phoenix Code. How a community kept the spirit of Brackets alive and built its future.","date":"2025-01-30T00:00:00.000Z","tags":[{"inline":true,"label":"Brackets","permalink":"/blog/tags/brackets"},{"inline":true,"label":"Continued","permalink":"/blog/tags/continued"},{"inline":true,"label":"Phoenix Code","permalink":"/blog/tags/phoenix-code"},{"inline":true,"label":"History","permalink":"/blog/tags/history"}],"readingTime":2.55,"hasTruncateMarker":false,"authors":[{"name":"Arun Bose","title":"Co-Founder, Phoenix Code","url":"https://github.com/abose","imageURL":"https://github.com/abose.png","key":"arun","page":null},{"name":"Charly P Abraham","title":"Co-Founder, Phoenix Code","url":"https://github.com/charlypa","imageURL":"https://github.com/charlypa.png","key":"charly","page":null}],"frontMatter":{"slug":"Blog-Legacy","title":"Phoenix Code: The Legacy of Brackets - Continued","description":"The story of Brackets \u2014 from its birth at Adobe to Phoenix Code. How a community kept the spirit of Brackets alive and built its future.","authors":["arun","charly"],"tags":["Brackets","Continued","Phoenix Code","History"]},"unlisted":false,"prevItem":{"title":"Git It Release (January-2025, V-4.0) is now Live","permalink":"/blog/release-4.0"},"nextItem":{"title":"Editor Experience Release (November-2024, V-3.10) is now Live","permalink":"/blog/release-3.10"}}')}}]); \ No newline at end of file diff --git a/assets/js/2ba5aea5.34e459b3.js b/assets/js/2ba5aea5.34e459b3.js new file mode 100644 index 00000000..6619d2a3 --- /dev/null +++ b/assets/js/2ba5aea5.34e459b3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6397],{56296:(e,i,n)=>{n.r(i),n.d(i,{assets:()=>s,contentTitle:()=>o,default:()=>h,frontMatter:()=>c,metadata:()=>r,toc:()=>l});const r=JSON.parse('{"id":"API-Reference/view/MainViewFactory","title":"MainViewFactory","description":"Import :","source":"@site/api/API-Reference/view/MainViewFactory.md","sourceDirName":"API-Reference/view","slug":"/API-Reference/view/MainViewFactory","permalink":"/api/API-Reference/view/MainViewFactory","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"ZipUtils","permalink":"/api/API-Reference/utils/ZipUtils"},"next":{"title":"MainViewManager","permalink":"/api/API-Reference/view/MainViewManager"}}');var t=n(74848),a=n(28453);const c={},o=void 0,s={},l=[{value:"Import :",id:"import-",level:3},{value:"view/MainViewFactory",id:"viewmainviewfactory",level:2},{value:"view/MainViewFactory.registerViewFactory(factory)",id:"viewmainviewfactoryregisterviewfactoryfactory",level:3},{value:"view/MainViewFactory.findSuitableFactoryForPath(fullPath) \u21d2 Factory",id:"viewmainviewfactoryfindsuitablefactoryforpathfullpath--factory",level:3},{value:"view/MainViewFactory.Factory : Object",id:"viewmainviewfactoryfactory--object",level:3}];function d(e){const i={a:"a",br:"br",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,a.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(i.h3,{id:"import-",children:"Import :"}),"\n",(0,t.jsx)(i.pre,{children:(0,t.jsx)(i.code,{className:"language-js",children:'const MainViewFactory = brackets.getModule("view/MainViewFactory")\n'})}),"\n",(0,t.jsx)("a",{name:"module_view/MainViewFactory"}),"\n",(0,t.jsx)(i.h2,{id:"viewmainviewfactory",children:"view/MainViewFactory"}),"\n",(0,t.jsx)(i.p,{children:"MainViewFactory is a singleton for managing view factories."}),"\n",(0,t.jsx)(i.p,{children:"Registering a view factory:"}),"\n",(0,t.jsx)(i.pre,{children:(0,t.jsx)(i.code,{className:"language-js",children:' registerViewFactory({\n canOpenFile: function (fullPath) {\n return (fullPath.slice(-4) === ".ico");\n },\n openFile: function(file, pane) {\n return createIconView(file, pane);\n }\n });\n'})}),"\n",(0,t.jsx)(i.p,{children:"The openFile method is used to open the file and construct\na view of it. Implementation should add the view to the pane"}),"\n",(0,t.jsx)(i.pre,{children:(0,t.jsx)(i.code,{className:"language-js",children:" function createIconView(file, pane) {\n // IconView will construct its DOM and append\n // it to pane.$el\n var view = new IconView(file, pane.$el);\n // Then tell the pane to add it to\n // its view map and show it\n pane.addView(view, true);\n return new $.Deferred().resolve().promise();\n }\n"})}),"\n",(0,t.jsx)(i.p,{children:"Factories should only create 1 view of a file per pane. Brackets currently only supports 1 view of\na file open at a given time but that may change to allow the same file open in more than 1 pane. Therefore\nFactories can do a simple check to see if a view already exists and show it before creating a new one:"}),"\n",(0,t.jsx)(i.pre,{children:(0,t.jsx)(i.code,{className:"language-js",children:" var view = pane.getViewForPath(file.fullPath);\n if (view) {\n pane.showView(view);\n } else {\n return createIconView(file, pane);\n }\n"})}),"\n",(0,t.jsxs)(i.ul,{children:["\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.a,{href:"#module_view/MainViewFactory",children:"view/MainViewFactory"}),"\n",(0,t.jsxs)(i.ul,{children:["\n",(0,t.jsx)(i.li,{children:(0,t.jsx)(i.a,{href:"#module_view/MainViewFactory..registerViewFactory",children:".registerViewFactory(factory)"})}),"\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.a,{href:"#module_view/MainViewFactory..findSuitableFactoryForPath",children:".findSuitableFactoryForPath(fullPath)"})," \u21d2 ",(0,t.jsx)("code",{children:"Factory"})]}),"\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.a,{href:"#module_view/MainViewFactory..Factory",children:".Factory"})," : ",(0,t.jsx)("code",{children:"Object"})]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)("a",{name:"module_view/MainViewFactory..registerViewFactory"}),"\n",(0,t.jsx)(i.h3,{id:"viewmainviewfactoryregisterviewfactoryfactory",children:"view/MainViewFactory.registerViewFactory(factory)"}),"\n",(0,t.jsx)(i.p,{children:"Registers a view factory"}),"\n",(0,t.jsxs)(i.p,{children:[(0,t.jsx)(i.strong,{children:"Kind"}),": inner method of ",(0,t.jsx)(i.a,{href:"#module_view/MainViewFactory",children:(0,t.jsx)("code",{children:"view/MainViewFactory"})})]}),"\n",(0,t.jsxs)(i.table,{children:[(0,t.jsx)(i.thead,{children:(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.th,{children:"Param"}),(0,t.jsx)(i.th,{children:"Type"}),(0,t.jsx)(i.th,{children:"Description"})]})}),(0,t.jsx)(i.tbody,{children:(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.td,{children:"factory"}),(0,t.jsx)(i.td,{children:(0,t.jsx)("code",{children:"Factory"})}),(0,t.jsx)(i.td,{children:"The view factory to register."})]})})]}),"\n",(0,t.jsx)("a",{name:"module_view/MainViewFactory..findSuitableFactoryForPath"}),"\n",(0,t.jsxs)(i.h3,{id:"viewmainviewfactoryfindsuitablefactoryforpathfullpath--factory",children:["view/MainViewFactory.findSuitableFactoryForPath(fullPath) \u21d2 ",(0,t.jsx)("code",{children:"Factory"})]}),"\n",(0,t.jsx)(i.p,{children:"Finds a factory that can open the specified file"}),"\n",(0,t.jsxs)(i.p,{children:[(0,t.jsx)(i.strong,{children:"Kind"}),": inner method of ",(0,t.jsx)(i.a,{href:"#module_view/MainViewFactory",children:(0,t.jsx)("code",{children:"view/MainViewFactory"})}),(0,t.jsx)(i.br,{}),"\n",(0,t.jsx)(i.strong,{children:"Returns"}),": ",(0,t.jsx)("code",{children:"Factory"})," - A factory that can create a view for the path or undefined if there isn't one."]}),"\n",(0,t.jsxs)(i.table,{children:[(0,t.jsx)(i.thead,{children:(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.th,{children:"Param"}),(0,t.jsx)(i.th,{children:"Type"}),(0,t.jsx)(i.th,{children:"Description"})]})}),(0,t.jsx)(i.tbody,{children:(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.td,{children:"fullPath"}),(0,t.jsx)(i.td,{children:(0,t.jsx)("code",{children:"string"})}),(0,t.jsx)(i.td,{children:"The file to open."})]})})]}),"\n",(0,t.jsx)("a",{name:"module_view/MainViewFactory..Factory"}),"\n",(0,t.jsxs)(i.h3,{id:"viewmainviewfactoryfactory--object",children:["view/MainViewFactory.Factory : ",(0,t.jsx)("code",{children:"Object"})]}),"\n",(0,t.jsxs)(i.p,{children:[(0,t.jsx)(i.strong,{children:"Kind"}),": inner typedef of ",(0,t.jsx)(i.a,{href:"#module_view/MainViewFactory",children:(0,t.jsx)("code",{children:"view/MainViewFactory"})}),(0,t.jsx)(i.br,{}),"\n",(0,t.jsx)(i.strong,{children:"Properties"})]}),"\n",(0,t.jsxs)(i.table,{children:[(0,t.jsx)(i.thead,{children:(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.th,{children:"Name"}),(0,t.jsx)(i.th,{children:"Type"}),(0,t.jsx)(i.th,{children:"Description"})]})}),(0,t.jsxs)(i.tbody,{children:[(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.td,{children:"canOpenFile"}),(0,t.jsx)(i.td,{children:(0,t.jsx)("code",{children:"function"})}),(0,t.jsx)(i.td,{children:"Checks if the factory can open the file by its path."})]}),(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.td,{children:"openFile"}),(0,t.jsx)(i.td,{children:(0,t.jsx)("code",{children:"function"})}),(0,t.jsx)(i.td,{children:"Function to open the file and return a promise."})]})]})]})]})}function h(e={}){const{wrapper:i}={...(0,a.R)(),...e.components};return i?(0,t.jsx)(i,{...e,children:(0,t.jsx)(d,{...e})}):d(e)}},28453:(e,i,n)=>{n.d(i,{R:()=>c,x:()=>o});var r=n(96540);const t={},a=r.createContext(t);function c(e){const i=r.useContext(a);return r.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function o(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:c(e.components),r.createElement(a.Provider,{value:i},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/2c0fe721.2193b0a4.js b/assets/js/2c0fe721.2193b0a4.js new file mode 100644 index 00000000..86716367 --- /dev/null +++ b/assets/js/2c0fe721.2193b0a4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4471],{17034:(e,r,n)=>{n.r(r),n.d(r,{assets:()=>l,contentTitle:()=>d,default:()=>x,frontMatter:()=>t,metadata:()=>o,toc:()=>c});const o=JSON.parse('{"id":"API-Reference/worker/IndexingWorker","title":"IndexingWorker","description":"Import :","source":"@site/api/API-Reference/worker/IndexingWorker.md","sourceDirName":"API-Reference/worker","slug":"/API-Reference/worker/IndexingWorker","permalink":"/api/API-Reference/worker/IndexingWorker","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"StatusBar","permalink":"/api/API-Reference/widgets/StatusBar"},"next":{"title":"WorkerComm","permalink":"/api/API-Reference/worker/WorkerComm"}}');var i=n(74848),s=n(28453);const t={},d=void 0,l={},c=[{value:"Import :",id:"import-",level:3},{value:"worker/IndexingWorker",id:"workerindexingworker",level:2},{value:"Extending the indexing worker",id:"extending-the-indexing-worker",level:2},{value:"worker/IndexingWorker.WorkerComm",id:"workerindexingworkerworkercomm",level:3},{value:""EVENT_CRAWL_STARTED"",id:"event_crawl_started",level:3},{value:""EVENT_CRAWL_PROGRESS"",id:"event_crawl_progress",level:3},{value:""EVENT_CRAWL_COMPLETE"",id:"event_crawl_complete",level:3}];function h(e){const r={a:"a",br:"br",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(r.h3,{id:"import-",children:"Import :"}),"\n",(0,i.jsx)(r.pre,{children:(0,i.jsx)(r.code,{className:"language-js",children:'const IndexingWorker = brackets.getModule("worker/IndexingWorker")\n'})}),"\n",(0,i.jsx)("a",{name:"module_worker/IndexingWorker"}),"\n",(0,i.jsx)(r.h2,{id:"workerindexingworker",children:"worker/IndexingWorker"}),"\n",(0,i.jsx)(r.p,{children:"Phoenix houses a file indexing worker which caches all cacheable files of a project in memory.\nThis module can be used to communicate with the Index and extend it by attaching new js worker scripts to the\nindexing worker as discussed below. Any extension that works on a large number of files should use the indexing\nworker cache to free up the main thread of heavy file access."}),"\n",(0,i.jsxs)(r.ul,{children:["\n",(0,i.jsxs)(r.li,{children:["Extensions performing large compute tasks should create their own worker and may use easy util methods in\n",(0,i.jsx)(r.a,{href:"./WorkerComm",children:"worker/WorkerComm"})," to communicate with the web worker."]}),"\n"]}),"\n",(0,i.jsx)(r.h2,{id:"extending-the-indexing-worker",children:"Extending the indexing worker"}),"\n",(0,i.jsx)(r.p,{children:"You can add your own custom scripts to the indexing worker by following the below example. Suppose you have an\nextension folder with the following structure:"}),"\n",(0,i.jsx)(r.pre,{children:(0,i.jsx)(r.code,{children:"myExtensionFolder\n\u2502 my_worker.js // the script that you need to attach to the web worker\n\u2502 main.js\n"})}),"\n",(0,i.jsxs)(r.p,{children:["In ",(0,i.jsx)(r.code,{children:"main.js"})," extension module, we can import ",(0,i.jsx)(r.code,{children:"my_worker.js"})," script into ",(0,i.jsx)(r.code,{children:"IndexingWorker"})," by:"]}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.strong,{children:"Example"})}),"\n",(0,i.jsx)(r.pre,{children:(0,i.jsx)(r.code,{className:"language-js",children:'let ExtensionUtils = brackets.getModule("utils/ExtensionUtils");\nlet workerPath = ExtensionUtils.getModulePath(module, "my_worker.js")\nIndexingWorker.loadScriptInWorker(workerPath);\n'})}),"\n",(0,i.jsx)(r.p,{children:"Once the worker script is loaded with the above step:"}),"\n",(0,i.jsxs)(r.ul,{children:["\n",(0,i.jsxs)(r.li,{children:["Phoenix can communicate with worker using the ",(0,i.jsx)(r.code,{children:"IndexingWorker"})," reference in Phoenix."]}),"\n",(0,i.jsxs)(r.li,{children:["Worker can communicate with Phoenix with the global ",(0,i.jsx)(r.code,{children:"WorkerComm"})," reference within the Indexing worker.\nAll utility methods in module ",(0,i.jsx)(r.a,{href:"./WorkerComm",children:"worker/WorkerComm"})," can be used for worker communication."]}),"\n"]}),"\n",(0,i.jsxs)(r.p,{children:["A global constant ",(0,i.jsx)(r.code,{children:"Phoenix.baseURL"})," is available in the worker context to get the base url from which phoenix was\nlaunched."]}),"\n",(0,i.jsxs)(r.p,{children:["NB: You can use all util methods available in ",(0,i.jsx)(r.code,{children:"worker/WorkerComm"})," as ",(0,i.jsx)(r.code,{children:"IndexingWorker"})," internally uses ",(0,i.jsx)(r.code,{children:"WorkerComm"}),"\nto communicate with the underlying worker thread."]}),"\n",(0,i.jsxs)(r.ul,{children:["\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#module_worker/IndexingWorker",children:"worker/IndexingWorker"}),"\n",(0,i.jsxs)(r.ul,{children:["\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"#module_worker/IndexingWorker..WorkerComm",children:".WorkerComm"})}),"\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"#event_EVENT_CRAWL_STARTED",children:'"EVENT_CRAWL_STARTED"'})}),"\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"#event_EVENT_CRAWL_PROGRESS",children:'"EVENT_CRAWL_PROGRESS"'})}),"\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"#event_EVENT_CRAWL_COMPLETE",children:'"EVENT_CRAWL_COMPLETE"'})}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)("a",{name:"module_worker/IndexingWorker..WorkerComm"}),"\n",(0,i.jsx)(r.h3,{id:"workerindexingworkerworkercomm",children:"worker/IndexingWorker.WorkerComm"}),"\n",(0,i.jsxs)(r.p,{children:["To communicate between the IndexingWorker and Phoenix, the following methods are available:\n",(0,i.jsx)(r.code,{children:"loadScriptInWorker"}),", ",(0,i.jsx)(r.code,{children:"execPeer"}),", ",(0,i.jsx)(r.code,{children:"setExecHandler"}),", ",(0,i.jsx)(r.code,{children:"triggerPeer"})," and other APIs described\nin module ",(0,i.jsx)(r.code,{children:"worker/WorkerComm"}),".\nThe above methods can be used with either ",(0,i.jsx)(r.code,{children:"IndexingWorker"})," reference within Phoenix\nor the global ",(0,i.jsx)(r.code,{children:"WorkerComm"})," reference within the Indexing worker. (See example below.)"]}),"\n",(0,i.jsxs)(r.p,{children:["See ",(0,i.jsx)(r.a,{href:"./WorkerComm",children:"worker/WorkerComm"})," for detailed API docs."]}),"\n",(0,i.jsx)(r.pre,{children:(0,i.jsx)(r.code,{className:"language-js",children:'// To Execute a named function `extensionName.sayHello` in the worker from phoenix\n\n// in my_worker.js. It is a good practice to prefix your `[extensionName]`\n// to exec handler to prevent name collisions with other extensions.\n\nWorkerComm.setExecHandler("extensionName.sayHello", (arg)=>{\n console.log("hello from worker ", arg); // prints "hello from worker phoenix"\n return "Hello Phoenix";\n});\n\n// In Phoenix/extension\nlet workerMessage = await IndexingWorker.execPeer("extensionName.sayHello", "phoenix");\nconsole.log(workerMessage); // prints "Hello Phoenix"\n'})}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": inner property of ",(0,i.jsx)(r.a,{href:"#module_worker/IndexingWorker",children:(0,i.jsx)("code",{children:"worker/IndexingWorker"})})]}),"\n",(0,i.jsx)("a",{name:"event_EVENT_CRAWL_STARTED"}),"\n",(0,i.jsx)(r.h3,{id:"event_crawl_started",children:'"EVENT_CRAWL_STARTED"'}),"\n",(0,i.jsx)(r.p,{children:"Raised when crawling started in the indexing worker."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": event emitted by ",(0,i.jsx)(r.a,{href:"#module_worker/IndexingWorker",children:(0,i.jsx)("code",{children:"worker/IndexingWorker"})})]}),"\n",(0,i.jsx)("a",{name:"event_EVENT_CRAWL_PROGRESS"}),"\n",(0,i.jsx)(r.h3,{id:"event_crawl_progress",children:'"EVENT_CRAWL_PROGRESS"'}),"\n",(0,i.jsx)(r.p,{children:"Raised when crawling in progressing within the worker. The handler will receive the\nfollowing properties as parameter."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": event emitted by ",(0,i.jsx)(r.a,{href:"#module_worker/IndexingWorker",children:(0,i.jsx)("code",{children:"worker/IndexingWorker"})}),(0,i.jsx)(r.br,{}),"\n",(0,i.jsx)(r.strong,{children:"Properties"})]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Name"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"processed"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"number"})}),(0,i.jsx)(r.td,{children:"The number of files cached till now."})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"total"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"number"})}),(0,i.jsx)(r.td,{children:"Number of files to cache."})]})]})]}),"\n",(0,i.jsx)("a",{name:"event_EVENT_CRAWL_COMPLETE"}),"\n",(0,i.jsx)(r.h3,{id:"event_crawl_complete",children:'"EVENT_CRAWL_COMPLETE"'}),"\n",(0,i.jsx)(r.p,{children:"Raised when crawling is complete within the worker. The handler will receive the\nfollowing properties as parameter."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": event emitted by ",(0,i.jsx)(r.a,{href:"#module_worker/IndexingWorker",children:(0,i.jsx)("code",{children:"worker/IndexingWorker"})}),(0,i.jsx)(r.br,{}),"\n",(0,i.jsx)(r.strong,{children:"Properties"})]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Name"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"numFilesCached"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"number"})}),(0,i.jsx)(r.td,{})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"cacheSizeBytes"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"number"})}),(0,i.jsx)(r.td,{})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"crawlTimeMs"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"number"})}),(0,i.jsx)(r.td,{children:"in milliseconds."})]})]})]})]})}function x(e={}){const{wrapper:r}={...(0,s.R)(),...e.components};return r?(0,i.jsx)(r,{...e,children:(0,i.jsx)(h,{...e})}):h(e)}},28453:(e,r,n)=>{n.d(r,{R:()=>t,x:()=>d});var o=n(96540);const i={},s=o.createContext(i);function t(e){const r=o.useContext(s);return o.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function d(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:t(e.components),o.createElement(s.Provider,{value:r},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/2c35f24d.1b36da2a.js b/assets/js/2c35f24d.1b36da2a.js new file mode 100644 index 00000000..9168ec19 --- /dev/null +++ b/assets/js/2c35f24d.1b36da2a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8622],{57580:(e,i,d)=>{d.r(i),d.d(i,{assets:()=>c,contentTitle:()=>t,default:()=>b,frontMatter:()=>a,metadata:()=>s,toc:()=>l});const s=JSON.parse('{"id":"API-Reference/view/SidebarTabs","title":"SidebarTabs","description":"Import :","source":"@site/api/API-Reference/view/SidebarTabs.md","sourceDirName":"API-Reference/view","slug":"/API-Reference/view/SidebarTabs","permalink":"/api/API-Reference/view/SidebarTabs","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"PluginPanelView","permalink":"/api/API-Reference/view/PluginPanelView"},"next":{"title":"ThemeManager","permalink":"/api/API-Reference/view/ThemeManager"}}');var r=d(74848),n=d(28453);const a={},t=void 0,c={},l=[{value:"Import :",id:"import-",level:3},{value:"view/SidebarTabs",id:"viewsidebartabs",level:2},{value:"view/SidebarTabs.SIDEBAR_TAB_FILES : string",id:"viewsidebartabssidebar_tab_files--string",level:3},{value:"view/SidebarTabs.AI_TAB_GOOD_WIDTH : number",id:"viewsidebartabsai_tab_good_width--number",level:3},{value:"view/SidebarTabs.PREF_AI_WIDTH_SET_INITIAL",id:"viewsidebartabspref_ai_width_set_initial",level:3},{value:"view/SidebarTabs.EVENT_TAB_ADDED : string",id:"viewsidebartabsevent_tab_added--string",level:3},{value:"view/SidebarTabs.EVENT_TAB_REMOVED : string",id:"viewsidebartabsevent_tab_removed--string",level:3},{value:"view/SidebarTabs.EVENT_TAB_CHANGED : string",id:"viewsidebartabsevent_tab_changed--string",level:3},{value:"view/SidebarTabs.addTab(id, label, iconClass, [options])",id:"viewsidebartabsaddtabid-label-iconclass-options",level:3},{value:"view/SidebarTabs.addToTab(tabId, $content)",id:"viewsidebartabsaddtotabtabid-content",level:3},{value:"view/SidebarTabs.removeFromTab(tabId, $content)",id:"viewsidebartabsremovefromtabtabid-content",level:3},{value:"view/SidebarTabs.removeTab(id) \u21d2 boolean",id:"viewsidebartabsremovetabid--boolean",level:3},{value:"view/SidebarTabs.setActiveTab(id)",id:"viewsidebartabssetactivetabid",level:3},{value:"view/SidebarTabs.getActiveTab() \u21d2 string",id:"viewsidebartabsgetactivetab--string",level:3},{value:"view/SidebarTabs.TabDescriptor \u21d2 Array.<TabDescriptor>",id:"viewsidebartabstabdescriptor--arraytabdescriptor",level:3}];function h(e){const i={a:"a",br:"br",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,n.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(i.h3,{id:"import-",children:"Import :"}),"\n",(0,r.jsx)(i.pre,{children:(0,r.jsx)(i.code,{className:"language-js",children:'const SidebarTabs = brackets.getModule("view/SidebarTabs")\n'})}),"\n",(0,r.jsx)("a",{name:"module_view/SidebarTabs"}),"\n",(0,r.jsx)(i.h2,{id:"viewsidebartabs",children:"view/SidebarTabs"}),"\n",(0,r.jsxs)(i.p,{children:["SidebarTabs manages multiple tab panes within the sidebar. It inserts a\n",(0,r.jsx)(i.code,{children:"#navTabBar"})," element after ",(0,r.jsx)(i.code,{children:"#mainNavBar"})," and provides an API for registering\ntabs, associating DOM content with tabs, and switching between them."]}),"\n",(0,r.jsxs)(i.p,{children:["Existing sidebar children that are not explicitly associated with a tab via\n",(0,r.jsx)(i.code,{children:"addToTab"}),' are treated as belonging to the default "Files" tab. This means\nextensions that add DOM nodes to the sidebar will continue to work without\nany code changes.']}),"\n",(0,r.jsxs)(i.p,{children:["Tab switching works purely by toggling the ",(0,r.jsx)(i.code,{children:".sidebar-tab-hidden"})," CSS class\n(",(0,r.jsx)(i.code,{children:"display: none !important"}),"). No DOM reparenting or detaching occurs, so\ncached jQuery/DOM references held by extensions remain valid."]}),"\n",(0,r.jsxs)(i.ul,{children:["\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.a,{href:"#module_view/SidebarTabs",children:"view/SidebarTabs"}),"\n",(0,r.jsxs)(i.ul,{children:["\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.a,{href:"#module_view/SidebarTabs..SIDEBAR_TAB_FILES",children:".SIDEBAR_TAB_FILES"})," : ",(0,r.jsx)("code",{children:"string"})]}),"\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.a,{href:"#module_view/SidebarTabs..AI_TAB_GOOD_WIDTH",children:".AI_TAB_GOOD_WIDTH"})," : ",(0,r.jsx)("code",{children:"number"})]}),"\n",(0,r.jsx)(i.li,{children:(0,r.jsx)(i.a,{href:"#module_view/SidebarTabs..PREF_AI_WIDTH_SET_INITIAL",children:".PREF_AI_WIDTH_SET_INITIAL"})}),"\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.a,{href:"#module_view/SidebarTabs..EVENT_TAB_ADDED",children:".EVENT_TAB_ADDED"})," : ",(0,r.jsx)("code",{children:"string"})]}),"\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.a,{href:"#module_view/SidebarTabs..EVENT_TAB_REMOVED",children:".EVENT_TAB_REMOVED"})," : ",(0,r.jsx)("code",{children:"string"})]}),"\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.a,{href:"#module_view/SidebarTabs..EVENT_TAB_CHANGED",children:".EVENT_TAB_CHANGED"})," : ",(0,r.jsx)("code",{children:"string"})]}),"\n",(0,r.jsx)(i.li,{children:(0,r.jsx)(i.a,{href:"#module_view/SidebarTabs..addTab",children:".addTab(id, label, iconClass, [options])"})}),"\n",(0,r.jsx)(i.li,{children:(0,r.jsx)(i.a,{href:"#module_view/SidebarTabs..addToTab",children:".addToTab(tabId, $content)"})}),"\n",(0,r.jsx)(i.li,{children:(0,r.jsx)(i.a,{href:"#module_view/SidebarTabs..removeFromTab",children:".removeFromTab(tabId, $content)"})}),"\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.a,{href:"#module_view/SidebarTabs..removeTab",children:".removeTab(id)"})," \u21d2 ",(0,r.jsx)("code",{children:"boolean"})]}),"\n",(0,r.jsx)(i.li,{children:(0,r.jsx)(i.a,{href:"#module_view/SidebarTabs..setActiveTab",children:".setActiveTab(id)"})}),"\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.a,{href:"#module_view/SidebarTabs..getActiveTab",children:".getActiveTab()"})," \u21d2 ",(0,r.jsx)("code",{children:"string"})]}),"\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.a,{href:"#module_view/SidebarTabs..TabDescriptor",children:".TabDescriptor"})," \u21d2 ",(0,r.jsx)("code",{children:"Array."})]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)("a",{name:"module_view/SidebarTabs..SIDEBAR_TAB_FILES"}),"\n",(0,r.jsxs)(i.h3,{id:"viewsidebartabssidebar_tab_files--string",children:["view/SidebarTabs.SIDEBAR_TAB_FILES : ",(0,r.jsx)("code",{children:"string"})]}),"\n",(0,r.jsx)(i.p,{children:"The built-in Files tab id."}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Kind"}),": inner constant of ",(0,r.jsx)(i.a,{href:"#module_view/SidebarTabs",children:(0,r.jsx)("code",{children:"view/SidebarTabs"})})]}),"\n",(0,r.jsx)("a",{name:"module_view/SidebarTabs..AI_TAB_GOOD_WIDTH"}),"\n",(0,r.jsxs)(i.h3,{id:"viewsidebartabsai_tab_good_width--number",children:["view/SidebarTabs.AI_TAB_GOOD_WIDTH : ",(0,r.jsx)("code",{children:"number"})]}),"\n",(0,r.jsx)(i.p,{children:"Preferred sidebar width (px) when a non-files tab (e.g. AI) is\nfirst activated. Applied once if the current width is narrower."}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Kind"}),": inner constant of ",(0,r.jsx)(i.a,{href:"#module_view/SidebarTabs",children:(0,r.jsx)("code",{children:"view/SidebarTabs"})})]}),"\n",(0,r.jsx)("a",{name:"module_view/SidebarTabs..PREF_AI_WIDTH_SET_INITIAL"}),"\n",(0,r.jsx)(i.h3,{id:"viewsidebartabspref_ai_width_set_initial",children:"view/SidebarTabs.PREF_AI_WIDTH_SET_INITIAL"}),"\n",(0,r.jsx)(i.p,{children:"Preference key used to track whether the initial width bump has been applied."}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Kind"}),": inner constant of ",(0,r.jsx)(i.a,{href:"#module_view/SidebarTabs",children:(0,r.jsx)("code",{children:"view/SidebarTabs"})})]}),"\n",(0,r.jsx)("a",{name:"module_view/SidebarTabs..EVENT_TAB_ADDED"}),"\n",(0,r.jsxs)(i.h3,{id:"viewsidebartabsevent_tab_added--string",children:["view/SidebarTabs.EVENT_TAB_ADDED : ",(0,r.jsx)("code",{children:"string"})]}),"\n",(0,r.jsxs)(i.p,{children:["Fired when a new tab is registered via ",(0,r.jsx)(i.code,{children:"addTab"}),"."]}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Kind"}),": inner constant of ",(0,r.jsx)(i.a,{href:"#module_view/SidebarTabs",children:(0,r.jsx)("code",{children:"view/SidebarTabs"})})]}),"\n",(0,r.jsx)("a",{name:"module_view/SidebarTabs..EVENT_TAB_REMOVED"}),"\n",(0,r.jsxs)(i.h3,{id:"viewsidebartabsevent_tab_removed--string",children:["view/SidebarTabs.EVENT_TAB_REMOVED : ",(0,r.jsx)("code",{children:"string"})]}),"\n",(0,r.jsxs)(i.p,{children:["Fired when a tab is removed via ",(0,r.jsx)(i.code,{children:"removeTab"}),"."]}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Kind"}),": inner constant of ",(0,r.jsx)(i.a,{href:"#module_view/SidebarTabs",children:(0,r.jsx)("code",{children:"view/SidebarTabs"})})]}),"\n",(0,r.jsx)("a",{name:"module_view/SidebarTabs..EVENT_TAB_CHANGED"}),"\n",(0,r.jsxs)(i.h3,{id:"viewsidebartabsevent_tab_changed--string",children:["view/SidebarTabs.EVENT_TAB_CHANGED : ",(0,r.jsx)("code",{children:"string"})]}),"\n",(0,r.jsxs)(i.p,{children:["Fired when the active tab changes via ",(0,r.jsx)(i.code,{children:"setActiveTab"}),"."]}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Kind"}),": inner constant of ",(0,r.jsx)(i.a,{href:"#module_view/SidebarTabs",children:(0,r.jsx)("code",{children:"view/SidebarTabs"})})]}),"\n",(0,r.jsx)("a",{name:"module_view/SidebarTabs..addTab"}),"\n",(0,r.jsx)(i.h3,{id:"viewsidebartabsaddtabid-label-iconclass-options",children:"view/SidebarTabs.addTab(id, label, iconClass, [options])"}),"\n",(0,r.jsx)(i.p,{children:"Register a new sidebar tab."}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Kind"}),": inner method of ",(0,r.jsx)(i.a,{href:"#module_view/SidebarTabs",children:(0,r.jsx)("code",{children:"view/SidebarTabs"})})]}),"\n",(0,r.jsxs)(i.table,{children:[(0,r.jsx)(i.thead,{children:(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.th,{children:"Param"}),(0,r.jsx)(i.th,{children:"Type"}),(0,r.jsx)(i.th,{children:"Default"}),(0,r.jsx)(i.th,{children:"Description"})]})}),(0,r.jsxs)(i.tbody,{children:[(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"id"}),(0,r.jsx)(i.td,{children:(0,r.jsx)("code",{children:"string"})}),(0,r.jsx)(i.td,{}),(0,r.jsx)(i.td,{children:"Unique tab identifier"})]}),(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"label"}),(0,r.jsx)(i.td,{children:(0,r.jsx)("code",{children:"string"})}),(0,r.jsx)(i.td,{}),(0,r.jsx)(i.td,{children:"Display text shown in the tab bar"})]}),(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"iconClass"}),(0,r.jsx)(i.td,{children:(0,r.jsx)("code",{children:"string"})}),(0,r.jsx)(i.td,{}),(0,r.jsx)(i.td,{children:"FontAwesome (or other) icon class string"})]}),(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"[options]"}),(0,r.jsx)(i.td,{children:(0,r.jsx)("code",{children:"Object"})}),(0,r.jsx)(i.td,{}),(0,r.jsx)(i.td,{})]}),(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"[options.priority]"}),(0,r.jsx)(i.td,{children:(0,r.jsx)("code",{children:"number"})}),(0,r.jsx)(i.td,{children:(0,r.jsx)("code",{children:"100"})}),(0,r.jsx)(i.td,{children:"Lower values appear further left"})]})]})]}),"\n",(0,r.jsx)("a",{name:"module_view/SidebarTabs..addToTab"}),"\n",(0,r.jsx)(i.h3,{id:"viewsidebartabsaddtotabtabid-content",children:"view/SidebarTabs.addToTab(tabId, $content)"}),"\n",(0,r.jsxs)(i.p,{children:["Associate a DOM node (or jQuery element) with a tab. If the node is not\nalready a child of ",(0,r.jsx)(i.code,{children:"#sidebar"}),", it is appended. If the tab is not the\ncurrently active tab, the node is immediately hidden."]}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Kind"}),": inner method of ",(0,r.jsx)(i.a,{href:"#module_view/SidebarTabs",children:(0,r.jsx)("code",{children:"view/SidebarTabs"})})]}),"\n",(0,r.jsxs)(i.table,{children:[(0,r.jsx)(i.thead,{children:(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.th,{children:"Param"}),(0,r.jsx)(i.th,{children:"Type"}),(0,r.jsx)(i.th,{children:"Description"})]})}),(0,r.jsxs)(i.tbody,{children:[(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"tabId"}),(0,r.jsx)(i.td,{children:(0,r.jsx)("code",{children:"string"})}),(0,r.jsx)(i.td,{children:"The tab to associate with"})]}),(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"$content"}),(0,r.jsxs)(i.td,{children:[(0,r.jsx)("code",{children:"jQuery"})," | ",(0,r.jsx)("code",{children:"Element"})]}),(0,r.jsx)(i.td,{children:"DOM node or jQuery wrapper"})]})]})]}),"\n",(0,r.jsx)("a",{name:"module_view/SidebarTabs..removeFromTab"}),"\n",(0,r.jsx)(i.h3,{id:"viewsidebartabsremovefromtabtabid-content",children:"view/SidebarTabs.removeFromTab(tabId, $content)"}),"\n",(0,r.jsxs)(i.p,{children:["Remove a DOM node's association with a tab. If the node was appended by\n",(0,r.jsx)(i.code,{children:"addToTab"})," (was not originally in the sidebar) and is no longer\nassociated with any tab, it is also removed from the DOM."]}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Kind"}),": inner method of ",(0,r.jsx)(i.a,{href:"#module_view/SidebarTabs",children:(0,r.jsx)("code",{children:"view/SidebarTabs"})})]}),"\n",(0,r.jsxs)(i.table,{children:[(0,r.jsx)(i.thead,{children:(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.th,{children:"Param"}),(0,r.jsx)(i.th,{children:"Type"}),(0,r.jsx)(i.th,{children:"Description"})]})}),(0,r.jsxs)(i.tbody,{children:[(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"tabId"}),(0,r.jsx)(i.td,{children:(0,r.jsx)("code",{children:"string"})}),(0,r.jsx)(i.td,{children:"The tab to disassociate from"})]}),(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"$content"}),(0,r.jsxs)(i.td,{children:[(0,r.jsx)("code",{children:"jQuery"})," | ",(0,r.jsx)("code",{children:"Element"})]}),(0,r.jsx)(i.td,{children:"DOM node or jQuery wrapper"})]})]})]}),"\n",(0,r.jsx)("a",{name:"module_view/SidebarTabs..removeTab"}),"\n",(0,r.jsxs)(i.h3,{id:"viewsidebartabsremovetabid--boolean",children:["view/SidebarTabs.removeTab(id) \u21d2 ",(0,r.jsx)("code",{children:"boolean"})]}),"\n",(0,r.jsxs)(i.p,{children:["Remove a tab entirely. Only succeeds if all content has been removed via\n",(0,r.jsx)(i.code,{children:"removeFromTab"})," first. Returns false if content still exists."]}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Kind"}),": inner method of ",(0,r.jsx)(i.a,{href:"#module_view/SidebarTabs",children:(0,r.jsx)("code",{children:"view/SidebarTabs"})}),(0,r.jsx)(i.br,{}),"\n",(0,r.jsx)(i.strong,{children:"Returns"}),": ",(0,r.jsx)("code",{children:"boolean"})," - true if removed, false if content still associated"]}),"\n",(0,r.jsxs)(i.table,{children:[(0,r.jsx)(i.thead,{children:(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.th,{children:"Param"}),(0,r.jsx)(i.th,{children:"Type"}),(0,r.jsx)(i.th,{children:"Description"})]})}),(0,r.jsx)(i.tbody,{children:(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"id"}),(0,r.jsx)(i.td,{children:(0,r.jsx)("code",{children:"string"})}),(0,r.jsx)(i.td,{children:"The tab id to remove"})]})})]}),"\n",(0,r.jsx)("a",{name:"module_view/SidebarTabs..setActiveTab"}),"\n",(0,r.jsx)(i.h3,{id:"viewsidebartabssetactivetabid",children:"view/SidebarTabs.setActiveTab(id)"}),"\n",(0,r.jsx)(i.p,{children:"Switch the active sidebar tab. Shows nodes associated with the target\ntab, hides all others."}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Kind"}),": inner method of ",(0,r.jsx)(i.a,{href:"#module_view/SidebarTabs",children:(0,r.jsx)("code",{children:"view/SidebarTabs"})})]}),"\n",(0,r.jsxs)(i.table,{children:[(0,r.jsx)(i.thead,{children:(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.th,{children:"Param"}),(0,r.jsx)(i.th,{children:"Type"}),(0,r.jsx)(i.th,{children:"Description"})]})}),(0,r.jsx)(i.tbody,{children:(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"id"}),(0,r.jsx)(i.td,{children:(0,r.jsx)("code",{children:"string"})}),(0,r.jsx)(i.td,{children:"The tab id to activate"})]})})]}),"\n",(0,r.jsx)("a",{name:"module_view/SidebarTabs..getActiveTab"}),"\n",(0,r.jsxs)(i.h3,{id:"viewsidebartabsgetactivetab--string",children:["view/SidebarTabs.getActiveTab() \u21d2 ",(0,r.jsx)("code",{children:"string"})]}),"\n",(0,r.jsx)(i.p,{children:"Get the currently active tab id."}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Kind"}),": inner method of ",(0,r.jsx)(i.a,{href:"#module_view/SidebarTabs",children:(0,r.jsx)("code",{children:"view/SidebarTabs"})})]}),"\n",(0,r.jsx)("a",{name:"module_view/SidebarTabs..TabDescriptor"}),"\n",(0,r.jsxs)(i.h3,{id:"viewsidebartabstabdescriptor--arraytabdescriptor",children:["view/SidebarTabs.TabDescriptor \u21d2 ",(0,r.jsx)("code",{children:"Array."})]}),"\n",(0,r.jsx)(i.p,{children:"Get an array of all registered tab descriptors."}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Kind"}),": inner typedef of ",(0,r.jsx)(i.a,{href:"#module_view/SidebarTabs",children:(0,r.jsx)("code",{children:"view/SidebarTabs"})}),(0,r.jsx)(i.br,{}),"\n",(0,r.jsx)(i.strong,{children:"Properties"})]}),"\n",(0,r.jsxs)(i.table,{children:[(0,r.jsx)(i.thead,{children:(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.th,{children:"Name"}),(0,r.jsx)(i.th,{children:"Type"}),(0,r.jsx)(i.th,{children:"Description"})]})}),(0,r.jsxs)(i.tbody,{children:[(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"id"}),(0,r.jsx)(i.td,{children:(0,r.jsx)("code",{children:"string"})}),(0,r.jsx)(i.td,{children:"Unique tab identifier"})]}),(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"label"}),(0,r.jsx)(i.td,{children:(0,r.jsx)("code",{children:"string"})}),(0,r.jsx)(i.td,{children:"Display text shown in the tab bar"})]}),(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"iconClass"}),(0,r.jsx)(i.td,{children:(0,r.jsx)("code",{children:"string"})}),(0,r.jsx)(i.td,{children:"Icon class string"})]}),(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"priority"}),(0,r.jsx)(i.td,{children:(0,r.jsx)("code",{children:"number"})}),(0,r.jsx)(i.td,{children:"Sort priority (lower = further left)"})]})]})]})]})}function b(e={}){const{wrapper:i}={...(0,n.R)(),...e.components};return i?(0,r.jsx)(i,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},28453:(e,i,d)=>{d.d(i,{R:()=>a,x:()=>t});var s=d(96540);const r={},n=s.createContext(r);function a(e){const i=s.useContext(n);return s.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function t(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:a(e.components),s.createElement(n.Provider,{value:i},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/2d07e974.146cae03.js b/assets/js/2d07e974.146cae03.js new file mode 100644 index 00000000..e05cb4a1 --- /dev/null +++ b/assets/js/2d07e974.146cae03.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8717],{65071:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>o,contentTitle:()=>d,default:()=>x,frontMatter:()=>i,metadata:()=>s,toc:()=>l});const s=JSON.parse('{"id":"API-Reference/utils/TokenUtils","title":"TokenUtils","description":"Import :","source":"@site/api/API-Reference/utils/TokenUtils.md","sourceDirName":"API-Reference/utils","slug":"/API-Reference/utils/TokenUtils","permalink":"/api/API-Reference/utils/TokenUtils","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"StringUtils","permalink":"/api/API-Reference/utils/StringUtils"},"next":{"title":"ValidationUtils","permalink":"/api/API-Reference/utils/ValidationUtils"}}');var c=t(74848),r=t(28453);const i={},d=void 0,o={},l=[{value:"Import :",id:"import-",level:3},{value:"_",id:"_",level:2},{value:"getTokenAt(cm, pos, precise) \u21d2 Object",id:"gettokenatcm-pos-precise--object",level:2},{value:"getInitialContext(cm, pos) \u21d2 Object",id:"getinitialcontextcm-pos--object",level:2},{value:"movePrevToken(ctx, [precise]) \u21d2 boolean",id:"moveprevtokenctx-precise--boolean",level:2},{value:"isAtStart(ctx) \u21d2 boolean",id:"isatstartctx--boolean",level:2},{value:"moveNextToken(ctx, [precise]) \u21d2 boolean",id:"movenexttokenctx-precise--boolean",level:2},{value:"isAtEnd(ctx) \u21d2 boolean",id:"isatendctx--boolean",level:2},{value:"moveSkippingWhitespace(moveFxn, ctx) \u21d2 boolean",id:"moveskippingwhitespacemovefxn-ctx--boolean",level:2},{value:"offsetInToken(context) \u21d2 number",id:"offsetintokencontext--number",level:2},{value:"getModeAt(cm, pos, precise) \u21d2 Object",id:"getmodeatcm-pos-precise--object",level:2}];function h(e){const n={br:"br",code:"code",h2:"h2",h3:"h3",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,r.R)(),...e.components};return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(n.h3,{id:"import-",children:"Import :"}),"\n",(0,c.jsx)(n.pre,{children:(0,c.jsx)(n.code,{className:"language-js",children:'const TokenUtils = brackets.getModule("utils/TokenUtils")\n'})}),"\n",(0,c.jsx)("a",{name:"_"}),"\n",(0,c.jsx)(n.h2,{id:"_",children:"_"}),"\n",(0,c.jsx)(n.p,{children:"Functions for iterating through tokens in the current editor buffer. Useful for doing\nlight parsing that can rely purely on information gathered by the code coloring mechanism."}),"\n",(0,c.jsxs)(n.p,{children:[(0,c.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,c.jsx)("a",{name:"getTokenAt"}),"\n",(0,c.jsxs)(n.h2,{id:"gettokenatcm-pos-precise--object",children:["getTokenAt(cm, pos, precise) \u21d2 ",(0,c.jsx)("code",{children:"Object"})]}),"\n",(0,c.jsx)(n.p,{children:"Like cm.getTokenAt, but with caching. Way more performant for long lines."}),"\n",(0,c.jsxs)(n.p,{children:[(0,c.jsx)(n.strong,{children:"Kind"}),": global function",(0,c.jsx)(n.br,{}),"\n",(0,c.jsx)(n.strong,{children:"Returns"}),": ",(0,c.jsx)("code",{children:"Object"})," - Token for position"]}),"\n",(0,c.jsxs)(n.table,{children:[(0,c.jsx)(n.thead,{children:(0,c.jsxs)(n.tr,{children:[(0,c.jsx)(n.th,{children:"Param"}),(0,c.jsx)(n.th,{children:"Type"}),(0,c.jsx)(n.th,{children:"Description"})]})}),(0,c.jsxs)(n.tbody,{children:[(0,c.jsxs)(n.tr,{children:[(0,c.jsx)(n.td,{children:"cm"}),(0,c.jsx)(n.td,{children:(0,c.jsx)("code",{children:"CodeMirror"})}),(0,c.jsx)(n.td,{})]}),(0,c.jsxs)(n.tr,{children:[(0,c.jsx)(n.td,{children:"pos"}),(0,c.jsx)(n.td,{children:(0,c.jsx)("code",{children:"Object"})}),(0,c.jsx)(n.td,{})]}),(0,c.jsxs)(n.tr,{children:[(0,c.jsx)(n.td,{children:"precise"}),(0,c.jsx)(n.td,{children:(0,c.jsx)("code",{children:"boolean"})}),(0,c.jsx)(n.td,{children:"If given, results in more current results. Suppresses caching."})]})]})]}),"\n",(0,c.jsx)("a",{name:"getInitialContext"}),"\n",(0,c.jsxs)(n.h2,{id:"getinitialcontextcm-pos--object",children:["getInitialContext(cm, pos) \u21d2 ",(0,c.jsx)("code",{children:"Object"})]}),"\n",(0,c.jsx)(n.p,{children:"Creates a context object for the given editor and position, suitable for passing to the\nmove functions."}),"\n",(0,c.jsxs)(n.p,{children:[(0,c.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,c.jsxs)(n.table,{children:[(0,c.jsx)(n.thead,{children:(0,c.jsxs)(n.tr,{children:[(0,c.jsx)(n.th,{children:"Param"}),(0,c.jsx)(n.th,{children:"Type"})]})}),(0,c.jsxs)(n.tbody,{children:[(0,c.jsxs)(n.tr,{children:[(0,c.jsx)(n.td,{children:"cm"}),(0,c.jsx)(n.td,{children:(0,c.jsx)("code",{children:"CodeMirror"})})]}),(0,c.jsxs)(n.tr,{children:[(0,c.jsx)(n.td,{children:"pos"}),(0,c.jsx)(n.td,{children:(0,c.jsx)("code",{children:"Object"})})]})]})]}),"\n",(0,c.jsx)("a",{name:"movePrevToken"}),"\n",(0,c.jsxs)(n.h2,{id:"moveprevtokenctx-precise--boolean",children:["movePrevToken(ctx, [precise]) \u21d2 ",(0,c.jsx)("code",{children:"boolean"})]}),"\n",(0,c.jsx)(n.p,{children:"Moves the given context backwards by one token."}),"\n",(0,c.jsxs)(n.p,{children:[(0,c.jsx)(n.strong,{children:"Kind"}),": global function",(0,c.jsx)(n.br,{}),"\n",(0,c.jsx)(n.strong,{children:"Returns"}),": ",(0,c.jsx)("code",{children:"boolean"})," - whether the context changed"]}),"\n",(0,c.jsxs)(n.table,{children:[(0,c.jsx)(n.thead,{children:(0,c.jsxs)(n.tr,{children:[(0,c.jsx)(n.th,{children:"Param"}),(0,c.jsx)(n.th,{children:"Type"}),(0,c.jsx)(n.th,{children:"Description"})]})}),(0,c.jsxs)(n.tbody,{children:[(0,c.jsxs)(n.tr,{children:[(0,c.jsx)(n.td,{children:"ctx"}),(0,c.jsx)(n.td,{children:(0,c.jsx)("code",{children:"Object"})}),(0,c.jsx)(n.td,{})]}),(0,c.jsxs)(n.tr,{children:[(0,c.jsx)(n.td,{children:"[precise]"}),(0,c.jsx)(n.td,{children:(0,c.jsx)("code",{children:"boolean"})}),(0,c.jsx)(n.td,{children:"If code is being edited, use true (default) for accuracy. If parsing unchanging code, use false to use cache for performance."})]})]})]}),"\n",(0,c.jsx)("a",{name:"isAtStart"}),"\n",(0,c.jsxs)(n.h2,{id:"isatstartctx--boolean",children:["isAtStart(ctx) \u21d2 ",(0,c.jsx)("code",{children:"boolean"})]}),"\n",(0,c.jsxs)(n.p,{children:[(0,c.jsx)(n.strong,{children:"Kind"}),": global function",(0,c.jsx)(n.br,{}),"\n",(0,c.jsx)(n.strong,{children:"Returns"}),": ",(0,c.jsx)("code",{children:"boolean"})," - true if movePrevToken() would return false without changing pos"]}),"\n",(0,c.jsxs)(n.table,{children:[(0,c.jsx)(n.thead,{children:(0,c.jsxs)(n.tr,{children:[(0,c.jsx)(n.th,{children:"Param"}),(0,c.jsx)(n.th,{children:"Type"})]})}),(0,c.jsx)(n.tbody,{children:(0,c.jsxs)(n.tr,{children:[(0,c.jsx)(n.td,{children:"ctx"}),(0,c.jsx)(n.td,{children:(0,c.jsx)("code",{children:"Object"})})]})})]}),"\n",(0,c.jsx)("a",{name:"moveNextToken"}),"\n",(0,c.jsxs)(n.h2,{id:"movenexttokenctx-precise--boolean",children:["moveNextToken(ctx, [precise]) \u21d2 ",(0,c.jsx)("code",{children:"boolean"})]}),"\n",(0,c.jsx)(n.p,{children:"Moves the given context forward by one token."}),"\n",(0,c.jsxs)(n.p,{children:[(0,c.jsx)(n.strong,{children:"Kind"}),": global function",(0,c.jsx)(n.br,{}),"\n",(0,c.jsx)(n.strong,{children:"Returns"}),": ",(0,c.jsx)("code",{children:"boolean"})," - whether the context changed"]}),"\n",(0,c.jsxs)(n.table,{children:[(0,c.jsx)(n.thead,{children:(0,c.jsxs)(n.tr,{children:[(0,c.jsx)(n.th,{children:"Param"}),(0,c.jsx)(n.th,{children:"Type"}),(0,c.jsx)(n.th,{children:"Description"})]})}),(0,c.jsxs)(n.tbody,{children:[(0,c.jsxs)(n.tr,{children:[(0,c.jsx)(n.td,{children:"ctx"}),(0,c.jsx)(n.td,{children:(0,c.jsx)("code",{children:"Object"})}),(0,c.jsx)(n.td,{})]}),(0,c.jsxs)(n.tr,{children:[(0,c.jsx)(n.td,{children:"[precise]"}),(0,c.jsx)(n.td,{children:(0,c.jsx)("code",{children:"boolean"})}),(0,c.jsx)(n.td,{children:"If code is being edited, use true (default) for accuracy. If parsing unchanging code, use false to use cache for performance."})]})]})]}),"\n",(0,c.jsx)("a",{name:"isAtEnd"}),"\n",(0,c.jsxs)(n.h2,{id:"isatendctx--boolean",children:["isAtEnd(ctx) \u21d2 ",(0,c.jsx)("code",{children:"boolean"})]}),"\n",(0,c.jsxs)(n.p,{children:[(0,c.jsx)(n.strong,{children:"Kind"}),": global function",(0,c.jsx)(n.br,{}),"\n",(0,c.jsx)(n.strong,{children:"Returns"}),": ",(0,c.jsx)("code",{children:"boolean"})," - true if moveNextToken() would return false without changing pos"]}),"\n",(0,c.jsxs)(n.table,{children:[(0,c.jsx)(n.thead,{children:(0,c.jsxs)(n.tr,{children:[(0,c.jsx)(n.th,{children:"Param"}),(0,c.jsx)(n.th,{children:"Type"})]})}),(0,c.jsx)(n.tbody,{children:(0,c.jsxs)(n.tr,{children:[(0,c.jsx)(n.td,{children:"ctx"}),(0,c.jsx)(n.td,{children:(0,c.jsx)("code",{children:"Object"})})]})})]}),"\n",(0,c.jsx)("a",{name:"moveSkippingWhitespace"}),"\n",(0,c.jsxs)(n.h2,{id:"moveskippingwhitespacemovefxn-ctx--boolean",children:["moveSkippingWhitespace(moveFxn, ctx) \u21d2 ",(0,c.jsx)("code",{children:"boolean"})]}),"\n",(0,c.jsx)(n.p,{children:"Moves the given context in the given direction, skipping any whitespace it hits."}),"\n",(0,c.jsxs)(n.p,{children:[(0,c.jsx)(n.strong,{children:"Kind"}),": global function",(0,c.jsx)(n.br,{}),"\n",(0,c.jsx)(n.strong,{children:"Returns"}),": ",(0,c.jsx)("code",{children:"boolean"})," - whether the context changed"]}),"\n",(0,c.jsxs)(n.table,{children:[(0,c.jsx)(n.thead,{children:(0,c.jsxs)(n.tr,{children:[(0,c.jsx)(n.th,{children:"Param"}),(0,c.jsx)(n.th,{children:"Type"}),(0,c.jsx)(n.th,{children:"Description"})]})}),(0,c.jsxs)(n.tbody,{children:[(0,c.jsxs)(n.tr,{children:[(0,c.jsx)(n.td,{children:"moveFxn"}),(0,c.jsx)(n.td,{children:(0,c.jsx)("code",{children:"function"})}),(0,c.jsx)(n.td,{children:"the function to move the context"})]}),(0,c.jsxs)(n.tr,{children:[(0,c.jsx)(n.td,{children:"ctx"}),(0,c.jsx)(n.td,{children:(0,c.jsx)("code",{children:"Object"})}),(0,c.jsx)(n.td,{})]})]})]}),"\n",(0,c.jsx)("a",{name:"offsetInToken"}),"\n",(0,c.jsxs)(n.h2,{id:"offsetintokencontext--number",children:["offsetInToken(context) \u21d2 ",(0,c.jsx)("code",{children:"number"})]}),"\n",(0,c.jsx)(n.p,{children:"In the given context, get the character offset of pos from the start of the token."}),"\n",(0,c.jsxs)(n.p,{children:[(0,c.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,c.jsxs)(n.table,{children:[(0,c.jsx)(n.thead,{children:(0,c.jsxs)(n.tr,{children:[(0,c.jsx)(n.th,{children:"Param"}),(0,c.jsx)(n.th,{children:"Type"})]})}),(0,c.jsx)(n.tbody,{children:(0,c.jsxs)(n.tr,{children:[(0,c.jsx)(n.td,{children:"context"}),(0,c.jsx)(n.td,{children:(0,c.jsx)("code",{children:"Object"})})]})})]}),"\n",(0,c.jsx)("a",{name:"getModeAt"}),"\n",(0,c.jsxs)(n.h2,{id:"getmodeatcm-pos-precise--object",children:["getModeAt(cm, pos, precise) \u21d2 ",(0,c.jsx)("code",{children:"Object"})]}),"\n",(0,c.jsx)(n.p,{children:"Returns the mode object and mode name string at a given position"}),"\n",(0,c.jsxs)(n.p,{children:[(0,c.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,c.jsxs)(n.table,{children:[(0,c.jsx)(n.thead,{children:(0,c.jsxs)(n.tr,{children:[(0,c.jsx)(n.th,{children:"Param"}),(0,c.jsx)(n.th,{children:"Type"}),(0,c.jsx)(n.th,{children:"Description"})]})}),(0,c.jsxs)(n.tbody,{children:[(0,c.jsxs)(n.tr,{children:[(0,c.jsx)(n.td,{children:"cm"}),(0,c.jsx)(n.td,{children:(0,c.jsx)("code",{children:"CodeMirror"})}),(0,c.jsx)(n.td,{children:"CodeMirror instance"})]}),(0,c.jsxs)(n.tr,{children:[(0,c.jsx)(n.td,{children:"pos"}),(0,c.jsx)(n.td,{children:(0,c.jsx)("code",{children:"Object"})}),(0,c.jsx)(n.td,{children:"Position to query for mode"})]}),(0,c.jsxs)(n.tr,{children:[(0,c.jsx)(n.td,{children:"precise"}),(0,c.jsx)(n.td,{children:(0,c.jsx)("code",{children:"boolean"})}),(0,c.jsx)(n.td,{children:"If given, results in more current results. Suppresses caching."})]})]})]})]})}function x(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,c.jsx)(n,{...e,children:(0,c.jsx)(h,{...e})}):h(e)}},28453:(e,n,t)=>{t.d(n,{R:()=>i,x:()=>d});var s=t(96540);const c={},r=s.createContext(c);function i(e){const n=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(c):e.components||c:i(e.components),s.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/2d109c06.7def70d2.js b/assets/js/2d109c06.7def70d2.js new file mode 100644 index 00000000..40c9b2ba --- /dev/null +++ b/assets/js/2d109c06.7def70d2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3668],{62162:e=>{e.exports=JSON.parse('{"tag":{"label":"Code Editor","permalink":"/blog/tags/code-editor","allTagsPath":"/blog/tags","count":1,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/code-editor","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]); \ No newline at end of file diff --git a/assets/js/2dd03cc1.3b86b0da.js b/assets/js/2dd03cc1.3b86b0da.js new file mode 100644 index 00000000..ddcf69df --- /dev/null +++ b/assets/js/2dd03cc1.3b86b0da.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4683],{56715:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>o,contentTitle:()=>r,default:()=>l,frontMatter:()=>a,metadata:()=>s,toc:()=>u});const s=JSON.parse('{"id":"How-To/Menus","title":"Add Menus, Menu items and Keyboard Shortcuts","description":"This document outlines the basic features of working with Menus, including:","source":"@site/api/08-How-To/Menus.md","sourceDirName":"08-How-To","slug":"/How-To/Menus","permalink":"/api/How-To/Menus","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Add Menus, Menu items and Keyboard Shortcuts"},"sidebar":"tutorialSidebar","previous":{"title":"Show Dialogs","permalink":"/api/How-To/Dialogs"},"next":{"title":"How to create Panels","permalink":"/api/How-To/Panels"}}');var i=t(74848),d=t(28453);const a={title:"Add Menus, Menu items and Keyboard Shortcuts"},r=void 0,o={},u=[{value:"Adding a Menu",id:"adding-a-menu",level:2},{value:"Adding a Menu Item",id:"adding-a-menu-item",level:2},{value:"Position the Menu Item",id:"position-the-menu-item",level:2},{value:"Attach a keyboard shortcut to a Menu Item",id:"attach-a-keyboard-shortcut-to-a-menu-item",level:2},{value:"Adding a Sub Menu",id:"adding-a-sub-menu",level:2}];function c(e){const n={a:"a",blockquote:"blockquote",code:"code",em:"em",h2:"h2",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,d.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.p,{children:"This document outlines the basic features of working with Menus, including:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"#adding-a-menu",children:"How to add a Menu"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"#adding-a-sub-menu",children:"How to add a SubMenu"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"#adding-a-menu-item",children:"How to add a Menu item"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"#position-the-menu-item",children:"How to position a Menu item"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"#attach-a-keyboard-shortcut-to-a-menu-item",children:"How to add a keyboard shortcut to a Menu item"})}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"adding-a-menu",children:"Adding a Menu"}),"\n",(0,i.jsx)(n.p,{children:"To add a custom menu, follow these steps :-"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsxs)(n.strong,{children:["Import the ",(0,i.jsx)(n.code,{children:"Menus"})," module."]}),"\nTo use the menu functionality, import the ",(0,i.jsx)(n.code,{children:"Menus"})," module:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-jsx",children:'const Menus = brackets.getModule("command/Menus");\n'})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Create the menu."})}),"\n",(0,i.jsxs)(n.p,{children:["Use ",(0,i.jsx)(n.code,{children:"Menus.addMenu()"})," to add a menu to the menu bar. Provide the display name and the identifier. ",(0,i.jsx)(n.em,{children:"The identifier must be written in"})," ",(0,i.jsx)(n.code,{children:"snake_case"}),"."]}),"\n",(0,i.jsx)("br",{}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsx)(n.p,{children:"Providing the identifier is necessary to display the menu on the menu bar. This identifier may later be used to add menu items inside it or even remove the menu if needed."}),"\n"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-jsx",children:"// Add a menu to the menu bar\nconst menu = Menus.addMenu('Test', 'Test_Extension_Docs');\n"})}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:["For a detailed description, refer to ",(0,i.jsx)(n.a,{href:"https://docs.phcode.dev/api/API-Reference/command/Menus#addMenu",children:"this link"}),"."]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Full Code Example :-"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-jsx",children:'define(function (require, exports, module) {\n "use strict";\n\n // Brackets modules\n const AppInit = brackets.getModule("utils/AppInit"),\n Menus = brackets.getModule("command/Menus");\n \n // Add a menu to the menu bar\n const menu = Menus.addMenu(\'Test\', \'Test_Extension_Docs\');\n \n // Initialize extension once shell is finished initializing.\n AppInit.appReady(function () {\n console.log("hello world");\n });\n});\n'})}),"\n",(0,i.jsx)(n.p,{children:"Expected Output :-"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Adding a menu",src:t(83427).A+"",width:"353",height:"183"})}),"\n",(0,i.jsx)(n.h2,{id:"adding-a-menu-item",children:"Adding a Menu Item"}),"\n",(0,i.jsx)(n.p,{children:"To add a menu item, follow these steps :-"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:(0,i.jsxs)(n.strong,{children:["Import the ",(0,i.jsx)(n.code,{children:"Menus"})," and ",(0,i.jsx)(n.code,{children:"CommandManager"})," module."]})}),"\n",(0,i.jsx)(n.p,{children:"These modules allow you to register commands and add items to menus:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-jsx",children:'const CommandManager = brackets.getModule("command/CommandManager");\nconst Menus = brackets.getModule("command/Menus");\n'})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Register the Command"})}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["Use ",(0,i.jsx)(n.code,{children:"CommandManager.register()"})," to associate an ID with a function:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-jsx",children:'function handleTestExtension() {\n alert("Test menu item");\n}\n\n// The `CommandID` must be written in snake_case\nconst MY_COMMAND_ID = "test_menuitem";\nCommandManager.register("Test", MY_COMMAND_ID, handleTestExtension);\n'})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"The first argument is the label for the menu item."}),"\n",(0,i.jsx)(n.li,{children:"The second argument is a unique command ID."}),"\n",(0,i.jsx)(n.li,{children:"The third argument is the handler function to execute when the item is clicked."}),"\n"]}),"\n",(0,i.jsxs)(n.ol,{start:"3",children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Add the Menu Item"}),"\nTo add the menu item, use ",(0,i.jsx)(n.code,{children:"menu.addMenuItem()"}),". For instance, if you wish to add an item to the ",(0,i.jsx)(n.strong,{children:"File menu"}),", you can write:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-jsx",children:"const menu = Menus.getMenu(Menus.AppMenuBar.FILE_MENU);\nmenu.addMenuItem(MY_COMMAND_ID);\n"})}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsx)(n.p,{children:"These are some of the menus available by default :-"}),"\n"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"FILE_MENU : \u2018file-menu\u2019"}),"\n",(0,i.jsx)(n.li,{children:"EDIT_MENU : \u2018edit-menu\u2019"}),"\n",(0,i.jsx)(n.li,{children:"FIND_MENU : \u2018find-menu\u2019"}),"\n",(0,i.jsx)(n.li,{children:"VIEW_MENU : \u2018view-menu\u2019"}),"\n",(0,i.jsx)(n.li,{children:"NAVIGATE_MENU : \u2018navigate-menu\u2019"}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"You can also add menu items to any custom menus you create."}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:["For a detailed description, refer to ",(0,i.jsx)(n.a,{href:"https://docs.phcode.dev/api/API-Reference/command/Menus#addMenuItem",children:"this link"}),"."]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Full Code Example :-"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-jsx",children:'define(function (require, exports, module) {\n "use strict";\n\n // Brackets modules\n const AppInit = brackets.getModule("utils/AppInit"),\n CommandManager = brackets.getModule("command/CommandManager"),\n Menus = brackets.getModule("command/Menus");\n\n // Function to run when the menu item is clicked\n function handleTestExtension() {\n alert("Test menu item");\n }\n\n\t // The `CommandID` must be written in snake_case\n\t const MY_COMMAND_ID = "test_menuitem";\n\t CommandManager.register("Test", MY_COMMAND_ID, handleTestExtension);\n\n // Add Menu item\n const menu = Menus.getMenu(Menus.AppMenuBar.FILE_MENU);\n menu.addMenuItem(MY_COMMAND_ID);\n \n // Initialize extension once shell is finished initializing.\n AppInit.appReady(function () {\n console.log("hello world");\n });\n});\n'})}),"\n",(0,i.jsx)(n.p,{children:"Expected Output :-"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Menu Item Example",src:t(92968).A+"",width:"348",height:"757"})}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Menu Item Dialog",src:t(2792).A+"",width:"437",height:"145"})}),"\n",(0,i.jsxs)(n.p,{children:["The alert box that appears when the ",(0,i.jsx)(n.code,{children:"Test"})," menu item is clicked!"]}),"\n",(0,i.jsx)(n.h2,{id:"position-the-menu-item",children:"Position the Menu Item"}),"\n",(0,i.jsx)(n.p,{children:"You can position the menu item to make it appear at the first, last or before/after a given item."}),"\n",(0,i.jsx)(n.p,{children:"To position the menu item at the top, use"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-jsx",children:'// second parameter is for keyboard shortcut. Empty string means no shortcut.\nmenu.addMenuItem(MY_COMMAND_ID, "", Menus.FIRST);\n'})}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Menu Item at first",src:t(20936).A+"",width:"346",height:"331"})}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"Menus.FIRST"})," is used to position it before every other item. ",(0,i.jsx)(n.em,{children:"Note: It is recommended to avoid using this and prefer relative menu IDs for better positioning."}),"*"]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"Menus.LAST"})," is used to position it at the end. It is the Default value."]}),"\n",(0,i.jsx)(n.p,{children:"To position the menu item before or after any item, use"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-jsx",children:'// second parameter is for keyboard shortcut. Empty string means no shortcut.\nmenu.addMenuItem(MY_COMMAND_ID, "", Menus.BEFORE, Commands.FILE_SAVE_AS);\n'})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Third parameter must specify ",(0,i.jsx)(n.code,{children:"BEFORE"})," or ",(0,i.jsx)(n.code,{children:"AFTER"})," the item should be set."]}),"\n",(0,i.jsx)(n.li,{children:"Fourth parameter must specify the \u201crelativeID\u201d of the menu item to set the position."}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Menu Item before/after",src:t(92300).A+"",width:"347",height:"530"})}),"\n",(0,i.jsxs)(n.p,{children:["Here, the menu item is set before the ",(0,i.jsx)(n.code,{children:"Save As..."})," option."]}),"\n",(0,i.jsxs)(n.p,{children:["To get the list of all the ",(0,i.jsx)(n.code,{children:"RelativeIDs"})," available by default, refer to ",(0,i.jsx)(n.a,{href:"https://docs.phcode.dev/api/API-Reference/command/Commands",children:"this link"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"attach-a-keyboard-shortcut-to-a-menu-item",children:"Attach a keyboard shortcut to a Menu Item"}),"\n",(0,i.jsx)(n.p,{children:"You can assign a keyboard shortcut to your menu item."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.em,{children:"Note: Only add shortcuts if they're essential and frequently used, ensuring compatibility across platforms. Users can set custom shortcuts, so default shortcuts should be reserved only for high-use actions."})}),"\n",(0,i.jsx)(n.p,{children:"To add the keyboard shortcut, use :-"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:["Import the ",(0,i.jsx)(n.code,{children:"KeyBindingManager"})," module."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-jsx",children:'const KeyBindingManager = brackets.getModule("command/KeyBindingManager");\n'})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:["Add the keyboard shortcut to ",(0,i.jsx)(n.code,{children:"addMenuItem"}),". The keyboard shortcut will be displayed next to the menu item in the UI."]}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsx)(n.p,{children:"Ensure that the keyboard shortcut you choose doesn't conflict with any existing shortcuts already in use."}),"\n"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-jsx",children:'menu.addMenuItem(MY_COMMAND_ID, "Ctrl-Alt-T", Menus.FIRST);\n'})}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Menu Item keyboard shortcut",src:t(79296).A+"",width:"345",height:"153"})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:["Register the keyboard shortcut. To register use ",(0,i.jsx)(n.code,{children:"addBinding()"}),". The first parameter will be the ",(0,i.jsx)(n.code,{children:"CommandID"})," of the menu item and the second parameter will be the keyboard shortcut."]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-jsx",children:'KeyBindingManager.addBinding(MY_COMMAND_ID, "Ctrl-Alt-T");\n'})}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"That's it! Now, pressing the assigned keyboard shortcut will trigger the corresponding menu item."}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:["For a detailed description, refer to ",(0,i.jsx)(n.a,{href:"https://docs.phcode.dev/api/API-Reference/command/KeyBindingManager",children:"this link"}),"."]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Full Code Example :-"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-jsx",children:'define(function (require, exports, module) {\n "use strict";\n\n // Brackets modules\n const AppInit = brackets.getModule("utils/AppInit"),\n CommandManager = brackets.getModule("command/CommandManager"),\n Menus = brackets.getModule("command/Menus"),\n KeyBindingManager = brackets.getModule("command/KeyBindingManager");\n\n // Function to run when the menu item is clicked\n function handleTestExtension() {\n alert("Test menu item");\n }\n\n\t const MY_COMMAND_ID = "test_menuitem";\n\t CommandManager.register("Test", MY_COMMAND_ID, handleTestExtension);\n\n // Add Menu item\n const menu = Menus.getMenu(Menus.AppMenuBar.FILE_MENU); \n \n menu.addMenuItem(MY_COMMAND_ID, "Ctrl-Alt-T", Menus.FIRST);\n \n // Register the keyboard shortcut\n KeyBindingManager.addBinding(MY_COMMAND_ID, "Ctrl-Alt-T");\n \n // Initialize extension once shell is finished initializing.\n AppInit.appReady(function () {\n console.log("hello world");\n });\n});\n'})}),"\n",(0,i.jsx)(n.h2,{id:"adding-a-sub-menu",children:"Adding a Sub Menu"}),"\n",(0,i.jsx)(n.p,{children:"To add a submenu to an existing menu item, follow these steps:"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsxs)(n.strong,{children:["Import the ",(0,i.jsx)(n.code,{children:"Menus"})," and ",(0,i.jsx)(n.code,{children:"CommandManager"})," modules"]})}),"\n"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-jsx",children:'const CommandManager = brackets.getModule("command/CommandManager");\nconst Menus = brackets.getModule("command/Menus");\n'})}),"\n",(0,i.jsxs)(n.ol,{start:"2",children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Create and register the main command"}),"\nFirst, create a command that will serve as the parent menu item:"]}),"\n"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-jsx",children:'function handleTestExtension() {\n alert("Test menu item");\n}\n\nconst MY_COMMAND_ID = "Test";\nCommandManager.register("Test", MY_COMMAND_ID, handleTestExtension);\n'})}),"\n",(0,i.jsxs)(n.ol,{start:"3",children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Get the parent menu and create the submenu"}),"\nUse ",(0,i.jsx)(n.code,{children:"menu.addSubMenu()"})," to create a submenu under an existing menu:"]}),"\n"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-jsx",children:'const menu = Menus.getMenu(Menus.AppMenuBar.FILE_MENU);\nconst subMenu = menu.addSubMenu(MY_COMMAND_ID, "Test_Sub_Menu");\n'})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"First parameter is the command ID of the parent menu item"}),"\n",(0,i.jsxs)(n.li,{children:["Second parameter is the identifier for the submenu (must be in ",(0,i.jsx)(n.code,{children:"snake_case"}),")"]}),"\n"]}),"\n",(0,i.jsxs)(n.ol,{start:"4",children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Create and register submenu commands"}),"\nRegister commands for each submenu item:"]}),"\n"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-jsx",children:'const SUB_COMMAND_1 = "Test_SubCommand1";\nconst SUB_COMMAND_2 = "Test_SubCommand2";\n\nCommandManager.register("Sub Item 1", SUB_COMMAND_1, function() {\n alert("Sub Item 1 clicked");\n});\nCommandManager.register("Sub Item 2", SUB_COMMAND_2, function() {\n alert("Sub Item 2 clicked");\n});\n'})}),"\n",(0,i.jsxs)(n.ol,{start:"5",children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Add items to the submenu"}),"\nUse ",(0,i.jsx)(n.code,{children:"addMenuItem()"})," to add the registered commands to your submenu:"]}),"\n"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-jsx",children:"subMenu.addMenuItem(SUB_COMMAND_1);\nsubMenu.addMenuDivider(); // Add a separator line\nsubMenu.addMenuItem(SUB_COMMAND_2);\n"})}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsxs)(n.p,{children:["For visual separation between menu items, you can add a divider using ",(0,i.jsx)(n.code,{children:"addMenuDivider()"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["\u2192 For a detailed description, refer to ",(0,i.jsx)(n.a,{href:"https://docs.phcode.dev/api/API-Reference/command/Menus#addSubMenu",children:"this link"}),"."]}),"\n",(0,i.jsx)(n.p,{children:"Full Code Example:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-jsx",children:'define(function (require, exports, module) {\n "use strict";\n\n // Brackets modules\n const AppInit = brackets.getModule("utils/AppInit"),\n CommandManager = brackets.getModule("command/CommandManager"),\n Menus = brackets.getModule("command/Menus");\n\n // Function to run when the menu item is clicked\n function handleTestExtension() {\n alert("Test menu item");\n }\n\n // Main command\n const MY_COMMAND_ID = "Test";\n CommandManager.register("Test", MY_COMMAND_ID, handleTestExtension);\n\n // Add menu item\n const menu = Menus.getMenu(Menus.AppMenuBar.FILE_MENU);\n\n // Add sub menu\n const subMenu = menu.addSubMenu(MY_COMMAND_ID, "Test_Sub_Menu");\n\n // Additional submenu commands\n const SUB_COMMAND_1 = "Test_SubCommand1";\n const SUB_COMMAND_2 = "Test_SubCommand2";\n\n // Register new commands\n CommandManager.register("Sub Item 1", SUB_COMMAND_1, function() {\n alert("Sub Item 1 clicked");\n });\n CommandManager.register("Sub Item 2", SUB_COMMAND_2, function() {\n alert("Sub Item 2 clicked");\n });\n\n // Add items inside sub menu\n subMenu.addMenuItem(SUB_COMMAND_1);\n subMenu.addMenuDivider(); // Add separator\n subMenu.addMenuItem(SUB_COMMAND_2);\n\n // Initialize extension once shell is finished initializing.\n AppInit.appReady(function () {\n console.log("hello world");\n });\n});\n\n'})}),"\n",(0,i.jsx)(n.p,{children:"Expected Output:"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Sub Menu",src:t(7033).A+"",width:"604",height:"211"})}),"\n",(0,i.jsx)(n.p,{children:"When a submenu item is clicked, it will show an alert box with the corresponding message."}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsx)(n.p,{children:"Note: Make sure all command IDs are unique throughout your extension to avoid conflicts."}),"\n"]}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsx)(n.p,{children:"You can add as many submenu items as needed by repeating steps 4 and 5 for each new item. You can even create nested submenu items."}),"\n"]}),"\n",(0,i.jsxs)(n.blockquote,{children:["\n",(0,i.jsx)(n.p,{children:'Submenu items can have their own keyboard shortcuts using the same method described in the "Attach a keyboard shortcut to a menu item" section.'}),"\n"]})]})}function l(e={}){const{wrapper:n}={...(0,d.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},83427:(e,n,t)=>{t.d(n,{A:()=>s});const s="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAWEAAAC3CAYAAADD7+9RAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAACYySURBVHhe7d0JWFRV/wfwL9uwDYsICIIsgpqQiZDi676kqZjKm6WBFlRqpuaSmCX1N9MWNZfMTLRXyqRSckuK9H1xSU00jTIxFRIUFRERkEWG7X/uzBlmgAEGhbmD/D7PM3ruwgz3MPO955577h2Ddh17VYIQQogoDDp27EghTJqFkX8IjAa+DsNvw/mc1qdi4haUH/4Y5Wdi+BxCqjPk/xNCCBEBhTAhhIiIQpgQQkREIUwIISKiECaEEBFRCBNCiIgohAkhREQUwoQQIiIKYUIIERGFMCGEiIhCmBBCREQhTAghIqIQJoQQEVEIE0KIiCiECSFERBTChBAiIgphQggRUQsI4SAs2hSDmE2LWIk8qKBFmxATswmLRvEZhBBRNV0Ij1qETTEsLNUfW6Oxae1izBjtA0e+GmnYlJVC/a3AFD5d3RSsEOp2pealD5OwT77GuaO7Gnh8jf9M4D/QJEZiw47t+PmjkXyakObV5C3hwnPbEBISwh5zsHTLj0i+54K+IZFYvDCIgpg0SvRrk+DbL7jqseJMIZtbiMR1qnm+/Sbhxe8U6zcNCUytTGBjLuHThDSvZuyOyEJywnasfmMRtp0rhO1jzyDiZR++jBB95QoHKS8SogM66BPOQtzmY7hcLoGL/2gM4nMVHNFn0gKs2Kjqwti0dhFC/flidRXs8eQMtm60qqvjoxkY1lGxWKGuQ3Xer1xzfrs+CF20Bpu2ql5f9Wh5/aaOfUKxYKXQ58u3YdMaLHrOjy+tx9QVbP01mNGxRn1s+gyLw/u0kCOYdgiaFYkf4lRdFSd2LEFEX76YG/DqEvwcr1rnTNw6/Of1kSx6ld0fT0B4S1n5h/F1mrq7g5DqdHNi7mY00q6z/2090Ku/YpbAb2oEpo7qBCRtw9K5IZizdBuSyzsh6LVlCG3HV1Iy7YRxo21xLmaxoqtjzyWgQ1+Ez19QI9i15YcpEVMRxF4++eu35M/56Y8X2cEuIEuLw5yQKVj2o2LNFsF/CiKmBqFTeRK2LZ2DkLlLsS0Z6PTUHCybpE2MOqLvu+HwyzmA1fNDEBIZhWN5Fug8bCpma/Xz4hrwZiTem/AIcCIaL04MxpOvRSOx/BGEvfcxIoSEFUxYguUh3WBzMVa+ju/L67Ez1QQOVlnIYIsV3R//xT+sfPdMdDN1dxBSnW5CmLmeL8SbBSyU4dptBsIGuaCIBXDEhjgk32Rt5uQ4rN5yClkST/ScUKProvQSds9ahujDaWwiC8mxy7AtKZcFux+GTVKs0ij9h6NHewmyzkRh9c+K5zz+9WIcuCSDxMMPYxVrtRA+mDFpMFyKWAC/sR5xyVlsx5eMuNVROJUpgWfPULZGw7KOL6r6W+CfQ1i/4pD8CMazTxj6KFbRTz3nYlGQK+6yAH7qvT1IZImacWYPZn/8KzIkHfHEtG7y1Z7r3RFWbDebfGybfB38/V8sfe0VPLX4tHw5IWLQWQgrSGBppyj5DO7E2l65SPv1kGKG0tk03GJ57ehS4zhSg0N/XZO3XB3d72PwmpUJTHixlnIZinhRPC4YXNU1ov5gYcvXqNLtSXRyAnJTj6J6bSYj7TarIYf2aLg22X6unIW3OuEIRghk2/boUfPIRI8EjukCV/ZeSj7wXz6HO/UPrhUAru4D5JO/pAsbYwm/4DfwHGs0E6IPdBzChcgVuiUYTytL9q8t/KbXDJlQ+AqLjOSr1e90rjyELdu0V0w3xlXFzzr6T8XcJz2EEvpMWoxhnSQoPHcc2+QriekaDspHmdR8HGRLauhgwaKF1WbAzBp1GYNQeWXev+t35DXMnlsxrY+62ghn0mwx4G1VX6/iEYZAYRF/L2WsiUH0n7kwde2NyM27cGLbEiwJ6SbvDyZELDoKYUe0byOEQSGK0hVzFHKRtEFT0LDH/E18nXp0tmRta6ZcPtU4Z9cj+tA1yNiH1+e591lgrcHMJ1yQe2o7ln0Yx1dqWXJPf6q5LkMioEVtamRryUP8fupYp3Jx5D31oWtqj9D1fJ3TWPFquLy/+PszGayJ3A1Pv7oEsZtZWPM1CNE13YRwu1HwEA5nWTM48axi1uW7QgvLFjaeD3DSx92GPQN72qxziulGcYSLgy1yzyzHlDAeVmFTELF6N4Qe4hblapG8VW/btjPbqqbUBy5CBZdnIe1nxRx9dD6vgP1rC4eu2vWZCP3F77w2C71DVyOOZbHVI09g2ni+kBAd00EIOyLo5b7wNJLh8vFoHOdzkw9egtAD6RkQCi0GUWngiDAfT/Z/LtJ+Uz5rHgrvsf8s2lQ/keTvAQczXq4yFoPYobqtYw/46HF/p1bO/oxLmex/Dz/Nw/vu18B+8GAhLLuajAN8lj5K3HtBPrqha98wKHp/6+DarnrXQ8YRfHJO6CdmanR/WdlSJwXRjWYMYQ/4Pfks5n60DKG+JuxQeQfWfq124kfZHeDQEzM+moEgH6EN5wifIWFYtHRu7ftEWPpinHK9dj4ImvsWBnkIV+jFIfowXweHWBjJWKOoE4aPFy6VZs83egZWTPODZSlfpcoteWBLOgYhcnX1ftSY6E1YMX0Y++mWIhnrvz6IazJH9Jy+ouoycUefQQhbtAxz1cY7y5TdChr+8i591mDBhEHsL8f+egPDsDjED7ayazgWu02+w9Rbp1ZjGWvSljj3xvKv5iLMX9irtkPgmKn4z+Y3ECZfqRuWvL8Oe3csQeQYRT+wq38olvRm6xZnILFqGNpZ/CNsrOsjWP4EW/ZINwRSHpNm1OQhbOkbysPsfSyYNAo+Rmk4+OVivPpxXK0PclJUBNb8kIRc254IjVzDfmYNIp/vCxeYwLLGmKjCc9uxPc0D4xaw9VZHIrS7JW79sgXLlqk/bxa2rd2BpFsm6PzvSKxhzzd3mC2SvlyEkzl8lSrHceriNZzbOad6/2lkFA5eN4FL/1C8GsxXbQnObELEJ3FIyrNFzwnCtsdgzZth6OsEmFioKvPAr0nIklnCN2QNZnjzmdzlxFNAz1C8z372/WnD4XLvHOKiVmDTGb6CHjvywSzMiTmNW23/xerhc5w7+jn+M2cAvNh7yfoJYY0sxMUfRpKsI/79+hL8fHQXfl49Fj65pxG9eCE2yp9FcAQrth7BP8WuCFrMnmfj24h8uTdfRkjTM+jYsWMlL7cqPi+vwILAXOyYsgy1TsMJV5ANcsG1QyGIiOLzHmbNtL1G/iEwGvg6DL8N53Nan4qJW1B++GOUn4nhcwipTjcn5vRQDw8HSMws4FCrP9gRz7o4sP9zceuCYg4hhDSXVhvCv6fdgszIE4PemItx/kIvqLIPdTFGdZIg90/1vmZCCGkerTaEkzevQNSPSbhl2R3PzhfGCSv7UO/gj52fYvGHtfuwCSGkqbXaPmHS/KhPmPqEScNabUuYEEL0AYUwIYSIiEKYEEJERCFMCCEiohAmhBARUQgTQoiIKIQJIUREFMKEECIig/bt29PFGqRZSHpOhtkTC1v9xRr3/vshZKe28jmEVGfg6uZBIUyaheTxUEgGz2/1ISw7uBKy38T/1kKin6g7ghBCREQtYdJslC3h1o5awqQ+Bh3cPSmESbMwCQjhJVJ6mm7gQzSjECaEEBFRnzAhhIiIQpgQQkREIUwIISKiECaEEBFRCBNCiIgohAkhREQUwoQQIiIKYUIIERGFMCGEiIhCmBBCREQhTAghIqIQJoQQEVEIE0KIiCiECSFERBTChBAiIgphQggREYUwIYSIiEKYEEJERCFMCCEiohAmhBARUQgTQoiIKIQJIUREFMKEECIiCmFCCBERhTAhhIiIQpgAUimkvEgI0a2HI4Slb+OxWecx9v/O46nZ++Dq6MoXkAb5hGN9zG7s3DALPSiJm58kDLPG7kdUGHsEf4ZRbAdIWreHIIQD4fpMCDztFFOGtl4ICJpNTXxt+EzD5lWh8GU5IOkyEjOe9+ELSPNww7j+IejWhk/aeGNcYBis+SRpnXSeVabeK+AayB7dw5voxX1gUfNdbO0AC14kdZCOxIdLnoG3RJiQIWXXW5jzWbJ8EWkuXmhb673qBGdeJK2TjkN4NNoPG42AEewxaGATBeUWXE/O52WFvOTDKOBlookPpq+ahd786CHn+DrMWZdEddbsDuJoSg4vK+Sn/A8XeJm0TgYd3D0reVkHwtF59gJ0tWXF3ET8b21YE33wXWHq8QqcXK1xL2M/bqbt4/OJJr7ztmL9aEX7S5ayA3OnbsQ5+RRpflI42Yegn50U+TkJOJidhFK+hLROOg7hpQh4+2m4Cu3vJg1hojXPadi8gXdDyFLw3fRXsOGyYhEhRPd03idsqPNXJOqeeGkk7wcGbuz/hAKYEJFp1xKWPA27Hk/B9dGuaG9nymcC93JScf30PqT8uQUVFXymGkPXt9HeRe1MhEVXdB3gpegLLkrFuSPncU++oKZ85P7xHgqqLQyEtPt42JrxyXoUXYpATvWut/pJQmDf/yl4P9IVtsqO6qJbuPr3EVz+5T0Uyfi8OggnGx3assK9ZFz/g9WFMNOQ/b4956CrX0e0tVbUWWl+Bq4mxiAlKUaxjq5Jw7E+NhS+QggXJGHtmPnYpViiHZMRGO7qLf/7FeXuxf47VxTzGXPrEIzrPATdPJ1gKZ8jQ97tFPyZFI3YnPpO+Nmhg0MYgrr5wbutHUz43MLcZJw99xN2Xz+IYj6vflJYtwnBM4/2Q1cn/jzFmTh/cS92p+xFZoUburmMgZd8209i962TwhoqatsGZOL05VhclZdrs24ThiG2fGiZpueC2ms14EbWp0gs5BP10eu612cPsI1mYzDc2a3q3FW9fysJW9dFua4MV25E4UyNcOvgMBMBwtuGHYEmXItnKcf+dpbjGwphH9gMXYt/9XGFaX0t2LJspHz/Ec79Xb0vVjoiEUMD72cATj7ObwrExet8Uk6tP7kB1/d1xanTfKJeWmxfRQmyj3+OX//3eZ3B2X7SefT0EkqpOPXuaFx3XIGA0NFwrWPTS1O/x4GvI3XeFygN/wQ7J/tAnkPH38foyATFAm3ZLMXK4F7yIVX5v3+A+X8cZDubvhjV93WM89I83jU7cQHeOp/Ep6ozkc7Ea8PGoIsNn6FJXjJi4yOxv7iejiv2O4wf9CaGu9WResVXsD/uKNzHhKCLsEpaLKYeilIsU1LbNiAFu6NfxY/ycm1duu/E68pB1ZqeC4PxUvCbCKxvu7jUhOH4SJWnddPXutdjD76NUgT2+gov+fD6zTmJdfsicbZWEPhg1JDlGMfff6UXozHneEytz/eoQfsxzkMosffXV9uAPuxv5y2tpzvCMATu4TEY1K96QFXcK0FJkeJR1fo1tof3M2/A055PtwgD0G78lurbxwJXuW2lym0zNIV9v9kYOv7tqr1o3Uxh+sg3GDRNFcDy+ipTlJVMvJ5GQO9APqU7wQHe8gBmEYy/jjYygGuwtu7E9v7j8cro/6szBITXSb2uOQTM7Zbig3+rfUBYfZdmX8GF1BRcuJaD0nI+38YH48cux6g68hWGI/D8qP+rHsDCcxXKUMwecuZuGP5vHsAPAb2pez3WNNtYgMTfopCoPKq264UXuo+olQP2bjMRpHz/sSPMr07UDuDq3PDkM+xvxwJYYODNWsIl8qK6QLSbuBG9u6i6Hoou7MOvu9ei4F4Gn8MYjoZNn1fQa7AXSk8sx6EDW/iCOrSPxtAp7DBdKDfpibnqrWRtWsImfQ5g1DDllXWstZsYg9/2L0dJVfiOhv3wN9Ar0L6q0m8emIYTx4/wKRVVS1gl76/vcfKHyKquDEOnT9DrhWFop+xOyTqC+A3T2CvrSj8siV2MAcKwNFkyvhjxGrYqFmhPvbWYdgwHzfticDtWrpAh+1IC9pyNxZmCK4o3oJE3/Nv54dZ1DYf1kql449/j4cXrovhKPD47vAoXlB8MgdFg1rp9HcM7KN7cpazF+SZrcVYfjMhapd2+xesBfKwdU3wxFisTo3BV+VxGvTD40ZkY38NJ9eFp9pZwfaq3ku+nJawvda+3mngbTdqwQH+K1b28sSbDhf0T8fF1nlwm7LWeVr4WC+09z+OLO5pTTdUS5vJTsP9IFAwdNLWFfRcgQC2A8xKX48C3EdUDWFCxD3lHR+PAuggcayiA9Ynh2/AdqLq0ueC3tTgWrxbAArZt2fHP4chvqj9Lu4Gz0a7uYweFinykfz8Nh75XBbCgIvM1nIhLVu0hHTtCY903G1+0V2ZVQQ7SefG+ufEQuMcO9XdOxFu/rkKiMgQE5Sk4oykE2C54cK8xVR+Q0it78V5CjQ+IoPwgYg9+isQ8xaSJxxCMU3R4qpjMxLM9VAFcmhKDhcfVAlhQfhIH/3gen//RMg+pNdKHutdbTb+NpXcisfZUJp+SoMuApRgs/+yy1+qpeq3836PwVR0BXFPpzWNYt/tVxGYnwdDCic+t4or2PXxUrQbWYvs1voGAzd2negO0BD0C4a48/GCtwr9+qmv7MlDw0z6kK8NU4gPPXvV3IxSd+RxJf9VuLcsl/4NbvMgOKlG77puRp5SftGFybqCO31B7wpuwIgeJP89BbEEjAs4kDP06Kiuf/Xzip8jmU7VUxGP/38o3vx28nd14WcHazQ8dlDuyiis4kBhd50kWmfoOtqXTg7rXW820jVfPf4jdaTwIzHwwvncIzB3ewbjO/LVyTuLLs/Fa52Dx9SNVfcsa2mIhcOzAi8zNP/6jw0Nm3bBzVbvBz/V/cLO+D2jFFmSrnSC0cx3IS5pV1NzjqqsQsSY7tYUVLzaV7FOr6jz0qpOTjyo4WevtagULUvO6H7inen4Lq+r3tghop7YXy0hCXItqCTwYsetebzXbNibjx+N7kcpHPJh0DsHKoX4wFybYDvHoYU0n7LRTO4QNHWCi3JEgHzlpibz88DCzUnW1FNxs6H4JGci9qeqSMDHjZ9xavRQcPV9zaFbDrE3VTiRJ/fDchOV4u77HQG++MvtZm+otFXNJ1RsV+bfPtayjsQcift3rq2bdRlkUVh1RdilKWBbIC/Id4le8W+N+1A5hewfVYSt5eOQU4C4visnZUu1D0kj5edqcwSJ1aQ1139zbaGOs2vErZOJMauN3iOpqh3BWBlTjkU1hIm9vP7xMTBtu2UpMVS3nFuu326q/q7kU7ryoaxfuKPvgGOHkxHcL8J6Wj5V/HeU/WJuJqXC1DKlPc9W9PmnWbZTMxPR+3jWGqDlh+Iil6FY7SbWm4UdTkZfLiyyE23d9hZebmIUVeGte59S7F0xdfdhW1udp2LmqjRRpsPtCX11BtvKQSdoWj/KizuXlqIYBtWkD+5IkXC3W7pFZWr0P9Gqeatq8bSeoncogmjRh3ddJ6o6gybMwe1Yogtzuv1V635ptG3vhuaFjoBjRJkPq/1bh4E35Agjjh19+fHyt8cPa0hDCW3AzVXUCyaLb03BtqrosA6rOW0msYSlSChdd+gdFvAz7QHh71fNNHF7j1S5CKcGtSzG83NL8gnTl0AybDujxOC/rWt5JpCjf6xIfDO54/yd8/r6t1upp1x2D6+lHkzTUUqlU71F2gnNdV1kZjkA/dxHCpSk0Yd1rJHxJwHdfICJ8LIKDwxERvR2bp+n4mKtZtlGKbt3nKYYFMqVX4vHF1Xh887+9uKq8HsgnDPPc7u+1NL418w4dUY0YkLgiIPwb2NX5vhMu/T2AoROXan4ydVm/41ZV+rnCe1A4L+tY2gZcrBrybArvUSs0b590AXxH+VVdO46MI7iYxsstTgF+/PsGLzvDd4BYHRJ7EZukCk+nPu/gFSe/eloRwj0hBmts5ZZmnMSFqrHYdgjsMw9eGt6E9u2W44VuDQRn/iXcqHouKR7roqFlYzQGL42ah0DV0OQWpunqXpMBE4fCu1r3pQTeQbMQzKd0o+m30aTNQrzQnf/RZVcQd5QPe5N9ig1HU6pO1Hn1m6f11YXm7YeiH1/XqGOHNotv1zxjI/sJNwtHwqOzHYyEaXMnuPeeAkeHHigqZK1Zg84wth3JGpEL4D9+Jrp6WUNi7wXL3N9x4+Y1+VNolgiZ3RR4tDeWT0lcH4ezvQ/y7xihwpg9p1lnSL1mwn3oPDiWbkX2bflqWuiBtr37woG3rO9eXI/ryrzRKB15l5xh7e8DK+FXEbbPbyJMzV1x7441YDYEbfq+iYAxw1F1/6F7qTi1ZTLyqj6oKlaPzYSL8m907Rgup2i+XBQYApdB7DXl5RJkn9mMWnXfjPIyO+LJsZ3kr29lKcHBXb+iUSd1Wb0M7+rCu29y8HdSHC7Jy41TlHMB5bZD8Igte3cZmMPZexiGOAdAmncXdytNUVppB2ezrujaYRomDZyHiX790aXgNA7mqEZZy1UmIaNsGAbyQzUja2/08xgIxxIJitjDvs14jOvFPkA93WBqIF9FITcZP6TVvKTyMsxsgtHNTv6Oh4lDAIbYdWEfUR90btMLj7pPxYtPDINwlXBpTg5k5uaKD7bG56qPJ/y79ocrf6/eubwVx7T5I+hb3Wsw4Olw+Dso6q+KRAJZ+g4c1GHjpUm30XA8pgaNgYe84mVIPbwE0WrrFeVdBpSvZWSDR1y6IO1SArI03JGnk8dktp6ibCR1QXefYPS07FhHCDMVN47gWukQuHpaw1h4AxsYw9zRHW49hsO7N3s8/jhc3RxgrtzF5Kfj0ok45BfU/8cqueIKcxZ+tvKfM4aZoxfcH+fPyR4ePl5wsLeGtMwYKRe0HR7X2BBmZAm4nv4Y7H3cYSEEsYkF2rh1g4f89+gNN/Vtu5eNP7eF42q2qi9ZXUsJYeReh+vgsegqHGpbO8Pjzrf4uTFf69BEQQDcwqUr6TBt0wdeNjz0pA7w6jwIAx8NwsjuQez/QfD3cIEdb1lJTU2RnHIUdxSTVfKz2QfOin0IeHiyJIWrRwD6PDoMfTp3gasta25UFOBCag7slYc7GoNThrTb7vhXV09Y8MA2sXGBl0cX9uHpAi9nG/k9RoovxuDdhEz4du8CeY9FCwvhpqz7mvI69EfQo7zhVsUcpbe+wt5TfFInmmob3TC83yIMdVI8R2naLqz6I17VlSknvFYOHDv8C67Cc5m7oCubdzAzpdYNv9RDuDi/ACbmUkjtPevrQchA0fFhiF+3BedS81U3tKmhoiAbl+OX44e1o5GRqcVJq3uRSNqwBeevlNT6JauU5aMQ1vUcQjSRjGk4tvo9nP4ru/oly0oVJcj5ax8OrO6Pyxk1LtlukdKxdqfya4yk6PHM6/CVl0VQcQyxCRPxTvwxpNbz6S69cwWJCR9g9k8fIJXPqy4ZP/7yPD7+JQX5Gi6UKb2Tgt072fIr9Z104Qo/wHv7jiFT02V3pTm4cPhdzD8ejewKWcu+Aq/J6r669I3zsXRXMm6ww0WZhiNGnWqCbbR3W4ixyvuR3kvBnmNRmq++q4jHV7+cRD5/T1h3n9lg//D1355nv9tJXC1k7Vvtv1nDBya2frDy6AELYXdckIpb6UdQUvAAowUkA2DqNBAOzopj/ns3DuNuzj8P9pz3yzAQJo69YefuysK/BEXph5GbdUDjfZJbNndM37ABE+S3FJMhfdd8vLBO/BEfJiY+cLLyQ4CN4pAiL+8ozuYlIbu+KxBrsYO99RD4t3WCRVkmzt9MwAWZ4hZYJp6bsX4gH4zf4E13pLA264cAZ2/W2pXhxu0E/Jmf8hDcW1ezpqn76tznbcWX8q/QKsCJD8dh4X7FfLE0xzY2lvoNfFQ3bpLq+uuNiF6Qf9W98puWc3Bi+YtYGK9FS7EFe7A7n5HGkWJ61G5MEC5Gu9879j2E1EM4/zQ7qjp7TF5ucEADeQglb8ScNSdZ/Ars0HvOSkxv4tFKpPWSjngLQfxqYFlKYuO+vaW1MOTdHAyFcCtVEP8W3o5NYQfbjMQbE1Z8TkFMHpjdmMXYNKcXawszshTs+mxbE90z/OFFIdyKnftsPpbuS1cEsZElnL35EA9CGsthCGZv2I2dc/rBWdnNtWY+NrTUC0x1iEK4VSvAkVUvYe7GHfhi4XS8s7cx345KiJpOAzCwC+9zz2Mt4Hce/vMMTYVOzJFWoeFvSCYPRorJS1bC99p2LN+YwM83EHVV37bMqH9jNoUwIYSIiLojCCFERBTChBAiIgphQggREYUwIYSIiEKYEEJERCFMCCEiohAmhBARUQgTQoiIKIQJIUREFMKEECIiCmFCCBERhTAhhIiIQpgQQkREIUwIISJ6OG5laWmMtROl8GnD9in5xdizsxifavxuakII0S8PQQgbYOZEW4x1NeDTTEY+Xvq2DIpbJrc0BpgWbIUxwreFy1Xg5K4CvHuDTzpLsD3YDJZ8EjeK8NKuMmTySUJIy6JVd0SgpzFm+rOHrxHc+Dz9YQAna7UAFlgbgX/ZqygerL7YPtHIGBIL5cMAJuq7yUo2XbWMPYxAAUxIC6ZFCBtgyEBrjB3CHn2NRQ03zSqQcKGUlwWVuMOmE/iU7ul7fRFC9IlWIWyp+op8vZRw+C4ivsvHT7/cRex3uXjxcAVfIgb9ry9CiP7QIoQN0ZZ/OZ0+S7pahlWJpdh4tRLifsfrg9fX3ZJyXhJUorCIFwVFFdW2T1bCC4SQFkmrPmEt1yJKD1hfmYXqLfkK5OTzoiC/+k5GVm3dhkn9xmJ65EqsjpyGYL8WsHcl5CFXa3SEm7Ox2pl5xtwEQ/9lDvnHtegejp6Q4bZ8QW2p58rwk6aWmakRwn3ZYTorFt4ox5Ybqpds42iMV/xM0cPbqOqMf05WCX5nr7MqQ/1XM8BIXyN4mfLJemReLkPsHT6hLYkBxj8qQf+uEnjbqE70FebJcPGPUkQll+OKhrxrlvp6zAIHhpspyvmF+CCqRK2P2xBLp9oi0FoxlbI/B9P/VJQbIh3xPr5a0At2fJrVNE4sfxEL48U9diCkNasVwkOGWOFNfxM+1RilSPz6LiI1nap3MsWuSZbyYCo4k4vgBJZmhoaYOVaKsV7GinVqyPz1DiYfU//VqodPfRoTTIKx/S0R1tMU0vpasGUyJMUV4t1L1VuizVJfHqaIG28Jedfyjbt4aVup2nA7A8wLbYOR8uAvQ1JsPiLS5Asa4I7Z0V8guOZwjSt78ELYOqTzSUKIbum8o0Fqw17S0ggrwm3qDGAhoNJTq+0bmgfbEcybaIOZgeoBzF63pAyyIsUDytavsQR+T1lilqoZ2XxyKlgbVUGWX1ljvHMlMvOVfcZsPeWKDfKCsw0vqrNxRideJIToXsMXa6i1YmsfGmtJ/TnSCpAgtcQQe3bIX1GGOxeLsf14GeJzeAtTYoCRnobIuVCORGFaK/dziC5cFGGN8V5GfJq9fupdRP1Yo4vA0ABje5ohrK8ZSk/n4dmGRl40RX3BGBvmW8uHt1UdOahRtb7vIXZlETYqZjdAiulRuzGh5pi5lB0YPXVjtdY9IUR3dN4ShhsP4JIS/PRVPp7dV4pYZQALZJX4qVEBfH+kXcwwRi2A75zJx+RdGvpoKyqxJ7EYkzfnYrHOhr5V4DY/GZeZXfs1E7J5S5i1iC8pSloowIY1O5Ai45MCWQq+W0MBTIiYdB/CrGWJilIkxhZilYj3dwjtZqbocxVkF+DjhPJ6w6ggvxLJvNz8KhD1zR1ERN3Bx3/zWer+LpYvi/hGhpN8llaSN+Llya9gxZY92LXlY3l5g+42ihCige5DWOjTTCxApPJeCKIwhk971QiIzHNlzd7ybqwrdyuRxIK/WstViR0tCMuS2DqNbsXeSkHc1nVYu/UnpNzi8wghohEhhEtwtNqoBxGwrZZWNYNLkX5V5N+HENJqiRDCesDOEFa8SAghYjL04YVWJbtC7QIKA5jy6yIIIUTXDMdqcfFDFTNDOPFiy6YafSD0D3t3Vo6SaGL6WF9SdwRNnoXZs0IR5CYfSEcIEZGhmwcv1aWsElU3ipSwUNHismH9V4FTaWW8zHLpEVPMrLpL+gPS5/rymYbN332BiPCxCA4OR0T0dmye5s4XEkLEYHg7i5fqkl2O9Kq7eJmif9+Hoxt5z7FiZCqH4ErMMHaiKcbXE8TCpc3bg40bvkm7HtfXgIlD4W3OJ+Qk8A6ahWA+RQjRPSNj4zaLr/EJzSph0cYEvdopwkTibIKn7CpQmVsJiZEBa+kZoIeHCcIGmGNIaSkSNN04R2qMiY9J+LjcMiQfL8VpebmpGGBIgBlceaszJ7UYcTcV5TqVVuBCoQGGehlD3hlhLsHjASYY3rYS5kUVbB7bNhsjjPU3xRujrTDQ0xjmdsbwzZMhrt6hXU1QX81kwNPh8Heo0fUikUCWvgMHtbr/BCGkqWn3HXOmxtjwkhW8LVRjazWR/ZWHoHj1e+Fy6pfyNupSW23d/53F+vW0wJv9zYSeg4bdLcaeXcX4tKGjhwetr2biPu1zbJrgrbpIhUuJfQIvf8YnCCE6pd2xckkZpn+Zj8QMVT9qLWVlyGGtx5Y22uLoqSJM2JyPo2mlkNV1VXKhDMkJeXhpkxYBLNDT+krfOB9LdyXjBmvNyzRdBEII0bnGf9uyxAB+jkbo56iYzMkqR/KdSiQVKqZbOm9rQ/i5GcJJaC4WVuJoRvmDbZue1pf7vK34crRwP8wCnPhwHBbuV8wnhOhW40OYPATU7qgmS8YXI17DVsUCQoiO6c+pe6Iz0hFvIYjf0lKWkohdiiIhRAQUwq2M3ZjF2DSnl+IkqSwFuz7bRreyJEREFMKthcMQzN6wGzvn9IOzfHhEDk6smU+3siREZBTCrUWnARjYhV+mnMdawO/QF3wSog/oxFyrIcXkJSvhe207lm9MqPoOO0KIuCiECSFERNQdQQghIqIQJoQQEVEIE0KIiCiECSFERBTChBAiIgphQggREYUwIYSIiEKYEEJERCFMCCEiohAmhBARUQgTQoiIKIQJIUREFMKEECIiCmFCCBERhTAhhIiIQpgQQkREIUwIISKiECaEEBFRCBNCiIgohAkhREQUwoQQIiIKYUIIERGFMCGEiIhCmBBCREQhTAghIqIQJoQQEVEIE0KIiCiECSFERBTChBAiGuD/AVvRvjLYNqNCAAAAAElFTkSuQmCC"},92300:(e,n,t)=>{t.d(n,{A:()=>s});const s=t.p+"assets/images/menu-item-before-after-cbc0862108df63e0adb2b72ce2c286e5.png"},2792:(e,n,t)=>{t.d(n,{A:()=>s});const s="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAbUAAACRCAYAAABE4CZJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAABZ3SURBVHhe7d17lJ1Vecfx58wlmQDJJECJQBJokklLVohSRc0FSyttSWa5tFXpHbq0uWg1FwviJUVw4YWCJsEuLom2K7Zd9bYU65okInRZLgOoXKpj1FwEkoCBkMxMQpJJZuac7ufZe5/zzslczzlDMu98P8x73v3ud7/vec/54/zY+93nJHP+xXNz2ao6AQBgpKvKVtWGIgAAI1uV5DKhCADAyFYlmapQBABgZCPRAACpMSyhtuneO2TfrifCFiql6VtfkV88eX/YAgAUG1KoffZT11tYFS8aYiPJ31/35xW/7r7eG30uAEDB0498V/70HX8UtvqmbX7yv98OW4NTUk/tnX+xTF434y22rPn0F+VPrrrCehGjlYbX+659b/49icuTT7eEFgCA6NO3/YvcceuN/Qab7tM2n7nj7lAzOGUPP35509flX7/6TXnjZXPkLZe/IdSe3vSaNXSuW3Z9qCmdDgdqeOn5ijW+5/32XACAgu987wdy/Zrb+gy2GGjaRtsORUXuqf36uT22vnT279h6tNDhy0kT6y28AACD11ewlRNoalgmiiRpTybeX+prkoMOXcY2/bXTnmB/7eJ9LW3X/OC3+mwXz6PtVWyb7GnGNv0Nq775TXPl+w88HLYGJ3lduuh2b4rv0fV3HcXn5D4egJGgONjKDTRVkVC7Yv7lti4eatMP2L9b/lEbmtP7cNqrKf5w1sCZ/ttT8/ehdGltO2THJkNGP6i/+7V7bagz2a63ACxup8/bV3io+W9/jztXu9x044dDjcjaz6+xHmhfvTC9Nj3vCy/uCzUD09ek4nX5a5uQr4+0B6j36JL3LpUO8RaLrz+209d9600fIdgAjAjJYCs30FTZoaY9Cp0ooh+mxXQSyRM/fsbKutZeTfKDOQ7fXfLGPw41Xm8h848r3m/3rj5xS2HG4uqP3WrHxx5XpNeSDFjdnn7x1B4hWewLd37Frk3DQBdtr+cfSBx6HYiGub4mfW1J8bXHmZh6jfH9jO+d0nDV45Pi+5c8p74/ek0aigAw2pQUatoT0t6FLrFHkQybqLjnVtyraZh5cZ8zBH/97B7rwanYK/rO93r2yvRDXz/oL7zgdaHG++7mB0LJG0zw6LXqtejr0QDVAE6GSrn0tfzoJz8NWz3p9el7od65+Cpb9/Z+6nuS1Nf7t2Pnc9YDBIDTXXLIMTkUWaqSQi05LKbLUD/8Y4+pvw/eVw60hlJhAooOq8UwjYuG3bnnTLL9AxloIov2hrSHpsOaA82MjK85Dr0ORK+zL62thR5YcUD3R98/7V0Wvyfa0+vv+QDgdFB8D02XcoNt2CeK9EfDoy/JoPrZtl/ZWoczk2Eal0rNPtQhQu01abAVD2n2RtvqZJHBKB46TJo0qbQA0vcvfp2gtwUATld9TQopN9hOaajpMFlvkx9UcrhuqL2iUuh9NL0WvZeliw5D9ncPTsV7evF+WH906LCvANQQ/eFDj1v54eYf27q3iR7F75X28OIQLQCMFH0FWlROsJ3SUItDfMUzGHWmooZFcghQg0aH1Yp7UL3NfiyFDm1qr0fvren9LO1Z6QzI/mjYxuvqbXal9vxiOH36ti/Zaypup9evzxXvoenzaw9QrycZqr2dX3uovZ1TQ3YwPU0AOBU+ef0H+gy0KAbbTTd+KNQMzikNNaXDZHEKf1xifZJ+6MceVLLtd/67/FCLwZgcxtTZkNqD6u/7YUqvS681Ts1PLtqzipNlNAB7a6c9uN5mf2qwJSfk6GvvbVKInlOvM3lOnUDS20QTADgdXH7lu/sNtEjbXLbwnWFrcDKTp785F8oAAIxop7ynBgBApRBqAIDUINQAAKlBqAEAUoNQAwCkBqEGAEgNQg0AkBqEGgAgNQg1AEBqEGoAgNQg1AAAqWG//ag/ggsAwEhHTw0AkBqEGgAgNQg1AEBqEGoAgNQg1AAAqUGoAQBSg1ADAKQGoQYASA1CDQCQGoQaACA1CDUAQGoQagCA1HjNf9C4ec+r0rL/uDT/5qhse/m4HO7okvYTWcnlRMaPzcjU8WNsmXPuGJk/9QyZP218OBIAgP69JqHW7oLryz9tky8/dUDaj3dbXcYtWRdkxiWa/ee2qzIZybodus65Cg24edPOlOvfeq5Mmzg2HAAAwMmGNdQ0zNb+6IBs/L+DLrgsu9wzZiRTUyPZTJVLMB39dPHm/nSfhljGBVoum5VMd5fkurpc8mkvzgfeX86dJNfPO49wAwD0athCbeMzrbL2iZddz8wPLWZqayRX7ZaqauulaZ3f4XtkVnRVWVfQtbI23d2S6zwhcsItzpT6Wvnogsku4M6xbQAAomGZKHLzQy+5ZZ8FmlRXi4wbJ7nasRZovsemIeYW11bXvqBlv9ZhSSvrph4zpk7kzLMkV1Mre9tOyIeb9siaB17wDQAACCoaajrc+O5vP+96aQdcNrlUqh0jORdIOR1qVBZUvlcWA8yXtXWsTNS7TIy9uJy71NwYF456Ppd6d7te4LXfetaeEwAAVdFQe68LtMf3HBHREKs7w/XOXKjpDgspDScfULrthyBth7awuh49tNgwbNva1eVq3DnPGG/P0fTLNvmbb+7y+wEAo17FQu3mh34jLfs7XK8sI9mxdRY62qPKWCgVwizmVL4H5pas9ch8O1+ZKNri2tp/flvPnXWh6Q6TR559VT75fYYiAQAVCrVv/LxVNjx10JVc/8uFjZ42hpFO/LAg0m1d2bYlk1u0IjxoXVz1UfZtQ1kvfdxZbp2Rux/fJ//59AGtBACMYmWH2p6243L74/staXS4UXtPygdXIYx8OBUCTr+LZvX+Qf/8PltrrVb6mZDxGKsPG/5R77ONtXN9YutuaT/G/TUAGM3KDrXbH39F9h46Yfe6pKbWhht7BpoPIi0nF33QXtzUs2rkib86X37klqnja1x1z7bxPps/p07/99sWcvpfbZ1IdY1NGPncDxmGBIDRrKxQ017aN7e1WsrYpBALmkLoWL3WaVkl1lZ0D9fMOsOFWbUtWta6fO9M6TmsdeH7bLppIWdlF4465OnKdze/XFZvbcuyjGT0y+G9Lcu2hFajl39/lgnvBIDTVVmhpr00CxrtpYVeVAwayxwtBzppJAZRYS3ytV8ekT2Hu23RstZp7yzZzsphuFIb2HP6oi02KUWvwW3c1fwbV1GaRfeGc7tl81JXsXRzfjt37yLfqBRblklmwXrZGTZHKv/+3Cv5dyIlrwtAepQVao/tPexDprrGV7hynBiiQeCDyS0aaNYg0dsyOQuzN/37i/Kmr74oew51heO0TTyPLnp8OLc7Koaesn2uortae4oaai/7HQCAUafkUGvefVj2tJ3wX6zWn7/ScEmEjbIICkGkDz7wfKPY87Jt/xf26dpWtu3PEerCEr/jVjiHq9Bgraqy4ceHf93uKobHzvULEsOSC2R9spuiPZeifTZkt3iDe8NWSUM/w5jabsH6LbJ+QTw+I9Z053pZkD/nyUN/fV/PTjvXsi1+ffL+LbKs+PrtufoeXvTX6A/o73X19x6V+joBYDBKDrVHd7/qQkVH/qp9wGiwBFruETiJtQnbhX1xw8VVqCtuG7f9c/nns+pEfbaq1j1vVp554YivrDD9sG74xjWyI17D5jmyqiF8AOuH8uIWWbcj7rvGjrEhOx3LnL/OH9fPMGbzqltFNvnjd6ybLxsWuw/467RK63bIuvkbZHFRePR5PcGGxXYC2795abOsuq4yw4V9va7BXNNQXycADFbJofbz/R3u0X0IVddaurjPI/8hpmsXaH67UG9sw/7Cpv9ge/K6C+TJay8I24X6eF7f2NfbwYkl2Vb0dyKdR589ZOvK2iK3rxJZt2mlzAw1sugG+wC+L//5O0dmxZ2LVsrKfMNBWromf8zMlWvEbuutic83U1aucTUt20MoDeZ6NHM25c+56IZ1Mr95m+zwm8NgcNc0tNcJAINXcqjtbj3hwysTJ4hosGhPy9X5Jj5owtqHj+0OoVfY1qn8UyckpvPrIWGfP1YXfYhlLfpzGL/Lemq686cvDkNPbct9skFcT6chDpHp0iCrmsP+mY1yjfYwXH2pnYz5sxtCKZovJ1VFA11PMCefslGLbB+utBjkNQ3pdQLAEJQcas+3+38Kxu6puSDxYePXmjB+UocPHr8vsV+bhHa2BDqcaRWxzq31PPEgK9raF+Iuv+iz+XL70eH6EvZS2azPU7T4kTfXw3jUbe9YJy06nPaa3Bfq73pOldPxmgCMFiWH2qFjXb7H5cruM8voWj/AtOC/hK2Vfl9s5D/krOiP9cU83efPEdb5Oi24Re/Vhbp4gtjeJYmVW492apPKapjt+hOD6OXMXCmPhvtCt/aYhVFhg72eodixzfWzyjAc1wQAQ1ByqBUSJWzZ2m9r0XLGFh9icbFWod6XQ6VjxUQbyy+3+HNogPqd1qPT+rCttH08XmdHVpwLqzU60aLHpIedsn5ZmHixZdlJw449hv4qfS9roOsZUIPMnu+Ovz0evUWW6WzGoUq+rrKvCQDKU3KoTRir98BchuTvj+lSCBcLHPenYnBZvWtvU/JdMGk5kUvWQH/H0Z/Dt/PDj7bL8XGl57Zzhnb5c2Sztq9+rJ8wUmk642/zUn/fLN4v+sbsRj/BwfVS/LBjqL9mR2HILUyWsOMqOKuv3+sZkA6XbpalGxaHY++Td+1Y53paQ9DL6yrvmgCgPJnJ09+c27fribA5eG/80s/l+fbjkjtrgr+vpkLI6IdZMsjy4ZOQ33TrA6svsuLZX3wuX9/jeCvonz3k6T4LSFfQ6kx3t1S92iqvv/BMeewjl1kbAMDoUXJP7ZLJ+uv4rmfU2emDRvMmBlHsbcVhwlhv5biENvoQWLHHvsK2cv/fb2tfF9da8DMwcy7U9Lmn1uvPdgEARpuSQ23BReP9wV0uSFyihNzx4RLWfjsW/CofRGEdq5XfLpzL2vgHG5bM/3M18Xj3n1bFIcpM53HdKXNdTw0AMPqUHGpzJ4/z4eOCxDLFPRTWVkjUFSZ9KKuzQlgirY/bVtaHsB1YgFnPzO+zvptWue2qrhNWftvMeq0FAIwypffULp4g48e6w7u7XW+ty8IkBo2twqKs3u3QQIq9qrj4fZ5VuW1bfJWdw5okFt/G1/vFPbhA0+HHaWePcaE2SQ8FAIwyJYeaWv6W37JQkRMdPlj8X3jwYWP7tT7UFULJB1y+XoW21sZ17WyflkN7XZSvT9S5v4y7Bq27YsZEawMAGH3KCrUPzDvfF467QMnqvTVX9rnjy1YI5bDEYIrt8munZ2j5bb/4usLiHnTgUVe6uOeW48es/E+L/ExKAMDoU1ao1dfVyNK3ut6a61Vljr5qdRZCdgPNlfW7aBZAnpX1Lyz6oHXPt3fZEuvtHNbQHxdZvTaIZVu7F3HsiN1b++vLJ8tF54yz/QCA0afk76lF7R2dMveOp6XtWFZydWdIbowPFQ0bix+fQY4LIfttxwIfUNrjigEVGidX7iFfr3IZPVMouzB1PbTqY4flokl1cv/K1xNqADCKldVTU/V1tXLjH0zxAdNxVKTb97iMFXzvKgaalcPSI7B8U1+nq1gO+wvb2v1zf9ob1C9bd7geotv5iUUXEWgAMMqVHWrqgwsukOXzJkuuOyuZI+3+S9CaQhZCroGttaDCF6V1cVta738ayy26rU20HJbkOeLEEq3PZP2vh+j9tH/4/Qvlunh/DwAwalUk1NRt75guC6ePl1yXhk2b60VlfQCFwFI9g6pQtn3hIT/rMU4EUfmdtmW9warDB239+gvHyxfeOyvsAACMZhULNfVff/u7cunrzvTDgocOSOb40bDH5ZFmkv1slgutGFBxZftCyCnddmXfM4uLb1fVcVSqXaBpT+3KmZPkB6ve4I8BAIx6FQ21+nG10rz6DfKB+efb70JWHT1si/baNJH0v9gD05IF1Ulh5vf5BmFbFxeUtUdaJXPskGRcOn7oyily/+rL7DkBAFAVDbXon981Xe69ZpZMmTjWZidWte+XjAu3TGdn4QvXFlZaiGW/6EMy6Kq6OqXmWLvUHNpvP8mlXyO4490zGXIEAJyk7Cn9/Xn+4DH5zNbd8h8/3mfb+l2yXKZasjW1kqsZ6xLLld12LuN7bxkLtG7JdJ1wS5cLsQ4bZtTjNAw/dOVU+dQ7Lna9M36FHwBwsmENtciH23Py0M522X2gw0YW7UGzLOtWbq3DlfpPy2gPzTIu9Nrqz6iVD195oax4+zSGGgEA/XpNQi3poR2t8vDONnlm7xHZ09ohz75yTNqOdlpvbEJdrUwaVy1zp5wlb2uY5NZnyu/POtsfCADAAF7zUAMAYLgMy0QRAABOBUINAJAahBoAIDUINQBAahBqAIDUINQAAKlBqAEAUoNQAwCkBqEGAEgNQg0AkBqEGgAgNQg1AEBq2A8aP/7g18MmAAAjl4Xar566P2wCADByMfwIAEgNQg0AkBqEGgAgNQg1AEBqEGoAgNQg1AAAqUGoAQBSg1ADAKQGoQYASA1CDQCQGvxMFgAMg93t3fLBpoPys5c7pb0jG2oxFI0N4+RzV02UafXVoWZghBoAVJgG2hX/9pKsWnCOrJh/tkysY1BsqNrc/whseqpNbnlgvzz8vsmDDjbeaQCosI8/2CY3v/08uekPzyXQSqTv20r3PwQrF5xtPd7B4t0GgApr2n5Mrv29+rCFcmio/eylzrA1MEINAIYBPbTKmFhXLe3HB39PkncdAJAahBoAIDUINQBAahBqAJBiW5dXS3V1Yll4p+wK+6Jddy6U6uVbw1awdbm1X3hncevTG6EGAKm0VZa7UGpsWSvbu7ulOyxNc1bLrOrlbm8/dt0pCxs3ypKmbnlkxYxQOTIQagCQQluXN8rGeS7QHlkhyVi6+h4XbEs2SmNxzyzPheGs1SJrt8s9V4eqEYRQA4DU2Sr3bRRZsqZnoEVX37BW5m28VU4eWdwldy5slBYXaCOthxYRagCQNlvvk42yRN7VV09rxiyZI4/Jth1hO9i6fJasntM0YgNNEWoAAJGNjdK4cZ6svWEEjjkmEGoAAJElTbJ9rcjqWQNMIjnNEWoAkDYNs2WetMj2vmbj79ru9s6T2Q1hO5ix4hE/iWSg2ZGnMUINANJmxgpZs+QxWX1779G09fbV8tiSNdLbrbOr79kua+e5YOvl+2wjAaEGACl09T1NsmRj40lfqtYvYzduXCJNfc7XnyErHnHHPrZaZvU57f/0RagBQCpdLfd0u15Xiwu2xC+KNEqTdHff4/b2xx27Xaf9u2NHWI+Nf/kaACps4uf3SvdnLglbKFf1J38hbR+bErb6R08NAJAahBoAIDUINQBAahBqAFBh9XVV0taRDVsoR1tHdygNDqEGABV26Xm1sv7Rg2EL5dj0ZLs0NowLWwMj1ACgwu5qnCTrmw+45SA9thLp+3bLg/vllv/ZL5+7qj7UDowp/QAwDHa3d8nHm/ZK07ZWkVwu1GKw6uuq5dIpE+SuP5sq0+prQu3ACDUAQGow/AgASA1CDQCQGlWSy8pLL78SNgEAGLlcTy0rLcX/pjcAACNQlWQ7ZdsvCTUAwMhXlek+Ji2/INQAACNf9Zlnjbv5ub2vyHnnnSdzLin6t70BABhBqjI5kcyJVvnsHXfJ3hf2hWoAAEYakf8HT+vTzz7AKksAAAAASUVORK5CYII="},92968:(e,n,t)=>{t.d(n,{A:()=>s});const s=t.p+"assets/images/menu-item-example-178f27b8a6a5c928f60fb836bd1ec8c6.png"},20936:(e,n,t)=>{t.d(n,{A:()=>s});const s=t.p+"assets/images/menu-item-first-92bc1b5b3f6a6480eef573a493681ded.png"},79296:(e,n,t)=>{t.d(n,{A:()=>s});const s="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAVkAAACZCAYAAACFbUnbAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAACT9SURBVHhe7Z0LnI3V+scfVK6VS3IXijqJcvuHokIcnVxLOQ7+yekkx6Vy+isVHSmckctxS27JJZSky6dyO27lfo0SRY6QaxFCzPvf32fed2bPtmdmTzPvzJ7xfD+fZe93vWvv/d7Wbz3rt9ZYOYpV+B9HDMMwDF/I6b4ahmEYPmAiaxiG4SMmsoZhGD6So0KFCurJ5qreTnLd1UtyzuykO7I7sW0ny4Wlr8mFDTPcHMMwjPTHIlnDMAwfMZE1DMPwERNZwzAMHzGRNQzD8BETWcMwDB8xkTUMw/ARE1nDMAwfMZE1DMPwERNZwzAMHzGRNQzD8BETWcMwDB8xkTUMw/ARE1nDMAwfMZE1DMPwERNZwzAMHzGRNQzD8BETWcMwDB/JFJF9otNDsn7RLPlk5hi5tXIlzWve5G5ZM3+GfDDt37qd3XnsscdkxowZ+urRu3dvmTZtmjz99NNuTtajePHi8sorr8hbb70ljzzyiJubPoS7ZtFKdriXWYFWrVrJ5MmTZejQoXLDDTe4udFFuors7TWqyOK5E2TbirlhU3YR0JtvvllGjRqlFT5ciomJcUumnZtuukmGDBkivXr1cnMyD0/kwiVE9cEHH3RLZj/q168vEydOlBEjRsj111/v5iZA40JFf+ONN6Ru3bpubvaHZ53G5G9/+5ubk0C9evX0mqVnfcgsCBhGjx4tderUcXMix5dI9uDho/Joz75S+c5WiVLz9j10/9jJs6VGw4eladuusnnbDs3Lihw7dkwGDBgg7dq1S5SeeeYZt0TqGDx4sLRv314rq8fll18uefPmldy5c7s5mc9//vOfi865Y8eO8u6778qPP/4ozz//vG6/+eab7ieyPmvXrpWjR4/KVVddFVZkK1WqJFdffbX8/PPPsnHjxrD3MruSM2dOqV69utSqVcvNyTjmzp0rnTp10h7Dt99+6+amP3ny5NF02WWXuTmRY55slFOwYEG9uUbm8uuvv8qePXu00atYsaKbmwA9DhpCKjplLyVOnDghV1xxhTRs2NDNyX4ULlzYfZd6Ui/L6QD+6wu9/iY/HjoSH90mRbFri8hTj3eQu++oJVcWyCcXLlyQ7Tt3S8zoKbJ241a3VHRz9913S7NmzaRYsWK6ffDgQY34QqE7fs8992ikOH78eOnTp4/ccsstuo9XuuXnz5+XDz74QKPGaIXjRnSCj5O8UqVKyTvvvCONGjWS6667TiOgU6dOyaeffirvvfeelvOI9JplJN98843UqFFDj53eRbCYknf27FnZvn27bofeS4+qVavKAw88IOXLl9eo6MyZM7J+/XqZNGmSfl/jxo3lz3/+s+zfv197BB7du3fXrurWrVvl1VdfdXNFnn32Wbnxxhvl7bfflvnz57u5GQvnffjwYT2OJk2ayGeffebuuRiuG/cfSwWLhYYpNjZW7y9R6YoVK7TMCy+8ICVLlpQ5c+bIRx995H467vP//Oc/Nfigp5QrVy7tytOrDO5Bcp0feughvS+UCYbrzGe3bdumx8s9LVq0qDag6AuNKXXtq6++UsuD7+d34YknntC0b9+++N9L6Z5GdSSbP19eeaVPd7nnzlry0fyl0qD1X2Xg8IlS9JrCMqBPt/hBs2iGB+ovf/mLRqPc2B49esiXX36pD2RKUJnGjh2rN4rKFdwtz4rQneYcdu/eLT179lQfN0eOHHLvvffKbbfd5pZK2zXzE+4BlZkKTsXyoKtcpEgR+emnn2THjqTtL84R8eU6cO7dunWTL774QmrWrCldu3bVMt99951GhvxGlSpVNA8QJMTommuu0fde3rXXXqsN1Q8//KB5mQEitmbNGg0AECVPkMLBPq4XTJ06VZ+Hjz/+WK8fg1g0xDzvCByCFXrPsSQoSyPEtQuHd50LFSqknjDXGbsHAUX8OnfuLMuXL9folGPhejPGQv6qVaukXLly0qZNGz1WypHPvee4qI8csyewkdzTqBbZx//3Qalx683y8YLlMmDoG3Lw0FF5e+4n8uFnS+SawoWk8T3RPcBAJfjjH/+oDwtR3cKFC7WSIhyrV692S106OI6jkQoPPteBiOf777+XfPnyaRQA0XzNiKSJcjjeP/zhD26u6HvyaDySi7abN2+ukdvs2bPjz2vChAn6OSwIKjwiS1TH9xGFgSfi/PaVV16p/i+wv0CBAnLkyBEVpcyE4yaKL1u2rEZ1ScE5E4k+99xzsnjxYs0jCuc5QPSqVaumeV9//bU2Hoiu16gAPSQizp07d7o5F4PwIXqI3ZIlS/Q3+Q2ibQSU7wCsHcSyf//+KsKIKJHzoUOH9HeDG9KkiOSe+iKyxYoWkUkj+ieaWcCsA2YfpIYaVW8OnPhZWb1+i5sTx7e79mqrVKlC3EOYWfBQ0K0JHmWnRWT2AXCTqBzc3GXLlmledoBucPA5k2jNUwKRPX36tLsVBw80kRCVAqL9mmEZ/Pbbb1pZPRA7nsfkKj6Vje4v5xUagR04cECjJk9UEVMamdKlS+t2hQoV9BohRFgsbANTloj2yY8GFi1aJL/88otGcamdTkXjhHgSqcOGDRs0WiUa9cSOa8T38gwhwknB99BDCge9Ae5fUnAcDHDyHVgIyRHpPc2w2QUNWv01IJZfuiUi48or88vVVxWQoS8/k0iwB77YU62EnLkyNxCn1QqdXUB3wYsqGImmcjDiTCuZXQg3uyDYd0wtCAcPNUT7NduyZYvaAogBjSmVnkiLPPYlRf78+fUcidhDGygaLUSB8wZv8KxMmTK6XaJECfU9ERYExhN4fhdxR4yigU2bNmlESCN533336bHRsIaDbv9TTz0lI0eO1Hmu2AzBzwFgvXBNPMuAKBcbhfNFhJMCoed38X3x9gmG8Lm5Z/iwRN3BNGjQQL1trACOpXLlyvq7KQ04R3pPo9ougOMnTsrTL8YkEmwvde7Zzy1lGBkDkQ6DHjQGiCxdT7rwKVkFHpQLbaBIwV47Yu35snR9EVssAawWoixEjN9GfCkXKhqZyYIFCzSKY6CW68IgUDBEd//4xz90IA/xpOFggChcr8W7DogYDYo3gyM53xvmzZun34vlwqAVQo6lw2/gA3tgCWBdPProoxqR0kAgtAhxakjpnka1yP7yy6lAa5JbypYu4eZkLXjAaM1p8YzIyArXDMuAY6Qr6HnJVLTkwF+km4rwpNSVJopFqBAJxMqL3sDzsBkUQ+ixW6JJZGmAaAyI8LANQmnRooV2/3ft2qUzTsaMGaODS3TjQ6FHyHlz/lwH5icTyXszOJKCyBWvGo8UkWUQlT+WwCsN7h21bNlSv3PdunX6F3qIPQN4SUXfoUR6T6NaZNdv+UpyBboQd9WtqfZAVoMHiRuBtxP6V0CpFREq1KVAel4zvyBKIsIiEkJoeZ+cRwiex4hg1K5d281NGnzZYP/V8135DvIZ/ELIELVog2iW40V4iFyDQZDwmzlu7DYPzyoJhaiSbjeNChE8jQ+2RHIw1Q0/m5kXCG5SMA6AuDMzI1h8k/JzOW7PM4ZI72nUiOyFwMnGxjqSM0fOeEEdN+VdWbtpq1S9uaKMHPic1Kp2i86b7frowzLutb5SrkxJLRet0BLT5SHyaN26tfpQVEymJPHQhGu9Q+EmUol5wJjTR9eR78iupMc18xsix//+9786h5duLO8jiSaZLXH8+HH164iwEAAiKXx8toOhsaHi47/ix/IbwO94XWiuBeWiDY6bObtEeaEiS+R97tw5FWAsD+4t1sHtt98eNoJEZPFY6e5jFUQyiwI/n54G81+xCjyfdPr06TJu3Djp0KGDlsPeocHCtuA4OB7mJnuzN4JBiClLGcTbm6EQyT2NGpFd8vla+ebb3VKubEkZG/OC5p06/av07DNYPlqwTP5QqbxM/nd/WTRnvPzvw80DrUouKVMqYWpHZsAFDZ1dQAqeYcDfsjNViUj0ySeflIEDB2pERmvPg5ASVCrK8sDi8TB3lvmE2Zm0XrOMgMEp7glzQyP9c04iMDw/KiwDMjwneIIICFFpcNRFlIT/yuALr14XmeeBKV7kU7lT8iczi5UrV+rc0lDhRHw///xz7alQd/jPhIgEGUwNd2+5tkT1dP/p4UQisvQquE74r1gFnkc6fPhwtaMQROZiv//++7J582adasX/r4BXjB2BZRAKMycQfAR52LBhKqKIeCT3NEegO6JXIVf1dpLrrl6Sc2Yn/dLsTmzbyXJh6WtyYcMMN8cwjOwAMwXo+fXt2zeRDQDh/hrRb6J+doFhGEakYKdh4WAthNpqbCO+RLPYcBmFiaxhGNmGvXv3qtdKNx2rgClwwCDq3//+d7UpsGKS+pNcPzCRNQwjW4Gnj4gSufJns4yTPP744zo7YNasWfL666+7JTMG82TNkzUMw0cskjUMw/CRS1dkI/yrDsMwjLRgkaxhGIaPJBZZi+4MwzDSlQgjWcQ3GyZrVAzD8JkkRDZEjDxCs7N04h/DMAx/yVWoUKGXeJOzRBXJeV1tybFtnu5QwuhQdpEm55bmErtnpcQeSN1/JG4YhhEJ3v/mlRDJepGdRnlxKeitmy7OybKJ8+WtYRiGD/Cf45BylCxZUqXmiprtJU/D/5McszprgThSUKEsLFKxD70hZxYPkXPrprs5hmEY6U+O0mXLxYlsjXZy+d1PSc5EIusSL6ZZWFVDiG3zhpxdOlx+2zDTzTEMw0h/csbZBhgBAQENHgzirXap9Y2mhHdx2Vk7xUoO3hiGYfhIjjLXlXPwDS6v/me5IhDJxikQu+L8hDjc19DtYLKgYJ1b9m85t3G2u2UYhpE6wi5UkygzR4JdcHn1tiqU1xQsoLs80Yz/N15D499kC85v/dB9ZxiGkQ6EKG+8yHqwUNimDevcLcMwDCMt2P9dYBiG4SMhIktQm73sAMMwjMwkSGQZ6NIXwzAMI51wRdYVWMMwDCNdiRPZIIE1rTUMw0g/AiIb90cGCZjMGoZhpBc5E2mqeQaGYRjpSs5EGhv/j2EYhpEeJJpdYBiGYaQvCSJrGmsYhpHuxIusaaxhGEb6E2QXxGFiaxiGkX5cJLKGYRhG+uGKrMWvhmEYfhAmkjXBNQzj99GgQQP54YcfNPHeTxYuXChnz56V/v37uznRSabZBR06dJATJ06It6JjUmnbtm3uJ9KHDz74QLZv3y716tVzcwzj0uLKK6+UV199VXbv3i3nz5/Xevbbb7/J1q1bpVevXm4pkbZt28r+/ftl1KhRbk7G4Yl1bGyszJgxw81NmbQcs1+aFCKyGRfFTp06Va666ipdm5zUsWNH+eWXX+Srr76KzyNVrlzZ/UT6UKBAAU2XX365m2MYlw4333yzfPjhh/LMM8/Irl27pFmzZlrPevbsKXnz5pVOnTpJ9erVtWy+fPlUkPPkyaPbGcndd98tBQsWlFOnTkmtWrWkUqVK7p7kScsx+6VJl9zAV7Fixdx3hnHp0a9fP7nzzjtl1qxZ0rBhQ/nkk080f8yYMXLvvfdK8+bNZcOGDZpXrlw5ueKKK/R9euFFqHT1kwORRWCXL18uJUqUkMaNG7t7kieSY8ZeIGLNKJshTmSzgA3buXNn+fLLL7V7Qxfi6NGjMmzYMHdvHO3bt5dvvvkmvgtEK7RgwQK9YVxQ/Bta8lKlSsmiRYu0TEo32zCyC02bNpW77rpLRS5cd5rIlgR0iV988UUVLOoedQVhoksdLJSI9rFjx3T/9OnT9bNpheMkcuU3lixZIjlz5tSGISWSO+bMJEtEsl26dJGYmBgVzzZt2sgtt9wiy5Ytk65du8Y/LNx4fCa6C4htmTJlZMqUKWoNHDp0SPr27Su5c+fW0H/fvn3aihP6N2rUSD9vGNkdnvkiRYrIt99+K6tWrXJzw0OX+OWXX5Zz587JxIkTta7QlaZL7YGt8MADD8gLL7yg+3r37u3uSRs0BIUKFZJNmzbJunXrVMRr1KiRomUQyTFnBlEvslzYJ598UlukJ554QubOnatCyQ3FuG/SpImWoaW79tprNZKdOXOmtoLdunWTOnXqaHnDuNQpXbq0XHbZZfL999+7OWln0KBBajXQa6TOpQd169ZVoVy/fr0sXrxYo2t6ny1btnRLZC2iXmTxYng4Nm/enKj13bFjh97UokWLSs2aNbV1Pn36tL6nZTUMIzGsRJ2eUN9+/PFHdytpsBXoupOw6RBMomovL3galmcV8L2elbdmzRodqL7jjjt0O7V49ob3e1gKDI7x6uWxn3J+EPUiS3TKBcaQ9y6Il7hR+DW5cuXSaR7Tpk1TP4YbdvDgQZkwYYJ6sIZhiBw5csR9l7FgyXkj89RZ7DrE1svDxsPOA8/SoPdJIAWrV6/WnmzVqlV1pkFqIRomUPN+D0uByJtXL4/9lPODLOHJAvNbvQsSnII9lx49emgkO2nSJN1+9NFH9cJltvFtGNEA0RrjGozARyvYe1gawUHV7NmzpXDhwjoz6J577nFLZh2iXmQZtGKiNANZhPgpQQv417/+VW644QadpoKdwECYYVzqeBEhdaN27dpubvTAnF2OjXGVG2+8MVEw9dprr2mPtn79+m7prEPUi+z8+fO1BcanYaJ0UiDAhPwe3vQtfCPshGCYcVC8eHF3yzAuDd555x35/PPPtZ4wKBwK1tpjjz3mbiVAgJMRMIiNb8ysAs8q8Fi6dKnOMmBmUSQNREYdcyREvchysYcPH67RLEY1g1oIKgb5Rx99JH369NFylGFwjJFOHhYSESweLdNAPGgl8+fPL/fdd59UqFDhd5vphpEVefbZZ3XU/qGHHlJflDnk1CesNiw55p57U7E2btyowQp1qUWLFlpXggOZcFBP6eJ7YyWheP5ouKmTWAW//vqrrFixws1JgL9SI9gKtgwuXLigr/yWRyTHjP+Lzej5wL5Tqsx1TqnSZZ2Smso4VW+rxp8mZHjq0KGDE+jKONu2bQu7PyCYzpYtW5zATQzcQ0dfd+3a5QwePFj3t2rVyglErs7x48ed2NhYTQcOHHBiYmISfU/goXLWrl3rnD9/Xsvwe1WrVk1UxpKl7JwCouoMHTrU2b9/v9YDOHPmjLN161anV69eicoGRNcJRJBaJtArdP71r385DRo0cAKCp4n3weVJs2fP1voZCGicgMBdtD9cateunf7O7t27nVq1aoUtM2rUKCcgrE4guNLtp59+Wj9z8uRJp0uXLvHlwh2zty81KSVNijTlQGQDTY9ukUe4vmXTRt0yDMMw0kaWmV1gGIaRFTGRNQzD8BETWcMwDB8xkTUMw/ARE1nDMAwfMZE1DMPwERNZwzAMHzGRNQzD8BETWcMwDB8xkTUMw/ARE1nDMAwfMZE1DMPwERNZwzAMHzGRNQzD8BET2XTkk08+0TWUWLbcg8UcHcfRV8Mw/IO1/FheZ9u2bW5OdJDpIssFQZgmTpzo5iQQLReN1W9ZthixDJdMQA0jMlilYPz48XLgwAGJjY3V+sNqCCz7Hbzg6ahRo2T//v3Stm1bN8d//NKiqIhkWabi/vvvl1atWrk50UnwMsbBiYUbgSVxWGkz2s/DMDIDlrr59NNPVbCWL18ut99+uy4D88orr+gKuqzh5y0Vwzp8JBZPzEj80KKoENnDhw9Lvnz5pEuXLm6OYRjZCdYRGzBggFSsWFGGDh2qa4ytXbtW1+MiHwHu2LGjruMFoetypQf0OIlGgyPmUPzQoqgQ2VOnTsnXX3+ti56xoFtKcMO4UQcPHtQuByE+CyR6S3+ztDD7du/eLbVq1dI8GDJkiC70tnXrVv0Oj3Hjxsm5c+d0f1pIjf/KQzR16lT5+eef9TMcFw8dD5thZDcQtltvvVW72wMHDnRzE2ApfwTW65Y3bNhQ6+hbb72l9cPrpnv7qWPUW7SDujto0CDdn1ZSq0WREBUiS5dgzpw5KjRcxGABDAd+DS3NkiVLdIngNm3aqNiOGDFCPRxvZUvWK6tSpYr7KdFWlJUtixYtmkjM+A58IcQ3I+D8Jk+eLM2bN5dp06bp8sU9e/aUkiVLyqRJk6JyTXzDSAv169fXVaK91WSTgsADCwFrjnJEt1hylStXdkvEwWrT1atX18CKVaexHNKD1GpRJESFyAJRHD5N1apV5aWXXnJzL6Zr167SunVrXVr44Ycf1haQ0fyRI0fq8t8tW7bUcqzdnjdvXr0RUKlSJV0mePv27VrOi3B5RdwOHTokX3zxheb5zfPPPy/16tWTGTNm6Pr3NAgsZc4DVrx4cXnwwQfdkoaRPSCQQLj27dvn5qQNotfu3btr3af+JCfcqSVSLYqUqBFZGDt2rBw5ckRN56SiOVpEzOlly5a5OXEgnsePH1chBVrMM2fOxG/XrVtXI9sNGzboDaLrApjvRLaI9Y4dOzQvKejC0HUJTgsXLnT3Rg4CS7eEhiIYb3QzOPo2jOxAwYIF3XfpA/Vn1apV7lZ4PGvBq6udO3dOZEGQkpotEIkWRUpUiSzzTGmZaPWeeuopuXDhgtoAwSCURKiDBw+Ov1AkuhelSpVSAYbVq1eriV2+fHmNVrEE+C7K4dcivkS3N910k3YRdu7cqZ9LjnCzCxo1auTujRweuMKFC8vs2bMTnQM3n4fAOwfDyC4w9pDReNaDV1eZmhVsQZBCbQiPSLQoUqJKZIFuM4NYiFeRIkXk5MmT7p4E8E979+4df6GCk3fRCPkZ+PJ82dtuu02OHTumlgBRK9FrzZo1VWz5DUQ5I+FYGGENdw6/R7gNI5rZu3evBjMEQlmFSLQoEqJOZBFABoOIVsPNVSOEz507t0aoKcF35cmTR+rUqSPXX3+97NmzRy0BLAMGwLAQ+B78WObvZRS06kwTueGGG9wcw8jeUOew76pVq5Yug0kZQUpaFClRJ7IwevRovSn4paE3BC/29OnT6o96fmtSrFu3TssSxdJtYDAMmKJBNIyNUKhQIRXe9DTOUwJTHUvgT3/6U5Z54AwjLeBx4n/S03zuuefc3ASY7dOuXTt3Kw4GqCMJpvwkOS2KlKgUWQSPaVq0fIhjMITw7733nl786dOnawvDyTOnjUGoBg0auCVFrQGiVPxYPE8uFnhTvBg9pAuzefNmzfcDvBx+m78E82C6ydKlS/XGvf/++/qAMW+2X79+6gXhFRtGdoI63bdvX+1N4nHOnDlTgyTvuZ81a5YMHz48/s9omU5JIHLXXXfpFC0Gi1PC803ppYYTRP4yEz3Bq42U5LQoYkqVuc4pVbqsU1JTGafqbdWcQHaGpUDr5gQEzwmI40X7AhfeCVw0LRO6LyYmxjlw4IDuh1OnTjlr16512rdvn6jcvHnzdP/OnTudgHjF50+cOFE/e/DgQadZs2aJPhOa+vfv75w9e9YJiHjY/V6aMGGC/havXl6gEdDzO3funDNo0KD4/MBD4EyZMsU5duyYHgfp+PHj+htNmzaNL2fJUnZKAVF1AiLnHD16NFHdXbNmjdOhQ4f4cgEBdj777DOtd5SjDrVo0ULLnDhxIqwmUKcCwYuWD/R4L9qfUvq9WpRSyoHIBkIt3SKPgaItmzbqlmEYhpE2otIuMAzDyC6YyBqGYfiIiaxhGIaPmMgahmH4iImsYRiGj5jIGoZh+IiJrGEYho+YyBqGYfiIiaxhGIaPmMgahmH4iImsYRiGj5jIGoZh+IiJrGEYho+YyBqGYfiIiWwmwX8wfvbsWenfv7+bkzQTJkzQ//ibV8MwUsZbqXZbEqvRZiSZLrJcBJbBZiXJUKLlQiGECCJCFy6Z+BlG6mFVhPHjx8uBAwd0RQPqEstCrVmzRuu+BysT7N+/P37VBL/huFg94ejRo3pcJBY+JY99qSUqIlmWmbj//vvTtFhZRhBuSXASy1oYhhE5LLnE4qWIKWvesRQTy7uwNFO5cuWkU6dO8YJWoEABTSwVlRGwTM4DDzyg9Z3jYvkqlotC5MMFgykRFSJ7+PBhXb21S5cubo5hGNkV1t8aMGCAVKxYUYYOHapL47OEP+tpkY8Ad+zYUdfhg98TPaYEvVN6yeHsul69eknt2rXjj4tVa0eOHCkHDx7URVmbNWvmloyMqBDZU6dO6Qqyd9xxhy6ImBLcJG4OJ00oj93A+ujt27fX/VwE9u3evVtXpPUYMmSI/Pbbb7pIW/BCa+PGjZNz587p/rTSuXNn2bJli/7O7+lm8HnOhXPyzqt48eLu3sQ0adJEVq5cGW9l8JCyhHHwuWFl8DDRgLGwJN/5448/StOmTd0ShpGxEL3eeuutagMOHDjQzU0AUUNgPbuQlal5pt966y19zj370NvPM04dRkeox4MGDdL9vxfqEXU4GK8RYHnwggULurmRERUiSzdgzpw5KkxcuGCRCAceDaKxZMkSDeXbtGmjgjZixAgN6b3VaFmvrEqVKu6nRFtOVrIsWrSotpYefAdeEOKbFjgmhDp//vz6vmzZsjJv3jw9vsmTJ6d4Xt7n6RrR2NBtWrBggdx5551uiQQQSR6ua6+9Vlf/LFOmjMyYMUNat26tq/gGkzt3bnn++edl7969ukJv/fr1dVVcw8gMeP6oIxs3blThSgqCEywEuu2UI7rFnmNZ8WDuu+8+qV69ugZZrGyL5ZDeELgVK1ZMfdrt27e7uZERFSILtBR4M4jASy+95OZeTNeuXVVIFi9eLA8//LC2enPnztVwnnXaW7ZsqeU2bdqkrQ4XH1hmmyWIuUCU8yJcXkuWLKlLhxPp/V74/ieffFLf05Li3SD0nTp1khUrVujSxghdUnifp8EZPHiwLn3O57t16ybvvvuuWyoB1q7nQX3xxRfjyz7++OOybt069ZGCuzScL8uee9drx44d7h7DyHgICAio9u3b5+akDaLX7t27qw5QD5IT7tRCD7RPnz4SExOjy/q/+eabqlWpIWpEFsaOHStHjhzRATA8kXDQCjJQtmzZMjcnDsTz+PHjKqRAK8la6d523bp1NbLdsGGD3hS6K4AgEdlGIj50W7wZBV5iKhY0btxYb8iuXbt0xDSY+fPnazc9ubXjvc9///33GvUmBwJ64403qh1C9BoM53D11VdLtWrV3Jw4sAgMIxpIbXc7JbAJVq1a5W6Fp0GDBirAXr0lOKFnyauXx37KedBTpPdHZEzANmzYMLUpU0tUiSxdWFojWjq6wBcuXFAbIBiEkhMm2vMuDokuRalSpVSAYfXq1TqgVr58eY1WsQT4Lsrh1yK+RI833XSTRo87d+7UzyVHuNkFjRo10n102/men376SbeDYYoKIlu4cOEkLQPv84hhSi0xD6kXpQdfAxKeLsdFq2sY0cjPP//svss46PkSxHj19uWXX9Z6xquXx37KeTBrCLvikUcekS+//FJ7jwRVXuAWKVElskDXl8EexKtIkSJy8uRJd08C+Ke9e/eOvzjByfNrCOmJ9DxfllFBBqGwBIhaiV5r1qypF4zfQJSzGkTl4a4BHizTUAwjGiE6JKAgKIp2EOIpU6ao3UePlB4i3nBqiDqRRQAZISdSCzdvFjsBESFCTQm+K0+ePFKnTh25/vrrZc+ePdqdRpwYAMNC4HvwY5mzlxb4DnymQoUKuTkJlChRQiPL06dPJxmlIvRE7uE+HwqRAA0NjVBStophRCvUP6w8BCulweBoAkuSIIYB9NQQdSILo0eP1huBXxp6E/BiESv80ZTCdgaBKEsUS9jPYBgwXQyRwkZA1BDetJrltHJ4OoxuPvbYY25uHPitiCwzBZKCYyXSRvTbtWvn5sYR6mExe4JonwE7Zi4YRlaCsRemYdHrpAseCjN/QusAg7eRBFbpwRNPPCEtWrRwtxJgtg/BGfZfqihV5jqnVOmyTklNZZyqt1VzAtkZlgIX2wmIk9OgQYNE+W3btnWOHj3qAGWC9wXCdycQNTobN250AtGuExBip0ePHs7ChQsTfU+lSpWcnTt3OgFBdQIRsBO4cfH71q9fr/mnTp1y+vfvH58fLrH/7Nmz+v3h9nupS5cuzk8//eR89913TufOnZ3SpUs7b7/9thNotZ2AwOpxemU/++wz/c4BAwbE502cONE5f/68E2gE9LwCjYgza9Ys58SJE04gynUmTJgQX7Zp06ZOoNul+0aNGqW/FWg09PfY9srxGQj+rCVLmZ14fgPBjdbBmTNn6rPOM9yvXz/n4MGDTqBnqBpA2eHDh2t9X7RokRMIYpx69eppfocOHfT5D9UHEnU90OPTuhRc71JK9957r7Nv3z797JgxY+KP6/XXX3cCAZvqSaD3GPazSaZoFVkSAhMbGxv2IsbExDiBFkX3A2K5du1ap3379onKzZs3T/dzcRBdLx9B47Pc0GbNmiX6TGiKVGRJiOuWLVv0oeD7A9GpM3XqVL1RweWefvpp3Xfy5EkVZy9/2LBh2rjwWX4TcR40aJAKdahQBlp8Z+XKlfqgAgK9f/9+Z/z48fG/ZyJrKVoTzyh1w3vegXq8Zs0aFVCvHELnBSWUQy8CkWayIouwLl26VMsHer8X7U8uNWnSROvd8ePH448r0NN1Pv7449QLbCDlQGSFkenAFnkMFG3ZtFG3DMMwjLQRlZ6sYRhGdsFE1jAMw0dMZA3DMHzERNYwDMNHTGQNwzB8xETWMAzDR0xkDcMwfMRE1jAMw0dMZA3DMHzERNYwDMNHTGQNwzB8Q+T/AR9kuOh5rz0OAAAAAElFTkSuQmCC"},7033:(e,n,t)=>{t.d(n,{A:()=>s});const s=t.p+"assets/images/submenu-e57b65d4816fd199d92649f2031c9d9d.png"},28453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>r});var s=t(96540);const i={},d=s.createContext(i);function a(e){const n=s.useContext(d);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),s.createElement(d.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/301e2d26.0589828a.js b/assets/js/301e2d26.0589828a.js new file mode 100644 index 00000000..4e2d0038 --- /dev/null +++ b/assets/js/301e2d26.0589828a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7098],{61688:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>d,contentTitle:()=>c,default:()=>a,frontMatter:()=>s,metadata:()=>r,toc:()=>o});const r=JSON.parse('{"id":"API-Reference/search/FileFilters","title":"FileFilters","description":"Import :","source":"@site/api/API-Reference/search/FileFilters.md","sourceDirName":"API-Reference/search","slug":"/API-Reference/search/FileFilters","permalink":"/api/API-Reference/search/FileFilters","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"WorkingSetView","permalink":"/api/API-Reference/project/WorkingSetView"},"next":{"title":"FindBar","permalink":"/api/API-Reference/search/FindBar"}}');var n=i(74848),l=i(28453);const s={},c=void 0,d={},o=[{value:"Import :",id:"import-",level:3},{value:"DropdownButton",id:"dropdownbutton",level:2},{value:"FILTER_TYPE_EXCLUDE : string",id:"filter_type_exclude--string",level:2},{value:"FILTER_TYPE_INCLUDE : string",id:"filter_type_include--string",level:2},{value:"FILTER_TYPE_NO_FILTER : string",id:"filter_type_no_filter--string",level:2},{value:"getActiveFilter() \u21d2 Object",id:"getactivefilter--object",level:2},{value:"setActiveFilter(filter, [filterType])",id:"setactivefilterfilter-filtertype",level:2},{value:"compile(userFilterString) \u21d2 Object",id:"compileuserfilterstring--object",level:2},{value:"filterPath(compiledFilter, fullPath) \u21d2 boolean",id:"filterpathcompiledfilter-fullpath--boolean",level:2},{value:"filterFileList(compiledFilter, files) \u21d2 Array.<File>",id:"filterfilelistcompiledfilter-files--arrayfile",level:2},{value:"getPathsMatchingFilter(compiledFilter, An) \u21d2 Array.<string>",id:"getpathsmatchingfiltercompiledfilter-an--arraystring",level:2},{value:"createFilterPicker() \u21d2 jQueryObject",id:"createfilterpicker--jqueryobject",level:2},{value:"showDropdown()",id:"showdropdown",level:2},{value:"closeDropdown()",id:"closedropdown",level:2}];function h(e){const t={br:"br",code:"code",h2:"h2",h3:"h3",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,l.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.h3,{id:"import-",children:"Import :"}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-js",children:'const FileFilters = brackets.getModule("search/FileFilters")\n'})}),"\n",(0,n.jsx)("a",{name:"DropdownButton"}),"\n",(0,n.jsx)(t.h2,{id:"dropdownbutton",children:"DropdownButton"}),"\n",(0,n.jsx)(t.p,{children:"Utilities for managing file-set filters, as used in Find in Files.\nIncludes both UI for selecting/editing filters, as well as the actual file-filtering implementation."}),"\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"Kind"}),": global constant"]}),"\n",(0,n.jsx)("a",{name:"FILTER_TYPE_EXCLUDE"}),"\n",(0,n.jsxs)(t.h2,{id:"filter_type_exclude--string",children:["FILTER_TYPE_EXCLUDE : ",(0,n.jsx)("code",{children:"string"})]}),"\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"Kind"}),": global constant"]}),"\n",(0,n.jsx)("a",{name:"FILTER_TYPE_INCLUDE"}),"\n",(0,n.jsxs)(t.h2,{id:"filter_type_include--string",children:["FILTER_TYPE_INCLUDE : ",(0,n.jsx)("code",{children:"string"})]}),"\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"Kind"}),": global constant"]}),"\n",(0,n.jsx)("a",{name:"FILTER_TYPE_NO_FILTER"}),"\n",(0,n.jsxs)(t.h2,{id:"filter_type_no_filter--string",children:["FILTER_TYPE_NO_FILTER : ",(0,n.jsx)("code",{children:"string"})]}),"\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"Kind"}),": global constant"]}),"\n",(0,n.jsx)("a",{name:"getActiveFilter"}),"\n",(0,n.jsxs)(t.h2,{id:"getactivefilter--object",children:["getActiveFilter() \u21d2 ",(0,n.jsx)("code",{children:"Object"})]}),"\n",(0,n.jsx)(t.p,{children:"A search filter is an array of one or more glob strings. The filter must be 'compiled' via compile()\nbefore passing to filterPath()/filterFileList()."}),"\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"Kind"}),": global function",(0,n.jsx)(t.br,{}),"\n",(0,n.jsx)(t.strong,{children:"Returns"}),": ",(0,n.jsx)("code",{children:"Object"})," - a globeFilter filter that can be passed to filterPath()/filterFileList()."]}),"\n",(0,n.jsx)("a",{name:"setActiveFilter"}),"\n",(0,n.jsx)(t.h2,{id:"setactivefilterfilter-filtertype",children:"setActiveFilter(filter, [filterType])"}),"\n",(0,n.jsx)(t.p,{children:"Sets and save the index of the active filter. Automatically set when editFilter() is completed.\nIf no filter is passed in, then clear the last active filter index by setting it to -1."}),"\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"Kind"}),": global function"]}),"\n",(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Param"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"filter"}),(0,n.jsxs)(t.td,{children:[(0,n.jsx)("code",{children:"Object"})," | ",(0,n.jsx)("code",{children:"string"})]}),(0,n.jsx)(t.td,{children:"a globeFilter filter that can be passed to filterPath()/filterFileList()."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"[filterType]"}),(0,n.jsx)(t.td,{children:(0,n.jsx)("code",{children:"string"})}),(0,n.jsx)(t.td,{children:"optional, one of FileFilters.FILTER_TYPE_*."})]})]})]}),"\n",(0,n.jsx)("a",{name:"compile"}),"\n",(0,n.jsxs)(t.h2,{id:"compileuserfilterstring--object",children:["compile(userFilterString) \u21d2 ",(0,n.jsx)("code",{children:"Object"})]}),"\n",(0,n.jsx)(t.p,{children:"Converts a user-specified filter object (as chosen in picker or retrieved from getFilters()) to a 'compiled' form\nthat can be used with filterPath()/filterFileList()."}),"\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"Kind"}),": global function",(0,n.jsx)(t.br,{}),"\n",(0,n.jsx)(t.strong,{children:"Returns"}),": ",(0,n.jsx)("code",{children:"Object"})," - a globeFilter filter that can be passed to filterPath()/filterFileList()."]}),"\n",(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Param"}),(0,n.jsx)(t.th,{children:"Type"})]})}),(0,n.jsx)(t.tbody,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"userFilterString"}),(0,n.jsx)(t.td,{children:(0,n.jsx)("code",{children:"string"})})]})})]}),"\n",(0,n.jsx)("a",{name:"filterPath"}),"\n",(0,n.jsxs)(t.h2,{id:"filterpathcompiledfilter-fullpath--boolean",children:["filterPath(compiledFilter, fullPath) \u21d2 ",(0,n.jsx)("code",{children:"boolean"})]}),"\n",(0,n.jsx)(t.p,{children:"Returns false if the given path matches any of the exclusion globs in the given filter. Returns true\nif the path does not match any of the globs. If filtering many paths at once, use filterFileList()\nfor much better performance."}),"\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"Kind"}),": global function"]}),"\n",(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Param"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"compiledFilter"}),(0,n.jsx)(t.td,{children:(0,n.jsx)("code",{children:"object"})}),(0,n.jsx)(t.td,{children:"'Compiled' filter object as returned by compile(), or null to no-op"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"fullPath"}),(0,n.jsx)(t.td,{children:(0,n.jsx)("code",{children:"string"})}),(0,n.jsx)(t.td,{})]})]})]}),"\n",(0,n.jsx)("a",{name:"filterFileList"}),"\n",(0,n.jsxs)(t.h2,{id:"filterfilelistcompiledfilter-files--arrayfile",children:["filterFileList(compiledFilter, files) \u21d2 ",(0,n.jsx)("code",{children:"Array."})]}),"\n",(0,n.jsx)(t.p,{children:"Returns a copy of 'files' filtered to just those that don't match any of the exclusion globs in the filter."}),"\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"Kind"}),": global function"]}),"\n",(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Param"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"compiledFilter"}),(0,n.jsx)(t.td,{children:(0,n.jsx)("code",{children:"object"})}),(0,n.jsx)(t.td,{children:"'Compiled' filter object as returned by compile(), or null to no-op"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"files"}),(0,n.jsx)(t.td,{children:(0,n.jsx)("code",{children:"Array."})}),(0,n.jsx)(t.td,{})]})]})]}),"\n",(0,n.jsx)("a",{name:"getPathsMatchingFilter"}),"\n",(0,n.jsxs)(t.h2,{id:"getpathsmatchingfiltercompiledfilter-an--arraystring",children:["getPathsMatchingFilter(compiledFilter, An) \u21d2 ",(0,n.jsx)("code",{children:"Array."})]}),"\n",(0,n.jsx)(t.p,{children:"Returns a copy of 'file path' strings that match any of the exclusion globs in the filter."}),"\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"Kind"}),": global function"]}),"\n",(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Param"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"compiledFilter"}),(0,n.jsx)(t.td,{children:(0,n.jsx)("code",{children:"object"})}),(0,n.jsx)(t.td,{children:"'Compiled' filter object as returned by compile(), or null to no-op"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"An"}),(0,n.jsx)(t.td,{children:(0,n.jsx)("code",{children:"Array."})}),(0,n.jsx)(t.td,{children:"array with a list of full file paths that matches atleast one of the filter."})]})]})]}),"\n",(0,n.jsx)("a",{name:"createFilterPicker"}),"\n",(0,n.jsxs)(t.h2,{id:"createfilterpicker--jqueryobject",children:["createFilterPicker() \u21d2 ",(0,n.jsx)("code",{children:"jQueryObject"})]}),"\n",(0,n.jsxs)(t.p,{children:["Creates a UI element for selecting a filter. The picker is populated with a list of recently used filters,\nan option to edit the selected filter, and another option to create a new filter. The client should call\n",(0,n.jsx)(t.code,{children:"commitDropdown()"})," when the UI containing the filter picker is confirmed, which updates the Most Recently\nUsed (MRU) order, and then use the returned filter object as needed."]}),"\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"Kind"}),": global function",(0,n.jsx)(t.br,{}),"\n",(0,n.jsx)(t.strong,{children:"Returns"}),": ",(0,n.jsx)("code",{children:"jQueryObject"})," - The Picker UI as a jQuery object."]}),"\n",(0,n.jsx)("a",{name:"showDropdown"}),"\n",(0,n.jsx)(t.h2,{id:"showdropdown",children:"showDropdown()"}),"\n",(0,n.jsx)(t.p,{children:"Allows unit tests to open the file filter dropdown list."}),"\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"Kind"}),": global function"]}),"\n",(0,n.jsx)("a",{name:"closeDropdown"}),"\n",(0,n.jsx)(t.h2,{id:"closedropdown",children:"closeDropdown()"}),"\n",(0,n.jsx)(t.p,{children:"Allows unit tests to close the file filter dropdown list."}),"\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"Kind"}),": global function"]})]})}function a(e={}){const{wrapper:t}={...(0,l.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(h,{...e})}):h(e)}},28453:(e,t,i)=>{i.d(t,{R:()=>s,x:()=>c});var r=i(96540);const n={},l=r.createContext(n);function s(e){const t=r.useContext(l);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:s(e.components),r.createElement(l.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/31d51c4e.0650af7e.js b/assets/js/31d51c4e.0650af7e.js new file mode 100644 index 00000000..f3fcda90 --- /dev/null +++ b/assets/js/31d51c4e.0650af7e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1311],{24218:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>l,contentTitle:()=>t,default:()=>o,frontMatter:()=>s,metadata:()=>r,toc:()=>h});const r=JSON.parse('{"id":"API-Reference/view/MainViewManager","title":"MainViewManager","description":"Import :","source":"@site/api/API-Reference/view/MainViewManager.md","sourceDirName":"API-Reference/view","slug":"/API-Reference/view/MainViewManager","permalink":"/api/API-Reference/view/MainViewManager","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"MainViewFactory","permalink":"/api/API-Reference/view/MainViewFactory"},"next":{"title":"Pane","permalink":"/api/API-Reference/view/Pane"}}');var a=i(74848),d=i(28453);const s={},t=void 0,l={},h=[{value:"Import :",id:"import-",level:3},{value:"view/MainViewManager",id:"viewmainviewmanager",level:2},{value:"view/MainViewManager.EVENT_CURRENT_FILE_CHANGE : string",id:"viewmainviewmanagerevent_current_file_change--string",level:3},{value:"view/MainViewManager.ALL_PANES",id:"viewmainviewmanagerall_panes",level:3},{value:"view/MainViewManager.ACTIVE_PANE",id:"viewmainviewmanageractive_pane",level:3},{value:"view/MainViewManager.isExclusiveToPane(File) \u21d2 Object",id:"viewmainviewmanagerisexclusivetopanefile--object",level:3},{value:"view/MainViewManager.getActivePaneId() \u21d2 string",id:"viewmainviewmanagergetactivepaneid--string",level:3},{value:"view/MainViewManager.focusActivePane()",id:"viewmainviewmanagerfocusactivepane",level:3},{value:"view/MainViewManager.setActivePaneId(paneId)",id:"viewmainviewmanagersetactivepaneidpaneid",level:3},{value:"view/MainViewManager.getCurrentlyViewedFile(paneId) \u21d2 File",id:"viewmainviewmanagergetcurrentlyviewedfilepaneid--file",level:3},{value:"view/MainViewManager.getCurrentlyViewedEditor(paneId) \u21d2 Editor",id:"viewmainviewmanagergetcurrentlyviewededitorpaneid--editor",level:3},{value:"view/MainViewManager.getAllViewedEditors() \u21d2 Object",id:"viewmainviewmanagergetallviewededitors--object",level:3},{value:"view/MainViewManager.getCurrentlyViewedPath(paneId) \u21d2 string",id:"viewmainviewmanagergetcurrentlyviewedpathpaneid--string",level:3},{value:"view/MainViewManager.cacheScrollState(paneId)",id:"viewmainviewmanagercachescrollstatepaneid",level:3},{value:"view/MainViewManager.restoreAdjustedScrollState(paneId, heightDelta)",id:"viewmainviewmanagerrestoreadjustedscrollstatepaneid-heightdelta",level:3},{value:"view/MainViewManager.getWorkingSet(paneId) \u21d2 Array.<File>",id:"viewmainviewmanagergetworkingsetpaneid--arrayfile",level:3},{value:"view/MainViewManager.getAllOpenFiles() \u21d2 array.<File>",id:"viewmainviewmanagergetallopenfiles--arrayfile",level:3},{value:"view/MainViewManager.getPaneIdList() \u21d2 array.<string>",id:"viewmainviewmanagergetpaneidlist--arraystring",level:3},{value:"view/MainViewManager.getWorkingSetSize(paneId) \u21d2 number",id:"viewmainviewmanagergetworkingsetsizepaneid--number",level:3},{value:"view/MainViewManager.getPaneTitle(paneId) \u21d2 string",id:"viewmainviewmanagergetpanetitlepaneid--string",level:3},{value:"view/MainViewManager.getPaneCount() \u21d2 number",id:"viewmainviewmanagergetpanecount--number",level:3},{value:"view/MainViewManager.findInAllWorkingSets(fullPath) \u21d2 Object",id:"viewmainviewmanagerfindinallworkingsetsfullpath--object",level:3},{value:"view/MainViewManager.findInOpenPane(fullPath) \u21d2 Object",id:"viewmainviewmanagerfindinopenpanefullpath--object",level:3},{value:"view/MainViewManager.findInWorkingSet(paneId, fullPath) \u21d2 number",id:"viewmainviewmanagerfindinworkingsetpaneid-fullpath--number",level:3},{value:"view/MainViewManager.findInWorkingSetByAddedOrder(paneId, fullPath) \u21d2 number",id:"viewmainviewmanagerfindinworkingsetbyaddedorderpaneid-fullpath--number",level:3},{value:"view/MainViewManager.findInWorkingSetByMRUOrder(paneId, fullPath) \u21d2 number",id:"viewmainviewmanagerfindinworkingsetbymruorderpaneid-fullpath--number",level:3},{value:"view/MainViewManager.addToWorkingSet(paneId, file, [index], [forceRedraw])",id:"viewmainviewmanageraddtoworkingsetpaneid-file-index-forceredraw",level:3},{value:"view/MainViewManager.addListToWorkingSet(paneId, fileList)",id:"viewmainviewmanageraddlisttoworkingsetpaneid-filelist",level:3},{value:"view/MainViewManager.switchPaneFocus()",id:"viewmainviewmanagerswitchpanefocus",level:3},{value:"view/MainViewManager.traverseToNextViewByMRU(direction) \u21d2 Object",id:"viewmainviewmanagertraversetonextviewbymrudirection--object",level:3},{value:"view/MainViewManager.traverseToNextViewInListOrder(direction) \u21d2 Object",id:"viewmainviewmanagertraversetonextviewinlistorderdirection--object",level:3},{value:"view/MainViewManager.beginTraversal()",id:"viewmainviewmanagerbegintraversal",level:3},{value:"view/MainViewManager.endTraversal()",id:"viewmainviewmanagerendtraversal",level:3},{value:"view/MainViewManager.setLayoutScheme(rows, columns)",id:"viewmainviewmanagersetlayoutschemerows-columns",level:3},{value:"view/MainViewManager.getLayoutScheme() \u21d2 Object",id:"viewmainviewmanagergetlayoutscheme--object",level:3}];function c(e){const n={a:"a",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,d.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"import-",children:"Import :"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-js",children:'const MainViewManager = brackets.getModule("view/MainViewManager")\n'})}),"\n",(0,a.jsx)("a",{name:"module_view/MainViewManager"}),"\n",(0,a.jsx)(n.h2,{id:"viewmainviewmanager",children:"view/MainViewManager"}),"\n",(0,a.jsx)(n.p,{children:"MainViewManager manages the arrangement of all open panes as well as provides the controller\nlogic behind all views in the MainView (e.g. ensuring that a file doesn't appear in 2 lists)"}),"\n",(0,a.jsx)(n.p,{children:"Each pane contains one or more views wich are created by a view factory and inserted into a pane list.\nThere may be several panes managed by the MainViewManager with each pane containing a list of views.\nThe panes are always visible and the layout is determined by the MainViewManager and the user."}),"\n",(0,a.jsx)(n.p,{children:"Currently we support only 2 panes."}),"\n",(0,a.jsx)(n.p,{children:"All of the WorkingSet APIs take a paneId Argument. This can be an actual pane Id, ALL_PANES (in most cases)\nor ACTIVE_PANE. ALL_PANES may not be supported for some APIs. See the API for details."}),"\n",(0,a.jsx)(n.p,{children:"This module dispatches several events:"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:["activePaneChange - When the active pane changes. There will always be an active pane.\n(e, newPaneId",":string",", oldPaneId",":string",")"]}),"\n",(0,a.jsxs)(n.li,{children:["currentFileChange -- When the user has switched to another pane, file, document. When the user closes a view\nand there are no other views to show the current file will be null.\n(e, newFile",":File",", newPaneId",":string",", oldFile",":File",", oldPaneId",":string",")"]}),"\n",(0,a.jsxs)(n.li,{children:["paneLayoutChange -- When Orientation changes.\n(e, orientation",":string",")"]}),"\n",(0,a.jsxs)(n.li,{children:["paneCreate -- When a pane is created\n(e, paneId",":string",")"]}),"\n",(0,a.jsxs)(n.li,{children:["paneDestroy -- When a pane is destroyed\n(e, paneId",":string",")"]}),"\n"]}),"\n",(0,a.jsxs)(n.p,{children:["To listen for working set changes, you must listen to ",(0,a.jsx)(n.em,{children:"all"})," of these events:"]}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:["workingSetAdd -- When a file is added to the working set\n(e, fileAdded",":File",", index",":number",", paneId",":string",")"]}),"\n",(0,a.jsxs)(n.li,{children:["workingSetAddList -- When multiple files are added to the working set\n(e, fileAdded",":Array",'."File", paneId',":string",")"]}),"\n",(0,a.jsxs)(n.li,{children:["workingSetMove - When a File has moved to a different working set\n(e, File",":FILE",", sourcePaneId",":string",", destinationPaneId",":string",")"]}),"\n",(0,a.jsxs)(n.li,{children:["workingSetRemove -- When a file is removed from the working set\n(e, fileRemoved",":File",", suppressRedraw",":boolean",", paneId",":string",")"]}),"\n",(0,a.jsxs)(n.li,{children:["workingSetRemoveList -- When multiple files are removed from the working set\n(e, filesRemoved",":Array",'."File", paneId',":string",")"]}),"\n",(0,a.jsxs)(n.li,{children:["workingSetSort -- When a pane's view array is reordered without additions or removals.\n(e, paneId",":string",")"]}),"\n",(0,a.jsxs)(n.li,{children:["workingSetUpdate -- When changes happen due to system events such as a file being deleted.\nlisteners should discard all working set info and rebuilt it from the pane\nby calling getWorkingSet()\n(e, paneId",":string",")"]}),"\n",(0,a.jsxs)(n.li,{children:["_workingSetDisableAutoSort -- When the working set is reordered by manually dragging a file.\n(e, paneId",":string",") For Internal Use Only."]}),"\n"]}),"\n",(0,a.jsxs)(n.p,{children:["To listen for events, do something like this: (see EventDispatcher for details on this pattern)\n",(0,a.jsx)(n.code,{children:'MainViewManager.on("eventname", handler);'})]}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"#module_view/MainViewManager",children:"view/MainViewManager"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"#module_view/MainViewManager..EVENT_CURRENT_FILE_CHANGE",children:".EVENT_CURRENT_FILE_CHANGE"})," : ",(0,a.jsx)("code",{children:"string"})]}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"#module_view/MainViewManager..ALL_PANES",children:".ALL_PANES"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"#module_view/MainViewManager..ACTIVE_PANE",children:".ACTIVE_PANE"})}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"#module_view/MainViewManager..isExclusiveToPane",children:".isExclusiveToPane(File)"})," \u21d2 ",(0,a.jsx)("code",{children:"Object"})]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"#module_view/MainViewManager..getActivePaneId",children:".getActivePaneId()"})," \u21d2 ",(0,a.jsx)("code",{children:"string"})]}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"#module_view/MainViewManager..focusActivePane",children:".focusActivePane()"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"#module_view/MainViewManager..setActivePaneId",children:".setActivePaneId(paneId)"})}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"#module_view/MainViewManager..getCurrentlyViewedFile",children:".getCurrentlyViewedFile(paneId)"})," \u21d2 ",(0,a.jsx)("code",{children:"File"})]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"#module_view/MainViewManager..getCurrentlyViewedEditor",children:".getCurrentlyViewedEditor(paneId)"})," \u21d2 ",(0,a.jsx)("code",{children:"Editor"})]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"#module_view/MainViewManager..getAllViewedEditors",children:".getAllViewedEditors()"})," \u21d2 ",(0,a.jsx)("code",{children:"Object"})]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"#module_view/MainViewManager..getCurrentlyViewedPath",children:".getCurrentlyViewedPath(paneId)"})," \u21d2 ",(0,a.jsx)("code",{children:"string"})]}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"#module_view/MainViewManager..cacheScrollState",children:".cacheScrollState(paneId)"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"#module_view/MainViewManager..restoreAdjustedScrollState",children:".restoreAdjustedScrollState(paneId, heightDelta)"})}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"#module_view/MainViewManager..getWorkingSet",children:".getWorkingSet(paneId)"})," \u21d2 ",(0,a.jsx)("code",{children:"Array."})]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"#module_view/MainViewManager..getAllOpenFiles",children:".getAllOpenFiles()"})," \u21d2 ",(0,a.jsx)("code",{children:"array."})]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"#module_view/MainViewManager..getPaneIdList",children:".getPaneIdList()"})," \u21d2 ",(0,a.jsx)("code",{children:"array."})]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"#module_view/MainViewManager..getWorkingSetSize",children:".getWorkingSetSize(paneId)"})," \u21d2 ",(0,a.jsx)("code",{children:"number"})]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"#module_view/MainViewManager..getPaneTitle",children:".getPaneTitle(paneId)"})," \u21d2 ",(0,a.jsx)("code",{children:"string"})]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"#module_view/MainViewManager..getPaneCount",children:".getPaneCount()"})," \u21d2 ",(0,a.jsx)("code",{children:"number"})]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"#module_view/MainViewManager..findInAllWorkingSets",children:".findInAllWorkingSets(fullPath)"})," \u21d2 ",(0,a.jsx)("code",{children:"Object"})]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"#module_view/MainViewManager..findInOpenPane",children:".findInOpenPane(fullPath)"})," \u21d2 ",(0,a.jsx)("code",{children:"Object"})]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"#module_view/MainViewManager..findInWorkingSet",children:".findInWorkingSet(paneId, fullPath)"})," \u21d2 ",(0,a.jsx)("code",{children:"number"})]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"#module_view/MainViewManager..findInWorkingSetByAddedOrder",children:".findInWorkingSetByAddedOrder(paneId, fullPath)"})," \u21d2 ",(0,a.jsx)("code",{children:"number"})]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"#module_view/MainViewManager..findInWorkingSetByMRUOrder",children:".findInWorkingSetByMRUOrder(paneId, fullPath)"})," \u21d2 ",(0,a.jsx)("code",{children:"number"})]}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"#module_view/MainViewManager..addToWorkingSet",children:".addToWorkingSet(paneId, file, [index], [forceRedraw])"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"#module_view/MainViewManager..addListToWorkingSet",children:".addListToWorkingSet(paneId, fileList)"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"#module_view/MainViewManager..switchPaneFocus",children:".switchPaneFocus()"})}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"#module_view/MainViewManager..traverseToNextViewByMRU",children:".traverseToNextViewByMRU(direction)"})," \u21d2 ",(0,a.jsx)("code",{children:"Object"})]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"#module_view/MainViewManager..traverseToNextViewInListOrder",children:".traverseToNextViewInListOrder(direction)"})," \u21d2 ",(0,a.jsx)("code",{children:"Object"})]}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"#module_view/MainViewManager..beginTraversal",children:".beginTraversal()"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"#module_view/MainViewManager..endTraversal",children:".endTraversal()"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"#module_view/MainViewManager..setLayoutScheme",children:".setLayoutScheme(rows, columns)"})}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"#module_view/MainViewManager..getLayoutScheme",children:".getLayoutScheme()"})," \u21d2 ",(0,a.jsx)("code",{children:"Object"})]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,a.jsx)("a",{name:"module_view/MainViewManager..EVENT_CURRENT_FILE_CHANGE"}),"\n",(0,a.jsxs)(n.h3,{id:"viewmainviewmanagerevent_current_file_change--string",children:["view/MainViewManager.EVENT_CURRENT_FILE_CHANGE : ",(0,a.jsx)("code",{children:"string"})]}),"\n",(0,a.jsx)(n.p,{children:"Event current file change"}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"Kind"}),": inner constant of ",(0,a.jsx)(n.a,{href:"#module_view/MainViewManager",children:(0,a.jsx)("code",{children:"view/MainViewManager"})})]}),"\n",(0,a.jsx)("a",{name:"module_view/MainViewManager..ALL_PANES"}),"\n",(0,a.jsx)(n.h3,{id:"viewmainviewmanagerall_panes",children:"view/MainViewManager.ALL_PANES"}),"\n",(0,a.jsx)(n.p,{children:"Special paneId shortcut that can be used to specify that\nall panes should be targeted by the API.\nNot all APIs support this constnant.\nCheck the API documentation before use."}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"Kind"}),": inner constant of ",(0,a.jsx)(n.a,{href:"#module_view/MainViewManager",children:(0,a.jsx)("code",{children:"view/MainViewManager"})})]}),"\n",(0,a.jsx)("a",{name:"module_view/MainViewManager..ACTIVE_PANE"}),"\n",(0,a.jsx)(n.h3,{id:"viewmainviewmanageractive_pane",children:"view/MainViewManager.ACTIVE_PANE"}),"\n",(0,a.jsx)(n.p,{children:"Special paneId shortcut that can be used to specify that\nthe API should target the focused pane only.\nAll APIs support this shortcut."}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"Kind"}),": inner constant of ",(0,a.jsx)(n.a,{href:"#module_view/MainViewManager",children:(0,a.jsx)("code",{children:"view/MainViewManager"})})]}),"\n",(0,a.jsx)("a",{name:"module_view/MainViewManager..isExclusiveToPane"}),"\n",(0,a.jsxs)(n.h3,{id:"viewmainviewmanagerisexclusivetopanefile--object",children:["view/MainViewManager.isExclusiveToPane(File) \u21d2 ",(0,a.jsx)("code",{children:"Object"})]}),"\n",(0,a.jsx)(n.p,{children:"Checks whether a file is listed exclusively in the provided pane"}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,a.jsx)(n.a,{href:"#module_view/MainViewManager",children:(0,a.jsx)("code",{children:"view/MainViewManager"})})]}),"\n",(0,a.jsxs)(n.table,{children:[(0,a.jsx)(n.thead,{children:(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.th,{children:"Param"}),(0,a.jsx)(n.th,{children:"Type"}),(0,a.jsx)(n.th,{children:"Description"})]})}),(0,a.jsx)(n.tbody,{children:(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.td,{children:"File"}),(0,a.jsx)(n.td,{children:(0,a.jsx)("code",{children:"File"})}),(0,a.jsx)(n.td,{children:"the file"})]})})]}),"\n",(0,a.jsx)("a",{name:"module_view/MainViewManager..getActivePaneId"}),"\n",(0,a.jsxs)(n.h3,{id:"viewmainviewmanagergetactivepaneid--string",children:["view/MainViewManager.getActivePaneId() \u21d2 ",(0,a.jsx)("code",{children:"string"})]}),"\n",(0,a.jsx)(n.p,{children:"Retrieves the currently active Pane Id"}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,a.jsx)(n.a,{href:"#module_view/MainViewManager",children:(0,a.jsx)("code",{children:"view/MainViewManager"})}),(0,a.jsx)(n.br,{}),"\n",(0,a.jsx)(n.strong,{children:"Returns"}),": ",(0,a.jsx)("code",{children:"string"})," - Active Pane's ID."]}),"\n",(0,a.jsx)("a",{name:"module_view/MainViewManager..focusActivePane"}),"\n",(0,a.jsx)(n.h3,{id:"viewmainviewmanagerfocusactivepane",children:"view/MainViewManager.focusActivePane()"}),"\n",(0,a.jsx)(n.p,{children:"Focuses the current pane. If the current pane has a current view, then the pane will focus the view."}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,a.jsx)(n.a,{href:"#module_view/MainViewManager",children:(0,a.jsx)("code",{children:"view/MainViewManager"})})]}),"\n",(0,a.jsx)("a",{name:"module_view/MainViewManager..setActivePaneId"}),"\n",(0,a.jsx)(n.h3,{id:"viewmainviewmanagersetactivepaneidpaneid",children:"view/MainViewManager.setActivePaneId(paneId)"}),"\n",(0,a.jsx)(n.p,{children:"Switch active pane to the specified pane id (or ACTIVE_PANE/ALL_PANES, in which case this\ncall does nothing)."}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,a.jsx)(n.a,{href:"#module_view/MainViewManager",children:(0,a.jsx)("code",{children:"view/MainViewManager"})})]}),"\n",(0,a.jsxs)(n.table,{children:[(0,a.jsx)(n.thead,{children:(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.th,{children:"Param"}),(0,a.jsx)(n.th,{children:"Type"}),(0,a.jsx)(n.th,{children:"Description"})]})}),(0,a.jsx)(n.tbody,{children:(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.td,{children:"paneId"}),(0,a.jsx)(n.td,{children:(0,a.jsx)("code",{children:"string"})}),(0,a.jsx)(n.td,{children:"the id of the pane to activate"})]})})]}),"\n",(0,a.jsx)("a",{name:"module_view/MainViewManager..getCurrentlyViewedFile"}),"\n",(0,a.jsxs)(n.h3,{id:"viewmainviewmanagergetcurrentlyviewedfilepaneid--file",children:["view/MainViewManager.getCurrentlyViewedFile(paneId) \u21d2 ",(0,a.jsx)("code",{children:"File"})]}),"\n",(0,a.jsx)(n.p,{children:"Retrieves the currently viewed file of the specified paneId"}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,a.jsx)(n.a,{href:"#module_view/MainViewManager",children:(0,a.jsx)("code",{children:"view/MainViewManager"})}),(0,a.jsx)(n.br,{}),"\n",(0,a.jsx)(n.strong,{children:"Returns"}),": ",(0,a.jsx)("code",{children:"File"})," - File object of the currently viewed file, or null if there isn't one or there's no such pane"]}),"\n",(0,a.jsxs)(n.table,{children:[(0,a.jsx)(n.thead,{children:(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.th,{children:"Param"}),(0,a.jsx)(n.th,{children:"Type"}),(0,a.jsx)(n.th,{children:"Description"})]})}),(0,a.jsx)(n.tbody,{children:(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.td,{children:"paneId"}),(0,a.jsx)(n.td,{children:(0,a.jsx)("code",{children:"string"})}),(0,a.jsx)(n.td,{children:"the id of the pane in which to retrieve the currently viewed file"})]})})]}),"\n",(0,a.jsx)("a",{name:"module_view/MainViewManager..getCurrentlyViewedEditor"}),"\n",(0,a.jsxs)(n.h3,{id:"viewmainviewmanagergetcurrentlyviewededitorpaneid--editor",children:["view/MainViewManager.getCurrentlyViewedEditor(paneId) \u21d2 ",(0,a.jsx)("code",{children:"Editor"})]}),"\n",(0,a.jsx)(n.p,{children:"Retrieves the currently viewed editor of the specified paneId"}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,a.jsx)(n.a,{href:"#module_view/MainViewManager",children:(0,a.jsx)("code",{children:"view/MainViewManager"})}),(0,a.jsx)(n.br,{}),"\n",(0,a.jsx)(n.strong,{children:"Returns"}),": ",(0,a.jsx)("code",{children:"Editor"})," - currently editor, or null if there isn't one or there's no such pane"]}),"\n",(0,a.jsxs)(n.table,{children:[(0,a.jsx)(n.thead,{children:(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.th,{children:"Param"}),(0,a.jsx)(n.th,{children:"Type"}),(0,a.jsx)(n.th,{children:"Description"})]})}),(0,a.jsx)(n.tbody,{children:(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.td,{children:"paneId"}),(0,a.jsx)(n.td,{children:(0,a.jsx)("code",{children:"string"})}),(0,a.jsx)(n.td,{children:"the id of the pane in which to retrieve the currently viewed editor"})]})})]}),"\n",(0,a.jsx)("a",{name:"module_view/MainViewManager..getAllViewedEditors"}),"\n",(0,a.jsxs)(n.h3,{id:"viewmainviewmanagergetallviewededitors--object",children:["view/MainViewManager.getAllViewedEditors() \u21d2 ",(0,a.jsx)("code",{children:"Object"})]}),"\n",(0,a.jsx)(n.p,{children:"Gets an array of editors open in panes with their pane IDs.\nCan return an empty array if no editors are open."}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,a.jsx)(n.a,{href:"#module_view/MainViewManager",children:(0,a.jsx)("code",{children:"view/MainViewManager"})}),(0,a.jsx)(n.br,{}),"\n",(0,a.jsx)(n.strong,{children:"Returns"}),": ",(0,a.jsx)("code",{children:"Object"})," - An array of objects, each containing an editor and its corresponding pane ID."]}),"\n",(0,a.jsx)("a",{name:"module_view/MainViewManager..getCurrentlyViewedPath"}),"\n",(0,a.jsxs)(n.h3,{id:"viewmainviewmanagergetcurrentlyviewedpathpaneid--string",children:["view/MainViewManager.getCurrentlyViewedPath(paneId) \u21d2 ",(0,a.jsx)("code",{children:"string"})]}),"\n",(0,a.jsx)(n.p,{children:"Retrieves the currently viewed path of the pane specified by paneId"}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,a.jsx)(n.a,{href:"#module_view/MainViewManager",children:(0,a.jsx)("code",{children:"view/MainViewManager"})}),(0,a.jsx)(n.br,{}),"\n",(0,a.jsx)(n.strong,{children:"Returns"}),": ",(0,a.jsx)("code",{children:"string"})," - the path of the currently viewed file or null if there isn't one"]}),"\n",(0,a.jsxs)(n.table,{children:[(0,a.jsx)(n.thead,{children:(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.th,{children:"Param"}),(0,a.jsx)(n.th,{children:"Type"}),(0,a.jsx)(n.th,{children:"Description"})]})}),(0,a.jsx)(n.tbody,{children:(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.td,{children:"paneId"}),(0,a.jsx)(n.td,{children:(0,a.jsx)("code",{children:"string"})}),(0,a.jsx)(n.td,{children:"the id of the pane in which to retrieve the currently viewed path"})]})})]}),"\n",(0,a.jsx)("a",{name:"module_view/MainViewManager..cacheScrollState"}),"\n",(0,a.jsx)(n.h3,{id:"viewmainviewmanagercachescrollstatepaneid",children:"view/MainViewManager.cacheScrollState(paneId)"}),"\n",(0,a.jsx)(n.p,{children:"Caches the specified pane's current scroll state\nIf there was already cached state for the specified pane, it is discarded and overwritten"}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,a.jsx)(n.a,{href:"#module_view/MainViewManager",children:(0,a.jsx)("code",{children:"view/MainViewManager"})})]}),"\n",(0,a.jsxs)(n.table,{children:[(0,a.jsx)(n.thead,{children:(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.th,{children:"Param"}),(0,a.jsx)(n.th,{children:"Type"}),(0,a.jsx)(n.th,{children:"Description"})]})}),(0,a.jsx)(n.tbody,{children:(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.td,{children:"paneId"}),(0,a.jsx)(n.td,{children:(0,a.jsx)("code",{children:"string"})}),(0,a.jsx)(n.td,{children:"id of the pane in which to cache the scroll state, ALL_PANES or ACTIVE_PANE"})]})})]}),"\n",(0,a.jsx)("a",{name:"module_view/MainViewManager..restoreAdjustedScrollState"}),"\n",(0,a.jsx)(n.h3,{id:"viewmainviewmanagerrestoreadjustedscrollstatepaneid-heightdelta",children:"view/MainViewManager.restoreAdjustedScrollState(paneId, heightDelta)"}),"\n",(0,a.jsx)(n.p,{children:"Restores the scroll state from cache and applies the heightDelta\nThe view implementation is responsible for applying or ignoring the heightDelta.\nThis is used primarily when a modal bar opens to keep the editor from scrolling the current\npage out of view in order to maintain the appearance.\nThe state is removed from the cache after calling this function."}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,a.jsx)(n.a,{href:"#module_view/MainViewManager",children:(0,a.jsx)("code",{children:"view/MainViewManager"})})]}),"\n",(0,a.jsxs)(n.table,{children:[(0,a.jsx)(n.thead,{children:(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.th,{children:"Param"}),(0,a.jsx)(n.th,{children:"Type"}),(0,a.jsx)(n.th,{children:"Description"})]})}),(0,a.jsxs)(n.tbody,{children:[(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.td,{children:"paneId"}),(0,a.jsx)(n.td,{children:(0,a.jsx)("code",{children:"string"})}),(0,a.jsx)(n.td,{children:"id of the pane in which to adjust the scroll state, ALL_PANES or ACTIVE_PANE"})]}),(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.td,{children:"heightDelta"}),(0,a.jsx)(n.td,{children:(0,a.jsx)("code",{children:"number"})}),(0,a.jsx)(n.td,{children:"delta H to apply to the scroll state"})]})]})]}),"\n",(0,a.jsx)("a",{name:"module_view/MainViewManager..getWorkingSet"}),"\n",(0,a.jsxs)(n.h3,{id:"viewmainviewmanagergetworkingsetpaneid--arrayfile",children:["view/MainViewManager.getWorkingSet(paneId) \u21d2 ",(0,a.jsx)("code",{children:"Array."})]}),"\n",(0,a.jsx)(n.p,{children:"Retrieves the WorkingSet for the given paneId not including temporary views"}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,a.jsx)(n.a,{href:"#module_view/MainViewManager",children:(0,a.jsx)("code",{children:"view/MainViewManager"})})]}),"\n",(0,a.jsxs)(n.table,{children:[(0,a.jsx)(n.thead,{children:(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.th,{children:"Param"}),(0,a.jsx)(n.th,{children:"Type"}),(0,a.jsx)(n.th,{children:"Description"})]})}),(0,a.jsx)(n.tbody,{children:(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.td,{children:"paneId"}),(0,a.jsx)(n.td,{children:(0,a.jsx)("code",{children:"string"})}),(0,a.jsx)(n.td,{children:"id of the pane in which to get the view list, ALL_PANES or ACTIVE_PANE"})]})})]}),"\n",(0,a.jsx)("a",{name:"module_view/MainViewManager..getAllOpenFiles"}),"\n",(0,a.jsxs)(n.h3,{id:"viewmainviewmanagergetallopenfiles--arrayfile",children:["view/MainViewManager.getAllOpenFiles() \u21d2 ",(0,a.jsx)("code",{children:"array."})]}),"\n",(0,a.jsx)(n.p,{children:"Retrieves the list of all open files including temporary views"}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,a.jsx)(n.a,{href:"#module_view/MainViewManager",children:(0,a.jsx)("code",{children:"view/MainViewManager"})}),(0,a.jsx)(n.br,{}),"\n",(0,a.jsx)(n.strong,{children:"Returns"}),": ",(0,a.jsx)("code",{children:"array."})," - the list of all open files in all open panes"]}),"\n",(0,a.jsx)("a",{name:"module_view/MainViewManager..getPaneIdList"}),"\n",(0,a.jsxs)(n.h3,{id:"viewmainviewmanagergetpaneidlist--arraystring",children:["view/MainViewManager.getPaneIdList() \u21d2 ",(0,a.jsx)("code",{children:"array."})]}),"\n",(0,a.jsx)(n.p,{children:"Retrieves the list of all open pane ids"}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,a.jsx)(n.a,{href:"#module_view/MainViewManager",children:(0,a.jsx)("code",{children:"view/MainViewManager"})}),(0,a.jsx)(n.br,{}),"\n",(0,a.jsx)(n.strong,{children:"Returns"}),": ",(0,a.jsx)("code",{children:"array."})," - the list of all open panes"]}),"\n",(0,a.jsx)("a",{name:"module_view/MainViewManager..getWorkingSetSize"}),"\n",(0,a.jsxs)(n.h3,{id:"viewmainviewmanagergetworkingsetsizepaneid--number",children:["view/MainViewManager.getWorkingSetSize(paneId) \u21d2 ",(0,a.jsx)("code",{children:"number"})]}),"\n",(0,a.jsx)(n.p,{children:"Retrieves the size of the selected pane's view list"}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,a.jsx)(n.a,{href:"#module_view/MainViewManager",children:(0,a.jsx)("code",{children:"view/MainViewManager"})}),(0,a.jsx)(n.br,{}),"\n",(0,a.jsx)(n.strong,{children:"Returns"}),": ",(0,a.jsx)("code",{children:"number"})," - the number of items in the specified pane"]}),"\n",(0,a.jsxs)(n.table,{children:[(0,a.jsx)(n.thead,{children:(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.th,{children:"Param"}),(0,a.jsx)(n.th,{children:"Type"}),(0,a.jsx)(n.th,{children:"Description"})]})}),(0,a.jsx)(n.tbody,{children:(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.td,{children:"paneId"}),(0,a.jsx)(n.td,{children:(0,a.jsx)("code",{children:"string"})}),(0,a.jsxs)(n.td,{children:["id of the pane in which to get the workingset size. Can use ",(0,a.jsx)(n.code,{children:"ALL_PANES"})," or ",(0,a.jsx)(n.code,{children:"ACTIVE_PANE"})]})]})})]}),"\n",(0,a.jsx)("a",{name:"module_view/MainViewManager..getPaneTitle"}),"\n",(0,a.jsxs)(n.h3,{id:"viewmainviewmanagergetpanetitlepaneid--string",children:["view/MainViewManager.getPaneTitle(paneId) \u21d2 ",(0,a.jsx)("code",{children:"string"})]}),"\n",(0,a.jsx)(n.p,{children:"Retrieves the title to display in the workingset view"}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,a.jsx)(n.a,{href:"#module_view/MainViewManager",children:(0,a.jsx)("code",{children:"view/MainViewManager"})}),(0,a.jsx)(n.br,{}),"\n",(0,a.jsx)(n.strong,{children:"Returns"}),": ",(0,a.jsx)("code",{children:"string"})," - title"]}),"\n",(0,a.jsxs)(n.table,{children:[(0,a.jsx)(n.thead,{children:(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.th,{children:"Param"}),(0,a.jsx)(n.th,{children:"Type"}),(0,a.jsx)(n.th,{children:"Description"})]})}),(0,a.jsx)(n.tbody,{children:(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.td,{children:"paneId"}),(0,a.jsx)(n.td,{children:(0,a.jsx)("code",{children:"string"})}),(0,a.jsx)(n.td,{children:"id of the pane in which to get the title"})]})})]}),"\n",(0,a.jsx)("a",{name:"module_view/MainViewManager..getPaneCount"}),"\n",(0,a.jsxs)(n.h3,{id:"viewmainviewmanagergetpanecount--number",children:["view/MainViewManager.getPaneCount() \u21d2 ",(0,a.jsx)("code",{children:"number"})]}),"\n",(0,a.jsx)(n.p,{children:"Retrieves the number of panes"}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,a.jsx)(n.a,{href:"#module_view/MainViewManager",children:(0,a.jsx)("code",{children:"view/MainViewManager"})})]}),"\n",(0,a.jsx)("a",{name:"module_view/MainViewManager..findInAllWorkingSets"}),"\n",(0,a.jsxs)(n.h3,{id:"viewmainviewmanagerfindinallworkingsetsfullpath--object",children:["view/MainViewManager.findInAllWorkingSets(fullPath) \u21d2 ",(0,a.jsx)("code",{children:"Object"})]}),"\n",(0,a.jsx)(n.p,{children:"Finds all instances of the specified file in all working sets.\nIf there is a temporary view of the file, it is not part of the result set"}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,a.jsx)(n.a,{href:"#module_view/MainViewManager",children:(0,a.jsx)("code",{children:"view/MainViewManager"})}),(0,a.jsx)(n.br,{}),"\n",(0,a.jsx)(n.strong,{children:"Returns"}),": ",(0,a.jsx)("code",{children:"Object"})," - an array of paneId/index records"]}),"\n",(0,a.jsxs)(n.table,{children:[(0,a.jsx)(n.thead,{children:(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.th,{children:"Param"}),(0,a.jsx)(n.th,{children:"Type"}),(0,a.jsx)(n.th,{children:"Description"})]})}),(0,a.jsx)(n.tbody,{children:(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.td,{children:"fullPath"}),(0,a.jsx)(n.td,{children:(0,a.jsx)("code",{children:"string"})}),(0,a.jsx)(n.td,{children:"path of the file to find views of"})]})})]}),"\n",(0,a.jsx)("a",{name:"module_view/MainViewManager..findInOpenPane"}),"\n",(0,a.jsxs)(n.h3,{id:"viewmainviewmanagerfindinopenpanefullpath--object",children:["view/MainViewManager.findInOpenPane(fullPath) \u21d2 ",(0,a.jsx)("code",{children:"Object"})]}),"\n",(0,a.jsx)(n.p,{children:"Returns the pane IDs and editors (if present) of the given file in any open and viewable pane.\nIf the same file is open in multiple panes, all matching panes will be returned.\nIf not found in any panes, an empty array will be returned."}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,a.jsx)(n.a,{href:"#module_view/MainViewManager",children:(0,a.jsx)("code",{children:"view/MainViewManager"})}),(0,a.jsx)(n.br,{}),"\n",(0,a.jsx)(n.strong,{children:"Returns"}),": ",(0,a.jsx)("code",{children:"Object"})," - An array of objects, each containing the pane ID and the corresponding editor, if present."]}),"\n",(0,a.jsxs)(n.table,{children:[(0,a.jsx)(n.thead,{children:(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.th,{children:"Param"}),(0,a.jsx)(n.th,{children:"Type"}),(0,a.jsx)(n.th,{children:"Description"})]})}),(0,a.jsx)(n.tbody,{children:(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.td,{children:"fullPath"}),(0,a.jsx)(n.td,{children:(0,a.jsx)("code",{children:"string"})}),(0,a.jsx)(n.td,{children:"The full path of the file to search for."})]})})]}),"\n",(0,a.jsx)("a",{name:"module_view/MainViewManager..findInWorkingSet"}),"\n",(0,a.jsxs)(n.h3,{id:"viewmainviewmanagerfindinworkingsetpaneid-fullpath--number",children:["view/MainViewManager.findInWorkingSet(paneId, fullPath) \u21d2 ",(0,a.jsx)("code",{children:"number"})]}),"\n",(0,a.jsx)(n.p,{children:"Gets the index of the file matching fullPath in the workingset"}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,a.jsx)(n.a,{href:"#module_view/MainViewManager",children:(0,a.jsx)("code",{children:"view/MainViewManager"})}),(0,a.jsx)(n.br,{}),"\n",(0,a.jsx)(n.strong,{children:"Returns"}),": ",(0,a.jsx)("code",{children:"number"})," - index, -1 if not found."]}),"\n",(0,a.jsxs)(n.table,{children:[(0,a.jsx)(n.thead,{children:(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.th,{children:"Param"}),(0,a.jsx)(n.th,{children:"Type"}),(0,a.jsx)(n.th,{children:"Description"})]})}),(0,a.jsxs)(n.tbody,{children:[(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.td,{children:"paneId"}),(0,a.jsx)(n.td,{children:(0,a.jsx)("code",{children:"string"})}),(0,a.jsx)(n.td,{children:"id of the pane in which to search or ALL_PANES or ACTIVE_PANE"})]}),(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.td,{children:"fullPath"}),(0,a.jsx)(n.td,{children:(0,a.jsx)("code",{children:"string"})}),(0,a.jsx)(n.td,{children:"full path of the file to search for"})]})]})]}),"\n",(0,a.jsx)("a",{name:"module_view/MainViewManager..findInWorkingSetByAddedOrder"}),"\n",(0,a.jsxs)(n.h3,{id:"viewmainviewmanagerfindinworkingsetbyaddedorderpaneid-fullpath--number",children:["view/MainViewManager.findInWorkingSetByAddedOrder(paneId, fullPath) \u21d2 ",(0,a.jsx)("code",{children:"number"})]}),"\n",(0,a.jsx)(n.p,{children:"Gets the index of the file matching fullPath in the added order workingset"}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,a.jsx)(n.a,{href:"#module_view/MainViewManager",children:(0,a.jsx)("code",{children:"view/MainViewManager"})}),(0,a.jsx)(n.br,{}),"\n",(0,a.jsx)(n.strong,{children:"Returns"}),": ",(0,a.jsx)("code",{children:"number"})," - index, -1 if not found."]}),"\n",(0,a.jsxs)(n.table,{children:[(0,a.jsx)(n.thead,{children:(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.th,{children:"Param"}),(0,a.jsx)(n.th,{children:"Type"}),(0,a.jsx)(n.th,{children:"Description"})]})}),(0,a.jsxs)(n.tbody,{children:[(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.td,{children:"paneId"}),(0,a.jsx)(n.td,{children:(0,a.jsx)("code",{children:"string"})}),(0,a.jsx)(n.td,{children:"id of the pane in which to search or ALL_PANES or ACTIVE_PANE"})]}),(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.td,{children:"fullPath"}),(0,a.jsx)(n.td,{children:(0,a.jsx)("code",{children:"string"})}),(0,a.jsx)(n.td,{children:"full path of the file to search for"})]})]})]}),"\n",(0,a.jsx)("a",{name:"module_view/MainViewManager..findInWorkingSetByMRUOrder"}),"\n",(0,a.jsxs)(n.h3,{id:"viewmainviewmanagerfindinworkingsetbymruorderpaneid-fullpath--number",children:["view/MainViewManager.findInWorkingSetByMRUOrder(paneId, fullPath) \u21d2 ",(0,a.jsx)("code",{children:"number"})]}),"\n",(0,a.jsx)(n.p,{children:"Gets the index of the file matching fullPath in the MRU order workingset"}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,a.jsx)(n.a,{href:"#module_view/MainViewManager",children:(0,a.jsx)("code",{children:"view/MainViewManager"})}),(0,a.jsx)(n.br,{}),"\n",(0,a.jsx)(n.strong,{children:"Returns"}),": ",(0,a.jsx)("code",{children:"number"})," - index, -1 if not found."]}),"\n",(0,a.jsxs)(n.table,{children:[(0,a.jsx)(n.thead,{children:(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.th,{children:"Param"}),(0,a.jsx)(n.th,{children:"Type"}),(0,a.jsx)(n.th,{children:"Description"})]})}),(0,a.jsxs)(n.tbody,{children:[(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.td,{children:"paneId"}),(0,a.jsx)(n.td,{children:(0,a.jsx)("code",{children:"string"})}),(0,a.jsx)(n.td,{children:"id of the pane in which to search or ALL_PANES or ACTIVE_PANE"})]}),(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.td,{children:"fullPath"}),(0,a.jsx)(n.td,{children:(0,a.jsx)("code",{children:"string"})}),(0,a.jsx)(n.td,{children:"full path of the file to search for"})]})]})]}),"\n",(0,a.jsx)("a",{name:"module_view/MainViewManager..addToWorkingSet"}),"\n",(0,a.jsx)(n.h3,{id:"viewmainviewmanageraddtoworkingsetpaneid-file-index-forceredraw",children:"view/MainViewManager.addToWorkingSet(paneId, file, [index], [forceRedraw])"}),"\n",(0,a.jsx)(n.p,{children:"Adds the given file to the end of the workingset, if it is not already there.\nThis API does not create a view of the file, it just adds it to the working set\nViews of files in the working set are persisted and are not destroyed until the user\ncloses the file using FILE_CLOSE; Views are created using FILE_OPEN and, when opened, are\nmade the current view. If a File is already opened then the file is just made current\nand its view is shown."}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,a.jsx)(n.a,{href:"#module_view/MainViewManager",children:(0,a.jsx)("code",{children:"view/MainViewManager"})})]}),"\n",(0,a.jsxs)(n.table,{children:[(0,a.jsx)(n.thead,{children:(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.th,{children:"Param"}),(0,a.jsx)(n.th,{children:"Type"}),(0,a.jsx)(n.th,{children:"Description"})]})}),(0,a.jsxs)(n.tbody,{children:[(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.td,{children:"paneId"}),(0,a.jsx)(n.td,{children:(0,a.jsx)("code",{children:"string"})}),(0,a.jsx)(n.td,{children:"The id of the pane in which to add the file object to or ACTIVE_PANE"})]}),(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.td,{children:"file"}),(0,a.jsx)(n.td,{children:(0,a.jsx)("code",{children:"File"})}),(0,a.jsx)(n.td,{children:"The File object to add to the workingset"})]}),(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.td,{children:"[index]"}),(0,a.jsx)(n.td,{children:(0,a.jsx)("code",{children:"number"})}),(0,a.jsx)(n.td,{children:"Position to add to list (defaults to last); -1 is ignored"})]}),(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.td,{children:"[forceRedraw]"}),(0,a.jsx)(n.td,{children:(0,a.jsx)("code",{children:"boolean"})}),(0,a.jsx)(n.td,{children:"If true, a workingset change notification is always sent (useful if suppressRedraw was used with removeView() earlier)"})]})]})]}),"\n",(0,a.jsx)("a",{name:"module_view/MainViewManager..addListToWorkingSet"}),"\n",(0,a.jsx)(n.h3,{id:"viewmainviewmanageraddlisttoworkingsetpaneid-filelist",children:"view/MainViewManager.addListToWorkingSet(paneId, fileList)"}),"\n",(0,a.jsx)(n.p,{children:"Adds the given file list to the end of the workingset."}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,a.jsx)(n.a,{href:"#module_view/MainViewManager",children:(0,a.jsx)("code",{children:"view/MainViewManager"})})]}),"\n",(0,a.jsxs)(n.table,{children:[(0,a.jsx)(n.thead,{children:(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.th,{children:"Param"}),(0,a.jsx)(n.th,{children:"Type"}),(0,a.jsx)(n.th,{children:"Description"})]})}),(0,a.jsxs)(n.tbody,{children:[(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.td,{children:"paneId"}),(0,a.jsx)(n.td,{children:(0,a.jsx)("code",{children:"string"})}),(0,a.jsx)(n.td,{children:"The id of the pane in which to add the file object to or ACTIVE_PANE"})]}),(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.td,{children:"fileList"}),(0,a.jsx)(n.td,{children:(0,a.jsx)("code",{children:"Array."})}),(0,a.jsx)(n.td,{children:"Array of files to add to the pane"})]})]})]}),"\n",(0,a.jsx)("a",{name:"module_view/MainViewManager..switchPaneFocus"}),"\n",(0,a.jsx)(n.h3,{id:"viewmainviewmanagerswitchpanefocus",children:"view/MainViewManager.switchPaneFocus()"}),"\n",(0,a.jsx)(n.p,{children:"Switch between panes"}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,a.jsx)(n.a,{href:"#module_view/MainViewManager",children:(0,a.jsx)("code",{children:"view/MainViewManager"})})]}),"\n",(0,a.jsx)("a",{name:"module_view/MainViewManager..traverseToNextViewByMRU"}),"\n",(0,a.jsxs)(n.h3,{id:"viewmainviewmanagertraversetonextviewbymrudirection--object",children:["view/MainViewManager.traverseToNextViewByMRU(direction) \u21d2 ",(0,a.jsx)("code",{children:"Object"})]}),"\n",(0,a.jsx)(n.p,{children:"Get the next or previous file in the MRU list."}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,a.jsx)(n.a,{href:"#module_view/MainViewManager",children:(0,a.jsx)("code",{children:"view/MainViewManager"})}),(0,a.jsx)(n.br,{}),"\n",(0,a.jsx)(n.strong,{children:"Returns"}),": ",(0,a.jsx)("code",{children:"Object"})," - The File object of the next item in the traversal order or null if there aren't any files to traverse.\nMay return current file if there are no other files to traverse."]}),"\n",(0,a.jsxs)(n.table,{children:[(0,a.jsx)(n.thead,{children:(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.th,{children:"Param"}),(0,a.jsx)(n.th,{children:"Type"}),(0,a.jsx)(n.th,{children:"Description"})]})}),(0,a.jsx)(n.tbody,{children:(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.td,{children:"direction"}),(0,a.jsx)(n.td,{children:(0,a.jsx)("code",{children:"number"})}),(0,a.jsx)(n.td,{children:"Must be 1 or -1 to traverse forward or backward"})]})})]}),"\n",(0,a.jsx)("a",{name:"module_view/MainViewManager..traverseToNextViewInListOrder"}),"\n",(0,a.jsxs)(n.h3,{id:"viewmainviewmanagertraversetonextviewinlistorderdirection--object",children:["view/MainViewManager.traverseToNextViewInListOrder(direction) \u21d2 ",(0,a.jsx)("code",{children:"Object"})]}),"\n",(0,a.jsx)(n.p,{children:"Get the next or previous file in list order."}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,a.jsx)(n.a,{href:"#module_view/MainViewManager",children:(0,a.jsx)("code",{children:"view/MainViewManager"})}),(0,a.jsx)(n.br,{}),"\n",(0,a.jsx)(n.strong,{children:"Returns"}),": ",(0,a.jsx)("code",{children:"Object"})," - The File object of the next item in the traversal order or null if there aren't any files to traverse.\nMay return current file if there are no other files to traverse."]}),"\n",(0,a.jsxs)(n.table,{children:[(0,a.jsx)(n.thead,{children:(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.th,{children:"Param"}),(0,a.jsx)(n.th,{children:"Type"}),(0,a.jsx)(n.th,{children:"Description"})]})}),(0,a.jsx)(n.tbody,{children:(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.td,{children:"direction"}),(0,a.jsx)(n.td,{children:(0,a.jsx)("code",{children:"number"})}),(0,a.jsx)(n.td,{children:"Must be 1 or -1 to traverse forward or backward"})]})})]}),"\n",(0,a.jsx)("a",{name:"module_view/MainViewManager..beginTraversal"}),"\n",(0,a.jsx)(n.h3,{id:"viewmainviewmanagerbegintraversal",children:"view/MainViewManager.beginTraversal()"}),"\n",(0,a.jsx)(n.p,{children:"Indicates that traversal has begun.\nCan be called any number of times."}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,a.jsx)(n.a,{href:"#module_view/MainViewManager",children:(0,a.jsx)("code",{children:"view/MainViewManager"})})]}),"\n",(0,a.jsx)("a",{name:"module_view/MainViewManager..endTraversal"}),"\n",(0,a.jsx)(n.h3,{id:"viewmainviewmanagerendtraversal",children:"view/MainViewManager.endTraversal()"}),"\n",(0,a.jsx)(n.p,{children:"Un-freezes the MRU list after one or more beginTraversal() calls.\nWhatever file is current is bumped to the front of the MRU list."}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,a.jsx)(n.a,{href:"#module_view/MainViewManager",children:(0,a.jsx)("code",{children:"view/MainViewManager"})})]}),"\n",(0,a.jsx)("a",{name:"module_view/MainViewManager..setLayoutScheme"}),"\n",(0,a.jsx)(n.h3,{id:"viewmainviewmanagersetlayoutschemerows-columns",children:"view/MainViewManager.setLayoutScheme(rows, columns)"}),"\n",(0,a.jsx)(n.p,{children:"Changes the layout scheme"}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,a.jsx)(n.a,{href:"#module_view/MainViewManager",children:(0,a.jsx)("code",{children:"view/MainViewManager"})}),(0,a.jsx)(n.br,{}),"\n",(0,a.jsx)(n.strong,{children:"Summay"}),": Rows or Columns may be 1 or 2 but both cannot be 2. 1x2, 2x1 or 1x1 are the legal values"]}),"\n",(0,a.jsxs)(n.table,{children:[(0,a.jsx)(n.thead,{children:(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.th,{children:"Param"}),(0,a.jsx)(n.th,{children:"Type"}),(0,a.jsx)(n.th,{children:"Description"})]})}),(0,a.jsxs)(n.tbody,{children:[(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.td,{children:"rows"}),(0,a.jsx)(n.td,{children:(0,a.jsx)("code",{children:"number"})}),(0,a.jsx)(n.td,{children:"(may be 1 or 2)"})]}),(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.td,{children:"columns"}),(0,a.jsx)(n.td,{children:(0,a.jsx)("code",{children:"number"})}),(0,a.jsx)(n.td,{children:"(may be 1 or 2)"})]})]})]}),"\n",(0,a.jsx)("a",{name:"module_view/MainViewManager..getLayoutScheme"}),"\n",(0,a.jsxs)(n.h3,{id:"viewmainviewmanagergetlayoutscheme--object",children:["view/MainViewManager.getLayoutScheme() \u21d2 ",(0,a.jsx)("code",{children:"Object"})]}),"\n",(0,a.jsx)(n.p,{children:"Retrieves the current layout scheme."}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,a.jsx)(n.a,{href:"#module_view/MainViewManager",children:(0,a.jsx)("code",{children:"view/MainViewManager"})}),(0,a.jsx)(n.br,{}),"\n",(0,a.jsx)(n.strong,{children:"Returns"}),": ",(0,a.jsx)("code",{children:"Object"})," - - An object containing the number of rows and columns in the layout."]})]})}function o(e={}){const{wrapper:n}={...(0,d.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(c,{...e})}):c(e)}},28453:(e,n,i)=>{i.d(n,{R:()=>s,x:()=>t});var r=i(96540);const a={},d=r.createContext(a);function s(e){const n=r.useContext(d);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:s(e.components),r.createElement(d.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/31ef2c40.c8248a2a.js b/assets/js/31ef2c40.c8248a2a.js new file mode 100644 index 00000000..e3973fb0 --- /dev/null +++ b/assets/js/31ef2c40.c8248a2a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3875],{66251:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>d,contentTitle:()=>t,default:()=>c,frontMatter:()=>l,metadata:()=>i,toc:()=>g});const i=JSON.parse('{"id":"API-Reference/language/LanguageManager","title":"LanguageManager","description":"Import :","source":"@site/api/API-Reference/language/LanguageManager.md","sourceDirName":"API-Reference/language","slug":"/API-Reference/language/LanguageManager","permalink":"/api/API-Reference/language/LanguageManager","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"JSUtils","permalink":"/api/API-Reference/language/JSUtils"},"next":{"title":"XMLUtils","permalink":"/api/API-Reference/language/XMLUtils"}}');var a=s(74848),r=s(28453);const l={},t=void 0,d={},g=[{value:"Import :",id:"import-",level:3},{value:"Language",id:"language",level:2},{value:"new Language()",id:"new-language",level:3},{value:"language.getId() \u21d2 string",id:"languagegetid--string",level:3},{value:"language.getName() \u21d2 string",id:"languagegetname--string",level:3},{value:"language.getMode() \u21d2 string",id:"languagegetmode--string",level:3},{value:"language.getFileExtensions() \u21d2 Array.<string>",id:"languagegetfileextensions--arraystring",level:3},{value:"language.getFileNames() \u21d2 Array.<string>",id:"languagegetfilenames--arraystring",level:3},{value:"language.addFileExtension(extension)",id:"languageaddfileextensionextension",level:3},{value:"language.removeFileExtension(extension)",id:"languageremovefileextensionextension",level:3},{value:"language.addFileName(extension)",id:"languageaddfilenameextension",level:3},{value:"language.removeFileName(extension)",id:"languageremovefilenameextension",level:3},{value:"language.hasLineCommentSyntax() \u21d2 boolean",id:"languagehaslinecommentsyntax--boolean",level:3},{value:"language.getLineCommentPrefixes() \u21d2 Array.<string>",id:"languagegetlinecommentprefixes--arraystring",level:3},{value:"language.setLineCommentSyntax(prefix) \u21d2 boolean",id:"languagesetlinecommentsyntaxprefix--boolean",level:3},{value:"language.hasBlockCommentSyntax() \u21d2 boolean",id:"languagehasblockcommentsyntax--boolean",level:3},{value:"language.getBlockCommentPrefix() \u21d2 string",id:"languagegetblockcommentprefix--string",level:3},{value:"language.getBlockCommentSuffix() \u21d2 string",id:"languagegetblockcommentsuffix--string",level:3},{value:"language.setBlockCommentSyntax(prefix, suffix) \u21d2 boolean",id:"languagesetblockcommentsyntaxprefix-suffix--boolean",level:3},{value:"language.getLanguageForMode(mode) \u21d2 Language",id:"languagegetlanguageformodemode--language",level:3},{value:"language.isFallbackLanguage() \u21d2 boolean",id:"languageisfallbacklanguage--boolean",level:3},{value:"language.isBinary() \u21d2 boolean",id:"languageisbinary--boolean",level:3},{value:"getLanguage(id) \u21d2 Language",id:"getlanguageid--language",level:2},{value:"getLanguageForExtension(extension) \u21d2 Language",id:"getlanguageforextensionextension--language",level:2},{value:"getLanguageForPath(path, [ignoreOverride]) \u21d2 Language",id:"getlanguageforpathpath-ignoreoverride--language",level:2},{value:"getLanguages() \u21d2 Object.<string, Language>",id:"getlanguages--objectstring-language",level:2},{value:"setLanguageOverrideForPath(fullPath, language)",id:"setlanguageoverrideforpathfullpath-language",level:2},{value:"getCompoundFileExtension(fullPath) \u21d2 string",id:"getcompoundfileextensionfullpath--string",level:2},{value:"defineLanguage(id, definition) \u21d2 $.Promise",id:"definelanguageid-definition--promise",level:2}];function o(e){const n={a:"a",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,r.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.h3,{id:"import-",children:"Import :"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-js",children:'const LanguageManager = brackets.getModule("language/LanguageManager")\n'})}),"\n",(0,a.jsx)("a",{name:"Language"}),"\n",(0,a.jsx)(n.h2,{id:"language",children:"Language"}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"Kind"}),": global class"]}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"#Language",children:"Language"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"#new_Language_new",children:"new Language()"})}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"#Language+getId",children:".getId()"})," \u21d2 ",(0,a.jsx)("code",{children:"string"})]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"#Language+getName",children:".getName()"})," \u21d2 ",(0,a.jsx)("code",{children:"string"})]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"#Language+getMode",children:".getMode()"})," \u21d2 ",(0,a.jsx)("code",{children:"string"})]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"#Language+getFileExtensions",children:".getFileExtensions()"})," \u21d2 ",(0,a.jsx)("code",{children:"Array."})]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"#Language+getFileNames",children:".getFileNames()"})," \u21d2 ",(0,a.jsx)("code",{children:"Array."})]}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"#Language+addFileExtension",children:".addFileExtension(extension)"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"#Language+removeFileExtension",children:".removeFileExtension(extension)"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"#Language+addFileName",children:".addFileName(extension)"})}),"\n",(0,a.jsx)(n.li,{children:(0,a.jsx)(n.a,{href:"#Language+removeFileName",children:".removeFileName(extension)"})}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"#Language+hasLineCommentSyntax",children:".hasLineCommentSyntax()"})," \u21d2 ",(0,a.jsx)("code",{children:"boolean"})]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"#Language+getLineCommentPrefixes",children:".getLineCommentPrefixes()"})," \u21d2 ",(0,a.jsx)("code",{children:"Array."})]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"#Language+setLineCommentSyntax",children:".setLineCommentSyntax(prefix)"})," \u21d2 ",(0,a.jsx)("code",{children:"boolean"})]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"#Language+hasBlockCommentSyntax",children:".hasBlockCommentSyntax()"})," \u21d2 ",(0,a.jsx)("code",{children:"boolean"})]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"#Language+getBlockCommentPrefix",children:".getBlockCommentPrefix()"})," \u21d2 ",(0,a.jsx)("code",{children:"string"})]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"#Language+getBlockCommentSuffix",children:".getBlockCommentSuffix()"})," \u21d2 ",(0,a.jsx)("code",{children:"string"})]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"#Language+setBlockCommentSyntax",children:".setBlockCommentSyntax(prefix, suffix)"})," \u21d2 ",(0,a.jsx)("code",{children:"boolean"})]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"#Language+getLanguageForMode",children:".getLanguageForMode(mode)"})," \u21d2 ",(0,a.jsx)(n.a,{href:"#Language",children:(0,a.jsx)("code",{children:"Language"})})]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"#Language+isFallbackLanguage",children:".isFallbackLanguage()"})," \u21d2 ",(0,a.jsx)("code",{children:"boolean"})]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"#Language+isBinary",children:".isBinary()"})," \u21d2 ",(0,a.jsx)("code",{children:"boolean"})]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,a.jsx)("a",{name:"new_Language_new"}),"\n",(0,a.jsx)(n.h3,{id:"new-language",children:"new Language()"}),"\n",(0,a.jsx)(n.p,{children:"Model for a language."}),"\n",(0,a.jsx)("a",{name:"Language+getId"}),"\n",(0,a.jsxs)(n.h3,{id:"languagegetid--string",children:["language.getId() \u21d2 ",(0,a.jsx)("code",{children:"string"})]}),"\n",(0,a.jsx)(n.p,{children:"Returns the identifier for this language."}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,a.jsx)(n.a,{href:"#Language",children:(0,a.jsx)("code",{children:"Language"})}),(0,a.jsx)(n.br,{}),"\n",(0,a.jsx)(n.strong,{children:"Returns"}),": ",(0,a.jsx)("code",{children:"string"})," - The identifier"]}),"\n",(0,a.jsx)("a",{name:"Language+getName"}),"\n",(0,a.jsxs)(n.h3,{id:"languagegetname--string",children:["language.getName() \u21d2 ",(0,a.jsx)("code",{children:"string"})]}),"\n",(0,a.jsx)(n.p,{children:"Returns the human-readable name of this language."}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,a.jsx)(n.a,{href:"#Language",children:(0,a.jsx)("code",{children:"Language"})}),(0,a.jsx)(n.br,{}),"\n",(0,a.jsx)(n.strong,{children:"Returns"}),": ",(0,a.jsx)("code",{children:"string"})," - The name"]}),"\n",(0,a.jsx)("a",{name:"Language+getMode"}),"\n",(0,a.jsxs)(n.h3,{id:"languagegetmode--string",children:["language.getMode() \u21d2 ",(0,a.jsx)("code",{children:"string"})]}),"\n",(0,a.jsx)(n.p,{children:"Returns the CodeMirror mode for this language."}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,a.jsx)(n.a,{href:"#Language",children:(0,a.jsx)("code",{children:"Language"})}),(0,a.jsx)(n.br,{}),"\n",(0,a.jsx)(n.strong,{children:"Returns"}),": ",(0,a.jsx)("code",{children:"string"})," - The mode"]}),"\n",(0,a.jsx)("a",{name:"Language+getFileExtensions"}),"\n",(0,a.jsxs)(n.h3,{id:"languagegetfileextensions--arraystring",children:["language.getFileExtensions() \u21d2 ",(0,a.jsx)("code",{children:"Array."})]}),"\n",(0,a.jsx)(n.p,{children:"Returns an array of file extensions for this language."}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,a.jsx)(n.a,{href:"#Language",children:(0,a.jsx)("code",{children:"Language"})}),(0,a.jsx)(n.br,{}),"\n",(0,a.jsx)(n.strong,{children:"Returns"}),": ",(0,a.jsx)("code",{children:"Array."})," - File extensions used by this language"]}),"\n",(0,a.jsx)("a",{name:"Language+getFileNames"}),"\n",(0,a.jsxs)(n.h3,{id:"languagegetfilenames--arraystring",children:["language.getFileNames() \u21d2 ",(0,a.jsx)("code",{children:"Array."})]}),"\n",(0,a.jsx)(n.p,{children:"Returns an array of file names for extensionless files that use this language."}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,a.jsx)(n.a,{href:"#Language",children:(0,a.jsx)("code",{children:"Language"})}),(0,a.jsx)(n.br,{}),"\n",(0,a.jsx)(n.strong,{children:"Returns"}),": ",(0,a.jsx)("code",{children:"Array."})," - Extensionless file names used by this language"]}),"\n",(0,a.jsx)("a",{name:"Language+addFileExtension"}),"\n",(0,a.jsx)(n.h3,{id:"languageaddfileextensionextension",children:"language.addFileExtension(extension)"}),"\n",(0,a.jsx)(n.p,{children:"Adds one or more file extensions to this language."}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,a.jsx)(n.a,{href:"#Language",children:(0,a.jsx)("code",{children:"Language"})})]}),"\n",(0,a.jsxs)(n.table,{children:[(0,a.jsx)(n.thead,{children:(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.th,{children:"Param"}),(0,a.jsx)(n.th,{children:"Type"}),(0,a.jsx)(n.th,{children:"Description"})]})}),(0,a.jsx)(n.tbody,{children:(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.td,{children:"extension"}),(0,a.jsxs)(n.td,{children:[(0,a.jsx)("code",{children:"string"})," | ",(0,a.jsx)("code",{children:"Array."})]}),(0,a.jsx)(n.td,{children:"A file extension (or array thereof) used by this language"})]})})]}),"\n",(0,a.jsx)("a",{name:"Language+removeFileExtension"}),"\n",(0,a.jsx)(n.h3,{id:"languageremovefileextensionextension",children:"language.removeFileExtension(extension)"}),"\n",(0,a.jsx)(n.p,{children:"Unregisters one or more file extensions from this language."}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,a.jsx)(n.a,{href:"#Language",children:(0,a.jsx)("code",{children:"Language"})})]}),"\n",(0,a.jsxs)(n.table,{children:[(0,a.jsx)(n.thead,{children:(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.th,{children:"Param"}),(0,a.jsx)(n.th,{children:"Type"}),(0,a.jsx)(n.th,{children:"Description"})]})}),(0,a.jsx)(n.tbody,{children:(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.td,{children:"extension"}),(0,a.jsxs)(n.td,{children:[(0,a.jsx)("code",{children:"string"})," | ",(0,a.jsx)("code",{children:"Array."})]}),(0,a.jsx)(n.td,{children:"File extension (or array thereof) to stop using for this language"})]})})]}),"\n",(0,a.jsx)("a",{name:"Language+addFileName"}),"\n",(0,a.jsx)(n.h3,{id:"languageaddfilenameextension",children:"language.addFileName(extension)"}),"\n",(0,a.jsx)(n.p,{children:'Adds one or more file names to the language which is used to match files that don\'t have extensions like "Makefile" for example.'}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,a.jsx)(n.a,{href:"#Language",children:(0,a.jsx)("code",{children:"Language"})})]}),"\n",(0,a.jsxs)(n.table,{children:[(0,a.jsx)(n.thead,{children:(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.th,{children:"Param"}),(0,a.jsx)(n.th,{children:"Type"}),(0,a.jsx)(n.th,{children:"Description"})]})}),(0,a.jsx)(n.tbody,{children:(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.td,{children:"extension"}),(0,a.jsxs)(n.td,{children:[(0,a.jsx)("code",{children:"string"})," | ",(0,a.jsx)("code",{children:"Array."})]}),(0,a.jsx)(n.td,{children:"An extensionless file name (or array thereof) used by this language"})]})})]}),"\n",(0,a.jsx)("a",{name:"Language+removeFileName"}),"\n",(0,a.jsx)(n.h3,{id:"languageremovefilenameextension",children:"language.removeFileName(extension)"}),"\n",(0,a.jsx)(n.p,{children:"Unregisters one or more file names from this language."}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,a.jsx)(n.a,{href:"#Language",children:(0,a.jsx)("code",{children:"Language"})})]}),"\n",(0,a.jsxs)(n.table,{children:[(0,a.jsx)(n.thead,{children:(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.th,{children:"Param"}),(0,a.jsx)(n.th,{children:"Type"}),(0,a.jsx)(n.th,{children:"Description"})]})}),(0,a.jsx)(n.tbody,{children:(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.td,{children:"extension"}),(0,a.jsxs)(n.td,{children:[(0,a.jsx)("code",{children:"string"})," | ",(0,a.jsx)("code",{children:"Array."})]}),(0,a.jsx)(n.td,{children:"An extensionless file name (or array thereof) used by this language"})]})})]}),"\n",(0,a.jsx)("a",{name:"Language+hasLineCommentSyntax"}),"\n",(0,a.jsxs)(n.h3,{id:"languagehaslinecommentsyntax--boolean",children:["language.hasLineCommentSyntax() \u21d2 ",(0,a.jsx)("code",{children:"boolean"})]}),"\n",(0,a.jsx)(n.p,{children:"Returns whether the line comment syntax is defined for this language."}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,a.jsx)(n.a,{href:"#Language",children:(0,a.jsx)("code",{children:"Language"})}),(0,a.jsx)(n.br,{}),"\n",(0,a.jsx)(n.strong,{children:"Returns"}),": ",(0,a.jsx)("code",{children:"boolean"})," - Whether line comments are supported"]}),"\n",(0,a.jsx)("a",{name:"Language+getLineCommentPrefixes"}),"\n",(0,a.jsxs)(n.h3,{id:"languagegetlinecommentprefixes--arraystring",children:["language.getLineCommentPrefixes() \u21d2 ",(0,a.jsx)("code",{children:"Array."})]}),"\n",(0,a.jsx)(n.p,{children:"Returns an array of prefixes to use for line comments."}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,a.jsx)(n.a,{href:"#Language",children:(0,a.jsx)("code",{children:"Language"})}),(0,a.jsx)(n.br,{}),"\n",(0,a.jsx)(n.strong,{children:"Returns"}),": ",(0,a.jsx)("code",{children:"Array."})," - The prefixes"]}),"\n",(0,a.jsx)("a",{name:"Language+setLineCommentSyntax"}),"\n",(0,a.jsxs)(n.h3,{id:"languagesetlinecommentsyntaxprefix--boolean",children:["language.setLineCommentSyntax(prefix) \u21d2 ",(0,a.jsx)("code",{children:"boolean"})]}),"\n",(0,a.jsx)(n.p,{children:"Sets the prefixes to use for line comments in this language or prints an error to the console."}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,a.jsx)(n.a,{href:"#Language",children:(0,a.jsx)("code",{children:"Language"})}),(0,a.jsx)(n.br,{}),"\n",(0,a.jsx)(n.strong,{children:"Returns"}),": ",(0,a.jsx)("code",{children:"boolean"})," - Whether the syntax was valid and set or not"]}),"\n",(0,a.jsxs)(n.table,{children:[(0,a.jsx)(n.thead,{children:(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.th,{children:"Param"}),(0,a.jsx)(n.th,{children:"Type"}),(0,a.jsx)(n.th,{children:"Description"})]})}),(0,a.jsx)(n.tbody,{children:(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.td,{children:"prefix"}),(0,a.jsxs)(n.td,{children:[(0,a.jsx)("code",{children:"string"})," | ",(0,a.jsx)("code",{children:"Array."})]}),(0,a.jsx)(n.td,{children:'Prefix string or an array of prefix strings to use for line comments (e.g. "//" or ["//", "#"])'})]})})]}),"\n",(0,a.jsx)("a",{name:"Language+hasBlockCommentSyntax"}),"\n",(0,a.jsxs)(n.h3,{id:"languagehasblockcommentsyntax--boolean",children:["language.hasBlockCommentSyntax() \u21d2 ",(0,a.jsx)("code",{children:"boolean"})]}),"\n",(0,a.jsx)(n.p,{children:"Returns whether the block comment syntax is defined for this language."}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,a.jsx)(n.a,{href:"#Language",children:(0,a.jsx)("code",{children:"Language"})}),(0,a.jsx)(n.br,{}),"\n",(0,a.jsx)(n.strong,{children:"Returns"}),": ",(0,a.jsx)("code",{children:"boolean"})," - Whether block comments are supported"]}),"\n",(0,a.jsx)("a",{name:"Language+getBlockCommentPrefix"}),"\n",(0,a.jsxs)(n.h3,{id:"languagegetblockcommentprefix--string",children:["language.getBlockCommentPrefix() \u21d2 ",(0,a.jsx)("code",{children:"string"})]}),"\n",(0,a.jsx)(n.p,{children:"Returns the prefix to use for block comments."}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,a.jsx)(n.a,{href:"#Language",children:(0,a.jsx)("code",{children:"Language"})}),(0,a.jsx)(n.br,{}),"\n",(0,a.jsx)(n.strong,{children:"Returns"}),": ",(0,a.jsx)("code",{children:"string"})," - The prefix"]}),"\n",(0,a.jsx)("a",{name:"Language+getBlockCommentSuffix"}),"\n",(0,a.jsxs)(n.h3,{id:"languagegetblockcommentsuffix--string",children:["language.getBlockCommentSuffix() \u21d2 ",(0,a.jsx)("code",{children:"string"})]}),"\n",(0,a.jsx)(n.p,{children:"Returns the suffix to use for block comments."}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,a.jsx)(n.a,{href:"#Language",children:(0,a.jsx)("code",{children:"Language"})}),(0,a.jsx)(n.br,{}),"\n",(0,a.jsx)(n.strong,{children:"Returns"}),": ",(0,a.jsx)("code",{children:"string"})," - The suffix"]}),"\n",(0,a.jsx)("a",{name:"Language+setBlockCommentSyntax"}),"\n",(0,a.jsxs)(n.h3,{id:"languagesetblockcommentsyntaxprefix-suffix--boolean",children:["language.setBlockCommentSyntax(prefix, suffix) \u21d2 ",(0,a.jsx)("code",{children:"boolean"})]}),"\n",(0,a.jsx)(n.p,{children:"Sets the prefix and suffix to use for blocks comments in this language or prints an error to the console."}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,a.jsx)(n.a,{href:"#Language",children:(0,a.jsx)("code",{children:"Language"})}),(0,a.jsx)(n.br,{}),"\n",(0,a.jsx)(n.strong,{children:"Returns"}),": ",(0,a.jsx)("code",{children:"boolean"})," - Whether the syntax was valid and set or not"]}),"\n",(0,a.jsxs)(n.table,{children:[(0,a.jsx)(n.thead,{children:(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.th,{children:"Param"}),(0,a.jsx)(n.th,{children:"Type"}),(0,a.jsx)(n.th,{children:"Description"})]})}),(0,a.jsxs)(n.tbody,{children:[(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.td,{children:"prefix"}),(0,a.jsx)(n.td,{children:(0,a.jsx)("code",{children:"string"})}),(0,a.jsx)(n.td,{children:'Prefix string to use for block comments (e.g. "< !--")'})]}),(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.td,{children:"suffix"}),(0,a.jsx)(n.td,{children:(0,a.jsx)("code",{children:"string"})}),(0,a.jsx)(n.td,{children:'Suffix string to use for block comments (e.g. "--\x3e")'})]})]})]}),"\n",(0,a.jsx)("a",{name:"Language+getLanguageForMode"}),"\n",(0,a.jsxs)(n.h3,{id:"languagegetlanguageformodemode--language",children:["language.getLanguageForMode(mode) \u21d2 ",(0,a.jsx)(n.a,{href:"#Language",children:(0,a.jsx)("code",{children:"Language"})})]}),"\n",(0,a.jsx)(n.p,{children:"Returns either a language associated with the mode or the fallback language.\nUsed to disambiguate modes used by multiple languages."}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,a.jsx)(n.a,{href:"#Language",children:(0,a.jsx)("code",{children:"Language"})}),(0,a.jsx)(n.br,{}),"\n",(0,a.jsx)(n.strong,{children:"Returns"}),": ",(0,a.jsx)(n.a,{href:"#Language",children:(0,a.jsx)("code",{children:"Language"})})," - This language if it uses the mode, or whatever ",(0,a.jsx)(n.a,{href:"#_getLanguageForMode",children:"#_getLanguageForMode"})," returns"]}),"\n",(0,a.jsxs)(n.table,{children:[(0,a.jsx)(n.thead,{children:(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.th,{children:"Param"}),(0,a.jsx)(n.th,{children:"Type"}),(0,a.jsx)(n.th,{children:"Description"})]})}),(0,a.jsx)(n.tbody,{children:(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.td,{children:"mode"}),(0,a.jsx)(n.td,{children:(0,a.jsx)("code",{children:"string"})}),(0,a.jsx)(n.td,{children:"The mode to associate the language with"})]})})]}),"\n",(0,a.jsx)("a",{name:"Language+isFallbackLanguage"}),"\n",(0,a.jsxs)(n.h3,{id:"languageisfallbacklanguage--boolean",children:["language.isFallbackLanguage() \u21d2 ",(0,a.jsx)("code",{children:"boolean"})]}),"\n",(0,a.jsx)(n.p,{children:"Determines whether this is the fallback language or not"}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,a.jsx)(n.a,{href:"#Language",children:(0,a.jsx)("code",{children:"Language"})}),(0,a.jsx)(n.br,{}),"\n",(0,a.jsx)(n.strong,{children:"Returns"}),": ",(0,a.jsx)("code",{children:"boolean"})," - True if this is the fallback language, false otherwise"]}),"\n",(0,a.jsx)("a",{name:"Language+isBinary"}),"\n",(0,a.jsxs)(n.h3,{id:"languageisbinary--boolean",children:["language.isBinary() \u21d2 ",(0,a.jsx)("code",{children:"boolean"})]}),"\n",(0,a.jsx)(n.p,{children:"Indicates whether or not the language is binary (e.g., image or audio)."}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,a.jsx)(n.a,{href:"#Language",children:(0,a.jsx)("code",{children:"Language"})})]}),"\n",(0,a.jsx)("a",{name:"getLanguage"}),"\n",(0,a.jsxs)(n.h2,{id:"getlanguageid--language",children:["getLanguage(id) \u21d2 ",(0,a.jsx)(n.a,{href:"#Language",children:(0,a.jsx)("code",{children:"Language"})})]}),"\n",(0,a.jsx)(n.p,{children:"Resolves a language ID to a Language object.\nFile names have a higher priority than file extensions."}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"Kind"}),": global function",(0,a.jsx)(n.br,{}),"\n",(0,a.jsx)(n.strong,{children:"Returns"}),": ",(0,a.jsx)(n.a,{href:"#Language",children:(0,a.jsx)("code",{children:"Language"})})," - The language with the provided identifier or undefined"]}),"\n",(0,a.jsxs)(n.table,{children:[(0,a.jsx)(n.thead,{children:(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.th,{children:"Param"}),(0,a.jsx)(n.th,{children:"Type"}),(0,a.jsx)(n.th,{children:"Description"})]})}),(0,a.jsx)(n.tbody,{children:(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.td,{children:"id"}),(0,a.jsx)(n.td,{children:(0,a.jsx)("code",{children:"string"})}),(0,a.jsx)(n.td,{children:'Identifier for this language: lowercase letters, digits, and _ separators (e.g. "cpp", "foo_bar", "c99")'})]})})]}),"\n",(0,a.jsx)("a",{name:"getLanguageForExtension"}),"\n",(0,a.jsxs)(n.h2,{id:"getlanguageforextensionextension--language",children:["getLanguageForExtension(extension) \u21d2 ",(0,a.jsx)(n.a,{href:"#Language",children:(0,a.jsx)("code",{children:"Language"})})]}),"\n",(0,a.jsxs)(n.p,{children:["Resolves a file extension to a Language object.\n",(0,a.jsx)(n.em,{children:"Warning:"})," it is almost always better to use getLanguageForPath(), since Language can depend\non file name and even full path. Use this API only if no relevant file/path exists."]}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"Kind"}),": global function",(0,a.jsx)(n.br,{}),"\n",(0,a.jsx)(n.strong,{children:"Returns"}),": ",(0,a.jsx)(n.a,{href:"#Language",children:(0,a.jsx)("code",{children:"Language"})})," - The language for the provided extension or null if none exists"]}),"\n",(0,a.jsxs)(n.table,{children:[(0,a.jsx)(n.thead,{children:(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.th,{children:"Param"}),(0,a.jsx)(n.th,{children:"Type"}),(0,a.jsx)(n.th,{children:"Description"})]})}),(0,a.jsx)(n.tbody,{children:(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.td,{children:"extension"}),(0,a.jsx)(n.td,{children:(0,a.jsx)("code",{children:"string"})}),(0,a.jsx)(n.td,{children:"Extension that language should be resolved for"})]})})]}),"\n",(0,a.jsx)("a",{name:"getLanguageForPath"}),"\n",(0,a.jsxs)(n.h2,{id:"getlanguageforpathpath-ignoreoverride--language",children:["getLanguageForPath(path, [ignoreOverride]) \u21d2 ",(0,a.jsx)(n.a,{href:"#Language",children:(0,a.jsx)("code",{children:"Language"})})]}),"\n",(0,a.jsx)(n.p,{children:"Resolves a file path to a Language object."}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"Kind"}),": global function",(0,a.jsx)(n.br,{}),"\n",(0,a.jsx)(n.strong,{children:"Returns"}),": ",(0,a.jsx)(n.a,{href:"#Language",children:(0,a.jsx)("code",{children:"Language"})})," - The language for the provided file type or the fallback language"]}),"\n",(0,a.jsxs)(n.table,{children:[(0,a.jsx)(n.thead,{children:(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.th,{children:"Param"}),(0,a.jsx)(n.th,{children:"Type"}),(0,a.jsx)(n.th,{children:"Description"})]})}),(0,a.jsxs)(n.tbody,{children:[(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.td,{children:"path"}),(0,a.jsx)(n.td,{children:(0,a.jsx)("code",{children:"string"})}),(0,a.jsx)(n.td,{children:"Path to the file to find a language for"})]}),(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.td,{children:"[ignoreOverride]"}),(0,a.jsx)(n.td,{children:(0,a.jsx)("code",{children:"boolean"})}),(0,a.jsx)(n.td,{children:"If set to true will cause the lookup to ignore any overrides and return default binding. By default override is not ignored."})]})]})]}),"\n",(0,a.jsx)("a",{name:"getLanguages"}),"\n",(0,a.jsxs)(n.h2,{id:"getlanguages--objectstring-language",children:["getLanguages() \u21d2 ",(0,a.jsx)("code",{children:"Object."})]}),"\n",(0,a.jsx)(n.p,{children:"Returns a map of all the languages currently defined in the LanguageManager. The key to\nthe map is the language id and the value is the language object."}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"Kind"}),": global function",(0,a.jsx)(n.br,{}),"\n",(0,a.jsx)(n.strong,{children:"Returns"}),": ",(0,a.jsx)("code",{children:"Object."})," - A map containing all of the\nlanguages currently defined."]}),"\n",(0,a.jsx)("a",{name:"setLanguageOverrideForPath"}),"\n",(0,a.jsx)(n.h2,{id:"setlanguageoverrideforpathfullpath-language",children:"setLanguageOverrideForPath(fullPath, language)"}),"\n",(0,a.jsx)(n.p,{children:"Adds a language mapping for the specified fullPath. If language is falsy (null or undefined), the mapping\nis removed. The override is NOT persisted across Brackets sessions."}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,a.jsxs)(n.table,{children:[(0,a.jsx)(n.thead,{children:(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.th,{children:"Param"}),(0,a.jsx)(n.th,{children:"Type"}),(0,a.jsx)(n.th,{children:"Description"})]})}),(0,a.jsxs)(n.tbody,{children:[(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.td,{children:"fullPath"}),(0,a.jsx)(n.td,{children:(0,a.jsx)("code",{children:"fullPath"})}),(0,a.jsx)(n.td,{children:"absolute path of the file"})]}),(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.td,{children:"language"}),(0,a.jsx)(n.td,{children:(0,a.jsx)("code",{children:"object"})}),(0,a.jsx)(n.td,{children:"language to associate the file with or falsy value to remove any existing override"})]})]})]}),"\n",(0,a.jsx)("a",{name:"getCompoundFileExtension"}),"\n",(0,a.jsxs)(n.h2,{id:"getcompoundfileextensionfullpath--string",children:["getCompoundFileExtension(fullPath) \u21d2 ",(0,a.jsx)("code",{children:"string"})]}),"\n",(0,a.jsxs)(n.p,{children:['Get the file extension (excluding ".") given a path OR a bare filename.\nReturns "" for names with no extension.\nIf the only ',(0,a.jsx)(n.code,{children:"."}),' in the file is the first character,\nreturns "" as this is not considered an extension.\nThis method considers known extensions which include ',(0,a.jsx)(n.code,{children:"."})," in them."]}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"Kind"}),": global function",(0,a.jsx)(n.br,{}),"\n",(0,a.jsx)(n.strong,{children:"Returns"}),": ",(0,a.jsx)("code",{children:"string"})," - Returns the extension of a filename or empty string if\nthe argument is a directory or a filename with no extension"]}),"\n",(0,a.jsxs)(n.table,{children:[(0,a.jsx)(n.thead,{children:(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.th,{children:"Param"}),(0,a.jsx)(n.th,{children:"Type"}),(0,a.jsx)(n.th,{children:"Description"})]})}),(0,a.jsx)(n.tbody,{children:(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.td,{children:"fullPath"}),(0,a.jsx)(n.td,{children:(0,a.jsx)("code",{children:"string"})}),(0,a.jsx)(n.td,{children:"full path to a file or directory"})]})})]}),"\n",(0,a.jsx)("a",{name:"defineLanguage"}),"\n",(0,a.jsxs)(n.h2,{id:"definelanguageid-definition--promise",children:["defineLanguage(id, definition) \u21d2 ",(0,a.jsx)("code",{children:"$.Promise"})]}),"\n",(0,a.jsx)(n.p,{children:"Defines a language."}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"Kind"}),": global function",(0,a.jsx)(n.br,{}),"\n",(0,a.jsx)(n.strong,{children:"Returns"}),": ",(0,a.jsx)("code",{children:"$.Promise"})," - A promise object that will be resolved with a Language object"]}),"\n",(0,a.jsxs)(n.table,{children:[(0,a.jsx)(n.thead,{children:(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.th,{children:"Param"}),(0,a.jsx)(n.th,{children:"Type"}),(0,a.jsx)(n.th,{children:"Description"})]})}),(0,a.jsxs)(n.tbody,{children:[(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.td,{children:"id"}),(0,a.jsx)(n.td,{children:(0,a.jsx)("code",{children:"string"})}),(0,a.jsx)(n.td,{children:'Unique identifier for this language: lowercase letters, digits, and _ separators (e.g. "cpp", "foo_bar", "c99")'})]}),(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.td,{children:"definition"}),(0,a.jsx)(n.td,{children:(0,a.jsx)("code",{children:"Object"})}),(0,a.jsx)(n.td,{children:"An object describing the language"})]}),(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.td,{children:"definition.name"}),(0,a.jsx)(n.td,{children:(0,a.jsx)("code",{children:"string"})}),(0,a.jsx)(n.td,{children:'Human-readable name of the language, as it\'s commonly referred to (e.g. "C++")'})]}),(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.td,{children:"definition.fileExtensions"}),(0,a.jsx)(n.td,{children:(0,a.jsx)("code",{children:"Array."})}),(0,a.jsx)(n.td,{children:'List of file extensions used by this language (e.g. ["php", "php3"] or ["coffee.md"] - may contain dots)'})]}),(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.td,{children:"definition.fileNames"}),(0,a.jsx)(n.td,{children:(0,a.jsx)("code",{children:"Array."})}),(0,a.jsx)(n.td,{children:'List of exact file names (e.g. ["Makefile"] or ["package.json]). Higher precedence than file extension.'})]}),(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.td,{children:"definition.blockComment"}),(0,a.jsx)(n.td,{children:(0,a.jsx)("code",{children:"Array."})}),(0,a.jsx)(n.td,{children:'Array with two entries defining the block comment prefix and suffix (e.g. ["< !--", "--\x3e"])'})]}),(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.td,{children:"definition.lineComment"}),(0,a.jsxs)(n.td,{children:[(0,a.jsx)("code",{children:"string"})," | ",(0,a.jsx)("code",{children:"Array."})]}),(0,a.jsx)(n.td,{children:'Line comment prefixes (e.g. "//" or ["//", "#"])'})]}),(0,a.jsxs)(n.tr,{children:[(0,a.jsx)(n.td,{children:"definition.mode"}),(0,a.jsxs)(n.td,{children:[(0,a.jsx)("code",{children:"string"})," | ",(0,a.jsx)("code",{children:"Array."})]}),(0,a.jsx)(n.td,{children:'CodeMirror mode (e.g. "htmlmixed"), optionally with a MIME mode defined by that mode ["clike", "text/x-c++src"] Unless the mode is located in thirdparty/CodeMirror/mode/"name"/"name".js, you need to first load it yourself.'})]})]})]})]})}function c(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(o,{...e})}):o(e)}},28453:(e,n,s)=>{s.d(n,{R:()=>l,x:()=>t});var i=s(96540);const a={},r=i.createContext(a);function l(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:l(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/336e00bf.b9acc346.js b/assets/js/336e00bf.b9acc346.js new file mode 100644 index 00000000..8a304770 --- /dev/null +++ b/assets/js/336e00bf.b9acc346.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1202],{18493:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>c,default:()=>u,frontMatter:()=>r,metadata:()=>i,toc:()=>a});const i=JSON.parse('{"id":"Editing & Code/editing-text","title":"Editing Text","description":"This section provides an overview of the core text and code editing features in Phoenix Code.","source":"@site/docs/04-Editing & Code/01-editing-text.md","sourceDirName":"04-Editing & Code","slug":"/editing-text","permalink":"/docs/editing-text","draft":false,"unlisted":false,"editUrl":"https://github.com/phcode-dev/docs/blob/main/docs/04-Editing & Code/01-editing-text.md","tags":[],"version":"current","sidebarPosition":1,"frontMatter":{"title":"Editing Text","slug":"/editing-text"},"sidebar":"tutorialSidebar","previous":{"title":"AI","permalink":"/docs/Pro Features/ai-chat"},"next":{"title":"Editing Colors","permalink":"/docs/editing-colors"}}');var s=n(74848),o=n(28453),d=(n(96540),n(56399));const r={title:"Editing Text",slug:"/editing-text"},c=void 0,l={},a=[{value:"Multi Cursor",id:"multi-cursor",level:2},{value:"Creating multiple cursors",id:"creating-multiple-cursors",level:3},{value:"Using Mouse :",id:"using-mouse-",level:4},{value:"Using Keyboard :",id:"using-keyboard-",level:4},{value:"Switching back to single cursor",id:"switching-back-to-single-cursor",level:3},{value:"Quick Docs",id:"quick-docs",level:2},{value:"Accessing Quick Docs",id:"accessing-quick-docs",level:3},{value:"Auto Rename Tag",id:"auto-rename-tag",level:2},{value:"How It Works",id:"how-it-works",level:3},{value:"Enabling/Disabling Auto Rename Tag feature",id:"enablingdisabling-auto-rename-tag-feature",level:3},{value:"Toggle the Feature",id:"toggle-the-feature",level:4},{value:"Temporary Disabling",id:"temporary-disabling",level:4},{value:"Insert and Overwrite Mode",id:"insert-and-overwrite-mode",level:2},{value:"Understanding Insert Mode",id:"understanding-insert-mode",level:3},{value:"Understanding Overwrite Mode",id:"understanding-overwrite-mode",level:3},{value:"Toggle between Insert Mode & Overwrite Mode",id:"toggle-between-insert-mode--overwrite-mode",level:3},{value:"Using Editor Interface",id:"using-editor-interface",level:4},{value:"Using Keyboard",id:"using-keyboard",level:4},{value:"Auto Space Detection",id:"auto-space-detection",level:2},{value:"Automatic and Fixed Modes",id:"automatic-and-fixed-modes",level:3},{value:"Toggle between Auto Mode & Fixed Mode",id:"toggle-between-auto-mode--fixed-mode",level:3},{value:"Quick Tips",id:"quick-tips",level:3},{value:"Editing Preferences",id:"editing-preferences",level:2},{value:"Open the Preferences File:",id:"open-the-preferences-file",level:3},{value:"Understanding the Preferences Layout",id:"understanding-the-preferences-layout",level:3},{value:"Modifying Preferences",id:"modifying-preferences",level:3}];function h(e){const t={code:"code",em:"em",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(t.p,{children:["This section provides an overview of the core text and code editing features in ",(0,s.jsx)(t.strong,{children:"Phoenix Code"}),"."]}),"\n",(0,s.jsx)(t.h2,{id:"multi-cursor",children:"Multi Cursor"}),"\n",(0,s.jsxs)(t.p,{children:["Using ",(0,s.jsx)(t.strong,{children:"Multi-Cursor"}),", you can place multiple cursors in different locations, allowing you to edit text simultaneously. This feature is especially useful for making quick, consistent changes across multiple lines or sections of a file."]}),"\n",(0,s.jsx)(t.h3,{id:"creating-multiple-cursors",children:"Creating multiple cursors"}),"\n",(0,s.jsxs)(t.h4,{id:"using-mouse-",children:[(0,s.jsx)(t.strong,{children:"Using Mouse"})," :"]}),"\n",(0,s.jsxs)(t.p,{children:["Hold the ",(0,s.jsx)(t.code,{children:"Alt"})," key on Windows/Linux (",(0,s.jsx)(t.code,{children:"Option"})," key on macOS) and ",(0,s.jsx)(t.code,{children:"Click"})," on the desired locations to place additional cursors. To quickly place cursors across multiple lines, drag the mouse while holding the same key."]}),"\n",(0,s.jsx)(d.A,{src:"https://docs-images.phcode.dev/videos/editing-text/multi_cursor.mp4",winLinuxTitle:"Multi Cursors: Alt + Click",macTitle:"Multi Cursors: Option + Click"}),"\n",(0,s.jsxs)(t.h4,{id:"using-keyboard-",children:[(0,s.jsx)(t.strong,{children:"Using Keyboard"})," :"]}),"\n",(0,s.jsxs)(t.p,{children:["If you want the cursor to be placed in the line above, use ",(0,s.jsx)(t.code,{children:"Alt + Shift + Up Arrow"})," on Windows/Linux and ",(0,s.jsx)(t.code,{children:"Option + Shift + Up Arrow"})," on MacOS.\nIf you want the cursor to be placed in the line below, use ",(0,s.jsx)(t.code,{children:"Alt + Shift + Down Arrow"})," on Windows/Linux and ",(0,s.jsx)(t.code,{children:"Option + Shift + Down Arrow"})," on MacOS."]}),"\n",(0,s.jsx)(t.h3,{id:"switching-back-to-single-cursor",children:"Switching back to single cursor"}),"\n",(0,s.jsxs)(t.p,{children:["To revert back to a single cursor, just press the ",(0,s.jsx)(t.code,{children:"Esc"})," key."]}),"\n",(0,s.jsx)(t.h2,{id:"quick-docs",children:"Quick Docs"}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"Quick Docs"})," provides immediate access to documentation for code elements directly within the editor."]}),"\n",(0,s.jsx)(t.h3,{id:"accessing-quick-docs",children:"Accessing Quick Docs"}),"\n",(0,s.jsxs)(t.ol,{children:["\n",(0,s.jsx)(t.li,{children:"Right click on the element you want details about."}),"\n",(0,s.jsxs)(t.li,{children:["A context menu will appear, click on ",(0,s.jsx)(t.strong,{children:"Quick Docs"})," or simply press ",(0,s.jsx)(t.code,{children:"F1"})," to bring up Quick Docs directly."]}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"Quick Docs Image",src:n(28772).A+"",title:"Right click on the element and select Quick Docs option",width:"508",height:"506"})}),"\n",(0,s.jsx)(t.h2,{id:"auto-rename-tag",children:"Auto Rename Tag"}),"\n",(0,s.jsxs)(t.p,{children:["The ",(0,s.jsx)(t.strong,{children:"Auto Rename Tag"})," feature updates matching tags automatically when you rename one. It works with HTML, XHTML, HTM, XML, SVG, PHP, and JSP files."]}),"\n",(0,s.jsx)(t.h3,{id:"how-it-works",children:"How It Works"}),"\n",(0,s.jsx)(t.p,{children:"When you rename an opening or closing tag, the corresponding tag updates instantly."}),"\n",(0,s.jsx)(d.A,{src:"https://docs-images.phcode.dev/videos/editing-text/auto-rename-tag.mp4"}),"\n",(0,s.jsx)(t.h3,{id:"enablingdisabling-auto-rename-tag-feature",children:"Enabling/Disabling Auto Rename Tag feature"}),"\n",(0,s.jsx)(t.h4,{id:"toggle-the-feature",children:"Toggle the Feature"}),"\n",(0,s.jsxs)(t.p,{children:["To enable or disable the ",(0,s.jsx)(t.strong,{children:"Auto Rename Tag"})," feature, go to ",(0,s.jsx)(t.code,{children:"Edit"})," > ",(0,s.jsx)(t.code,{children:"Auto Rename HTML Tags"}),"."]}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"Auto Rename Tag Disable Image",src:n(96448).A+"",title:"Click on Edit & toggle Auto Rename HTML Tags option",width:"1787",height:"925"})}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsxs)(t.em,{children:["The ",(0,s.jsx)(t.strong,{children:"Auto Rename HTML Tags"})," feature is enabled by default."]})}),"\n",(0,s.jsx)(t.h4,{id:"temporary-disabling",children:"Temporary Disabling"}),"\n",(0,s.jsxs)(t.p,{children:["To temporarily disable tag synchronization for the current tag:\nPress ",(0,s.jsx)(t.code,{children:"ESC"}),"."]}),"\n",(0,s.jsx)(t.p,{children:"To re-enable synchronization:\nMove your cursor out of the tag and then back into the tag."}),"\n",(0,s.jsx)(d.A,{src:"https://docs-images.phcode.dev/videos/editing-text/auto-rename-temp-disable.mp4"}),"\n",(0,s.jsx)(t.h2,{id:"insert-and-overwrite-mode",children:"Insert and Overwrite Mode"}),"\n",(0,s.jsxs)(t.p,{children:["Users can toggle between ",(0,s.jsx)(t.strong,{children:"Insert Mode"})," and ",(0,s.jsx)(t.strong,{children:"Overwrite Mode"})," for different text input behaviors."]}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.em,{children:"Insert Mode is enabled by default when you begin typing in a file."})}),"\n",(0,s.jsx)(t.h3,{id:"understanding-insert-mode",children:"Understanding Insert Mode"}),"\n",(0,s.jsxs)(t.p,{children:["When in ",(0,s.jsx)(t.strong,{children:"Insert Mode"}),", any text you type is inserted at the current cursor position, pushing the existing text to the right."]}),"\n",(0,s.jsx)(d.A,{src:"https://docs-images.phcode.dev/videos/editing-text/insert-mode-video.mp4"}),"\n",(0,s.jsx)(t.h3,{id:"understanding-overwrite-mode",children:"Understanding Overwrite Mode"}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"Overwrite Mode"})," replaces the existing text at the cursor position with the new text you type. Instead of pushing text to the right, it overwrites the characters directly under the cursor."]}),"\n",(0,s.jsx)(d.A,{src:"https://docs-images.phcode.dev/videos/editing-text/overwrite-mode-video.mp4"}),"\n",(0,s.jsx)(t.h3,{id:"toggle-between-insert-mode--overwrite-mode",children:"Toggle between Insert Mode & Overwrite Mode"}),"\n",(0,s.jsx)(t.h4,{id:"using-editor-interface",children:(0,s.jsx)(t.strong,{children:"Using Editor Interface"})}),"\n",(0,s.jsxs)(t.p,{children:["Click on the ",(0,s.jsx)(t.code,{children:"INS(OVR)"})," button on the status bar to toggle between Insert Mode and Overwrite Mode. ",(0,s.jsx)(t.code,{children:"INS"})," represents Insert Mode. ",(0,s.jsx)(t.code,{children:"OVR"})," represents Overwrite Mode."]}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"Insert/Overwrite Mode Image",src:n(15464).A+"",title:"Click on INS/OVR button on status bar to toggle between Insert and Overwrite Mode",width:"443",height:"39"})}),"\n",(0,s.jsx)(t.h4,{id:"using-keyboard",children:(0,s.jsx)(t.strong,{children:"Using Keyboard"})}),"\n",(0,s.jsxs)(t.p,{children:["Press the ",(0,s.jsx)(t.code,{children:"Ins"})," or the Insert key to toggle between Insert Mode and Overwrite Mode."]}),"\n",(0,s.jsx)(t.h2,{id:"auto-space-detection",children:"Auto Space Detection"}),"\n",(0,s.jsxs)(t.p,{children:["The ",(0,s.jsx)(t.strong,{children:"Auto Space Detection"})," feature in Phoenix Code Editor is designed to automatically detect and adapt to the indentation style used in your files, whether it\u2019s tabs or spaces."]}),"\n",(0,s.jsx)(t.h3,{id:"automatic-and-fixed-modes",children:"Automatic and Fixed Modes"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"Auto mode"}),": Automatically detects and applies the indentation style (tabs or spaces) based on the existing code in the file."]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"Fixed mode"}),": Locks the editor to use a specific indentation style, regardless of the existing formatting in the file."]}),"\n"]}),"\n",(0,s.jsx)(t.h3,{id:"toggle-between-auto-mode--fixed-mode",children:"Toggle between Auto Mode & Fixed Mode"}),"\n",(0,s.jsxs)(t.p,{children:["When you open a new file, by default it is set to ",(0,s.jsx)(t.code,{children:"Auto"})," mode, but you can easily switch to ",(0,s.jsx)(t.code,{children:"Fixed"})," mode."]}),"\n",(0,s.jsxs)(t.p,{children:["In the editor's status bar, you\u2019ll find the ",(0,s.jsx)(t.code,{children:"Auto"})," button. When clicked, it toggles between ",(0,s.jsx)(t.code,{children:"Auto"})," and ",(0,s.jsx)(t.code,{children:"Fixed"})," modes."]}),"\n",(0,s.jsxs)(t.p,{children:["You can toggle between spaces and tab size by clicking the ",(0,s.jsx)(t.code,{children:"Tab Size"})," or ",(0,s.jsx)(t.code,{children:"Spaces"})," button in the status bar."]}),"\n",(0,s.jsx)(t.p,{children:"You can adjust the tab size width or number of spaces by clicking the value in the status bar and modifying it as needed."}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"Auto Space Detection Image",src:n(85926).A+"",title:"Auto mode automatically detects and adapts to the indentation style",width:"906",height:"87"})}),"\n",(0,s.jsx)(t.h3,{id:"quick-tips",children:"Quick Tips"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:["If you need to recompute the tab spacing configuration for a file, toggle the ",(0,s.jsx)(t.code,{children:"Auto"})," button twice (switch to Fixed mode and back to Auto). This will refresh the spacing settings for the current file."]}),"\n",(0,s.jsxs)(t.li,{children:["Switching to ",(0,s.jsx)(t.code,{children:"Fixed"})," mode will apply a fixed spacing across the system."]}),"\n",(0,s.jsxs)(t.li,{children:["You can use the ",(0,s.jsx)(t.code,{children:"Beautify Code"})," feature to reformat the file according to the new tab size or spacing settings after making changes(use ",(0,s.jsx)(t.code,{children:"Ctrl-B"})," in Windows/Linux, ",(0,s.jsx)(t.code,{children:"Cmd-B"})," in macOS or ",(0,s.jsx)(t.code,{children:"right-click"})," and select ",(0,s.jsx)(t.code,{children:"Beautify Code"}),")."]}),"\n"]}),"\n",(0,s.jsx)(d.A,{src:"https://docs-images.phcode.dev/videos/editing-text/beautify_format.mp4",winLinuxTitle:"Beautify Code: Ctrl + B",macTitle:"Beautify Code: Cmd + B"}),"\n",(0,s.jsx)(t.h2,{id:"editing-preferences",children:"Editing Preferences"}),"\n",(0,s.jsx)(t.p,{children:"You can personalize Phoenix to suit your workflow by adjusting the preferences."}),"\n",(0,s.jsx)(t.h3,{id:"open-the-preferences-file",children:"Open the Preferences File:"}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.img,{alt:"Open Preferences File Image",src:n(38881).A+"",title:"Click on File and then click on Open Preferences File",width:"939",height:"809"}),"\nTo modify the preferences, go to ",(0,s.jsx)(t.code,{children:"File"})," > ",(0,s.jsx)(t.code,{children:"Open Preferences File"}),"."]}),"\n",(0,s.jsx)(t.h3,{id:"understanding-the-preferences-layout",children:"Understanding the Preferences Layout"}),"\n",(0,s.jsx)(t.p,{children:"Once selected, two files will appear side by side:"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:"defaultPreferences.json (on the left) :- This file is a read-only file containing the default settings."}),"\n",(0,s.jsx)(t.li,{children:"phcode.json (on the right) :- This file is editable and used for any custom preferences you wish to apply."}),"\n"]}),"\n",(0,s.jsx)(t.h3,{id:"modifying-preferences",children:"Modifying Preferences"}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.img,{alt:"Modify Preferences Image",src:n(26244).A+"",title:"Modify phcode.json file to update the preferences settings",width:"1919",height:"1110"}),"\nTo change a preference, simply write the desired configuration and values in the ",(0,s.jsx)(t.strong,{children:"phcode.json"})," and save the file. These custom settings will automatically override the corresponding values in the default preferences."]})]})}function u(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},56399:(e,t,n)=>{n.d(t,{A:()=>o});var i=n(96540),s=n(74848);const o=({src:e,winLinuxTitle:t,macTitle:n})=>{const[o,d]=(0,i.useState)("");(0,i.useEffect)((()=>{navigator.platform.toLowerCase().includes("mac")?d(n):d(t)}),[t,n]);return(0,s.jsxs)("div",{style:{maxHeight:"68vh",width:"100%",display:"flex",justifyContent:"center",alignItems:"center",flexDirection:"column"},children:[(0,s.jsxs)("video",{style:{height:"90%",width:"100%"},controls:!0,autoPlay:!0,muted:!0,loop:!0,children:[(0,s.jsx)("source",{src:e,type:"video/mp4"}),"Your browser does not support the video tag."]}),(0,s.jsx)("div",{style:{width:"100%",textAlign:"center",fontSize:"1em",marginTop:"10px"},children:o})]})}},96448:(e,t,n)=>{n.d(t,{A:()=>i});const i=n.p+"assets/images/auto-rename-tag-be192184dd67f581688f906ca00eddaf.png"},85926:(e,t,n)=>{n.d(t,{A:()=>i});const i=n.p+"assets/images/auto-spacing-f95f4ad94872c5fbbee504a125215035.png"},26244:(e,t,n)=>{n.d(t,{A:()=>i});const i=n.p+"assets/images/modify-preferences-6994d4190d47635929047a8206eeb539.png"},38881:(e,t,n)=>{n.d(t,{A:()=>i});const i=n.p+"assets/images/preferences-ebc0e5bb9a61d63304ec17b66910ee4d.png"},28772:(e,t,n)=>{n.d(t,{A:()=>i});const i=n.p+"assets/images/quick-docs-f23cc8636c9a7f8aaec899a6196ed91d.png"},15464:(e,t,n)=>{n.d(t,{A:()=>i});const i="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAbsAAAAnCAYAAACWuuaSAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAvISURBVHhe7Z1/TJT3HcffgCh6eIooiMUp6CL9g6yDjGRtRazdlm4N0mVuTqcBY2tMtiiabY1Tt87WNdsKJltdNBv4Y02ztGXAsq3LZoO6uNYM2uTWlNYCxVILWgsq5y8U9v18n+/z3N3z3B13cHd9ePi8kic83+89Ivd8P/f5/X0uKTf3cyOIgPnzs9Dbe1GNnMtkeZ9Ohdcv8Tj1nrMsOYtk9ZNhGIZhHAsbO4ZhGMbxsLFjGIZhHA8bO4ZhGMbxsLFjGIZhHA8bO4ZhGMbxsLFjGMbWJKcAs7NTcU/BdGTmTsWUqUnqFYaJHN5nZ4L31kxseP0STzzueXJKEpbdPxOFq9zIu8+FpORAA9fbcRPvnL6K/712Bd6Bu2o2trAsOQuO7BiGsRVLv5SOxw/mYfUPFyC/KN1i6Ij5S9KwsjILW3+/FA9tysLU6azKmPCwhDAMYxu++EgGvrUnFxk5U9VMeCilWVIxB+t/sQiu2VPULMNYYWPnWCpR09iARnkcx54yNc0wNqX40Qx8bWu2GkVHdv40bPz1IqTPcabBq6oVn+Nju1GqxjGjbDdeIB1RW6kmnEvCa3alu45jR8lFNFXsRL2cIaVcjvyrbajZ+DROyTkd7TU0fxM76tQUQQu0vQguNSQ6zdeMEafk6enDsTqvy+8+Tw5itn6bnkNjeRZaD2zAvhY1pxPwmpJf9VJQuppRUX1Eyb4rpKxqaxYoy9bPi/2IxT3PL3Zhzd6FSBpD78nNwbtIS0+R5/0f38bRnd1ybryM/31FLhujIWUjM5iOHA3r3+A9W4v1+09rAynLQuiC6l9nYZ/Izl2Eik3qPBy0OMLQ9QmFUFGhjgNtyC5vQE0k/95hSI/P4pUtR26m+NHlsShIeT1HfDHkCHbociiOmrNeMUdOhp98mpRZvnDWrB56JQqFzpmMUE3uK49nj8nQ9XXewu82d+Bs06dyTOnPB9aS8NuB6GUjpsiorRzZwrgZ/19FM/pKqvHCruXaNXU7tXkbGTpdR8Van9vE2HnR2eVFfvlzqFIzwVkulLPQCMIbCvCMW57GerFgsYjsnIwWOfh92A68i4LtbPASSlcXOt3LsMJ8zzcVIv+qV3wSJh/LvpyOjAWR1ej8uT5wFy/v+xC3rg/jtT9cRMP+Hnle/PUMzJybqq6avFStLoJLRGyH9ChOohlgI7KzGyKYoexGPLCJsXMBnhPoRB4e1j2OcGTmxj53bTOkd2PO0av8uubxUHpCS3shr1xFauQs0Hw1it2+ec2L06I979lGX7QnnIR/dblQcH8E91xQVHQf1q1bG9FB1zJByOxHf5B7XiXCus6WE+hT41gxEdaMthhEy/CdEbz8dA+uXb6jZoD3Xh/ES099iOQpSbj3weh/52eHcOKP6dkW7TAiLzOU2fK7btTox52BJeo0OJoeMf4/vYZnPgJ0kfZvjNcCMkv6exktcAmG+L2UUiWHUM3EEhs1qBxBowjzXSUVYW7SaZxsF76vuwg74lGsnVCQh1aL1qvilPL+Mlqjuo51XvPiTqPnsnAr5llFP9hcMNra3kJ393k1Cg1dQ9cywTnp6YKrYEWA8igUEbenMxdja88IzURYM9peEC3NNRdw4b0baqSRkpqEVZuz5PnSkuh/52dFVW01Ctr9Uo0H2oCSaqshI71X6DGuo7RofpjyTb2QM+HxYnU0hkdlyYy/pZl+B4QjptKcltSo0DWZwqk2DN4SZJCjjSzkRpkxqqql2mIXmqo9aia22Kob89T+w0JJi8UJ0xl0av8GLfdNCy89i7F4EJOT+mpNMP29uIeFI9XpibxucObMf3Dp0idqZIVeo2ucgQvF2/08WP0g73M81HkCU5mUwgxSX40Vdl6z6TNTMM1lVUO3vMPqzMobDZ+i/d/X1MjHo9tzkPP56fI8Z2ma/DkRqK82pRVbTqJdOKv5hSY9SE0kfjU+TV8GuU6H6nHSWJHBI9mNtmShR1p62UhEbZuK4BJj3997Gvvq2uDNK1R6WK9TBmnsCodKX3Y2x68Ry1bGTt64FrE4eavCLgoZPJ/XoRZy0kd6EVC2AgXC63IJr1EqbepoFR+gxihqnSMjI0IxnoHXe13N+KA5eo2ucQZetB5QHq7/obzdsXMEHiOVqdWho3E4osXOazZ1hlUFeU4M4PDWDnx8LjByI7re9KLl2CU18vHgd+fi3uUypJCkpiUjTRjSCYWRolRliFHRsjVhyzp6A4qIFr2G8xZZgFC6a5WKtJRsKv1hkdWWHvSNIZLzoRlV6hKNZ9+FzYydQCxOk1AExatDR3cGaiH1SG9LJPW+SYsQKGXcagzh90tPREEwBRlOoTJWKMUkU5lSgXTBE+fmKruuWeq0QBX0wVte/P03ffIRYMd/fB5vt1A+XuNyz238+dmPMDIcaJgLHpgpjZ2ZGe4JYux0I1cOo3msKUJ/quMS6b7R6nICPT2pBwij7asr240tJa7AGr+CUqdGlkMelH50ISPsHovQyPSlpZEm9tjP2AnqmygsLo+49VQP5yOtPU1KKFVGXpreYqyE31MohHU0wQ+COfU1WqqMMVHXiFYsQ8XqZXDFMYXpjx3XzH8/HNnhV5/vxbAyZtSE8peaC2g5ekmmNV/6eQ9u3whMb85fmobynQvUKBDvgK95xb74ohqt5h4dS+a5gKv96FDjUZHBhPgZtslPpStDGCDaByqjRdMxpqhMlVJ8ZSndeOpGNXZlKlsaO61LULzZskKxkGqOCYJKY0RA6XytcG9GFrGNfHt06E0NkTZBMP5Qs5WQ8TxXXFOYZuy2Ztev3JFGjqB9dmt+uhDpGYFPQXn9lcs4uPl9DPTeVjMatL3g23sXyu5LM0M3h8PW/WxDmdaU1Nc7lqhG7c283BPTPXKlu55AsduL1jpT1idULXE86BFnwNEsuzE1oxq7Gp49jZ2gvlq8YXce8v1z13q4b6rPGYvTlDilEW+kERLejrHRnrqgTE+NIWQaIwJjdWq/trUjMH2hCtDReIYm2tvb5cFEz6kz78IbZc00FthpzYZFYHex85YaUcAxFRt+uQjueYEGz2y46MHPa5/KxYzZwVOV3Z4Jkk6X9a5AA0JPzQm618xUqvF1LwbRe7JrMkhkpDeChCxfVKJCpi8PB2kw0ZtR/JrcJJXYY4zHs/UgvtjW2OlbEfwp7WzUrH5AyNugHqcUZfeP3VHpBiM/LozeIeXx+GN0sKp7ETr1q7YkUJuwulamC2h7gsMfE2RbyKuN6N771td3OOdhAN2ewM/5rOxUbPzVYvkzGBQBPvbkPchcOE3NWHn/7KA6szvic0n1c2OvbAO24LB62koglOo8hCeM68I/DvCk0Be0BckkO/Ixd6FTjpoB9WtiMw5lvGQkpj2FxfdaOQrmLVEByNi3HsQb/j47E5PlfToVXr/EM957TtHc5t/mWb7Kh5pU/vhkN/ovBKYvH6rKQsljc9TICtXq6BFid25HpNpCwrLkLBJm7FauXIlt236gRvFjzZrvYGhoSI2ihwV8YsPrl3hicc8f+X4OvvDVWWrk4/rVu3jxJ+dxqVtLdRaumoVvbMuR56F45ZmPcO4N6z68aGFZchYc2ZlgAZ/Y8Polnljcc/peOvqKnqzF1s3gVK97cfd5TJmWhHXPLEJymB0F/zzUh9a/9qvR+GBZchY2rtkxDDNZoJTjn/b2oLfjpprxQU9YqaxdjO89G9rQ0TaFfxzsjZmhY5wHGzuGYWwB1dqO/6gbbX8bMPbaRQI9I/PIzg/w5qsDaoZhrKS43bN+ps7Dkp7uwuCgtUPIaUyW9+lUeP0STyzv+cgw0PHfQbzdotXc6LFfrtnWbx+nPXfnzg7i5NFP5KZzamaJNSxLzoJrdiY4Tz+x4fVLPPG+57Rp3D03FekZKbhx7S6u9A3hztD4Oi0jgWXJWXAak2EYW0P1OIrket65IZ+PmQhDxzgPNnYMwzCM42FjxzAMwzgeNnYMwzCM42FjxzAMwzgeNnYMwzCM42FjxzAMwzgeNnYMwzCMwwH+D8ma2kOw5QK1AAAAAElFTkSuQmCC"},28453:(e,t,n)=>{n.d(t,{R:()=>d,x:()=>r});var i=n(96540);const s={},o=i.createContext(s);function d(e){const t=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function r(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:d(e.components),i.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/33976af9.304a0947.js b/assets/js/33976af9.304a0947.js new file mode 100644 index 00000000..72558e2a --- /dev/null +++ b/assets/js/33976af9.304a0947.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[173],{30553:(e,i,t)=>{t.r(i),t.d(i,{assets:()=>d,contentTitle:()=>l,default:()=>p,frontMatter:()=>a,metadata:()=>s,toc:()=>h});var s=t(62203),n=t(74848),o=t(28453),r=(t(96540),t(56399));const a={slug:"release-5.0",title:"Phoenix Pro Release (January-2026, V-5.0) is now Live",description:"Phoenix Code 5.0 introduces Phoenix Pro with Live Preview Edit, Emmet support, Tab Bar, and Custom Snippets. The biggest update yet.",authors:["arun","charly","devvaannsh","phoenixBot"],tags:["Phoenix Pro","Live Preview Edit","Emmet","Tab Bar","Custom Snippets","Collapse Folders","Smarter hint suggestions","Stability Improvements","Windows","Linux","Mac","Release"]},l=void 0,d={authorsImageUrls:[void 0,void 0,void 0,void 0]},h=[{value:"Phoenix Pro - A Sustainable Future",id:"phoenix-pro---a-sustainable-future",level:2},{value:"Live Preview Edit",id:"live-preview-edit",level:2},{value:"Emmet",id:"emmet",level:2},{value:"Tab Bar",id:"tab-bar",level:2},{value:"Custom Snippets",id:"custom-snippets",level:2},{value:"Collapse Folders",id:"collapse-folders",level:2},{value:"Notable changes and fixes",id:"notable-changes-and-fixes",level:2},{value:"All changes",id:"all-changes",level:2},{value:"A Request from the Phoenix Team:",id:"a-request-from-the-phoenix-team",level:2}];function c(e){const i={a:"a",code:"code",em:"em",h2:"h2",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,o.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(i.p,{children:["2026 January release (5.0) of Phoenix Code is now available for download at ",(0,n.jsx)(i.a,{href:"https://phcode.io",children:"phcode.io"}),"."]}),"\n",(0,n.jsxs)(i.p,{children:["Our biggest update yet - introducing ",(0,n.jsx)(i.code,{children:"Phoenix Pro"})," and major upgrades like ",(0,n.jsx)(i.code,{children:"Live Preview Edit"}),", ",(0,n.jsx)(i.code,{children:"Emmet"}),",\n",(0,n.jsx)(i.code,{children:"Tab Bar"}),", and ",(0,n.jsx)(i.code,{children:"Custom Snippets"}),"."]}),"\n",(0,n.jsx)(i.h2,{id:"phoenix-pro---a-sustainable-future",children:"Phoenix Pro - A Sustainable Future"}),"\n",(0,n.jsxs)(i.p,{children:["Phoenix Code has been free and open source from day one - and ",(0,n.jsx)(i.strong,{children:"everything you\u2019ve used so far will remain free forever"}),", including ",(0,n.jsx)(i.strong,{children:"Live Preview"}),"."]}),"\n",(0,n.jsxs)(i.p,{children:["We\u2019re a small, full-time indie team with ",(0,n.jsx)(i.strong,{children:"no VC backing"}),", building Phoenix Code because we believe the web deserves a\ncode editor that\u2019s genuinely ",(0,n.jsx)(i.strong,{children:"simple and joyful to use"}),". We tried to sustain development through community donations\n(",(0,n.jsx)(i.a,{href:"https://opencollective.com/phoenix-ide",children:"Open Collective"}),"), but over the last few years it hasn\u2019t been enough to\nsupport full-time work - and we reached a hard choice: slow down drastically, or find a sustainable path that keeps Phoenix Code healthy."]}),"\n",(0,n.jsxs)(i.p,{children:["So we\u2019re introducing ",(0,n.jsx)(i.strong,{children:"Phoenix Pro"})," as an ",(0,n.jsx)(i.em,{children:"optional"})," way to support Phoenix Code\u2019s future - with ",(0,n.jsx)(i.strong,{children:"one Pro feature: Live Preview Edit"}),".\nIf Phoenix Code has helped you, Phoenix Pro is a way to help keep the project moving forward."]}),"\n",(0,n.jsxs)(i.p,{children:["Students & educators get ",(0,n.jsx)(i.strong,{children:"Phoenix Pro for Education"})," at no cost, because we want classrooms to have easy\naccess to modern, easy-to-use development tooling. ",(0,n.jsx)(i.a,{href:"https://docs.phcode.dev/docs/phoenix-pro-school",children:"Read More"})]}),"\n",(0,n.jsx)(i.h2,{id:"live-preview-edit",children:"Live Preview Edit"}),"\n",(0,n.jsx)(i.p,{children:(0,n.jsx)(i.em,{children:"Included with Phoenix Pro."})}),"\n",(0,n.jsxs)(i.p,{children:[(0,n.jsx)(i.strong,{children:"Live Preview Edit"})," lets you make changes directly on your page \u2014 and updates your source code instantly."]}),"\n",(0,n.jsx)(i.p,{children:"Edit text, links, and images. Drag & drop to rearrange elements. Cut, copy, paste, and use measurement tools\nto place things precisely."}),"\n",(0,n.jsxs)(i.p,{children:["Learn more: ",(0,n.jsx)(i.a,{href:"https://docs.phcode.dev/docs/Pro%20Features/live-preview-edit",children:"Live Preview Edit"}),", ",(0,n.jsx)(i.a,{href:"https://docs.phcode.dev/docs/Pro%20Features/image-gallery",children:"Image Gallery"}),", ",(0,n.jsx)(i.a,{href:"https://docs.phcode.dev/docs/Pro%20Features/measurements",children:"Measurements"}),"."]}),"\n",(0,n.jsx)(r.A,{src:"https://docs-images.phcode.dev/videos/live-preview-edit/live-preview-edit.mp4"}),"\n",(0,n.jsx)(i.h2,{id:"emmet",children:"Emmet"}),"\n",(0,n.jsxs)(i.p,{children:[(0,n.jsx)(i.strong,{children:"Emmet"})," one of our most requested features is finally here."]}),"\n",(0,n.jsxs)(i.p,{children:["Write Emmet abbreviations and Phoenix Code shows you hints. Select a hint to expand it into a full code snippet. Code faster than ever. ",(0,n.jsx)(i.a,{href:"https://docs.phcode.dev/docs/Features/emmet",children:"Read More"})]}),"\n",(0,n.jsx)(r.A,{src:"https://docs-images.phcode.dev/videos/editing-text/emmet-html.mp4"}),"\n",(0,n.jsx)(i.h2,{id:"tab-bar",children:"Tab Bar"}),"\n",(0,n.jsx)(i.p,{children:"Tab Bar is here. View all your open files at the top of the editor and switch between them instantly."}),"\n",(0,n.jsxs)(i.p,{children:["Choose what works for you -Tab Bar, Working Files, or both at the same time. ",(0,n.jsx)(i.a,{href:"https://docs.phcode.dev/docs/file-management#tab-bar",children:"Read More"})]}),"\n",(0,n.jsx)(i.p,{children:(0,n.jsx)(i.img,{alt:"Tab Bar",src:t(72844).A+"",title:"Tab Bar",width:"1919",height:"1104"})}),"\n",(0,n.jsx)(i.h2,{id:"custom-snippets",children:"Custom Snippets"}),"\n",(0,n.jsx)(i.p,{children:"Define your own code hints with Custom Snippets."}),"\n",(0,n.jsxs)(i.p,{children:["Create hints that expand into full code blocks. You can also add cursor positions so Phoenix Code places your cursor exactly where you need it after expansion. ",(0,n.jsx)(i.a,{href:"https://docs.phcode.dev/docs/Features/custom-snippets",children:"Read More"})]}),"\n",(0,n.jsx)(r.A,{src:"https://docs-images.phcode.dev/videos/custom-snippets/custom-snippets-main.mp4"}),"\n",(0,n.jsx)(i.h2,{id:"collapse-folders",children:"Collapse Folders"}),"\n",(0,n.jsx)(i.p,{children:"After working for some time, your project structure gets messy with lots of open and nested directories."}),"\n",(0,n.jsxs)(i.p,{children:["But no worries now. Phoenix Code supports Collapse All Folders, which lets you reset your view by collapsing all expanded folders to their root level in one click. ",(0,n.jsx)(i.a,{href:"https://docs.phcode.dev/docs/file-management#collapse-all-folders",children:"Read More"})]}),"\n",(0,n.jsx)(r.A,{src:"https://docs-images.phcode.dev/videos/file-management/collapse-folders.mp4"}),"\n",(0,n.jsx)(i.h2,{id:"notable-changes-and-fixes",children:"Notable changes and fixes"}),"\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsx)(i.li,{children:"Improved Live Preview to support internal stylesheets and SVGs better than before."}),"\n",(0,n.jsxs)(i.li,{children:["Smarter color hints. Phoenix Code prioritizes your previously used colors. ",(0,n.jsx)(i.a,{href:"https://docs.phcode.dev/docs/editing-colors#color-hints",children:"Read More"})]}),"\n",(0,n.jsx)(i.li,{children:"Git markers now appear in the scrollbar, making it easier to locate changes in a file."}),"\n",(0,n.jsx)(i.li,{children:"Improved Git so that it doesn't show stale project status."}),"\n",(0,n.jsx)(i.li,{children:"Reduced the number of popups shown when first installing Phoenix."}),"\n",(0,n.jsx)(i.li,{children:"Fixed an issue where macOS/iOS and browser autocorrect or smart keyboards altered filenames during renames."}),"\n",(0,n.jsx)(i.li,{children:"Added a dialog to notify users when they have security compromised extensions installed."}),"\n",(0,n.jsx)(i.li,{children:"Slowed down the Quick View popup on hover as it was interfering with user workflows."}),"\n",(0,n.jsx)(i.li,{children:"Fixed ghost image appearing in Safari when dragging from CodeMirror."}),"\n",(0,n.jsx)(i.li,{children:"Long names in Working Files are now truncated for better readability."}),"\n",(0,n.jsx)(i.li,{children:"Added Horizontal Scroll support. Use Shift + mouse scroll."}),"\n"]}),"\n",(0,n.jsx)(i.h2,{id:"all-changes",children:"All changes"}),"\n",(0,n.jsxs)(i.p,{children:["Please see ",(0,n.jsx)(i.a,{href:"https://github.com/phcode-dev/phoenix/commits/main/?since=2025-01-30&until=2026-01-18",children:"this link"})," for a full list of changes\nin GitHub."]}),"\n",(0,n.jsx)(i.h2,{id:"a-request-from-the-phoenix-team",children:"A Request from the Phoenix Team:"}),"\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.strong,{children:"Share your feedback:"})," ",(0,n.jsx)(i.a,{href:"https://github.com/orgs/phcode-dev/discussions",children:"https://github.com/orgs/phcode-dev/discussions"})]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.strong,{children:"Spread the word"})," about Phoenix to friends and colleagues."]}),"\n"]}),"\n",(0,n.jsx)(i.p,{children:"With gratitude,"}),"\n",(0,n.jsx)(i.p,{children:"The Phoenix Team"})]})}function p(e={}){const{wrapper:i}={...(0,o.R)(),...e.components};return i?(0,n.jsx)(i,{...e,children:(0,n.jsx)(c,{...e})}):c(e)}},56399:(e,i,t)=>{t.d(i,{A:()=>o});var s=t(96540),n=t(74848);const o=({src:e,winLinuxTitle:i,macTitle:t})=>{const[o,r]=(0,s.useState)("");(0,s.useEffect)((()=>{navigator.platform.toLowerCase().includes("mac")?r(t):r(i)}),[i,t]);return(0,n.jsxs)("div",{style:{maxHeight:"68vh",width:"100%",display:"flex",justifyContent:"center",alignItems:"center",flexDirection:"column"},children:[(0,n.jsxs)("video",{style:{height:"90%",width:"100%"},controls:!0,autoPlay:!0,muted:!0,loop:!0,children:[(0,n.jsx)("source",{src:e,type:"video/mp4"}),"Your browser does not support the video tag."]}),(0,n.jsx)("div",{style:{width:"100%",textAlign:"center",fontSize:"1em",marginTop:"10px"},children:o})]})}},72844:(e,i,t)=>{t.d(i,{A:()=>s});const s=t.p+"assets/images/tab-bar-801b0cfbb476f004a8e738a49d8ae35a.png"},28453:(e,i,t)=>{t.d(i,{R:()=>r,x:()=>a});var s=t(96540);const n={},o=s.createContext(n);function r(e){const i=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function a(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:r(e.components),s.createElement(o.Provider,{value:i},e.children)}},62203:e=>{e.exports=JSON.parse('{"permalink":"/blog/release-5.0","editUrl":"https://github.com/phcode-dev/docs/blob/main/blog/2026-01-18-Release-5.0/index.md","source":"@site/blog/2026-01-18-Release-5.0/index.md","title":"Phoenix Pro Release (January-2026, V-5.0) is now Live","description":"Phoenix Code 5.0 introduces Phoenix Pro with Live Preview Edit, Emmet support, Tab Bar, and Custom Snippets. The biggest update yet.","date":"2026-01-18T00:00:00.000Z","tags":[{"inline":true,"label":"Phoenix Pro","permalink":"/blog/tags/phoenix-pro"},{"inline":true,"label":"Live Preview Edit","permalink":"/blog/tags/live-preview-edit"},{"inline":true,"label":"Emmet","permalink":"/blog/tags/emmet"},{"inline":true,"label":"Tab Bar","permalink":"/blog/tags/tab-bar"},{"inline":true,"label":"Custom Snippets","permalink":"/blog/tags/custom-snippets"},{"inline":true,"label":"Collapse Folders","permalink":"/blog/tags/collapse-folders"},{"inline":true,"label":"Smarter hint suggestions","permalink":"/blog/tags/smarter-hint-suggestions"},{"inline":true,"label":"Stability Improvements","permalink":"/blog/tags/stability-improvements"},{"inline":true,"label":"Windows","permalink":"/blog/tags/windows"},{"inline":true,"label":"Linux","permalink":"/blog/tags/linux"},{"inline":true,"label":"Mac","permalink":"/blog/tags/mac"},{"inline":true,"label":"Release","permalink":"/blog/tags/release"}],"readingTime":3.73,"hasTruncateMarker":false,"authors":[{"name":"Arun Bose","title":"Co-Founder, Phoenix Code","url":"https://github.com/abose","imageURL":"https://github.com/abose.png","key":"arun","page":null},{"name":"Charly P Abraham","title":"Co-Founder, Phoenix Code","url":"https://github.com/charlypa","imageURL":"https://github.com/charlypa.png","key":"charly","page":null},{"name":"Devansh Agarwal","title":"Founding Engineer, Phoenix Code","url":"https://github.com/devvaannsh","imageURL":"https://github.com/devvaannsh.png","key":"devvaannsh","page":null},{"name":"Phoenix Code Bot","title":"Our little elf who keeps the whole place together","url":"https://github.com/phoenixide","imageURL":"https://github.com/phoenixide.png","key":"phoenixBot","page":null}],"frontMatter":{"slug":"release-5.0","title":"Phoenix Pro Release (January-2026, V-5.0) is now Live","description":"Phoenix Code 5.0 introduces Phoenix Pro with Live Preview Edit, Emmet support, Tab Bar, and Custom Snippets. The biggest update yet.","authors":["arun","charly","devvaannsh","phoenixBot"],"tags":["Phoenix Pro","Live Preview Edit","Emmet","Tab Bar","Custom Snippets","Collapse Folders","Smarter hint suggestions","Stability Improvements","Windows","Linux","Mac","Release"]},"unlisted":false,"prevItem":{"title":"Brackets Editor in 2026: Phoenix Code Picks Up Where It Left Off","permalink":"/blog/brackets-editor-phoenix-code"},"nextItem":{"title":"Git It Release (January-2025, V-4.0) is now Live","permalink":"/blog/release-4.0"}}')}}]); \ No newline at end of file diff --git a/assets/js/3490.3238dc6d.js b/assets/js/3490.3238dc6d.js new file mode 100644 index 00000000..78008e00 --- /dev/null +++ b/assets/js/3490.3238dc6d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3490],{3490:(e,s,c)=>{c.d(s,{createInfoServices:()=>a.v});var a=c(91885);c(87960)}}]); \ No newline at end of file diff --git a/assets/js/360dc931.3dab8a36.js b/assets/js/360dc931.3dab8a36.js new file mode 100644 index 00000000..39ce82b8 --- /dev/null +++ b/assets/js/360dc931.3dab8a36.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6600],{27146:s=>{s.exports=JSON.parse('{"name":"docusaurus-plugin-content-docs","id":"api"}')}}]); \ No newline at end of file diff --git a/assets/js/3624.c6ef569b.js b/assets/js/3624.c6ef569b.js new file mode 100644 index 00000000..d3f242dc --- /dev/null +++ b/assets/js/3624.c6ef569b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3624],{62062:(t,n,r)=>{r.d(n,{A:()=>a});var e=r(29471);const o=function(t){return this.__data__.set(t,"__lodash_hash_undefined__"),this};const c=function(t){return this.__data__.has(t)};function u(t){var n=-1,r=null==t?0:t.length;for(this.__data__=new e.A;++n{r.d(n,{A:()=>e});const e=function(t,n){for(var r=-1,e=null==t?0:t.length;++r{r.d(n,{A:()=>e});const e=function(t,n){for(var r=-1,e=null==t?0:t.length,o=0,c=[];++r{r.d(n,{A:()=>o});var e=r(60818);const o=function(t,n){return!!(null==t?0:t.length)&&(0,e.A)(t,n,0)>-1}},87809:(t,n,r)=>{r.d(n,{A:()=>e});const e=function(t,n,r){for(var e=-1,o=null==t?0:t.length;++e{r.d(n,{A:()=>e});const e=function(t,n){for(var r=-1,e=null==t?0:t.length,o=Array(e);++r{r.d(n,{A:()=>e});const e=function(t,n){for(var r=-1,e=n.length,o=t.length;++r{r.d(n,{A:()=>e});const e=function(t,n){for(var r=-1,e=null==t?0:t.length;++r{r.d(n,{A:()=>Q});var e=r(11754),o=r(72641),c=r(52851),u=r(22031),a=r(27422);const i=function(t,n){return t&&(0,u.A)(n,(0,a.A)(n),t)};var f=r(55615);const A=function(t,n){return t&&(0,u.A)(n,(0,f.A)(n),t)};var s=r(80154),v=r(39759),l=r(14792);const b=function(t,n){return(0,u.A)(t,(0,l.A)(t),n)};var d=r(83511);const j=function(t,n){return(0,u.A)(t,(0,d.A)(t),n)};var y=r(19042),p=r(83973),h=r(9779),g=Object.prototype.hasOwnProperty;const w=function(t){var n=t.length,r=new t.constructor(n);return n&&"string"==typeof t[0]&&g.call(t,"index")&&(r.index=t.index,r.input=t.input),r};var _=r(90565);const O=function(t,n){var r=n?(0,_.A)(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.byteLength)};var m=/\w*$/;const S=function(t){var n=new t.constructor(t.source,m.exec(t));return n.lastIndex=t.lastIndex,n};var I=r(241),k=I.A?I.A.prototype:void 0,E=k?k.valueOf:void 0;const x=function(t){return E?Object(E.call(t)):{}};var U=r(1801);const B=function(t,n,r){var e=t.constructor;switch(n){case"[object ArrayBuffer]":return(0,_.A)(t);case"[object Boolean]":case"[object Date]":return new e(+t);case"[object DataView]":return O(t,r);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return(0,U.A)(t,r);case"[object Map]":case"[object Set]":return new e;case"[object Number]":case"[object String]":return new e(t);case"[object RegExp]":return S(t);case"[object Symbol]":return x(t)}};var C=r(18598),D=r(92049),F=r(99912),M=r(53098);const z=function(t){return(0,M.A)(t)&&"[object Map]"==(0,h.A)(t)};var L=r(52789),P=r(64841),$=P.A&&P.A.isMap;const N=$?(0,L.A)($):z;var R=r(23149);const V=function(t){return(0,M.A)(t)&&"[object Set]"==(0,h.A)(t)};var G=P.A&&P.A.isSet;const W=G?(0,L.A)(G):V;var q="[object Arguments]",H="[object Function]",J="[object Object]",K={};K[q]=K["[object Array]"]=K["[object ArrayBuffer]"]=K["[object DataView]"]=K["[object Boolean]"]=K["[object Date]"]=K["[object Float32Array]"]=K["[object Float64Array]"]=K["[object Int8Array]"]=K["[object Int16Array]"]=K["[object Int32Array]"]=K["[object Map]"]=K["[object Number]"]=K[J]=K["[object RegExp]"]=K["[object Set]"]=K["[object String]"]=K["[object Symbol]"]=K["[object Uint8Array]"]=K["[object Uint8ClampedArray]"]=K["[object Uint16Array]"]=K["[object Uint32Array]"]=!0,K["[object Error]"]=K[H]=K["[object WeakMap]"]=!1;const Q=function t(n,r,u,l,d,g){var _,O=1&r,m=2&r,S=4&r;if(u&&(_=d?u(n,l,d,g):u(n)),void 0!==_)return _;if(!(0,R.A)(n))return n;var I=(0,D.A)(n);if(I){if(_=w(n),!O)return(0,v.A)(n,_)}else{var k=(0,h.A)(n),E=k==H||"[object GeneratorFunction]"==k;if((0,F.A)(n))return(0,s.A)(n,O);if(k==J||k==q||E&&!d){if(_=m||E?{}:(0,C.A)(n),!O)return m?j(n,A(_,n)):b(n,i(_,n))}else{if(!K[k])return d?n:{};_=B(n,k,O)}}g||(g=new e.A);var x=g.get(n);if(x)return x;g.set(n,_),W(n)?n.forEach((function(e){_.add(t(e,r,u,e,n,g))})):N(n)&&n.forEach((function(e,o){_.set(o,t(e,r,u,o,n,g))}));var U=S?m?p.A:y.A:m?f.A:a.A,M=I?void 0:U(n);return(0,o.A)(M||n,(function(e,o){M&&(e=n[o=e]),(0,c.A)(_,o,t(e,r,u,o,n,g))})),_}},6240:(t,n,r)=>{r.d(n,{A:()=>c});var e=r(79841),o=r(38446);const c=function(t,n){return function(r,e){if(null==r)return r;if(!(0,o.A)(r))return t(r,e);for(var c=r.length,u=n?c:-1,a=Object(r);(n?u--:++u{r.d(n,{A:()=>o});var e=r(6240);const o=function(t,n){var r=[];return(0,e.A)(t,(function(t,e,o){n(t,e,o)&&r.push(t)})),r}},25707:(t,n,r)=>{r.d(n,{A:()=>e});const e=function(t,n,r,e){for(var o=t.length,c=r+(e?1:-1);e?c--:++c{r.d(n,{A:()=>f});var e=r(76912),o=r(241),c=r(52274),u=r(92049),a=o.A?o.A.isConcatSpreadable:void 0;const i=function(t){return(0,u.A)(t)||(0,c.A)(t)||!!(a&&t&&t[a])};const f=function t(n,r,o,c,u){var a=-1,f=n.length;for(o||(o=i),u||(u=[]);++a0&&o(A)?r>1?t(A,r-1,o,c,u):(0,e.A)(u,A):c||(u[u.length]=A)}return u}},79841:(t,n,r)=>{r.d(n,{A:()=>c});var e=r(4574),o=r(27422);const c=function(t,n){return t&&(0,e.A)(t,n,o.A)}},66318:(t,n,r)=>{r.d(n,{A:()=>c});var e=r(7819),o=r(30901);const c=function(t,n){for(var r=0,c=(n=(0,e.A)(n,t)).length;null!=t&&r{r.d(n,{A:()=>c});var e=r(76912),o=r(92049);const c=function(t,n,r){var c=n(t);return(0,o.A)(t)?c:(0,e.A)(c,r(t))}},60818:(t,n,r)=>{r.d(n,{A:()=>u});var e=r(25707);const o=function(t){return t!=t};const c=function(t,n,r){for(var e=r-1,o=t.length;++e{r.d(n,{A:()=>J});var e=r(11754),o=r(62062),c=r(63736),u=r(64099);const a=function(t,n,r,e,a,i){var f=1&r,A=t.length,s=n.length;if(A!=s&&!(f&&s>A))return!1;var v=i.get(t),l=i.get(n);if(v&&l)return v==n&&l==t;var b=-1,d=!0,j=2&r?new o.A:void 0;for(i.set(t,n),i.set(n,t);++b{r.d(n,{A:()=>e});const e=function(t){return function(n){return null==n?void 0:n[t]}}},99902:(t,n,r)=>{r.d(n,{A:()=>s});var e=r(62062),o=r(83149),c=r(87809),u=r(64099),a=r(39857),i=r(42302),f=r(29959);const A=a.A&&1/(0,f.A)(new a.A([,-0]))[1]==1/0?function(t){return new a.A(t)}:i.A;const s=function(t,n,r){var a=-1,i=o.A,s=t.length,v=!0,l=[],b=l;if(r)v=!1,i=c.A;else if(s>=200){var d=n?null:A(t);if(d)return(0,f.A)(d);v=!1,i=u.A,b=new e.A}else b=n?[]:l;t:for(;++a{r.d(n,{A:()=>e});const e=function(t,n){return t.has(n)}},99922:(t,n,r)=>{r.d(n,{A:()=>o});var e=r(29008);const o=function(t){return"function"==typeof t?t:e.A}},7819:(t,n,r)=>{r.d(n,{A:()=>A});var e=r(92049),o=r(86586),c=r(46632);var u=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,a=/\\(\\)?/g;const i=function(t){var n=(0,c.A)(t,(function(t){return 500===r.size&&r.clear(),t})),r=n.cache;return n}((function(t){var n=[];return 46===t.charCodeAt(0)&&n.push(""),t.replace(u,(function(t,r,e,o){n.push(e?o.replace(a,"$1"):r||t)})),n}));var f=r(28894);const A=function(t,n){return(0,e.A)(t)?t:(0,o.A)(t,n)?[t]:i((0,f.A)(t))}},19042:(t,n,r)=>{r.d(n,{A:()=>u});var e=r(33831),o=r(14792),c=r(27422);const u=function(t){return(0,e.A)(t,c.A,o.A)}},83973:(t,n,r)=>{r.d(n,{A:()=>u});var e=r(33831),o=r(83511),c=r(55615);const u=function(t){return(0,e.A)(t,c.A,o.A)}},14792:(t,n,r)=>{r.d(n,{A:()=>a});var e=r(2634),o=r(13153),c=Object.prototype.propertyIsEnumerable,u=Object.getOwnPropertySymbols;const a=u?function(t){return null==t?[]:(t=Object(t),(0,e.A)(u(t),(function(n){return c.call(t,n)})))}:o.A},83511:(t,n,r)=>{r.d(n,{A:()=>a});var e=r(76912),o=r(15647),c=r(14792),u=r(13153);const a=Object.getOwnPropertySymbols?function(t){for(var n=[];t;)(0,e.A)(n,(0,c.A)(t)),t=(0,o.A)(t);return n}:u.A},85054:(t,n,r)=>{r.d(n,{A:()=>f});var e=r(7819),o=r(52274),c=r(92049),u=r(25353),a=r(5254),i=r(30901);const f=function(t,n,r){for(var f=-1,A=(n=(0,e.A)(n,t)).length,s=!1;++f{r.d(n,{A:()=>a});var e=r(92049),o=r(61882),c=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,u=/^\w*$/;const a=function(t,n){if((0,e.A)(t))return!1;var r=typeof t;return!("number"!=r&&"symbol"!=r&&"boolean"!=r&&null!=t&&!(0,o.A)(t))||(u.test(t)||!c.test(t)||null!=n&&t in Object(n))}},29959:(t,n,r)=>{r.d(n,{A:()=>e});const e=function(t){var n=-1,r=Array(t.size);return t.forEach((function(t){r[++n]=t})),r}},30901:(t,n,r)=>{r.d(n,{A:()=>o});var e=r(61882);const o=function(t){if("string"==typeof t||(0,e.A)(t))return t;var n=t+"";return"0"==n&&1/t==-Infinity?"-0":n}},94092:(t,n,r)=>{r.d(n,{A:()=>a});var e=r(2634),o=r(51790),c=r(23958),u=r(92049);const a=function(t,n){return((0,u.A)(t)?e.A:o.A)(t,(0,c.A)(n,3))}},8058:(t,n,r)=>{r.d(n,{A:()=>a});var e=r(72641),o=r(6240),c=r(99922),u=r(92049);const a=function(t,n){return((0,u.A)(t)?e.A:o.A)(t,(0,c.A)(n))}},39188:(t,n,r)=>{r.d(n,{A:()=>c});const e=function(t,n){return null!=t&&n in Object(t)};var o=r(85054);const c=function(t,n){return null!=t&&(0,o.A)(t,n,e)}},61882:(t,n,r)=>{r.d(n,{A:()=>c});var e=r(88496),o=r(53098);const c=function(t){return"symbol"==typeof t||(0,o.A)(t)&&"[object Symbol]"==(0,e.A)(t)}},69592:(t,n,r)=>{r.d(n,{A:()=>e});const e=function(t){return void 0===t}},27422:(t,n,r)=>{r.d(n,{A:()=>u});var e=r(83607),o=r(69471),c=r(38446);const u=function(t){return(0,c.A)(t)?(0,e.A)(t):(0,o.A)(t)}},42302:(t,n,r)=>{r.d(n,{A:()=>e});const e=function(){}},89463:(t,n,r)=>{r.d(n,{A:()=>i});const e=function(t,n,r,e){var o=-1,c=null==t?0:t.length;for(e&&c&&(r=t[++o]);++o{r.d(n,{A:()=>e});const e=function(){return[]}},28894:(t,n,r)=>{r.d(n,{A:()=>A});var e=r(241),o=r(45572),c=r(92049),u=r(61882),a=e.A?e.A.prototype:void 0,i=a?a.toString:void 0;const f=function t(n){if("string"==typeof n)return n;if((0,c.A)(n))return(0,o.A)(n,t)+"";if((0,u.A)(n))return i?i.call(n):"";var r=n+"";return"0"==r&&1/n==-Infinity?"-0":r};const A=function(t){return null==t?"":f(t)}},38207:(t,n,r)=>{r.d(n,{A:()=>u});var e=r(45572);const o=function(t,n){return(0,e.A)(n,(function(n){return t[n]}))};var c=r(27422);const u=function(t){return null==t?[]:o(t,(0,c.A)(t))}}}]); \ No newline at end of file diff --git a/assets/js/36994c47.dd8cfa67.js b/assets/js/36994c47.dd8cfa67.js new file mode 100644 index 00000000..3cab2f72 --- /dev/null +++ b/assets/js/36994c47.dd8cfa67.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9858],{45516:s=>{s.exports=JSON.parse('{"name":"docusaurus-plugin-content-blog","id":"default"}')}}]); \ No newline at end of file diff --git a/assets/js/377d6e83.22863364.js b/assets/js/377d6e83.22863364.js new file mode 100644 index 00000000..2b94cf2b --- /dev/null +++ b/assets/js/377d6e83.22863364.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2976],{4571:(e,i,n)=>{n.r(i),n.d(i,{assets:()=>l,contentTitle:()=>d,default:()=>p,frontMatter:()=>a,metadata:()=>o,toc:()=>h});var o=n(26470),t=n(74848),s=n(28453),r=(n(96540),n(56399));const a={slug:"release-5.1",title:"Phoenix Code 5.1: AI, Design Mode & More",description:"Phoenix Code 5.1 introduces an AI assistant powered by Claude Code, a brand new Design Mode, a rich Markdown editor, an integrated terminal, and Phoenix Neo themes.",authors:["arun","charly","devvaannsh","electrofist","ansu","phoenixBot"],tags:["AI","Claude Code","Design Mode","Markdown Editor","Terminal","Live Preview Edit","Phoenix Pro","Phoenix Neo","Windows","Linux","Mac","Release"]},d=void 0,l={authorsImageUrls:[void 0,void 0,void 0,void 0,void 0,void 0]},h=[{value:"AI with visual and runtime context",id:"ai-with-visual-and-runtime-context",level:2},{value:"Design Mode",id:"design-mode",level:2},{value:"Rich Markdown Editor",id:"rich-markdown-editor",level:2},{value:"Live Preview Edit Upgrades",id:"live-preview-edit-upgrades",level:2},{value:"View your page at any device size",id:"view-your-page-at-any-device-size",level:2},{value:"Built-in Terminal",id:"built-in-terminal",level:2},{value:"New Linux Platform",id:"new-linux-platform",level:2},{value:"All Your Tools, One Place",id:"all-your-tools-one-place",level:2},{value:"Phoenix Neo Themes",id:"phoenix-neo-themes",level:2},{value:"Notable changes and fixes",id:"notable-changes-and-fixes",level:2},{value:"Performance & Stability",id:"performance--stability",level:2},{value:"Platform Notes",id:"platform-notes",level:2},{value:"Linux",id:"linux",level:3},{value:"macOS",id:"macos",level:3},{value:"Windows",id:"windows",level:3},{value:"All changes",id:"all-changes",level:2},{value:"A Request from the Phoenix Team:",id:"a-request-from-the-phoenix-team",level:2}];function c(e){const i={a:"a",code:"code",h2:"h2",h3:"h3",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(i.p,{children:["Phoenix Code 5.1 is now available at ",(0,t.jsx)(i.a,{href:"https://phcode.io",children:"phcode.io"}),"."]}),"\n",(0,t.jsxs)(i.p,{children:["This release brings AI into the editor with ",(0,t.jsx)(i.a,{href:"#try-ideas-build-pages-and-fix-issues-with-ai",children:"Claude Code"}),", a new ",(0,t.jsx)(i.a,{href:"#design-mode",children:"Design Mode"})," for visual editing, a rich ",(0,t.jsx)(i.a,{href:"#rich-markdown-editor",children:"Markdown editor"}),", a built-in ",(0,t.jsx)(i.a,{href:"#built-in-terminal",children:"terminal"}),", responsive ",(0,t.jsx)(i.a,{href:"#view-your-page-at-any-device-size",children:"device previews"}),", a ",(0,t.jsx)(i.a,{href:"#linux",children:"rebuilt Linux app"}),", and a fresh new look with the ",(0,t.jsx)(i.a,{href:"#phoenix-neo-themes",children:"Phoenix Neo"})," themes."]}),"\n",(0,t.jsx)(i.h2,{id:"ai-with-visual-and-runtime-context",children:"AI with visual and runtime context"}),"\n",(0,t.jsx)(i.p,{children:"Phoenix Code now includes an AI assistant powered by Claude Code, designed to support your creative workflow - not replace it."}),"\n",(0,t.jsx)(i.p,{children:"Most AI coding agents only read source code. AI in Phoenix Code looks at the rendered page too. It sees what the browser shows you, not just what the stylesheet or code implies."}),"\n",(0,t.jsx)(i.p,{children:"Ask why a layout feels off, fix tricky CSS issues, improve spacing or typography, or attach files and screenshots to show exactly what you mean. Bring AI in when you need it, and keep creating without leaving your flow."}),"\n",(0,t.jsx)(r.A,{src:"https://docs-images.phcode.dev/website/videos/ai-pro-dialog.mp4"}),"\n",(0,t.jsx)(i.h2,{id:"design-mode",children:"Design Mode"}),"\n",(0,t.jsxs)(i.p,{children:["Focus fully on your content while your code stays out of the way. Work side by side with AI and Live Preview. Edit content visually, whether you're building web pages or Markdown documents. ",(0,t.jsx)(i.a,{href:"https://docs.phcode.dev/app-links/design-mode",children:"Read More..."})]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{src:"https://docs-images.phcode.dev/in-app/pro-designMode.png",alt:"Design Mode"})}),"\n",(0,t.jsx)(i.h2,{id:"rich-markdown-editor",children:"Rich Markdown Editor"}),"\n",(0,t.jsx)(i.p,{children:"Edit Markdown like a document in Live Preview. Format text, edit tables, and it\u2019s easy to add images - just paste or pick one from your device, like in Google Docs or Word."}),"\n",(0,t.jsxs)(i.p,{children:["An easier way to create Markdown files that you can share with others. ",(0,t.jsx)(i.a,{href:"https://docs.phcode.dev/app-links/markdown-editor",children:"Read More..."})]}),"\n",(0,t.jsx)(r.A,{src:"https://docs-images.phcode.dev/website/videos/markdown-pro-dialog.mp4"}),"\n",(0,t.jsx)(i.h2,{id:"live-preview-edit-upgrades",children:"Live Preview Edit Upgrades"}),"\n",(0,t.jsxs)(i.p,{children:["Live Preview Edit just got a major upgrade. You can format text with bold, italics, and more. Add new elements and update tags, classes, and attributes, all directly in Live Preview. ",(0,t.jsx)(i.a,{href:"https://docs.phcode.dev/app-links/live-preview-edit",children:"Read More..."})]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{src:"https://docs-images.phcode.dev/in-app/pro-controlBox.png",alt:"Live Preview Edit"})}),"\n",(0,t.jsx)(i.h2,{id:"view-your-page-at-any-device-size",children:"View your page at any device size"}),"\n",(0,t.jsx)(i.p,{children:"Now you can quickly see how your page looks at different device sizes right inside Phoenix Code with a single click."}),"\n",(0,t.jsxs)(i.p,{children:["Phoenix Code also picks up your CSS ",(0,t.jsx)(i.code,{children:"@media"})," breakpoints so you can jump straight to where your layout switches. ",(0,t.jsx)(i.a,{href:"https://docs.phcode.dev/app-links/resize-ruler",children:"Read More..."})]}),"\n",(0,t.jsx)(r.A,{src:"https://docs-images.phcode.dev/website/videos/device-size-pro-dialog.mp4"}),"\n",(0,t.jsx)(i.h2,{id:"built-in-terminal",children:"Built-in Terminal"}),"\n",(0,t.jsxs)(i.p,{children:["Phoenix Code now has a built-in tabbed terminal, so you can run commands right next to your code without switching windows. It supports your preferred shell and works across all supported platforms. ",(0,t.jsx)(i.a,{href:"https://docs.phcode.dev/app-links/terminal",children:"Read More..."})]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{src:"https://docs-images.phcode.dev/in-app/terminal.png",alt:"Built-in Terminal"})}),"\n",(0,t.jsx)(i.h2,{id:"new-linux-platform",children:"New Linux Platform"}),"\n",(0,t.jsx)(i.p,{children:"Phoenix Code for Linux has been rebuilt from the ground up."}),"\n",(0,t.jsx)(i.p,{children:"The previous Linux app was harder to install and didn\u2019t match the experience we wanted to deliver. We heard that feedback loud and clear. This release is powered by a brand-new Linux platform, bringing faster performance, easier installation, and a desktop experience that now stands alongside Windows and macOS."}),"\n",(0,t.jsx)(i.h2,{id:"all-your-tools-one-place",children:"All Your Tools, One Place"}),"\n",(0,t.jsxs)(i.p,{children:["We've changed how the Bottom Panel works to make it easier to access all your tools with a new tools drawer interface. Git, Terminal, Problems, and more are now all in one place. You can switch between them instantly or open multiple tools at once. ",(0,t.jsx)(i.a,{href:"https://docs.phcode.dev/app-links/git",children:"Read More..."})]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{src:"https://docs-images.phcode.dev/in-app/bottom-panel.png",alt:"Bottom Panel"})}),"\n",(0,t.jsx)(i.h2,{id:"phoenix-neo-themes",children:"Phoenix Neo Themes"}),"\n",(0,t.jsxs)(i.p,{children:["Meet ",(0,t.jsx)(i.code,{children:"Phoenix Dark Neo"})," and ",(0,t.jsx)(i.code,{children:"Phoenix Light Neo"}),", the redesigned default themes with a cleaner, modernized look."]}),"\n",(0,t.jsxs)(i.p,{children:["Switch between them anytime from ",(0,t.jsx)(i.code,{children:"View > Themes..."}),". ",(0,t.jsx)(i.a,{href:"https://docs.phcode.dev/app-links/themes",children:"Read More..."})]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{src:"https://docs-images.phcode.dev/in-app/themes-settings.png",alt:"Themes"})}),"\n",(0,t.jsx)(i.h2,{id:"notable-changes-and-fixes",children:"Notable changes and fixes"}),"\n",(0,t.jsxs)(i.ul,{children:["\n",(0,t.jsxs)(i.li,{children:["Prevented an out-of-memory crash that could occur while indexing very large projects \u2014 Phoenix now detects binary files and caps its index cache so big repos stay smooth. (",(0,t.jsx)(i.a,{href:"https://github.com/phcode-dev/phoenix/pull/2801",children:"#2801"}),")"]}),"\n",(0,t.jsxs)(i.li,{children:["Phoenix now recovers gracefully from a corrupted local database instead of crashing on startup. (",(0,t.jsx)(i.a,{href:"https://github.com/phcode-dev/phoenix/pull/2782",children:"#2782"}),")"]}),"\n",(0,t.jsxs)(i.li,{children:['Fixed a reflected XSS issue on the "browser not supported" page. (',(0,t.jsx)(i.a,{href:"https://github.com/phcode-dev/phoenix/pull/2851",children:"#2851"}),")"]}),"\n",(0,t.jsxs)(i.li,{children:["Fixed ",(0,t.jsx)(i.code,{children:"File > Quit"})," not closing multi-window sessions on the desktop app. (",(0,t.jsx)(i.a,{href:"https://github.com/phcode-dev/phoenix/pull/2639",children:"#2639"}),")"]}),"\n",(0,t.jsxs)(i.li,{children:["Fixed a thin white line at the edges of Live Preview. (",(0,t.jsx)(i.a,{href:"https://github.com/phcode-dev/phoenix/pull/2855",children:"#2855"}),")"]}),"\n",(0,t.jsxs)(i.li,{children:["Fixed a modal overlay that could remain on screen when dialogs opened in quick succession. (",(0,t.jsx)(i.a,{href:"https://github.com/phcode-dev/phoenix/pull/2789",children:"#2789"}),")"]}),"\n",(0,t.jsxs)(i.li,{children:["Fixed Find in Files button placement when the input boxes were empty. (",(0,t.jsx)(i.a,{href:"https://github.com/phcode-dev/phoenix/pull/2680",children:"#2680"}),")"]}),"\n",(0,t.jsxs)(i.li,{children:["Fixed an issue where some pro trial users were being signed out early. (",(0,t.jsx)(i.a,{href:"https://github.com/phcode-dev/phoenix/pull/2658",children:"#2658"}),")"]}),"\n"]}),"\n",(0,t.jsx)(i.h2,{id:"performance--stability",children:"Performance & Stability"}),"\n",(0,t.jsxs)(i.ul,{children:["\n",(0,t.jsxs)(i.li,{children:["Sidebar layout is now preserved across hide and show, making expansion feel near-instant. (",(0,t.jsx)(i.a,{href:"https://github.com/phcode-dev/phoenix/pull/2834",children:"#2834"}),")"]}),"\n",(0,t.jsxs)(i.li,{children:["Fixed a race condition during Live Preview load that could cause a stale page to overwrite a fresh one. (",(0,t.jsx)(i.a,{href:"https://github.com/phcode-dev/phoenix/pull/2668",children:"#2668"}),")"]}),"\n",(0,t.jsxs)(i.li,{children:["Tightened Live Preview document handling and reduced editor event leaks. (",(0,t.jsx)(i.a,{href:"https://github.com/phcode-dev/phoenix/pull/2671",children:"#2671"}),")"]}),"\n",(0,t.jsxs)(i.li,{children:["Improved Live Preview edit performance for larger pages. (",(0,t.jsx)(i.a,{href:"https://github.com/phcode-dev/phoenix/pull/2793",children:"#2793"}),")"]}),"\n",(0,t.jsxs)(i.li,{children:["Smoother scrollbar behavior in the sidebar. (",(0,t.jsx)(i.a,{href:"https://github.com/phcode-dev/phoenix/pull/2726",children:"#2726"}),", ",(0,t.jsx)(i.a,{href:"https://github.com/phcode-dev/phoenix/pull/2727",children:"#2727"}),")"]}),"\n"]}),"\n",(0,t.jsx)(i.h2,{id:"platform-notes",children:"Platform Notes"}),"\n",(0,t.jsx)(i.h3,{id:"linux",children:"Linux"}),"\n",(0,t.jsxs)(i.ul,{children:["\n",(0,t.jsxs)(i.li,{children:["The desktop app is now built on a ",(0,t.jsx)(i.strong,{children:"Chromium-based renderer"}),", replacing the previous WebKit2GTK build (which was painfully slow). It ships as a ",(0,t.jsx)(i.strong,{children:"single AppImage"})," that runs across most major distributions, and now supports ",(0,t.jsx)(i.strong,{children:"auto-update"}),", bringing it to parity with macOS and Windows. (",(0,t.jsx)(i.a,{href:"https://github.com/phcode-dev/phoenix/pull/2635",children:"#2635"}),", ",(0,t.jsx)(i.a,{href:"https://github.com/phcode-dev/phoenix/pull/2637",children:"#2637"}),", ",(0,t.jsx)(i.a,{href:"https://github.com/phcode-dev/phoenix/pull/2651",children:"#2651"}),")"]}),"\n"]}),"\n",(0,t.jsx)(i.h3,{id:"macos",children:"macOS"}),"\n",(0,t.jsxs)(i.ul,{children:["\n",(0,t.jsxs)(i.li,{children:['Avoided the Xcode "git install" dialog popping up at startup on Macs without git. (',(0,t.jsx)(i.a,{href:"https://github.com/phcode-dev/phoenix/pull/2662",children:"#2662"}),")"]}),"\n",(0,t.jsxs)(i.li,{children:["Fixed new-window dimensions being slightly off due to inner/outer measurement mix-up. (",(0,t.jsx)(i.a,{href:"https://github.com/phcode-dev/phoenix/pull/2720",children:"#2720"}),")"]}),"\n"]}),"\n",(0,t.jsx)(i.h3,{id:"windows",children:"Windows"}),"\n",(0,t.jsxs)(i.ul,{children:["\n",(0,t.jsxs)(i.li,{children:["Fixed window size jumping when opening a new window from ",(0,t.jsx)(i.code,{children:"File > New Window"}),". (",(0,t.jsx)(i.a,{href:"https://github.com/phcode-dev/phoenix/pull/2723",children:"#2723"}),")"]}),"\n"]}),"\n",(0,t.jsx)(i.h2,{id:"all-changes",children:"All changes"}),"\n",(0,t.jsxs)(i.p,{children:["Please see ",(0,t.jsx)(i.a,{href:"https://github.com/phcode-dev/phoenix/commits/main/?since=2026-01-18&until=2026-05-22",children:"this link"})," for a full list of changes in GitHub."]}),"\n",(0,t.jsx)(i.h2,{id:"a-request-from-the-phoenix-team",children:"A Request from the Phoenix Team:"}),"\n",(0,t.jsxs)(i.ul,{children:["\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.strong,{children:"Share your feedback:"})," ",(0,t.jsx)(i.a,{href:"https://github.com/orgs/phcode-dev/discussions",children:"https://github.com/orgs/phcode-dev/discussions"})]}),"\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.strong,{children:"Spread the word"})," about Phoenix to friends and colleagues."]}),"\n"]}),"\n",(0,t.jsx)(i.p,{children:"With gratitude,"}),"\n",(0,t.jsx)(i.p,{children:"The Phoenix Team"})]})}function p(e={}){const{wrapper:i}={...(0,s.R)(),...e.components};return i?(0,t.jsx)(i,{...e,children:(0,t.jsx)(c,{...e})}):c(e)}},56399:(e,i,n)=>{n.d(i,{A:()=>s});var o=n(96540),t=n(74848);const s=({src:e,winLinuxTitle:i,macTitle:n})=>{const[s,r]=(0,o.useState)("");(0,o.useEffect)((()=>{navigator.platform.toLowerCase().includes("mac")?r(n):r(i)}),[i,n]);return(0,t.jsxs)("div",{style:{maxHeight:"68vh",width:"100%",display:"flex",justifyContent:"center",alignItems:"center",flexDirection:"column"},children:[(0,t.jsxs)("video",{style:{height:"90%",width:"100%"},controls:!0,autoPlay:!0,muted:!0,loop:!0,children:[(0,t.jsx)("source",{src:e,type:"video/mp4"}),"Your browser does not support the video tag."]}),(0,t.jsx)("div",{style:{width:"100%",textAlign:"center",fontSize:"1em",marginTop:"10px"},children:s})]})}},28453:(e,i,n)=>{n.d(i,{R:()=>r,x:()=>a});var o=n(96540);const t={},s=o.createContext(t);function r(e){const i=o.useContext(s);return o.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function a(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:r(e.components),o.createElement(s.Provider,{value:i},e.children)}},26470:e=>{e.exports=JSON.parse('{"permalink":"/blog/release-5.1","editUrl":"https://github.com/phcode-dev/docs/blob/main/blog/2026-05-08-Release-5.1/index.md","source":"@site/blog/2026-05-08-Release-5.1/index.md","title":"Phoenix Code 5.1: AI, Design Mode & More","description":"Phoenix Code 5.1 introduces an AI assistant powered by Claude Code, a brand new Design Mode, a rich Markdown editor, an integrated terminal, and Phoenix Neo themes.","date":"2026-05-08T00:00:00.000Z","tags":[{"inline":true,"label":"AI","permalink":"/blog/tags/ai"},{"inline":true,"label":"Claude Code","permalink":"/blog/tags/claude-code"},{"inline":true,"label":"Design Mode","permalink":"/blog/tags/design-mode"},{"inline":true,"label":"Markdown Editor","permalink":"/blog/tags/markdown-editor"},{"inline":true,"label":"Terminal","permalink":"/blog/tags/terminal"},{"inline":true,"label":"Live Preview Edit","permalink":"/blog/tags/live-preview-edit"},{"inline":true,"label":"Phoenix Pro","permalink":"/blog/tags/phoenix-pro"},{"inline":true,"label":"Phoenix Neo","permalink":"/blog/tags/phoenix-neo"},{"inline":true,"label":"Windows","permalink":"/blog/tags/windows"},{"inline":true,"label":"Linux","permalink":"/blog/tags/linux"},{"inline":true,"label":"Mac","permalink":"/blog/tags/mac"},{"inline":true,"label":"Release","permalink":"/blog/tags/release"}],"readingTime":5.76,"hasTruncateMarker":false,"authors":[{"name":"Arun Bose","title":"Co-Founder, Phoenix Code","url":"https://github.com/abose","imageURL":"https://github.com/abose.png","key":"arun","page":null},{"name":"Charly P Abraham","title":"Co-Founder, Phoenix Code","url":"https://github.com/charlypa","imageURL":"https://github.com/charlypa.png","key":"charly","page":null},{"name":"Devansh Agarwal","title":"Founding Engineer, Phoenix Code","url":"https://github.com/devvaannsh","imageURL":"https://github.com/devvaannsh.png","key":"devvaannsh","page":null},{"name":"Krrish Parmar","title":"Designer, Phoenix Code","url":"https://github.com/Electrofist","imageURL":"https://github.com/Electrofist.png","key":"electrofist","page":null},{"name":"Ansu Ann Koshy","title":"Product Growth, Phoenix Code","url":"https://github.com/AnsuKoshy","imageURL":"https://github.com/AnsuKoshy.png","key":"ansu","page":null},{"name":"Phoenix Code Bot","title":"Our little elf who keeps the whole place together","url":"https://github.com/phoenixide","imageURL":"https://github.com/phoenixide.png","key":"phoenixBot","page":null}],"frontMatter":{"slug":"release-5.1","title":"Phoenix Code 5.1: AI, Design Mode & More","description":"Phoenix Code 5.1 introduces an AI assistant powered by Claude Code, a brand new Design Mode, a rich Markdown editor, an integrated terminal, and Phoenix Neo themes.","authors":["arun","charly","devvaannsh","electrofist","ansu","phoenixBot"],"tags":["AI","Claude Code","Design Mode","Markdown Editor","Terminal","Live Preview Edit","Phoenix Pro","Phoenix Neo","Windows","Linux","Mac","Release"]},"unlisted":false,"nextItem":{"title":"Brackets Editor in 2026: Phoenix Code Picks Up Where It Left Off","permalink":"/blog/brackets-editor-phoenix-code"}}')}}]); \ No newline at end of file diff --git a/assets/js/3815.cdf7050b.js b/assets/js/3815.cdf7050b.js new file mode 100644 index 00000000..4b70e993 --- /dev/null +++ b/assets/js/3815.cdf7050b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3815],{53815:(r,s,e)=>{e.d(s,{diagram:()=>c});var a=e(71746),t=(e(52501),e(89625),e(21152),e(10045),e(5164),e(28698),e(5894),e(63245),e(32387),e(30092),e(13226),e(67633),e(40797)),c={parser:a._$,get db(){return new a.NM},renderer:a.Lh,styles:a.tM,init:(0,t.K2)((r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute}),"init")}}}]); \ No newline at end of file diff --git a/assets/js/3840f1f7.4aa54d30.js b/assets/js/3840f1f7.4aa54d30.js new file mode 100644 index 00000000..c5be77ac --- /dev/null +++ b/assets/js/3840f1f7.4aa54d30.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9116],{75863:(e,i,n)=>{n.r(i),n.d(i,{assets:()=>d,contentTitle:()=>o,default:()=>p,frontMatter:()=>a,metadata:()=>s,toc:()=>c});const s=JSON.parse('{"id":"Workspace/file-management","title":"File Management","description":"This section covers how Phoenix Code lets you manage, organize, and navigate files and folders within your projects.","source":"@site/docs/05-Workspace/01-file-management.md","sourceDirName":"05-Workspace","slug":"/file-management","permalink":"/docs/file-management","draft":false,"unlisted":false,"editUrl":"https://github.com/phcode-dev/docs/blob/main/docs/05-Workspace/01-file-management.md","tags":[],"version":"current","sidebarPosition":1,"frontMatter":{"title":"File Management","slug":"/file-management"},"sidebar":"tutorialSidebar","previous":{"title":"Beautify Code","permalink":"/docs/Features/beautify-code"},"next":{"title":"Find In Files","permalink":"/docs/Features/find-in-files"}}');var t=n(74848),r=n(28453),l=(n(96540),n(56399));const a={title:"File Management",slug:"/file-management"},o=void 0,d={},c=[{value:"File Tree",id:"file-tree",level:2},{value:"File Tree Context Menu",id:"file-tree-context-menu",level:3},{value:"Sorting Files and Folders",id:"sorting-files-and-folders",level:3},{value:"Collapse All Folders",id:"collapse-all-folders",level:3},{value:"Tab Bar",id:"tab-bar",level:2},{value:"Preview Tabs",id:"preview-tabs",level:3},{value:"Tab Bar in Split Panes",id:"tab-bar-in-split-panes",level:3},{value:"Hidden Tabs",id:"hidden-tabs",level:3},{value:"Drag-Drop Tabs",id:"drag-drop-tabs",level:3},{value:"Tab Bar Context Menu",id:"tab-bar-context-menu",level:3},{value:"Git - Tab Bar",id:"git---tab-bar",level:3},{value:"Limiting the Number of Tabs",id:"limiting-the-number-of-tabs",level:3},{value:"Showing or Hiding the Tab Bar",id:"showing-or-hiding-the-tab-bar",level:3},{value:"1. From the View Menu",id:"1-from-the-view-menu",level:4},{value:"2. From the Sidebar",id:"2-from-the-sidebar",level:4},{value:"3. From Preferences",id:"3-from-preferences",level:4},{value:"Working Files",id:"working-files",level:2},{value:"Working Files in Split Panes",id:"working-files-in-split-panes",level:3},{value:"Drag-Drop in Working Files",id:"drag-drop-in-working-files",level:3},{value:"Working Files Context Menu",id:"working-files-context-menu",level:3},{value:"Showing or Hiding Working Files",id:"showing-or-hiding-working-files",level:3},{value:"1. From the Sidebar",id:"1-from-the-sidebar",level:4},{value:"2. From Preferences",id:"2-from-preferences",level:4},{value:"Recent Files",id:"recent-files",level:2},{value:"Opening Recent Files",id:"opening-recent-files",level:3},{value:"File Recovery",id:"file-recovery",level:2},{value:"Recovering Files After a Crash",id:"recovering-files-after-a-crash",level:3},{value:"Language and Encoding",id:"language-and-encoding",level:2},{value:"File Encoding",id:"file-encoding",level:3},{value:"Set Encoding of a file",id:"set-encoding-of-a-file",level:4},{value:"File Type Associations",id:"file-type-associations",level:3},{value:"Associate a new file type with a language",id:"associate-a-new-file-type-with-a-language",level:4}];function h(e){const i={a:"a",blockquote:"blockquote",code:"code",em:"em",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(i.p,{children:["This section covers how ",(0,t.jsx)(i.strong,{children:"Phoenix Code"})," lets you manage, organize, and navigate files and folders within your projects."]}),"\n",(0,t.jsx)(i.h2,{id:"file-tree",children:"File Tree"}),"\n",(0,t.jsxs)(i.p,{children:["The ",(0,t.jsx)(i.strong,{children:"File Tree"})," appears in the sidebar and shows the complete folder structure of the open project.\nIt lists all files and folders in a hierarchical view."]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"File Tree",src:n(83226).A+"",title:"File Tree",width:"1919",height:"1101"})}),"\n",(0,t.jsx)(i.h3,{id:"file-tree-context-menu",children:"File Tree Context Menu"}),"\n",(0,t.jsx)(i.p,{children:"When you right-click within the File Tree, a context menu appears which allows you to perform various operations."}),"\n",(0,t.jsxs)(i.blockquote,{children:["\n",(0,t.jsx)(i.p,{children:"All file and folder operations, such as creating, renaming, deleting and many more are generally performed through this context menu."}),"\n"]}),"\n",(0,t.jsx)(i.p,{children:"The element you right-click in the File Tree becomes the selected context, meaning any operation performed will apply to that item. For example:"}),"\n",(0,t.jsxs)(i.ul,{children:["\n",(0,t.jsxs)(i.li,{children:["Right-click a ",(0,t.jsx)(i.strong,{children:"file"})," \u2192 the action applies to that file."]}),"\n",(0,t.jsxs)(i.li,{children:["Right-click a ",(0,t.jsx)(i.strong,{children:"folder"})," \u2192 the action applies to or inside that folder (e.g., add file, create subfolder, delete contents)."]}),"\n",(0,t.jsxs)(i.li,{children:["Right-click on ",(0,t.jsx)(i.strong,{children:"empty space"})," \u2192 the action applies to the project\u2019s root directory."]}),"\n"]}),"\n",(0,t.jsxs)(i.blockquote,{children:["\n",(0,t.jsxs)(i.p,{children:["In the image shown below, ",(0,t.jsx)(i.code,{children:"index.html"})," is selected as the context. Any action from the context menu will apply to that file."]}),"\n"]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"File Tree Keyboard Shortcuts",src:n(77789).A+"",title:"File Tree Keyboard Shortcuts",width:"399",height:"632"})}),"\n",(0,t.jsx)(i.p,{children:"You can also assign or update keyboard shortcuts for any File Tree action through the context menu using the keyboard button at the side."}),"\n",(0,t.jsxs)(i.p,{children:["See the ",(0,t.jsx)(i.a,{href:"./Features/keyboard-shortcuts",children:"Keyboard Shortcuts Guide"})," for complete details."]}),"\n",(0,t.jsx)(i.h3,{id:"sorting-files-and-folders",children:"Sorting Files and Folders"}),"\n",(0,t.jsxs)(i.p,{children:["By default, the File Tree sorts folders first (in ascending order ",(0,t.jsx)(i.em,{children:"a-z"}),"), followed by files."]}),"\n",(0,t.jsx)(i.p,{children:"To sort folders and files together:"}),"\n",(0,t.jsxs)(i.ol,{children:["\n",(0,t.jsxs)(i.li,{children:["Click the ",(0,t.jsx)(i.strong,{children:"double-arrow"})," at the top-right of the sidebar."]}),"\n",(0,t.jsxs)(i.li,{children:["In the dropdown, uncheck ",(0,t.jsx)(i.strong,{children:"Sort Folders First"}),"."]}),"\n"]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"File Tree folders sort",src:n(92887).A+"",title:"File Tree folders sort",width:"745",height:"703"})}),"\n",(0,t.jsxs)(i.p,{children:["Alternatively, you can control this behavior by updating the ",(0,t.jsx)(i.code,{children:"sortDirectoriesFirst"})," property in the preferences file.\nSee ",(0,t.jsx)(i.a,{href:"./editing-text#editing-preferences",children:"Editing Preferences"})," for details."]}),"\n",(0,t.jsxs)(i.p,{children:["Now, files and folders are sorted together in one ascending list.\n",(0,t.jsx)(i.img,{alt:"File tree sorted",src:n(37938).A+"",title:"File Tree sorted",width:"501",height:"367"})]}),"\n",(0,t.jsxs)(i.blockquote,{children:["\n",(0,t.jsxs)(i.p,{children:["Notice how the ",(0,t.jsx)(i.code,{children:"images"})," folder now appears in alphabetical order with other items."]}),"\n"]}),"\n",(0,t.jsx)(i.h3,{id:"collapse-all-folders",children:"Collapse All Folders"}),"\n",(0,t.jsxs)(i.p,{children:["The ",(0,t.jsx)(i.strong,{children:"Collapse All Folders"})," feature helps you quickly reset your view by collapsing all expanded folders to their root level, leaving only the top-level items visible in the File Tree."]}),"\n",(0,t.jsx)(i.p,{children:"To collapse all folders:"}),"\n",(0,t.jsxs)(i.ol,{children:["\n",(0,t.jsx)(i.li,{children:"Hover over the File Tree header at the top-right."}),"\n",(0,t.jsxs)(i.li,{children:["Click the ",(0,t.jsx)(i.code,{children:"collapse icon"})," (two arrows pointing toward each other) that appears."]}),"\n"]}),"\n",(0,t.jsx)(l.A,{src:"https://docs-images.phcode.dev/videos/file-management/collapse-folders.mp4"}),"\n",(0,t.jsx)(i.h2,{id:"tab-bar",children:"Tab Bar"}),"\n",(0,t.jsxs)(i.p,{children:["The ",(0,t.jsx)(i.strong,{children:"Tab Bar"})," appears at the top of the editor and displays all open files.\nEach file in the Tab Bar is referred to as a ",(0,t.jsx)(i.strong,{children:"tab"}),", and you can open as many tabs as you like.\n",(0,t.jsx)(i.em,{children:"The Tab Bar helps you switch quickly between files while working."})]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"Tab Bar",src:n(72844).A+"",title:"Tab Bar",width:"1919",height:"1104"})}),"\n",(0,t.jsxs)(i.p,{children:["The active tab is highlighted with a ",(0,t.jsx)(i.em,{children:"blue"})," marker to distinguish it from inactive ones.\nTo switch between tabs, simply click the tab you want to view."]}),"\n",(0,t.jsxs)(i.p,{children:["To close a tab, click the ",(0,t.jsx)(i.code,{children:"\xd7"})," button beside its name.\nFor inactive tabs, this button appears only when you hover over them."]}),"\n",(0,t.jsxs)(i.p,{children:[(0,t.jsx)(i.strong,{children:"Phoenix Code"})," shows a small ",(0,t.jsx)(i.code,{children:"\u2022"})," icon on tabs that have unsaved changes."]}),"\n",(0,t.jsxs)(i.p,{children:["If you try to close a tab with unsaved changes, ",(0,t.jsx)(i.strong,{children:"Phoenix Code"})," displays a confirmation dialog with three options:"]}),"\n",(0,t.jsxs)(i.ul,{children:["\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.strong,{children:"Don't Save"}),": Closes the tab without saving changes. All unsaved changes will be lost."]}),"\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.strong,{children:"Save"}),": Saves the file and then closes the tab."]}),"\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.strong,{children:"Cancel"}),": Keeps the tab open and returns you to editing."]}),"\n"]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"Save File Dialog",src:n(78086).A+"",title:"Save File Dialog",width:"970",height:"279"})}),"\n",(0,t.jsxs)(i.p,{children:["When multiple tabs have the same filename, ",(0,t.jsx)(i.strong,{children:"Phoenix Code"})," displays their parent folder name so you can easily tell them apart."]}),"\n",(0,t.jsxs)(i.blockquote,{children:["\n",(0,t.jsx)(i.p,{children:"Hovering over a tab will show a tooltip with its full path."}),"\n"]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"Tab Bar UI",src:n(11372).A+"",title:"Tab Bar UI",width:"1185",height:"599"})}),"\n",(0,t.jsxs)(i.blockquote,{children:["\n",(0,t.jsx)(i.p,{children:"The image above shows various UI elements of a tab."}),"\n"]}),"\n",(0,t.jsx)(i.h3,{id:"preview-tabs",children:"Preview Tabs"}),"\n",(0,t.jsx)(i.p,{children:"Preview Tabs are temporary tabs created when you single-click a file in the File Tree. They are useful for quick navigation without cluttering your workspace."}),"\n",(0,t.jsxs)(i.p,{children:["Preview Tabs are only visible in the Tab Bar and are not added to the Working Set. They appear in ",(0,t.jsx)(i.em,{children:"italic"})," with a lighter ",(0,t.jsx)(i.em,{children:"gray"})," text."]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"Preview Tab",src:n(29343).A+"",title:"Preview Tab",width:"582",height:"286"})}),"\n",(0,t.jsx)(i.p,{children:"A preview tab becomes a permanent tab and is added to your Working Set when you:"}),"\n",(0,t.jsxs)(i.ul,{children:["\n",(0,t.jsx)(i.li,{children:"Make any change to the file"}),"\n",(0,t.jsx)(i.li,{children:"Click the preview tab itself"}),"\n",(0,t.jsx)(i.li,{children:"Save the file"}),"\n",(0,t.jsx)(i.li,{children:"Double-click the file in the File Tree"}),"\n"]}),"\n",(0,t.jsx)(i.p,{children:"Only one preview tab can exist per pane. Opening another file replaces the current preview tab, unless it has already been converted to a permanent tab."}),"\n",(0,t.jsxs)(i.blockquote,{children:["\n",(0,t.jsx)(i.p,{children:"Double-clicking a file skips the preview and opens it as a permanent tab immediately."}),"\n"]}),"\n",(0,t.jsx)(i.h3,{id:"tab-bar-in-split-panes",children:"Tab Bar in Split Panes"}),"\n",(0,t.jsx)(i.p,{children:"When multiple panes are open, each pane has its own Tab Bar and maintains its own list of open tabs."}),"\n",(0,t.jsxs)(i.p,{children:["The active tab in the ",(0,t.jsx)(i.strong,{children:"active pane"})," is marked in ",(0,t.jsx)(i.em,{children:"blue"}),",\nwhile the active tab in an ",(0,t.jsx)(i.strong,{children:"inactive pane"})," appears in ",(0,t.jsx)(i.em,{children:"gray"}),"."]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"Split Pane Tab Bar",src:n(64234).A+"",title:"Split Pane Tab Bar",width:"1919",height:"1109"})}),"\n",(0,t.jsxs)(i.blockquote,{children:["\n",(0,t.jsx)(i.p,{children:"A file can appear as a tab in more than one pane."}),"\n"]}),"\n",(0,t.jsx)(i.h3,{id:"hidden-tabs",children:"Hidden Tabs"}),"\n",(0,t.jsxs)(i.p,{children:["When you open a new file, its tab is added to the right of the existing tabs.\nIf there are more tabs than can fit within the visible area, ",(0,t.jsx)(i.strong,{children:"Phoenix Code"})," displays a ",(0,t.jsx)(i.strong,{children:"Show Hidden Tabs"})," button."]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"Show hidden tabs button",src:n(13890).A+"",title:"Show Hidden Tabs button",width:"1919",height:"1106"})}),"\n",(0,t.jsx)(i.p,{children:"Clicking this button opens a dropdown list of all tabs that are not fully visible.\nFrom this list, you can select a tab to bring it into view or close tabs directly from the dropdown."}),"\n",(0,t.jsx)(l.A,{src:"https://docs-images.phcode.dev/videos/file-management/overflow-tabs.mp4"}),"\n",(0,t.jsx)(i.h3,{id:"drag-drop-tabs",children:"Drag-Drop Tabs"}),"\n",(0,t.jsxs)(i.p,{children:["You can reorder tabs by dragging and dropping them.\nWhile dragging, ",(0,t.jsx)(i.strong,{children:"Phoenix Code"})," highlights the drop position with a vertical blue marker, showing exactly where the tab will be placed."]}),"\n",(0,t.jsx)(i.p,{children:"Tabs can also be dragged between panes."}),"\n",(0,t.jsx)(l.A,{src:"https://docs-images.phcode.dev/videos/file-management/drag-drop-tabs.mp4"}),"\n",(0,t.jsx)(i.h3,{id:"tab-bar-context-menu",children:"Tab Bar Context Menu"}),"\n",(0,t.jsx)(i.p,{children:"When you right-click a tab, a context menu appears which has multiple options so that you can work with tabs easily."}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"Tab bar context menu",src:n(49980).A+"",title:"Tab bar context menu",width:"776",height:"466"})}),"\n",(0,t.jsxs)(i.blockquote,{children:["\n",(0,t.jsx)(i.p,{children:"These options provide quick access to common file operations directly from the Tab Bar."}),"\n"]}),"\n",(0,t.jsx)(i.h3,{id:"git---tab-bar",children:"Git - Tab Bar"}),"\n",(0,t.jsxs)(i.p,{children:["The Tab Bar displays Git file status indicators, showing which files are ",(0,t.jsx)(i.strong,{children:"untracked"})," or ",(0,t.jsx)(i.strong,{children:"modified"}),"."]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"Tab bar Git",src:n(85291).A+"",title:"Tab bar Git",width:"781",height:"536"})}),"\n",(0,t.jsxs)(i.ul,{children:["\n",(0,t.jsxs)(i.li,{children:["A ",(0,t.jsx)(i.strong,{children:"green marker"})," indicates an ",(0,t.jsx)(i.strong,{children:"untracked"})," file."]}),"\n",(0,t.jsxs)(i.li,{children:["An ",(0,t.jsx)(i.strong,{children:"orange marker"})," indicates a ",(0,t.jsx)(i.strong,{children:"modified"})," file."]}),"\n"]}),"\n",(0,t.jsxs)(i.p,{children:["For files that are ",(0,t.jsx)(i.strong,{children:"gitignored"}),", ",(0,t.jsx)(i.strong,{children:"Phoenix Code"})," shows the tab name in ",(0,t.jsx)(i.em,{children:"gray italics"}),"."]}),"\n",(0,t.jsxs)(i.blockquote,{children:["\n",(0,t.jsx)(i.p,{children:"These indicators appear only when your project is a Git repository."}),"\n"]}),"\n",(0,t.jsx)(i.h3,{id:"limiting-the-number-of-tabs",children:"Limiting the Number of Tabs"}),"\n",(0,t.jsxs)(i.p,{children:[(0,t.jsx)(i.strong,{children:"Phoenix Code"})," allows you to control the maximum number of tabs displayed in the Tab Bar at once.\nBy default, the value is set to ",(0,t.jsx)(i.code,{children:"-1"}),", which means all open tabs are displayed."]}),"\n",(0,t.jsxs)(i.p,{children:["For example, if you want to show a maximum of ",(0,t.jsx)(i.strong,{children:"3 tabs"})," in the Tab Bar, you can add the following to your preferences file:"]}),"\n",(0,t.jsx)(i.pre,{children:(0,t.jsx)(i.code,{className:"language-json",children:'"tabBar.options": {\n "numberOfTabs": 3,\n "showTabBar": true\n}\n'})}),"\n",(0,t.jsxs)(i.p,{children:["You can set ",(0,t.jsx)(i.code,{children:"numberOfTabs"})," to any positive number to define the maximum tab limit.\nIf you set it to ",(0,t.jsx)(i.code,{children:"0"}),", the Tab Bar will be hidden entirely.\nAny negative value (such as ",(0,t.jsx)(i.code,{children:"-1"}),") displays all open tabs without restriction."]}),"\n",(0,t.jsxs)(i.blockquote,{children:["\n",(0,t.jsxs)(i.p,{children:["The active tab is always visible, except when the ",(0,t.jsx)(i.code,{children:"numberOfTabs"})," value is set to ",(0,t.jsx)(i.code,{children:"0"}),"."]}),"\n"]}),"\n",(0,t.jsx)(i.h3,{id:"showing-or-hiding-the-tab-bar",children:"Showing or Hiding the Tab Bar"}),"\n",(0,t.jsx)(i.p,{children:"You can enable or disable the Tab Bar in several ways:"}),"\n",(0,t.jsx)(i.h4,{id:"1-from-the-view-menu",children:"1. From the View Menu"}),"\n",(0,t.jsxs)(i.p,{children:["Go to ",(0,t.jsx)(i.code,{children:"View > File Tab Bar"})," to toggle it on or off."]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"View > File Tab Bar",src:n(65437).A+"",title:"View > File Tab Bar",width:"867",height:"531"})}),"\n",(0,t.jsx)(i.h4,{id:"2-from-the-sidebar",children:"2. From the Sidebar"}),"\n",(0,t.jsxs)(i.p,{children:["Click the ",(0,t.jsx)(i.strong,{children:"double-arrow"})," icon in the top-right corner of the sidebar,\nthen use the ",(0,t.jsx)(i.code,{children:"Show File Tab Bar"})," option in the dropdown to toggle the Tab Bar."]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"Disable Tab Bar",src:n(84230).A+"",title:"Disable Tab Bar",width:"820",height:"700"})}),"\n",(0,t.jsx)(i.h4,{id:"3-from-preferences",children:"3. From Preferences"}),"\n",(0,t.jsxs)(i.p,{children:["You can also toggle the Tab Bar by updating the ",(0,t.jsx)(i.code,{children:"showTabBar"})," option in the preferences file."]}),"\n",(0,t.jsx)(i.pre,{children:(0,t.jsx)(i.code,{className:"language-json",children:'"tabBar.options": {\n "showTabBar": false\n}\n'})}),"\n",(0,t.jsxs)(i.p,{children:[(0,t.jsx)(i.em,{children:"Add this in your preferences file to hide the Tab Bar."}),"\nSet the value to ",(0,t.jsx)(i.code,{children:"true"})," to enable it.\nSee ",(0,t.jsx)(i.a,{href:"./editing-text#editing-preferences",children:"Editing Preferences"})," if you need help in editing the preferences."]}),"\n",(0,t.jsx)(i.h2,{id:"working-files",children:"Working Files"}),"\n",(0,t.jsxs)(i.p,{children:[(0,t.jsx)(i.strong,{children:"Working Files"})," (also called ",(0,t.jsx)(i.strong,{children:"Working Tree"}),") provides another way to view and manage open files. It appears in the sidebar, above the ",(0,t.jsx)(i.strong,{children:"File Tree"}),"."]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"Working Files",src:n(95606).A+"",title:"Working Files",width:"1919",height:"1012"})}),"\n",(0,t.jsx)(i.p,{children:"Working Files and Tab Bar are synchronized, which means that any operation performed on one (closing, reordering, opening files, etc.) is automatically reflected on the other."}),"\n",(0,t.jsx)(i.p,{children:"Working Files displays the same UI elements as the Tab Bar:"}),"\n",(0,t.jsxs)(i.ul,{children:["\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.code,{children:"\u2022"})," icon for unsaved files"]}),"\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.code,{children:"\xd7"})," button to close files"]}),"\n",(0,t.jsx)(i.li,{children:"Parent folder names when multiple files have the same filename"}),"\n",(0,t.jsx)(i.li,{children:"Tooltip showing full file path on hover"}),"\n",(0,t.jsx)(i.li,{children:"Git status indicators (green for untracked, orange for modified files and gray italics for gitignored files)"}),"\n"]}),"\n",(0,t.jsxs)(i.blockquote,{children:["\n",(0,t.jsxs)(i.p,{children:["See the ",(0,t.jsx)(i.a,{href:"#tab-bar",children:"Tab Bar"})," section for detailed explanations of these features."]}),"\n"]}),"\n",(0,t.jsxs)(i.blockquote,{children:["\n",(0,t.jsxs)(i.p,{children:[(0,t.jsx)(i.strong,{children:"Note"}),": Unlike Tab Bar, you cannot control the maximum number of files displayed in Working Files."]}),"\n"]}),"\n",(0,t.jsx)(i.h3,{id:"working-files-in-split-panes",children:"Working Files in Split Panes"}),"\n",(0,t.jsx)(i.p,{children:"When using split panes, each pane maintains its own list of open files in Working Files."}),"\n",(0,t.jsx)(i.p,{children:"The panes are labeled based on the split orientation:"}),"\n",(0,t.jsxs)(i.ul,{children:["\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.strong,{children:"Vertical Split"}),": ",(0,t.jsx)(i.em,{children:"Left"})," (first pane) and ",(0,t.jsx)(i.em,{children:"Right"})," (second pane)"]}),"\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.strong,{children:"Horizontal Split"}),": ",(0,t.jsx)(i.em,{children:"Top"})," (first pane) and ",(0,t.jsx)(i.em,{children:"Bottom"})," (second pane)"]}),"\n"]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"Working Files Split Panes",src:n(74871).A+"",title:"Working Files Split Panes",width:"354",height:"368"})}),"\n",(0,t.jsx)(i.h3,{id:"drag-drop-in-working-files",children:"Drag-Drop in Working Files"}),"\n",(0,t.jsx)(i.p,{children:"You can reorder files in Working Files by dragging and dropping them, just like in the Tab Bar."}),"\n",(0,t.jsx)(l.A,{src:"https://docs-images.phcode.dev/videos/file-management/drag-drop-working-files.mp4"}),"\n",(0,t.jsx)(i.h3,{id:"working-files-context-menu",children:"Working Files Context Menu"}),"\n",(0,t.jsx)(i.p,{children:"When you right-click a file in Working Files, a context menu appears with various file operations."}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"Working Files context menu",src:n(48018).A+"",title:"Working Files context menu",width:"611",height:"690"})}),"\n",(0,t.jsxs)(i.blockquote,{children:["\n",(0,t.jsx)(i.p,{children:"These options provide quick access to common file operations directly from Working Files."}),"\n"]}),"\n",(0,t.jsx)(i.h3,{id:"showing-or-hiding-working-files",children:"Showing or Hiding Working Files"}),"\n",(0,t.jsx)(i.p,{children:"You can show or hide the Working Files panel in two ways:"}),"\n",(0,t.jsx)(i.h4,{id:"1-from-the-sidebar",children:"1. From the Sidebar"}),"\n",(0,t.jsxs)(i.p,{children:["Click the ",(0,t.jsx)(i.strong,{children:"double-arrow"})," icon in the top-right corner of the sidebar, then use the ",(0,t.jsx)(i.code,{children:"Show Working Files"})," option in the dropdown to toggle Working Files."]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"Disable Working Files",src:n(2349).A+"",title:"Disable Working Files",width:"701",height:"489"})}),"\n",(0,t.jsx)(i.h4,{id:"2-from-preferences",children:"2. From Preferences"}),"\n",(0,t.jsxs)(i.p,{children:["You can also toggle Working Files by updating the ",(0,t.jsx)(i.code,{children:"showWorkingSet"})," property in the preferences file."]}),"\n",(0,t.jsx)(i.pre,{children:(0,t.jsx)(i.code,{className:"language-json",children:'"showWorkingSet": true\n'})}),"\n",(0,t.jsxs)(i.p,{children:["Set the value to ",(0,t.jsx)(i.code,{children:"false"})," to hide Working Files.\nSee ",(0,t.jsx)(i.a,{href:"./editing-text#editing-preferences",children:"Editing Preferences"})," if you need help editing the preferences."]}),"\n",(0,t.jsx)(i.h2,{id:"recent-files",children:"Recent Files"}),"\n",(0,t.jsxs)(i.p,{children:["The ",(0,t.jsx)(i.strong,{children:"Recent Files"})," dialog provides quick access to files you've recently worked on."]}),"\n",(0,t.jsx)(i.h3,{id:"opening-recent-files",children:"Opening Recent Files"}),"\n",(0,t.jsxs)(i.ul,{children:["\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.strong,{children:"Desktop App"}),": Press ",(0,t.jsx)(i.code,{children:"Ctrl + R"}),"."]}),"\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.strong,{children:"Browser"}),": Press ",(0,t.jsx)(i.code,{children:"Ctrl + Alt + Shift + O"})," (as ",(0,t.jsx)(i.code,{children:"Ctrl + R"})," is reserved for browser reloads)."]}),"\n"]}),"\n",(0,t.jsxs)(i.p,{children:["To customize the keyboard shortcut, refer to the ",(0,t.jsx)(i.a,{href:"./Features/keyboard-shortcuts#changing-a-keyboard-shortcut",children:"Keyboard Shortcuts Guide"}),"."]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"Recent Files Dialog",src:n(85038).A+"",title:"Recent Files Dialog Box",width:"852",height:"549"})}),"\n",(0,t.jsxs)(i.p,{children:["The dialog shows your recently opened files. Closed files appear in gray. Hover over them to see an ",(0,t.jsx)(i.code,{children:"x"})," icon. Click it to remove them from the list. The ",(0,t.jsx)(i.code,{children:"Clear"})," button at the bottom removes all closed files at once."]}),"\n",(0,t.jsxs)(i.blockquote,{children:["\n",(0,t.jsx)(i.p,{children:"Currently open files cannot be removed from this list. Close them first to remove them."}),"\n"]}),"\n",(0,t.jsx)(i.p,{children:"To view a file's full path, hover over it or check the bottom-left corner of the dialog when a file is selected."}),"\n",(0,t.jsx)(i.h2,{id:"file-recovery",children:"File Recovery"}),"\n",(0,t.jsxs)(i.p,{children:[(0,t.jsx)(i.strong,{children:"Phoenix Code"})," has a built-in ",(0,t.jsx)(i.strong,{children:"File Recovery"})," feature to help you retrieve unsaved changes after unexpected events like crashes or accidental closures."]}),"\n",(0,t.jsx)(i.h3,{id:"recovering-files-after-a-crash",children:"Recovering Files After a Crash"}),"\n",(0,t.jsxs)(i.p,{children:["When you reopen the editor, if there are any unsaved changes from the previous session, a dialog box will appear with two options: ",(0,t.jsx)(i.code,{children:"Discard"})," and ",(0,t.jsx)(i.code,{children:"Restore"}),"."]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"File Recovery Dialog Box",src:n(91583).A+"",title:"File Recovery Dialog Box",width:"1917",height:"1002"})}),"\n",(0,t.jsxs)(i.ul,{children:["\n",(0,t.jsxs)(i.li,{children:["\n",(0,t.jsxs)(i.p,{children:[(0,t.jsx)(i.strong,{children:"Restore"}),": Recovers your unsaved files by reinstating all changes made before the last save."]}),"\n"]}),"\n",(0,t.jsxs)(i.li,{children:["\n",(0,t.jsxs)(i.p,{children:[(0,t.jsx)(i.strong,{children:"Discard"}),": Removes the unsaved changes. ",(0,t.jsx)(i.em,{children:"This will permanently delete the data."})]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(i.h2,{id:"language-and-encoding",children:"Language and Encoding"}),"\n",(0,t.jsxs)(i.p,{children:["Each file has two settings that control how ",(0,t.jsx)(i.strong,{children:"Phoenix Code"})," interprets its contents: the ",(0,t.jsx)(i.strong,{children:"language"})," it should be treated as, and the ",(0,t.jsx)(i.strong,{children:"character encoding"})," used to read and write it. Both are controlled from buttons in the editor's status bar."]}),"\n",(0,t.jsx)(i.h3,{id:"file-encoding",children:"File Encoding"}),"\n",(0,t.jsxs)(i.p,{children:[(0,t.jsx)(i.strong,{children:"File encoding"})," is the method used to represent text in a file by converting characters into bytes. We need it to ensure that text is displayed correctly across different platforms and to handle special characters or symbols. Phoenix Code Editor supports multiple file encoding formats."]}),"\n",(0,t.jsxs)(i.p,{children:[(0,t.jsx)(i.em,{children:(0,t.jsx)(i.code,{children:"UTF-8"})})," is the default encoding format in Phoenix."]}),"\n",(0,t.jsx)(i.h4,{id:"set-encoding-of-a-file",children:"Set Encoding of a file"}),"\n",(0,t.jsxs)(i.ol,{children:["\n",(0,t.jsxs)(i.li,{children:["Click on the ",(0,t.jsx)(i.code,{children:"utf8"})," button on the status bar. (UTF-8 represents the default encoding format)."]}),"\n",(0,t.jsx)(i.li,{children:"A list of available encoding formats will appear. Select your desired format, or start typing to filter and find matching options in the drop-down menu."}),"\n"]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"File Encoding Image",src:n(49067).A+"",title:"Click on utf8 button on status bar and select the encoding format",width:"910",height:"1003"})}),"\n",(0,t.jsx)(i.h3,{id:"file-type-associations",children:"File Type Associations"}),"\n",(0,t.jsxs)(i.p,{children:[(0,t.jsx)(i.strong,{children:"File Type Associations"})," ",(0,t.jsx)(i.em,{children:"(Associating a file type with a language)"})," allows Phoenix Code Editor to provide language-specific features, such as syntax highlighting, code completion, and error checking, based on the file extension. This ensures that your files are treated according to their intended programming or markup language."]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.em,{children:"When you create a new file, if the file extension is recognized, it is associated with the default language. If the extension is unknown, a generic text file is opened."})}),"\n",(0,t.jsx)(i.h4,{id:"associate-a-new-file-type-with-a-language",children:"Associate a new file type with a language"}),"\n",(0,t.jsxs)(i.p,{children:["To associate a new file type with a specific language in Phoenix Code Editor, use the Language dropdown button in the status bar. For example, if you want files with ",(0,t.jsx)(i.code,{children:".myjs"})," extension to be treated as JavaScript files, follow these steps:"]}),"\n",(0,t.jsxs)(i.ol,{children:["\n",(0,t.jsx)(i.li,{children:"Create a new file with the desired extension. For our example, we create (newfile.myjs). By default, it will be associated with a Text file."}),"\n",(0,t.jsxs)(i.li,{children:["Click on ",(0,t.jsx)(i.code,{children:"Text"})," button on the status bar."]}),"\n",(0,t.jsxs)(i.li,{children:["A list of all the supported languages will appear. Select the language you want to associate with the file type. For our example, we select ",(0,t.jsx)(i.code,{children:"JavaScript"}),"."]}),"\n"]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"File Association Image",src:n(12847).A+"",title:"Click on Text button on status bar and select the language",width:"930",height:"1011"})}),"\n",(0,t.jsxs)(i.ol,{start:"4",children:["\n",(0,t.jsxs)(i.li,{children:["At the top of the popup box, you'll find an option labeled ",(0,t.jsx)(i.code,{children:"Set as default for .myjs files"}),". Click on it."]}),"\n"]}),"\n",(0,t.jsxs)(i.p,{children:["Now, files with ",(0,t.jsx)(i.code,{children:".myjs"})," extension will be treated as JavaScript files."]}),"\n",(0,t.jsx)(l.A,{src:"https://docs-images.phcode.dev/videos/editing-text/file_association.mp4"})]})}function p(e={}){const{wrapper:i}={...(0,r.R)(),...e.components};return i?(0,t.jsx)(i,{...e,children:(0,t.jsx)(h,{...e})}):h(e)}},56399:(e,i,n)=>{n.d(i,{A:()=>r});var s=n(96540),t=n(74848);const r=({src:e,winLinuxTitle:i,macTitle:n})=>{const[r,l]=(0,s.useState)("");(0,s.useEffect)((()=>{navigator.platform.toLowerCase().includes("mac")?l(n):l(i)}),[i,n]);return(0,t.jsxs)("div",{style:{maxHeight:"68vh",width:"100%",display:"flex",justifyContent:"center",alignItems:"center",flexDirection:"column"},children:[(0,t.jsxs)("video",{style:{height:"90%",width:"100%"},controls:!0,autoPlay:!0,muted:!0,loop:!0,children:[(0,t.jsx)("source",{src:e,type:"video/mp4"}),"Your browser does not support the video tag."]}),(0,t.jsx)("div",{style:{width:"100%",textAlign:"center",fontSize:"1em",marginTop:"10px"},children:r})]})}},12847:(e,i,n)=>{n.d(i,{A:()=>s});const s=n.p+"assets/images/file-association-fe9fbd627e34eaad9b5f0add2c39e169.png"},49067:(e,i,n)=>{n.d(i,{A:()=>s});const s=n.p+"assets/images/file-encoding-c19da2809b2fa0272b04962466b77ea1.png"},65437:(e,i,n)=>{n.d(i,{A:()=>s});const s=n.p+"assets/images/disable-tab-bar-1-cebe5cbc905e0db85b6bda6675a74302.png"},84230:(e,i,n)=>{n.d(i,{A:()=>s});const s=n.p+"assets/images/disable-tab-bar-2-64fb27b6f4f5e685286a97e9b0fcc6d4.png"},2349:(e,i,n)=>{n.d(i,{A:()=>s});const s=n.p+"assets/images/disable-working-files-60ebca46987836c2bc0a9e6524433b64.png"},91583:(e,i,n)=>{n.d(i,{A:()=>s});const s=n.p+"assets/images/file-recovery-5a5349b0f89a7b80569b77ed7b04cd98.png"},77789:(e,i,n)=>{n.d(i,{A:()=>s});const s=n.p+"assets/images/file-tree-context-menu-key-shortcut-4fbbcca0c1c778a4f4753b28626ae337.png"},92887:(e,i,n)=>{n.d(i,{A:()=>s});const s=n.p+"assets/images/file-tree-sort-folders-option-94c171a477281d7c88dac73bb8ddbcc6.png"},37938:(e,i,n)=>{n.d(i,{A:()=>s});const s=n.p+"assets/images/file-tree-sorted-b12e9c2853aaed30418feb10cf19eb57.png"},83226:(e,i,n)=>{n.d(i,{A:()=>s});const s=n.p+"assets/images/file-tree-892c570f63e758bd6e1b4a24c4658a71.png"},13890:(e,i,n)=>{n.d(i,{A:()=>s});const s=n.p+"assets/images/overflow-button-6f38035e9a745d362c320de06294c560.png"},29343:(e,i,n)=>{n.d(i,{A:()=>s});const s=n.p+"assets/images/preview-tab-7e30256eb0916b472a190e95afba3d7c.png"},85038:(e,i,n)=>{n.d(i,{A:()=>s});const s=n.p+"assets/images/recent-files-a9fa5e954b0315e12950f7f5b391c16c.png"},78086:(e,i,n)=>{n.d(i,{A:()=>s});const s=n.p+"assets/images/save-file-dialog-694af7f69c0561a55f0cee916b5e5fe6.png"},64234:(e,i,n)=>{n.d(i,{A:()=>s});const s=n.p+"assets/images/split-panes-tabs-d27187f22855c61ac5a8b03e20ef7a54.png"},49980:(e,i,n)=>{n.d(i,{A:()=>s});const s=n.p+"assets/images/tab-bar-context-menu-e8bc3b175a557e12e75204d3e9c626b8.png"},85291:(e,i,n)=>{n.d(i,{A:()=>s});const s=n.p+"assets/images/tab-bar-git-811c82fa61907d6bd9ad9fdd7876e9bf.png"},11372:(e,i,n)=>{n.d(i,{A:()=>s});const s=n.p+"assets/images/tab-bar-main-b5cca0dc25c6c679dab5b475a790df04.png"},72844:(e,i,n)=>{n.d(i,{A:()=>s});const s=n.p+"assets/images/tab-bar-801b0cfbb476f004a8e738a49d8ae35a.png"},48018:(e,i,n)=>{n.d(i,{A:()=>s});const s=n.p+"assets/images/working-files-context-menu-2b8e8e731f0099a09504e0a395506965.png"},74871:(e,i,n)=>{n.d(i,{A:()=>s});const s=n.p+"assets/images/working-files-split-panes-7e6ad66f3b93bbf1c1fba9d9f191aa19.png"},95606:(e,i,n)=>{n.d(i,{A:()=>s});const s=n.p+"assets/images/working-files-f14ea4ee59954cf357a0ef3f973326c8.png"},28453:(e,i,n)=>{n.d(i,{R:()=>l,x:()=>a});var s=n(96540);const t={},r=s.createContext(t);function l(e){const i=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function a(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:l(e.components),s.createElement(r.Provider,{value:i},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/393be207.8be4d1b6.js b/assets/js/393be207.8be4d1b6.js new file mode 100644 index 00000000..fe7a0588 --- /dev/null +++ b/assets/js/393be207.8be4d1b6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4134],{10591:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>p,contentTitle:()=>c,default:()=>l,frontMatter:()=>s,metadata:()=>o,toc:()=>d});const o=JSON.parse('{"type":"mdx","permalink":"/markdown-page","source":"@site/src/pages/markdown-page.md","title":"Markdown page example","description":"You don\'t need React to write simple standalone pages.","frontMatter":{"title":"Markdown page example"},"unlisted":false}');var a=t(74848),r=t(28453);const s={title:"Markdown page example"},c="Markdown page example",p={},d=[];function i(e){const n={h1:"h1",header:"header",p:"p",...(0,r.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.header,{children:(0,a.jsx)(n.h1,{id:"markdown-page-example",children:"Markdown page example"})}),"\n",(0,a.jsx)(n.p,{children:"You don't need React to write simple standalone pages."})]})}function l(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(i,{...e})}):i(e)}},28453:(e,n,t)=>{t.d(n,{R:()=>s,x:()=>c});var o=t(96540);const a={},r=o.createContext(a);function s(e){const n=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:s(e.components),o.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/3a2db09e.f3da8f47.js b/assets/js/3a2db09e.f3da8f47.js new file mode 100644 index 00000000..fb787f33 --- /dev/null +++ b/assets/js/3a2db09e.f3da8f47.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8121],{68070:e=>{e.exports=JSON.parse('{"tags":[{"label":"AI","permalink":"/blog/tags/ai","count":1},{"label":"Claude Code","permalink":"/blog/tags/claude-code","count":1},{"label":"Design Mode","permalink":"/blog/tags/design-mode","count":1},{"label":"Markdown Editor","permalink":"/blog/tags/markdown-editor","count":1},{"label":"Terminal","permalink":"/blog/tags/terminal","count":1},{"label":"Live Preview Edit","permalink":"/blog/tags/live-preview-edit","count":2},{"label":"Phoenix Pro","permalink":"/blog/tags/phoenix-pro","count":2},{"label":"Phoenix Neo","permalink":"/blog/tags/phoenix-neo","count":1},{"label":"Windows","permalink":"/blog/tags/windows","count":10},{"label":"Linux","permalink":"/blog/tags/linux","count":10},{"label":"Mac","permalink":"/blog/tags/mac","count":10},{"label":"Release","permalink":"/blog/tags/release","count":10},{"label":"Brackets","permalink":"/blog/tags/brackets","count":2},{"label":"Comparison","permalink":"/blog/tags/comparison","count":1},{"label":"Migration","permalink":"/blog/tags/migration","count":1},{"label":"Code Editor","permalink":"/blog/tags/code-editor","count":1},{"label":"Live Preview","permalink":"/blog/tags/live-preview","count":4},{"label":"Open Source","permalink":"/blog/tags/open-source","count":1},{"label":"Emmet","permalink":"/blog/tags/emmet","count":1},{"label":"Tab Bar","permalink":"/blog/tags/tab-bar","count":1},{"label":"Custom Snippets","permalink":"/blog/tags/custom-snippets","count":1},{"label":"Collapse Folders","permalink":"/blog/tags/collapse-folders","count":1},{"label":"Smarter hint suggestions","permalink":"/blog/tags/smarter-hint-suggestions","count":1},{"label":"Stability Improvements","permalink":"/blog/tags/stability-improvements","count":2},{"label":"Git","permalink":"/blog/tags/git","count":1},{"label":"Color previews","permalink":"/blog/tags/color-previews","count":1},{"label":"Version Control","permalink":"/blog/tags/version-control","count":1},{"label":"open in terminal","permalink":"/blog/tags/open-in-terminal","count":1},{"label":"Continued","permalink":"/blog/tags/continued","count":1},{"label":"Phoenix Code","permalink":"/blog/tags/phoenix-code","count":1},{"label":"History","permalink":"/blog/tags/history","count":1},{"label":"Editor Experience","permalink":"/blog/tags/editor-experience","count":1},{"label":"UI Improvements","permalink":"/blog/tags/ui-improvements","count":1},{"label":"Live Code Hints","permalink":"/blog/tags/live-code-hints","count":3},{"label":"Native Apps","permalink":"/blog/tags/native-apps","count":3},{"label":"hello world","permalink":"/blog/tags/hello-world","count":1}]}')}}]); \ No newline at end of file diff --git a/assets/js/3adfe362.f7a9dfee.js b/assets/js/3adfe362.f7a9dfee.js new file mode 100644 index 00000000..60add9fb --- /dev/null +++ b/assets/js/3adfe362.f7a9dfee.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1797],{80874:(e,i,n)=>{n.r(i),n.d(i,{assets:()=>l,contentTitle:()=>a,default:()=>c,frontMatter:()=>r,metadata:()=>t,toc:()=>d});var t=n(71949),s=n(74848),o=n(28453);const r={slug:"release-3.6",title:"April-2024 Release (V-3.6) is now Live",description:"Phoenix Code 3.6 adds PHP and custom live preview servers, advanced CSS/LESS/SCSS code intelligence, and UX improvements.",authors:["arun","charly","andrew","faizan","phoenixBot"],tags:["Native Apps","Windows","Linux","Mac","Release"]},a=void 0,l={authorsImageUrls:[void 0,void 0,void 0,void 0,void 0]},d=[{value:"Custom Live Preview Servers",id:"custom-live-preview-servers",level:4},{value:"HTML Code Intelligence",id:"html-code-intelligence",level:4},{value:"Advanced CSS Tooling",id:"advanced-css-tooling",level:4},{value:"Reverse CSS Highlighting",id:"reverse-css-highlighting",level:4},{value:"Editor Rulers",id:"editor-rulers",level:4},{value:"Open Live Preview in any Browser",id:"open-live-preview-in-any-browser",level:4},{value:"Docusaurus Support",id:"docusaurus-support",level:4},{value:"UX Improvements",id:"ux-improvements",level:4},{value:"Community Contributions",id:"community-contributions",level:4},{value:"A Request from the Phoenix Team:",id:"a-request-from-the-phoenix-team",level:2}];function h(e){const i={a:"a",h2:"h2",h4:"h4",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(i.p,{children:["April release(3.6) of Phoenix Code is now available for download at\n",(0,s.jsx)(i.a,{href:"https://phcode.io",children:"phcode.io"}),"."]}),"\n",(0,s.jsx)(i.p,{children:"This month's upgrade is big! with a lot of features you asked for - PHP/Custom\nlive preview servers, advanced CSS/LESS/SCSS/HTML code intelligence and tooling,\nUX and app stability improvements."}),"\n",(0,s.jsx)(i.h4,{id:"custom-live-preview-servers",children:"Custom Live Preview Servers"}),"\n",(0,s.jsxs)(i.p,{children:["Preview PHP, React, and other dynamically rendered files with the\nnew server settings dialog. Read more at\n",(0,s.jsx)(i.a,{href:"https://docs.phcode.dev/docs/Features/live-preview-settings/",children:"Live Preview Settings Docs"}),"."]}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.img,{src:"https://github.com/phcode-dev/phoenix/assets/5336369/69fa0ee4-7262-42af-97d2-26154ec4a3b9",alt:"Screenshot from 2024-04-12 13-08-34"})}),"\n",(0,s.jsx)(i.h4,{id:"html-code-intelligence",children:"HTML Code Intelligence"}),"\n",(0,s.jsx)(i.p,{children:"CSS class hints are now shown within the HTML file's class attribute."}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.img,{src:"https://github.com/phcode-dev/phoenix/assets/5336369/112ad909-8fd0-4fc4-8042-041ecade9481",alt:"image"})}),"\n",(0,s.jsx)(i.h4,{id:"advanced-css-tooling",children:"Advanced CSS Tooling"}),"\n",(0,s.jsx)(i.p,{children:"Support for the latest CSS/LESS/SCSS syntax. Code intelligence and error\ndetection for CSS, SCSS, and LESS files."}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.img,{src:"https://github.com/phcode-dev/phoenix/assets/5336369/9c083bd3-9e34-418d-a1c8-c152393c37b2",alt:"image"})}),"\n",(0,s.jsx)(i.h4,{id:"reverse-css-highlighting",children:"Reverse CSS Highlighting"}),"\n",(0,s.jsx)(i.p,{children:"Clicking an element in the live preview now highlights its selector in the\nsource CSS file editor."}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.img,{src:"https://github.com/phcode-dev/phoenix/assets/5336369/dcb9a111-60fa-479b-8766-dd3109b2134f",alt:"Reverse CSS Highlighting gif"})}),"\n",(0,s.jsx)(i.h4,{id:"editor-rulers",children:"Editor Rulers"}),"\n",(0,s.jsxs)(i.p,{children:["Add multiple, color-customizable rulers in the editor to better visualize line\nlengths. ",(0,s.jsx)(i.a,{href:"https://docs.phcode.dev/docs/Features/editor-rulers/",children:"Read more..."})]}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.img,{src:"https://github.com/phcode-dev/phoenix/assets/5336369/71b8b04c-d2ca-47b8-84bb-53cd0fb4593c",alt:"image"})}),"\n",(0,s.jsx)(i.h4,{id:"open-live-preview-in-any-browser",children:"Open Live Preview in any Browser"}),"\n",(0,s.jsx)(i.p,{children:"Direct buttons to open live previews in Chrome, Edge, Safari, and Firefox."}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.img,{src:"https://github.com/phcode-dev/phoenix/assets/5336369/05f92c99-8a35-45a5-a8ee-75d581e6e96a",alt:"image"})}),"\n",(0,s.jsx)(i.h4,{id:"docusaurus-support",children:"Docusaurus Support"}),"\n",(0,s.jsxs)(i.p,{children:["Live preview ",(0,s.jsx)(i.a,{href:"https://docusaurus.io/",children:"docusaurus.io"})," based markdown\ndocumentation server."]}),"\n",(0,s.jsx)(i.h4,{id:"ux-improvements",children:"UX Improvements"}),"\n",(0,s.jsx)(i.p,{children:"Increased stability and more predictable live preview behavior."}),"\n",(0,s.jsx)(i.h4,{id:"community-contributions",children:"Community Contributions"}),"\n",(0,s.jsxs)(i.ol,{children:["\n",(0,s.jsxs)(i.li,{children:["Changes to files and folders made externally are now automatically synced in\nthe Browser version of Phoenix Code.\n(",(0,s.jsx)(i.a,{href:"https://github.com/phcode-dev/phoenix/pull/1566",children:"view change"}),") - By\n",(0,s.jsx)(i.a,{href:"https://github.com/ayoung5555",children:"Andrew Young"}),",\n",(0,s.jsx)(i.a,{href:"https://github.com/faizanbhagat",children:"Faizan Bhagat"})]}),"\n"]}),"\n",(0,s.jsx)(i.h2,{id:"a-request-from-the-phoenix-team",children:"A Request from the Phoenix Team:"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"Share your feedback:"})," ",(0,s.jsx)(i.a,{href:"https://github.com/orgs/phcode-dev/discussions",children:"https://github.com/orgs/phcode-dev/discussions"})]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"Spread the word"})," about Phoenix to friends and colleagues."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsxs)(i.a,{href:"https://github.com/sponsors/phcode-dev",children:[(0,s.jsx)(i.strong,{children:"Consider supporting us"})," on GitHub Sponsors"]}),".\nEvery contribution helps us to keep improving Phoenix Code."]}),"\n"]}),"\n",(0,s.jsx)(i.p,{children:"With gratitude,"}),"\n",(0,s.jsx)(i.p,{children:"The Phoenix Team"})]})}function c(e={}){const{wrapper:i}={...(0,o.R)(),...e.components};return i?(0,s.jsx)(i,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},28453:(e,i,n)=>{n.d(i,{R:()=>r,x:()=>a});var t=n(96540);const s={},o=t.createContext(s);function r(e){const i=t.useContext(o);return t.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function a(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),t.createElement(o.Provider,{value:i},e.children)}},71949:e=>{e.exports=JSON.parse('{"permalink":"/blog/release-3.6","editUrl":"https://github.com/phcode-dev/docs/blob/main/blog/2024-04-27-Release-3.6/index.md","source":"@site/blog/2024-04-27-Release-3.6/index.md","title":"April-2024 Release (V-3.6) is now Live","description":"Phoenix Code 3.6 adds PHP and custom live preview servers, advanced CSS/LESS/SCSS code intelligence, and UX improvements.","date":"2024-04-27T00:00:00.000Z","tags":[{"inline":true,"label":"Native Apps","permalink":"/blog/tags/native-apps"},{"inline":true,"label":"Windows","permalink":"/blog/tags/windows"},{"inline":true,"label":"Linux","permalink":"/blog/tags/linux"},{"inline":true,"label":"Mac","permalink":"/blog/tags/mac"},{"inline":true,"label":"Release","permalink":"/blog/tags/release"}],"readingTime":1.88,"hasTruncateMarker":false,"authors":[{"name":"Arun Bose","title":"Co-Founder, Phoenix Code","url":"https://github.com/abose","imageURL":"https://github.com/abose.png","key":"arun","page":null},{"name":"Charly P Abraham","title":"Co-Founder, Phoenix Code","url":"https://github.com/charlypa","imageURL":"https://github.com/charlypa.png","key":"charly","page":null},{"name":"Andrew Young","title":"Community Contributor","url":"https://github.com/ayoung5555","imageURL":"https://github.com/ayoung5555.png","key":"andrew","page":null},{"name":"Faizan Bhagat","title":"Community Contributor","url":"https://github.com/faizanbhagat","imageURL":"https://github.com/faizanbhagat.png","key":"faizan","page":null},{"name":"Phoenix Code Bot","title":"Our little elf who keeps the whole place together","url":"https://github.com/phoenixide","imageURL":"https://github.com/phoenixide.png","key":"phoenixBot","page":null}],"frontMatter":{"slug":"release-3.6","title":"April-2024 Release (V-3.6) is now Live","description":"Phoenix Code 3.6 adds PHP and custom live preview servers, advanced CSS/LESS/SCSS code intelligence, and UX improvements.","authors":["arun","charly","andrew","faizan","phoenixBot"],"tags":["Native Apps","Windows","Linux","Mac","Release"]},"unlisted":false,"prevItem":{"title":"Little Things Release (May-2024, V-3.7) is now Live","permalink":"/blog/release-3.7"},"nextItem":{"title":"March-2024 Release (V-3.5) is now Live","permalink":"/blog/release-3.5"}}')}}]); \ No newline at end of file diff --git a/assets/js/3b22f0b2.90317c06.js b/assets/js/3b22f0b2.90317c06.js new file mode 100644 index 00000000..4220d4e2 --- /dev/null +++ b/assets/js/3b22f0b2.90317c06.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1962],{97768:e=>{e.exports=JSON.parse('{"tag":{"label":"Live Preview","permalink":"/blog/tags/live-preview","allTagsPath":"/blog/tags","count":4,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/live-preview","page":1,"postsPerPage":10,"totalPages":1,"totalCount":4,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]); \ No newline at end of file diff --git a/assets/js/3ee8ffe4.7d2c3bdc.js b/assets/js/3ee8ffe4.7d2c3bdc.js new file mode 100644 index 00000000..f1c22ae2 --- /dev/null +++ b/assets/js/3ee8ffe4.7d2c3bdc.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4655],{94155:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>r,contentTitle:()=>t,default:()=>h,frontMatter:()=>l,metadata:()=>i,toc:()=>c});const i=JSON.parse('{"id":"available-standard-libs","title":"Available Standard Libraries","description":"The following standard libraries are available inside Phoenix Code:","source":"@site/api/07-available-standard-libs.md","sourceDirName":".","slug":"/available-standard-libs","permalink":"/api/available-standard-libs","draft":false,"unlisted":false,"tags":[],"version":"current","sidebarPosition":7,"frontMatter":{"title":"Available Standard Libraries"},"sidebar":"tutorialSidebar","previous":{"title":"Publishing Themes & Extensions","permalink":"/api/publishing-extensions"},"next":{"title":"Show Dialogs","permalink":"/api/How-To/Dialogs"}}');var o=s(74848),a=s(28453);const l={title:"Available Standard Libraries"},t=void 0,r={},c=[{value:"jquery",id:"jquery",level:2},{value:"fontawesome",id:"fontawesome",level:2},{value:"Usage",id:"usage",level:3},{value:"devicon",id:"devicon",level:2},{value:"file-icons",id:"file-icons",level:2},{value:"Additional icon sources",id:"additional-icon-sources",level:2},{value:"Usage",id:"usage-1",level:3}];function d(e){const n={a:"a",blockquote:"blockquote",code:"code",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,a.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.p,{children:"The following standard libraries are available inside Phoenix Code:"}),"\n",(0,o.jsx)(n.h2,{id:"jquery",children:"jquery"}),"\n",(0,o.jsx)(n.p,{children:"jQuery is a JavaScript library designed to simplify HTML DOM tree traversal and manipulation, as well as event handling, CSS animations, and Ajax."}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:["credits: ",(0,o.jsx)(n.a,{href:"https://jquery.com/",children:"https://jquery.com/"})]}),"\n"]}),"\n",(0,o.jsx)(n.h2,{id:"fontawesome",children:"fontawesome"}),"\n",(0,o.jsx)(n.p,{children:"Fontawesome is used for iconography in Phoenix Code."}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:["credits: ",(0,o.jsx)(n.a,{href:"https://fontawesome.com/",children:"https://fontawesome.com/"})]}),"\n"]}),"\n",(0,o.jsx)(n.h3,{id:"usage",children:"Usage"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-html",children:'\x3c!-- This example uses element with: \n1. the `fa-solid` style class for solid style\n2. the `user` icon with the `fa-` prefix --\x3e\n\n\n\x3c!-- Or you can use a element, with classes applied in the same way --\x3e\n\n'})}),"\n",(0,o.jsxs)(n.p,{children:["Reference: ",(0,o.jsx)(n.a,{href:"https://fontawesome.com/docs/web/add-icons/how-to",children:"https://fontawesome.com/docs/web/add-icons/how-to"})]}),"\n",(0,o.jsx)(n.p,{children:"See the following urls for available icons:"}),"\n",(0,o.jsxs)(n.ol,{children:["\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"https://fontawesome.com/v5/cheatsheet/free/solid",children:"https://fontawesome.com/v5/cheatsheet/free/solid"})}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"https://fontawesome.com/v5/cheatsheet/free/regular",children:"https://fontawesome.com/v5/cheatsheet/free/regular"})}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"https://fontawesome.com/v5/cheatsheet/free/brands",children:"https://fontawesome.com/v5/cheatsheet/free/brands"})}),"\n"]}),"\n",(0,o.jsx)(n.h2,{id:"devicon",children:"devicon"}),"\n",(0,o.jsx)(n.p,{children:"devicon is used for iconography in Phoenix Code."}),"\n",(0,o.jsxs)(n.blockquote,{children:["\n",(0,o.jsx)(n.p,{children:"usage: similar to fontawesome"}),"\n"]}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:["credits: ",(0,o.jsx)(n.a,{href:"https://devicon.dev/",children:"https://devicon.dev/"})]}),"\n"]}),"\n",(0,o.jsx)(n.h2,{id:"file-icons",children:"file-icons"}),"\n",(0,o.jsx)(n.p,{children:"file-icon is used for iconography in Phoenix Code."}),"\n",(0,o.jsxs)(n.blockquote,{children:["\n",(0,o.jsx)(n.p,{children:"usage: similar to fontawesome"}),"\n"]}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:["credits: ",(0,o.jsx)(n.a,{href:"https://uiwjs.github.io/file-icons/index.html",children:"https://uiwjs.github.io/file-icons/index.html"})]}),"\n"]}),"\n",(0,o.jsx)(n.h2,{id:"additional-icon-sources",children:"Additional icon sources"}),"\n",(0,o.jsx)(n.p,{children:"This is not included in Phoenix, but you can get icons from"}),"\n",(0,o.jsxs)(n.ol,{children:["\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"http://ionicons.com",children:"Ionicons"})}),"\n"]}),"\n",(0,o.jsx)(n.h3,{id:"usage-1",children:"Usage"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-html",children:'\x3c!-- This example uses element --\x3e\n\n'})}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.strong,{children:"NB"}),": Svg icons are not integrated in source."]}),"\n",(0,o.jsxs)(n.p,{children:["Reference: ",(0,o.jsx)(n.a,{href:"https://www.npmjs.com/package/devicon",children:"https://www.npmjs.com/package/devicon"})]}),"\n",(0,o.jsxs)(n.p,{children:["See the following urls for available icons:\n",(0,o.jsx)(n.a,{href:"https://devicon.dev/",children:"https://devicon.dev/"})]})]})}function h(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(d,{...e})}):d(e)}},28453:(e,n,s)=>{s.d(n,{R:()=>l,x:()=>t});var i=s(96540);const o={},a=i.createContext(o);function l(e){const n=i.useContext(a);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:l(e.components),i.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/3f9a993f.9c5f3eec.js b/assets/js/3f9a993f.9c5f3eec.js new file mode 100644 index 00000000..27664e7f --- /dev/null +++ b/assets/js/3f9a993f.9c5f3eec.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1047],{85085:a=>{a.exports=JSON.parse('{"tag":{"label":"Comparison","permalink":"/blog/tags/comparison","allTagsPath":"/blog/tags","count":1,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/comparison","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]); \ No newline at end of file diff --git a/assets/js/407a5e12.852d2927.js b/assets/js/407a5e12.852d2927.js new file mode 100644 index 00000000..21793df1 --- /dev/null +++ b/assets/js/407a5e12.852d2927.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8044],{29778:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>o,contentTitle:()=>c,default:()=>a,frontMatter:()=>l,metadata:()=>i,toc:()=>d});const i=JSON.parse('{"id":"Workspace/find-in-files","title":"Find In Files","description":"The Find in Files feature in Phoenix Code is a powerful tool to quickly search for specific text across multiple files within a project. This feature is useful for developers working on large codebases to find references, variable names, or specific lines of code.","source":"@site/docs/05-Workspace/02-find-in-files.md","sourceDirName":"05-Workspace","slug":"/Features/find-in-files","permalink":"/docs/Features/find-in-files","draft":false,"unlisted":false,"editUrl":"https://github.com/phcode-dev/docs/blob/main/docs/05-Workspace/02-find-in-files.md","tags":[],"version":"current","sidebarPosition":2,"frontMatter":{"slug":"/Features/find-in-files"},"sidebar":"tutorialSidebar","previous":{"title":"File Management","permalink":"/docs/file-management"},"next":{"title":"Customizing the Editor","permalink":"/docs/customizing-editor"}}');var t=n(74848),r=n(28453);const l={slug:"/Features/find-in-files"},c="Find In Files",o={},d=[{value:"Searching Within a Folder",id:"searching-within-a-folder",level:2},{value:"Using File Filters",id:"using-file-filters",level:2},{value:"For searching only within files matching pattern",id:"for-searching-only-within-files-matching-pattern",level:3},{value:"For Excluding files",id:"for-excluding-files",level:3},{value:"The filter pattern",id:"the-filter-pattern",level:2}];function h(e){const s={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,r.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(s.header,{children:(0,t.jsx)(s.h1,{id:"find-in-files",children:"Find In Files"})}),"\n",(0,t.jsx)(s.p,{children:"The Find in Files feature in Phoenix Code is a powerful tool to quickly search for specific text across multiple files within a project. This feature is useful for developers working on large codebases to find references, variable names, or specific lines of code."}),"\n",(0,t.jsxs)(s.p,{children:["To search across your project files, use ",(0,t.jsx)(s.code,{children:"Ctrl-Shift-F"})," on Windows/Linux or ",(0,t.jsx)(s.code,{children:"Cmd-Shift-F"})," on Mac, or select ",(0,t.jsx)(s.code,{children:"Find > Find in Files"})," from the menu. This feature searches for your term throughout the project's files and displays each occurrence with its file name, line number, and a snippet of the code for context."]}),"\n",(0,t.jsx)(s.p,{children:(0,t.jsx)(s.img,{alt:"Alt text",src:n(36920).A+"",width:"762",height:"402"})}),"\n",(0,t.jsx)(s.h2,{id:"searching-within-a-folder",children:"Searching Within a Folder"}),"\n",(0,t.jsx)(s.p,{children:"To search within a specific folder in Phoenix:"}),"\n",(0,t.jsxs)(s.ol,{children:["\n",(0,t.jsx)(s.li,{children:"Right-click on the folder in the Files panel where you want to perform the search."}),"\n",(0,t.jsx)(s.li,{children:'From the context menu that appears, select "Find in...".'}),"\n"]}),"\n",(0,t.jsx)(s.p,{children:(0,t.jsx)(s.img,{alt:"Alt text",src:n(81979).A+"",width:"387",height:"387"})}),"\n",(0,t.jsxs)(s.ol,{start:"3",children:["\n",(0,t.jsxs)(s.li,{children:["The find bar will now appear with search restricted to that folder (See ",(0,t.jsx)(s.code,{children:"in y/"})," in the below image)."]}),"\n"]}),"\n",(0,t.jsx)(s.p,{children:(0,t.jsx)(s.img,{alt:"Alt text",src:n(30422).A+"",width:"268",height:"90"})}),"\n",(0,t.jsx)(s.h2,{id:"using-file-filters",children:"Using File Filters"}),"\n",(0,t.jsx)(s.p,{children:"By default, Find in Files searches all files in your project folder. You can exclude or include files, file types, whole folders, or other patterns:"}),"\n",(0,t.jsxs)(s.ul,{children:["\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsx)(s.p,{children:'Click the "No Files Excluded" dropdown from the search bar.'}),"\n",(0,t.jsx)(s.p,{children:(0,t.jsx)(s.img,{alt:"Alt text",src:n(34330).A+"",width:"762",height:"402"})}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(s.p,{children:"Phoenix Code allows you to specify which files and folders should be excluded or included during project searches."}),"\n",(0,t.jsx)(s.h3,{id:"for-searching-only-within-files-matching-pattern",children:"For searching only within files matching pattern"}),"\n",(0,t.jsxs)(s.p,{children:["When you select ",(0,t.jsx)(s.code,{children:"Search in files"})," option from the above dropdown, the filter will search only within files and folders that match the entered patterns. Entering ",(0,t.jsx)(s.code,{children:"*.json,*.css"})," will include only JSON and css files in your search results, or just enter ",(0,t.jsx)(s.code,{children:"json"})," to select any files having charecters ",(0,t.jsx)(s.code,{children:"json"})," in its path. See more patterns below."]}),"\n",(0,t.jsx)(s.p,{children:(0,t.jsx)(s.img,{alt:"Alt text",src:n(19269).A+"",width:"778",height:"493"})}),"\n",(0,t.jsx)(s.h3,{id:"for-excluding-files",children:"For Excluding files"}),"\n",(0,t.jsxs)(s.p,{children:["When you select ",(0,t.jsx)(s.code,{children:"Exclude files"})," option from the above dropdown, the filter will ignore files and folders that match the patterns you enter. For instance, typing ",(0,t.jsx)(s.code,{children:"*.json"})," in the text area will exclude all JSON files from your search results. See more patterns below."]}),"\n",(0,t.jsx)(s.h2,{id:"the-filter-pattern",children:"The filter pattern"}),"\n",(0,t.jsx)(s.p,{children:"This section describes the format of the exclusion/search within files glob pattern."}),"\n",(0,t.jsxs)(s.ol,{children:["\n",(0,t.jsxs)(s.li,{children:["Each pattern should be entered as a comma seperated text. You can specify multiple patterns:","\n",(0,t.jsx)(s.pre,{children:(0,t.jsx)(s.code,{className:"language-txt",children:"*.js,*.json\n"})}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["To fuzzy search, just enter text. Eg. entering ",(0,t.jsx)(s.code,{children:"css"})," will match all filenames that has the letters ",(0,t.jsx)(s.code,{children:"css"})," in its path name like ",(0,t.jsx)(s.code,{children:"x/st.css"})," and ",(0,t.jsx)(s.code,{children:"cssFile.md"}),"."]}),"\n",(0,t.jsxs)(s.li,{children:["To match all JavaScript files in any directory, use ",(0,t.jsx)(s.code,{children:"*.js"}),". This matches files like ",(0,t.jsx)(s.code,{children:"a/b/x.js"})," and ",(0,t.jsx)(s.code,{children:"xyz.js"}),"."]}),"\n",(0,t.jsxs)(s.li,{children:["To match JavaScript files only in the project root, use ",(0,t.jsx)(s.code,{children:"./*.js"}),". This matches ",(0,t.jsx)(s.code,{children:"x.js"})," in the root but not ",(0,t.jsx)(s.code,{children:"y/x.js"})," in a subdirectory."]}),"\n",(0,t.jsxs)(s.li,{children:["To match css files only in a folder ",(0,t.jsx)(s.code,{children:"search/folder"}),", use ",(0,t.jsx)(s.code,{children:"search/folder/*.css"}),". This matches ",(0,t.jsx)(s.code,{children:"search/folder/x.css"})," but not ",(0,t.jsx)(s.code,{children:"y/x.css"}),"."]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.code,{children:"?.js"})," will match only ",(0,t.jsx)(s.code,{children:"a/b/x.js"})," and not ",(0,t.jsx)(s.code,{children:"xyx.js"})]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.code,{children:"**/some_folder/**"})," will match ",(0,t.jsx)(s.code,{children:"some_folder"})," anywhere."]}),"\n",(0,t.jsxs)(s.li,{children:[(0,t.jsx)(s.code,{children:"[]"})," to declare a range of characters to match (",(0,t.jsx)(s.code,{children:"example.[0-9]"})," to match on ",(0,t.jsx)(s.code,{children:"example.0"}),", ",(0,t.jsx)(s.code,{children:"example.1"}),", \u2026)"]}),"\n",(0,t.jsxs)(s.li,{children:["To search for files names with ",(0,t.jsx)(s.code,{children:","})," in it, use escape char ",(0,t.jsx)(s.code,{children:"\\"}),". Eg. To match a file with name ",(0,t.jsx)(s.code,{children:"hello,world.js"}),", the filter string to use is ",(0,t.jsx)(s.code,{children:"hello\\,world.js"}),"."]}),"\n",(0,t.jsxs)(s.li,{children:["More complex glob patterns can be provided. See: ",(0,t.jsx)(s.a,{href:"https://www.malikbrowne.com/blog/a-beginners-guide-glob-patterns/",children:"https://www.malikbrowne.com/blog/a-beginners-guide-glob-patterns/"})]}),"\n"]})]})}function a(e={}){const{wrapper:s}={...(0,r.R)(),...e.components};return s?(0,t.jsx)(s,{...e,children:(0,t.jsx)(h,{...e})}):h(e)}},36920:(e,s,n)=>{n.d(s,{A:()=>i});const i=n.p+"assets/images/fif-750c256065fa01ad80939c7aab57a891.png"},81979:(e,s,n)=>{n.d(s,{A:()=>i});const i=n.p+"assets/images/folder-1d082044530ff0ee5776a2f2255f6f49.png"},30422:(e,s,n)=>{n.d(s,{A:()=>i});const i="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQwAAABaCAYAAABNLGjNAAAABHNCSVQICAgIfAhkiAAAABl0RVh0U29mdHdhcmUAZ25vbWUtc2NyZWVuc2hvdO8Dvz4AAAAwdEVYdENyZWF0aW9uIFRpbWUAU2F0dXJkYXkgMDIgTWFyY2ggMjAyNCAwODowNTozNiBQTZJJ9VMAABNlSURBVHic7d19VFR1HsfxNzPDkzgpDyJHVhFsRQVKhDTjrJut25YPkK52aqWObtlaG6Xsg66co2boagZnOZpWEqakm5uauinS5iMluyQmgsUopJCIDALKCOM8wOwf5KwE6iQDw7Df1zkemd+993e/d8TPvfc3d+51CQkJsSCEEDZQOLoAIYTzkMAQQthMAkMIYTMJDNFt7Nq1y6n7b4+fnx/p6eldvt7OIoEh7lpCQgJvvPGGo8uwK4VCwWOPPeboMrothwdGamoqkZGRji6j08XExPD66687ugy7ysrKYuvWrY4uw668vLx4/PHHHV1Gt6XqaAehoaEsXryY69evo1AoqKys5ODBg3z22Wf2qK/bCA0NZf78+cydO7dV+4oVK9i/fz9Hjx51UGWOU1JS4ugS7M7T09PRJXRrHQ4MAJ1Ox9y5c3FzcyM8PJzZs2fj6+vLtm3bbFreYpFLQZzR5MmTCQgIsJ6jT548GaVSSV1dHc8++yyenp40NzeTlJREeXl5q2UnTpzIs88+i9FoxMXFhczMTMxmc6t5FAoFCQkJxMTEYDAYaGxsJDk5me+++47evXvz/vvvEx8fz/Xr1wHo168fK1eu5LnnnrtlzZ6enixYsIDBgwejVqv517/+xdtvvw3AY489xvTp0wkNDSUtLQ2Av/71r1y6dIn09HTmz59PUlISgYGBqNVqUlJSyMnJ4fnnnycmJga1Wk1OTo512Z7ILoFxg9Fo5MSJExiNRv785z+TlZVFfX0999xzD7NnzyY0NBSdTkdmZiZFRUXW5YKDg5k2bRoDBgxAo9GwYcMGrly5QnBwMEuWLGHWrFnWeTds2MCqVasoKSnBxcWF3/zmN4waNYq+ffvi4eEBwKpVqzh16pQ9N81mMTExTJ06FXd3d06dOsWmTZswGo1t5ktNTSUnJ4ewsDDUajW1tbW88847XLlyxQFV289TTz1FVlYWc+bMwWKxEBUVxeLFi3n++eet80ydOpUnnniCOXPmoNPpAJg+fTq+vr6t+lqxYgVlZWU8+eSTAPz0pz9l1apVzJw5k2vXrrFhwwYSEhJYvXo1AH/84x9ZtWrVLWtzdXVlyZIlrF27lgsXLqBQKEhPT+eLL76gsLCQ/fv3880335CYmMirr77aallvb28WLlxIamoqWq0WX19ftm7dSk5ODocPHyY9PR0XFxfWrVvH2LFjyc3Ntcv72d10yhhGUVERRqORe++9F4B58+ZRUVHB73//e9asWcOLL76Il5eXdf7Q0FDWrl1LQkICZrO5VUDczs9//nOGDh3KwoULefnll7l06RJJSUkUFhZ2xmbdUUREBDNmzGD16tW88soruLi4EBsbe8v5/f39WblyJQsWLECr1dq83d1Zfn4+mzdvth415ufn069fP+t0lUrFK6+8QmJiojUsALZv387Vq1etr0NDQxkwYADr16+3tp09e5b8/HxiYmIAyM7OJigoiJCQEKKjo6mpqeHMmTO3rM1isZCcnMyFCxcAaG5uZteuXYwePfqO2+Xu7s6KFSvQarUA1NTUcPLkSQoKCvj888+t/W/fvp0xY8bcsT9n1WmDnnV1dXh5eTFo0CACAgLYsWMHFouFCxcucObMGUJDQ63zZmdno9Vq0ev17N69m8jISFxcXO64juDgYL755htMJhN6vZ5z584RFBTUaac4vXv3Zt26da3+DBw40Dp9woQJfPLJJ1RVVWGxWNi3bx8jR468ZX95eXnWw/ADBw70iMHf9o6Q9Ho97u7uAIwYMQKNRkNNTc1t+xk3bhxZWVlt2k+fPs2QIUOsr5cvX86iRYt44YUXWLNmzW37NJvNXLt2rVVbdXV1myObWy3b0NDQZtmbQ+5Gm5+f3x37c1Z2PSW5mY+PDzqdDn9/f9zc3EhKSrJOU6vVuLm5tbtcfX09KpXKenpxOxqNhsmTJ/Pxxx/j7u7O0KFDO/Wz9oaGBv7yl7+0alu0aJH1Z39/fyZMmMCDDz4ItJyDNzU12dS3Xq9HpVLh6emJXq+3X9HdQHNzM0qlEgBfX1/rHv52fH19iYmJaROiXl5efPHFF9bXlZWVuLq6cubMmbt6326u7W6W/SGLxXLX/TmDTgmMyMhIlEolJSUl+Pn5YTKZWL58uU17/p/85CfodDr0ej1ms/m2b35BQQFTpkzhT3/6EwBbtmyx6ZfxblksljZ7lJsDobq6mtOnT5Odnf2j+x40aJB1u3synU5n0x69rq6OPXv2sHPnztvO9+ijj3L48GHGjBnDoEGD2gyuCvuy6ymJm5sbUVFRzJkzh3/+859cu3aNsrIytFot8fHxuLm5oVAoWp2OAERHR9O7d298fX158sknOXjwIACXL1+mubmZkJAQAH75y1+2OvJ48MEHOX/+PMnJySQnJ/Of//zHnpvzox04cIApU6YQHBwMtOwl/f39gZa90Q+PqkaPHm3d7hkzZnDo0KEur7mraTQaIiMjcXV1bTPt5tPQw4cPM378+Nv21atXL55++mk2b97MypUrWbx4cYfrM5lMPfoIoaPscoShVqt57733UCgUXLx4kW3btnHkyBGgZa+ckpLCM888Q1paGmazmcLCQkpKSqx758rKSpYsWYJarSY3N9e6V9Hr9Xz44YfMnz+furo6jhw5wrfffmtdb2FhITNnzrQOWhkMBjQaDe+88471o7auVFBQwNatW5k7dy7e3t5otVq2bduGVqulpKQEtVrNo48+yqeffgq0/HLevN07duzo8pq7mk6n4+DBgyxcuJDk5GQsFgu9evUiMTGRXr16WefTaDTU1tYye/ZsNm7caG2PiIiwDmonJiby9ttv09TUxPnz5yksLGTatGns3LkTtVpNQkICKSkpGAwGm+u7fPkyQUFBqFSqNh/z3o2edslAhwNDo9Ewc+bM285TX1/PW2+91e60xMREAD755JN2p2dlZbUa/Dpw4ID152nTppGens6xY8eAluB67bXXuO+++8jLy/tR23EnGo2mzUVb0HoMA+DYsWPWem5WXV3NSy+91KotPz+fjIwMu9bpDJYvX05iYiL/+Mc/qK+vp6GhgdTUVOuR5A3Lli3jxRdfZNOmTRgMBpRKJSdOnKC4uJjQ0FD69OnT6qhy/fr1fPDBBxw+fJg+ffowefJk3nvvPaqqqmyuzWg0smXLFrZs2YJOp2PdunWcOHHirre1traWPn36MGnSJPbu3XvX/XQXLs58A51ly5bx2WefWa+yHDhwIAsXLmTp0qVUV1c7uLrbS01NJTMzk6+++srRpQhhs077lKQrZGRkEB8fz6RJkzAYDDQ0NPC3v/2t24eFEM7KqY8whBBdy+HfVhVCOA8JDCGEzSQwhBA2k8AQQthMAkMIYTMJDCGEzSQwhBA2k8AQQthMAkMIYTOVI77VKYRwTiq1Wu3oGoQQTkKlUjn198+EEF1IZcvNdoUQAmTQUwjxI0hgCCFsJoEhhLCZBIYQwmYua0/0sNsaO6m3n41wdAlC3JFq7RfO/fBfZ9ff3cCM6P5tHuHnCPa6tX5HKJVKVCpVu88t6QlMJhMmk6ndp6Y5A9WwA7MdXcP/teJftDxzY8SIEQ6uBL7++muH16HX66mqqsJkMvW40LjxkKQBAwbg6enp6HLuiqqn/aM4qx8+6NdRHF2HQqHAz8+PioqKHhkYAQEBgOPf57slg56iW7nxcGRbH2LtTJqbm1EoFE57OgISGKIbcub/UHfi7NsmgSGEsJkEhhDCZhIYQgibSWA4mYEDBxIXF8eUKVMcXYpN1Go1GRkZdOV9VwIDA0lLS6N///5273vw4MG8+eabdu/XWUhgOJkJEyYQFxfH1KlTGTx4sKPLuaN77rkHgN69e3fZOi9fvsyuXbuora21e9/h4eGcPn3a7v12Cx4jiV+ykiXxI1EDDHmKJSkpvDjWwzqL3D3HiSgUCkaNGkV+fj6RkZFERUVx/vx5R5fVrmXLltHQ0EB9fT0AsbGxeHt74+rqyuuvv96p6zYYDBw6dKhT+g4PD+fgwYOd0nf7VITGL+WFSCj++yo2HNe1tIbHs3T2MIrfXcoHmh9zde4g4pJeZZzPD5qL/86CjXXUarWoa3WYblmNcBpDhw7Fy8uLvLw8fHx8iI6OZseOHa3mue+++xg/fjyhoaG4ublRXV3NyZMn2b17N115/9ZNmzYxYcIEoqOjAYiOjub48eNkZ2d3+rp9fHxITU3ld7/7HQaDgd/+9rfU1NQQEBBAUFAQAOvXr+e7776zLuPi4sKbb77JpUuXWL16NQBBQUG89tprrFu3jry8PNzc3AgJCWHNmjWdvg1teTJsUhyhRR+gscc/Y20hew8WUX8jGepKMZvr2Lc+9baLSWB0gEqlwsPD484zAtevX+/w9zSioqJobm6mqKiIwMBAYmNjCQwMpKKiwjrPww8/THBwMDk5OTQ2NhIcHMyvfvUr3N3d2bx5c4fW/2OUlpZSWVlJREQELi4uNDc3k5mZSWNjY5fVcLOYmBhSUlKoqqriqaeeIjY2lrfeess63WKxkJOTw5QpU1Cr1eh0Ou6//34MBgMFBQUADBs2jIqKCsdcpVlbRoVnOHGPDOCNfRfbmcGDQT+bzhPjhjFADbqLxRzdtZ2c8luki76cotzjaG9uU41kVvIz3Fu8kaXvF9H2t9VDAqMjzGYz/fr1w9vb+7bz1dXVce7cuQ6vLzo6mvLycvR6PRqNBmgJkZsDIyMjA71eb71SUqlUkpaWRkRE138bNjY2lsbGRpYvX05SUhKxsbF8+OGHXV4HQH5+PlVVVQCcPXuWsLCwNvN8/vnnxMXFER0dzaFDh7j//vs5deoUBoMBaDkdKSoq6tK6rVRaco+piBsXx9jc9Xz5g8ne0c/wwhND0BceZbcGQn82jide8MScsoHcuvY69MBDrW4ZqzCZ0F+/3k5AtKaOfkYCo6NuBMGtQsNeYTFkyBD69OlDcXExw4YNQ6FQ0NTURFRUFHv27LHOZzAYePjhhwkLC8PDw4N+/frRq1evLv+yk1KpZOjQoaSlpXH16lXWrl3LrFmzusVl32azGaVS2ab98uXLfP3114wePZrjx48THBzM/v37rdPDwsLIzMzsylL/x1WFLmcvRQ+8wKOTwin60nzTOIM/keOG4Vl7jI0f7KPUDF9qPVnw0kOMHetP7j5t2/4Cf8GrS3/x/YsK9q5K5eBtx4j9eWDcMAkMezh37hxKpdL6icAN9goLaDmSABgzZgxjxoyxtg8cOBB/f3+02pZfinnz5jF8+HByc3M5cOAATU1NPPfcc/j6+tqlDls1NTWxbNky6+vy8vJWr7uro0ePMmfOHKKjozGZTNbTEW9vb/z8/Dh79qxjClOpQK9h96fFLJg+kUdKS286IlDjrwbqtGi/bzRrL1IL+N/jjQpt26OH2q/YvvtLak0AerR3/ECpZR0SGHZSWlrKkCFDrKFRX19vt7CAltORxsZG1q5da20LDw9n4sSJjBo1iv379zN48GCGDx9OTk4OGzdutM5n6YR7JM2YMYPHH3+cffv2sX37drv37ygnTpzAYDAQFxfHyZMnMRqNQMt7XVxc7PCjI13uXo6NfYWHxprR/68VrQ5Q++OvAp0ZVP4D8AF09XXtn2roL1JapPnBGMZt14xWJ9dh2I3FYqG0tJT6+nrq6+spLS21W99BQUH4+flRUFBAcXGx9c+Njw5vfBJx41w7JCSEiIgIRo4cyR/+8Af8/PzsVssN48ePb/V3T2Eymfj3v/9N3759ycvLs7aHhYV1k+svLvLp3pPoAwP53yejWr7KLUHv8wC/jp/I2LETif/1A/joS8jNbed0xFYmE2bAZ8i9eH+/DgkMO7oRGqWlpXbdq48aNQqAU6dOtWqvqamhoqKCkJAQfHx8qKys5OOPPyYgIID58+czc+ZMvv32W44cOWK3Wm7Ys2cPV69ebTV+0l3U1tYya9Ysa4BmZGSwbds26/SCggIWLVp0y+WNRiMNDQ2t3u8RI0Z0k8AAs2Yv2cX6Vm11uRt5d1cR1wMfIi7uIQKvF7Fr48ZbDHja6OKXfFWmxyf8EcK9W9bhMmPGDLmnpwMVjnuXl2P68tH8h+3Wp7e3N2q1mvLy8h+1XFlZmfU6BUcrKyvr0qtDAfr378/w4cN5+umnyc7OZufOnQAMGjSIxMRE5s2b16H+r1271m3e37slYxg9UF1dHXV1Hdm1/H8aN24cjzzyCHl5eezevdvaXl5e3uGw6CkkMIT43kcffcRHH33k6DK6NRnDEELYTAJDCGEzCQwhhM0kMES3YzQa271029kpFApMplt9cdw5SGCIbsVoNHLlyhVUqp43Hu/q6kpdXZ316lFnpCoc966ja/i/1t+95eKisrIyB1fS8nV9R9ehVCpxdXXtcQ8xgpbAMJlMVFVVOe3jBlQvx/R1dA2Crr2FnXAcZw9Dl/DwcLnSUwhhExnDEELYTAJDCGEzCQwhhM0kMIQQNpPAEELYTOWQW6YLIZySymh2zgtIhBBdT+Xi4uLoGoQQTkLGMIQQNpMjDCGEzeQIQwhhMwkMIYTNJDCEEDaTwBBC2EwCQwhhMwkMIYTNJDCEEDaTwBBC2EwCQwhhMwkMIYTNJDCEEDaTwBBC2Oy/rmc9+rXEoioAAAAASUVORK5CYII="},34330:(e,s,n)=>{n.d(s,{A:()=>i});const i=n.p+"assets/images/new-exclusion-581fe6d26f53116e0f5267c53bc985ef.png"},19269:(e,s,n)=>{n.d(s,{A:()=>i});const i=n.p+"assets/images/search_in_files-1e116404456666ade0eed9fa1c542502.png"},28453:(e,s,n)=>{n.d(s,{R:()=>l,x:()=>c});var i=n(96540);const t={},r=i.createContext(t);function l(e){const s=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function c(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:l(e.components),i.createElement(r.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/416.31faae71.js b/assets/js/416.31faae71.js new file mode 100644 index 00000000..c82abda3 --- /dev/null +++ b/assets/js/416.31faae71.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[416],{90416:(s,c,e)=>{e.r(c)}}]); \ No newline at end of file diff --git a/assets/js/41b04fbe.b8fca7d7.js b/assets/js/41b04fbe.b8fca7d7.js new file mode 100644 index 00000000..0704aa9c --- /dev/null +++ b/assets/js/41b04fbe.b8fca7d7.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5245],{23079:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>d,default:()=>x,frontMatter:()=>o,metadata:()=>s,toc:()=>c});const s=JSON.parse('{"id":"API-Reference/utils/ExtensionLoader","title":"ExtensionLoader","description":"Import :","source":"@site/api/API-Reference/utils/ExtensionLoader.md","sourceDirName":"API-Reference/utils","slug":"/API-Reference/utils/ExtensionLoader","permalink":"/api/API-Reference/utils/ExtensionLoader","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"ExtensionInterface","permalink":"/api/API-Reference/utils/ExtensionInterface"},"next":{"title":"ExtensionUtils","permalink":"/api/API-Reference/utils/ExtensionUtils"}}');var i=t(74848),r=t(28453);const o={},d=void 0,l={},c=[{value:"Import :",id:"import-",level:3},{value:"EVENT_EXTENSION_LOADED : string",id:"event_extension_loaded--string",level:2},{value:"EVENT_EXTENSION_DISABLED : string",id:"event_extension_disabled--string",level:2},{value:"EVENT_EXTENSION_LOAD_FAILED : string",id:"event_extension_load_failed--string",level:2},{value:"getDefaultExtensionPath() \u21d2 string",id:"getdefaultextensionpath--string",level:2},{value:"getUserExtensionPath()",id:"getuserextensionpath",level:2},{value:"getRequireContextForExtension(name) \u21d2 Object",id:"getrequirecontextforextensionname--object",level:2},{value:"loadExtension(name, config, entryPoint) \u21d2 $.Promise",id:"loadextensionname-config-entrypoint--promise",level:2},{value:"testExtension(name, config, entryPoint) \u21d2 $.Promise",id:"testextensionname-config-entrypoint--promise",level:2},{value:"loadAllDefaultExtensions() \u21d2 $.Promise",id:"loadalldefaultextensions--promise",level:2},{value:"loadAllExtensionsInNativeDirectory(directory) \u21d2 $.Promise",id:"loadallextensionsinnativedirectorydirectory--promise",level:2},{value:"loadExtensionFromNativeDirectory(directory) \u21d2 Promise",id:"loadextensionfromnativedirectorydirectory--promise",level:2},{value:"testAllExtensionsInNativeDirectory(directory) \u21d2 $.Promise",id:"testallextensionsinnativedirectorydirectory--promise",level:2},{value:"testAllDefaultExtensions() \u21d2 $.Promise",id:"testalldefaultextensions--promise",level:2},{value:"getSourcePathForExtension(extensionPath) \u21d2 string",id:"getsourcepathforextensionextensionpath--string",level:2},{value:"init(A) \u21d2 $.Promise",id:"inita--promise",level:2},{value:"uninstallExtension(extensionID) \u21d2 Promise",id:"uninstallextensionextensionid--promise",level:2}];function a(e){const n={br:"br",code:"code",h2:"h2",h3:"h3",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h3,{id:"import-",children:"Import :"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-js",children:'const ExtensionLoader = brackets.getModule("utils/ExtensionLoader")\n'})}),"\n",(0,i.jsx)("a",{name:"EVENT_EXTENSION_LOADED"}),"\n",(0,i.jsxs)(n.h2,{id:"event_extension_loaded--string",children:["EVENT_EXTENSION_LOADED : ",(0,i.jsx)("code",{children:"string"})]}),"\n",(0,i.jsx)(n.p,{children:"Extension loaded event"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,i.jsx)("a",{name:"EVENT_EXTENSION_DISABLED"}),"\n",(0,i.jsxs)(n.h2,{id:"event_extension_disabled--string",children:["EVENT_EXTENSION_DISABLED : ",(0,i.jsx)("code",{children:"string"})]}),"\n",(0,i.jsx)(n.p,{children:"Extension disabled event"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,i.jsx)("a",{name:"EVENT_EXTENSION_LOAD_FAILED"}),"\n",(0,i.jsxs)(n.h2,{id:"event_extension_load_failed--string",children:["EVENT_EXTENSION_LOAD_FAILED : ",(0,i.jsx)("code",{children:"string"})]}),"\n",(0,i.jsx)(n.p,{children:"Extension load failed event"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,i.jsx)("a",{name:"getDefaultExtensionPath"}),"\n",(0,i.jsxs)(n.h2,{id:"getdefaultextensionpath--string",children:["getDefaultExtensionPath() \u21d2 ",(0,i.jsx)("code",{children:"string"})]}),"\n",(0,i.jsx)(n.p,{children:"Responsible to get the default extension path"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,i.jsx)("a",{name:"getUserExtensionPath"}),"\n",(0,i.jsx)(n.h2,{id:"getuserextensionpath",children:"getUserExtensionPath()"}),"\n",(0,i.jsx)(n.p,{children:'Returns the full path of the default user extensions directory. This is in the users\napplication support directory, which is typically\n/Users/"user"/Application Support/Brackets/extensions/user on the mac, and\nC:\\Users"user"\\AppData\\Roaming\\Brackets\\extensions\\user on windows.'}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,i.jsx)("a",{name:"getRequireContextForExtension"}),"\n",(0,i.jsxs)(n.h2,{id:"getrequirecontextforextensionname--object",children:["getRequireContextForExtension(name) \u21d2 ",(0,i.jsx)("code",{children:"Object"})]}),"\n",(0,i.jsx)(n.p,{children:"Returns the require.js require context used to load an extension"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function",(0,i.jsx)(n.br,{}),"\n",(0,i.jsx)(n.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"Object"})," - A require.js require object used to load the extension, or undefined if\nthere is no require object with that name"]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsx)(n.tbody,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"name"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(n.td,{children:"used to identify the extension"})]})})]}),"\n",(0,i.jsx)("a",{name:"loadExtension"}),"\n",(0,i.jsxs)(n.h2,{id:"loadextensionname-config-entrypoint--promise",children:["loadExtension(name, config, entryPoint) \u21d2 ",(0,i.jsx)("code",{children:"$.Promise"})]}),"\n",(0,i.jsx)(n.p,{children:"Loads the extension that lives at baseUrl into its own Require.js context"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function",(0,i.jsx)(n.br,{}),"\n",(0,i.jsx)(n.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"$.Promise"})," - A promise object that is resolved when the extension is loaded, or rejected\nif the extension fails to load or throws an exception immediately when loaded.\n(Note: if extension contains a JS syntax error, promise is resolved not rejected)."]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"name"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(n.td,{children:"used to identify the extension"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"config"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"Object"})}),(0,i.jsx)(n.td,{children:"object with baseUrl property containing absolute path of extension"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"entryPoint"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(n.td,{children:"name of the main js file to load"})]})]})]}),"\n",(0,i.jsx)("a",{name:"testExtension"}),"\n",(0,i.jsxs)(n.h2,{id:"testextensionname-config-entrypoint--promise",children:["testExtension(name, config, entryPoint) \u21d2 ",(0,i.jsx)("code",{children:"$.Promise"})]}),"\n",(0,i.jsx)(n.p,{children:"Runs unit tests for the extension that lives at baseUrl into its own Require.js context"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function",(0,i.jsx)(n.br,{}),"\n",(0,i.jsx)(n.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"$.Promise"})," - A promise object that is resolved when all extensions complete loading."]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"name"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(n.td,{children:"used to identify the extension"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"config"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"Object"})}),(0,i.jsx)(n.td,{children:"object with baseUrl property containing absolute path of extension"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"entryPoint"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(n.td,{children:"name of the main js file to load"})]})]})]}),"\n",(0,i.jsx)("a",{name:"loadAllDefaultExtensions"}),"\n",(0,i.jsxs)(n.h2,{id:"loadalldefaultextensions--promise",children:["loadAllDefaultExtensions() \u21d2 ",(0,i.jsx)("code",{children:"$.Promise"})]}),"\n",(0,i.jsx)(n.p,{children:"Loads All brackets default extensions from brackets base https URL."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function",(0,i.jsx)(n.br,{}),"\n",(0,i.jsx)(n.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"$.Promise"})," - A promise object that is resolved when all extensions complete loading."]}),"\n",(0,i.jsx)("a",{name:"loadAllExtensionsInNativeDirectory"}),"\n",(0,i.jsxs)(n.h2,{id:"loadallextensionsinnativedirectorydirectory--promise",children:["loadAllExtensionsInNativeDirectory(directory) \u21d2 ",(0,i.jsx)("code",{children:"$.Promise"})]}),"\n",(0,i.jsx)(n.p,{children:"Loads the extension that lives at baseUrl into its own Require.js context"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function",(0,i.jsx)(n.br,{}),"\n",(0,i.jsx)(n.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"$.Promise"})," - A promise object that is resolved when all extensions complete loading."]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsx)(n.tbody,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"directory"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(n.td,{children:"an absolute native path that contains a directory of extensions. each subdirectory is interpreted as an independent extension"})]})})]}),"\n",(0,i.jsx)("a",{name:"loadExtensionFromNativeDirectory"}),"\n",(0,i.jsxs)(n.h2,{id:"loadextensionfromnativedirectorydirectory--promise",children:["loadExtensionFromNativeDirectory(directory) \u21d2 ",(0,i.jsx)("code",{children:"Promise"})]}),"\n",(0,i.jsxs)(n.p,{children:["Loads a given extension at the path from virtual fs. Used by ",(0,i.jsx)(n.code,{children:"debug menu> load project as extension"})]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsx)(n.tr,{children:(0,i.jsx)(n.th,{children:"Param"})})}),(0,i.jsx)(n.tbody,{children:(0,i.jsx)(n.tr,{children:(0,i.jsx)(n.td,{children:"directory"})})})]}),"\n",(0,i.jsx)("a",{name:"testAllExtensionsInNativeDirectory"}),"\n",(0,i.jsxs)(n.h2,{id:"testallextensionsinnativedirectorydirectory--promise",children:["testAllExtensionsInNativeDirectory(directory) \u21d2 ",(0,i.jsx)("code",{children:"$.Promise"})]}),"\n",(0,i.jsx)(n.p,{children:"Runs unit test for the extension that lives at baseUrl into its own Require.js context"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function",(0,i.jsx)(n.br,{}),"\n",(0,i.jsx)(n.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"$.Promise"})," - A promise object that is resolved when all extensions complete loading."]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsx)(n.tbody,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"directory"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(n.td,{children:"an absolute native path that contains a directory of extensions. each subdirectory is interpreted as an independent extension"})]})})]}),"\n",(0,i.jsx)("a",{name:"testAllDefaultExtensions"}),"\n",(0,i.jsxs)(n.h2,{id:"testalldefaultextensions--promise",children:["testAllDefaultExtensions() \u21d2 ",(0,i.jsx)("code",{children:"$.Promise"})]}),"\n",(0,i.jsx)(n.p,{children:"Runs unit test for the extension that lives at baseUrl into its own Require.js context"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function",(0,i.jsx)(n.br,{}),"\n",(0,i.jsx)(n.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"$.Promise"})," - A promise object that is resolved when all extensions complete loading."]}),"\n",(0,i.jsx)("a",{name:"getSourcePathForExtension"}),"\n",(0,i.jsxs)(n.h2,{id:"getsourcepathforextensionextensionpath--string",children:["getSourcePathForExtension(extensionPath) \u21d2 ",(0,i.jsx)("code",{children:"string"})]}),"\n",(0,i.jsx)(n.p,{children:"To get the source path for extension"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsx)(n.tr,{children:(0,i.jsx)(n.th,{children:"Param"})})}),(0,i.jsx)(n.tbody,{children:(0,i.jsx)(n.tr,{children:(0,i.jsx)(n.td,{children:"extensionPath"})})})]}),"\n",(0,i.jsx)("a",{name:"init"}),"\n",(0,i.jsxs)(n.h2,{id:"inita--promise",children:["init(A) \u21d2 ",(0,i.jsx)("code",{children:"$.Promise"})]}),"\n",(0,i.jsx)(n.p,{children:"Load extensions."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function",(0,i.jsx)(n.br,{}),"\n",(0,i.jsx)(n.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"$.Promise"})," - A promise object that is resolved when all extensions complete loading."]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsx)(n.tbody,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"A"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"Array."})}),(0,i.jsx)(n.td,{children:"list containing references to extension source location. A source location may be either (a) a folder name inside src/extensions or (b) an absolute path."})]})})]}),"\n",(0,i.jsx)("a",{name:"uninstallExtension"}),"\n",(0,i.jsxs)(n.h2,{id:"uninstallextensionextensionid--promise",children:["uninstallExtension(extensionID) \u21d2 ",(0,i.jsx)("code",{children:"Promise"})]}),"\n",(0,i.jsx)(n.p,{children:"Uninstall a deprecated extension"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function",(0,i.jsx)(n.br,{}),"\n",(0,i.jsx)(n.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"Promise"})," - A promise that resolves when the extension is uninstalled successfully"]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsx)(n.tbody,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"extensionID"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(n.td,{children:"The ID of the extension to uninstall"})]})})]})]})}function x(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(a,{...e})}):a(e)}},28453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>d});var s=t(96540);const i={},r=s.createContext(i);function o(e){const n=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),s.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/4250.48fba515.js b/assets/js/4250.48fba515.js new file mode 100644 index 00000000..3afa542d --- /dev/null +++ b/assets/js/4250.48fba515.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4250],{81869:(e,s,c)=>{c.d(s,{createGitGraphServices:()=>a.b});var a=c(67539);c(87960)}}]); \ No newline at end of file diff --git a/assets/js/4379.e1584c9c.js b/assets/js/4379.e1584c9c.js new file mode 100644 index 00000000..81bdee04 --- /dev/null +++ b/assets/js/4379.e1584c9c.js @@ -0,0 +1 @@ +(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4379],{97375:function(t){t.exports=function(){"use strict";return function(t,e){var n=e.prototype,i=n.format;n.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return i.bind(this)(t);var s=this.$utils(),r=(t||"YYYY-MM-DDTHH:mm:ssZ").replace(/\[([^\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,(function(t){switch(t){case"Q":return Math.ceil((e.$M+1)/3);case"Do":return n.ordinal(e.$D);case"gggg":return e.weekYear();case"GGGG":return e.isoWeekYear();case"wo":return n.ordinal(e.week(),"W");case"w":case"ww":return s.s(e.week(),"w"===t?1:2,"0");case"W":case"WW":return s.s(e.isoWeek(),"W"===t?1:2,"0");case"k":case"kk":return s.s(String(0===e.$H?24:e.$H),"k"===t?1:2,"0");case"X":return Math.floor(e.$d.getTime()/1e3);case"x":return e.$d.getTime();case"z":return"["+e.offsetName()+"]";case"zzz":return"["+e.offsetName("long")+"]";default:return t}}));return i.bind(this)(r)}}}()},90445:function(t){t.exports=function(){"use strict";var t={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},e=/(\[[^[]*\])|([-_:/.,()\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,n=/\d/,i=/\d\d/,s=/\d\d?/,r=/\d*[^-_:/,()\s\d]+/,a={},o=function(t){return(t=+t)+(t>68?1900:2e3)},c=function(t){return function(e){this[t]=+e}},l=[/[+-]\d\d:?(\d\d)?|Z/,function(t){(this.zone||(this.zone={})).offset=function(t){if(!t)return 0;if("Z"===t)return 0;var e=t.match(/([+-]|\d\d)/g),n=60*e[1]+(+e[2]||0);return 0===n?0:"+"===e[0]?-n:n}(t)}],d=function(t){var e=a[t];return e&&(e.indexOf?e:e.s.concat(e.f))},u=function(t,e){var n,i=a.meridiem;if(i){for(var s=1;s<=24;s+=1)if(t.indexOf(i(s,0,e))>-1){n=s>12;break}}else n=t===(e?"pm":"PM");return n},h={A:[r,function(t){this.afternoon=u(t,!1)}],a:[r,function(t){this.afternoon=u(t,!0)}],Q:[n,function(t){this.month=3*(t-1)+1}],S:[n,function(t){this.milliseconds=100*+t}],SS:[i,function(t){this.milliseconds=10*+t}],SSS:[/\d{3}/,function(t){this.milliseconds=+t}],s:[s,c("seconds")],ss:[s,c("seconds")],m:[s,c("minutes")],mm:[s,c("minutes")],H:[s,c("hours")],h:[s,c("hours")],HH:[s,c("hours")],hh:[s,c("hours")],D:[s,c("day")],DD:[i,c("day")],Do:[r,function(t){var e=a.ordinal,n=t.match(/\d+/);if(this.day=n[0],e)for(var i=1;i<=31;i+=1)e(i).replace(/\[|\]/g,"")===t&&(this.day=i)}],w:[s,c("week")],ww:[i,c("week")],M:[s,c("month")],MM:[i,c("month")],MMM:[r,function(t){var e=d("months"),n=(d("monthsShort")||e.map((function(t){return t.slice(0,3)}))).indexOf(t)+1;if(n<1)throw new Error;this.month=n%12||n}],MMMM:[r,function(t){var e=d("months").indexOf(t)+1;if(e<1)throw new Error;this.month=e%12||e}],Y:[/[+-]?\d+/,c("year")],YY:[i,function(t){this.year=o(t)}],YYYY:[/\d{4}/,c("year")],Z:l,ZZ:l};function f(n){var i,s;i=n,s=a&&a.formats;for(var r=(n=i.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(e,n,i){var r=i&&i.toUpperCase();return n||s[i]||t[i]||s[r].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g,(function(t,e,n){return e||n.slice(1)}))}))).match(e),o=r.length,c=0;c-1)return new Date(("X"===e?1e3:1)*t);var s=f(e)(t),r=s.year,a=s.month,o=s.day,c=s.hours,l=s.minutes,d=s.seconds,u=s.milliseconds,h=s.zone,y=s.week,k=new Date,m=o||(r||a?1:k.getDate()),p=r||k.getFullYear(),g=0;r&&!a||(g=a>0?a-1:k.getMonth());var b,v=c||0,T=l||0,x=d||0,w=u||0;return h?new Date(Date.UTC(p,g,m,v,T,x,w+60*h.offset*1e3)):n?new Date(Date.UTC(p,g,m,v,T,x,w)):(b=new Date(p,g,m,v,T,x,w),y&&(b=i(b).week(y).toDate()),b)}catch(t){return new Date("")}}(e,o,i,n),this.init(),u&&!0!==u&&(this.$L=this.locale(u).$L),d&&e!=this.format(o)&&(this.$d=new Date("")),a={}}else if(o instanceof Array)for(var h=o.length,y=1;y<=h;y+=1){r[1]=o[y-1];var k=n.apply(this,r);if(k.isValid()){this.$d=k.$d,this.$L=k.$L,this.init();break}y===h&&(this.$d=new Date(""))}else s.call(this,t)}}}()},68313:function(t){t.exports=function(){"use strict";var t="day";return function(e,n,i){var s=function(e){return e.add(4-e.isoWeekday(),t)},r=n.prototype;r.isoWeekYear=function(){return s(this).year()},r.isoWeek=function(e){if(!this.$utils().u(e))return this.add(7*(e-this.isoWeek()),t);var n,r,a,o=s(this),c=(n=this.isoWeekYear(),a=4-(r=(this.$u?i.utc:i)().year(n).startOf("year")).isoWeekday(),r.isoWeekday()>4&&(a+=7),r.add(a,t));return o.diff(c,"week")+1},r.isoWeekday=function(t){return this.$utils().u(t)?this.day()||7:this.day(this.day()%7?t:t-7)};var a=r.startOf;r.startOf=function(t,e){var n=this.$utils(),i=!!n.u(e)||e;return"isoweek"===n.p(t)?i?this.date(this.date()-(this.isoWeekday()-1)).startOf("day"):this.date(this.date()-1-(this.isoWeekday()-1)+7).endOf("day"):a.bind(this)(t,e)}}}()},64379:(t,e,n)=>{"use strict";n.d(e,{diagram:()=>It});var i=n(13226),s=n(67633),r=n(40797),a=n(16750),o=n(74353),c=n(68313),l=n(90445),d=n(97375),u=n(70451),h=function(){var t=(0,r.K2)((function(t,e,n,i){for(n=n||{},i=t.length;i--;n[t[i]]=e);return n}),"o"),e=[6,8,10,12,13,14,15,16,17,18,20,21,22,23,24,25,26,27,28,29,30,31,33,35,36,38,40],n=[1,26],i=[1,27],s=[1,28],a=[1,29],o=[1,30],c=[1,31],l=[1,32],d=[1,33],u=[1,34],h=[1,9],f=[1,10],y=[1,11],k=[1,12],m=[1,13],p=[1,14],g=[1,15],b=[1,16],v=[1,19],T=[1,20],x=[1,21],w=[1,22],_=[1,23],D=[1,25],$=[1,35],C={trace:(0,r.K2)((function(){}),"trace"),yy:{},symbols_:{error:2,start:3,gantt:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NL:10,weekday:11,weekday_monday:12,weekday_tuesday:13,weekday_wednesday:14,weekday_thursday:15,weekday_friday:16,weekday_saturday:17,weekday_sunday:18,weekend:19,weekend_friday:20,weekend_saturday:21,dateFormat:22,inclusiveEndDates:23,topAxis:24,axisFormat:25,tickInterval:26,excludes:27,includes:28,todayMarker:29,title:30,acc_title:31,acc_title_value:32,acc_descr:33,acc_descr_value:34,acc_descr_multiline_value:35,section:36,clickStatement:37,taskTxt:38,taskData:39,click:40,callbackname:41,callbackargs:42,href:43,clickStatementDebug:44,$accept:0,$end:1},terminals_:{2:"error",4:"gantt",6:"EOF",8:"SPACE",10:"NL",12:"weekday_monday",13:"weekday_tuesday",14:"weekday_wednesday",15:"weekday_thursday",16:"weekday_friday",17:"weekday_saturday",18:"weekday_sunday",20:"weekend_friday",21:"weekend_saturday",22:"dateFormat",23:"inclusiveEndDates",24:"topAxis",25:"axisFormat",26:"tickInterval",27:"excludes",28:"includes",29:"todayMarker",30:"title",31:"acc_title",32:"acc_title_value",33:"acc_descr",34:"acc_descr_value",35:"acc_descr_multiline_value",36:"section",38:"taskTxt",39:"taskData",40:"click",41:"callbackname",42:"callbackargs",43:"href"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[11,1],[11,1],[11,1],[11,1],[11,1],[11,1],[11,1],[19,1],[19,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,1],[9,2],[37,2],[37,3],[37,3],[37,4],[37,3],[37,4],[37,2],[44,2],[44,3],[44,3],[44,4],[44,3],[44,4],[44,2]],performAction:(0,r.K2)((function(t,e,n,i,s,r,a){var o=r.length-1;switch(s){case 1:return r[o-1];case 2:case 6:case 7:this.$=[];break;case 3:r[o-1].push(r[o]),this.$=r[o-1];break;case 4:case 5:this.$=r[o];break;case 8:i.setWeekday("monday");break;case 9:i.setWeekday("tuesday");break;case 10:i.setWeekday("wednesday");break;case 11:i.setWeekday("thursday");break;case 12:i.setWeekday("friday");break;case 13:i.setWeekday("saturday");break;case 14:i.setWeekday("sunday");break;case 15:i.setWeekend("friday");break;case 16:i.setWeekend("saturday");break;case 17:i.setDateFormat(r[o].substr(11)),this.$=r[o].substr(11);break;case 18:i.enableInclusiveEndDates(),this.$=r[o].substr(18);break;case 19:i.TopAxis(),this.$=r[o].substr(8);break;case 20:i.setAxisFormat(r[o].substr(11)),this.$=r[o].substr(11);break;case 21:i.setTickInterval(r[o].substr(13)),this.$=r[o].substr(13);break;case 22:i.setExcludes(r[o].substr(9)),this.$=r[o].substr(9);break;case 23:i.setIncludes(r[o].substr(9)),this.$=r[o].substr(9);break;case 24:i.setTodayMarker(r[o].substr(12)),this.$=r[o].substr(12);break;case 27:i.setDiagramTitle(r[o].substr(6)),this.$=r[o].substr(6);break;case 28:this.$=r[o].trim(),i.setAccTitle(this.$);break;case 29:case 30:this.$=r[o].trim(),i.setAccDescription(this.$);break;case 31:i.addSection(r[o].substr(8)),this.$=r[o].substr(8);break;case 33:i.addTask(r[o-1],r[o]),this.$="task";break;case 34:this.$=r[o-1],i.setClickEvent(r[o-1],r[o],null);break;case 35:this.$=r[o-2],i.setClickEvent(r[o-2],r[o-1],r[o]);break;case 36:this.$=r[o-2],i.setClickEvent(r[o-2],r[o-1],null),i.setLink(r[o-2],r[o]);break;case 37:this.$=r[o-3],i.setClickEvent(r[o-3],r[o-2],r[o-1]),i.setLink(r[o-3],r[o]);break;case 38:this.$=r[o-2],i.setClickEvent(r[o-2],r[o],null),i.setLink(r[o-2],r[o-1]);break;case 39:this.$=r[o-3],i.setClickEvent(r[o-3],r[o-1],r[o]),i.setLink(r[o-3],r[o-2]);break;case 40:this.$=r[o-1],i.setLink(r[o-1],r[o]);break;case 41:case 47:this.$=r[o-1]+" "+r[o];break;case 42:case 43:case 45:this.$=r[o-2]+" "+r[o-1]+" "+r[o];break;case 44:case 46:this.$=r[o-3]+" "+r[o-2]+" "+r[o-1]+" "+r[o]}}),"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:17,12:n,13:i,14:s,15:a,16:o,17:c,18:l,19:18,20:d,21:u,22:h,23:f,24:y,25:k,26:m,27:p,28:g,29:b,30:v,31:T,33:x,35:w,36:_,37:24,38:D,40:$},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:36,11:17,12:n,13:i,14:s,15:a,16:o,17:c,18:l,19:18,20:d,21:u,22:h,23:f,24:y,25:k,26:m,27:p,28:g,29:b,30:v,31:T,33:x,35:w,36:_,37:24,38:D,40:$},t(e,[2,5]),t(e,[2,6]),t(e,[2,17]),t(e,[2,18]),t(e,[2,19]),t(e,[2,20]),t(e,[2,21]),t(e,[2,22]),t(e,[2,23]),t(e,[2,24]),t(e,[2,25]),t(e,[2,26]),t(e,[2,27]),{32:[1,37]},{34:[1,38]},t(e,[2,30]),t(e,[2,31]),t(e,[2,32]),{39:[1,39]},t(e,[2,8]),t(e,[2,9]),t(e,[2,10]),t(e,[2,11]),t(e,[2,12]),t(e,[2,13]),t(e,[2,14]),t(e,[2,15]),t(e,[2,16]),{41:[1,40],43:[1,41]},t(e,[2,4]),t(e,[2,28]),t(e,[2,29]),t(e,[2,33]),t(e,[2,34],{42:[1,42],43:[1,43]}),t(e,[2,40],{41:[1,44]}),t(e,[2,35],{43:[1,45]}),t(e,[2,36]),t(e,[2,38],{42:[1,46]}),t(e,[2,37]),t(e,[2,39])],defaultActions:{},parseError:(0,r.K2)((function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)}),"parseError"),parse:(0,r.K2)((function(t){var e=this,n=[0],i=[],s=[null],a=[],o=this.table,c="",l=0,d=0,u=0,h=a.slice.call(arguments,1),f=Object.create(this.lexer),y={yy:{}};for(var k in this.yy)Object.prototype.hasOwnProperty.call(this.yy,k)&&(y.yy[k]=this.yy[k]);f.setInput(t,y.yy),y.yy.lexer=f,y.yy.parser=this,void 0===f.yylloc&&(f.yylloc={});var m=f.yylloc;a.push(m);var p=f.options&&f.options.ranges;function g(){var t;return"number"!=typeof(t=i.pop()||f.lex()||1)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof y.yy.parseError?this.parseError=y.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,r.K2)((function(t){n.length=n.length-2*t,s.length=s.length-t,a.length=a.length-t}),"popStack"),(0,r.K2)(g,"lex");for(var b,v,T,x,w,_,D,$,C,S={};;){if(T=n[n.length-1],this.defaultActions[T]?x=this.defaultActions[T]:(null==b&&(b=g()),x=o[T]&&o[T][b]),void 0===x||!x.length||!x[0]){var K="";for(_ in C=[],o[T])this.terminals_[_]&&_>2&&C.push("'"+this.terminals_[_]+"'");K=f.showPosition?"Parse error on line "+(l+1)+":\n"+f.showPosition()+"\nExpecting "+C.join(", ")+", got '"+(this.terminals_[b]||b)+"'":"Parse error on line "+(l+1)+": Unexpected "+(1==b?"end of input":"'"+(this.terminals_[b]||b)+"'"),this.parseError(K,{text:f.match,token:this.terminals_[b]||b,line:f.yylineno,loc:m,expected:C})}if(x[0]instanceof Array&&x.length>1)throw new Error("Parse Error: multiple actions possible at state: "+T+", token: "+b);switch(x[0]){case 1:n.push(b),s.push(f.yytext),a.push(f.yylloc),n.push(x[1]),b=null,v?(b=v,v=null):(d=f.yyleng,c=f.yytext,l=f.yylineno,m=f.yylloc,u>0&&u--);break;case 2:if(D=this.productions_[x[1]][1],S.$=s[s.length-D],S._$={first_line:a[a.length-(D||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(D||1)].first_column,last_column:a[a.length-1].last_column},p&&(S._$.range=[a[a.length-(D||1)].range[0],a[a.length-1].range[1]]),void 0!==(w=this.performAction.apply(S,[c,d,l,y.yy,x[1],s,a].concat(h))))return w;D&&(n=n.slice(0,-1*D*2),s=s.slice(0,-1*D),a=a.slice(0,-1*D)),n.push(this.productions_[x[1]][0]),s.push(S.$),a.push(S._$),$=o[n[n.length-2]][n[n.length-1]],n.push($);break;case 3:return!0}}return!0}),"parse")},S=function(){return{EOF:1,parseError:(0,r.K2)((function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)}),"parseError"),setInput:(0,r.K2)((function(t,e){return this.yy=e||this.yy||{},this._input=t,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:(0,r.K2)((function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t}),"input"),unput:(0,r.K2)((function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=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),n.length-1&&(this.yylineno-=n.length-1);var s=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:n?(n.length===i.length?this.yylloc.first_column:0)+i[i.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[s[0],s[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this}),"unput"),more:(0,r.K2)((function(){return this._more=!0,this}),"more"),reject:(0,r.K2)((function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):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).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})}),"reject"),less:(0,r.K2)((function(t){this.unput(this.match.slice(t))}),"less"),pastInput:(0,r.K2)((function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")}),"pastInput"),upcomingInput:(0,r.K2)((function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")}),"upcomingInput"),showPosition:(0,r.K2)((function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"}),"showPosition"),test_match:(0,r.K2)((function(t,e){var n,i,s;if(this.options.backtrack_lexer&&(s={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&&(s.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,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(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var r in s)this[r]=s[r];return!1}return!1}),"test_match"),next:(0,r.K2)((function(){if(this.done)return this.EOF;var t,e,n,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var s=this._currentRules(),r=0;re[0].length)){if(e=n,i=r,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,s[r])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,s[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})}),"next"),lex:(0,r.K2)((function(){var t=this.next();return t||this.lex()}),"lex"),begin:(0,r.K2)((function(t){this.conditionStack.push(t)}),"begin"),popState:(0,r.K2)((function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]}),"popState"),_currentRules:(0,r.K2)((function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules}),"_currentRules"),topState:(0,r.K2)((function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"}),"topState"),pushState:(0,r.K2)((function(t){this.begin(t)}),"pushState"),stateStackSize:(0,r.K2)((function(){return this.conditionStack.length}),"stateStackSize"),options:{"case-insensitive":!0},performAction:(0,r.K2)((function(t,e,n,i){switch(n){case 0:return this.begin("open_directive"),"open_directive";case 1:return this.begin("acc_title"),31;case 2:return this.popState(),"acc_title_value";case 3:return this.begin("acc_descr"),33;case 4:return this.popState(),"acc_descr_value";case 5:this.begin("acc_descr_multiline");break;case 6:case 15:case 18:case 21:case 24:this.popState();break;case 7:return"acc_descr_multiline_value";case 8:case 9:case 10:case 12:case 13:break;case 11:return 10;case 14:this.begin("href");break;case 16:return 43;case 17:this.begin("callbackname");break;case 19:this.popState(),this.begin("callbackargs");break;case 20:return 41;case 22:return 42;case 23:this.begin("click");break;case 25:return 40;case 26:return 4;case 27:return 22;case 28:return 23;case 29:return 24;case 30:return 25;case 31:return 26;case 32:return 28;case 33:return 27;case 34:return 29;case 35:return 12;case 36:return 13;case 37:return 14;case 38:return 15;case 39:return 16;case 40:return 17;case 41:return 18;case 42:return 20;case 43:return 21;case 44:return"date";case 45:return 30;case 46:return"accDescription";case 47:return 36;case 48:return 38;case 49:return 39;case 50:return":";case 51:return 6;case 52:return"INVALID"}}),"anonymous"),rules:[/^(?:%%\{)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:%%(?!\{)*[^\n]*)/i,/^(?:[^\}]%%*[^\n]*)/i,/^(?:%%*[^\n]*[\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:%[^\n]*)/i,/^(?:href[\s]+["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:call[\s]+)/i,/^(?:\([\s]*\))/i,/^(?:\()/i,/^(?:[^(]*)/i,/^(?:\))/i,/^(?:[^)]*)/i,/^(?:click[\s]+)/i,/^(?:[\s\n])/i,/^(?:[^\s\n]*)/i,/^(?:gantt\b)/i,/^(?:dateFormat\s[^#\n;]+)/i,/^(?:inclusiveEndDates\b)/i,/^(?:topAxis\b)/i,/^(?:axisFormat\s[^#\n;]+)/i,/^(?:tickInterval\s[^#\n;]+)/i,/^(?:includes\s[^#\n;]+)/i,/^(?:excludes\s[^#\n;]+)/i,/^(?:todayMarker\s[^\n;]+)/i,/^(?:weekday\s+monday\b)/i,/^(?:weekday\s+tuesday\b)/i,/^(?:weekday\s+wednesday\b)/i,/^(?:weekday\s+thursday\b)/i,/^(?:weekday\s+friday\b)/i,/^(?:weekday\s+saturday\b)/i,/^(?:weekday\s+sunday\b)/i,/^(?:weekend\s+friday\b)/i,/^(?:weekend\s+saturday\b)/i,/^(?:\d\d\d\d-\d\d-\d\d\b)/i,/^(?:title\s[^\n]+)/i,/^(?:accDescription\s[^#\n;]+)/i,/^(?:section\s[^\n]+)/i,/^(?:[^:\n]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[6,7],inclusive:!1},acc_descr:{rules:[4],inclusive:!1},acc_title:{rules:[2],inclusive:!1},callbackargs:{rules:[21,22],inclusive:!1},callbackname:{rules:[18,19,20],inclusive:!1},href:{rules:[15,16],inclusive:!1},click:{rules:[24,25],inclusive:!1},INITIAL:{rules:[0,1,3,5,8,9,10,11,12,13,14,17,23,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52],inclusive:!0}}}}();function K(){this.yy={}}return C.lexer=S,(0,r.K2)(K,"Parser"),K.prototype=C,C.Parser=K,new K}();h.parser=h;var f=h;o.extend(c),o.extend(l),o.extend(d);var y,k,m={friday:5,saturday:6},p="",g="",b=void 0,v="",T=[],x=[],w=new Map,_=[],D=[],$="",C="",S=["active","done","crit","milestone","vert"],K=[],E=!1,M=!1,A="sunday",L="saturday",Y=0,I=(0,r.K2)((function(){_=[],D=[],$="",K=[],ft=0,y=void 0,k=void 0,pt=[],p="",g="",C="",b=void 0,v="",T=[],x=[],E=!1,M=!1,Y=0,w=new Map,(0,s.IU)(),A="sunday",L="saturday"}),"clear"),W=(0,r.K2)((function(t){g=t}),"setAxisFormat"),F=(0,r.K2)((function(){return g}),"getAxisFormat"),O=(0,r.K2)((function(t){b=t}),"setTickInterval"),P=(0,r.K2)((function(){return b}),"getTickInterval"),B=(0,r.K2)((function(t){v=t}),"setTodayMarker"),z=(0,r.K2)((function(){return v}),"getTodayMarker"),N=(0,r.K2)((function(t){p=t}),"setDateFormat"),G=(0,r.K2)((function(){E=!0}),"enableInclusiveEndDates"),H=(0,r.K2)((function(){return E}),"endDatesAreInclusive"),R=(0,r.K2)((function(){M=!0}),"enableTopAxis"),j=(0,r.K2)((function(){return M}),"topAxisEnabled"),U=(0,r.K2)((function(t){C=t}),"setDisplayMode"),V=(0,r.K2)((function(){return C}),"getDisplayMode"),Z=(0,r.K2)((function(){return p}),"getDateFormat"),X=(0,r.K2)((function(t){T=t.toLowerCase().split(/[\s,]+/)}),"setIncludes"),q=(0,r.K2)((function(){return T}),"getIncludes"),Q=(0,r.K2)((function(t){x=t.toLowerCase().split(/[\s,]+/)}),"setExcludes"),J=(0,r.K2)((function(){return x}),"getExcludes"),tt=(0,r.K2)((function(){return w}),"getLinks"),et=(0,r.K2)((function(t){$=t,_.push(t)}),"addSection"),nt=(0,r.K2)((function(){return _}),"getSections"),it=(0,r.K2)((function(){let t=xt();let e=0;for(;!t&&e<10;)t=xt(),e++;return D=pt}),"getTasks"),st=(0,r.K2)((function(t,e,n,i){const s=t.format(e.trim()),r=t.format("YYYY-MM-DD");return!i.includes(s)&&!i.includes(r)&&(!(!n.includes("weekends")||t.isoWeekday()!==m[L]&&t.isoWeekday()!==m[L]+1)||(!!n.includes(t.format("dddd").toLowerCase())||(n.includes(s)||n.includes(r))))}),"isInvalidDate"),rt=(0,r.K2)((function(t){A=t}),"setWeekday"),at=(0,r.K2)((function(){return A}),"getWeekday"),ot=(0,r.K2)((function(t){L=t}),"setWeekend"),ct=(0,r.K2)((function(t,e,n,i){if(!n.length||t.manualEndTime)return;let s,r;s=t.startTime instanceof Date?o(t.startTime):o(t.startTime,e,!0),s=s.add(1,"d"),r=t.endTime instanceof Date?o(t.endTime):o(t.endTime,e,!0);const[a,c]=lt(s,r,e,n,i);t.endTime=a.toDate(),t.renderEndTime=c}),"checkTaskDates"),lt=(0,r.K2)((function(t,e,n,i,s){let r=!1,a=null;for(;t<=e;)r||(a=e.toDate()),r=st(t,n,i,s),r&&(e=e.add(1,"d")),t=t.add(1,"d");return[e,a]}),"fixTaskDates"),dt=(0,r.K2)((function(t,e,n){if(n=n.trim(),("x"===e.trim()||"X"===e.trim())&&/^\d+$/.test(n))return new Date(Number(n));const i=/^after\s+(?[\d\w- ]+)/.exec(n);if(null!==i){let t=null;for(const n of i.groups.ids.split(" ")){let e=vt(n);void 0!==e&&(!t||e.endTime>t.endTime)&&(t=e)}if(t)return t.endTime;const e=new Date;return e.setHours(0,0,0,0),e}let s=o(n,e.trim(),!0);if(s.isValid())return s.toDate();{r.Rm.debug("Invalid date:"+n),r.Rm.debug("With date format:"+e.trim());const t=new Date(n);if(void 0===t||isNaN(t.getTime())||t.getFullYear()<-1e4||t.getFullYear()>1e4)throw new Error("Invalid date:"+n);return t}}),"getStartDate"),ut=(0,r.K2)((function(t){const e=/^(\d+(?:\.\d+)?)([Mdhmswy]|ms)$/.exec(t.trim());return null!==e?[Number.parseFloat(e[1]),e[2]]:[NaN,"ms"]}),"parseDuration"),ht=(0,r.K2)((function(t,e,n,i=!1){n=n.trim();const s=/^until\s+(?[\d\w- ]+)/.exec(n);if(null!==s){let t=null;for(const n of s.groups.ids.split(" ")){let e=vt(n);void 0!==e&&(!t||e.startTime{window.open(n,"_self")})),w.set(t,n))})),_t(t,"clickable")}),"setLink"),_t=(0,r.K2)((function(t,e){t.split(",").forEach((function(t){let n=vt(t);void 0!==n&&n.classes.push(e)}))}),"setClass"),Dt=(0,r.K2)((function(t,e,n){if("loose"!==(0,s.D7)().securityLevel)return;if(void 0===e)return;let r=[];if("string"==typeof n){r=n.split(/,(?=(?:(?:[^"]*"){2})*[^"]*$)/);for(let t=0;t{i._K.runFunc(e,...r)}))}),"setClickFun"),$t=(0,r.K2)((function(t,e){K.push((function(){const n=document.querySelector(`[id="${t}"]`);null!==n&&n.addEventListener("click",(function(){e()}))}),(function(){const n=document.querySelector(`[id="${t}-text"]`);null!==n&&n.addEventListener("click",(function(){e()}))}))}),"pushFun"),Ct=(0,r.K2)((function(t,e,n){t.split(",").forEach((function(t){Dt(t,e,n)})),_t(t,"clickable")}),"setClickEvent"),St=(0,r.K2)((function(t){K.forEach((function(e){e(t)}))}),"bindFunctions"),Kt={getConfig:(0,r.K2)((()=>(0,s.D7)().gantt),"getConfig"),clear:I,setDateFormat:N,getDateFormat:Z,enableInclusiveEndDates:G,endDatesAreInclusive:H,enableTopAxis:R,topAxisEnabled:j,setAxisFormat:W,getAxisFormat:F,setTickInterval:O,getTickInterval:P,setTodayMarker:B,getTodayMarker:z,setAccTitle:s.SV,getAccTitle:s.iN,setDiagramTitle:s.ke,getDiagramTitle:s.ab,setDisplayMode:U,getDisplayMode:V,setAccDescription:s.EI,getAccDescription:s.m7,addSection:et,getSections:nt,getTasks:it,addTask:bt,findTaskById:vt,addTaskOrg:Tt,setIncludes:X,getIncludes:q,setExcludes:Q,getExcludes:J,setClickEvent:Ct,setLink:wt,getLinks:tt,bindFunctions:St,parseDuration:ut,isInvalidDate:st,setWeekday:rt,getWeekday:at,setWeekend:ot};function Et(t,e,n){let i=!0;for(;i;)i=!1,n.forEach((function(n){const s=new RegExp("^\\s*"+n+"\\s*$");t[0].match(s)&&(e[n]=!0,t.shift(1),i=!0)}))}(0,r.K2)(Et,"getTaskTags");var Mt,At=(0,r.K2)((function(){r.Rm.debug("Something is calling, setConf, remove the call")}),"setConf"),Lt={monday:u.ABi,tuesday:u.PGu,wednesday:u.GuW,thursday:u.Mol,friday:u.TUC,saturday:u.rGn,sunday:u.YPH},Yt=(0,r.K2)(((t,e)=>{let n=[...t].map((()=>-1/0)),i=[...t].sort(((t,e)=>t.startTime-e.startTime||t.order-e.order)),s=0;for(const r of i)for(let t=0;t=n[t]){n[t]=r.endTime,r.order=t+e,t>s&&(s=t);break}return s}),"getMaxIntersections"),It={parser:f,db:Kt,renderer:{setConf:At,draw:(0,r.K2)((function(t,e,n,i){const a=(0,s.D7)().gantt,c=(0,s.D7)().securityLevel;let l;"sandbox"===c&&(l=(0,u.Ltv)("#i"+e));const d="sandbox"===c?(0,u.Ltv)(l.nodes()[0].contentDocument.body):(0,u.Ltv)("body"),h="sandbox"===c?l.nodes()[0].contentDocument:document,f=h.getElementById(e);void 0===(Mt=f.parentElement.offsetWidth)&&(Mt=1200),void 0!==a.useWidth&&(Mt=a.useWidth);const y=i.db.getTasks();let k=[];for(const s of y)k.push(s.type);k=C(k);const m={};let p=2*a.topPadding;if("compact"===i.db.getDisplayMode()||"compact"===a.displayMode){const t={};for(const n of y)void 0===t[n.section]?t[n.section]=[n]:t[n.section].push(n);let e=0;for(const n of Object.keys(t)){const i=Yt(t[n],e)+1;e+=i,p+=i*(a.barHeight+a.barGap),m[n]=i}}else{p+=y.length*(a.barHeight+a.barGap);for(const t of k)m[t]=y.filter((e=>e.type===t)).length}f.setAttribute("viewBox","0 0 "+Mt+" "+p);const g=d.select(`[id="${e}"]`),b=(0,u.w7C)().domain([(0,u.jkA)(y,(function(t){return t.startTime})),(0,u.T9B)(y,(function(t){return t.endTime}))]).rangeRound([0,Mt-a.leftPadding-a.rightPadding]);function v(t,e){const n=t.startTime,i=e.startTime;let s=0;return n>i?s=1:nt.vert===e.vert?0:t.vert?1:-1));const h=[...new Set(t.map((t=>t.order)))].map((e=>t.find((t=>t.order===e))));g.append("g").selectAll("rect").data(h).enter().append("rect").attr("x",0).attr("y",(function(t,e){return t.order*n+r-2})).attr("width",(function(){return d-a.rightPadding/2})).attr("height",n).attr("class",(function(t){for(const[e,n]of k.entries())if(t.type===n)return"section section"+e%a.numberSectionStyles;return"section section0"})).enter();const f=g.append("g").selectAll("rect").data(t).enter(),m=i.db.getLinks();f.append("rect").attr("id",(function(t){return t.id})).attr("rx",3).attr("ry",3).attr("x",(function(t){return t.milestone?b(t.startTime)+o+.5*(b(t.endTime)-b(t.startTime))-.5*c:b(t.startTime)+o})).attr("y",(function(t,e){return e=t.order,t.vert?a.gridLineStartPadding:e*n+r})).attr("width",(function(t){return t.milestone?c:t.vert?.08*c:b(t.renderEndTime||t.endTime)-b(t.startTime)})).attr("height",(function(t){return t.vert?y.length*(a.barHeight+a.barGap)+2*a.barHeight:c})).attr("transform-origin",(function(t,e){return e=t.order,(b(t.startTime)+o+.5*(b(t.endTime)-b(t.startTime))).toString()+"px "+(e*n+r+.5*c).toString()+"px"})).attr("class",(function(t){let e="";t.classes.length>0&&(e=t.classes.join(" "));let n=0;for(const[s,r]of k.entries())t.type===r&&(n=s%a.numberSectionStyles);let i="";return t.active?t.crit?i+=" activeCrit":i=" active":t.done?i=t.crit?" doneCrit":" done":t.crit&&(i+=" crit"),0===i.length&&(i=" task"),t.milestone&&(i=" milestone "+i),t.vert&&(i=" vert "+i),i+=n,i+=" "+e,"task"+i})),f.append("text").attr("id",(function(t){return t.id+"-text"})).text((function(t){return t.task})).attr("font-size",a.fontSize).attr("x",(function(t){let e=b(t.startTime),n=b(t.renderEndTime||t.endTime);if(t.milestone&&(e+=.5*(b(t.endTime)-b(t.startTime))-.5*c,n=e+c),t.vert)return b(t.startTime)+o;const i=this.getBBox().width;return i>n-e?n+i+1.5*a.leftPadding>d?e+o-5:n+o+5:(n-e)/2+e+o})).attr("y",(function(t,e){return t.vert?a.gridLineStartPadding+y.length*(a.barHeight+a.barGap)+60:t.order*n+a.barHeight/2+(a.fontSize/2-2)+r})).attr("text-height",c).attr("class",(function(t){const e=b(t.startTime);let n=b(t.endTime);t.milestone&&(n=e+c);const i=this.getBBox().width;let s="";t.classes.length>0&&(s=t.classes.join(" "));let r=0;for(const[c,l]of k.entries())t.type===l&&(r=c%a.numberSectionStyles);let o="";return t.active&&(o=t.crit?"activeCritText"+r:"activeText"+r),t.done?o=t.crit?o+" doneCritText"+r:o+" doneText"+r:t.crit&&(o=o+" critText"+r),t.milestone&&(o+=" milestoneText"),t.vert&&(o+=" vertText"),i>n-e?n+i+1.5*a.leftPadding>d?s+" taskTextOutsideLeft taskTextOutside"+r+" "+o:s+" taskTextOutsideRight taskTextOutside"+r+" "+o+" width-"+i:s+" taskText taskText"+r+" "+o+" width-"+i}));if("sandbox"===(0,s.D7)().securityLevel){let t;t=(0,u.Ltv)("#i"+e);const n=t.nodes()[0].contentDocument;f.filter((function(t){return m.has(t.id)})).each((function(t){var e=n.querySelector("#"+t.id),i=n.querySelector("#"+t.id+"-text");const s=e.parentNode;var r=n.createElement("a");r.setAttribute("xlink:href",m.get(t.id)),r.setAttribute("target","_top"),s.appendChild(r),r.appendChild(e),r.appendChild(i)}))}}function w(t,e,n,s,c,l,d,u){if(0===d.length&&0===u.length)return;let h,f;for(const{startTime:i,endTime:r}of l)(void 0===h||if)&&(f=r);if(!h||!f)return;if(o(f).diff(o(h),"year")>5)return void r.Rm.warn("The difference between the min and max time is more than 5 years. This will cause performance issues. Skipping drawing exclude days.");const y=i.db.getDateFormat(),k=[];let m=null,p=o(h);for(;p.valueOf()<=f;)i.db.isInvalidDate(p,y,d,u)?m?m.end=p:m={start:p,end:p}:m&&(k.push(m),m=null),p=p.add(1,"d");g.append("g").selectAll("rect").data(k).enter().append("rect").attr("id",(t=>"exclude-"+t.start.format("YYYY-MM-DD"))).attr("x",(t=>b(t.start.startOf("day"))+n)).attr("y",a.gridLineStartPadding).attr("width",(t=>b(t.end.endOf("day"))-b(t.start.startOf("day")))).attr("height",c-e-a.gridLineStartPadding).attr("transform-origin",(function(e,i){return(b(e.start)+n+.5*(b(e.end)-b(e.start))).toString()+"px "+(i*t+.5*c).toString()+"px"})).attr("class","exclude-range")}function _(t,e,n,s){const r=i.db.getDateFormat(),o=i.db.getAxisFormat();let c;c=o||("D"===r?"%d":a.axisFormat??"%Y-%m-%d");let l=(0,u.l78)(b).tickSize(-s+e+a.gridLineStartPadding).tickFormat((0,u.DCK)(c));const d=/^([1-9]\d*)(millisecond|second|minute|hour|day|week|month)$/.exec(i.db.getTickInterval()||a.tickInterval);if(null!==d){const t=d[1],e=d[2],n=i.db.getWeekday()||a.weekday;switch(e){case"millisecond":l.ticks(u.t6C.every(t));break;case"second":l.ticks(u.ucG.every(t));break;case"minute":l.ticks(u.wXd.every(t));break;case"hour":l.ticks(u.Agd.every(t));break;case"day":l.ticks(u.UAC.every(t));break;case"week":l.ticks(Lt[n].every(t));break;case"month":l.ticks(u.Ui6.every(t))}}if(g.append("g").attr("class","grid").attr("transform","translate("+t+", "+(s-50)+")").call(l).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10).attr("dy","1em"),i.db.topAxisEnabled()||a.topAxis){let n=(0,u.tlR)(b).tickSize(-s+e+a.gridLineStartPadding).tickFormat((0,u.DCK)(c));if(null!==d){const t=d[1],e=d[2],s=i.db.getWeekday()||a.weekday;switch(e){case"millisecond":n.ticks(u.t6C.every(t));break;case"second":n.ticks(u.ucG.every(t));break;case"minute":n.ticks(u.wXd.every(t));break;case"hour":n.ticks(u.Agd.every(t));break;case"day":n.ticks(u.UAC.every(t));break;case"week":n.ticks(Lt[s].every(t));break;case"month":n.ticks(u.Ui6.every(t))}}g.append("g").attr("class","grid").attr("transform","translate("+t+", "+e+")").call(n).selectAll("text").style("text-anchor","middle").attr("fill","#000").attr("stroke","none").attr("font-size",10)}}function D(t,e){let n=0;const i=Object.keys(m).map((t=>[t,m[t]]));g.append("g").selectAll("text").data(i).enter().append((function(t){const e=t[0].split(s.Y2.lineBreakRegex),n=-(e.length-1)/2,i=h.createElementNS("http://www.w3.org/2000/svg","text");i.setAttribute("dy",n+"em");for(const[s,r]of e.entries()){const t=h.createElementNS("http://www.w3.org/2000/svg","tspan");t.setAttribute("alignment-baseline","central"),t.setAttribute("x","10"),s>0&&t.setAttribute("dy","1em"),t.textContent=r,i.appendChild(t)}return i})).attr("x",10).attr("y",(function(s,r){if(!(r>0))return s[1]*t/2+e;for(let a=0;a`\n .mermaid-main-font {\n font-family: ${t.fontFamily};\n }\n\n .exclude-range {\n fill: ${t.excludeBkgColor};\n }\n\n .section {\n stroke: none;\n opacity: 0.2;\n }\n\n .section0 {\n fill: ${t.sectionBkgColor};\n }\n\n .section2 {\n fill: ${t.sectionBkgColor2};\n }\n\n .section1,\n .section3 {\n fill: ${t.altSectionBkgColor};\n opacity: 0.2;\n }\n\n .sectionTitle0 {\n fill: ${t.titleColor};\n }\n\n .sectionTitle1 {\n fill: ${t.titleColor};\n }\n\n .sectionTitle2 {\n fill: ${t.titleColor};\n }\n\n .sectionTitle3 {\n fill: ${t.titleColor};\n }\n\n .sectionTitle {\n text-anchor: start;\n font-family: ${t.fontFamily};\n }\n\n\n /* Grid and axis */\n\n .grid .tick {\n stroke: ${t.gridColor};\n opacity: 0.8;\n shape-rendering: crispEdges;\n }\n\n .grid .tick text {\n font-family: ${t.fontFamily};\n fill: ${t.textColor};\n }\n\n .grid path {\n stroke-width: 0;\n }\n\n\n /* Today line */\n\n .today {\n fill: none;\n stroke: ${t.todayLineColor};\n stroke-width: 2px;\n }\n\n\n /* Task styling */\n\n /* Default task */\n\n .task {\n stroke-width: 2;\n }\n\n .taskText {\n text-anchor: middle;\n font-family: ${t.fontFamily};\n }\n\n .taskTextOutsideRight {\n fill: ${t.taskTextDarkColor};\n text-anchor: start;\n font-family: ${t.fontFamily};\n }\n\n .taskTextOutsideLeft {\n fill: ${t.taskTextDarkColor};\n text-anchor: end;\n }\n\n\n /* Special case clickable */\n\n .task.clickable {\n cursor: pointer;\n }\n\n .taskText.clickable {\n cursor: pointer;\n fill: ${t.taskTextClickableColor} !important;\n font-weight: bold;\n }\n\n .taskTextOutsideLeft.clickable {\n cursor: pointer;\n fill: ${t.taskTextClickableColor} !important;\n font-weight: bold;\n }\n\n .taskTextOutsideRight.clickable {\n cursor: pointer;\n fill: ${t.taskTextClickableColor} !important;\n font-weight: bold;\n }\n\n\n /* Specific task settings for the sections*/\n\n .taskText0,\n .taskText1,\n .taskText2,\n .taskText3 {\n fill: ${t.taskTextColor};\n }\n\n .task0,\n .task1,\n .task2,\n .task3 {\n fill: ${t.taskBkgColor};\n stroke: ${t.taskBorderColor};\n }\n\n .taskTextOutside0,\n .taskTextOutside2\n {\n fill: ${t.taskTextOutsideColor};\n }\n\n .taskTextOutside1,\n .taskTextOutside3 {\n fill: ${t.taskTextOutsideColor};\n }\n\n\n /* Active task */\n\n .active0,\n .active1,\n .active2,\n .active3 {\n fill: ${t.activeTaskBkgColor};\n stroke: ${t.activeTaskBorderColor};\n }\n\n .activeText0,\n .activeText1,\n .activeText2,\n .activeText3 {\n fill: ${t.taskTextDarkColor} !important;\n }\n\n\n /* Completed task */\n\n .done0,\n .done1,\n .done2,\n .done3 {\n stroke: ${t.doneTaskBorderColor};\n fill: ${t.doneTaskBkgColor};\n stroke-width: 2;\n }\n\n .doneText0,\n .doneText1,\n .doneText2,\n .doneText3 {\n fill: ${t.taskTextDarkColor} !important;\n }\n\n\n /* Tasks on the critical line */\n\n .crit0,\n .crit1,\n .crit2,\n .crit3 {\n stroke: ${t.critBorderColor};\n fill: ${t.critBkgColor};\n stroke-width: 2;\n }\n\n .activeCrit0,\n .activeCrit1,\n .activeCrit2,\n .activeCrit3 {\n stroke: ${t.critBorderColor};\n fill: ${t.activeTaskBkgColor};\n stroke-width: 2;\n }\n\n .doneCrit0,\n .doneCrit1,\n .doneCrit2,\n .doneCrit3 {\n stroke: ${t.critBorderColor};\n fill: ${t.doneTaskBkgColor};\n stroke-width: 2;\n cursor: pointer;\n shape-rendering: crispEdges;\n }\n\n .milestone {\n transform: rotate(45deg) scale(0.8,0.8);\n }\n\n .milestoneText {\n font-style: italic;\n }\n .doneCritText0,\n .doneCritText1,\n .doneCritText2,\n .doneCritText3 {\n fill: ${t.taskTextDarkColor} !important;\n }\n\n .vert {\n stroke: ${t.vertLineColor};\n }\n\n .vertText {\n font-size: 15px;\n text-anchor: middle;\n fill: ${t.vertLineColor} !important;\n }\n\n .activeCritText0,\n .activeCritText1,\n .activeCritText2,\n .activeCritText3 {\n fill: ${t.taskTextDarkColor} !important;\n }\n\n .titleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${t.titleColor||t.textColor};\n font-family: ${t.fontFamily};\n }\n`),"getStyles")}}}]); \ No newline at end of file diff --git a/assets/js/455b2fca.10448263.js b/assets/js/455b2fca.10448263.js new file mode 100644 index 00000000..0b2f94f4 --- /dev/null +++ b/assets/js/455b2fca.10448263.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9159],{30466:(e,i,t)=>{t.r(i),t.d(i,{assets:()=>c,contentTitle:()=>a,default:()=>p,frontMatter:()=>d,metadata:()=>s,toc:()=>l});const s=JSON.parse('{"id":"Live Preview/device-preview","title":"Device Preview","description":"Upgrade to Phoenix Code Pro to access this feature.","source":"@site/docs/02-Live Preview/03-device-preview.md","sourceDirName":"02-Live Preview","slug":"/Pro Features/device-preview","permalink":"/docs/Pro Features/device-preview","draft":false,"unlisted":false,"editUrl":"https://github.com/phcode-dev/docs/blob/main/docs/02-Live Preview/03-device-preview.md","tags":[],"version":"current","sidebarPosition":3,"frontMatter":{"title":"Device Preview","slug":"/Pro Features/device-preview"},"sidebar":"tutorialSidebar","previous":{"title":"Live Preview Edit","permalink":"/docs/Pro Features/live-preview-edit"},"next":{"title":"Measurements","permalink":"/docs/Pro Features/measurements"}}');var n=t(74848),o=t(28453),r=(t(96540),t(56399));const d={title:"Device Preview",slug:"/Pro Features/device-preview"},a=void 0,c={},l=[{value:"Choosing a device size",id:"choosing-a-device-size",level:2},{value:"CSS breakpoints",id:"css-breakpoints",level:2},{value:"Width ruler",id:"width-ruler",level:2},{value:"In Design Mode",id:"in-design-mode",level:3}];function h(e){const i={a:"a",admonition:"admonition",blockquote:"blockquote",br:"br",code:"code",h2:"h2",h3:"h3",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,o.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(i.admonition,{title:"Pro Feature",type:"info",children:(0,n.jsxs)(i.p,{children:[(0,n.jsx)(i.a,{href:"https://phcode.io/pricing",children:"Upgrade to Phoenix Code Pro"})," to access this feature."]})}),"\n",(0,n.jsxs)(i.p,{children:[(0,n.jsx)(i.strong,{children:"Device Preview"})," lets you check how your page looks at different screen widths without leaving Phoenix Code. This is useful for testing responsive designs and debugging CSS media queries."]}),"\n",(0,n.jsx)(r.A,{src:"https://docs-images.phcode.dev/website/videos/device-size-pro-dialog.mp4"}),"\n",(0,n.jsx)(i.h2,{id:"choosing-a-device-size",children:"Choosing a device size"}),"\n",(0,n.jsx)(i.p,{children:"The right end of the Live Preview toolbar has a device-size button.\nYou can click on the device icon to switch between mobile, tablet and desktop sizes. For more specific sizes, click the dropdown arrow to open a list of predefined devices and CSS breakpoints (from your stylesheets)."}),"\n",(0,n.jsx)(i.p,{children:(0,n.jsx)(i.img,{alt:"Device size dropdown showing phone, tablet, and desktop entries with their widths",src:t(26841).A+"",title:"The device size dropdown",width:"401",height:"469"})}),"\n",(0,n.jsxs)(i.blockquote,{children:["\n",(0,n.jsxs)(i.p,{children:["Some devices might not be available if your screen is too narrow to fit the Live Preview at that size. In that case, you can try zooming out (",(0,n.jsx)(i.code,{children:"Ctrl/Cmd + -"}),") to make more space for the preview."]}),"\n"]}),"\n",(0,n.jsx)(i.h2,{id:"css-breakpoints",children:"CSS breakpoints"}),"\n",(0,n.jsx)(i.p,{children:"Phoenix Code reads your page's stylesheets and picks up the media-query breakpoints. These show up in two places:"}),"\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsxs)(i.li,{children:["In the ",(0,n.jsx)(i.strong,{children:"device dropdown"}),", listed at the bottom as ",(0,n.jsx)(i.code,{children:"@media 768px"})," (etc.). Clicking one snaps the Live Preview to that exact width."]}),"\n",(0,n.jsxs)(i.li,{children:["On the ",(0,n.jsx)(i.strong,{children:"width ruler"}),", as colored bands between breakpoints, each labelled with its pixel value."]}),"\n"]}),"\n",(0,n.jsxs)(i.blockquote,{children:["\n",(0,n.jsx)(i.p,{children:"When you edit your CSS and change the breakpoints, Phoenix Code updates the device dropdown and width ruler in real time. This makes it easy to test your responsive design as you work."}),"\n"]}),"\n",(0,n.jsx)(i.h2,{id:"width-ruler",children:"Width ruler"}),"\n",(0,n.jsxs)(i.p,{children:["While you drag the edge of the Live Preview panel, a ruler appears across the toolbar with tick marks and colored bands for each of your breakpoints. A label above the preview shows the current width and the closest matching device, like ",(0,n.jsx)(i.code,{children:"iPad Mini \u2014 768px"}),"."]}),"\n",(0,n.jsx)(i.p,{children:(0,n.jsx)(i.img,{alt:"Width ruler with breakpoint bands and device label"",src:t(59272).A+"",title:"Width ruler with breakpoint bands and device label",width:"960",height:"540"})}),"\n",(0,n.jsx)(i.h3,{id:"in-design-mode",children:"In Design Mode"}),"\n",(0,n.jsxs)(i.p,{children:["In ",(0,n.jsx)(i.a,{href:"./live-preview-edit",children:"Design Mode"}),", the Live Preview takes over the full window. In that case, you'll see resize handles directly on the page: drag the left or right handle to change the ",(0,n.jsx)(i.strong,{children:"width"}),", or drag the bottom handle to change the ",(0,n.jsx)(i.strong,{children:"height"}),". The same ruler appears, and the label now shows both dimensions, like ",(0,n.jsx)(i.code,{children:"iPad Mini \u2014 768px \xd7 1024px"}),".",(0,n.jsx)(i.br,{}),"\n","In Design Mode, a ",(0,n.jsx)(i.strong,{children:"Fit to screen"})," option is also available in the device dropdown. This resizes the page to fit the available space in the Live Preview."]})]})}function p(e={}){const{wrapper:i}={...(0,o.R)(),...e.components};return i?(0,n.jsx)(i,{...e,children:(0,n.jsx)(h,{...e})}):h(e)}},56399:(e,i,t)=>{t.d(i,{A:()=>o});var s=t(96540),n=t(74848);const o=({src:e,winLinuxTitle:i,macTitle:t})=>{const[o,r]=(0,s.useState)("");(0,s.useEffect)((()=>{navigator.platform.toLowerCase().includes("mac")?r(t):r(i)}),[i,t]);return(0,n.jsxs)("div",{style:{maxHeight:"68vh",width:"100%",display:"flex",justifyContent:"center",alignItems:"center",flexDirection:"column"},children:[(0,n.jsxs)("video",{style:{height:"90%",width:"100%"},controls:!0,autoPlay:!0,muted:!0,loop:!0,children:[(0,n.jsx)("source",{src:e,type:"video/mp4"}),"Your browser does not support the video tag."]}),(0,n.jsx)("div",{style:{width:"100%",textAlign:"center",fontSize:"1em",marginTop:"10px"},children:o})]})}},26841:(e,i,t)=>{t.d(i,{A:()=>s});const s=t.p+"assets/images/device-size-dropdown-0fd90b6ab85ae938853591b254bcd7a7.png"},59272:(e,i,t)=>{t.d(i,{A:()=>s});const s=t.p+"assets/images/width-ruler-8790707bec88b6ec20c43dfa30d64b67.png"},28453:(e,i,t)=>{t.d(i,{R:()=>r,x:()=>d});var s=t(96540);const n={},o=s.createContext(n);function r(e){const i=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function d(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:r(e.components),s.createElement(o.Provider,{value:i},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/4616.d24beedb.js b/assets/js/4616.d24beedb.js new file mode 100644 index 00000000..1354308b --- /dev/null +++ b/assets/js/4616.d24beedb.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4616],{89625:(t,e,s)=>{s.d(e,{A:()=>r});var i=s(40797),n=s(70451),r=(0,i.K2)(((t,e)=>{let s;"sandbox"===e&&(s=(0,n.Ltv)("#i"+t));return("sandbox"===e?(0,n.Ltv)(s.nodes()[0].contentDocument.body):(0,n.Ltv)("body")).select(`[id="${t}"]`)}),"getDiagramElement")},54616:(t,e,s)=>{s.d(e,{Zk:()=>h,q7:()=>B,tM:()=>ot,u4:()=>rt});var i=s(89625),n=s(21152),r=s(10045),o=s(13226),a=s(67633),c=s(40797),l=function(){var t=(0,c.K2)((function(t,e,s,i){for(s=s||{},i=t.length;i--;s[t[i]]=e);return s}),"o"),e=[1,2],s=[1,3],i=[1,4],n=[2,4],r=[1,9],o=[1,11],a=[1,16],l=[1,17],h=[1,18],d=[1,19],u=[1,33],p=[1,20],y=[1,21],g=[1,22],m=[1,23],f=[1,24],S=[1,26],b=[1,27],k=[1,28],_=[1,29],T=[1,30],E=[1,31],D=[1,32],x=[1,35],C=[1,36],$=[1,37],v=[1,38],I=[1,34],A=[1,4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,41,45,48,51,52,53,54,57],L=[1,4,5,14,15,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,39,40,41,45,48,51,52,53,54,57],w=[4,5,16,17,19,21,22,24,25,26,27,28,29,33,35,37,38,41,45,48,51,52,53,54,57],R={trace:(0,c.K2)((function(){}),"trace"),yy:{},symbols_:{error:2,start:3,SPACE:4,NL:5,SD:6,document:7,line:8,statement:9,classDefStatement:10,styleStatement:11,cssClassStatement:12,idStatement:13,DESCR:14,"--\x3e":15,HIDE_EMPTY:16,scale:17,WIDTH:18,COMPOSIT_STATE:19,STRUCT_START:20,STRUCT_STOP:21,STATE_DESCR:22,AS:23,ID:24,FORK:25,JOIN:26,CHOICE:27,CONCURRENT:28,note:29,notePosition:30,NOTE_TEXT:31,direction:32,acc_title:33,acc_title_value:34,acc_descr:35,acc_descr_value:36,acc_descr_multiline_value:37,CLICK:38,STRING:39,HREF:40,classDef:41,CLASSDEF_ID:42,CLASSDEF_STYLEOPTS:43,DEFAULT:44,style:45,STYLE_IDS:46,STYLEDEF_STYLEOPTS:47,class:48,CLASSENTITY_IDS:49,STYLECLASS:50,direction_tb:51,direction_bt:52,direction_rl:53,direction_lr:54,eol:55,";":56,EDGE_STATE:57,STYLE_SEPARATOR:58,left_of:59,right_of:60,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NL",6:"SD",14:"DESCR",15:"--\x3e",16:"HIDE_EMPTY",17:"scale",18:"WIDTH",19:"COMPOSIT_STATE",20:"STRUCT_START",21:"STRUCT_STOP",22:"STATE_DESCR",23:"AS",24:"ID",25:"FORK",26:"JOIN",27:"CHOICE",28:"CONCURRENT",29:"note",31:"NOTE_TEXT",33:"acc_title",34:"acc_title_value",35:"acc_descr",36:"acc_descr_value",37:"acc_descr_multiline_value",38:"CLICK",39:"STRING",40:"HREF",41:"classDef",42:"CLASSDEF_ID",43:"CLASSDEF_STYLEOPTS",44:"DEFAULT",45:"style",46:"STYLE_IDS",47:"STYLEDEF_STYLEOPTS",48:"class",49:"CLASSENTITY_IDS",50:"STYLECLASS",51:"direction_tb",52:"direction_bt",53:"direction_rl",54:"direction_lr",56:";",57:"EDGE_STATE",58:"STYLE_SEPARATOR",59:"left_of",60:"right_of"},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[9,1],[9,1],[9,1],[9,1],[9,2],[9,3],[9,4],[9,1],[9,2],[9,1],[9,4],[9,3],[9,6],[9,1],[9,1],[9,1],[9,1],[9,4],[9,4],[9,1],[9,2],[9,2],[9,1],[9,5],[9,5],[10,3],[10,3],[11,3],[12,3],[32,1],[32,1],[32,1],[32,1],[55,1],[55,1],[13,1],[13,1],[13,3],[13,3],[30,1],[30,1]],performAction:(0,c.K2)((function(t,e,s,i,n,r,o){var a=r.length-1;switch(n){case 3:return i.setRootDoc(r[a]),r[a];case 4:this.$=[];break;case 5:"nl"!=r[a]&&(r[a-1].push(r[a]),this.$=r[a-1]);break;case 6:case 7:case 12:this.$=r[a];break;case 8:this.$="nl";break;case 13:const t=r[a-1];t.description=i.trimColon(r[a]),this.$=t;break;case 14:this.$={stmt:"relation",state1:r[a-2],state2:r[a]};break;case 15:const e=i.trimColon(r[a]);this.$={stmt:"relation",state1:r[a-3],state2:r[a-1],description:e};break;case 19:this.$={stmt:"state",id:r[a-3],type:"default",description:"",doc:r[a-1]};break;case 20:var c=r[a],l=r[a-2].trim();if(r[a].match(":")){var h=r[a].split(":");c=h[0],l=[l,h[1]]}this.$={stmt:"state",id:c,type:"default",description:l};break;case 21:this.$={stmt:"state",id:r[a-3],type:"default",description:r[a-5],doc:r[a-1]};break;case 22:this.$={stmt:"state",id:r[a],type:"fork"};break;case 23:this.$={stmt:"state",id:r[a],type:"join"};break;case 24:this.$={stmt:"state",id:r[a],type:"choice"};break;case 25:this.$={stmt:"state",id:i.getDividerId(),type:"divider"};break;case 26:this.$={stmt:"state",id:r[a-1].trim(),note:{position:r[a-2].trim(),text:r[a].trim()}};break;case 29:this.$=r[a].trim(),i.setAccTitle(this.$);break;case 30:case 31:this.$=r[a].trim(),i.setAccDescription(this.$);break;case 32:this.$={stmt:"click",id:r[a-3],url:r[a-2],tooltip:r[a-1]};break;case 33:this.$={stmt:"click",id:r[a-3],url:r[a-1],tooltip:""};break;case 34:case 35:this.$={stmt:"classDef",id:r[a-1].trim(),classes:r[a].trim()};break;case 36:this.$={stmt:"style",id:r[a-1].trim(),styleClass:r[a].trim()};break;case 37:this.$={stmt:"applyClass",id:r[a-1].trim(),styleClass:r[a].trim()};break;case 38:i.setDirection("TB"),this.$={stmt:"dir",value:"TB"};break;case 39:i.setDirection("BT"),this.$={stmt:"dir",value:"BT"};break;case 40:i.setDirection("RL"),this.$={stmt:"dir",value:"RL"};break;case 41:i.setDirection("LR"),this.$={stmt:"dir",value:"LR"};break;case 44:case 45:this.$={stmt:"state",id:r[a].trim(),type:"default",description:""};break;case 46:case 47:this.$={stmt:"state",id:r[a-2].trim(),classes:[r[a].trim()],type:"default",description:""}}}),"anonymous"),table:[{3:1,4:e,5:s,6:i},{1:[3]},{3:5,4:e,5:s,6:i},{3:6,4:e,5:s,6:i},t([1,4,5,16,17,19,22,24,25,26,27,28,29,33,35,37,38,41,45,48,51,52,53,54,57],n,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:r,5:o,8:8,9:10,10:12,11:13,12:14,13:15,16:a,17:l,19:h,22:d,24:u,25:p,26:y,27:g,28:m,29:f,32:25,33:S,35:b,37:k,38:_,41:T,45:E,48:D,51:x,52:C,53:$,54:v,57:I},t(A,[2,5]),{9:39,10:12,11:13,12:14,13:15,16:a,17:l,19:h,22:d,24:u,25:p,26:y,27:g,28:m,29:f,32:25,33:S,35:b,37:k,38:_,41:T,45:E,48:D,51:x,52:C,53:$,54:v,57:I},t(A,[2,7]),t(A,[2,8]),t(A,[2,9]),t(A,[2,10]),t(A,[2,11]),t(A,[2,12],{14:[1,40],15:[1,41]}),t(A,[2,16]),{18:[1,42]},t(A,[2,18],{20:[1,43]}),{23:[1,44]},t(A,[2,22]),t(A,[2,23]),t(A,[2,24]),t(A,[2,25]),{30:45,31:[1,46],59:[1,47],60:[1,48]},t(A,[2,28]),{34:[1,49]},{36:[1,50]},t(A,[2,31]),{13:51,24:u,57:I},{42:[1,52],44:[1,53]},{46:[1,54]},{49:[1,55]},t(L,[2,44],{58:[1,56]}),t(L,[2,45],{58:[1,57]}),t(A,[2,38]),t(A,[2,39]),t(A,[2,40]),t(A,[2,41]),t(A,[2,6]),t(A,[2,13]),{13:58,24:u,57:I},t(A,[2,17]),t(w,n,{7:59}),{24:[1,60]},{24:[1,61]},{23:[1,62]},{24:[2,48]},{24:[2,49]},t(A,[2,29]),t(A,[2,30]),{39:[1,63],40:[1,64]},{43:[1,65]},{43:[1,66]},{47:[1,67]},{50:[1,68]},{24:[1,69]},{24:[1,70]},t(A,[2,14],{14:[1,71]}),{4:r,5:o,8:8,9:10,10:12,11:13,12:14,13:15,16:a,17:l,19:h,21:[1,72],22:d,24:u,25:p,26:y,27:g,28:m,29:f,32:25,33:S,35:b,37:k,38:_,41:T,45:E,48:D,51:x,52:C,53:$,54:v,57:I},t(A,[2,20],{20:[1,73]}),{31:[1,74]},{24:[1,75]},{39:[1,76]},{39:[1,77]},t(A,[2,34]),t(A,[2,35]),t(A,[2,36]),t(A,[2,37]),t(L,[2,46]),t(L,[2,47]),t(A,[2,15]),t(A,[2,19]),t(w,n,{7:78}),t(A,[2,26]),t(A,[2,27]),{5:[1,79]},{5:[1,80]},{4:r,5:o,8:8,9:10,10:12,11:13,12:14,13:15,16:a,17:l,19:h,21:[1,81],22:d,24:u,25:p,26:y,27:g,28:m,29:f,32:25,33:S,35:b,37:k,38:_,41:T,45:E,48:D,51:x,52:C,53:$,54:v,57:I},t(A,[2,32]),t(A,[2,33]),t(A,[2,21])],defaultActions:{5:[2,1],6:[2,2],47:[2,48],48:[2,49]},parseError:(0,c.K2)((function(t,e){if(!e.recoverable){var s=new Error(t);throw s.hash=e,s}this.trace(t)}),"parseError"),parse:(0,c.K2)((function(t){var e=this,s=[0],i=[],n=[null],r=[],o=this.table,a="",l=0,h=0,d=0,u=r.slice.call(arguments,1),p=Object.create(this.lexer),y={yy:{}};for(var g in this.yy)Object.prototype.hasOwnProperty.call(this.yy,g)&&(y.yy[g]=this.yy[g]);p.setInput(t,y.yy),y.yy.lexer=p,y.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var m=p.yylloc;r.push(m);var f=p.options&&p.options.ranges;function S(){var t;return"number"!=typeof(t=i.pop()||p.lex()||1)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof y.yy.parseError?this.parseError=y.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,c.K2)((function(t){s.length=s.length-2*t,n.length=n.length-t,r.length=r.length-t}),"popStack"),(0,c.K2)(S,"lex");for(var b,k,_,T,E,D,x,C,$,v={};;){if(_=s[s.length-1],this.defaultActions[_]?T=this.defaultActions[_]:(null==b&&(b=S()),T=o[_]&&o[_][b]),void 0===T||!T.length||!T[0]){var I="";for(D in $=[],o[_])this.terminals_[D]&&D>2&&$.push("'"+this.terminals_[D]+"'");I=p.showPosition?"Parse error on line "+(l+1)+":\n"+p.showPosition()+"\nExpecting "+$.join(", ")+", got '"+(this.terminals_[b]||b)+"'":"Parse error on line "+(l+1)+": Unexpected "+(1==b?"end of input":"'"+(this.terminals_[b]||b)+"'"),this.parseError(I,{text:p.match,token:this.terminals_[b]||b,line:p.yylineno,loc:m,expected:$})}if(T[0]instanceof Array&&T.length>1)throw new Error("Parse Error: multiple actions possible at state: "+_+", token: "+b);switch(T[0]){case 1:s.push(b),n.push(p.yytext),r.push(p.yylloc),s.push(T[1]),b=null,k?(b=k,k=null):(h=p.yyleng,a=p.yytext,l=p.yylineno,m=p.yylloc,d>0&&d--);break;case 2:if(x=this.productions_[T[1]][1],v.$=n[n.length-x],v._$={first_line:r[r.length-(x||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-(x||1)].first_column,last_column:r[r.length-1].last_column},f&&(v._$.range=[r[r.length-(x||1)].range[0],r[r.length-1].range[1]]),void 0!==(E=this.performAction.apply(v,[a,h,l,y.yy,T[1],n,r].concat(u))))return E;x&&(s=s.slice(0,-1*x*2),n=n.slice(0,-1*x),r=r.slice(0,-1*x)),s.push(this.productions_[T[1]][0]),n.push(v.$),r.push(v._$),C=o[s[s.length-2]][s[s.length-1]],s.push(C);break;case 3:return!0}}return!0}),"parse")},N=function(){return{EOF:1,parseError:(0,c.K2)((function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)}),"parseError"),setInput:(0,c.K2)((function(t,e){return this.yy=e||this.yy||{},this._input=t,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:(0,c.K2)((function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t}),"input"),unput:(0,c.K2)((function(t){var e=t.length,s=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=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),s.length-1&&(this.yylineno-=s.length-1);var n=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:s?(s.length===i.length?this.yylloc.first_column:0)+i[i.length-s.length].length-s[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[n[0],n[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this}),"unput"),more:(0,c.K2)((function(){return this._more=!0,this}),"more"),reject:(0,c.K2)((function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):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).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})}),"reject"),less:(0,c.K2)((function(t){this.unput(this.match.slice(t))}),"less"),pastInput:(0,c.K2)((function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")}),"pastInput"),upcomingInput:(0,c.K2)((function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")}),"upcomingInput"),showPosition:(0,c.K2)((function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"}),"showPosition"),test_match:(0,c.K2)((function(t,e){var s,i,n;if(this.options.backtrack_lexer&&(n={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&&(n.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,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(t[0].length),this.matched+=t[0],s=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),s)return s;if(this._backtrack){for(var r in n)this[r]=n[r];return!1}return!1}),"test_match"),next:(0,c.K2)((function(){if(this.done)return this.EOF;var t,e,s,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var n=this._currentRules(),r=0;re[0].length)){if(e=s,i=r,this.options.backtrack_lexer){if(!1!==(t=this.test_match(s,n[r])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,n[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})}),"next"),lex:(0,c.K2)((function(){var t=this.next();return t||this.lex()}),"lex"),begin:(0,c.K2)((function(t){this.conditionStack.push(t)}),"begin"),popState:(0,c.K2)((function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]}),"popState"),_currentRules:(0,c.K2)((function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules}),"_currentRules"),topState:(0,c.K2)((function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"}),"topState"),pushState:(0,c.K2)((function(t){this.begin(t)}),"pushState"),stateStackSize:(0,c.K2)((function(){return this.conditionStack.length}),"stateStackSize"),options:{"case-insensitive":!0},performAction:(0,c.K2)((function(t,e,s,i){switch(s){case 0:return 38;case 1:return 40;case 2:return 39;case 3:return 44;case 4:case 45:return 51;case 5:case 46:return 52;case 6:case 47:return 53;case 7:case 48:return 54;case 8:case 9:case 11:case 12:case 13:case 14:case 57:case 59:case 65:break;case 10:case 80:return 5;case 15:case 35:return this.pushState("SCALE"),17;case 16:case 36:return 18;case 17:case 23:case 37:case 52:case 55:this.popState();break;case 18:return this.begin("acc_title"),33;case 19:return this.popState(),"acc_title_value";case 20:return this.begin("acc_descr"),35;case 21:return this.popState(),"acc_descr_value";case 22:this.begin("acc_descr_multiline");break;case 24:return"acc_descr_multiline_value";case 25:return this.pushState("CLASSDEF"),41;case 26:return this.popState(),this.pushState("CLASSDEFID"),"DEFAULT_CLASSDEF_ID";case 27:return this.popState(),this.pushState("CLASSDEFID"),42;case 28:return this.popState(),43;case 29:return this.pushState("CLASS"),48;case 30:return this.popState(),this.pushState("CLASS_STYLE"),49;case 31:return this.popState(),50;case 32:return this.pushState("STYLE"),45;case 33:return this.popState(),this.pushState("STYLEDEF_STYLES"),46;case 34:return this.popState(),47;case 38:this.pushState("STATE");break;case 39:case 42:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),25;case 40:case 43:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),26;case 41:case 44:return this.popState(),e.yytext=e.yytext.slice(0,-10).trim(),27;case 49:this.pushState("STATE_STRING");break;case 50:return this.pushState("STATE_ID"),"AS";case 51:case 67:return this.popState(),"ID";case 53:return"STATE_DESCR";case 54:return 19;case 56:return this.popState(),this.pushState("struct"),20;case 58:return this.popState(),21;case 60:return this.begin("NOTE"),29;case 61:return this.popState(),this.pushState("NOTE_ID"),59;case 62:return this.popState(),this.pushState("NOTE_ID"),60;case 63:this.popState(),this.pushState("FLOATING_NOTE");break;case 64:return this.popState(),this.pushState("FLOATING_NOTE_ID"),"AS";case 66:return"NOTE_TEXT";case 68:return this.popState(),this.pushState("NOTE_TEXT"),24;case 69:return this.popState(),e.yytext=e.yytext.substr(2).trim(),31;case 70:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),31;case 71:case 72:return 6;case 73:return 16;case 74:return 57;case 75:return 24;case 76:return e.yytext=e.yytext.trim(),14;case 77:return 15;case 78:return 28;case 79:return 58;case 81:return"INVALID"}}),"anonymous"),rules:[/^(?:click\b)/i,/^(?:href\b)/i,/^(?:"[^"]*")/i,/^(?:default\b)/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:[\s]+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:classDef\s+)/i,/^(?:DEFAULT\s+)/i,/^(?:\w+\s+)/i,/^(?:[^\n]*)/i,/^(?:class\s+)/i,/^(?:(\w+)+((,\s*\w+)*))/i,/^(?:[^\n]*)/i,/^(?:style\s+)/i,/^(?:[\w,]+\s+)/i,/^(?:[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:state\s+)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*\[\[fork\]\])/i,/^(?:.*\[\[join\]\])/i,/^(?:.*\[\[choice\]\])/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:["])/i,/^(?:\s*as\s+)/i,/^(?:[^\n\{]*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n\s\{]+)/i,/^(?:\n)/i,/^(?:\{)/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:\})/i,/^(?:[\n])/i,/^(?:note\s+)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:")/i,/^(?:\s*as\s*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n]*)/i,/^(?:\s*[^:\n\s\-]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:[\s\S]*?end note\b)/i,/^(?:stateDiagram\s+)/i,/^(?:stateDiagram-v2\s+)/i,/^(?:hide empty description\b)/i,/^(?:\[\*\])/i,/^(?:[^:\n\s\-\{]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:-->)/i,/^(?:--)/i,/^(?::::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{LINE:{rules:[12,13],inclusive:!1},struct:{rules:[12,13,25,29,32,38,45,46,47,48,57,58,59,60,74,75,76,77,78],inclusive:!1},FLOATING_NOTE_ID:{rules:[67],inclusive:!1},FLOATING_NOTE:{rules:[64,65,66],inclusive:!1},NOTE_TEXT:{rules:[69,70],inclusive:!1},NOTE_ID:{rules:[68],inclusive:!1},NOTE:{rules:[61,62,63],inclusive:!1},STYLEDEF_STYLEOPTS:{rules:[],inclusive:!1},STYLEDEF_STYLES:{rules:[34],inclusive:!1},STYLE_IDS:{rules:[],inclusive:!1},STYLE:{rules:[33],inclusive:!1},CLASS_STYLE:{rules:[31],inclusive:!1},CLASS:{rules:[30],inclusive:!1},CLASSDEFID:{rules:[28],inclusive:!1},CLASSDEF:{rules:[26,27],inclusive:!1},acc_descr_multiline:{rules:[23,24],inclusive:!1},acc_descr:{rules:[21],inclusive:!1},acc_title:{rules:[19],inclusive:!1},SCALE:{rules:[16,17,36,37],inclusive:!1},ALIAS:{rules:[],inclusive:!1},STATE_ID:{rules:[51],inclusive:!1},STATE_STRING:{rules:[52,53],inclusive:!1},FORK_STATE:{rules:[],inclusive:!1},STATE:{rules:[12,13,39,40,41,42,43,44,49,50,54,55,56],inclusive:!1},ID:{rules:[12,13],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,13,14,15,18,20,22,25,29,32,35,38,56,60,71,72,73,74,75,76,77,79,80,81],inclusive:!0}}}}();function O(){this.yy={}}return R.lexer=N,(0,c.K2)(O,"Parser"),O.prototype=R,R.Parser=O,new O}();l.parser=l;var h=l,d="state",u="root",p="relation",y="default",g="divider",m="fill:none",f="fill: #333",S="text",b="normal",k="rect",_="rectWithTitle",T="divider",E="roundedWithTitle",D="statediagram",x=`${D}-state`,C="transition",$=`${C} note-edge`,v=`${D}-note`,I=`${D}-cluster`,A=`${D}-cluster-alt`,L="parent",w="note",R="----",N=`${R}${w}`,O=`${R}${L}`,K=(0,c.K2)(((t,e="TB")=>{if(!t.doc)return e;let s=e;for(const i of t.doc)"dir"===i.stmt&&(s=i.value);return s}),"getDir"),B={getClasses:(0,c.K2)((function(t,e){return e.db.getClasses()}),"getClasses"),draw:(0,c.K2)((async function(t,e,s,l){c.Rm.info("REF0:"),c.Rm.info("Drawing state diagram (v2)",e);const{securityLevel:h,state:d,layout:u}=(0,a.D7)();l.db.extract(l.db.getRootDocV2());const p=l.db.getData(),y=(0,i.A)(e,h);p.type=l.type,p.layoutAlgorithm=u,p.nodeSpacing=d?.nodeSpacing||50,p.rankSpacing=d?.rankSpacing||50,p.markers=["barb"],p.diagramId=e,await(0,r.XX)(p,y);try{("function"==typeof l.db.getLinks?l.db.getLinks():new Map).forEach(((t,e)=>{const s="string"==typeof e?e:"string"==typeof e?.id?e.id:"";if(!s)return void c.Rm.warn("\u26a0\ufe0f Invalid or missing stateId from key:",JSON.stringify(e));const i=y.node()?.querySelectorAll("g");let n;if(i?.forEach((t=>{const e=t.textContent?.trim();e===s&&(n=t)})),!n)return void c.Rm.warn("\u26a0\ufe0f Could not find node matching text:",s);const r=n.parentNode;if(!r)return void c.Rm.warn("\u26a0\ufe0f Node has no parent, cannot wrap:",s);const o=document.createElementNS("http://www.w3.org/2000/svg","a"),a=t.url.replace(/^"+|"+$/g,"");if(o.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",a),o.setAttribute("target","_blank"),t.tooltip){const e=t.tooltip.replace(/^"+|"+$/g,"");o.setAttribute("title",e)}r.replaceChild(o,n),o.appendChild(n),c.Rm.info("\ud83d\udd17 Wrapped node in
    tag for:",s,t.url)}))}catch(g){c.Rm.error("\u274c Error injecting clickable links:",g)}o._K.insertTitle(y,"statediagramTitleText",d?.titleTopMargin??25,l.db.getDiagramTitle()),(0,n.P)(y,8,D,d?.useMaxWidth??!0)}),"draw"),getDir:K},F=new Map,Y=0;function P(t="",e=0,s="",i=R){return`state-${t}${null!==s&&s.length>0?`${i}${s}`:""}-${e}`}(0,c.K2)(P,"stateDomId");var G=(0,c.K2)(((t,e,s,i,n,r,o,l)=>{c.Rm.trace("items",e),e.forEach((e=>{switch(e.stmt){case d:case y:V(t,e,s,i,n,r,o,l);break;case p:{V(t,e.state1,s,i,n,r,o,l),V(t,e.state2,s,i,n,r,o,l);const c={id:"edge"+Y,start:e.state1.id,end:e.state2.id,arrowhead:"normal",arrowTypeEnd:"arrow_barb",style:m,labelStyle:"",label:a.Y2.sanitizeText(e.description??"",(0,a.D7)()),arrowheadStyle:f,labelpos:"c",labelType:S,thickness:b,classes:C,look:o};n.push(c),Y++}}}))}),"setupDoc"),j=(0,c.K2)(((t,e="TB")=>{let s=e;if(t.doc)for(const i of t.doc)"dir"===i.stmt&&(s=i.value);return s}),"getDir");function z(t,e,s){if(!e.id||""===e.id||""===e.id)return;e.cssClasses&&(Array.isArray(e.cssCompiledStyles)||(e.cssCompiledStyles=[]),e.cssClasses.split(" ").forEach((t=>{const i=s.get(t);i&&(e.cssCompiledStyles=[...e.cssCompiledStyles??[],...i.styles])})));const i=t.find((t=>t.id===e.id));i?Object.assign(i,e):t.push(e)}function M(t){return t?.classes?.join(" ")??""}function U(t){return t?.styles??[]}(0,c.K2)(z,"insertOrUpdateNode"),(0,c.K2)(M,"getClassesFromDbInfo"),(0,c.K2)(U,"getStylesFromDbInfo");var V=(0,c.K2)(((t,e,s,i,n,r,o,l)=>{const h=e.id,d=s.get(h),u=M(d),p=U(d),D=(0,a.D7)();if(c.Rm.info("dataFetcher parsedItem",e,d,p),"root"!==h){let s=k;!0===e.start?s="stateStart":!1===e.start&&(s="stateEnd"),e.type!==y&&(s=e.type),F.get(h)||F.set(h,{id:h,shape:s,description:a.Y2.sanitizeText(h,D),cssClasses:`${u} ${x}`,cssStyles:p});const d=F.get(h);e.description&&(Array.isArray(d.description)?(d.shape=_,d.description.push(e.description)):d.description?.length&&d.description.length>0?(d.shape=_,d.description===h?d.description=[e.description]:d.description=[d.description,e.description]):(d.shape=k,d.description=e.description),d.description=a.Y2.sanitizeTextOrArray(d.description,D)),1===d.description?.length&&d.shape===_&&("group"===d.type?d.shape=E:d.shape=k),!d.type&&e.doc&&(c.Rm.info("Setting cluster for XCX",h,j(e)),d.type="group",d.isGroup=!0,d.dir=j(e),d.shape=e.type===g?T:E,d.cssClasses=`${d.cssClasses} ${I} ${r?A:""}`);const C={labelStyle:"",shape:d.shape,label:d.description,cssClasses:d.cssClasses,cssCompiledStyles:[],cssStyles:d.cssStyles,id:h,dir:d.dir,domId:P(h,Y),type:d.type,isGroup:"group"===d.type,padding:8,rx:10,ry:10,look:o};if(C.shape===T&&(C.label=""),t&&"root"!==t.id&&(c.Rm.trace("Setting node ",h," to be child of its parent ",t.id),C.parentId=t.id),C.centerLabel=!0,e.note){const t={labelStyle:"",shape:"note",label:e.note.text,cssClasses:v,cssStyles:[],cssCompiledStyles:[],id:h+N+"-"+Y,domId:P(h,Y,w),type:d.type,isGroup:"group"===d.type,padding:D.flowchart?.padding,look:o,position:e.note.position},s=h+O,r={labelStyle:"",shape:"noteGroup",label:e.note.text,cssClasses:d.cssClasses,cssStyles:[],id:h+O,domId:P(h,Y,L),type:"group",isGroup:!0,padding:16,look:o,position:e.note.position};Y++,r.id=s,t.parentId=s,z(i,r,l),z(i,t,l),z(i,C,l);let a=h,c=t.id;"left of"===e.note.position&&(a=t.id,c=h),n.push({id:a+"-"+c,start:a,end:c,arrowhead:"none",arrowTypeEnd:"",style:m,labelStyle:"",classes:$,arrowheadStyle:f,labelpos:"c",labelType:S,thickness:b,look:o})}else z(i,C,l)}e.doc&&(c.Rm.trace("Adding nodes children "),G(e,e.doc,s,i,n,!r,o,l))}),"dataFetcher"),W=(0,c.K2)((()=>{F.clear(),Y=0}),"reset"),X="[*]",H="start",J="[*]",q="end",Z="color",Q="fill",tt="bgFill",et=",",st=(0,c.K2)((()=>new Map),"newClassesList"),it=(0,c.K2)((()=>({relations:[],states:new Map,documents:{}})),"newDoc"),nt=(0,c.K2)((t=>JSON.parse(JSON.stringify(t))),"clone"),rt=class{constructor(t){this.version=t,this.nodes=[],this.edges=[],this.rootDoc=[],this.classes=st(),this.documents={root:it()},this.currentDocument=this.documents.root,this.startEndCount=0,this.dividerCnt=0,this.links=new Map,this.getAccTitle=a.iN,this.setAccTitle=a.SV,this.getAccDescription=a.m7,this.setAccDescription=a.EI,this.setDiagramTitle=a.ke,this.getDiagramTitle=a.ab,this.clear(),this.setRootDoc=this.setRootDoc.bind(this),this.getDividerId=this.getDividerId.bind(this),this.setDirection=this.setDirection.bind(this),this.trimColon=this.trimColon.bind(this)}static{(0,c.K2)(this,"StateDB")}static{this.relationType={AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3}}extract(t){this.clear(!0);for(const i of Array.isArray(t)?t:t.doc)switch(i.stmt){case d:this.addState(i.id.trim(),i.type,i.doc,i.description,i.note);break;case p:this.addRelation(i.state1,i.state2,i.description);break;case"classDef":this.addStyleClass(i.id.trim(),i.classes);break;case"style":this.handleStyleDef(i);break;case"applyClass":this.setCssClass(i.id.trim(),i.styleClass);break;case"click":this.addLink(i.id,i.url,i.tooltip)}const e=this.getStates(),s=(0,a.D7)();W(),V(void 0,this.getRootDocV2(),e,this.nodes,this.edges,!0,s.look,this.classes);for(const i of this.nodes)if(Array.isArray(i.label)){if(i.description=i.label.slice(1),i.isGroup&&i.description.length>0)throw new Error(`Group nodes can only have label. Remove the additional description for node [${i.id}]`);i.label=i.label[0]}}handleStyleDef(t){const e=t.id.trim().split(","),s=t.styleClass.split(",");for(const i of e){let t=this.getState(i);if(!t){const e=i.trim();this.addState(e),t=this.getState(e)}t&&(t.styles=s.map((t=>t.replace(/;/g,"")?.trim())))}}setRootDoc(t){c.Rm.info("Setting root doc",t),this.rootDoc=t,1===this.version?this.extract(t):this.extract(this.getRootDocV2())}docTranslator(t,e,s){if(e.stmt===p)return this.docTranslator(t,e.state1,!0),void this.docTranslator(t,e.state2,!1);if(e.stmt===d&&(e.id===X?(e.id=t.id+(s?"_start":"_end"),e.start=s):e.id=e.id.trim()),e.stmt!==u&&e.stmt!==d||!e.doc)return;const i=[];let n=[];for(const r of e.doc)if(r.type===g){const t=nt(r);t.doc=nt(n),i.push(t),n=[]}else n.push(r);if(i.length>0&&n.length>0){const t={stmt:d,id:(0,o.$C)(),type:"divider",doc:nt(n)};i.push(nt(t)),e.doc=i}e.doc.forEach((t=>this.docTranslator(e,t,!0)))}getRootDocV2(){return this.docTranslator({id:u,stmt:u},{id:u,stmt:u,doc:this.rootDoc},!0),{id:u,doc:this.rootDoc}}addState(t,e=y,s=void 0,i=void 0,n=void 0,r=void 0,o=void 0,l=void 0){const h=t?.trim();if(this.currentDocument.states.has(h)){const t=this.currentDocument.states.get(h);if(!t)throw new Error(`State not found: ${h}`);t.doc||(t.doc=s),t.type||(t.type=e)}else c.Rm.info("Adding state ",h,i),this.currentDocument.states.set(h,{stmt:d,id:h,descriptions:[],type:e,doc:s,note:n,classes:[],styles:[],textStyles:[]});if(i){c.Rm.info("Setting state description",h,i);(Array.isArray(i)?i:[i]).forEach((t=>this.addDescription(h,t.trim())))}if(n){const t=this.currentDocument.states.get(h);if(!t)throw new Error(`State not found: ${h}`);t.note=n,t.note.text=a.Y2.sanitizeText(t.note.text,(0,a.D7)())}if(r){c.Rm.info("Setting state classes",h,r);(Array.isArray(r)?r:[r]).forEach((t=>this.setCssClass(h,t.trim())))}if(o){c.Rm.info("Setting state styles",h,o);(Array.isArray(o)?o:[o]).forEach((t=>this.setStyle(h,t.trim())))}if(l){c.Rm.info("Setting state styles",h,o);(Array.isArray(l)?l:[l]).forEach((t=>this.setTextStyle(h,t.trim())))}}clear(t){this.nodes=[],this.edges=[],this.documents={root:it()},this.currentDocument=this.documents.root,this.startEndCount=0,this.classes=st(),t||(this.links=new Map,(0,a.IU)())}getState(t){return this.currentDocument.states.get(t)}getStates(){return this.currentDocument.states}logDocuments(){c.Rm.info("Documents = ",this.documents)}getRelations(){return this.currentDocument.relations}addLink(t,e,s){this.links.set(t,{url:e,tooltip:s}),c.Rm.warn("Adding link",t,e,s)}getLinks(){return this.links}startIdIfNeeded(t=""){return t===X?(this.startEndCount++,`${H}${this.startEndCount}`):t}startTypeIfNeeded(t="",e=y){return t===X?H:e}endIdIfNeeded(t=""){return t===J?(this.startEndCount++,`${q}${this.startEndCount}`):t}endTypeIfNeeded(t="",e=y){return t===J?q:e}addRelationObjs(t,e,s=""){const i=this.startIdIfNeeded(t.id.trim()),n=this.startTypeIfNeeded(t.id.trim(),t.type),r=this.startIdIfNeeded(e.id.trim()),o=this.startTypeIfNeeded(e.id.trim(),e.type);this.addState(i,n,t.doc,t.description,t.note,t.classes,t.styles,t.textStyles),this.addState(r,o,e.doc,e.description,e.note,e.classes,e.styles,e.textStyles),this.currentDocument.relations.push({id1:i,id2:r,relationTitle:a.Y2.sanitizeText(s,(0,a.D7)())})}addRelation(t,e,s){if("object"==typeof t&&"object"==typeof e)this.addRelationObjs(t,e,s);else if("string"==typeof t&&"string"==typeof e){const i=this.startIdIfNeeded(t.trim()),n=this.startTypeIfNeeded(t),r=this.endIdIfNeeded(e.trim()),o=this.endTypeIfNeeded(e);this.addState(i,n),this.addState(r,o),this.currentDocument.relations.push({id1:i,id2:r,relationTitle:s?a.Y2.sanitizeText(s,(0,a.D7)()):void 0})}}addDescription(t,e){const s=this.currentDocument.states.get(t),i=e.startsWith(":")?e.replace(":","").trim():e;s?.descriptions?.push(a.Y2.sanitizeText(i,(0,a.D7)()))}cleanupLabel(t){return t.startsWith(":")?t.slice(2).trim():t.trim()}getDividerId(){return this.dividerCnt++,`divider-id-${this.dividerCnt}`}addStyleClass(t,e=""){this.classes.has(t)||this.classes.set(t,{id:t,styles:[],textStyles:[]});const s=this.classes.get(t);e&&s&&e.split(et).forEach((t=>{const e=t.replace(/([^;]*);/,"$1").trim();if(RegExp(Z).exec(t)){const t=e.replace(Q,tt).replace(Z,Q);s.textStyles.push(t)}s.styles.push(e)}))}getClasses(){return this.classes}setCssClass(t,e){t.split(",").forEach((t=>{let s=this.getState(t);if(!s){const e=t.trim();this.addState(e),s=this.getState(e)}s?.classes?.push(e)}))}setStyle(t,e){this.getState(t)?.styles?.push(e)}setTextStyle(t,e){this.getState(t)?.textStyles?.push(e)}getDirectionStatement(){return this.rootDoc.find((t=>"dir"===t.stmt))}getDirection(){return this.getDirectionStatement()?.value??"TB"}setDirection(t){const e=this.getDirectionStatement();e?e.value=t:this.rootDoc.unshift({stmt:"dir",value:t})}trimColon(t){return t.startsWith(":")?t.slice(1).trim():t.trim()}getData(){const t=(0,a.D7)();return{nodes:this.nodes,edges:this.edges,other:{},config:t,direction:K(this.getRootDocV2())}}getConfig(){return(0,a.D7)().state}},ot=(0,c.K2)((t=>`\ndefs #statediagram-barbEnd {\n fill: ${t.transitionColor};\n stroke: ${t.transitionColor};\n }\ng.stateGroup text {\n fill: ${t.nodeBorder};\n stroke: none;\n font-size: 10px;\n}\ng.stateGroup text {\n fill: ${t.textColor};\n stroke: none;\n font-size: 10px;\n\n}\ng.stateGroup .state-title {\n font-weight: bolder;\n fill: ${t.stateLabelColor};\n}\n\ng.stateGroup rect {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n}\n\ng.stateGroup line {\n stroke: ${t.lineColor};\n stroke-width: 1;\n}\n\n.transition {\n stroke: ${t.transitionColor};\n stroke-width: 1;\n fill: none;\n}\n\n.stateGroup .composit {\n fill: ${t.background};\n border-bottom: 1px\n}\n\n.stateGroup .alt-composit {\n fill: #e0e0e0;\n border-bottom: 1px\n}\n\n.state-note {\n stroke: ${t.noteBorderColor};\n fill: ${t.noteBkgColor};\n\n text {\n fill: ${t.noteTextColor};\n stroke: none;\n font-size: 10px;\n }\n}\n\n.stateLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: ${t.mainBkg};\n opacity: 0.5;\n}\n\n.edgeLabel .label rect {\n fill: ${t.labelBackgroundColor};\n opacity: 0.5;\n}\n.edgeLabel {\n background-color: ${t.edgeLabelBackground};\n p {\n background-color: ${t.edgeLabelBackground};\n }\n rect {\n opacity: 0.5;\n background-color: ${t.edgeLabelBackground};\n fill: ${t.edgeLabelBackground};\n }\n text-align: center;\n}\n.edgeLabel .label text {\n fill: ${t.transitionLabelColor||t.tertiaryTextColor};\n}\n.label div .edgeLabel {\n color: ${t.transitionLabelColor||t.tertiaryTextColor};\n}\n\n.stateLabel text {\n fill: ${t.stateLabelColor};\n font-size: 10px;\n font-weight: bold;\n}\n\n.node circle.state-start {\n fill: ${t.specialStateColor};\n stroke: ${t.specialStateColor};\n}\n\n.node .fork-join {\n fill: ${t.specialStateColor};\n stroke: ${t.specialStateColor};\n}\n\n.node circle.state-end {\n fill: ${t.innerEndBackground};\n stroke: ${t.background};\n stroke-width: 1.5\n}\n.end-state-inner {\n fill: ${t.compositeBackground||t.background};\n // stroke: ${t.background};\n stroke-width: 1.5\n}\n\n.node rect {\n fill: ${t.stateBkg||t.mainBkg};\n stroke: ${t.stateBorder||t.nodeBorder};\n stroke-width: 1px;\n}\n.node polygon {\n fill: ${t.mainBkg};\n stroke: ${t.stateBorder||t.nodeBorder};;\n stroke-width: 1px;\n}\n#statediagram-barbEnd {\n fill: ${t.lineColor};\n}\n\n.statediagram-cluster rect {\n fill: ${t.compositeTitleBackground};\n stroke: ${t.stateBorder||t.nodeBorder};\n stroke-width: 1px;\n}\n\n.cluster-label, .nodeLabel {\n color: ${t.stateLabelColor};\n // line-height: 1;\n}\n\n.statediagram-cluster rect.outer {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-state .divider {\n stroke: ${t.stateBorder||t.nodeBorder};\n}\n\n.statediagram-state .title-state {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-cluster.statediagram-cluster .inner {\n fill: ${t.compositeBackground||t.background};\n}\n.statediagram-cluster.statediagram-cluster-alt .inner {\n fill: ${t.altBackground?t.altBackground:"#efefef"};\n}\n\n.statediagram-cluster .inner {\n rx:0;\n ry:0;\n}\n\n.statediagram-state rect.basic {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-state rect.divider {\n stroke-dasharray: 10,10;\n fill: ${t.altBackground?t.altBackground:"#efefef"};\n}\n\n.note-edge {\n stroke-dasharray: 5;\n}\n\n.statediagram-note rect {\n fill: ${t.noteBkgColor};\n stroke: ${t.noteBorderColor};\n stroke-width: 1px;\n rx: 0;\n ry: 0;\n}\n.statediagram-note rect {\n fill: ${t.noteBkgColor};\n stroke: ${t.noteBorderColor};\n stroke-width: 1px;\n rx: 0;\n ry: 0;\n}\n\n.statediagram-note text {\n fill: ${t.noteTextColor};\n}\n\n.statediagram-note .nodeLabel {\n color: ${t.noteTextColor};\n}\n.statediagram .edgeLabel {\n color: red; // ${t.noteTextColor};\n}\n\n#dependencyStart, #dependencyEnd {\n fill: ${t.lineColor};\n stroke: ${t.lineColor};\n stroke-width: 1;\n}\n\n.statediagramTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${t.textColor};\n}\n`),"getStyles")},21152:(t,e,s)=>{s.d(e,{P:()=>r});var i=s(67633),n=s(40797),r=(0,n.K2)(((t,e,s,r)=>{t.attr("class",s);const{width:c,height:l,x:h,y:d}=o(t,e);(0,i.a$)(t,l,c,r);const u=a(h,d,c,l,e);t.attr("viewBox",u),n.Rm.debug(`viewBox configured: ${u} with padding: ${e}`)}),"setupViewPortForSVG"),o=(0,n.K2)(((t,e)=>{const s=t.node()?.getBBox()||{width:0,height:0,x:0,y:0};return{width:s.width+2*e,height:s.height+2*e,x:s.x,y:s.y}}),"calculateDimensionsWithPadding"),a=(0,n.K2)(((t,e,s,i,n)=>`${t-n} ${e-n} ${s} ${i}`),"createViewBox")}}]); \ No newline at end of file diff --git a/assets/js/4802.caa36854.js b/assets/js/4802.caa36854.js new file mode 100644 index 00000000..843f8fd9 --- /dev/null +++ b/assets/js/4802.caa36854.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4802],{84802:(e,r,t)=>{t.d(r,{diagram:()=>u});var s=t(54616),a=(t(89625),t(21152),t(10045),t(5164),t(28698),t(5894),t(63245),t(32387),t(30092),t(13226),t(67633),t(40797)),u={parser:s.Zk,get db(){return new s.u4(2)},renderer:s.q7,styles:s.tM,init:(0,a.K2)((e=>{e.state||(e.state={}),e.state.arrowMarkerAbsolute=e.arrowMarkerAbsolute}),"init")}}}]); \ No newline at end of file diff --git a/assets/js/4971f393.1fdfb3d9.js b/assets/js/4971f393.1fdfb3d9.js new file mode 100644 index 00000000..5b1319ed --- /dev/null +++ b/assets/js/4971f393.1fdfb3d9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6243],{7714:(e,i,t)=>{t.r(i),t.d(i,{assets:()=>d,contentTitle:()=>a,default:()=>c,frontMatter:()=>o,metadata:()=>n,toc:()=>l});var n=t(92361),r=t(74848),s=t(28453);const o={slug:"brackets-editor-phoenix-code",title:"Brackets Editor in 2026: Phoenix Code Picks Up Where It Left Off",description:"The Brackets editor is in maintenance mode \u2014 Phoenix Code continues where it left off. Same team, same live preview DNA, rebuilt for 2026. Free and open source.",authors:["charly"],tags:["Brackets","Comparison","Migration","Code Editor","Live Preview","Open Source"],keywords:["brackets editor","adobe brackets","brackets code editor","brackets extensions","phoenix code","live preview editor"]},a=void 0,d={authorsImageUrls:[void 0]},l=[{value:"Brackets vs Phoenix Code: What's New",id:"brackets-vs-phoenix-code-whats-new",level:2},{value:"What Happened to the Brackets Editor?",id:"what-happened-to-the-brackets-editor",level:2},{value:"What Carried Over from Brackets",id:"what-carried-over-from-brackets",level:2},{value:"What's New in Phoenix Code",id:"whats-new-in-phoenix-code",level:2},{value:"Edit Directly in the Live Preview (Pro)",id:"edit-directly-in-the-live-preview-pro",level:3},{value:"Visual CSS Editing",id:"visual-css-editing",level:3},{value:"Built-in Git",id:"built-in-git",level:3},{value:"Runs in Your Browser",id:"runs-in-your-browser",level:3},{value:"Measurement and Inspection Tools",id:"measurement-and-inspection-tools",level:3},{value:"How to Switch from Brackets",id:"how-to-switch-from-brackets",level:2},{value:"Frequently Asked Questions",id:"frequently-asked-questions",level:2},{value:"What happened to the Brackets code editor?",id:"what-happened-to-the-brackets-code-editor",level:3},{value:"Is Phoenix Code the same as Brackets?",id:"is-phoenix-code-the-same-as-brackets",level:3},{value:"Is Phoenix Code free?",id:"is-phoenix-code-free",level:3},{value:"Is Brackets still safe to use?",id:"is-brackets-still-safe-to-use",level:3},{value:"Does Phoenix Code work on Chromebook?",id:"does-phoenix-code-work-on-chromebook",level:3},{value:"Try Phoenix Code",id:"try-phoenix-code",level:2}];function h(e){const i={a:"a",h2:"h2",h3:"h3",hr:"hr",img:"img",li:"li",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(i.p,{children:"If you've used Brackets, Phoenix Code will feel immediately familiar."}),"\n",(0,r.jsx)(i.p,{children:"Built by the same team behind Brackets, Phoenix Code keeps Live Preview and fast visual front-end development at its core \u2014 now rebuilt on a modern foundation."}),"\n",(0,r.jsx)(i.p,{children:"Phoenix Code isn\u2019t a tribute or a spiritual successor. It\u2019s the natural continuation of the ideas that started with Brackets."}),"\n",(0,r.jsx)(i.p,{children:"Here\u2019s what\u2019s changed \u2014 and how to switch."}),"\n",(0,r.jsx)(i.hr,{}),"\n",(0,r.jsx)(i.h2,{id:"brackets-vs-phoenix-code-whats-new",children:"Brackets vs Phoenix Code: What's New"}),"\n",(0,r.jsx)(i.p,{children:"Phoenix Code includes everything Brackets offered \u2014 Live Preview, lightweight workflow, web-first focus \u2014 plus built-in Git, a browser edition, visual CSS editing, and an active extension marketplace. Here's the full comparison."}),"\n",(0,r.jsxs)(i.table,{children:[(0,r.jsx)(i.thead,{children:(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.th,{children:"Feature"}),(0,r.jsx)(i.th,{children:"Brackets"}),(0,r.jsx)(i.th,{children:"Phoenix Code"})]})}),(0,r.jsxs)(i.tbody,{children:[(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"Live Preview"}),(0,r.jsx)(i.td,{children:"Basic (view only)"}),(0,r.jsxs)(i.td,{children:["Full live preview (editing in preview with ",(0,r.jsx)(i.a,{href:"/docs/Pro%20Features/live-preview-edit",children:"Pro"}),")"]})]}),(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"Visual Editing"}),(0,r.jsx)(i.td,{children:"Limited"}),(0,r.jsx)(i.td,{children:"Color pickers, number dials, gradient editors, drag-and-drop"})]}),(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"Git Integration"}),(0,r.jsx)(i.td,{children:"Required third-party extension"}),(0,r.jsx)(i.td,{children:"Built-in"})]}),(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"Browser Version"}),(0,r.jsx)(i.td,{children:"No"}),(0,r.jsxs)(i.td,{children:["Yes \u2014 ",(0,r.jsx)(i.a,{href:"https://phcode.dev",children:"phcode.dev"}),", no install needed"]})]}),(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"Chromebook / Tablet Support"}),(0,r.jsx)(i.td,{children:"No"}),(0,r.jsx)(i.td,{children:"Yes"})]}),(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"Extension Marketplace"}),(0,r.jsx)(i.td,{children:"No longer maintained"}),(0,r.jsx)(i.td,{children:"Active and growing"})]}),(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"Active Development"}),(0,r.jsx)(i.td,{children:"In maintenance mode since 2021"}),(0,r.jsx)(i.td,{children:"Regular releases, active team"})]}),(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"Open Source"}),(0,r.jsx)(i.td,{children:"Yes"}),(0,r.jsx)(i.td,{children:"Yes (AGPL-3.0)"})]}),(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"Built-in Image Library"}),(0,r.jsx)(i.td,{children:"No"}),(0,r.jsx)(i.td,{children:"Yes \u2014 stock photos you can drag into projects"})]}),(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"Price"}),(0,r.jsx)(i.td,{children:"Free"}),(0,r.jsxs)(i.td,{children:["Free (",(0,r.jsx)(i.a,{href:"https://phcode.dev/pricing",children:"Pro"})," from $9/mo for Live Preview Edit)"]})]})]})]}),"\n",(0,r.jsxs)(i.p,{children:["The free version of Phoenix Code covers everything Brackets did and more \u2014 Git, the browser edition, visual editing tools, all included. ",(0,r.jsx)(i.a,{href:"/docs/Pro%20Features/live-preview-edit",children:"Phoenix Pro"})," adds Live Preview Edit, and exists to help sustain full-time development by a small indie team."]}),"\n",(0,r.jsx)(i.hr,{}),"\n",(0,r.jsx)(i.h2,{id:"what-happened-to-the-brackets-editor",children:"What Happened to the Brackets Editor?"}),"\n",(0,r.jsx)(i.p,{children:"Brackets was created at Adobe and built on CEF (Chromium Embedded Framework) \u2014 a technology choice that made sense in 2014 but became increasingly difficult to maintain. Security patches, OS compatibility, performance work \u2014 it all got harder every year. In 2021, we took over Brackets from Adobe, continuing its development under the community we founded and now lead."}),"\n",(0,r.jsxs)(i.p,{children:["Rather than keep patching an aging foundation, we modernized the platform so it can run anywhere \u2014 in browsers, on desktop with Electron or Tauri, pretty much any modern system. One codebase that works everywhere, from ",(0,r.jsx)(i.a,{href:"https://phcode.dev",children:"phcode.dev"})," in your browser to a native desktop app."]}),"\n",(0,r.jsx)(i.p,{children:"The architecture changed. The team didn't. The design philosophy didn't. We named it Phoenix Code \u2014 Brackets, reborn."}),"\n",(0,r.jsx)(i.hr,{}),"\n",(0,r.jsx)(i.h2,{id:"what-carried-over-from-brackets",children:"What Carried Over from Brackets"}),"\n",(0,r.jsx)(i.p,{children:"If you're wondering whether Phoenix Code will feel familiar \u2014 it will."}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Live Preview"})," is still the core of the experience. Edit HTML or CSS and watch the browser update in real time, no manual refresh. This is the feature that defined Brackets, and it's still front and center."]}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"The lightweight workflow"})," is intact. Open a folder, start editing. Everything just works out of the box."]}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Web-first focus."})," HTML, CSS, JavaScript \u2014 that's the sweet spot. Phoenix Code is purpose-built for front-end work, not trying to be a general-purpose IDE."]}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Keyboard shortcuts and UI layout"})," are familiar. If you had muscle memory in Brackets, most of it still applies."]}),"\n",(0,r.jsx)(i.hr,{}),"\n",(0,r.jsx)(i.h2,{id:"whats-new-in-phoenix-code",children:"What's New in Phoenix Code"}),"\n",(0,r.jsx)(i.p,{children:"These are the features the Brackets community asked for \u2014 and we finally built them."}),"\n",(0,r.jsx)(i.h3,{id:"edit-directly-in-the-live-preview-pro",children:"Edit Directly in the Live Preview (Pro)"}),"\n",(0,r.jsxs)(i.p,{children:["Brackets' live preview was view-only. You could see changes reflected in real time, but you always had to make edits in the code. With ",(0,r.jsx)(i.a,{href:"/docs/Pro%20Features/live-preview-edit",children:"Phoenix Pro"}),", you can click on any element in the live preview and edit it right there \u2014 change text, swap images by dragging, rearrange elements visually. The source code updates automatically."]}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.img,{alt:"Phoenix Code live preview modes for editing HTML and CSS visually",src:t(40892).A+"",width:"476",height:"265"})}),"\n",(0,r.jsx)(i.h3,{id:"visual-css-editing",children:"Visual CSS Editing"}),"\n",(0,r.jsx)(i.p,{children:"Brackets had inline color pickers \u2014 Phoenix Code keeps those and adds number dials you can scrub to adjust CSS values like margins, padding, font sizes, and more. Hover over a number, drag to adjust, and see the result update in live preview instantly."}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.img,{alt:"Phoenix Code CSS number dial for adjusting margins and padding",src:t(94974).A+"",width:"863",height:"408"})}),"\n",(0,r.jsx)(i.h3,{id:"built-in-git",children:"Built-in Git"}),"\n",(0,r.jsx)(i.p,{children:"Phoenix Code ships with native Git support based on the familiar Brackets Git extension, addressing many of its earlier limitations with a simpler UX and improved reliability. Commit, push, pull, diff, and branch management, all built in."}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.img,{alt:"Built-in Git integration in Phoenix Code \u2014 commit and push",src:t(71627).A+"",width:"1520",height:"315"})}),"\n",(0,r.jsx)(i.h3,{id:"runs-in-your-browser",children:"Runs in Your Browser"}),"\n",(0,r.jsxs)(i.p,{children:["Open ",(0,r.jsx)(i.a,{href:"https://phcode.dev",children:"phcode.dev"})," and start editing \u2014 no install or admin privileges needed. Works on Chromebooks, tablets, shared computers, anywhere you have a browser. The web app runs the same core as the desktop app, so for website editing and live preview it's just as capable. For Git, AI features, and the full experience, grab the ",(0,r.jsx)(i.a,{href:"https://phcode.dev/download",children:"native app"}),"."]}),"\n",(0,r.jsx)(i.h3,{id:"measurement-and-inspection-tools",children:"Measurement and Inspection Tools"}),"\n",(0,r.jsx)(i.p,{children:"Inspect spacing between elements, measure distances, and check alignment directly in the live preview. If you work from design mockups, this replaces the constant back-and-forth between your editor and a separate design tool."}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.img,{alt:"Phoenix Code measurement and inspection tools in live preview",src:t(92448).A+"",width:"997",height:"578"})}),"\n",(0,r.jsx)(i.hr,{}),"\n",(0,r.jsx)(i.h2,{id:"how-to-switch-from-brackets",children:"How to Switch from Brackets"}),"\n",(0,r.jsx)(i.p,{children:"Short version: open your project folder in Phoenix Code. That's it."}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"No migration needed."})," Your project files work as-is. No config conversion, no import wizard. Just open the folder."]}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Extensions."})," The most popular Brackets extensions are now built into Phoenix Code: Emmet for abbreviations, Git for version control, ",(0,r.jsx)(i.a,{href:"/docs/Features/beautify-code",children:"Beautify/Prettier"})," for code formatting, and a Tab Bar for managing open files. The extension marketplace is active and growing for anything else you need."]}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Learning curve."})," Minimal. The UI layout is familiar, the shortcuts are similar, and all the new features are additive \u2014 nothing you relied on was removed. You'll be productive in minutes."]}),"\n",(0,r.jsx)(i.hr,{}),"\n",(0,r.jsx)(i.h2,{id:"frequently-asked-questions",children:"Frequently Asked Questions"}),"\n",(0,r.jsx)(i.h3,{id:"what-happened-to-the-brackets-code-editor",children:"What happened to the Brackets code editor?"}),"\n",(0,r.jsx)(i.p,{children:"Brackets was created at Adobe and actively developed until 2021. The Phoenix Code project took over the development of Brackets, and rather than keep patching an aging foundation, we rebuilt it to run in browsers and as a desktop app. Brackets, reborn."}),"\n",(0,r.jsx)(i.h3,{id:"is-phoenix-code-the-same-as-brackets",children:"Is Phoenix Code the same as Brackets?"}),"\n",(0,r.jsx)(i.p,{children:"Phoenix Code is built by the same team and carries forward the same design philosophy \u2014 Live Preview, lightweight workflow, and a focus on HTML, CSS, and JavaScript. The codebase was rewritten on modern web technologies, but the experience is familiar. If you used Brackets, you'll feel at home."}),"\n",(0,r.jsx)(i.h3,{id:"is-phoenix-code-free",children:"Is Phoenix Code free?"}),"\n",(0,r.jsxs)(i.p,{children:["Yes. The free version includes everything Brackets had and more \u2014 Git, the browser edition, visual editing tools, and the extension marketplace. ",(0,r.jsx)(i.a,{href:"/docs/Pro%20Features/live-preview-edit",children:"Phoenix Pro"})," adds Live Preview Edit starting at $9/month and helps sustain full-time development."]}),"\n",(0,r.jsx)(i.h3,{id:"is-brackets-still-safe-to-use",children:"Is Brackets still safe to use?"}),"\n",(0,r.jsx)(i.p,{children:"Brackets runs on an outdated version of Chromium that no longer receives security patches. For active web development, Phoenix Code is the maintained alternative with regular updates and security fixes."}),"\n",(0,r.jsx)(i.h3,{id:"does-phoenix-code-work-on-chromebook",children:"Does Phoenix Code work on Chromebook?"}),"\n",(0,r.jsxs)(i.p,{children:["Yes. Open ",(0,r.jsx)(i.a,{href:"https://phcode.dev",children:"phcode.dev"})," in any browser \u2014 no install or admin privileges needed. It works on Chromebooks, tablets, and shared computers."]}),"\n",(0,r.jsx)(i.hr,{}),"\n",(0,r.jsx)(i.h2,{id:"try-phoenix-code",children:"Try Phoenix Code"}),"\n",(0,r.jsx)(i.p,{children:"Phoenix Code was built for the Brackets community by the team behind Brackets.\nIf you've been waiting for the update Brackets deserved, this is it."}),"\n",(0,r.jsxs)(i.ul,{children:["\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:(0,r.jsx)(i.a,{href:"https://phcode.dev",children:"Open Phoenix Code in your browser"})})," \u2014 no install, start immediately"]}),"\n",(0,r.jsx)(i.li,{children:(0,r.jsx)(i.a,{href:"https://phcode.dev/download",children:"Download the desktop app"})}),"\n",(0,r.jsx)(i.li,{children:(0,r.jsx)(i.a,{href:"/docs/Features/Live%20Preview/",children:"Live Preview documentation"})}),"\n",(0,r.jsx)(i.li,{children:(0,r.jsx)(i.a,{href:"/docs/Pro%20Features/live-preview-edit",children:"Edit Mode (Pro)"})}),"\n",(0,r.jsx)(i.li,{children:(0,r.jsx)(i.a,{href:"/blog/Blog-Legacy",children:"Read more about the Brackets legacy"})}),"\n"]})]})}function c(e={}){const{wrapper:i}={...(0,s.R)(),...e.components};return i?(0,r.jsx)(i,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},71627:(e,i,t)=>{t.d(i,{A:()=>n});const n=t.p+"assets/images/git-commit-cadf7ef1960a86877135ff05f7ee5165.png"},40892:(e,i,t)=>{t.d(i,{A:()=>n});const n=t.p+"assets/images/lp-mode-ac20eab6478729ef3661377fc0533495.png"},94974:(e,i,t)=>{t.d(i,{A:()=>n});const n=t.p+"assets/images/number-dial-a65a9e9c4dde31e902c401a5d20b3e3e.gif"},92448:(e,i,t)=>{t.d(i,{A:()=>n});const n=t.p+"assets/images/measurements-b9b5af176bc880f6e7c0f8042c8df901.png"},28453:(e,i,t)=>{t.d(i,{R:()=>o,x:()=>a});var n=t(96540);const r={},s=n.createContext(r);function o(e){const i=n.useContext(s);return n.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function a(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),n.createElement(s.Provider,{value:i},e.children)}},92361:e=>{e.exports=JSON.parse('{"permalink":"/blog/brackets-editor-phoenix-code","editUrl":"https://github.com/phcode-dev/docs/blob/main/blog/2026-03-04-phoenix-code-vs-brackets/index.md","source":"@site/blog/2026-03-04-phoenix-code-vs-brackets/index.md","title":"Brackets Editor in 2026: Phoenix Code Picks Up Where It Left Off","description":"The Brackets editor is in maintenance mode \u2014 Phoenix Code continues where it left off. Same team, same live preview DNA, rebuilt for 2026. Free and open source.","date":"2026-03-04T00:00:00.000Z","tags":[{"inline":true,"label":"Brackets","permalink":"/blog/tags/brackets"},{"inline":true,"label":"Comparison","permalink":"/blog/tags/comparison"},{"inline":true,"label":"Migration","permalink":"/blog/tags/migration"},{"inline":true,"label":"Code Editor","permalink":"/blog/tags/code-editor"},{"inline":true,"label":"Live Preview","permalink":"/blog/tags/live-preview"},{"inline":true,"label":"Open Source","permalink":"/blog/tags/open-source"}],"readingTime":6.2,"hasTruncateMarker":false,"authors":[{"name":"Charly P Abraham","title":"Co-Founder, Phoenix Code","url":"https://github.com/charlypa","imageURL":"https://github.com/charlypa.png","key":"charly","page":null}],"frontMatter":{"slug":"brackets-editor-phoenix-code","title":"Brackets Editor in 2026: Phoenix Code Picks Up Where It Left Off","description":"The Brackets editor is in maintenance mode \u2014 Phoenix Code continues where it left off. Same team, same live preview DNA, rebuilt for 2026. Free and open source.","authors":["charly"],"tags":["Brackets","Comparison","Migration","Code Editor","Live Preview","Open Source"],"keywords":["brackets editor","adobe brackets","brackets code editor","brackets extensions","phoenix code","live preview editor"]},"unlisted":false,"prevItem":{"title":"Phoenix Code 5.1: AI, Design Mode & More","permalink":"/blog/release-5.1"},"nextItem":{"title":"Phoenix Pro Release (January-2026, V-5.0) is now Live","permalink":"/blog/release-5.0"}}')}}]); \ No newline at end of file diff --git a/assets/js/4981.b69882ce.js b/assets/js/4981.b69882ce.js new file mode 100644 index 00000000..5cf1357d --- /dev/null +++ b/assets/js/4981.b69882ce.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4981],{54981:(t,e,a)=>{a.d(e,{diagram:()=>Pt});var n=a(92875),i=a(13226),r=a(67633),s=a(40797),l=a(70451),o=a(16750),h=function(){var t=(0,s.K2)((function(t,e,a,n){for(a=a||{},n=t.length;n--;a[t[n]]=e);return a}),"o"),e=[1,24],a=[1,25],n=[1,26],i=[1,27],r=[1,28],l=[1,63],o=[1,64],h=[1,65],d=[1,66],u=[1,67],p=[1,68],y=[1,69],g=[1,29],f=[1,30],b=[1,31],x=[1,32],_=[1,33],m=[1,34],E=[1,35],S=[1,36],A=[1,37],C=[1,38],w=[1,39],k=[1,40],O=[1,41],T=[1,42],v=[1,43],R=[1,44],D=[1,45],N=[1,46],P=[1,47],B=[1,48],I=[1,50],M=[1,51],j=[1,52],K=[1,53],L=[1,54],Y=[1,55],U=[1,56],F=[1,57],X=[1,58],z=[1,59],W=[1,60],Q=[14,42],$=[14,34,36,37,38,39,40,41,42,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],H=[12,14,34,36,37,38,39,40,41,42,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],q=[1,82],V=[1,83],G=[1,84],J=[1,85],Z=[12,14,42],tt=[12,14,33,42],et=[12,14,33,42,76,77,79,80],at=[12,33],nt=[34,36,37,38,39,40,41,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74],it={trace:(0,s.K2)((function(){}),"trace"),yy:{},symbols_:{error:2,start:3,mermaidDoc:4,direction:5,direction_tb:6,direction_bt:7,direction_rl:8,direction_lr:9,graphConfig:10,C4_CONTEXT:11,NEWLINE:12,statements:13,EOF:14,C4_CONTAINER:15,C4_COMPONENT:16,C4_DYNAMIC:17,C4_DEPLOYMENT:18,otherStatements:19,diagramStatements:20,otherStatement:21,title:22,accDescription:23,acc_title:24,acc_title_value:25,acc_descr:26,acc_descr_value:27,acc_descr_multiline_value:28,boundaryStatement:29,boundaryStartStatement:30,boundaryStopStatement:31,boundaryStart:32,LBRACE:33,ENTERPRISE_BOUNDARY:34,attributes:35,SYSTEM_BOUNDARY:36,BOUNDARY:37,CONTAINER_BOUNDARY:38,NODE:39,NODE_L:40,NODE_R:41,RBRACE:42,diagramStatement:43,PERSON:44,PERSON_EXT:45,SYSTEM:46,SYSTEM_DB:47,SYSTEM_QUEUE:48,SYSTEM_EXT:49,SYSTEM_EXT_DB:50,SYSTEM_EXT_QUEUE:51,CONTAINER:52,CONTAINER_DB:53,CONTAINER_QUEUE:54,CONTAINER_EXT:55,CONTAINER_EXT_DB:56,CONTAINER_EXT_QUEUE:57,COMPONENT:58,COMPONENT_DB:59,COMPONENT_QUEUE:60,COMPONENT_EXT:61,COMPONENT_EXT_DB:62,COMPONENT_EXT_QUEUE:63,REL:64,BIREL:65,REL_U:66,REL_D:67,REL_L:68,REL_R:69,REL_B:70,REL_INDEX:71,UPDATE_EL_STYLE:72,UPDATE_REL_STYLE:73,UPDATE_LAYOUT_CONFIG:74,attribute:75,STR:76,STR_KEY:77,STR_VALUE:78,ATTRIBUTE:79,ATTRIBUTE_EMPTY:80,$accept:0,$end:1},terminals_:{2:"error",6:"direction_tb",7:"direction_bt",8:"direction_rl",9:"direction_lr",11:"C4_CONTEXT",12:"NEWLINE",14:"EOF",15:"C4_CONTAINER",16:"C4_COMPONENT",17:"C4_DYNAMIC",18:"C4_DEPLOYMENT",22:"title",23:"accDescription",24:"acc_title",25:"acc_title_value",26:"acc_descr",27:"acc_descr_value",28:"acc_descr_multiline_value",33:"LBRACE",34:"ENTERPRISE_BOUNDARY",36:"SYSTEM_BOUNDARY",37:"BOUNDARY",38:"CONTAINER_BOUNDARY",39:"NODE",40:"NODE_L",41:"NODE_R",42:"RBRACE",44:"PERSON",45:"PERSON_EXT",46:"SYSTEM",47:"SYSTEM_DB",48:"SYSTEM_QUEUE",49:"SYSTEM_EXT",50:"SYSTEM_EXT_DB",51:"SYSTEM_EXT_QUEUE",52:"CONTAINER",53:"CONTAINER_DB",54:"CONTAINER_QUEUE",55:"CONTAINER_EXT",56:"CONTAINER_EXT_DB",57:"CONTAINER_EXT_QUEUE",58:"COMPONENT",59:"COMPONENT_DB",60:"COMPONENT_QUEUE",61:"COMPONENT_EXT",62:"COMPONENT_EXT_DB",63:"COMPONENT_EXT_QUEUE",64:"REL",65:"BIREL",66:"REL_U",67:"REL_D",68:"REL_L",69:"REL_R",70:"REL_B",71:"REL_INDEX",72:"UPDATE_EL_STYLE",73:"UPDATE_REL_STYLE",74:"UPDATE_LAYOUT_CONFIG",76:"STR",77:"STR_KEY",78:"STR_VALUE",79:"ATTRIBUTE",80:"ATTRIBUTE_EMPTY"},productions_:[0,[3,1],[3,1],[5,1],[5,1],[5,1],[5,1],[4,1],[10,4],[10,4],[10,4],[10,4],[10,4],[13,1],[13,1],[13,2],[19,1],[19,2],[19,3],[21,1],[21,1],[21,2],[21,2],[21,1],[29,3],[30,3],[30,3],[30,4],[32,2],[32,2],[32,2],[32,2],[32,2],[32,2],[32,2],[31,1],[20,1],[20,2],[20,3],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,1],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[43,2],[35,1],[35,2],[75,1],[75,2],[75,1],[75,1]],performAction:(0,s.K2)((function(t,e,a,n,i,r,s){var l=r.length-1;switch(i){case 3:n.setDirection("TB");break;case 4:n.setDirection("BT");break;case 5:n.setDirection("RL");break;case 6:n.setDirection("LR");break;case 8:case 9:case 10:case 11:case 12:n.setC4Type(r[l-3]);break;case 19:n.setTitle(r[l].substring(6)),this.$=r[l].substring(6);break;case 20:n.setAccDescription(r[l].substring(15)),this.$=r[l].substring(15);break;case 21:this.$=r[l].trim(),n.setTitle(this.$);break;case 22:case 23:this.$=r[l].trim(),n.setAccDescription(this.$);break;case 28:r[l].splice(2,0,"ENTERPRISE"),n.addPersonOrSystemBoundary(...r[l]),this.$=r[l];break;case 29:r[l].splice(2,0,"SYSTEM"),n.addPersonOrSystemBoundary(...r[l]),this.$=r[l];break;case 30:n.addPersonOrSystemBoundary(...r[l]),this.$=r[l];break;case 31:r[l].splice(2,0,"CONTAINER"),n.addContainerBoundary(...r[l]),this.$=r[l];break;case 32:n.addDeploymentNode("node",...r[l]),this.$=r[l];break;case 33:n.addDeploymentNode("nodeL",...r[l]),this.$=r[l];break;case 34:n.addDeploymentNode("nodeR",...r[l]),this.$=r[l];break;case 35:n.popBoundaryParseStack();break;case 39:n.addPersonOrSystem("person",...r[l]),this.$=r[l];break;case 40:n.addPersonOrSystem("external_person",...r[l]),this.$=r[l];break;case 41:n.addPersonOrSystem("system",...r[l]),this.$=r[l];break;case 42:n.addPersonOrSystem("system_db",...r[l]),this.$=r[l];break;case 43:n.addPersonOrSystem("system_queue",...r[l]),this.$=r[l];break;case 44:n.addPersonOrSystem("external_system",...r[l]),this.$=r[l];break;case 45:n.addPersonOrSystem("external_system_db",...r[l]),this.$=r[l];break;case 46:n.addPersonOrSystem("external_system_queue",...r[l]),this.$=r[l];break;case 47:n.addContainer("container",...r[l]),this.$=r[l];break;case 48:n.addContainer("container_db",...r[l]),this.$=r[l];break;case 49:n.addContainer("container_queue",...r[l]),this.$=r[l];break;case 50:n.addContainer("external_container",...r[l]),this.$=r[l];break;case 51:n.addContainer("external_container_db",...r[l]),this.$=r[l];break;case 52:n.addContainer("external_container_queue",...r[l]),this.$=r[l];break;case 53:n.addComponent("component",...r[l]),this.$=r[l];break;case 54:n.addComponent("component_db",...r[l]),this.$=r[l];break;case 55:n.addComponent("component_queue",...r[l]),this.$=r[l];break;case 56:n.addComponent("external_component",...r[l]),this.$=r[l];break;case 57:n.addComponent("external_component_db",...r[l]),this.$=r[l];break;case 58:n.addComponent("external_component_queue",...r[l]),this.$=r[l];break;case 60:n.addRel("rel",...r[l]),this.$=r[l];break;case 61:n.addRel("birel",...r[l]),this.$=r[l];break;case 62:n.addRel("rel_u",...r[l]),this.$=r[l];break;case 63:n.addRel("rel_d",...r[l]),this.$=r[l];break;case 64:n.addRel("rel_l",...r[l]),this.$=r[l];break;case 65:n.addRel("rel_r",...r[l]),this.$=r[l];break;case 66:n.addRel("rel_b",...r[l]),this.$=r[l];break;case 67:r[l].splice(0,1),n.addRel("rel",...r[l]),this.$=r[l];break;case 68:n.updateElStyle("update_el_style",...r[l]),this.$=r[l];break;case 69:n.updateRelStyle("update_rel_style",...r[l]),this.$=r[l];break;case 70:n.updateLayoutConfig("update_layout_config",...r[l]),this.$=r[l];break;case 71:this.$=[r[l]];break;case 72:r[l].unshift(r[l-1]),this.$=r[l];break;case 73:case 75:this.$=r[l].trim();break;case 74:let t={};t[r[l-1].trim()]=r[l].trim(),this.$=t;break;case 76:this.$=""}}),"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],7:[1,6],8:[1,7],9:[1,8],10:4,11:[1,9],15:[1,10],16:[1,11],17:[1,12],18:[1,13]},{1:[3]},{1:[2,1]},{1:[2,2]},{1:[2,7]},{1:[2,3]},{1:[2,4]},{1:[2,5]},{1:[2,6]},{12:[1,14]},{12:[1,15]},{12:[1,16]},{12:[1,17]},{12:[1,18]},{13:19,19:20,20:21,21:22,22:e,23:a,24:n,26:i,28:r,29:49,30:61,32:62,34:l,36:o,37:h,38:d,39:u,40:p,41:y,43:23,44:g,45:f,46:b,47:x,48:_,49:m,50:E,51:S,52:A,53:C,54:w,55:k,56:O,57:T,58:v,59:R,60:D,61:N,62:P,63:B,64:I,65:M,66:j,67:K,68:L,69:Y,70:U,71:F,72:X,73:z,74:W},{13:70,19:20,20:21,21:22,22:e,23:a,24:n,26:i,28:r,29:49,30:61,32:62,34:l,36:o,37:h,38:d,39:u,40:p,41:y,43:23,44:g,45:f,46:b,47:x,48:_,49:m,50:E,51:S,52:A,53:C,54:w,55:k,56:O,57:T,58:v,59:R,60:D,61:N,62:P,63:B,64:I,65:M,66:j,67:K,68:L,69:Y,70:U,71:F,72:X,73:z,74:W},{13:71,19:20,20:21,21:22,22:e,23:a,24:n,26:i,28:r,29:49,30:61,32:62,34:l,36:o,37:h,38:d,39:u,40:p,41:y,43:23,44:g,45:f,46:b,47:x,48:_,49:m,50:E,51:S,52:A,53:C,54:w,55:k,56:O,57:T,58:v,59:R,60:D,61:N,62:P,63:B,64:I,65:M,66:j,67:K,68:L,69:Y,70:U,71:F,72:X,73:z,74:W},{13:72,19:20,20:21,21:22,22:e,23:a,24:n,26:i,28:r,29:49,30:61,32:62,34:l,36:o,37:h,38:d,39:u,40:p,41:y,43:23,44:g,45:f,46:b,47:x,48:_,49:m,50:E,51:S,52:A,53:C,54:w,55:k,56:O,57:T,58:v,59:R,60:D,61:N,62:P,63:B,64:I,65:M,66:j,67:K,68:L,69:Y,70:U,71:F,72:X,73:z,74:W},{13:73,19:20,20:21,21:22,22:e,23:a,24:n,26:i,28:r,29:49,30:61,32:62,34:l,36:o,37:h,38:d,39:u,40:p,41:y,43:23,44:g,45:f,46:b,47:x,48:_,49:m,50:E,51:S,52:A,53:C,54:w,55:k,56:O,57:T,58:v,59:R,60:D,61:N,62:P,63:B,64:I,65:M,66:j,67:K,68:L,69:Y,70:U,71:F,72:X,73:z,74:W},{14:[1,74]},t(Q,[2,13],{43:23,29:49,30:61,32:62,20:75,34:l,36:o,37:h,38:d,39:u,40:p,41:y,44:g,45:f,46:b,47:x,48:_,49:m,50:E,51:S,52:A,53:C,54:w,55:k,56:O,57:T,58:v,59:R,60:D,61:N,62:P,63:B,64:I,65:M,66:j,67:K,68:L,69:Y,70:U,71:F,72:X,73:z,74:W}),t(Q,[2,14]),t($,[2,16],{12:[1,76]}),t(Q,[2,36],{12:[1,77]}),t(H,[2,19]),t(H,[2,20]),{25:[1,78]},{27:[1,79]},t(H,[2,23]),{35:80,75:81,76:q,77:V,79:G,80:J},{35:86,75:81,76:q,77:V,79:G,80:J},{35:87,75:81,76:q,77:V,79:G,80:J},{35:88,75:81,76:q,77:V,79:G,80:J},{35:89,75:81,76:q,77:V,79:G,80:J},{35:90,75:81,76:q,77:V,79:G,80:J},{35:91,75:81,76:q,77:V,79:G,80:J},{35:92,75:81,76:q,77:V,79:G,80:J},{35:93,75:81,76:q,77:V,79:G,80:J},{35:94,75:81,76:q,77:V,79:G,80:J},{35:95,75:81,76:q,77:V,79:G,80:J},{35:96,75:81,76:q,77:V,79:G,80:J},{35:97,75:81,76:q,77:V,79:G,80:J},{35:98,75:81,76:q,77:V,79:G,80:J},{35:99,75:81,76:q,77:V,79:G,80:J},{35:100,75:81,76:q,77:V,79:G,80:J},{35:101,75:81,76:q,77:V,79:G,80:J},{35:102,75:81,76:q,77:V,79:G,80:J},{35:103,75:81,76:q,77:V,79:G,80:J},{35:104,75:81,76:q,77:V,79:G,80:J},t(Z,[2,59]),{35:105,75:81,76:q,77:V,79:G,80:J},{35:106,75:81,76:q,77:V,79:G,80:J},{35:107,75:81,76:q,77:V,79:G,80:J},{35:108,75:81,76:q,77:V,79:G,80:J},{35:109,75:81,76:q,77:V,79:G,80:J},{35:110,75:81,76:q,77:V,79:G,80:J},{35:111,75:81,76:q,77:V,79:G,80:J},{35:112,75:81,76:q,77:V,79:G,80:J},{35:113,75:81,76:q,77:V,79:G,80:J},{35:114,75:81,76:q,77:V,79:G,80:J},{35:115,75:81,76:q,77:V,79:G,80:J},{20:116,29:49,30:61,32:62,34:l,36:o,37:h,38:d,39:u,40:p,41:y,43:23,44:g,45:f,46:b,47:x,48:_,49:m,50:E,51:S,52:A,53:C,54:w,55:k,56:O,57:T,58:v,59:R,60:D,61:N,62:P,63:B,64:I,65:M,66:j,67:K,68:L,69:Y,70:U,71:F,72:X,73:z,74:W},{12:[1,118],33:[1,117]},{35:119,75:81,76:q,77:V,79:G,80:J},{35:120,75:81,76:q,77:V,79:G,80:J},{35:121,75:81,76:q,77:V,79:G,80:J},{35:122,75:81,76:q,77:V,79:G,80:J},{35:123,75:81,76:q,77:V,79:G,80:J},{35:124,75:81,76:q,77:V,79:G,80:J},{35:125,75:81,76:q,77:V,79:G,80:J},{14:[1,126]},{14:[1,127]},{14:[1,128]},{14:[1,129]},{1:[2,8]},t(Q,[2,15]),t($,[2,17],{21:22,19:130,22:e,23:a,24:n,26:i,28:r}),t(Q,[2,37],{19:20,20:21,21:22,43:23,29:49,30:61,32:62,13:131,22:e,23:a,24:n,26:i,28:r,34:l,36:o,37:h,38:d,39:u,40:p,41:y,44:g,45:f,46:b,47:x,48:_,49:m,50:E,51:S,52:A,53:C,54:w,55:k,56:O,57:T,58:v,59:R,60:D,61:N,62:P,63:B,64:I,65:M,66:j,67:K,68:L,69:Y,70:U,71:F,72:X,73:z,74:W}),t(H,[2,21]),t(H,[2,22]),t(Z,[2,39]),t(tt,[2,71],{75:81,35:132,76:q,77:V,79:G,80:J}),t(et,[2,73]),{78:[1,133]},t(et,[2,75]),t(et,[2,76]),t(Z,[2,40]),t(Z,[2,41]),t(Z,[2,42]),t(Z,[2,43]),t(Z,[2,44]),t(Z,[2,45]),t(Z,[2,46]),t(Z,[2,47]),t(Z,[2,48]),t(Z,[2,49]),t(Z,[2,50]),t(Z,[2,51]),t(Z,[2,52]),t(Z,[2,53]),t(Z,[2,54]),t(Z,[2,55]),t(Z,[2,56]),t(Z,[2,57]),t(Z,[2,58]),t(Z,[2,60]),t(Z,[2,61]),t(Z,[2,62]),t(Z,[2,63]),t(Z,[2,64]),t(Z,[2,65]),t(Z,[2,66]),t(Z,[2,67]),t(Z,[2,68]),t(Z,[2,69]),t(Z,[2,70]),{31:134,42:[1,135]},{12:[1,136]},{33:[1,137]},t(at,[2,28]),t(at,[2,29]),t(at,[2,30]),t(at,[2,31]),t(at,[2,32]),t(at,[2,33]),t(at,[2,34]),{1:[2,9]},{1:[2,10]},{1:[2,11]},{1:[2,12]},t($,[2,18]),t(Q,[2,38]),t(tt,[2,72]),t(et,[2,74]),t(Z,[2,24]),t(Z,[2,35]),t(nt,[2,25]),t(nt,[2,26],{12:[1,138]}),t(nt,[2,27])],defaultActions:{2:[2,1],3:[2,2],4:[2,7],5:[2,3],6:[2,4],7:[2,5],8:[2,6],74:[2,8],126:[2,9],127:[2,10],128:[2,11],129:[2,12]},parseError:(0,s.K2)((function(t,e){if(!e.recoverable){var a=new Error(t);throw a.hash=e,a}this.trace(t)}),"parseError"),parse:(0,s.K2)((function(t){var e=this,a=[0],n=[],i=[null],r=[],l=this.table,o="",c=0,h=0,d=0,u=r.slice.call(arguments,1),p=Object.create(this.lexer),y={yy:{}};for(var g in this.yy)Object.prototype.hasOwnProperty.call(this.yy,g)&&(y.yy[g]=this.yy[g]);p.setInput(t,y.yy),y.yy.lexer=p,y.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var f=p.yylloc;r.push(f);var b=p.options&&p.options.ranges;function x(){var t;return"number"!=typeof(t=n.pop()||p.lex()||1)&&(t instanceof Array&&(t=(n=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof y.yy.parseError?this.parseError=y.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,s.K2)((function(t){a.length=a.length-2*t,i.length=i.length-t,r.length=r.length-t}),"popStack"),(0,s.K2)(x,"lex");for(var _,m,E,S,A,C,w,k,O,T={};;){if(E=a[a.length-1],this.defaultActions[E]?S=this.defaultActions[E]:(null==_&&(_=x()),S=l[E]&&l[E][_]),void 0===S||!S.length||!S[0]){var v="";for(C in O=[],l[E])this.terminals_[C]&&C>2&&O.push("'"+this.terminals_[C]+"'");v=p.showPosition?"Parse error on line "+(c+1)+":\n"+p.showPosition()+"\nExpecting "+O.join(", ")+", got '"+(this.terminals_[_]||_)+"'":"Parse error on line "+(c+1)+": Unexpected "+(1==_?"end of input":"'"+(this.terminals_[_]||_)+"'"),this.parseError(v,{text:p.match,token:this.terminals_[_]||_,line:p.yylineno,loc:f,expected:O})}if(S[0]instanceof Array&&S.length>1)throw new Error("Parse Error: multiple actions possible at state: "+E+", token: "+_);switch(S[0]){case 1:a.push(_),i.push(p.yytext),r.push(p.yylloc),a.push(S[1]),_=null,m?(_=m,m=null):(h=p.yyleng,o=p.yytext,c=p.yylineno,f=p.yylloc,d>0&&d--);break;case 2:if(w=this.productions_[S[1]][1],T.$=i[i.length-w],T._$={first_line:r[r.length-(w||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-(w||1)].first_column,last_column:r[r.length-1].last_column},b&&(T._$.range=[r[r.length-(w||1)].range[0],r[r.length-1].range[1]]),void 0!==(A=this.performAction.apply(T,[o,h,c,y.yy,S[1],i,r].concat(u))))return A;w&&(a=a.slice(0,-1*w*2),i=i.slice(0,-1*w),r=r.slice(0,-1*w)),a.push(this.productions_[S[1]][0]),i.push(T.$),r.push(T._$),k=l[a[a.length-2]][a[a.length-1]],a.push(k);break;case 3:return!0}}return!0}),"parse")},rt=function(){return{EOF:1,parseError:(0,s.K2)((function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)}),"parseError"),setInput:(0,s.K2)((function(t,e){return this.yy=e||this.yy||{},this._input=t,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:(0,s.K2)((function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t}),"input"),unput:(0,s.K2)((function(t){var e=t.length,a=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var n=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),a.length-1&&(this.yylineno-=a.length-1);var i=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:a?(a.length===n.length?this.yylloc.first_column:0)+n[n.length-a.length].length-a[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this}),"unput"),more:(0,s.K2)((function(){return this._more=!0,this}),"more"),reject:(0,s.K2)((function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):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).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})}),"reject"),less:(0,s.K2)((function(t){this.unput(this.match.slice(t))}),"less"),pastInput:(0,s.K2)((function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")}),"pastInput"),upcomingInput:(0,s.K2)((function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")}),"upcomingInput"),showPosition:(0,s.K2)((function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"}),"showPosition"),test_match:(0,s.K2)((function(t,e){var a,n,i;if(this.options.backtrack_lexer&&(i={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&&(i.yylloc.range=this.yylloc.range.slice(0))),(n=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=n.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:n?n[n.length-1].length-n[n.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,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(t[0].length),this.matched+=t[0],a=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),a)return a;if(this._backtrack){for(var r in i)this[r]=i[r];return!1}return!1}),"test_match"),next:(0,s.K2)((function(){if(this.done)return this.EOF;var t,e,a,n;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),r=0;re[0].length)){if(e=a,n=r,this.options.backtrack_lexer){if(!1!==(t=this.test_match(a,i[r])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[n]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})}),"next"),lex:(0,s.K2)((function(){var t=this.next();return t||this.lex()}),"lex"),begin:(0,s.K2)((function(t){this.conditionStack.push(t)}),"begin"),popState:(0,s.K2)((function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]}),"popState"),_currentRules:(0,s.K2)((function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules}),"_currentRules"),topState:(0,s.K2)((function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"}),"topState"),pushState:(0,s.K2)((function(t){this.begin(t)}),"pushState"),stateStackSize:(0,s.K2)((function(){return this.conditionStack.length}),"stateStackSize"),options:{},performAction:(0,s.K2)((function(t,e,a,n){switch(a){case 0:return 6;case 1:return 7;case 2:return 8;case 3:return 9;case 4:return 22;case 5:return 23;case 6:return this.begin("acc_title"),24;case 7:return this.popState(),"acc_title_value";case 8:return this.begin("acc_descr"),26;case 9:return this.popState(),"acc_descr_value";case 10:this.begin("acc_descr_multiline");break;case 11:case 73:this.popState();break;case 12:return"acc_descr_multiline_value";case 13:case 16:case 70:break;case 14:c;break;case 15:return 12;case 17:return 11;case 18:return 15;case 19:return 16;case 20:return 17;case 21:return 18;case 22:return this.begin("person_ext"),45;case 23:return this.begin("person"),44;case 24:return this.begin("system_ext_queue"),51;case 25:return this.begin("system_ext_db"),50;case 26:return this.begin("system_ext"),49;case 27:return this.begin("system_queue"),48;case 28:return this.begin("system_db"),47;case 29:return this.begin("system"),46;case 30:return this.begin("boundary"),37;case 31:return this.begin("enterprise_boundary"),34;case 32:return this.begin("system_boundary"),36;case 33:return this.begin("container_ext_queue"),57;case 34:return this.begin("container_ext_db"),56;case 35:return this.begin("container_ext"),55;case 36:return this.begin("container_queue"),54;case 37:return this.begin("container_db"),53;case 38:return this.begin("container"),52;case 39:return this.begin("container_boundary"),38;case 40:return this.begin("component_ext_queue"),63;case 41:return this.begin("component_ext_db"),62;case 42:return this.begin("component_ext"),61;case 43:return this.begin("component_queue"),60;case 44:return this.begin("component_db"),59;case 45:return this.begin("component"),58;case 46:case 47:return this.begin("node"),39;case 48:return this.begin("node_l"),40;case 49:return this.begin("node_r"),41;case 50:return this.begin("rel"),64;case 51:return this.begin("birel"),65;case 52:case 53:return this.begin("rel_u"),66;case 54:case 55:return this.begin("rel_d"),67;case 56:case 57:return this.begin("rel_l"),68;case 58:case 59:return this.begin("rel_r"),69;case 60:return this.begin("rel_b"),70;case 61:return this.begin("rel_index"),71;case 62:return this.begin("update_el_style"),72;case 63:return this.begin("update_rel_style"),73;case 64:return this.begin("update_layout_config"),74;case 65:return"EOF_IN_STRUCT";case 66:return this.begin("attribute"),"ATTRIBUTE_EMPTY";case 67:this.begin("attribute");break;case 68:case 79:this.popState(),this.popState();break;case 69:case 71:return 80;case 72:this.begin("string");break;case 74:case 80:return"STR";case 75:this.begin("string_kv");break;case 76:return this.begin("string_kv_key"),"STR_KEY";case 77:this.popState(),this.begin("string_kv_value");break;case 78:return"STR_VALUE";case 81:return"LBRACE";case 82:return"RBRACE";case 83:return"SPACE";case 84:return"EOL";case 85:return 14}}),"anonymous"),rules:[/^(?:.*direction\s+TB[^\n]*)/,/^(?:.*direction\s+BT[^\n]*)/,/^(?:.*direction\s+RL[^\n]*)/,/^(?:.*direction\s+LR[^\n]*)/,/^(?:title\s[^#\n;]+)/,/^(?:accDescription\s[^#\n;]+)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:%%(?!\{)*[^\n]*(\r?\n?)+)/,/^(?:%%[^\n]*(\r?\n)*)/,/^(?:\s*(\r?\n)+)/,/^(?:\s+)/,/^(?:C4Context\b)/,/^(?:C4Container\b)/,/^(?:C4Component\b)/,/^(?:C4Dynamic\b)/,/^(?:C4Deployment\b)/,/^(?:Person_Ext\b)/,/^(?:Person\b)/,/^(?:SystemQueue_Ext\b)/,/^(?:SystemDb_Ext\b)/,/^(?:System_Ext\b)/,/^(?:SystemQueue\b)/,/^(?:SystemDb\b)/,/^(?:System\b)/,/^(?:Boundary\b)/,/^(?:Enterprise_Boundary\b)/,/^(?:System_Boundary\b)/,/^(?:ContainerQueue_Ext\b)/,/^(?:ContainerDb_Ext\b)/,/^(?:Container_Ext\b)/,/^(?:ContainerQueue\b)/,/^(?:ContainerDb\b)/,/^(?:Container\b)/,/^(?:Container_Boundary\b)/,/^(?:ComponentQueue_Ext\b)/,/^(?:ComponentDb_Ext\b)/,/^(?:Component_Ext\b)/,/^(?:ComponentQueue\b)/,/^(?:ComponentDb\b)/,/^(?:Component\b)/,/^(?:Deployment_Node\b)/,/^(?:Node\b)/,/^(?:Node_L\b)/,/^(?:Node_R\b)/,/^(?:Rel\b)/,/^(?:BiRel\b)/,/^(?:Rel_Up\b)/,/^(?:Rel_U\b)/,/^(?:Rel_Down\b)/,/^(?:Rel_D\b)/,/^(?:Rel_Left\b)/,/^(?:Rel_L\b)/,/^(?:Rel_Right\b)/,/^(?:Rel_R\b)/,/^(?:Rel_Back\b)/,/^(?:RelIndex\b)/,/^(?:UpdateElementStyle\b)/,/^(?:UpdateRelStyle\b)/,/^(?:UpdateLayoutConfig\b)/,/^(?:$)/,/^(?:[(][ ]*[,])/,/^(?:[(])/,/^(?:[)])/,/^(?:,,)/,/^(?:,)/,/^(?:[ ]*["]["])/,/^(?:[ ]*["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:[ ]*[\$])/,/^(?:[^=]*)/,/^(?:[=][ ]*["])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:[^,]+)/,/^(?:\{)/,/^(?:\})/,/^(?:[\s]+)/,/^(?:[\n\r]+)/,/^(?:$)/],conditions:{acc_descr_multiline:{rules:[11,12],inclusive:!1},acc_descr:{rules:[9],inclusive:!1},acc_title:{rules:[7],inclusive:!1},string_kv_value:{rules:[78,79],inclusive:!1},string_kv_key:{rules:[77],inclusive:!1},string_kv:{rules:[76],inclusive:!1},string:{rules:[73,74],inclusive:!1},attribute:{rules:[68,69,70,71,72,75,80],inclusive:!1},update_layout_config:{rules:[65,66,67,68],inclusive:!1},update_rel_style:{rules:[65,66,67,68],inclusive:!1},update_el_style:{rules:[65,66,67,68],inclusive:!1},rel_b:{rules:[65,66,67,68],inclusive:!1},rel_r:{rules:[65,66,67,68],inclusive:!1},rel_l:{rules:[65,66,67,68],inclusive:!1},rel_d:{rules:[65,66,67,68],inclusive:!1},rel_u:{rules:[65,66,67,68],inclusive:!1},rel_bi:{rules:[],inclusive:!1},rel:{rules:[65,66,67,68],inclusive:!1},node_r:{rules:[65,66,67,68],inclusive:!1},node_l:{rules:[65,66,67,68],inclusive:!1},node:{rules:[65,66,67,68],inclusive:!1},index:{rules:[],inclusive:!1},rel_index:{rules:[65,66,67,68],inclusive:!1},component_ext_queue:{rules:[],inclusive:!1},component_ext_db:{rules:[65,66,67,68],inclusive:!1},component_ext:{rules:[65,66,67,68],inclusive:!1},component_queue:{rules:[65,66,67,68],inclusive:!1},component_db:{rules:[65,66,67,68],inclusive:!1},component:{rules:[65,66,67,68],inclusive:!1},container_boundary:{rules:[65,66,67,68],inclusive:!1},container_ext_queue:{rules:[65,66,67,68],inclusive:!1},container_ext_db:{rules:[65,66,67,68],inclusive:!1},container_ext:{rules:[65,66,67,68],inclusive:!1},container_queue:{rules:[65,66,67,68],inclusive:!1},container_db:{rules:[65,66,67,68],inclusive:!1},container:{rules:[65,66,67,68],inclusive:!1},birel:{rules:[65,66,67,68],inclusive:!1},system_boundary:{rules:[65,66,67,68],inclusive:!1},enterprise_boundary:{rules:[65,66,67,68],inclusive:!1},boundary:{rules:[65,66,67,68],inclusive:!1},system_ext_queue:{rules:[65,66,67,68],inclusive:!1},system_ext_db:{rules:[65,66,67,68],inclusive:!1},system_ext:{rules:[65,66,67,68],inclusive:!1},system_queue:{rules:[65,66,67,68],inclusive:!1},system_db:{rules:[65,66,67,68],inclusive:!1},system:{rules:[65,66,67,68],inclusive:!1},person_ext:{rules:[65,66,67,68],inclusive:!1},person:{rules:[65,66,67,68],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,8,10,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,81,82,83,84,85],inclusive:!0}}}}();function st(){this.yy={}}return it.lexer=rt,(0,s.K2)(st,"Parser"),st.prototype=it,it.Parser=st,new st}();h.parser=h;var d,u=h,p=[],y=[""],g="global",f="",b=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],x=[],_="",m=!1,E=4,S=2,A=(0,s.K2)((function(){return d}),"getC4Type"),C=(0,s.K2)((function(t){let e=(0,r.jZ)(t,(0,r.D7)());d=e}),"setC4Type"),w=(0,s.K2)((function(t,e,a,n,i,r,s,l,o){if(null==t||null==e||null==a||null==n)return;let c={};const h=x.find((t=>t.from===e&&t.to===a));if(h?c=h:x.push(c),c.type=t,c.from=e,c.to=a,c.label={text:n},null==i)c.techn={text:""};else if("object"==typeof i){let[t,e]=Object.entries(i)[0];c[t]={text:e}}else c.techn={text:i};if(null==r)c.descr={text:""};else if("object"==typeof r){let[t,e]=Object.entries(r)[0];c[t]={text:e}}else c.descr={text:r};if("object"==typeof s){let[t,e]=Object.entries(s)[0];c[t]=e}else c.sprite=s;if("object"==typeof l){let[t,e]=Object.entries(l)[0];c[t]=e}else c.tags=l;if("object"==typeof o){let[t,e]=Object.entries(o)[0];c[t]=e}else c.link=o;c.wrap=H()}),"addRel"),k=(0,s.K2)((function(t,e,a,n,i,r,s){if(null===e||null===a)return;let l={};const o=p.find((t=>t.alias===e));if(o&&e===o.alias?l=o:(l.alias=e,p.push(l)),l.label=null==a?{text:""}:{text:a},null==n)l.descr={text:""};else if("object"==typeof n){let[t,e]=Object.entries(n)[0];l[t]={text:e}}else l.descr={text:n};if("object"==typeof i){let[t,e]=Object.entries(i)[0];l[t]=e}else l.sprite=i;if("object"==typeof r){let[t,e]=Object.entries(r)[0];l[t]=e}else l.tags=r;if("object"==typeof s){let[t,e]=Object.entries(s)[0];l[t]=e}else l.link=s;l.typeC4Shape={text:t},l.parentBoundary=g,l.wrap=H()}),"addPersonOrSystem"),O=(0,s.K2)((function(t,e,a,n,i,r,s,l){if(null===e||null===a)return;let o={};const c=p.find((t=>t.alias===e));if(c&&e===c.alias?o=c:(o.alias=e,p.push(o)),o.label=null==a?{text:""}:{text:a},null==n)o.techn={text:""};else if("object"==typeof n){let[t,e]=Object.entries(n)[0];o[t]={text:e}}else o.techn={text:n};if(null==i)o.descr={text:""};else if("object"==typeof i){let[t,e]=Object.entries(i)[0];o[t]={text:e}}else o.descr={text:i};if("object"==typeof r){let[t,e]=Object.entries(r)[0];o[t]=e}else o.sprite=r;if("object"==typeof s){let[t,e]=Object.entries(s)[0];o[t]=e}else o.tags=s;if("object"==typeof l){let[t,e]=Object.entries(l)[0];o[t]=e}else o.link=l;o.wrap=H(),o.typeC4Shape={text:t},o.parentBoundary=g}),"addContainer"),T=(0,s.K2)((function(t,e,a,n,i,r,s,l){if(null===e||null===a)return;let o={};const c=p.find((t=>t.alias===e));if(c&&e===c.alias?o=c:(o.alias=e,p.push(o)),o.label=null==a?{text:""}:{text:a},null==n)o.techn={text:""};else if("object"==typeof n){let[t,e]=Object.entries(n)[0];o[t]={text:e}}else o.techn={text:n};if(null==i)o.descr={text:""};else if("object"==typeof i){let[t,e]=Object.entries(i)[0];o[t]={text:e}}else o.descr={text:i};if("object"==typeof r){let[t,e]=Object.entries(r)[0];o[t]=e}else o.sprite=r;if("object"==typeof s){let[t,e]=Object.entries(s)[0];o[t]=e}else o.tags=s;if("object"==typeof l){let[t,e]=Object.entries(l)[0];o[t]=e}else o.link=l;o.wrap=H(),o.typeC4Shape={text:t},o.parentBoundary=g}),"addComponent"),v=(0,s.K2)((function(t,e,a,n,i){if(null===t||null===e)return;let r={};const s=b.find((e=>e.alias===t));if(s&&t===s.alias?r=s:(r.alias=t,b.push(r)),r.label=null==e?{text:""}:{text:e},null==a)r.type={text:"system"};else if("object"==typeof a){let[t,e]=Object.entries(a)[0];r[t]={text:e}}else r.type={text:a};if("object"==typeof n){let[t,e]=Object.entries(n)[0];r[t]=e}else r.tags=n;if("object"==typeof i){let[t,e]=Object.entries(i)[0];r[t]=e}else r.link=i;r.parentBoundary=g,r.wrap=H(),f=g,g=t,y.push(f)}),"addPersonOrSystemBoundary"),R=(0,s.K2)((function(t,e,a,n,i){if(null===t||null===e)return;let r={};const s=b.find((e=>e.alias===t));if(s&&t===s.alias?r=s:(r.alias=t,b.push(r)),r.label=null==e?{text:""}:{text:e},null==a)r.type={text:"container"};else if("object"==typeof a){let[t,e]=Object.entries(a)[0];r[t]={text:e}}else r.type={text:a};if("object"==typeof n){let[t,e]=Object.entries(n)[0];r[t]=e}else r.tags=n;if("object"==typeof i){let[t,e]=Object.entries(i)[0];r[t]=e}else r.link=i;r.parentBoundary=g,r.wrap=H(),f=g,g=t,y.push(f)}),"addContainerBoundary"),D=(0,s.K2)((function(t,e,a,n,i,r,s,l){if(null===e||null===a)return;let o={};const c=b.find((t=>t.alias===e));if(c&&e===c.alias?o=c:(o.alias=e,b.push(o)),o.label=null==a?{text:""}:{text:a},null==n)o.type={text:"node"};else if("object"==typeof n){let[t,e]=Object.entries(n)[0];o[t]={text:e}}else o.type={text:n};if(null==i)o.descr={text:""};else if("object"==typeof i){let[t,e]=Object.entries(i)[0];o[t]={text:e}}else o.descr={text:i};if("object"==typeof s){let[t,e]=Object.entries(s)[0];o[t]=e}else o.tags=s;if("object"==typeof l){let[t,e]=Object.entries(l)[0];o[t]=e}else o.link=l;o.nodeType=t,o.parentBoundary=g,o.wrap=H(),f=g,g=e,y.push(f)}),"addDeploymentNode"),N=(0,s.K2)((function(){g=f,y.pop(),f=y.pop(),y.push(f)}),"popBoundaryParseStack"),P=(0,s.K2)((function(t,e,a,n,i,r,s,l,o,c,h){let d=p.find((t=>t.alias===e));if(void 0!==d||(d=b.find((t=>t.alias===e)),void 0!==d)){if(null!=a)if("object"==typeof a){let[t,e]=Object.entries(a)[0];d[t]=e}else d.bgColor=a;if(null!=n)if("object"==typeof n){let[t,e]=Object.entries(n)[0];d[t]=e}else d.fontColor=n;if(null!=i)if("object"==typeof i){let[t,e]=Object.entries(i)[0];d[t]=e}else d.borderColor=i;if(null!=r)if("object"==typeof r){let[t,e]=Object.entries(r)[0];d[t]=e}else d.shadowing=r;if(null!=s)if("object"==typeof s){let[t,e]=Object.entries(s)[0];d[t]=e}else d.shape=s;if(null!=l)if("object"==typeof l){let[t,e]=Object.entries(l)[0];d[t]=e}else d.sprite=l;if(null!=o)if("object"==typeof o){let[t,e]=Object.entries(o)[0];d[t]=e}else d.techn=o;if(null!=c)if("object"==typeof c){let[t,e]=Object.entries(c)[0];d[t]=e}else d.legendText=c;if(null!=h)if("object"==typeof h){let[t,e]=Object.entries(h)[0];d[t]=e}else d.legendSprite=h}}),"updateElStyle"),B=(0,s.K2)((function(t,e,a,n,i,r,s){const l=x.find((t=>t.from===e&&t.to===a));if(void 0!==l){if(null!=n)if("object"==typeof n){let[t,e]=Object.entries(n)[0];l[t]=e}else l.textColor=n;if(null!=i)if("object"==typeof i){let[t,e]=Object.entries(i)[0];l[t]=e}else l.lineColor=i;if(null!=r)if("object"==typeof r){let[t,e]=Object.entries(r)[0];l[t]=parseInt(e)}else l.offsetX=parseInt(r);if(null!=s)if("object"==typeof s){let[t,e]=Object.entries(s)[0];l[t]=parseInt(e)}else l.offsetY=parseInt(s)}}),"updateRelStyle"),I=(0,s.K2)((function(t,e,a){let n=E,i=S;if("object"==typeof e){const t=Object.values(e)[0];n=parseInt(t)}else n=parseInt(e);if("object"==typeof a){const t=Object.values(a)[0];i=parseInt(t)}else i=parseInt(a);n>=1&&(E=n),i>=1&&(S=i)}),"updateLayoutConfig"),M=(0,s.K2)((function(){return E}),"getC4ShapeInRow"),j=(0,s.K2)((function(){return S}),"getC4BoundaryInRow"),K=(0,s.K2)((function(){return g}),"getCurrentBoundaryParse"),L=(0,s.K2)((function(){return f}),"getParentBoundaryParse"),Y=(0,s.K2)((function(t){return null==t?p:p.filter((e=>e.parentBoundary===t))}),"getC4ShapeArray"),U=(0,s.K2)((function(t){return p.find((e=>e.alias===t))}),"getC4Shape"),F=(0,s.K2)((function(t){return Object.keys(Y(t))}),"getC4ShapeKeys"),X=(0,s.K2)((function(t){return null==t?b:b.filter((e=>e.parentBoundary===t))}),"getBoundaries"),z=X,W=(0,s.K2)((function(){return x}),"getRels"),Q=(0,s.K2)((function(){return _}),"getTitle"),$=(0,s.K2)((function(t){m=t}),"setWrap"),H=(0,s.K2)((function(){return m}),"autoWrap"),q=(0,s.K2)((function(){p=[],b=[{alias:"global",label:{text:"global"},type:{text:"global"},tags:null,link:null,parentBoundary:""}],f="",g="global",y=[""],x=[],y=[""],_="",m=!1,E=4,S=2}),"clear"),V=(0,s.K2)((function(t){let e=(0,r.jZ)(t,(0,r.D7)());_=e}),"setTitle"),G={addPersonOrSystem:k,addPersonOrSystemBoundary:v,addContainer:O,addContainerBoundary:R,addComponent:T,addDeploymentNode:D,popBoundaryParseStack:N,addRel:w,updateElStyle:P,updateRelStyle:B,updateLayoutConfig:I,autoWrap:H,setWrap:$,getC4ShapeArray:Y,getC4Shape:U,getC4ShapeKeys:F,getBoundaries:X,getBoundarys:z,getCurrentBoundaryParse:K,getParentBoundaryParse:L,getRels:W,getTitle:Q,getC4Type:A,getC4ShapeInRow:M,getC4BoundaryInRow:j,setAccTitle:r.SV,getAccTitle:r.iN,getAccDescription:r.m7,setAccDescription:r.EI,getConfig:(0,s.K2)((()=>(0,r.D7)().c4),"getConfig"),clear:q,LINETYPE:{SOLID:0,DOTTED:1,NOTE:2,SOLID_CROSS:3,DOTTED_CROSS:4,SOLID_OPEN:5,DOTTED_OPEN:6,LOOP_START:10,LOOP_END:11,ALT_START:12,ALT_ELSE:13,ALT_END:14,OPT_START:15,OPT_END:16,ACTIVE_START:17,ACTIVE_END:18,PAR_START:19,PAR_AND:20,PAR_END:21,RECT_START:22,RECT_END:23,SOLID_POINT:24,DOTTED_POINT:25},ARROWTYPE:{FILLED:0,OPEN:1},PLACEMENT:{LEFTOF:0,RIGHTOF:1,OVER:2},setTitle:V,setC4Type:C},J=(0,s.K2)((function(t,e){return(0,n.tk)(t,e)}),"drawRect"),Z=(0,s.K2)((function(t,e,a,n,i,r){const s=t.append("image");s.attr("width",e),s.attr("height",a),s.attr("x",n),s.attr("y",i);let l=r.startsWith("data:image/png;base64")?r:(0,o.J)(r);s.attr("xlink:href",l)}),"drawImage"),tt=(0,s.K2)(((t,e,a)=>{const n=t.append("g");let i=0;for(let r of e){let t=r.textColor?r.textColor:"#444444",e=r.lineColor?r.lineColor:"#444444",s=r.offsetX?parseInt(r.offsetX):0,l=r.offsetY?parseInt(r.offsetY):0,o="";if(0===i){let t=n.append("line");t.attr("x1",r.startPoint.x),t.attr("y1",r.startPoint.y),t.attr("x2",r.endPoint.x),t.attr("y2",r.endPoint.y),t.attr("stroke-width","1"),t.attr("stroke",e),t.style("fill","none"),"rel_b"!==r.type&&t.attr("marker-end","url("+o+"#arrowhead)"),"birel"!==r.type&&"rel_b"!==r.type||t.attr("marker-start","url("+o+"#arrowend)"),i=-1}else{let t=n.append("path");t.attr("fill","none").attr("stroke-width","1").attr("stroke",e).attr("d","Mstartx,starty Qcontrolx,controly stopx,stopy ".replaceAll("startx",r.startPoint.x).replaceAll("starty",r.startPoint.y).replaceAll("controlx",r.startPoint.x+(r.endPoint.x-r.startPoint.x)/2-(r.endPoint.x-r.startPoint.x)/4).replaceAll("controly",r.startPoint.y+(r.endPoint.y-r.startPoint.y)/2).replaceAll("stopx",r.endPoint.x).replaceAll("stopy",r.endPoint.y)),"rel_b"!==r.type&&t.attr("marker-end","url("+o+"#arrowhead)"),"birel"!==r.type&&"rel_b"!==r.type||t.attr("marker-start","url("+o+"#arrowend)")}let c=a.messageFont();ut(a)(r.label.text,n,Math.min(r.startPoint.x,r.endPoint.x)+Math.abs(r.endPoint.x-r.startPoint.x)/2+s,Math.min(r.startPoint.y,r.endPoint.y)+Math.abs(r.endPoint.y-r.startPoint.y)/2+l,r.label.width,r.label.height,{fill:t},c),r.techn&&""!==r.techn.text&&(c=a.messageFont(),ut(a)("["+r.techn.text+"]",n,Math.min(r.startPoint.x,r.endPoint.x)+Math.abs(r.endPoint.x-r.startPoint.x)/2+s,Math.min(r.startPoint.y,r.endPoint.y)+Math.abs(r.endPoint.y-r.startPoint.y)/2+a.messageFontSize+5+l,Math.max(r.label.width,r.techn.width),r.techn.height,{fill:t,"font-style":"italic"},c))}}),"drawRels"),et=(0,s.K2)((function(t,e,a){const n=t.append("g");let i=e.bgColor?e.bgColor:"none",r=e.borderColor?e.borderColor:"#444444",s=e.fontColor?e.fontColor:"black",l={"stroke-width":1,"stroke-dasharray":"7.0,7.0"};e.nodeType&&(l={"stroke-width":1});let o={x:e.x,y:e.y,fill:i,stroke:r,width:e.width,height:e.height,rx:2.5,ry:2.5,attrs:l};J(n,o);let c=a.boundaryFont();c.fontWeight="bold",c.fontSize=c.fontSize+2,c.fontColor=s,ut(a)(e.label.text,n,e.x,e.y+e.label.Y,e.width,e.height,{fill:"#444444"},c),e.type&&""!==e.type.text&&(c=a.boundaryFont(),c.fontColor=s,ut(a)(e.type.text,n,e.x,e.y+e.type.Y,e.width,e.height,{fill:"#444444"},c)),e.descr&&""!==e.descr.text&&(c=a.boundaryFont(),c.fontSize=c.fontSize-2,c.fontColor=s,ut(a)(e.descr.text,n,e.x,e.y+e.descr.Y,e.width,e.height,{fill:"#444444"},c))}),"drawBoundary"),at=(0,s.K2)((function(t,e,a){let i=e.bgColor?e.bgColor:a[e.typeC4Shape.text+"_bg_color"],r=e.borderColor?e.borderColor:a[e.typeC4Shape.text+"_border_color"],s=e.fontColor?e.fontColor:"#FFFFFF",l="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=";switch(e.typeC4Shape.text){case"person":l="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAACD0lEQVR4Xu2YoU4EMRCGT+4j8Ai8AhaH4QHgAUjQuFMECUgMIUgwJAgMhgQsAYUiJCiQIBBY+EITsjfTdme6V24v4c8vyGbb+ZjOtN0bNcvjQXmkH83WvYBWto6PLm6v7p7uH1/w2fXD+PBycX1Pv2l3IdDm/vn7x+dXQiAubRzoURa7gRZWd0iGRIiJbOnhnfYBQZNJjNbuyY2eJG8fkDE3bbG4ep6MHUAsgYxmE3nVs6VsBWJSGccsOlFPmLIViMzLOB7pCVO2AtHJMohH7Fh6zqitQK7m0rJvAVYgGcEpe//PLdDz65sM4pF9N7ICcXDKIB5Nv6j7tD0NoSdM2QrU9Gg0ewE1LqBhHR3BBdvj2vapnidjHxD/q6vd7Pvhr31AwcY8eXMTXAKECZZJFXuEq27aLgQK5uLMohCenGGuGewOxSjBvYBqeG6B+Nqiblggdjnc+ZXDy+FNFpFzw76O3UBAROuXh6FoiAcf5g9eTvUgzy0nWg6I8cXHRUpg5bOVBCo+KDpFajOf23GgPme7RSQ+lacIENUgJ6gg1k6HjgOlqnLqip4tEuhv0hNEMXUD0clyXE3p6pZA0S2nnvTlXwLJEZWlb7cTQH1+USgTN4VhAenm/wea1OCAOmqo6fE1WCb9WSKBah+rbUWPWAmE2Rvk0ApiB45eOyNAzU8xcTvj8KvkKEoOaIYeHNA3ZuygAvFMUO0AAAAASUVORK5CYII=";break;case"external_person":l="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAIAAADYYG7QAAAB6ElEQVR4Xu2YLY+EMBCG9+dWr0aj0Wg0Go1Go0+j8Xdv2uTCvv1gpt0ebHKPuhDaeW4605Z9mJvx4AdXUyTUdd08z+u6flmWZRnHsWkafk9DptAwDPu+f0eAYtu2PEaGWuj5fCIZrBAC2eLBAnRCsEkkxmeaJp7iDJ2QMDdHsLg8SxKFEJaAo8lAXnmuOFIhTMpxxKATebo4UiFknuNo4OniSIXQyRxEA3YsnjGCVEjVXD7yLUAqxBGUyPv/Y4W2beMgGuS7kVQIBycH0fD+oi5pezQETxdHKmQKGk1eQEYldK+jw5GxPfZ9z7Mk0Qnhf1W1m3w//EUn5BDmSZsbR44QQLBEqrBHqOrmSKaQAxdnLArCrxZcM7A7ZKs4ioRq8LFC+NpC3WCBJsvpVw5edm9iEXFuyNfxXAgSwfrFQ1c0iNda8AdejvUgnktOtJQQxmcfFzGglc5WVCj7oDgFqU18boeFSs52CUh8LE8BIVQDT1ABrB0HtgSEYlX5doJnCwv9TXocKCaKbnwhdDKPq4lf3SwU3HLq4V/+WYhHVMa/3b4IlfyikAduCkcBc7mQ3/z/Qq/cTuikhkzB12Ae/mcJC9U+Vo8Ej1gWAtgbeGgFsAMHr50BIWOLCbezvhpBFUdY6EJuJ/QDW0XoMX60zZ0AAAAASUVORK5CYII="}const o=t.append("g");o.attr("class","person-man");const c=(0,n.PB)();switch(e.typeC4Shape.text){case"person":case"external_person":case"system":case"external_system":case"container":case"external_container":case"component":case"external_component":c.x=e.x,c.y=e.y,c.fill=i,c.width=e.width,c.height=e.height,c.stroke=r,c.rx=2.5,c.ry=2.5,c.attrs={"stroke-width":.5},J(o,c);break;case"system_db":case"external_system_db":case"container_db":case"external_container_db":case"component_db":case"external_component_db":o.append("path").attr("fill",i).attr("stroke-width","0.5").attr("stroke",r).attr("d","Mstartx,startyc0,-10 half,-10 half,-10c0,0 half,0 half,10l0,heightc0,10 -half,10 -half,10c0,0 -half,0 -half,-10l0,-height".replaceAll("startx",e.x).replaceAll("starty",e.y).replaceAll("half",e.width/2).replaceAll("height",e.height)),o.append("path").attr("fill","none").attr("stroke-width","0.5").attr("stroke",r).attr("d","Mstartx,startyc0,10 half,10 half,10c0,0 half,0 half,-10".replaceAll("startx",e.x).replaceAll("starty",e.y).replaceAll("half",e.width/2));break;case"system_queue":case"external_system_queue":case"container_queue":case"external_container_queue":case"component_queue":case"external_component_queue":o.append("path").attr("fill",i).attr("stroke-width","0.5").attr("stroke",r).attr("d","Mstartx,startylwidth,0c5,0 5,half 5,halfc0,0 0,half -5,halfl-width,0c-5,0 -5,-half -5,-halfc0,0 0,-half 5,-half".replaceAll("startx",e.x).replaceAll("starty",e.y).replaceAll("width",e.width).replaceAll("half",e.height/2)),o.append("path").attr("fill","none").attr("stroke-width","0.5").attr("stroke",r).attr("d","Mstartx,startyc-5,0 -5,half -5,halfc0,half 5,half 5,half".replaceAll("startx",e.x+e.width).replaceAll("starty",e.y).replaceAll("half",e.height/2))}let h=dt(a,e.typeC4Shape.text);switch(o.append("text").attr("fill",s).attr("font-family",h.fontFamily).attr("font-size",h.fontSize-2).attr("font-style","italic").attr("lengthAdjust","spacing").attr("textLength",e.typeC4Shape.width).attr("x",e.x+e.width/2-e.typeC4Shape.width/2).attr("y",e.y+e.typeC4Shape.Y).text("<<"+e.typeC4Shape.text+">>"),e.typeC4Shape.text){case"person":case"external_person":Z(o,48,48,e.x+e.width/2-24,e.y+e.image.Y,l)}let d=a[e.typeC4Shape.text+"Font"]();return d.fontWeight="bold",d.fontSize=d.fontSize+2,d.fontColor=s,ut(a)(e.label.text,o,e.x,e.y+e.label.Y,e.width,e.height,{fill:s},d),d=a[e.typeC4Shape.text+"Font"](),d.fontColor=s,e.techn&&""!==e.techn?.text?ut(a)(e.techn.text,o,e.x,e.y+e.techn.Y,e.width,e.height,{fill:s,"font-style":"italic"},d):e.type&&""!==e.type.text&&ut(a)(e.type.text,o,e.x,e.y+e.type.Y,e.width,e.height,{fill:s,"font-style":"italic"},d),e.descr&&""!==e.descr.text&&(d=a.personFont(),d.fontColor=s,ut(a)(e.descr.text,o,e.x,e.y+e.descr.Y,e.width,e.height,{fill:s},d)),e.height}),"drawC4Shape"),nt=(0,s.K2)((function(t){t.append("defs").append("symbol").attr("id","database").attr("fill-rule","evenodd").attr("clip-rule","evenodd").append("path").attr("transform","scale(.5)").attr("d","M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z")}),"insertDatabaseIcon"),it=(0,s.K2)((function(t){t.append("defs").append("symbol").attr("id","computer").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z")}),"insertComputerIcon"),rt=(0,s.K2)((function(t){t.append("defs").append("symbol").attr("id","clock").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z")}),"insertClockIcon"),st=(0,s.K2)((function(t){t.append("defs").append("marker").attr("id","arrowhead").attr("refX",9).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z")}),"insertArrowHead"),lt=(0,s.K2)((function(t){t.append("defs").append("marker").attr("id","arrowend").attr("refX",1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 10 0 L 0 5 L 10 10 z")}),"insertArrowEnd"),ot=(0,s.K2)((function(t){t.append("defs").append("marker").attr("id","filled-head").attr("refX",18).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")}),"insertArrowFilledHead"),ct=(0,s.K2)((function(t){t.append("defs").append("marker").attr("id","sequencenumber").attr("refX",15).attr("refY",15).attr("markerWidth",60).attr("markerHeight",40).attr("orient","auto").append("circle").attr("cx",15).attr("cy",15).attr("r",6)}),"insertDynamicNumber"),ht=(0,s.K2)((function(t){const e=t.append("defs").append("marker").attr("id","crosshead").attr("markerWidth",15).attr("markerHeight",8).attr("orient","auto").attr("refX",16).attr("refY",4);e.append("path").attr("fill","black").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1px").attr("d","M 9,2 V 6 L16,4 Z"),e.append("path").attr("fill","none").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1px").attr("d","M 0,1 L 6,7 M 6,1 L 0,7")}),"insertArrowCrossHead"),dt=(0,s.K2)(((t,e)=>({fontFamily:t[e+"FontFamily"],fontSize:t[e+"FontSize"],fontWeight:t[e+"FontWeight"]})),"getC4ShapeFont"),ut=function(){function t(t,e,a,i,r,s,l){n(e.append("text").attr("x",a+r/2).attr("y",i+s/2+5).style("text-anchor","middle").text(t),l)}function e(t,e,a,i,s,l,o,c){const{fontSize:h,fontFamily:d,fontWeight:u}=c,p=t.split(r.Y2.lineBreakRegex);for(let r=0;r=this.data.widthLimit||a>=this.data.widthLimit||this.nextData.cnt>ft)&&(e=this.nextData.startx+t.margin+xt.nextLinePaddingX,n=this.nextData.stopy+2*t.margin,this.nextData.stopx=a=e+t.width,this.nextData.starty=this.nextData.stopy,this.nextData.stopy=i=n+t.height,this.nextData.cnt=1),t.x=e,t.y=n,this.updateVal(this.data,"startx",e,Math.min),this.updateVal(this.data,"starty",n,Math.min),this.updateVal(this.data,"stopx",a,Math.max),this.updateVal(this.data,"stopy",i,Math.max),this.updateVal(this.nextData,"startx",e,Math.min),this.updateVal(this.nextData,"starty",n,Math.min),this.updateVal(this.nextData,"stopx",a,Math.max),this.updateVal(this.nextData,"stopy",i,Math.max)}init(t){this.name="",this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0,widthLimit:void 0},this.nextData={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0,cnt:0},mt(t.db.getConfig())}bumpLastMargin(t){this.data.stopx+=t,this.data.stopy+=t}},mt=(0,s.K2)((function(t){(0,r.hH)(xt,t),t.fontFamily&&(xt.personFontFamily=xt.systemFontFamily=xt.messageFontFamily=t.fontFamily),t.fontSize&&(xt.personFontSize=xt.systemFontSize=xt.messageFontSize=t.fontSize),t.fontWeight&&(xt.personFontWeight=xt.systemFontWeight=xt.messageFontWeight=t.fontWeight)}),"setConf"),Et=(0,s.K2)(((t,e)=>({fontFamily:t[e+"FontFamily"],fontSize:t[e+"FontSize"],fontWeight:t[e+"FontWeight"]})),"c4ShapeFont"),St=(0,s.K2)((t=>({fontFamily:t.boundaryFontFamily,fontSize:t.boundaryFontSize,fontWeight:t.boundaryFontWeight})),"boundaryFont"),At=(0,s.K2)((t=>({fontFamily:t.messageFontFamily,fontSize:t.messageFontSize,fontWeight:t.messageFontWeight})),"messageFont");function Ct(t,e,a,n,s){if(!e[t].width)if(a)e[t].text=(0,i.bH)(e[t].text,s,n),e[t].textLines=e[t].text.split(r.Y2.lineBreakRegex).length,e[t].width=s,e[t].height=(0,i.ru)(e[t].text,n);else{let a=e[t].text.split(r.Y2.lineBreakRegex);e[t].textLines=a.length;let s=0;e[t].height=0,e[t].width=0;for(const r of a)e[t].width=Math.max((0,i.Un)(r,n),e[t].width),s=(0,i.ru)(r,n),e[t].height=e[t].height+s}}(0,s.K2)(Ct,"calcC4ShapeTextWH");var wt=(0,s.K2)((function(t,e,a){e.x=a.data.startx,e.y=a.data.starty,e.width=a.data.stopx-a.data.startx,e.height=a.data.stopy-a.data.starty,e.label.y=xt.c4ShapeMargin-35;let n=e.wrap&&xt.wrap,r=St(xt);r.fontSize=r.fontSize+2,r.fontWeight="bold",Ct("label",e,n,r,(0,i.Un)(e.label.text,r)),pt.drawBoundary(t,e,xt)}),"drawBoundary"),kt=(0,s.K2)((function(t,e,a,n){let r=0;for(const s of n){r=0;const n=a[s];let l=Et(xt,n.typeC4Shape.text);switch(l.fontSize=l.fontSize-2,n.typeC4Shape.width=(0,i.Un)("\xab"+n.typeC4Shape.text+"\xbb",l),n.typeC4Shape.height=l.fontSize+2,n.typeC4Shape.Y=xt.c4ShapePadding,r=n.typeC4Shape.Y+n.typeC4Shape.height-4,n.image={width:0,height:0,Y:0},n.typeC4Shape.text){case"person":case"external_person":n.image.width=48,n.image.height=48,n.image.Y=r,r=n.image.Y+n.image.height}n.sprite&&(n.image.width=48,n.image.height=48,n.image.Y=r,r=n.image.Y+n.image.height);let o=n.wrap&&xt.wrap,c=xt.width-2*xt.c4ShapePadding,h=Et(xt,n.typeC4Shape.text);if(h.fontSize=h.fontSize+2,h.fontWeight="bold",Ct("label",n,o,h,c),n.label.Y=r+8,r=n.label.Y+n.label.height,n.type&&""!==n.type.text){n.type.text="["+n.type.text+"]",Ct("type",n,o,Et(xt,n.typeC4Shape.text),c),n.type.Y=r+5,r=n.type.Y+n.type.height}else if(n.techn&&""!==n.techn.text){n.techn.text="["+n.techn.text+"]",Ct("techn",n,o,Et(xt,n.techn.text),c),n.techn.Y=r+5,r=n.techn.Y+n.techn.height}let d=r,u=n.label.width;if(n.descr&&""!==n.descr.text){Ct("descr",n,o,Et(xt,n.typeC4Shape.text),c),n.descr.Y=r+20,r=n.descr.Y+n.descr.height,u=Math.max(n.label.width,n.descr.width),d=r-5*n.descr.textLines}u+=xt.c4ShapePadding,n.width=Math.max(n.width||xt.width,u,xt.width),n.height=Math.max(n.height||xt.height,d,xt.height),n.margin=n.margin||xt.c4ShapeMargin,t.insert(n),pt.drawC4Shape(e,n,xt)}t.bumpLastMargin(xt.c4ShapeMargin)}),"drawC4ShapeArray"),Ot=class{static{(0,s.K2)(this,"Point")}constructor(t,e){this.x=t,this.y=e}},Tt=(0,s.K2)((function(t,e){let a=t.x,n=t.y,i=e.x,r=e.y,s=a+t.width/2,l=n+t.height/2,o=Math.abs(a-i),c=Math.abs(n-r),h=c/o,d=t.height/t.width,u=null;return n==r&&ai?u=new Ot(a,l):a==i&&nr&&(u=new Ot(s,n)),a>i&&n=h?new Ot(a,l+h*t.width/2):new Ot(s-o/c*t.height/2,n+t.height):a=h?new Ot(a+t.width,l+h*t.width/2):new Ot(s+o/c*t.height/2,n+t.height):ar?u=d>=h?new Ot(a+t.width,l-h*t.width/2):new Ot(s+t.height/2*o/c,n):a>i&&n>r&&(u=d>=h?new Ot(a,l-t.width/2*h):new Ot(s-t.height/2*o/c,n)),u}),"getIntersectPoint"),vt=(0,s.K2)((function(t,e){let a={x:0,y:0};a.x=e.x+e.width/2,a.y=e.y+e.height/2;let n=Tt(t,a);return a.x=t.x+t.width/2,a.y=t.y+t.height/2,{startPoint:n,endPoint:Tt(e,a)}}),"getIntersectPoints"),Rt=(0,s.K2)((function(t,e,a,n){let r=0;for(let s of e){r+=1;let t=s.wrap&&xt.wrap,e=At(xt);"C4Dynamic"===n.db.getC4Type()&&(s.label.text=r+": "+s.label.text);let l=(0,i.Un)(s.label.text,e);Ct("label",s,t,e,l),s.techn&&""!==s.techn.text&&(l=(0,i.Un)(s.techn.text,e),Ct("techn",s,t,e,l)),s.descr&&""!==s.descr.text&&(l=(0,i.Un)(s.descr.text,e),Ct("descr",s,t,e,l));let o=a(s.from),c=a(s.to),h=vt(o,c);s.startPoint=h.startPoint,s.endPoint=h.endPoint}pt.drawRels(t,e,xt)}),"drawRels");function Dt(t,e,a,n,i){let r=new _t(i);r.data.widthLimit=a.data.widthLimit/Math.min(bt,n.length);for(let[s,l]of n.entries()){let n=0;l.image={width:0,height:0,Y:0},l.sprite&&(l.image.width=48,l.image.height=48,l.image.Y=n,n=l.image.Y+l.image.height);let o=l.wrap&&xt.wrap,c=St(xt);if(c.fontSize=c.fontSize+2,c.fontWeight="bold",Ct("label",l,o,c,r.data.widthLimit),l.label.Y=n+8,n=l.label.Y+l.label.height,l.type&&""!==l.type.text){l.type.text="["+l.type.text+"]",Ct("type",l,o,St(xt),r.data.widthLimit),l.type.Y=n+5,n=l.type.Y+l.type.height}if(l.descr&&""!==l.descr.text){let t=St(xt);t.fontSize=t.fontSize-2,Ct("descr",l,o,t,r.data.widthLimit),l.descr.Y=n+20,n=l.descr.Y+l.descr.height}if(0==s||s%bt==0){let t=a.data.startx+xt.diagramMarginX,e=a.data.stopy+xt.diagramMarginY+n;r.setData(t,t,e,e)}else{let t=r.data.stopx!==r.data.startx?r.data.stopx+xt.diagramMarginX:r.data.startx,e=r.data.starty;r.setData(t,t,e,e)}r.name=l.alias;let h=i.db.getC4ShapeArray(l.alias),d=i.db.getC4ShapeKeys(l.alias);d.length>0&&kt(r,t,h,d),e=l.alias;let u=i.db.getBoundaries(e);u.length>0&&Dt(t,e,r,u,i),"global"!==l.alias&&wt(t,l,r),a.data.stopy=Math.max(r.data.stopy+xt.c4ShapeMargin,a.data.stopy),a.data.stopx=Math.max(r.data.stopx+xt.c4ShapeMargin,a.data.stopx),yt=Math.max(yt,a.data.stopx),gt=Math.max(gt,a.data.stopy)}}(0,s.K2)(Dt,"drawInsideBoundary");var Nt={drawPersonOrSystemArray:kt,drawBoundary:wt,setConf:mt,draw:(0,s.K2)((function(t,e,a,n){xt=(0,r.D7)().c4;const i=(0,r.D7)().securityLevel;let o;"sandbox"===i&&(o=(0,l.Ltv)("#i"+e));const c="sandbox"===i?(0,l.Ltv)(o.nodes()[0].contentDocument.body):(0,l.Ltv)("body");let h=n.db;n.db.setWrap(xt.wrap),ft=h.getC4ShapeInRow(),bt=h.getC4BoundaryInRow(),s.Rm.debug(`C:${JSON.stringify(xt,null,2)}`);const d="sandbox"===i?c.select(`[id="${e}"]`):(0,l.Ltv)(`[id="${e}"]`);pt.insertComputerIcon(d),pt.insertDatabaseIcon(d),pt.insertClockIcon(d);let u=new _t(n);u.setData(xt.diagramMarginX,xt.diagramMarginX,xt.diagramMarginY,xt.diagramMarginY),u.data.widthLimit=screen.availWidth,yt=xt.diagramMarginX,gt=xt.diagramMarginY;const p=n.db.getTitle();Dt(d,"",u,n.db.getBoundaries(""),n),pt.insertArrowHead(d),pt.insertArrowEnd(d),pt.insertArrowCrossHead(d),pt.insertArrowFilledHead(d),Rt(d,n.db.getRels(),n.db.getC4Shape,n),u.data.stopx=yt,u.data.stopy=gt;const y=u.data;let g=y.stopy-y.starty+2*xt.diagramMarginY;const f=y.stopx-y.startx+2*xt.diagramMarginX;p&&d.append("text").text(p).attr("x",(y.stopx-y.startx)/2-4*xt.diagramMarginX).attr("y",y.starty+xt.diagramMarginY),(0,r.a$)(d,g,f,xt.useMaxWidth);const b=p?60:0;d.attr("viewBox",y.startx-xt.diagramMarginX+" -"+(xt.diagramMarginY+b)+" "+f+" "+(g+b)),s.Rm.debug("models:",y)}),"draw")},Pt={parser:u,db:G,renderer:Nt,styles:(0,s.K2)((t=>`.person {\n stroke: ${t.personBorder};\n fill: ${t.personBkg};\n }\n`),"getStyles"),init:(0,s.K2)((({c4:t,wrap:e})=>{Nt.setConf(t),G.setWrap(e)}),"init")}},92875:(t,e,a)=>{a.d(e,{CP:()=>h,HT:()=>u,PB:()=>d,aC:()=>c,lC:()=>l,m:()=>o,tk:()=>s});var n=a(67633),i=a(40797),r=a(16750),s=(0,i.K2)(((t,e)=>{const a=t.append("rect");if(a.attr("x",e.x),a.attr("y",e.y),a.attr("fill",e.fill),a.attr("stroke",e.stroke),a.attr("width",e.width),a.attr("height",e.height),e.name&&a.attr("name",e.name),e.rx&&a.attr("rx",e.rx),e.ry&&a.attr("ry",e.ry),void 0!==e.attrs)for(const n in e.attrs)a.attr(n,e.attrs[n]);return e.class&&a.attr("class",e.class),a}),"drawRect"),l=(0,i.K2)(((t,e)=>{const a={x:e.startx,y:e.starty,width:e.stopx-e.startx,height:e.stopy-e.starty,fill:e.fill,stroke:e.stroke,class:"rect"};s(t,a).lower()}),"drawBackgroundRect"),o=(0,i.K2)(((t,e)=>{const a=e.text.replace(n.H1," "),i=t.append("text");i.attr("x",e.x),i.attr("y",e.y),i.attr("class","legend"),i.style("text-anchor",e.anchor),e.class&&i.attr("class",e.class);const r=i.append("tspan");return r.attr("x",e.x+2*e.textMargin),r.text(a),i}),"drawText"),c=(0,i.K2)(((t,e,a,n)=>{const i=t.append("image");i.attr("x",e),i.attr("y",a);const s=(0,r.J)(n);i.attr("xlink:href",s)}),"drawImage"),h=(0,i.K2)(((t,e,a,n)=>{const i=t.append("use");i.attr("x",e),i.attr("y",a);const s=(0,r.J)(n);i.attr("xlink:href",`#${s}`)}),"drawEmbeddedImage"),d=(0,i.K2)((()=>({x:0,y:0,width:100,height:100,fill:"#EDF2AE",stroke:"#666",anchor:"start",rx:0,ry:0})),"getNoteRect"),u=(0,i.K2)((()=>({x:0,y:0,width:100,height:100,"text-anchor":"start",style:"#666",textMargin:0,rx:0,ry:0,tspan:!0})),"getTextObj")}}]); \ No newline at end of file diff --git a/assets/js/4a0d3eb3.ad3adf66.js b/assets/js/4a0d3eb3.ad3adf66.js new file mode 100644 index 00000000..3b29b5aa --- /dev/null +++ b/assets/js/4a0d3eb3.ad3adf66.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[235],{20650:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>d,default:()=>h,frontMatter:()=>o,metadata:()=>i,toc:()=>a});const i=JSON.parse('{"id":"API-Reference/view/ViewCommandHandlers","title":"ViewCommandHandlers","description":"Import :","source":"@site/api/API-Reference/view/ViewCommandHandlers.md","sourceDirName":"API-Reference/view","slug":"/API-Reference/view/ViewCommandHandlers","permalink":"/api/API-Reference/view/ViewCommandHandlers","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"VideoPlayer","permalink":"/api/API-Reference/view/VideoPlayer"},"next":{"title":"ViewStateManager","permalink":"/api/API-Reference/view/ViewStateManager"}}');var s=t(74848),r=t(28453);const o={},d=void 0,l={},a=[{value:"Import :",id:"import-",level:3},{value:"Commands",id:"commands",level:2},{value:"validFontSizeRegExpStr",id:"validfontsizeregexpstr",level:2},{value:"setFontSize(fontSize)",id:"setfontsizefontsize",level:2},{value:"getFontSize() \u21d2 string",id:"getfontsize--string",level:2},{value:"setFontFamily(fontFamily)",id:"setfontfamilyfontfamily",level:2},{value:"getFontFamily() \u21d2 string",id:"getfontfamily--string",level:2},{value:"restoreFontSize()",id:"restorefontsize",level:2},{value:"restoreFonts()",id:"restorefonts",level:2}];function c(e){const n={br:"br",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,r.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h3,{id:"import-",children:"Import :"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-js",children:'const ViewCommandHandlers = brackets.getModule("view/ViewCommandHandlers")\n'})}),"\n",(0,s.jsx)("a",{name:"Commands"}),"\n",(0,s.jsx)(n.h2,{id:"commands",children:"Commands"}),"\n",(0,s.jsx)(n.p,{children:"The ViewCommandHandlers object dispatches the following event(s):"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"fontSizeChange -- Triggered when the font size is changed via the\nIncrease Font Size, Decrease Font Size, or Restore Font Size commands.\nThe 2nd arg to the listener is the amount of the change. The 3rd arg\nis a string containing the new font size after applying the change."}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,s.jsx)("a",{name:"validFontSizeRegExpStr"}),"\n",(0,s.jsx)(n.h2,{id:"validfontsizeregexpstr",children:"validFontSizeRegExpStr"}),"\n",(0,s.jsx)(n.p,{children:"Font sizes should be validated by this regexp"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,s.jsx)("a",{name:"setFontSize"}),"\n",(0,s.jsx)(n.h2,{id:"setfontsizefontsize",children:"setFontSize(fontSize)"}),"\n",(0,s.jsx)(n.p,{children:"Font size setter to set the font size for the document editor"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"fontSize"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(n.td,{children:"The font size with size unit as 'px' or 'em'"})]})})]}),"\n",(0,s.jsx)("a",{name:"getFontSize"}),"\n",(0,s.jsxs)(n.h2,{id:"getfontsize--string",children:["getFontSize() \u21d2 ",(0,s.jsx)("code",{children:"string"})]}),"\n",(0,s.jsx)(n.p,{children:"Font size getter to get the current font size for the document editor"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"string"})," - Font size with size unit as 'px' or 'em'"]}),"\n",(0,s.jsx)("a",{name:"setFontFamily"}),"\n",(0,s.jsx)(n.h2,{id:"setfontfamilyfontfamily",children:"setFontFamily(fontFamily)"}),"\n",(0,s.jsx)(n.p,{children:"Font family setter to set the font family for the document editor"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"fontFamily"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(n.td,{children:"The font family to be set. It can be a string with multiple comma separated fonts"})]})})]}),"\n",(0,s.jsx)("a",{name:"getFontFamily"}),"\n",(0,s.jsxs)(n.h2,{id:"getfontfamily--string",children:["getFontFamily() \u21d2 ",(0,s.jsx)("code",{children:"string"})]}),"\n",(0,s.jsx)(n.p,{children:"Font family getter to get the currently configured font family for the document editor"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"string"})," - The font family for the document editor"]}),"\n",(0,s.jsx)("a",{name:"restoreFontSize"}),"\n",(0,s.jsx)(n.h2,{id:"restorefontsize",children:"restoreFontSize()"}),"\n",(0,s.jsx)(n.p,{children:"Restores the font size using the saved style and migrates the old fontSizeAdjustment\nview state to the new fontSize, when required"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsx)("a",{name:"restoreFonts"}),"\n",(0,s.jsx)(n.h2,{id:"restorefonts",children:"restoreFonts()"}),"\n",(0,s.jsx)(n.p,{children:"Restores the font size and font family back to factory settings."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function"]})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(c,{...e})}):c(e)}},28453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>d});var i=t(96540);const s={},r=i.createContext(s);function o(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/4aac6076.6e3b3603.js b/assets/js/4aac6076.6e3b3603.js new file mode 100644 index 00000000..777b3002 --- /dev/null +++ b/assets/js/4aac6076.6e3b3603.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3207],{69195:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>d,contentTitle:()=>a,default:()=>l,frontMatter:()=>r,metadata:()=>t,toc:()=>h});const t=JSON.parse('{"id":"getting-started","title":"Getting Started","description":"This guide provides an overview on the documentation structure and how to get started with the Phoenix Code API documentation!","source":"@site/api/01-getting-started.md","sourceDirName":".","slug":"/getting-started","permalink":"/api/getting-started","draft":false,"unlisted":false,"tags":[],"version":"current","sidebarPosition":1,"frontMatter":{"title":"Getting Started"},"sidebar":"tutorialSidebar","next":{"title":"Creating Themes","permalink":"/api/creating-themes"}}');var s=i(74848),o=i(28453);const r={title:"Getting Started"},a=void 0,d={},h=[{value:"Documentation Structure",id:"documentation-structure",level:2},{value:"Creating Themes",id:"creating-themes",level:3},{value:"Creating Extensions",id:"creating-extensions",level:3},{value:"Use Node.js from extension",id:"use-nodejs-from-extension",level:3},{value:"Debugging Extensions",id:"debugging-extensions",level:3},{value:"Publishing Themes & Extensions",id:"publishing-themes--extensions",level:3},{value:"Available Standard Libraries",id:"available-standard-libraries",level:3},{value:"API Reference",id:"api-reference",level:2}];function c(e){const n={a:"a",blockquote:"blockquote",h2:"h2",h3:"h3",p:"p",strong:"strong",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.p,{children:"This guide provides an overview on the documentation structure and how to get started with the Phoenix Code API documentation!"}),"\n",(0,s.jsx)(n.h2,{id:"documentation-structure",children:"Documentation Structure"}),"\n",(0,s.jsx)(n.p,{children:"The Phoenix Code API documentation is organized into sections for easy navigation. Here\u2019s a quick overview of the key sections:"}),"\n",(0,s.jsx)(n.h3,{id:"creating-themes",children:(0,s.jsx)(n.a,{href:"./creating-themes",children:"Creating Themes"})}),"\n",(0,s.jsxs)(n.p,{children:["This page provides guidelines on how to create custom Themes for ",(0,s.jsx)(n.strong,{children:"Phoenix Code"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"creating-extensions",children:(0,s.jsx)(n.a,{href:"./creating-extensions",children:"Creating Extensions"})}),"\n",(0,s.jsxs)(n.p,{children:["This page provides guidelines on how to write Extensions for ",(0,s.jsx)(n.strong,{children:"Phoenix Code"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"use-nodejs-from-extension",children:(0,s.jsx)(n.a,{href:"./creating-node-extensions",children:"Use Node.js from extension"})}),"\n",(0,s.jsxs)(n.p,{children:["This page explains how to use Node.js inside ",(0,s.jsx)(n.strong,{children:"Phoenix Code"})," extensions."]}),"\n",(0,s.jsx)(n.h3,{id:"debugging-extensions",children:(0,s.jsx)(n.a,{href:"./debugging-extensions",children:"Debugging Extensions"})}),"\n",(0,s.jsxs)(n.p,{children:["This page provides a detailed guide on efficiently debugging your ",(0,s.jsx)(n.strong,{children:"Phoenix Code"})," extensions."]}),"\n",(0,s.jsx)(n.h3,{id:"publishing-themes--extensions",children:(0,s.jsx)(n.a,{href:"./publishing-extensions",children:"Publishing Themes & Extensions"})}),"\n",(0,s.jsxs)(n.p,{children:["This page provides guidelines on how to publish Themes/Extensions to ",(0,s.jsx)(n.strong,{children:"Phoenix Code"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"available-standard-libraries",children:(0,s.jsx)(n.a,{href:"./available-standard-libs",children:"Available Standard Libraries"})}),"\n",(0,s.jsxs)(n.p,{children:["This page lists all the standard libraries that are available for use inside ",(0,s.jsx)(n.strong,{children:"Phoenix Code"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"api-reference",children:"API Reference"}),"\n",(0,s.jsx)(n.p,{children:"The API-Reference directory contains detailed reference documentation for each part of the Phoenix Code API. Each page here corresponds to different components, functions, or modules of the API, providing explanations, usage examples, and detailed parameter descriptions."}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsxs)(n.p,{children:["This documentation is automatically generated from the source code. To learn more about how these docs are generated, refer to ",(0,s.jsx)(n.a,{href:"https://github.com/phcode-dev/phoenix/wiki/02-Writing-Docs",children:"this link"}),"."]}),"\n"]})]})}function l(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(c,{...e})}):c(e)}},28453:(e,n,i)=>{i.d(n,{R:()=>r,x:()=>a});var t=i(96540);const s={},o=t.createContext(s);function r(e){const n=t.useContext(o);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),t.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/4b935b7f.d6ebd3dc.js b/assets/js/4b935b7f.d6ebd3dc.js new file mode 100644 index 00000000..d6533c62 --- /dev/null +++ b/assets/js/4b935b7f.d6ebd3dc.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1103],{66477:a=>{a.exports=JSON.parse('{"tag":{"label":"Migration","permalink":"/blog/tags/migration","allTagsPath":"/blog/tags","count":1,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/migration","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]); \ No newline at end of file diff --git a/assets/js/4c568bf4.c624448d.js b/assets/js/4c568bf4.c624448d.js new file mode 100644 index 00000000..99a63c61 --- /dev/null +++ b/assets/js/4c568bf4.c624448d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8025],{66005:(e,i,n)=>{n.r(i),n.d(i,{assets:()=>l,contentTitle:()=>s,default:()=>a,frontMatter:()=>o,metadata:()=>t,toc:()=>c});const t=JSON.parse('{"id":"API-Reference/editor/EditorManager","title":"EditorManager","description":"Import :","source":"@site/api/API-Reference/editor/EditorManager.md","sourceDirName":"API-Reference/editor","slug":"/API-Reference/editor/EditorManager","permalink":"/api/API-Reference/editor/EditorManager","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"CodeHintManager","permalink":"/api/API-Reference/editor/CodeHintManager"},"next":{"title":"BeautificationManager","permalink":"/api/API-Reference/features/BeautificationManager"}}');var r=n(74848),d=n(28453);const o={},s=void 0,l={},c=[{value:"Import :",id:"import-",level:3},{value:"getCurrentFullEditor() \u21d2 Editor",id:"getcurrentfulleditor--editor",level:2},{value:"closeInlineWidget(hostEditor, inlineWidget) \u21d2 $.Promise",id:"closeinlinewidgethosteditor-inlinewidget--promise",level:2},{value:"registerInlineEditProvider(provider, [priority])",id:"registerinlineeditproviderprovider-priority",level:2},{value:"registerInlineDocsProvider(provider, [priority])",id:"registerinlinedocsproviderprovider-priority",level:2},{value:"getInlineEditors(hostEditor) \u21d2 Array.<Editor>",id:"getinlineeditorshosteditor--arrayeditor",level:2},{value:"createInlineEditorForDocument(doc, range, inlineContent, closeThisInline) \u21d2 Object",id:"createinlineeditorfordocumentdoc-range-inlinecontent-closethisinline--object",level:2},{value:"focusEditor()",id:"focuseditor",level:2},{value:"canOpenPath(fullPath) \u21d2 boolean",id:"canopenpathfullpath--boolean",level:2},{value:"openDocument(doc, pane, editorOptions) \u21d2 boolean",id:"opendocumentdoc-pane-editoroptions--boolean",level:2},{value:"getFocusedInlineWidget() \u21d2 InlineWidget",id:"getfocusedinlinewidget--inlinewidget",level:2},{value:"getFocusedInlineEditor() \u21d2 Editor",id:"getfocusedinlineeditor--editor",level:2},{value:"getFocusedEditor() \u21d2 Editor",id:"getfocusededitor--editor",level:2},{value:"getActiveEditor() \u21d2 Editor",id:"getactiveeditor--editor",level:2},{value:"getHoveredEditor(mousePos) \u21d2 Editor",id:"gethoverededitormousepos--editor",level:2}];function h(e){const i={a:"a",br:"br",code:"code",h2:"h2",h3:"h3",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,d.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(i.h3,{id:"import-",children:"Import :"}),"\n",(0,r.jsx)(i.pre,{children:(0,r.jsx)(i.code,{className:"language-js",children:'const EditorManager = brackets.getModule("editor/EditorManager")\n'})}),"\n",(0,r.jsx)("a",{name:"getCurrentFullEditor"}),"\n",(0,r.jsxs)(i.h2,{id:"getcurrentfulleditor--editor",children:["getCurrentFullEditor() \u21d2 ",(0,r.jsx)("code",{children:"Editor"})]}),"\n",(0,r.jsx)(i.p,{children:"Retrieves the visible full-size Editor for the currently opened file in the ACTIVE_PANE"}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Kind"}),": global function",(0,r.jsx)(i.br,{}),"\n",(0,r.jsx)(i.strong,{children:"Returns"}),": ",(0,r.jsx)("code",{children:"Editor"})," - editor of the current view or null"]}),"\n",(0,r.jsx)("a",{name:"closeInlineWidget"}),"\n",(0,r.jsxs)(i.h2,{id:"closeinlinewidgethosteditor-inlinewidget--promise",children:["closeInlineWidget(hostEditor, inlineWidget) \u21d2 ",(0,r.jsx)("code",{children:"$.Promise"})]}),"\n",(0,r.jsx)(i.p,{children:"Removes the given widget UI from the given hostEditor (agnostic of what the widget's content\nis). The widget's onClosed() callback will be run as a result."}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Kind"}),": global function",(0,r.jsx)(i.br,{}),"\n",(0,r.jsx)(i.strong,{children:"Returns"}),": ",(0,r.jsx)("code",{children:"$.Promise"})," - A promise that's resolved when the widget is fully closed."]}),"\n",(0,r.jsxs)(i.table,{children:[(0,r.jsx)(i.thead,{children:(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.th,{children:"Param"}),(0,r.jsx)(i.th,{children:"Type"}),(0,r.jsx)(i.th,{children:"Description"})]})}),(0,r.jsxs)(i.tbody,{children:[(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"hostEditor"}),(0,r.jsx)(i.td,{children:(0,r.jsx)("code",{children:"Editor"})}),(0,r.jsx)(i.td,{children:"The editor containing the widget."})]}),(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"inlineWidget"}),(0,r.jsx)(i.td,{children:(0,r.jsx)("code",{children:"InlineWidget"})}),(0,r.jsx)(i.td,{children:"The inline widget to close."})]})]})]}),"\n",(0,r.jsx)("a",{name:"registerInlineEditProvider"}),"\n",(0,r.jsx)(i.h2,{id:"registerinlineeditproviderprovider-priority",children:"registerInlineEditProvider(provider, [priority])"}),"\n",(0,r.jsx)(i.p,{children:"Registers a new inline editor provider. When Quick Edit is invoked each registered provider is\nasked if it wants to provide an inline editor given the current editor and cursor location.\nAn optional priority parameter is used to give providers with higher priority an opportunity\nto provide an inline editor before providers with lower priority."}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Kind"}),": global function"]}),"\n",(0,r.jsxs)(i.table,{children:[(0,r.jsx)(i.thead,{children:(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.th,{children:"Param"}),(0,r.jsx)(i.th,{children:"Type"}),(0,r.jsx)(i.th,{children:"Description"})]})}),(0,r.jsxs)(i.tbody,{children:[(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"provider"}),(0,r.jsx)(i.td,{children:(0,r.jsx)("code",{children:"function"})}),(0,r.jsx)(i.td,{})]}),(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"[priority]"}),(0,r.jsx)(i.td,{children:(0,r.jsx)("code",{children:"number"})}),(0,r.jsx)(i.td,{children:"The provider returns a promise that will be resolved with an InlineWidget, or returns a string indicating why the provider cannot respond to this case (or returns null to indicate no reason)."})]})]})]}),"\n",(0,r.jsx)("a",{name:"registerInlineDocsProvider"}),"\n",(0,r.jsx)(i.h2,{id:"registerinlinedocsproviderprovider-priority",children:"registerInlineDocsProvider(provider, [priority])"}),"\n",(0,r.jsx)(i.p,{children:"Registers a new inline docs provider. When Quick Docs is invoked each registered provider is\nasked if it wants to provide inline docs given the current editor and cursor location.\nAn optional priority parameter is used to give providers with higher priority an opportunity\nto provide an inline editor before providers with lower priority."}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Kind"}),": global function"]}),"\n",(0,r.jsxs)(i.table,{children:[(0,r.jsx)(i.thead,{children:(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.th,{children:"Param"}),(0,r.jsx)(i.th,{children:"Type"}),(0,r.jsx)(i.th,{children:"Description"})]})}),(0,r.jsxs)(i.tbody,{children:[(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"provider"}),(0,r.jsx)(i.td,{children:(0,r.jsx)("code",{children:"function"})}),(0,r.jsx)(i.td,{})]}),(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"[priority]"}),(0,r.jsx)(i.td,{children:(0,r.jsx)("code",{children:"number"})}),(0,r.jsx)(i.td,{children:"The provider returns a promise that will be resolved with an InlineWidget, or returns a string indicating why the provider cannot respond to this case (or returns null to indicate no reason)."})]})]})]}),"\n",(0,r.jsx)("a",{name:"getInlineEditors"}),"\n",(0,r.jsxs)(i.h2,{id:"getinlineeditorshosteditor--arrayeditor",children:["getInlineEditors(hostEditor) \u21d2 ",(0,r.jsx)("code",{children:"Array."})]}),"\n",(0,r.jsx)(i.p,{children:"Given a host editor, return a list of all Editors in all its open inline widgets. (Ignoring\nany other inline widgets that might be open but don't contain Editors)."}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Kind"}),": global function"]}),"\n",(0,r.jsxs)(i.table,{children:[(0,r.jsx)(i.thead,{children:(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.th,{children:"Param"}),(0,r.jsx)(i.th,{children:"Type"})]})}),(0,r.jsx)(i.tbody,{children:(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"hostEditor"}),(0,r.jsx)(i.td,{children:(0,r.jsx)("code",{children:"Editor"})})]})})]}),"\n",(0,r.jsx)("a",{name:"createInlineEditorForDocument"}),"\n",(0,r.jsxs)(i.h2,{id:"createinlineeditorfordocumentdoc-range-inlinecontent-closethisinline--object",children:["createInlineEditorForDocument(doc, range, inlineContent, closeThisInline) \u21d2 ",(0,r.jsx)("code",{children:"Object"})]}),"\n",(0,r.jsx)(i.p,{children:"Creates a new inline Editor instance for the given Document.\nThe editor is not yet visible or attached to a host editor."}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Kind"}),": global function"]}),"\n",(0,r.jsxs)(i.table,{children:[(0,r.jsx)(i.thead,{children:(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.th,{children:"Param"}),(0,r.jsx)(i.th,{children:"Type"}),(0,r.jsx)(i.th,{children:"Description"})]})}),(0,r.jsxs)(i.tbody,{children:[(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"doc"}),(0,r.jsx)(i.td,{children:(0,r.jsx)("code",{children:"Document"})}),(0,r.jsx)(i.td,{children:"Document for the Editor's content"})]}),(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"range"}),(0,r.jsx)(i.td,{children:(0,r.jsx)("code",{children:"Object"})}),(0,r.jsx)(i.td,{children:"If specified, all lines outside the given range are hidden from the editor. Range is inclusive. Line numbers start at 0."})]}),(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"inlineContent"}),(0,r.jsx)(i.td,{children:(0,r.jsx)("code",{children:"HTMLDivContainer"})}),(0,r.jsx)(i.td,{})]}),(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"closeThisInline"}),(0,r.jsx)(i.td,{children:(0,r.jsx)("code",{children:"function"})}),(0,r.jsx)(i.td,{})]})]})]}),"\n",(0,r.jsx)("a",{name:"focusEditor"}),"\n",(0,r.jsx)(i.h2,{id:"focuseditor",children:"focusEditor()"}),"\n",(0,r.jsx)(i.p,{children:"Returns focus to the last visible editor that had focus. If no editor visible, does nothing.\nThis function should be called to restore editor focus after it has been temporarily\nremoved. For example, after a dialog with editable text is closed."}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Kind"}),": global function"]}),"\n",(0,r.jsx)("a",{name:"canOpenPath"}),"\n",(0,r.jsxs)(i.h2,{id:"canopenpathfullpath--boolean",children:["canOpenPath(fullPath) \u21d2 ",(0,r.jsx)("code",{children:"boolean"})]}),"\n",(0,r.jsx)(i.p,{children:"Determines if the file can be opened in an editor"}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Kind"}),": global function",(0,r.jsx)(i.br,{}),"\n",(0,r.jsx)(i.strong,{children:"Returns"}),": ",(0,r.jsx)("code",{children:"boolean"})," - true if the file can be opened in an editor, false if not"]}),"\n",(0,r.jsxs)(i.table,{children:[(0,r.jsx)(i.thead,{children:(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.th,{children:"Param"}),(0,r.jsx)(i.th,{children:"Type"}),(0,r.jsx)(i.th,{children:"Description"})]})}),(0,r.jsx)(i.tbody,{children:(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"fullPath"}),(0,r.jsx)(i.td,{children:(0,r.jsx)("code",{children:"string"})}),(0,r.jsx)(i.td,{children:"file to be opened"})]})})]}),"\n",(0,r.jsx)("a",{name:"openDocument"}),"\n",(0,r.jsxs)(i.h2,{id:"opendocumentdoc-pane-editoroptions--boolean",children:["openDocument(doc, pane, editorOptions) \u21d2 ",(0,r.jsx)("code",{children:"boolean"})]}),"\n",(0,r.jsx)(i.p,{children:"Opens the specified document in the given pane"}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Kind"}),": global function",(0,r.jsx)(i.br,{}),"\n",(0,r.jsx)(i.strong,{children:"Returns"}),": ",(0,r.jsx)("code",{children:"boolean"})," - true if the file can be opened, false if not"]}),"\n",(0,r.jsxs)(i.table,{children:[(0,r.jsx)(i.thead,{children:(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.th,{children:"Param"}),(0,r.jsx)(i.th,{children:"Type"}),(0,r.jsx)(i.th,{children:"Description"})]})}),(0,r.jsxs)(i.tbody,{children:[(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"doc"}),(0,r.jsx)(i.td,{children:(0,r.jsx)("code",{children:"Document"})}),(0,r.jsx)(i.td,{children:"the document to open"})]}),(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"pane"}),(0,r.jsx)(i.td,{children:(0,r.jsx)("code",{children:"Pane"})}),(0,r.jsx)(i.td,{children:"the pane to open the document in"})]}),(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"editorOptions"}),(0,r.jsx)(i.td,{children:(0,r.jsx)("code",{children:"Object"})}),(0,r.jsx)(i.td,{children:"If specified, contains editor options that can be passed to CodeMirror"})]})]})]}),"\n",(0,r.jsx)("a",{name:"getFocusedInlineWidget"}),"\n",(0,r.jsxs)(i.h2,{id:"getfocusedinlinewidget--inlinewidget",children:["getFocusedInlineWidget() \u21d2 ",(0,r.jsx)("code",{children:"InlineWidget"})]}),"\n",(0,r.jsx)(i.p,{children:"Returns the currently focused inline widget, if any."}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Kind"}),": global function"]}),"\n",(0,r.jsx)("a",{name:"getFocusedInlineEditor"}),"\n",(0,r.jsxs)(i.h2,{id:"getfocusedinlineeditor--editor",children:["getFocusedInlineEditor() \u21d2 ",(0,r.jsx)("code",{children:"Editor"})]}),"\n",(0,r.jsx)(i.p,{children:"Returns the focused Editor within an inline text editor, or null if something else has focus"}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Kind"}),": global function"]}),"\n",(0,r.jsx)("a",{name:"getFocusedEditor"}),"\n",(0,r.jsxs)(i.h2,{id:"getfocusededitor--editor",children:["getFocusedEditor() \u21d2 ",(0,r.jsx)("code",{children:"Editor"})]}),"\n",(0,r.jsx)(i.p,{children:"Returns the currently focused editor instance (full-sized OR inline editor).\nThis function is similar to getActiveEditor(), with one main difference: this\nfunction will only return editors that currently have focus, whereas\ngetActiveEditor() will return the last visible editor that was given focus (but\nmay not currently have focus because, for example, a dialog with editable text\nis open)."}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Kind"}),": global function"]}),"\n",(0,r.jsx)("a",{name:"getActiveEditor"}),"\n",(0,r.jsxs)(i.h2,{id:"getactiveeditor--editor",children:["getActiveEditor() \u21d2 ",(0,r.jsx)("code",{children:"Editor"})]}),"\n",(0,r.jsx)(i.p,{children:"Returns the current active editor (full-sized OR inline editor). This editor may not\nhave focus at the moment, but it is visible and was the last editor that was given\nfocus. Returns null if no editors are active."}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Kind"}),": global function",(0,r.jsx)(i.br,{}),"\n",(0,r.jsx)(i.strong,{children:"See"}),": #getFocusedEditor"]}),"\n",(0,r.jsx)("a",{name:"getHoveredEditor"}),"\n",(0,r.jsxs)(i.h2,{id:"gethoverededitormousepos--editor",children:["getHoveredEditor(mousePos) \u21d2 ",(0,r.jsx)("code",{children:"Editor"})]}),"\n",(0,r.jsxs)(i.p,{children:["Returns the editor/inline editor under given mouse cursor coordinates specified. The coordinates can be usually\nfetched from the ",(0,r.jsx)(i.code,{children:"document.onmousemove"})," dom event handler or any dom events.\n",(0,r.jsx)(i.a,{href:"https://stackoverflow.com/questions/7790725/javascript-track-mouse-position",children:"https://stackoverflow.com/questions/7790725/javascript-track-mouse-position"})]}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Kind"}),": global function"]}),"\n",(0,r.jsxs)(i.table,{children:[(0,r.jsx)(i.thead,{children:(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.th,{children:"Param"}),(0,r.jsx)(i.th,{children:"Type"}),(0,r.jsx)(i.th,{children:"Description"})]})}),(0,r.jsx)(i.tbody,{children:(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"mousePos"}),(0,r.jsx)(i.td,{children:(0,r.jsx)("code",{children:"Object"})}),(0,r.jsx)(i.td,{children:"The mouse position(or the js event with mouse position)."})]})})]})]})}function a(e={}){const{wrapper:i}={...(0,d.R)(),...e.components};return i?(0,r.jsx)(i,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},28453:(e,i,n)=>{n.d(i,{R:()=>o,x:()=>s});var t=n(96540);const r={},d=t.createContext(r);function o(e){const i=t.useContext(d);return t.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function s(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),t.createElement(d.Provider,{value:i},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/4e83a1d2.ab0039f7.js b/assets/js/4e83a1d2.ab0039f7.js new file mode 100644 index 00000000..ed8fbfce --- /dev/null +++ b/assets/js/4e83a1d2.ab0039f7.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8989],{12851:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>d,contentTitle:()=>l,default:()=>a,frontMatter:()=>c,metadata:()=>n,toc:()=>h});const n=JSON.parse('{"id":"API-Reference/search/QuickOpenHelper","title":"QuickOpenHelper","description":"Import :","source":"@site/api/API-Reference/search/QuickOpenHelper.md","sourceDirName":"API-Reference/search","slug":"/API-Reference/search/QuickOpenHelper","permalink":"/api/API-Reference/search/QuickOpenHelper","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"QuickOpen","permalink":"/api/API-Reference/search/QuickOpen"},"next":{"title":"QuickSearchField","permalink":"/api/API-Reference/search/QuickSearchField"}}');var s=r(74848),i=r(28453);const c={},l=void 0,d={},h=[{value:"Import :",id:"import-",level:3},{value:"match(query, returns)",id:"matchquery-returns",level:2},{value:"itemFocus(selectedItem, query, explicit)",id:"itemfocusselecteditem-query-explicit",level:2},{value:"itemSelect(selectedItem, query)",id:"itemselectselecteditem-query",level:2}];function o(e){const t={code:"code",h2:"h2",h3:"h3",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.h3,{id:"import-",children:"Import :"}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-js",children:'const QuickOpenHelper = brackets.getModule("search/QuickOpenHelper")\n'})}),"\n",(0,s.jsx)("a",{name:"match"}),"\n",(0,s.jsx)(t.h2,{id:"matchquery-returns",children:"match(query, returns)"}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsxs)(t.table,{children:[(0,s.jsx)(t.thead,{children:(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.th,{children:"Param"}),(0,s.jsx)(t.th,{children:"Type"}),(0,s.jsx)(t.th,{children:"Description"})]})}),(0,s.jsxs)(t.tbody,{children:[(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"query"}),(0,s.jsx)(t.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(t.td,{children:"what the user is searching for"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"returns"}),(0,s.jsx)(t.td,{children:(0,s.jsx)("code",{children:"boolean"})}),(0,s.jsx)(t.td,{children:"true if this plug-in wants to provide results for this query"})]})]})]}),"\n",(0,s.jsx)("a",{name:"itemFocus"}),"\n",(0,s.jsx)(t.h2,{id:"itemfocusselecteditem-query-explicit",children:"itemFocus(selectedItem, query, explicit)"}),"\n",(0,s.jsx)(t.p,{children:"Scroll to the selected item in the current document (unless no query string entered yet,\nin which case the topmost list item is irrelevant)"}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsxs)(t.table,{children:[(0,s.jsx)(t.thead,{children:(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.th,{children:"Param"}),(0,s.jsx)(t.th,{children:"Type"}),(0,s.jsx)(t.th,{children:"Description"})]})}),(0,s.jsxs)(t.tbody,{children:[(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"selectedItem"}),(0,s.jsx)(t.td,{children:(0,s.jsx)("code",{children:"SearchResult"})}),(0,s.jsx)(t.td,{})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"query"}),(0,s.jsx)(t.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(t.td,{})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"explicit"}),(0,s.jsx)(t.td,{children:(0,s.jsx)("code",{children:"boolean"})}),(0,s.jsx)(t.td,{children:"False if this is only highlighted due to being at top of list after search()"})]})]})]}),"\n",(0,s.jsx)("a",{name:"itemSelect"}),"\n",(0,s.jsx)(t.h2,{id:"itemselectselecteditem-query",children:"itemSelect(selectedItem, query)"}),"\n",(0,s.jsx)(t.p,{children:"Scroll to the selected item in the current document (unless no query string entered yet,\nin which case the topmost list item is irrelevant)"}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsxs)(t.table,{children:[(0,s.jsx)(t.thead,{children:(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.th,{children:"Param"}),(0,s.jsx)(t.th,{children:"Type"})]})}),(0,s.jsxs)(t.tbody,{children:[(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"selectedItem"}),(0,s.jsx)(t.td,{children:(0,s.jsx)("code",{children:"SearchResult"})})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"query"}),(0,s.jsx)(t.td,{children:(0,s.jsx)("code",{children:"string"})})]})]})]})]})}function a(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(o,{...e})}):o(e)}},28453:(e,t,r)=>{r.d(t,{R:()=>c,x:()=>l});var n=r(96540);const s={},i=n.createContext(s);function c(e){const t=n.useContext(i);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:c(e.components),n.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/4fa28b3e.d8eb4abe.js b/assets/js/4fa28b3e.d8eb4abe.js new file mode 100644 index 00000000..efd990f8 --- /dev/null +++ b/assets/js/4fa28b3e.d8eb4abe.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[90],{56847:(e,i,t)=>{t.r(i),t.d(i,{assets:()=>h,contentTitle:()=>a,default:()=>g,frontMatter:()=>d,metadata:()=>s,toc:()=>l});const s=JSON.parse('{"id":"Live Preview/design-mode","title":"Design Mode","description":"Design Mode is a layout that hides the code editor and gives that entire space to your Live Preview. It is built for visual-first work: chatting with the AI while you watch changes land in the preview, editing your page directly in Live Preview Edit Mode, or testing how your design looks at different device sizes.","source":"@site/docs/02-Live Preview/01-design-mode.md","sourceDirName":"02-Live Preview","slug":"/design-mode","permalink":"/docs/design-mode","draft":false,"unlisted":false,"editUrl":"https://github.com/phcode-dev/docs/blob/main/docs/02-Live Preview/01-design-mode.md","tags":[],"version":"current","sidebarPosition":1,"frontMatter":{"title":"Design Mode","slug":"/design-mode"},"sidebar":"tutorialSidebar","previous":{"title":"Live Preview","permalink":"/docs/Features/Live Preview"},"next":{"title":"Live Preview Edit","permalink":"/docs/Pro Features/live-preview-edit"}}');var n=t(74848),o=t(28453),r=(t(96540),t(56399));const d={title:"Design Mode",slug:"/design-mode"},a=void 0,h={},l=[{value:"Why use Design Mode",id:"why-use-design-mode",level:2},{value:"Switching to Design Mode",id:"switching-to-design-mode",level:2},{value:"The Design Mode layout",id:"the-design-mode-layout",level:2}];function c(e){const i={a:"a",em:"em",h2:"h2",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,o.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(i.p,{children:[(0,n.jsx)(i.strong,{children:"Design Mode"})," is a layout that hides the code editor and gives that entire space to your ",(0,n.jsx)(i.strong,{children:"Live Preview"}),". It is built for visual-first work: chatting with the AI while you watch changes land in the preview, editing your page directly in Live Preview Edit Mode, or testing how your design looks at different device sizes."]}),"\n",(0,n.jsx)(r.A,{src:"https://docs-images.phcode.dev/videos/design-mode/design-mode.mp4"}),"\n",(0,n.jsx)(i.h2,{id:"why-use-design-mode",children:"Why use Design Mode"}),"\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.strong,{children:"Pair with the AI Chat panel."})," Ask the AI to make a change and see it applied instantly in the preview as the code updates without the need to open the editor. ",(0,n.jsx)(i.a,{href:"./Pro%20Features/ai-chat",children:"Read More about AI Chat"}),"."]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.strong,{children:"Edit visually with Live Preview Edit Mode."})," Click elements, drag them, change text, swap images, and much more, directly in the preview. ",(0,n.jsx)(i.a,{href:"./Pro%20Features/live-preview-edit",children:"Read More about Live Preview Edit Mode"}),"."]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.strong,{children:"Test responsive designs."})," With Device Preview, check how your page looks on phone, tablet, and desktop sizes with just a click. ",(0,n.jsx)(i.a,{href:"./Pro%20Features/device-preview",children:"Read More about Device Preview"}),"."]}),"\n"]}),"\n",(0,n.jsx)(i.h2,{id:"switching-to-design-mode",children:"Switching to Design Mode"}),"\n",(0,n.jsx)(i.p,{children:"There are three ways to switch to Design Mode:"}),"\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsxs)(i.li,{children:["Click the ",(0,n.jsx)(i.strong,{children:"Design Mode"})," button ",(0,n.jsx)(i.em,{children:"(pen nib icon)"})," near the top of the ",(0,n.jsx)(i.strong,{children:"Control Bar"}),", the narrow vertical strip between the sidebar and the editor."]}),"\n",(0,n.jsxs)(i.li,{children:["Click the ",(0,n.jsx)(i.strong,{children:"fullscreen"})," button ",(0,n.jsx)(i.em,{children:"(expand icon)"})," in the Live Preview toolbar, right after the reload button."]}),"\n",(0,n.jsxs)(i.li,{children:["Choose ",(0,n.jsx)(i.strong,{children:"File > Toggle Design Mode"})," from the menu bar."]}),"\n"]}),"\n",(0,n.jsx)(i.p,{children:(0,n.jsx)(i.img,{alt:"Design Mode entry points",src:t(71002).A+"",title:"Design Mode entry points",width:"1920",height:"1080"})}),"\n",(0,n.jsx)(i.p,{children:"All three toggle the same mode. Use any of them again to switch back to the code editor."}),"\n",(0,n.jsx)(i.h2,{id:"the-design-mode-layout",children:"The Design Mode layout"}),"\n",(0,n.jsxs)(i.p,{children:["When Design Mode is on, the sidebar stays visible alongside the maximized Live Preview. The recommended setup is to keep ",(0,n.jsx)(i.strong,{children:"AI Chat"})," open in the sidebar so you can ask for changes and watch them appear in the preview as the AI works. If the Live Preview is not already open, Phoenix Code opens it for you."]}),"\n",(0,n.jsx)(i.p,{children:(0,n.jsx)(i.img,{alt:"Design Mode layout",src:t(62852).A+"",title:"Design Mode layout",width:"1920",height:"1080"})}),"\n",(0,n.jsxs)(i.p,{children:["To hide the sidebar too, click the ",(0,n.jsx)(i.strong,{children:"toggle sidebar"})," button ",(0,n.jsx)(i.em,{children:"(double left-arrow icon)"})," just below the Design Mode toggle in the Control Bar. Click it again to bring the sidebar back."]})]})}function g(e={}){const{wrapper:i}={...(0,o.R)(),...e.components};return i?(0,n.jsx)(i,{...e,children:(0,n.jsx)(c,{...e})}):c(e)}},56399:(e,i,t)=>{t.d(i,{A:()=>o});var s=t(96540),n=t(74848);const o=({src:e,winLinuxTitle:i,macTitle:t})=>{const[o,r]=(0,s.useState)("");(0,s.useEffect)((()=>{navigator.platform.toLowerCase().includes("mac")?r(t):r(i)}),[i,t]);return(0,n.jsxs)("div",{style:{maxHeight:"68vh",width:"100%",display:"flex",justifyContent:"center",alignItems:"center",flexDirection:"column"},children:[(0,n.jsxs)("video",{style:{height:"90%",width:"100%"},controls:!0,autoPlay:!0,muted:!0,loop:!0,children:[(0,n.jsx)("source",{src:e,type:"video/mp4"}),"Your browser does not support the video tag."]}),(0,n.jsx)("div",{style:{width:"100%",textAlign:"center",fontSize:"1em",marginTop:"10px"},children:o})]})}},62852:(e,i,t)=>{t.d(i,{A:()=>s});const s=t.p+"assets/images/design-mode-layout-42488219328638520697b7c6a63b9b2c.png"},71002:(e,i,t)=>{t.d(i,{A:()=>s});const s=t.p+"assets/images/design-mode-toggle-6cb723b6f8e48a9c1785ecd96f8b2923.png"},28453:(e,i,t)=>{t.d(i,{R:()=>r,x:()=>d});var s=t(96540);const n={},o=s.createContext(n);function r(e){const i=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function d(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:r(e.components),s.createElement(o.Provider,{value:i},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/5074.f57d98a8.js b/assets/js/5074.f57d98a8.js new file mode 100644 index 00000000..aa51da32 --- /dev/null +++ b/assets/js/5074.f57d98a8.js @@ -0,0 +1,2 @@ +/*! For license information please see 5074.f57d98a8.js.LICENSE.txt */ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5074],{92693:(e,t,n)=>{n.r(t),n.d(t,{DocSearchModal:()=>yh});var r=n(96540);function u(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:u}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,i=!0,o=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return i=e.done,e},e:function(e){o=!0,a=e},f:function(){try{i||null==n.return||n.return()}finally{if(o)throw a}}}}function p(e,t,n){return(t=w(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function h(){return h=Object.assign?Object.assign.bind():function(e){for(var t=1;t3?(u=h===r)&&(s=a[(o=a[4])?5:(o=3,3)],a[4]=a[5]=e):a[0]<=p&&((u=n<2&&pr||r>h)&&(a[4]=n,a[5]=r,f.n=h,o=0))}if(u||n>1)return i;throw d=!0,r}return function(u,l,h){if(c>1)throw TypeError("Generator is already running");for(d&&1===l&&p(l,h),o=l,s=h;(t=o<2?e:s)||!d;){a||(o?o<3?(o>1&&(f.n=-1),p(o,s)):f.n=s:f.v=s);try{if(c=2,a){if(o||(u="next"),t=a[u]){if(!(t=t.call(a,s)))throw TypeError("iterator result is not an object");if(!t.done)return t;s=t.value,o<2&&(o=0)}else 1===o&&(t=a.return)&&t.call(a),o<2&&(s=TypeError("The iterator does not provide a '"+u+"' method"),o=1);a=e}else if((t=(d=f.n<0)?s:n.call(r,f))!==i)break}catch(t){a=e,o=1,s=t}finally{c=1}}return{value:t,done:d}}}(n,u,a),!0),c}var i={};function o(){}function s(){}function c(){}t=Object.getPrototypeOf;var l=[][r]?t(t([][r]())):(b(t={},r,(function(){return this})),t),d=c.prototype=o.prototype=Object.create(l);function f(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,c):(e.__proto__=c,b(e,u,"GeneratorFunction")),e.prototype=Object.create(d),e}return s.prototype=c,b(d,"constructor",c),b(c,"constructor",s),s.displayName="GeneratorFunction",b(c,u,"GeneratorFunction"),b(d),b(d,u,"Generator"),b(d,r,(function(){return this})),b(d,"toString",(function(){return"[object Generator]"})),(E=function(){return{w:a,m:f}})()}function b(e,t,n,r){var u=Object.defineProperty;try{u({},"",{})}catch(e){u=0}b=function(e,t,n,r){function a(t,n){b(e,t,(function(e){return this._invoke(t,n,e)}))}t?u?u(e,t,{value:n,enumerable:!r,configurable:!r,writable:!r}):e[t]=n:(a("next",0),a("throw",1),a("return",2))},b(e,t,n,r)}function C(e,t){return C=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},C(e,t)}function A(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,u,a,i,o=[],s=!0,c=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=a.call(n)).done)&&(o.push(r.value),o.length!==t);s=!0);}catch(e){c=!0,u=e}finally{try{if(!s&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(c)throw u}}return o}}(e,t)||S(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function k(e){return function(e){if(Array.isArray(e))return u(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||S(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function w(e){var t=function(e,t){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t);if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"==typeof t?t:t+""}function _(e){return _="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},_(e)}function S(e,t){if(e){if("string"==typeof e)return u(e,t);var n={}.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?u(e,t):void 0}}function x(e){var t="function"==typeof Map?new Map:void 0;return x=function(e){if(null===e||!function(e){try{return-1!==Function.toString.call(e).indexOf("[native code]")}catch(t){return"function"==typeof e}}(e))return e;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,n)}function n(){return c(e,arguments,v(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),C(n,e)},x(e)}function B(){B=function(e,t){return new n(e,void 0,t)};var e=RegExp.prototype,t=new WeakMap;function n(e,r,u){var a=RegExp(e,r);return t.set(a,u||t.get(e)),C(a,n.prototype)}function r(e,n){var r=t.get(n);return Object.keys(r).reduce((function(t,n){var u=r[n];if("number"==typeof u)t[n]=e[u];else{for(var a=0;void 0===e[u[a]]&&a+1]+)(>|$)/g,(function(e,t,n){if(""===n)return e;var r=a[t];return Array.isArray(r)?"$"+r.join("$"):"number"==typeof r?"$"+r:""})))}if("function"==typeof u){var i=this;return e[Symbol.replace].call(this,n,(function(){var e=arguments;return"object"!=typeof e[e.length-1]&&(e=[].slice.call(e)).push(r(e,i)),u.apply(this,e)}))}return e[Symbol.replace].call(this,n,u)},B.apply(this,arguments)}function I(e,t){var n=void 0;return function(){for(var r=arguments.length,u=new Array(r),a=0;ae.length)&&(t=e.length);for(var n=0,r=new Array(t);ne.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0||(u[n]=e[n]);return u}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(u[n]=e[n])}return u}function K(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function W(e){for(var t=1;t=3||2===n&&r>=4||1===n&&r>=10);function a(t,n,r){if(u&&void 0!==r){var a=r[0].__autocomplete_algoliaCredentials,i={"X-Algolia-Application-Id":a.appId,"X-Algolia-API-Key":a.apiKey};e.apply(void 0,[t].concat(U(n),[{headers:i}]))}else e.apply(void 0,[t].concat(U(n)))}return{init:function(t,n){e("init",{appId:t,apiKey:n})},setAuthenticatedUserToken:function(t){e("setAuthenticatedUserToken",t)},setUserToken:function(t){e("setUserToken",t)},clickedObjectIDsAfterSearch:function(){for(var e=arguments.length,t=new Array(e),n=0;n0&&a("clickedObjectIDsAfterSearch",Q(t),t[0].items)},clickedObjectIDs:function(){for(var e=arguments.length,t=new Array(e),n=0;n0&&a("clickedObjectIDs",Q(t),t[0].items)},clickedFilters:function(){for(var t=arguments.length,n=new Array(t),r=0;r0&&e.apply(void 0,["clickedFilters"].concat(n))},convertedObjectIDsAfterSearch:function(){for(var e=arguments.length,t=new Array(e),n=0;n0&&a("convertedObjectIDsAfterSearch",Q(t),t[0].items)},convertedObjectIDs:function(){for(var e=arguments.length,t=new Array(e),n=0;n0&&a("convertedObjectIDs",Q(t),t[0].items)},convertedFilters:function(){for(var t=arguments.length,n=new Array(t),r=0;r0&&e.apply(void 0,["convertedFilters"].concat(n))},viewedObjectIDs:function(){for(var e=arguments.length,t=new Array(e),n=0;n0&&t.reduce((function(e,t){var n=t.items,r=H(t,$);return[].concat(U(e),U(function(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:20,n=[],r=0;r0&&e.apply(void 0,["viewedFilters"].concat(n))}}}function Y(e){var t=e.items.reduce((function(e,t){var n;return e[t.__autocomplete_indexName]=(null!==(n=e[t.__autocomplete_indexName])&&void 0!==n?n:[]).concat(t),e}),{});return Object.keys(t).map((function(e){return{index:e,items:t[e],algoliaSource:["autocomplete"]}}))}function X(e){return e.objectID&&e.__autocomplete_indexName&&e.__autocomplete_queryID}function ee(e){return ee="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ee(e)}function te(e){return function(e){if(Array.isArray(e))return ne(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return ne(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?ne(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function ne(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n0&&se({onItemsChange:u,items:n,insights:c,state:t}))}}),0);return{name:"aa.algoliaInsightsPlugin",subscribe:function(e){var t=e.setContext,n=e.onSelect,r=e.onActive;function u(e){t({algoliaInsightsPlugin:{__algoliaSearchParameters:ue(ue({},o?{clickAnalytics:!0}:{}),e?{userToken:de(e)}:{}),insights:c}})}s("addAlgoliaAgent","insights-plugin"),u(),s("onUserTokenChange",(function(e){u(e)})),s("getUserToken",null,(function(e,t){u(t)})),n((function(e){var t=e.item,n=e.state,r=e.event,u=e.source;X(t)&&a({state:n,event:r,insights:c,item:t,insightsEvents:[ue({eventName:"Item Selected"},M({item:t,items:u.getItems().filter(X)}))]})})),r((function(e){var t=e.item,n=e.source,r=e.state,u=e.event;X(t)&&i({state:r,event:u,insights:c,item:t,insightsEvents:[ue({eventName:"Item Active"},M({item:t,items:n.getItems().filter(X)}))]})}))},onStateChange:function(e){var t=e.state;d({state:t})},__autocomplete_pluginOptions:e}}function le(){var e,t=arguments.length>1?arguments[1]:void 0;return[].concat(te(arguments.length>0&&void 0!==arguments[0]?arguments[0]:[]),["autocomplete-internal"],te(null!==(e=t.algoliaInsightsPlugin)&&void 0!==e&&e.__automaticInsights?["autocomplete-automatic"]:[]))}function de(e){return"number"==typeof e?e.toString():e}function fe(e,t){var n=t;return{then:function(t,r){return fe(e.then(he(t,n,e),he(r,n,e)),n)},catch:function(t){return fe(e.catch(he(t,n,e)),n)},finally:function(t){return t&&n.onCancelList.push(t),fe(e.finally(he(t&&function(){return n.onCancelList=[],t()},n,e)),n)},cancel:function(){n.isCanceled=!0;var e=n.onCancelList;n.onCancelList=[],e.forEach((function(e){e()}))},isCanceled:function(){return!0===n.isCanceled}}}function pe(e){return fe(e,{isCanceled:!1,onCancelList:[]})}function he(e,t,n){return e?function(n){return t.isCanceled?n:e(n)}:n}var ve,me=!0;function De(e,t,n,r){if(!n)return null;if(e<0&&(null===t||null!==r&&0===t))return n+e;var u=(null===t?-1:t)+e;return u<=-1||u>=n?null===r?null:0:u}function ye(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function ge(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);n=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:u}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,i=!0,o=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return i=e.done,e},e:function(e){o=!0,a=e},f:function(){try{i||null==n.return||n.return()}finally{if(o)throw a}}}}(e);try{for(a.s();!(n=a.n()).done;){var i,o,s,c=null===(i=n.value.__autocomplete_pluginOptions)||void 0===i||null===(o=(s=i).awaitSubmit)||void 0===o?void 0:o.call(s);if("number"==typeof c)u.push(c);else if(!0===c){r=!0;break}}}catch(e){a.e(e)}finally{a.f()}return r?t.wait():u.length>0?t.wait(Math.max.apply(Math,u)):void 0};function Ae(e){var t=function(e){var t=e.collections.map((function(e){return e.items.length})).reduce((function(e,t,n){var r=(e[n-1]||0)+t;return e.push(r),e}),[]).reduce((function(t,n){return n<=e.activeItemId?t+1:t}),0);return e.collections[t]}(e);if(!t)return null;var n=t.items[function(e){for(var t=e.state,n=e.collection,r=!1,u=0,a=0;!1===r;){var i=t.collections[u];if(i===n){r=!0;break}a+=i.items.length,u++}return t.activeItemId-a}({state:e,collection:t})],r=t.source;return{item:n,itemInputValue:r.getItemInputValue({item:n,state:e}),itemUrl:r.getItemUrl({item:n,state:e}),source:r}}function ke(e,t,n){return[e,null==n?void 0:n.sourceId,t].filter(Boolean).join("-").replace(/\s/g,"")}var we=/((gt|sm)-|galaxy nexus)|samsung[- ]|samsungbrowser/i;function _e(e){return e.nativeEvent||e}function Se(e){return Se="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Se(e)}function xe(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Be(e,t,n){return(t=function(e){var t=function(e,t){if("object"!==Se(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t);if("object"!==Se(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"===Se(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function Ie(e){return Ie="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ie(e)}function Oe(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Te(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);n0},reshape:function(e){return e.sources}},e),{},{id:null!==(n=e.id)&&void 0!==n?n:"autocomplete-".concat(T++),plugins:u,initialState:Re({activeItemId:null,query:"",completion:null,collections:[],isOpen:!1,status:"idle",context:{}},e.initialState),onStateChange:function(t){var n;null===(n=e.onStateChange)||void 0===n||n.call(e,t),u.forEach((function(e){var n;return null===(n=e.onStateChange)||void 0===n?void 0:n.call(e,t)}))},onSubmit:function(t){var n;null===(n=e.onSubmit)||void 0===n||n.call(e,t),u.forEach((function(e){var n;return null===(n=e.onSubmit)||void 0===n?void 0:n.call(e,t)}))},onReset:function(t){var n;null===(n=e.onReset)||void 0===n||n.call(e,t),u.forEach((function(e){var n;return null===(n=e.onReset)||void 0===n?void 0:n.call(e,t)}))},getSources:function(n){return Promise.all([].concat(function(e){return function(e){if(Array.isArray(e))return Ne(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return Ne(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Ne(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(u.map((function(e){return e.getSources}))),[e.getSources]).filter(Boolean).map((function(e){return function(e,t){var n=[];return Promise.resolve(e(t)).then((function(e){return Promise.all(e.filter((function(e){return Boolean(e)})).map((function(e){if(e.sourceId,n.includes(e.sourceId))throw new Error("[Autocomplete] The `sourceId` ".concat(JSON.stringify(e.sourceId)," is not unique."));n.push(e.sourceId);var t={getItemInputValue:function(e){return e.state.query},getItemUrl:function(){},onSelect:function(e){(0,e.setIsOpen)(!1)},onActive:z,onResolve:z};Object.keys(t).forEach((function(e){t[e].__default=!0}));var r=ge(ge({},t),e);return Promise.resolve(r)})))}))}(e,n)}))).then((function(e){return O(e)})).then((function(e){return e.map((function(e){return Re(Re({},e),{},{onSelect:function(n){e.onSelect(n),t.forEach((function(e){var t;return null===(t=e.onSelect)||void 0===t?void 0:t.call(e,n)}))},onActive:function(n){e.onActive(n),t.forEach((function(e){var t;return null===(t=e.onActive)||void 0===t?void 0:t.call(e,n)}))},onResolve:function(n){e.onResolve(n),t.forEach((function(e){var t;return null===(t=e.onResolve)||void 0===t?void 0:t.call(e,n)}))}})}))}))},navigator:Re({navigate:function(e){var t=e.itemUrl;r.location.assign(t)},navigateNewTab:function(e){var t=e.itemUrl,n=r.open(t,"_blank","noopener");null==n||n.focus()},navigateNewWindow:function(e){var t=e.itemUrl;r.open(t,"_blank","noopener")}},e.navigator)})}function Le(e){return Le="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Le(e)}function $e(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function qe(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0||(u[n]=e[n]);return u}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(u[n]=e[n])}return u}(e,et);ot&&u.environment.clearTimeout(ot);var c=s.setCollections,l=s.setIsOpen,d=s.setQuery,f=s.setActiveItemId,p=s.setStatus,h=s.setContext;if(d(a),f(u.defaultActiveItemId),!a&&!1===u.openOnFocus){var v,m=o.getState().collections.map((function(e){return nt(nt({},e),{},{items:[]})}));p("idle"),c(m),l(null!==(v=r.isOpen)&&void 0!==v?v:u.shouldPanelOpen({state:o.getState()}));var D=pe(st(m).then((function(){return Promise.resolve()})));return o.pendingRequests.add(D)}p("loading"),ot=u.environment.setTimeout((function(){p("stalled")}),u.stallThreshold);var y=pe(st(u.getSources(nt({query:a,refresh:i,state:o.getState()},s)).then((function(e){return Promise.all(e.map((function(e){return Promise.resolve(e.getItems(nt({query:a,refresh:i,state:o.getState()},s))).then((function(t){return function(e,t,n){if(u=e,Boolean(null==u?void 0:u.execute)){var r="algolia"===e.requesterId?Object.assign.apply(Object,[{}].concat(Je(Object.keys(n.context).map((function(e){var t;return null===(t=n.context[e])||void 0===t?void 0:t.__algoliaSearchParameters}))))):{};return Ke(Ke({},e),{},{requests:e.queries.map((function(n){return{query:"algolia"===e.requesterId?Ke(Ke({},n),{},{params:Ke(Ke({},r),n.params)}):n,sourceId:t,transformResponse:e.transformResponse}}))})}var u;return{items:e,sourceId:t}}(t,e.sourceId,o.getState())}))}))).then(Ye).then((function(t){var n,r=t.some((function(e){return function(e){return!Array.isArray(e)&&Boolean(null==e?void 0:e._automaticInsights)}(e.items)}));return r&&h({algoliaInsightsPlugin:nt(nt({},(null===(n=o.getState().context)||void 0===n?void 0:n.algoliaInsightsPlugin)||{}),{},{__automaticInsights:r})}),function(e,t,n){return t.map((function(t){var r,u=e.filter((function(e){return e.sourceId===t.sourceId})),a=u.map((function(e){return e.items})),i=u[0].transformResponse,o=i?i({results:r=a,hits:r.map((function(e){return e.hits})).filter(Boolean),facetHits:r.map((function(e){var t;return null===(t=e.facetHits)||void 0===t?void 0:t.map((function(e){return{label:e.value,count:e.count,_highlightResult:{label:{value:e.highlighted}}}}))})).filter(Boolean)}):a;return t.onResolve({source:t,results:a,items:o,state:n.getState()}),o.every(Boolean),'The `getItems` function from source "'.concat(t.sourceId,'" must return an array of items but returned ').concat(JSON.stringify(void 0),".\n\nDid you forget to return items?\n\nSee: https://www.algolia.com/doc/ui-libraries/autocomplete/core-concepts/sources/#param-getitems"),{source:t,items:o}}))}(t,e,o)})).then((function(e){return function(e){var t=e.props,n=e.state,r=e.collections.reduce((function(e,t){return qe(qe({},e),{},Ue({},t.source.sourceId,qe(qe({},t.source),{},{getItems:function(){return O(t.items)}})))}),{}),u=t.plugins.reduce((function(e,t){return t.reshape?t.reshape(e):e}),{sourcesBySourceId:r,state:n}).sourcesBySourceId;return O(t.reshape({sourcesBySourceId:u,sources:Object.values(u),state:n})).filter(Boolean).map((function(e){return{source:e,items:e.getItems()}}))}({collections:e,props:u,state:o.getState()})}))})))).then((function(e){var n;p("idle"),c(e);var d=u.shouldPanelOpen({state:o.getState()});l(null!==(n=r.isOpen)&&void 0!==n?n:u.openOnFocus&&!a&&d||d);var f=Ae(o.getState());if(null!==o.getState().activeItemId&&f){var h=f.item,v=f.itemInputValue,m=f.itemUrl,D=f.source;D.onActive(nt({event:t,item:h,itemInputValue:v,itemUrl:m,refresh:i,source:D,state:o.getState()},s))}})).finally((function(){p("idle"),ot&&u.environment.clearTimeout(ot)}));return o.pendingRequests.add(y)}function lt(e){return lt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},lt(e)}var dt=["event","props","refresh","store"];function ft(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function pt(e){for(var t=1;t=0||(u[n]=e[n]);return u}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(u[n]=e[n])}return u}function wt(e){var t=e.props,n=e.refresh,r=e.store,u=kt(e,mt);return{getEnvironmentProps:function(e){var n=e.inputElement,u=e.formElement,a=e.panelElement;function i(e){!r.getState().isOpen&&r.pendingRequests.isEmpty()||e.target===n||!1===[u,a].some((function(t){return(n=t)===(r=e.target)||n.contains(r);var n,r}))&&(r.dispatch("blur",null),t.debug||r.pendingRequests.cancelAll())}return Ct({onTouchStart:i,onMouseDown:i,onTouchMove:function(e){!1!==r.getState().isOpen&&n===t.environment.document.activeElement&&e.target!==n&&n.blur()}},kt(e,Dt))},getRootProps:function(e){return Ct({role:"combobox","aria-expanded":r.getState().isOpen,"aria-haspopup":"listbox","aria-controls":r.getState().isOpen?r.getState().collections.map((function(e){var n=e.source;return ke(t.id,"list",n)})).join(" "):void 0,"aria-labelledby":ke(t.id,"label")},e)},getFormProps:function(e){e.inputElement;var a=kt(e,yt),i=function(a){var i;t.onSubmit(Ct({event:a,refresh:n,state:r.getState()},u)),r.dispatch("submit",null),null===(i=e.inputElement)||void 0===i||i.blur()};return Ct({action:"",noValidate:!0,role:"search",onSubmit:function(e){e.preventDefault();var n=Ce(t.plugins,r.pendingRequests);void 0!==n?n.then((function(){return i(e)})):i(e)},onReset:function(a){var i;a.preventDefault(),t.onReset(Ct({event:a,refresh:n,state:r.getState()},u)),r.dispatch("reset",null),null===(i=e.inputElement)||void 0===i||i.focus()}},a)},getLabelProps:function(e){return Ct({htmlFor:ke(t.id,"input"),id:ke(t.id,"label")},e)},getInputProps:function(e){var a;function i(e){(t.openOnFocus||Boolean(r.getState().query))&&ct(Ct({event:e,props:t,query:r.getState().completion||r.getState().query,refresh:n,store:r},u)),r.dispatch("focus",null)}var o=e||{};o.inputElement;var s=o.maxLength,c=void 0===s?512:s,l=kt(o,gt),d=Ae(r.getState()),f=function(e){return Boolean(e&&e.match(we))}((null===(a=t.environment.navigator)||void 0===a?void 0:a.userAgent)||""),p=t.enterKeyHint||(null!=d&&d.itemUrl&&!f?"go":"search");return Ct({"aria-autocomplete":"both","aria-activedescendant":r.getState().isOpen&&null!==r.getState().activeItemId?ke(t.id,"item-".concat(r.getState().activeItemId),null==d?void 0:d.source):void 0,"aria-controls":r.getState().isOpen?r.getState().collections.filter((function(e){return e.items.length>0})).map((function(e){var n=e.source;return ke(t.id,"list",n)})).join(" "):void 0,"aria-labelledby":ke(t.id,"label"),value:r.getState().completion||r.getState().query,id:ke(t.id,"input"),autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",enterKeyHint:p,spellCheck:"false",autoFocus:t.autoFocus,placeholder:t.placeholder,maxLength:c,type:"search",onChange:function(e){var a=e.currentTarget.value;t.ignoreCompositionEvents&&_e(e).isComposing?u.setQuery(a):ct(Ct({event:e,props:t,query:a.slice(0,c),refresh:n,store:r},u))},onCompositionEnd:function(e){ct(Ct({event:e,props:t,query:e.currentTarget.value.slice(0,c),refresh:n,store:r},u))},onKeyDown:function(e){_e(e).isComposing||function(e){var t=e.event,n=e.props,r=e.refresh,u=e.store,a=function(e,t){if(null==e)return{};var n,r,u=function(e,t){if(null==e)return{};var n,r,u={},a=Object.keys(e);for(r=0;r=0||(u[n]=e[n]);return u}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(u[n]=e[n])}return u}(e,dt);if("ArrowUp"===t.key||"ArrowDown"===t.key){var i=function(){var e=Ae(u.getState()),t=n.environment.document.getElementById(ke(n.id,"item-".concat(u.getState().activeItemId),null==e?void 0:e.source));t&&(t.scrollIntoViewIfNeeded?t.scrollIntoViewIfNeeded(!1):t.scrollIntoView(!1))},o=function(){var e=Ae(u.getState());if(null!==u.getState().activeItemId&&e){var n=e.item,i=e.itemInputValue,o=e.itemUrl,s=e.source;s.onActive(pt({event:t,item:n,itemInputValue:i,itemUrl:o,refresh:r,source:s,state:u.getState()},a))}};t.preventDefault(),!1===u.getState().isOpen&&(n.openOnFocus||Boolean(u.getState().query))?ct(pt({event:t,props:n,query:u.getState().query,refresh:r,store:u},a)).then((function(){u.dispatch(t.key,{nextActiveItemId:n.defaultActiveItemId}),o(),setTimeout(i,0)})):(u.dispatch(t.key,{}),o(),i())}else if("Escape"===t.key)t.preventDefault(),u.dispatch(t.key,null),u.pendingRequests.cancelAll();else if("Tab"===t.key)u.dispatch("blur",null),u.pendingRequests.cancelAll();else if("Enter"===t.key){if(null===u.getState().activeItemId||u.getState().collections.every((function(e){return 0===e.items.length}))){var s=Ce(n.plugins,u.pendingRequests);return void(void 0!==s?s.then(u.pendingRequests.cancelAll):n.debug||u.pendingRequests.cancelAll())}t.preventDefault();var c=Ae(u.getState()),l=c.item,d=c.itemInputValue,f=c.itemUrl,p=c.source;if(t.metaKey||t.ctrlKey)void 0!==f&&(p.onSelect(pt({event:t,item:l,itemInputValue:d,itemUrl:f,refresh:r,source:p,state:u.getState()},a)),n.navigator.navigateNewTab({itemUrl:f,item:l,state:u.getState()}));else if(t.shiftKey)void 0!==f&&(p.onSelect(pt({event:t,item:l,itemInputValue:d,itemUrl:f,refresh:r,source:p,state:u.getState()},a)),n.navigator.navigateNewWindow({itemUrl:f,item:l,state:u.getState()}));else if(t.altKey);else{if(void 0!==f)return p.onSelect(pt({event:t,item:l,itemInputValue:d,itemUrl:f,refresh:r,source:p,state:u.getState()},a)),void n.navigator.navigate({itemUrl:f,item:l,state:u.getState()});ct(pt({event:t,nextState:{isOpen:!1},props:n,query:d,refresh:r,store:u},a)).then((function(){p.onSelect(pt({event:t,item:l,itemInputValue:d,itemUrl:f,refresh:r,source:p,state:u.getState()},a))}))}}}(Ct({event:e,props:t,refresh:n,store:r},u))},onFocus:i,onBlur:z,onClick:function(n){e.inputElement!==t.environment.document.activeElement||r.getState().isOpen||i(n)}},l)},getPanelProps:function(e){return Ct({onMouseDown:function(e){e.preventDefault()},onMouseLeave:function(){r.dispatch("mouseleave",null)}},e)},getListProps:function(e){var n=e||{},r=n.source,u=kt(n,Ft);return Ct({role:"listbox","aria-labelledby":ke(t.id,"label"),id:ke(t.id,"list",r)},u)},getItemProps:function(e){var a=e.item,i=e.source,o=kt(e,Et);return Ct({id:ke(t.id,"item-".concat(a.__autocomplete_id),i),role:"option","aria-selected":r.getState().activeItemId===a.__autocomplete_id,onMouseMove:function(e){if(a.__autocomplete_id!==r.getState().activeItemId){r.dispatch("mousemove",a.__autocomplete_id);var t=Ae(r.getState());if(null!==r.getState().activeItemId&&t){var i=t.item,o=t.itemInputValue,s=t.itemUrl,c=t.source;c.onActive(Ct({event:e,item:i,itemInputValue:o,itemUrl:s,refresh:n,source:c,state:r.getState()},u))}}},onMouseDown:function(e){e.preventDefault()},onClick:function(e){var o=i.getItemInputValue({item:a,state:r.getState()}),s=i.getItemUrl({item:a,state:r.getState()});(s?Promise.resolve():ct(Ct({event:e,nextState:{isOpen:!1},props:t,query:o,refresh:n,store:r},u))).then((function(){i.onSelect(Ct({event:e,item:a,itemInputValue:o,itemUrl:s,refresh:n,source:i,state:r.getState()},u))}))}},o)}}}function _t(e){return _t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},_t(e)}function St(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function xt(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:"",n="string"==typeof e?e:e.source,r={replace:function(e,t){var u="string"==typeof t?t:t.source;return u=u.replace(bn.caret,"$1"),n=n.replace(e,u),r},getRegex:function(){return new RegExp(n,t)}};return r}var En=function(){try{return!!new RegExp("(?<=1)(?/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceTabs:/^\t+/,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] /,listReplaceTask:/^\[[ xX]\] +/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/(?:[0-9A-Za-z\xAA\xB2\xB3\xB5\xB9\xBA\xBC-\xBE\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u0660-\u0669\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07C0-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088F\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0966-\u096F\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09E6-\u09F1\u09F4-\u09F9\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A66-\u0A6F\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AE6-\u0AEF\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B66-\u0B6F\u0B71-\u0B77\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0BE6-\u0BF2\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5C\u0C5D\u0C60\u0C61\u0C66-\u0C6F\u0C78-\u0C7E\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDC-\u0CDE\u0CE0\u0CE1\u0CE6-\u0CEF\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D58-\u0D61\u0D66-\u0D78\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DE6-\u0DEF\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F20-\u0F33\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F-\u1049\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u1090-\u1099\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1369-\u137C\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A16\u1A20-\u1A54\u1A80-\u1A89\u1A90-\u1A99\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B50-\u1B59\u1B83-\u1BA0\u1BAE-\u1BE5\u1C00-\u1C23\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C8A\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2070\u2071\u2074-\u2079\u207F-\u2089\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2150-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2CFD\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u3192-\u3195\u31A0-\u31BF\u31F0-\u31FF\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7DC\uA7F1-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA830-\uA835\uA840-\uA873\uA882-\uA8B3\uA8D0-\uA8D9\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA900-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF-\uA9D9\uA9E0-\uA9E4\uA9E6-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA50-\uAA59\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD07-\uDD33\uDD40-\uDD78\uDD8A\uDD8B\uDE80-\uDE9C\uDEA0-\uDED0\uDEE1-\uDEFB\uDF00-\uDF23\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDDC0-\uDDF3\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC58-\uDC76\uDC79-\uDC9E\uDCA7-\uDCAF\uDCE0-\uDCF2\uDCF4\uDCF5\uDCFB-\uDD1B\uDD20-\uDD39\uDD40-\uDD59\uDD80-\uDDB7\uDDBC-\uDDCF\uDDD2-\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE40-\uDE48\uDE60-\uDE7E\uDE80-\uDE9F\uDEC0-\uDEC7\uDEC9-\uDEE4\uDEEB-\uDEEF\uDF00-\uDF35\uDF40-\uDF55\uDF58-\uDF72\uDF78-\uDF91\uDFA9-\uDFAF]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDCFA-\uDD23\uDD30-\uDD39\uDD40-\uDD65\uDD6F-\uDD85\uDE60-\uDE7E\uDE80-\uDEA9\uDEB0\uDEB1\uDEC2-\uDEC7\uDF00-\uDF27\uDF30-\uDF45\uDF51-\uDF54\uDF70-\uDF81\uDFB0-\uDFCB\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC52-\uDC6F\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD03-\uDD26\uDD36-\uDD3F\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDD0-\uDDDA\uDDDC\uDDE1-\uDDF4\uDE00-\uDE11\uDE13-\uDE2B\uDE3F\uDE40\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDEF0-\uDEF9\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61\uDF80-\uDF89\uDF8B\uDF8E\uDF90-\uDFB5\uDFB7\uDFD1\uDFD3]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC50-\uDC59\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE50-\uDE59\uDE80-\uDEAA\uDEB8\uDEC0-\uDEC9\uDED0-\uDEE3\uDF00-\uDF1A\uDF30-\uDF3B\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCF2\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDD50-\uDD59\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8\uDFC0-\uDFE0\uDFF0-\uDFF9]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC50-\uDC6C\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD50-\uDD59\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDDA0-\uDDA9\uDDB0-\uDDDB\uDDE0-\uDDE9\uDEE0-\uDEF2\uDF02\uDF04-\uDF10\uDF12-\uDF33\uDF50-\uDF59\uDFB0\uDFC0-\uDFD4]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD80E\uD80F\uD81C-\uD822\uD840-\uD868\uD86A-\uD86D\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD88C][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2F\uDC41-\uDC46\uDC60-\uDFFF]|\uD810[\uDC00-\uDFFA]|\uD811[\uDC00-\uDE46]|\uD818[\uDD00-\uDD1D\uDD30-\uDD39]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDE70-\uDEBE\uDEC0-\uDEC9\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF50-\uDF59\uDF5B-\uDF61\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDD40-\uDD6C\uDD70-\uDD79\uDE40-\uDE96\uDEA0-\uDEB8\uDEBB-\uDED3\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3\uDFF2-\uDFF6]|\uD823[\uDC00-\uDCD5\uDCFF-\uDD1E\uDD80-\uDDF2]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD32\uDD50-\uDD52\uDD55\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD833[\uDCF0-\uDCF9]|\uD834[\uDEC0-\uDED3\uDEE0-\uDEF3\uDF60-\uDF78]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD837[\uDF00-\uDF1E\uDF25-\uDF2A]|\uD838[\uDC30-\uDC6D\uDD00-\uDD2C\uDD37-\uDD3D\uDD40-\uDD49\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB\uDEF0-\uDEF9]|\uD839[\uDCD0-\uDCEB\uDCF0-\uDCF9\uDDD0-\uDDED\uDDF0-\uDDFA\uDEC0-\uDEDE\uDEE0-\uDEE2\uDEE4\uDEE5\uDEE7-\uDEED\uDEF0-\uDEF4\uDEFE\uDEFF\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDCC7-\uDCCF\uDD00-\uDD43\uDD4B\uDD50-\uDD59]|\uD83B[\uDC71-\uDCAB\uDCAD-\uDCAF\uDCB1-\uDCB4\uDD01-\uDD2D\uDD2F-\uDD3D\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD83C[\uDD00-\uDD0C]|\uD83E[\uDFF0-\uDFF9]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEAD\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0\uDFF0-\uDFFF]|\uD87B[\uDC00-\uDE5D]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD88D[\uDC00-\uDC79])/,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,unescapeTest:/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:function(e){return new RegExp("^( {0,3}".concat(e,")((?:[\t ][^\\n]*)?(?:\\n|$))"))},nextBulletRegex:function(e){return new RegExp("^ {0,".concat(Math.min(3,e-1),"}(?:[*+-]|\\d{1,9}[.)])((?:[ \t][^\\n]*)?(?:\\n|$))"))},hrRegex:function(e){return new RegExp("^ {0,".concat(Math.min(3,e-1),"}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)"))},fencesBeginRegex:function(e){return new RegExp("^ {0,".concat(Math.min(3,e-1),"}(?:```|~~~)"))},headingBeginRegex:function(e){return new RegExp("^ {0,".concat(Math.min(3,e-1),"}#"))},htmlBeginRegex:function(e){return new RegExp("^ {0,".concat(Math.min(3,e-1),"}<(?:[a-z].*>|!--)"),"i")}},Cn=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,An=/(?:[*+-]|\d{1,9}[.)])/,kn=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,wn=Fn(kn).replace(/bull/g,An).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),_n=Fn(kn).replace(/bull/g,An).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),Sn=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,xn=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,Bn=Fn(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",xn).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),In=Fn(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,An).getRegex(),On="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",Tn=/|$))/,Pn=Fn("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|)[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$)|(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ \t]*)+\\n|$))","i").replace("comment",Tn).replace("tag",On).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),jn=Fn(Sn).replace("hr",Cn).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",On).getRegex(),Nn={blockquote:Fn(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",jn).getRegex(),code:/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,def:Bn,fences:/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,heading:/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,hr:Cn,html:Pn,lheading:wn,list:In,newline:/^(?:[ \t]*(?:\n|$))+/,paragraph:jn,table:gn,text:/^[^\n]+/},zn=Fn("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",Cn).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3}\t)[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",On).getRegex(),Rn=g(g({},Nn),{},{lheading:_n,table:zn,paragraph:Fn(Sn).replace("hr",Cn).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",zn).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html",")|<(?:script|pre|style|textarea|!--)").replace("tag",On).getRegex()}),Mn=g(g({},Nn),{},{html:Fn("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+? *(?:\\n{2,}|\\s*$)|\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",Tn).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:gn,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:Fn(Sn).replace("hr",Cn).replace("heading"," *#{1,6} *[^\n]").replace("lheading",wn).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()}),Zn=/^( {2,}|\\)\n(?!\s*$)/,Ln=/(?:[!-\/:-@\[-`\{-~\xA1-\xA9\xAB\xAC\xAE-\xB1\xB4\xB6-\xB8\xBB\xBF\xD7\xF7\u02C2-\u02C5\u02D2-\u02DF\u02E5-\u02EB\u02ED\u02EF-\u02FF\u0375\u037E\u0384\u0385\u0387\u03F6\u0482\u055A-\u055F\u0589\u058A\u058D-\u058F\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0606-\u060F\u061B\u061D-\u061F\u066A-\u066D\u06D4\u06DE\u06E9\u06FD\u06FE\u0700-\u070D\u07F6-\u07F9\u07FE\u07FF\u0830-\u083E\u085E\u0888\u0964\u0965\u0970\u09F2\u09F3\u09FA\u09FB\u09FD\u0A76\u0AF0\u0AF1\u0B70\u0BF3-\u0BFA\u0C77\u0C7F\u0C84\u0D4F\u0D79\u0DF4\u0E3F\u0E4F\u0E5A\u0E5B\u0F01-\u0F17\u0F1A-\u0F1F\u0F34\u0F36\u0F38\u0F3A-\u0F3D\u0F85\u0FBE-\u0FC5\u0FC7-\u0FCC\u0FCE-\u0FDA\u104A-\u104F\u109E\u109F\u10FB\u1360-\u1368\u1390-\u1399\u1400\u166D\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DB\u1800-\u180A\u1940\u1944\u1945\u19DE-\u19FF\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B4E\u1B4F\u1B5A-\u1B6A\u1B74-\u1B7F\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u1FBD\u1FBF-\u1FC1\u1FCD-\u1FCF\u1FDD-\u1FDF\u1FED-\u1FEF\u1FFD\u1FFE\u2010-\u2027\u2030-\u205E\u207A-\u207E\u208A-\u208E\u20A0-\u20C1\u2100\u2101\u2103-\u2106\u2108\u2109\u2114\u2116-\u2118\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u2140-\u2144\u214A-\u214D\u214F\u218A\u218B\u2190-\u2429\u2440-\u244A\u249C-\u24E9\u2500-\u2775\u2794-\u2B73\u2B76-\u2BFF\u2CE5-\u2CEA\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E5D\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFF\u3001-\u3004\u3008-\u3020\u3030\u3036\u3037\u303D-\u303F\u309B\u309C\u30A0\u30FB\u3190\u3191\u3196-\u319F\u31C0-\u31E5\u31EF\u3200-\u321E\u322A-\u3247\u3250\u3260-\u327F\u328A-\u32B0\u32C0-\u33FF\u4DC0-\u4DFF\uA490-\uA4C6\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA700-\uA716\uA720\uA721\uA789\uA78A\uA828-\uA82B\uA836-\uA839\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAA77-\uAA79\uAADE\uAADF\uAAF0\uAAF1\uAB5B\uAB6A\uAB6B\uABEB\uFB29\uFBB2-\uFBD2\uFD3E-\uFD4F\uFD90\uFD91\uFDC8-\uFDCF\uFDFC-\uFDFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFF01-\uFF0F\uFF1A-\uFF20\uFF3B-\uFF40\uFF5B-\uFF65\uFFE0-\uFFE6\uFFE8-\uFFEE\uFFFC\uFFFD]|\uD800[\uDD00-\uDD02\uDD37-\uDD3F\uDD79-\uDD89\uDD8C-\uDD8E\uDD90-\uDD9C\uDDA0\uDDD0-\uDDFC\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDC77\uDC78\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEC8\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD803[\uDD6E\uDD8E\uDD8F\uDEAD\uDED0-\uDED8\uDF55-\uDF59\uDF86-\uDF89]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC8\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9\uDFD4\uDFD5\uDFD7\uDFD8]|\uD805[\uDC4B-\uDC4F\uDC5A\uDC5B\uDC5D\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDE60-\uDE6C\uDEB9\uDF3C-\uDF3F]|\uD806[\uDC3B\uDD44-\uDD46\uDDE2\uDE3F-\uDE46\uDE9A-\uDE9C\uDE9E-\uDEA2\uDF00-\uDF09\uDFE1]|\uD807[\uDC41-\uDC45\uDC70\uDC71\uDEF7\uDEF8\uDF43-\uDF4F\uDFD5-\uDFF1\uDFFF]|\uD809[\uDC70-\uDC74]|\uD80B[\uDFF1\uDFF2]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3F\uDF44\uDF45]|\uD81B[\uDD6D-\uDD6F\uDE97-\uDE9A\uDFE2]|\uD82F[\uDC9C\uDC9F]|\uD833[\uDC00-\uDCEF\uDCFA-\uDCFC\uDD00-\uDEB3\uDEBA-\uDED0\uDEE0-\uDEF0\uDF50-\uDFC3]|\uD834[\uDC00-\uDCF5\uDD00-\uDD26\uDD29-\uDD64\uDD6A-\uDD6C\uDD83\uDD84\uDD8C-\uDDA9\uDDAE-\uDDEA\uDE00-\uDE41\uDE45\uDF00-\uDF56]|\uD835[\uDEC1\uDEDB\uDEFB\uDF15\uDF35\uDF4F\uDF6F\uDF89\uDFA9\uDFC3]|\uD836[\uDC00-\uDDFF\uDE37-\uDE3A\uDE6D-\uDE74\uDE76-\uDE83\uDE85-\uDE8B]|\uD838[\uDD4F\uDEFF]|\uD839\uDDFF|\uD83A[\uDD5E\uDD5F]|\uD83B[\uDCAC\uDCB0\uDD2E\uDEF0\uDEF1]|\uD83C[\uDC00-\uDC2B\uDC30-\uDC93\uDCA0-\uDCAE\uDCB1-\uDCBF\uDCC1-\uDCCF\uDCD1-\uDCF5\uDD0D-\uDDAD\uDDE6-\uDE02\uDE10-\uDE3B\uDE40-\uDE48\uDE50\uDE51\uDE60-\uDE65\uDF00-\uDFFF]|\uD83D[\uDC00-\uDED8\uDEDC-\uDEEC\uDEF0-\uDEFC\uDF00-\uDFD9\uDFE0-\uDFEB\uDFF0]|\uD83E[\uDC00-\uDC0B\uDC10-\uDC47\uDC50-\uDC59\uDC60-\uDC87\uDC90-\uDCAD\uDCB0-\uDCBB\uDCC0\uDCC1\uDCD0-\uDCD8\uDD00-\uDE57\uDE60-\uDE6D\uDE70-\uDE7C\uDE80-\uDE8A\uDE8E-\uDEC6\uDEC8\uDECD-\uDEDC\uDEDF-\uDEEA\uDEEF-\uDEF8\uDF00-\uDF92\uDF94-\uDFEF\uDFFA])/,$n=/(?:[\t-\r -\/:-@\[-`\{-~\xA0-\xA9\xAB\xAC\xAE-\xB1\xB4\xB6-\xB8\xBB\xBF\xD7\xF7\u02C2-\u02C5\u02D2-\u02DF\u02E5-\u02EB\u02ED\u02EF-\u02FF\u0375\u037E\u0384\u0385\u0387\u03F6\u0482\u055A-\u055F\u0589\u058A\u058D-\u058F\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0606-\u060F\u061B\u061D-\u061F\u066A-\u066D\u06D4\u06DE\u06E9\u06FD\u06FE\u0700-\u070D\u07F6-\u07F9\u07FE\u07FF\u0830-\u083E\u085E\u0888\u0964\u0965\u0970\u09F2\u09F3\u09FA\u09FB\u09FD\u0A76\u0AF0\u0AF1\u0B70\u0BF3-\u0BFA\u0C77\u0C7F\u0C84\u0D4F\u0D79\u0DF4\u0E3F\u0E4F\u0E5A\u0E5B\u0F01-\u0F17\u0F1A-\u0F1F\u0F34\u0F36\u0F38\u0F3A-\u0F3D\u0F85\u0FBE-\u0FC5\u0FC7-\u0FCC\u0FCE-\u0FDA\u104A-\u104F\u109E\u109F\u10FB\u1360-\u1368\u1390-\u1399\u1400\u166D\u166E\u1680\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DB\u1800-\u180A\u1940\u1944\u1945\u19DE-\u19FF\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B4E\u1B4F\u1B5A-\u1B6A\u1B74-\u1B7F\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u1FBD\u1FBF-\u1FC1\u1FCD-\u1FCF\u1FDD-\u1FDF\u1FED-\u1FEF\u1FFD\u1FFE\u2000-\u200A\u2010-\u2029\u202F-\u205F\u207A-\u207E\u208A-\u208E\u20A0-\u20C1\u2100\u2101\u2103-\u2106\u2108\u2109\u2114\u2116-\u2118\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u2140-\u2144\u214A-\u214D\u214F\u218A\u218B\u2190-\u2429\u2440-\u244A\u249C-\u24E9\u2500-\u2775\u2794-\u2B73\u2B76-\u2BFF\u2CE5-\u2CEA\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E5D\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u3004\u3008-\u3020\u3030\u3036\u3037\u303D-\u303F\u309B\u309C\u30A0\u30FB\u3190\u3191\u3196-\u319F\u31C0-\u31E5\u31EF\u3200-\u321E\u322A-\u3247\u3250\u3260-\u327F\u328A-\u32B0\u32C0-\u33FF\u4DC0-\u4DFF\uA490-\uA4C6\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA700-\uA716\uA720\uA721\uA789\uA78A\uA828-\uA82B\uA836-\uA839\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAA77-\uAA79\uAADE\uAADF\uAAF0\uAAF1\uAB5B\uAB6A\uAB6B\uABEB\uFB29\uFBB2-\uFBD2\uFD3E-\uFD4F\uFD90\uFD91\uFDC8-\uFDCF\uFDFC-\uFDFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFEFF\uFF01-\uFF0F\uFF1A-\uFF20\uFF3B-\uFF40\uFF5B-\uFF65\uFFE0-\uFFE6\uFFE8-\uFFEE\uFFFC\uFFFD]|\uD800[\uDD00-\uDD02\uDD37-\uDD3F\uDD79-\uDD89\uDD8C-\uDD8E\uDD90-\uDD9C\uDDA0\uDDD0-\uDDFC\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDC77\uDC78\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEC8\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD803[\uDD6E\uDD8E\uDD8F\uDEAD\uDED0-\uDED8\uDF55-\uDF59\uDF86-\uDF89]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC8\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9\uDFD4\uDFD5\uDFD7\uDFD8]|\uD805[\uDC4B-\uDC4F\uDC5A\uDC5B\uDC5D\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDE60-\uDE6C\uDEB9\uDF3C-\uDF3F]|\uD806[\uDC3B\uDD44-\uDD46\uDDE2\uDE3F-\uDE46\uDE9A-\uDE9C\uDE9E-\uDEA2\uDF00-\uDF09\uDFE1]|\uD807[\uDC41-\uDC45\uDC70\uDC71\uDEF7\uDEF8\uDF43-\uDF4F\uDFD5-\uDFF1\uDFFF]|\uD809[\uDC70-\uDC74]|\uD80B[\uDFF1\uDFF2]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3F\uDF44\uDF45]|\uD81B[\uDD6D-\uDD6F\uDE97-\uDE9A\uDFE2]|\uD82F[\uDC9C\uDC9F]|\uD833[\uDC00-\uDCEF\uDCFA-\uDCFC\uDD00-\uDEB3\uDEBA-\uDED0\uDEE0-\uDEF0\uDF50-\uDFC3]|\uD834[\uDC00-\uDCF5\uDD00-\uDD26\uDD29-\uDD64\uDD6A-\uDD6C\uDD83\uDD84\uDD8C-\uDDA9\uDDAE-\uDDEA\uDE00-\uDE41\uDE45\uDF00-\uDF56]|\uD835[\uDEC1\uDEDB\uDEFB\uDF15\uDF35\uDF4F\uDF6F\uDF89\uDFA9\uDFC3]|\uD836[\uDC00-\uDDFF\uDE37-\uDE3A\uDE6D-\uDE74\uDE76-\uDE83\uDE85-\uDE8B]|\uD838[\uDD4F\uDEFF]|\uD839\uDDFF|\uD83A[\uDD5E\uDD5F]|\uD83B[\uDCAC\uDCB0\uDD2E\uDEF0\uDEF1]|\uD83C[\uDC00-\uDC2B\uDC30-\uDC93\uDCA0-\uDCAE\uDCB1-\uDCBF\uDCC1-\uDCCF\uDCD1-\uDCF5\uDD0D-\uDDAD\uDDE6-\uDE02\uDE10-\uDE3B\uDE40-\uDE48\uDE50\uDE51\uDE60-\uDE65\uDF00-\uDFFF]|\uD83D[\uDC00-\uDED8\uDEDC-\uDEEC\uDEF0-\uDEFC\uDF00-\uDFD9\uDFE0-\uDFEB\uDFF0]|\uD83E[\uDC00-\uDC0B\uDC10-\uDC47\uDC50-\uDC59\uDC60-\uDC87\uDC90-\uDCAD\uDCB0-\uDCBB\uDCC0\uDCC1\uDCD0-\uDCD8\uDD00-\uDE57\uDE60-\uDE6D\uDE70-\uDE7C\uDE80-\uDE8A\uDE8E-\uDEC6\uDEC8\uDECD-\uDEDC\uDEDF-\uDEEA\uDEEF-\uDEF8\uDF00-\uDF92\uDF94-\uDFEF\uDFFA])/,qn=/(?:[\0-\x08\x0E-\x1F0-9A-Za-z\x7F-\x9F\xAA\xAD\xB2\xB3\xB5\xB9\xBA\xBC-\xBE\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376-\u037D\u037F-\u0383\u0386\u0388-\u03F5\u03F7-\u0481\u0483-\u0559\u0560-\u0588\u058B\u058C\u0590-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7-\u05F2\u05F5-\u0605\u0610-\u061A\u061C\u0620-\u0669\u066E-\u06D3\u06D5-\u06DD\u06DF-\u06E8\u06EA-\u06FC\u06FF\u070E-\u07F5\u07FA-\u07FD\u0800-\u082F\u083F-\u085D\u085F-\u0887\u0889-\u0963\u0966-\u096F\u0971-\u09F1\u09F4-\u09F9\u09FC\u09FE-\u0A75\u0A77-\u0AEF\u0AF2-\u0B6F\u0B71-\u0BF2\u0BFB-\u0C76\u0C78-\u0C7E\u0C80-\u0C83\u0C85-\u0D4E\u0D50-\u0D78\u0D7A-\u0DF3\u0DF5-\u0E3E\u0E40-\u0E4E\u0E50-\u0E59\u0E5C-\u0F00\u0F18\u0F19\u0F20-\u0F33\u0F35\u0F37\u0F39\u0F3E-\u0F84\u0F86-\u0FBD\u0FC6\u0FCD\u0FDB-\u1049\u1050-\u109D\u10A0-\u10FA\u10FC-\u135F\u1369-\u138F\u139A-\u13FF\u1401-\u166C\u166F-\u167F\u1681-\u169A\u169D-\u16EA\u16EE-\u1734\u1737-\u17D3\u17D7\u17DC-\u17FF\u180B-\u193F\u1941-\u1943\u1946-\u19DD\u1A00-\u1A1D\u1A20-\u1A9F\u1AA7\u1AAE-\u1B4D\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BFB\u1C00-\u1C3A\u1C40-\u1C7D\u1C80-\u1CBF\u1CC8-\u1CD2\u1CD4-\u1FBC\u1FBE\u1FC2-\u1FCC\u1FD0-\u1FDC\u1FE0-\u1FEC\u1FF0-\u1FFC\u1FFF\u200B-\u200F\u202A-\u202E\u2060-\u2079\u207F-\u2089\u208F-\u209F\u20C2-\u20FF\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2150-\u2189\u218C-\u218F\u242A-\u243F\u244B-\u249B\u24EA-\u24FF\u2776-\u2793\u2B74\u2B75\u2C00-\u2CE4\u2CEB-\u2CF8\u2CFD\u2D00-\u2D6F\u2D71-\u2DFF\u2E2F\u2E5E-\u2E7F\u2E9A\u2EF4-\u2EFF\u2FD6-\u2FEF\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3040-\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u318F\u3192-\u3195\u31A0-\u31BF\u31E6-\u31EE\u31F0-\u31FF\u321F-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\u3400-\u4DBF\u4E00-\uA48F\uA4C7-\uA4FD\uA500-\uA60C\uA610-\uA672\uA674-\uA67D\uA67F-\uA6F1\uA6F8-\uA6FF\uA717-\uA71F\uA722-\uA788\uA78B-\uA827\uA82C-\uA835\uA83A-\uA873\uA878-\uA8CD\uA8D0-\uA8F7\uA8FB\uA8FD-\uA92D\uA930-\uA95E\uA960-\uA9C0\uA9CE-\uA9DD\uA9E0-\uAA5B\uAA60-\uAA76\uAA7A-\uAADD\uAAE0-\uAAEF\uAAF2-\uAB5A\uAB5C-\uAB69\uAB6C-\uABEA\uABEC-\uD7FF\uE000-\uFB28\uFB2A-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDD0-\uFDFB\uFE00-\uFE0F\uFE1A-\uFE2F\uFE53\uFE67\uFE6C-\uFEFE\uFF00\uFF10-\uFF19\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFDF\uFFE7\uFFEF-\uFFFB\uFFFE\uFFFF]|\uD800[\uDC00-\uDCFF\uDD03-\uDD36\uDD40-\uDD78\uDD8A\uDD8B\uDD8F\uDD9D-\uDD9F\uDDA1-\uDDCF\uDDFD-\uDF9E\uDFA0-\uDFCF\uDFD1-\uDFFF]|\uD801[\uDC00-\uDD6E\uDD70-\uDFFF]|\uD802[\uDC00-\uDC56\uDC58-\uDC76\uDC79-\uDD1E\uDD20-\uDD3E\uDD40-\uDE4F\uDE59-\uDE7E\uDE80-\uDEC7\uDEC9-\uDEEF\uDEF7-\uDF38\uDF40-\uDF98\uDF9D-\uDFFF]|\uD803[\uDC00-\uDD6D\uDD6F-\uDD8D\uDD90-\uDEAC\uDEAE-\uDECF\uDED9-\uDF54\uDF5A-\uDF85\uDF8A-\uDFFF]|\uD804[\uDC00-\uDC46\uDC4E-\uDCBA\uDCBD\uDCC2-\uDD3F\uDD44-\uDD73\uDD76-\uDDC4\uDDC9-\uDDCC\uDDCE-\uDDDA\uDDDC\uDDE0-\uDE37\uDE3E-\uDEA8\uDEAA-\uDFD3\uDFD6\uDFD9-\uDFFF]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC5C\uDC5E-\uDCC5\uDCC7-\uDDC0\uDDD8-\uDE40\uDE44-\uDE5F\uDE6D-\uDEB8\uDEBA-\uDF3B\uDF40-\uDFFF]|\uD806[\uDC00-\uDC3A\uDC3C-\uDD43\uDD47-\uDDE1\uDDE3-\uDE3E\uDE47-\uDE99\uDE9D\uDEA3-\uDEFF\uDF0A-\uDFE0\uDFE2-\uDFFF]|\uD807[\uDC00-\uDC40\uDC46-\uDC6F\uDC72-\uDEF6\uDEF9-\uDF42\uDF50-\uDFD4\uDFF2-\uDFFE]|[\uD808\uD80A\uD80C-\uD819\uD81C-\uD82E\uD830-\uD832\uD837\uD83F-\uDBFF][\uDC00-\uDFFF]|\uD809[\uDC00-\uDC6F\uDC75-\uDFFF]|\uD80B[\uDC00-\uDFF0\uDFF3-\uDFFF]|\uD81A[\uDC00-\uDE6D\uDE70-\uDEF4\uDEF6-\uDF36\uDF40-\uDF43\uDF46-\uDFFF]|\uD81B[\uDC00-\uDD6C\uDD70-\uDE96\uDE9B-\uDFE1\uDFE3-\uDFFF]|\uD82F[\uDC00-\uDC9B\uDC9D\uDC9E\uDCA0-\uDFFF]|\uD833[\uDCF0-\uDCF9\uDCFD-\uDCFF\uDEB4-\uDEB9\uDED1-\uDEDF\uDEF1-\uDF4F\uDFC4-\uDFFF]|\uD834[\uDCF6-\uDCFF\uDD27\uDD28\uDD65-\uDD69\uDD6D-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDDEB-\uDDFF\uDE42-\uDE44\uDE46-\uDEFF\uDF57-\uDFFF]|\uD835[\uDC00-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE8C-\uDFFF]|\uD838[\uDC00-\uDD4E\uDD50-\uDEFE\uDF00-\uDFFF]|\uD839[\uDC00-\uDDFE\uDE00-\uDFFF]|\uD83A[\uDC00-\uDD5D\uDD60-\uDFFF]|\uD83B[\uDC00-\uDCAB\uDCAD-\uDCAF\uDCB1-\uDD2D\uDD2F-\uDEEF\uDEF2-\uDFFF]|\uD83C[\uDC2C-\uDC2F\uDC94-\uDC9F\uDCAF\uDCB0\uDCC0\uDCD0\uDCF6-\uDD0C\uDDAE-\uDDE5\uDE03-\uDE0F\uDE3C-\uDE3F\uDE49-\uDE4F\uDE52-\uDE5F\uDE66-\uDEFF]|\uD83D[\uDED9-\uDEDB\uDEED-\uDEEF\uDEFD-\uDEFF\uDFDA-\uDFDF\uDFEC-\uDFEF\uDFF1-\uDFFF]|\uD83E[\uDC0C-\uDC0F\uDC48-\uDC4F\uDC5A-\uDC5F\uDC88-\uDC8F\uDCAE\uDCAF\uDCBC-\uDCBF\uDCC2-\uDCCF\uDCD9-\uDCFF\uDE58-\uDE5F\uDE6E\uDE6F\uDE7D-\uDE7F\uDE8B-\uDE8D\uDEC7\uDEC9-\uDECC\uDEDD\uDEDE\uDEEB-\uDEEE\uDEF9-\uDEFF\uDF93\uDFF0-\uDFF9\uDFFB-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])/,Un=Fn(/^((?![*_])punctSpace)/,"u").replace(/punctSpace/g,$n).getRegex(),Vn=/(?!~)(?:[!-\/:-@\[-`\{-~\xA1-\xA9\xAB\xAC\xAE-\xB1\xB4\xB6-\xB8\xBB\xBF\xD7\xF7\u02C2-\u02C5\u02D2-\u02DF\u02E5-\u02EB\u02ED\u02EF-\u02FF\u0375\u037E\u0384\u0385\u0387\u03F6\u0482\u055A-\u055F\u0589\u058A\u058D-\u058F\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0606-\u060F\u061B\u061D-\u061F\u066A-\u066D\u06D4\u06DE\u06E9\u06FD\u06FE\u0700-\u070D\u07F6-\u07F9\u07FE\u07FF\u0830-\u083E\u085E\u0888\u0964\u0965\u0970\u09F2\u09F3\u09FA\u09FB\u09FD\u0A76\u0AF0\u0AF1\u0B70\u0BF3-\u0BFA\u0C77\u0C7F\u0C84\u0D4F\u0D79\u0DF4\u0E3F\u0E4F\u0E5A\u0E5B\u0F01-\u0F17\u0F1A-\u0F1F\u0F34\u0F36\u0F38\u0F3A-\u0F3D\u0F85\u0FBE-\u0FC5\u0FC7-\u0FCC\u0FCE-\u0FDA\u104A-\u104F\u109E\u109F\u10FB\u1360-\u1368\u1390-\u1399\u1400\u166D\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DB\u1800-\u180A\u1940\u1944\u1945\u19DE-\u19FF\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B4E\u1B4F\u1B5A-\u1B6A\u1B74-\u1B7F\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u1FBD\u1FBF-\u1FC1\u1FCD-\u1FCF\u1FDD-\u1FDF\u1FED-\u1FEF\u1FFD\u1FFE\u2010-\u2027\u2030-\u205E\u207A-\u207E\u208A-\u208E\u20A0-\u20C1\u2100\u2101\u2103-\u2106\u2108\u2109\u2114\u2116-\u2118\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u2140-\u2144\u214A-\u214D\u214F\u218A\u218B\u2190-\u2429\u2440-\u244A\u249C-\u24E9\u2500-\u2775\u2794-\u2B73\u2B76-\u2BFF\u2CE5-\u2CEA\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E5D\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFF\u3001-\u3004\u3008-\u3020\u3030\u3036\u3037\u303D-\u303F\u309B\u309C\u30A0\u30FB\u3190\u3191\u3196-\u319F\u31C0-\u31E5\u31EF\u3200-\u321E\u322A-\u3247\u3250\u3260-\u327F\u328A-\u32B0\u32C0-\u33FF\u4DC0-\u4DFF\uA490-\uA4C6\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA700-\uA716\uA720\uA721\uA789\uA78A\uA828-\uA82B\uA836-\uA839\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAA77-\uAA79\uAADE\uAADF\uAAF0\uAAF1\uAB5B\uAB6A\uAB6B\uABEB\uFB29\uFBB2-\uFBD2\uFD3E-\uFD4F\uFD90\uFD91\uFDC8-\uFDCF\uFDFC-\uFDFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFF01-\uFF0F\uFF1A-\uFF20\uFF3B-\uFF40\uFF5B-\uFF65\uFFE0-\uFFE6\uFFE8-\uFFEE\uFFFC\uFFFD]|\uD800[\uDD00-\uDD02\uDD37-\uDD3F\uDD79-\uDD89\uDD8C-\uDD8E\uDD90-\uDD9C\uDDA0\uDDD0-\uDDFC\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDC77\uDC78\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEC8\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD803[\uDD6E\uDD8E\uDD8F\uDEAD\uDED0-\uDED8\uDF55-\uDF59\uDF86-\uDF89]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC8\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9\uDFD4\uDFD5\uDFD7\uDFD8]|\uD805[\uDC4B-\uDC4F\uDC5A\uDC5B\uDC5D\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDE60-\uDE6C\uDEB9\uDF3C-\uDF3F]|\uD806[\uDC3B\uDD44-\uDD46\uDDE2\uDE3F-\uDE46\uDE9A-\uDE9C\uDE9E-\uDEA2\uDF00-\uDF09\uDFE1]|\uD807[\uDC41-\uDC45\uDC70\uDC71\uDEF7\uDEF8\uDF43-\uDF4F\uDFD5-\uDFF1\uDFFF]|\uD809[\uDC70-\uDC74]|\uD80B[\uDFF1\uDFF2]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3F\uDF44\uDF45]|\uD81B[\uDD6D-\uDD6F\uDE97-\uDE9A\uDFE2]|\uD82F[\uDC9C\uDC9F]|\uD833[\uDC00-\uDCEF\uDCFA-\uDCFC\uDD00-\uDEB3\uDEBA-\uDED0\uDEE0-\uDEF0\uDF50-\uDFC3]|\uD834[\uDC00-\uDCF5\uDD00-\uDD26\uDD29-\uDD64\uDD6A-\uDD6C\uDD83\uDD84\uDD8C-\uDDA9\uDDAE-\uDDEA\uDE00-\uDE41\uDE45\uDF00-\uDF56]|\uD835[\uDEC1\uDEDB\uDEFB\uDF15\uDF35\uDF4F\uDF6F\uDF89\uDFA9\uDFC3]|\uD836[\uDC00-\uDDFF\uDE37-\uDE3A\uDE6D-\uDE74\uDE76-\uDE83\uDE85-\uDE8B]|\uD838[\uDD4F\uDEFF]|\uD839\uDDFF|\uD83A[\uDD5E\uDD5F]|\uD83B[\uDCAC\uDCB0\uDD2E\uDEF0\uDEF1]|\uD83C[\uDC00-\uDC2B\uDC30-\uDC93\uDCA0-\uDCAE\uDCB1-\uDCBF\uDCC1-\uDCCF\uDCD1-\uDCF5\uDD0D-\uDDAD\uDDE6-\uDE02\uDE10-\uDE3B\uDE40-\uDE48\uDE50\uDE51\uDE60-\uDE65\uDF00-\uDFFF]|\uD83D[\uDC00-\uDED8\uDEDC-\uDEEC\uDEF0-\uDEFC\uDF00-\uDFD9\uDFE0-\uDFEB\uDFF0]|\uD83E[\uDC00-\uDC0B\uDC10-\uDC47\uDC50-\uDC59\uDC60-\uDC87\uDC90-\uDCAD\uDCB0-\uDCBB\uDCC0\uDCC1\uDCD0-\uDCD8\uDD00-\uDE57\uDE60-\uDE6D\uDE70-\uDE7C\uDE80-\uDE8A\uDE8E-\uDEC6\uDEC8\uDECD-\uDEDC\uDEDF-\uDEEA\uDEEF-\uDEF8\uDF00-\uDF92\uDF94-\uDFEF\uDFFA])/,Hn=Fn(/link|precode-code|html/,"g").replace("link",B(/\[(?:[^\[\]`]|(`+)[^`]+\1(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/,{a:1})).replace("precode-",En?"(?]*?>/).getRegex(),Kn=/^(?:\*+(?:((?!\*)punct)|[^\s*]))|^_+(?:((?!_)punct)|([^\s_]))/,Wn=Fn(Kn,"u").replace(/punct/g,Ln).getRegex(),Jn=Fn(Kn,"u").replace(/punct/g,Vn).getRegex(),Qn="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",Gn=Fn(Qn,"gu").replace(/notPunctSpace/g,qn).replace(/punctSpace/g,$n).replace(/punct/g,Ln).getRegex(),Yn=Fn(Qn,"gu").replace(/notPunctSpace/g,/(?:(?:[\0-\x08\x0E-\x1F0-9A-Za-z\x7F-\x9F\xAA\xAD\xB2\xB3\xB5\xB9\xBA\xBC-\xBE\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376-\u037D\u037F-\u0383\u0386\u0388-\u03F5\u03F7-\u0481\u0483-\u0559\u0560-\u0588\u058B\u058C\u0590-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7-\u05F2\u05F5-\u0605\u0610-\u061A\u061C\u0620-\u0669\u066E-\u06D3\u06D5-\u06DD\u06DF-\u06E8\u06EA-\u06FC\u06FF\u070E-\u07F5\u07FA-\u07FD\u0800-\u082F\u083F-\u085D\u085F-\u0887\u0889-\u0963\u0966-\u096F\u0971-\u09F1\u09F4-\u09F9\u09FC\u09FE-\u0A75\u0A77-\u0AEF\u0AF2-\u0B6F\u0B71-\u0BF2\u0BFB-\u0C76\u0C78-\u0C7E\u0C80-\u0C83\u0C85-\u0D4E\u0D50-\u0D78\u0D7A-\u0DF3\u0DF5-\u0E3E\u0E40-\u0E4E\u0E50-\u0E59\u0E5C-\u0F00\u0F18\u0F19\u0F20-\u0F33\u0F35\u0F37\u0F39\u0F3E-\u0F84\u0F86-\u0FBD\u0FC6\u0FCD\u0FDB-\u1049\u1050-\u109D\u10A0-\u10FA\u10FC-\u135F\u1369-\u138F\u139A-\u13FF\u1401-\u166C\u166F-\u167F\u1681-\u169A\u169D-\u16EA\u16EE-\u1734\u1737-\u17D3\u17D7\u17DC-\u17FF\u180B-\u193F\u1941-\u1943\u1946-\u19DD\u1A00-\u1A1D\u1A20-\u1A9F\u1AA7\u1AAE-\u1B4D\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BFB\u1C00-\u1C3A\u1C40-\u1C7D\u1C80-\u1CBF\u1CC8-\u1CD2\u1CD4-\u1FBC\u1FBE\u1FC2-\u1FCC\u1FD0-\u1FDC\u1FE0-\u1FEC\u1FF0-\u1FFC\u1FFF\u200B-\u200F\u202A-\u202E\u2060-\u2079\u207F-\u2089\u208F-\u209F\u20C2-\u20FF\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2150-\u2189\u218C-\u218F\u242A-\u243F\u244B-\u249B\u24EA-\u24FF\u2776-\u2793\u2B74\u2B75\u2C00-\u2CE4\u2CEB-\u2CF8\u2CFD\u2D00-\u2D6F\u2D71-\u2DFF\u2E2F\u2E5E-\u2E7F\u2E9A\u2EF4-\u2EFF\u2FD6-\u2FEF\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3040-\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u318F\u3192-\u3195\u31A0-\u31BF\u31E6-\u31EE\u31F0-\u31FF\u321F-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\u3400-\u4DBF\u4E00-\uA48F\uA4C7-\uA4FD\uA500-\uA60C\uA610-\uA672\uA674-\uA67D\uA67F-\uA6F1\uA6F8-\uA6FF\uA717-\uA71F\uA722-\uA788\uA78B-\uA827\uA82C-\uA835\uA83A-\uA873\uA878-\uA8CD\uA8D0-\uA8F7\uA8FB\uA8FD-\uA92D\uA930-\uA95E\uA960-\uA9C0\uA9CE-\uA9DD\uA9E0-\uAA5B\uAA60-\uAA76\uAA7A-\uAADD\uAAE0-\uAAEF\uAAF2-\uAB5A\uAB5C-\uAB69\uAB6C-\uABEA\uABEC-\uD7FF\uE000-\uFB28\uFB2A-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDD0-\uFDFB\uFE00-\uFE0F\uFE1A-\uFE2F\uFE53\uFE67\uFE6C-\uFEFE\uFF00\uFF10-\uFF19\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFDF\uFFE7\uFFEF-\uFFFB\uFFFE\uFFFF]|\uD800[\uDC00-\uDCFF\uDD03-\uDD36\uDD40-\uDD78\uDD8A\uDD8B\uDD8F\uDD9D-\uDD9F\uDDA1-\uDDCF\uDDFD-\uDF9E\uDFA0-\uDFCF\uDFD1-\uDFFF]|\uD801[\uDC00-\uDD6E\uDD70-\uDFFF]|\uD802[\uDC00-\uDC56\uDC58-\uDC76\uDC79-\uDD1E\uDD20-\uDD3E\uDD40-\uDE4F\uDE59-\uDE7E\uDE80-\uDEC7\uDEC9-\uDEEF\uDEF7-\uDF38\uDF40-\uDF98\uDF9D-\uDFFF]|\uD803[\uDC00-\uDD6D\uDD6F-\uDD8D\uDD90-\uDEAC\uDEAE-\uDECF\uDED9-\uDF54\uDF5A-\uDF85\uDF8A-\uDFFF]|\uD804[\uDC00-\uDC46\uDC4E-\uDCBA\uDCBD\uDCC2-\uDD3F\uDD44-\uDD73\uDD76-\uDDC4\uDDC9-\uDDCC\uDDCE-\uDDDA\uDDDC\uDDE0-\uDE37\uDE3E-\uDEA8\uDEAA-\uDFD3\uDFD6\uDFD9-\uDFFF]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC5C\uDC5E-\uDCC5\uDCC7-\uDDC0\uDDD8-\uDE40\uDE44-\uDE5F\uDE6D-\uDEB8\uDEBA-\uDF3B\uDF40-\uDFFF]|\uD806[\uDC00-\uDC3A\uDC3C-\uDD43\uDD47-\uDDE1\uDDE3-\uDE3E\uDE47-\uDE99\uDE9D\uDEA3-\uDEFF\uDF0A-\uDFE0\uDFE2-\uDFFF]|\uD807[\uDC00-\uDC40\uDC46-\uDC6F\uDC72-\uDEF6\uDEF9-\uDF42\uDF50-\uDFD4\uDFF2-\uDFFE]|[\uD808\uD80A\uD80C-\uD819\uD81C-\uD82E\uD830-\uD832\uD837\uD83F-\uDBFF][\uDC00-\uDFFF]|\uD809[\uDC00-\uDC6F\uDC75-\uDFFF]|\uD80B[\uDC00-\uDFF0\uDFF3-\uDFFF]|\uD81A[\uDC00-\uDE6D\uDE70-\uDEF4\uDEF6-\uDF36\uDF40-\uDF43\uDF46-\uDFFF]|\uD81B[\uDC00-\uDD6C\uDD70-\uDE96\uDE9B-\uDFE1\uDFE3-\uDFFF]|\uD82F[\uDC00-\uDC9B\uDC9D\uDC9E\uDCA0-\uDFFF]|\uD833[\uDCF0-\uDCF9\uDCFD-\uDCFF\uDEB4-\uDEB9\uDED1-\uDEDF\uDEF1-\uDF4F\uDFC4-\uDFFF]|\uD834[\uDCF6-\uDCFF\uDD27\uDD28\uDD65-\uDD69\uDD6D-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDDEB-\uDDFF\uDE42-\uDE44\uDE46-\uDEFF\uDF57-\uDFFF]|\uD835[\uDC00-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE8C-\uDFFF]|\uD838[\uDC00-\uDD4E\uDD50-\uDEFE\uDF00-\uDFFF]|\uD839[\uDC00-\uDDFE\uDE00-\uDFFF]|\uD83A[\uDC00-\uDD5D\uDD60-\uDFFF]|\uD83B[\uDC00-\uDCAB\uDCAD-\uDCAF\uDCB1-\uDD2D\uDD2F-\uDEEF\uDEF2-\uDFFF]|\uD83C[\uDC2C-\uDC2F\uDC94-\uDC9F\uDCAF\uDCB0\uDCC0\uDCD0\uDCF6-\uDD0C\uDDAE-\uDDE5\uDE03-\uDE0F\uDE3C-\uDE3F\uDE49-\uDE4F\uDE52-\uDE5F\uDE66-\uDEFF]|\uD83D[\uDED9-\uDEDB\uDEED-\uDEEF\uDEFD-\uDEFF\uDFDA-\uDFDF\uDFEC-\uDFEF\uDFF1-\uDFFF]|\uD83E[\uDC0C-\uDC0F\uDC48-\uDC4F\uDC5A-\uDC5F\uDC88-\uDC8F\uDCAE\uDCAF\uDCBC-\uDCBF\uDCC2-\uDCCF\uDCD9-\uDCFF\uDE58-\uDE5F\uDE6E\uDE6F\uDE7D-\uDE7F\uDE8B-\uDE8D\uDEC7\uDEC9-\uDECC\uDEDD\uDEDE\uDEEB-\uDEEE\uDEF9-\uDEFF\uDF93\uDFF0-\uDFF9\uDFFB-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])|~)/).replace(/punctSpace/g,/(?!~)(?:[\t-\r -\/:-@\[-`\{-~\xA0-\xA9\xAB\xAC\xAE-\xB1\xB4\xB6-\xB8\xBB\xBF\xD7\xF7\u02C2-\u02C5\u02D2-\u02DF\u02E5-\u02EB\u02ED\u02EF-\u02FF\u0375\u037E\u0384\u0385\u0387\u03F6\u0482\u055A-\u055F\u0589\u058A\u058D-\u058F\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0606-\u060F\u061B\u061D-\u061F\u066A-\u066D\u06D4\u06DE\u06E9\u06FD\u06FE\u0700-\u070D\u07F6-\u07F9\u07FE\u07FF\u0830-\u083E\u085E\u0888\u0964\u0965\u0970\u09F2\u09F3\u09FA\u09FB\u09FD\u0A76\u0AF0\u0AF1\u0B70\u0BF3-\u0BFA\u0C77\u0C7F\u0C84\u0D4F\u0D79\u0DF4\u0E3F\u0E4F\u0E5A\u0E5B\u0F01-\u0F17\u0F1A-\u0F1F\u0F34\u0F36\u0F38\u0F3A-\u0F3D\u0F85\u0FBE-\u0FC5\u0FC7-\u0FCC\u0FCE-\u0FDA\u104A-\u104F\u109E\u109F\u10FB\u1360-\u1368\u1390-\u1399\u1400\u166D\u166E\u1680\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DB\u1800-\u180A\u1940\u1944\u1945\u19DE-\u19FF\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B4E\u1B4F\u1B5A-\u1B6A\u1B74-\u1B7F\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u1FBD\u1FBF-\u1FC1\u1FCD-\u1FCF\u1FDD-\u1FDF\u1FED-\u1FEF\u1FFD\u1FFE\u2000-\u200A\u2010-\u2029\u202F-\u205F\u207A-\u207E\u208A-\u208E\u20A0-\u20C1\u2100\u2101\u2103-\u2106\u2108\u2109\u2114\u2116-\u2118\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u2140-\u2144\u214A-\u214D\u214F\u218A\u218B\u2190-\u2429\u2440-\u244A\u249C-\u24E9\u2500-\u2775\u2794-\u2B73\u2B76-\u2BFF\u2CE5-\u2CEA\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E5D\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u3004\u3008-\u3020\u3030\u3036\u3037\u303D-\u303F\u309B\u309C\u30A0\u30FB\u3190\u3191\u3196-\u319F\u31C0-\u31E5\u31EF\u3200-\u321E\u322A-\u3247\u3250\u3260-\u327F\u328A-\u32B0\u32C0-\u33FF\u4DC0-\u4DFF\uA490-\uA4C6\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA700-\uA716\uA720\uA721\uA789\uA78A\uA828-\uA82B\uA836-\uA839\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAA77-\uAA79\uAADE\uAADF\uAAF0\uAAF1\uAB5B\uAB6A\uAB6B\uABEB\uFB29\uFBB2-\uFBD2\uFD3E-\uFD4F\uFD90\uFD91\uFDC8-\uFDCF\uFDFC-\uFDFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFEFF\uFF01-\uFF0F\uFF1A-\uFF20\uFF3B-\uFF40\uFF5B-\uFF65\uFFE0-\uFFE6\uFFE8-\uFFEE\uFFFC\uFFFD]|\uD800[\uDD00-\uDD02\uDD37-\uDD3F\uDD79-\uDD89\uDD8C-\uDD8E\uDD90-\uDD9C\uDDA0\uDDD0-\uDDFC\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDC77\uDC78\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEC8\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD803[\uDD6E\uDD8E\uDD8F\uDEAD\uDED0-\uDED8\uDF55-\uDF59\uDF86-\uDF89]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC8\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9\uDFD4\uDFD5\uDFD7\uDFD8]|\uD805[\uDC4B-\uDC4F\uDC5A\uDC5B\uDC5D\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDE60-\uDE6C\uDEB9\uDF3C-\uDF3F]|\uD806[\uDC3B\uDD44-\uDD46\uDDE2\uDE3F-\uDE46\uDE9A-\uDE9C\uDE9E-\uDEA2\uDF00-\uDF09\uDFE1]|\uD807[\uDC41-\uDC45\uDC70\uDC71\uDEF7\uDEF8\uDF43-\uDF4F\uDFD5-\uDFF1\uDFFF]|\uD809[\uDC70-\uDC74]|\uD80B[\uDFF1\uDFF2]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3F\uDF44\uDF45]|\uD81B[\uDD6D-\uDD6F\uDE97-\uDE9A\uDFE2]|\uD82F[\uDC9C\uDC9F]|\uD833[\uDC00-\uDCEF\uDCFA-\uDCFC\uDD00-\uDEB3\uDEBA-\uDED0\uDEE0-\uDEF0\uDF50-\uDFC3]|\uD834[\uDC00-\uDCF5\uDD00-\uDD26\uDD29-\uDD64\uDD6A-\uDD6C\uDD83\uDD84\uDD8C-\uDDA9\uDDAE-\uDDEA\uDE00-\uDE41\uDE45\uDF00-\uDF56]|\uD835[\uDEC1\uDEDB\uDEFB\uDF15\uDF35\uDF4F\uDF6F\uDF89\uDFA9\uDFC3]|\uD836[\uDC00-\uDDFF\uDE37-\uDE3A\uDE6D-\uDE74\uDE76-\uDE83\uDE85-\uDE8B]|\uD838[\uDD4F\uDEFF]|\uD839\uDDFF|\uD83A[\uDD5E\uDD5F]|\uD83B[\uDCAC\uDCB0\uDD2E\uDEF0\uDEF1]|\uD83C[\uDC00-\uDC2B\uDC30-\uDC93\uDCA0-\uDCAE\uDCB1-\uDCBF\uDCC1-\uDCCF\uDCD1-\uDCF5\uDD0D-\uDDAD\uDDE6-\uDE02\uDE10-\uDE3B\uDE40-\uDE48\uDE50\uDE51\uDE60-\uDE65\uDF00-\uDFFF]|\uD83D[\uDC00-\uDED8\uDEDC-\uDEEC\uDEF0-\uDEFC\uDF00-\uDFD9\uDFE0-\uDFEB\uDFF0]|\uD83E[\uDC00-\uDC0B\uDC10-\uDC47\uDC50-\uDC59\uDC60-\uDC87\uDC90-\uDCAD\uDCB0-\uDCBB\uDCC0\uDCC1\uDCD0-\uDCD8\uDD00-\uDE57\uDE60-\uDE6D\uDE70-\uDE7C\uDE80-\uDE8A\uDE8E-\uDEC6\uDEC8\uDECD-\uDEDC\uDEDF-\uDEEA\uDEEF-\uDEF8\uDF00-\uDF92\uDF94-\uDFEF\uDFFA])/).replace(/punct/g,Vn).getRegex(),Xn=Fn("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,qn).replace(/punctSpace/g,$n).replace(/punct/g,Ln).getRegex(),er=Fn(/\\(punct)/,"gu").replace(/punct/g,Ln).getRegex(),tr=Fn(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),nr=Fn(Tn).replace("(?:--\x3e|$)","--\x3e").getRegex(),rr=Fn("^comment|^|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^").replace("comment",nr).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),ur=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+[^`]*?`+(?!`)|[^\[\]\\`])*?/,ar=Fn(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]*(?:\n[ \t]*)?)(title))?\s*\)/).replace("label",ur).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),ir=Fn(/^!?\[(label)\]\[(ref)\]/).replace("label",ur).replace("ref",xn).getRegex(),or=Fn(/^!?\[(ref)\](?:\[\])?/).replace("ref",xn).getRegex(),sr=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,cr={_backpedal:gn,anyPunctuation:er,autolink:tr,blockSkip:Hn,br:Zn,code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,del:gn,emStrongLDelim:Wn,emStrongRDelimAst:Gn,emStrongRDelimUnd:Xn,escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,link:ar,nolink:or,punctuation:Un,reflink:ir,reflinkSearch:Fn("reflink|nolink(?!\\()","g").replace("reflink",ir).replace("nolink",or).getRegex(),tag:rr,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\":">",'"':""","'":"'"},mr=function(e){return vr[e]};function Dr(e,t){if(t){if(bn.escapeTest.test(e))return e.replace(bn.escapeReplace,mr)}else if(bn.escapeTestNoEncode.test(e))return e.replace(bn.escapeReplaceNoEncode,mr);return e}function yr(e){try{e=encodeURI(e).replace(bn.percentDecode,"%")}catch(e){return null}return e}function gr(e,t){var n,r=e.replace(bn.findPipe,(function(e,t,n){for(var r=!1,u=t;--u>=0&&"\\"===n[u];)r=!r;return r?"|":" |"})).split(bn.splitPipe),u=0;if(r[0].trim()||r.shift(),r.length>0&&!(null!==(n=r.at(-1))&&void 0!==n&&n.trim())&&r.pop(),t)if(r.length>t)r.splice(t);else for(;r.length0)return{type:"space",raw:t[0]}}},{key:"code",value:function(e){var t=this.rules.block.code.exec(e);if(t){var n=t[0].replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:t[0],codeBlockStyle:"indented",text:this.options.pedantic?n:Fr(n,"\n")}}}},{key:"fences",value:function(e){var t=this.rules.block.fences.exec(e);if(t){var n=t[0],r=function(e,t,n){var r=e.match(n.other.indentCodeCompensation);if(null===r)return t;var u=r[1];return t.split("\n").map((function(e){var t=e.match(n.other.beginningSpace);return null===t?e:A(t,1)[0].length>=u.length?e.slice(u.length):e})).join("\n")}(n,t[3]||"",this.rules);return{type:"code",raw:n,lang:t[2]?t[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):t[2],text:r}}}},{key:"heading",value:function(e){var t=this.rules.block.heading.exec(e);if(t){var n=t[2].trim();if(this.rules.other.endingHash.test(n)){var r=Fr(n,"#");(this.options.pedantic||!r||this.rules.other.endingSpaceChar.test(r))&&(n=r.trim())}return{type:"heading",raw:t[0],depth:t[1].length,text:n,tokens:this.lexer.inline(n)}}}},{key:"hr",value:function(e){var t=this.rules.block.hr.exec(e);if(t)return{type:"hr",raw:Fr(t[0],"\n")}}},{key:"blockquote",value:function(e){var t=this.rules.block.blockquote.exec(e);if(t){for(var n=Fr(t[0],"\n").split("\n"),r="",u="",a=[];n.length>0;){var i=!1,o=[],s=void 0;for(s=0;s1,a={type:"list",raw:"",ordered:u,start:u?+r.slice(0,-1):"",loose:!1,items:[]};r=u?"\\d{1,9}\\".concat(r.slice(-1)):"\\".concat(r),this.options.pedantic&&(r=u?r:"[*+-]");for(var i=this.rules.other.listItemRegex(r),o=!1;e;){var s=!1,c="",l="";if(!(n=i.exec(e))||this.rules.block.hr.test(e))break;c=n[0],e=e.substring(c.length);var d=n[2].split("\n",1)[0].replace(this.rules.other.listReplaceTabs,(function(e){return" ".repeat(3*e.length)})),f=e.split("\n",1)[0],p=!d.trim(),h=0;if(this.options.pedantic?(h=2,l=d.trimStart()):p?h=n[1].length+1:(h=(h=n[2].search(this.rules.other.nonSpaceChar))>4?1:h,l=d.slice(h),h+=n[1].length),p&&this.rules.other.blankLine.test(f)&&(c+=f+"\n",e=e.substring(f.length+1),s=!0),!s)for(var v=this.rules.other.nextBulletRegex(h),m=this.rules.other.hrRegex(h),D=this.rules.other.fencesBeginRegex(h),y=this.rules.other.headingBeginRegex(h),g=this.rules.other.htmlBeginRegex(h);e;){var F=e.split("\n",1)[0],E=void 0;if(f=F,E=this.options.pedantic?f=f.replace(this.rules.other.listReplaceNesting," "):f.replace(this.rules.other.tabCharGlobal," "),D.test(f)||y.test(f)||g.test(f)||v.test(f)||m.test(f))break;if(E.search(this.rules.other.nonSpaceChar)>=h||!f.trim())l+="\n"+E.slice(h);else{if(p||d.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||D.test(d)||y.test(d)||m.test(d))break;l+="\n"+f}!p&&!f.trim()&&(p=!0),c+=F+"\n",e=e.substring(F.length+1),d=E.slice(h)}a.loose||(o?a.loose=!0:this.rules.other.doubleBlankLine.test(c)&&(o=!0));var b=null,C=void 0;this.options.gfm&&(b=this.rules.other.listIsTask.exec(l))&&(C="[ ] "!==b[0],l=l.replace(this.rules.other.listReplaceTask,"")),a.items.push({type:"list_item",raw:c,task:!!b,checked:C,loose:!1,text:l,tokens:[]}),a.raw+=c}var A=a.items.at(-1);if(!A)return;A.raw=A.raw.trimEnd(),A.text=A.text.trimEnd(),a.raw=a.raw.trimEnd();for(var k=0;k0&&w.some((function(e){return t.rules.other.anyLine.test(e.raw)}));a.loose=_}if(a.loose)for(var S=0;S0?-2:-1}(t[2],"()");if(-2===u)return;if(u>-1){var a=(0===t[0].indexOf("!")?5:4)+t[1].length+u;t[2]=t[2].substring(0,u),t[0]=t[0].substring(0,a).trim(),t[3]=""}}var i=t[2],o="";if(this.options.pedantic){var s=this.rules.other.pedanticHrefTitle.exec(i);s&&(i=s[1],o=s[3])}else o=t[3]?t[3].slice(1,-1):"";return i=i.trim(),this.rules.other.startAngleBracket.test(i)&&(i=this.options.pedantic&&!this.rules.other.endAngleBracket.test(n)?i.slice(1):i.slice(1,-1)),Er(t,{href:i&&i.replace(this.rules.inline.anyPunctuation,"$1"),title:o&&o.replace(this.rules.inline.anyPunctuation,"$1")},t[0],this.lexer,this.rules)}}},{key:"reflink",value:function(e,t){var n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){var r=t[(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal," ").toLowerCase()];if(!r){var u=n[0].charAt(0);return{type:"text",raw:u,text:u}}return Er(n,r,n[0],this.lexer,this.rules)}}},{key:"emStrong",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",r=this.rules.inline.emStrongLDelim.exec(e);if(!(!r||r[3]&&n.match(this.rules.other.unicodeAlphaNumeric))&&(!r[1]&&!r[2]||!n||this.rules.inline.punctuation.exec(n))){var u,a,i=k(r[0]).length-1,o=i,s=0,c="*"===r[0][0]?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(c.lastIndex=0,t=t.slice(-1*e.length+i);null!=(r=c.exec(t));)if(u=r[1]||r[2]||r[3]||r[4]||r[5]||r[6])if(a=k(u).length,r[3]||r[4])o+=a;else if(!((r[5]||r[6])&&i%3)||(i+a)%3){if(!((o-=a)>0)){a=Math.min(a,a+o+s);var l=k(r[0])[0].length,d=e.slice(0,i+r.index+l+a);if(Math.min(i,a)%2){var f=d.slice(1,-1);return{type:"em",raw:d,text:f,tokens:this.lexer.inlineTokens(f)}}var p=d.slice(2,-2);return{type:"strong",raw:d,text:p,tokens:this.lexer.inlineTokens(p)}}}else s+=a}}},{key:"codespan",value:function(e){var t=this.rules.inline.code.exec(e);if(t){var n=t[2].replace(this.rules.other.newLineCharGlobal," "),r=this.rules.other.nonSpaceChar.test(n),u=this.rules.other.startingSpaceChar.test(n)&&this.rules.other.endingSpaceChar.test(n);return r&&u&&(n=n.substring(1,n.length-1)),{type:"codespan",raw:t[0],text:n}}}},{key:"br",value:function(e){var t=this.rules.inline.br.exec(e);if(t)return{type:"br",raw:t[0]}}},{key:"del",value:function(e){var t=this.rules.inline.del.exec(e);if(t)return{type:"del",raw:t[0],text:t[2],tokens:this.lexer.inlineTokens(t[2])}}},{key:"autolink",value:function(e){var t,n,r=this.rules.inline.autolink.exec(e);if(r)return n="@"===r[2]?"mailto:"+(t=r[1]):t=r[1],{type:"link",raw:r[0],text:t,href:n,tokens:[{type:"text",raw:t,text:t}]}}},{key:"url",value:function(e){var t;if(t=this.rules.inline.url.exec(e)){var n,r;if("@"===t[2])r="mailto:"+(n=t[0]);else{var u;do{var a,i;u=t[0],t[0]=null!==(a=null===(i=this.rules.inline._backpedal.exec(t[0]))||void 0===i?void 0:i[0])&&void 0!==a?a:""}while(u!==t[0]);n=t[0],r="www."===t[1]?"http://"+t[0]:t[0]}return{type:"link",raw:t[0],text:n,href:r,tokens:[{type:"text",raw:n,text:n}]}}}},{key:"inlineText",value:function(e){var t=this.rules.inline.text.exec(e);if(t){var n=this.lexer.state.inRawBlock;return{type:"text",raw:t[0],text:t[0],escaped:n}}}}]),Cr=function(){function e(t){s(this,e),p(this,"tokens",void 0),p(this,"options",void 0),p(this,"state",void 0),p(this,"tokenizer",void 0),p(this,"inlineQueue",void 0),this.tokens=[],this.tokens.links=Object.create(null),this.options=t||Dn,this.options.tokenizer=this.options.tokenizer||new br,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};var n={other:bn,block:pr.normal,inline:hr.normal};this.options.pedantic?(n.block=pr.pedantic,n.inline=hr.pedantic):this.options.gfm&&(n.block=pr.gfm,this.options.breaks?n.inline=hr.breaks:n.inline=hr.gfm),this.tokenizer.rules=n}return d(e,[{key:"lex",value:function(e){e=e.replace(bn.carriageReturn,"\n"),this.blockTokens(e,this.tokens);for(var t=0;t1&&void 0!==arguments[1]?arguments[1]:[],u=arguments.length>2&&void 0!==arguments[2]&&arguments[2],a=function(){var t,a,i;if(null!==(t=n.options.extensions)&&void 0!==t&&null!==(t=t.block)&&void 0!==t&&t.some((function(t){return!!(i=t.call({lexer:n},e,r))&&(e=e.substring(i.raw.length),r.push(i),!0)})))return 0;if(i=n.tokenizer.space(e)){e=e.substring(i.raw.length);var o=r.at(-1);return 1===i.raw.length&&void 0!==o?o.raw+="\n":r.push(i),0}if(i=n.tokenizer.code(e)){e=e.substring(i.raw.length);var s=r.at(-1);return"paragraph"===(null==s?void 0:s.type)||"text"===(null==s?void 0:s.type)?(s.raw+=(s.raw.endsWith("\n")?"":"\n")+i.raw,s.text+="\n"+i.text,n.inlineQueue.at(-1).src=s.text):r.push(i),0}if(i=n.tokenizer.fences(e))return e=e.substring(i.raw.length),r.push(i),0;if(i=n.tokenizer.heading(e))return e=e.substring(i.raw.length),r.push(i),0;if(i=n.tokenizer.hr(e))return e=e.substring(i.raw.length),r.push(i),0;if(i=n.tokenizer.blockquote(e))return e=e.substring(i.raw.length),r.push(i),0;if(i=n.tokenizer.list(e))return e=e.substring(i.raw.length),r.push(i),0;if(i=n.tokenizer.html(e))return e=e.substring(i.raw.length),r.push(i),0;if(i=n.tokenizer.def(e)){e=e.substring(i.raw.length);var c=r.at(-1);return"paragraph"===(null==c?void 0:c.type)||"text"===(null==c?void 0:c.type)?(c.raw+=(c.raw.endsWith("\n")?"":"\n")+i.raw,c.text+="\n"+i.raw,n.inlineQueue.at(-1).src=c.text):n.tokens.links[i.tag]||(n.tokens.links[i.tag]={href:i.href,title:i.title},r.push(i)),0}if(i=n.tokenizer.table(e))return e=e.substring(i.raw.length),r.push(i),0;if(i=n.tokenizer.lheading(e))return e=e.substring(i.raw.length),r.push(i),0;var l=e;if(null!==(a=n.options.extensions)&&void 0!==a&&a.startBlock){var d,f=1/0,p=e.slice(1);n.options.extensions.startBlock.forEach((function(e){"number"==typeof(d=e.call({lexer:n},p))&&d>=0&&(f=Math.min(f,d))})),f<1/0&&f>=0&&(l=e.substring(0,f+1))}if(n.state.top&&(i=n.tokenizer.paragraph(l))){var h=r.at(-1);return u&&"paragraph"===(null==h?void 0:h.type)?(h.raw+=(h.raw.endsWith("\n")?"":"\n")+i.raw,h.text+="\n"+i.text,n.inlineQueue.pop(),n.inlineQueue.at(-1).src=h.text):r.push(i),u=l.length!==e.length,e=e.substring(i.raw.length),0}if(i=n.tokenizer.text(e)){e=e.substring(i.raw.length);var v=r.at(-1);return"text"===(null==v?void 0:v.type)?(v.raw+=(v.raw.endsWith("\n")?"":"\n")+i.raw,v.text+="\n"+i.text,n.inlineQueue.pop(),n.inlineQueue.at(-1).src=v.text):r.push(i),0}if(e){var m="Infinite loop on byte: "+e.charCodeAt(0);if(n.options.silent)return console.error(m),1;throw new Error(m)}};for(this.options.pedantic&&(e=e.replace(bn.tabCharGlobal," ").replace(bn.spaceLine,""));e&&(0===(t=a())||1!==t););return this.state.top=!0,r}},{key:"inline",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return this.inlineQueue.push({src:e,tokens:t}),t}},{key:"inlineTokens",value:function(e){var t,n,r,u=this,a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],i=e,o=null;if(this.tokens.links){var s=Object.keys(this.tokens.links);if(s.length>0)for(;null!=(o=this.tokenizer.rules.inline.reflinkSearch.exec(i));)s.includes(o[0].slice(o[0].lastIndexOf("[")+1,-1))&&(i=i.slice(0,o.index)+"["+"a".repeat(o[0].length-2)+"]"+i.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;null!=(o=this.tokenizer.rules.inline.anyPunctuation.exec(i));)i=i.slice(0,o.index)+"++"+i.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);for(;null!=(o=this.tokenizer.rules.inline.blockSkip.exec(i));)r=o[2]?o[2].length:0,i=i.slice(0,o.index+r)+"["+"a".repeat(o[0].length-r-2)+"]"+i.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);i=null!==(t=null===(n=this.options.hooks)||void 0===n||null===(n=n.emStrongMask)||void 0===n?void 0:n.call({lexer:this},i))&&void 0!==t?t:i;for(var c,l=!1,d="",f=function(){var t,n,r;if(l||(d=""),l=!1,null!==(t=u.options.extensions)&&void 0!==t&&null!==(t=t.inline)&&void 0!==t&&t.some((function(t){return!!(r=t.call({lexer:u},e,a))&&(e=e.substring(r.raw.length),a.push(r),!0)})))return 0;if(r=u.tokenizer.escape(e))return e=e.substring(r.raw.length),a.push(r),0;if(r=u.tokenizer.tag(e))return e=e.substring(r.raw.length),a.push(r),0;if(r=u.tokenizer.link(e))return e=e.substring(r.raw.length),a.push(r),0;if(r=u.tokenizer.reflink(e,u.tokens.links)){e=e.substring(r.raw.length);var o=a.at(-1);return"text"===r.type&&"text"===(null==o?void 0:o.type)?(o.raw+=r.raw,o.text+=r.text):a.push(r),0}if(r=u.tokenizer.emStrong(e,i,d))return e=e.substring(r.raw.length),a.push(r),0;if(r=u.tokenizer.codespan(e))return e=e.substring(r.raw.length),a.push(r),0;if(r=u.tokenizer.br(e))return e=e.substring(r.raw.length),a.push(r),0;if(r=u.tokenizer.del(e))return e=e.substring(r.raw.length),a.push(r),0;if(r=u.tokenizer.autolink(e))return e=e.substring(r.raw.length),a.push(r),0;if(!u.state.inLink&&(r=u.tokenizer.url(e)))return e=e.substring(r.raw.length),a.push(r),0;var s=e;if(null!==(n=u.options.extensions)&&void 0!==n&&n.startInline){var c,f=1/0,p=e.slice(1);u.options.extensions.startInline.forEach((function(e){"number"==typeof(c=e.call({lexer:u},p))&&c>=0&&(f=Math.min(f,c))})),f<1/0&&f>=0&&(s=e.substring(0,f+1))}if(r=u.tokenizer.inlineText(s)){e=e.substring(r.raw.length),"_"!==r.raw.slice(-1)&&(d=r.raw.slice(-1)),l=!0;var h=a.at(-1);return"text"===(null==h?void 0:h.type)?(h.raw+=r.raw,h.text+=r.text):a.push(r),0}if(e){var v="Infinite loop on byte: "+e.charCodeAt(0);if(u.options.silent)return console.error(v),1;throw new Error(v)}};e&&(0===(c=f())||1!==c););return a}}],[{key:"rules",get:function(){return{block:pr,inline:hr}}},{key:"lex",value:function(t,n){return new e(n).lex(t)}},{key:"lexInline",value:function(t,n){return new e(n).inlineTokens(t)}}])}(),Ar=d((function e(t){s(this,e),p(this,"options",void 0),p(this,"parser",void 0),this.options=t||Dn}),[{key:"space",value:function(e){return""}},{key:"code",value:function(e){var t,n=e.text,r=e.lang,u=e.escaped,a=null===(t=(r||"").match(bn.notSpaceStart))||void 0===t?void 0:t[0],i=n.replace(bn.endingNewline,"")+"\n";return a?'
    '+(u?i:Dr(i,!0))+"
    \n":"
    "+(u?i:Dr(i,!0))+"
    \n"}},{key:"blockquote",value:function(e){var t=e.tokens;return"
    \n".concat(this.parser.parse(t),"
    \n")}},{key:"html",value:function(e){return e.text}},{key:"def",value:function(e){return""}},{key:"heading",value:function(e){var t=e.tokens,n=e.depth;return"").concat(this.parser.parseInline(t),"\n")}},{key:"hr",value:function(e){return"
    \n"}},{key:"list",value:function(e){for(var t=e.ordered,n=e.start,r="",u=0;u\n"+r+"\n"}},{key:"listitem",value:function(e){var t="";if(e.task){var n,r=this.checkbox({checked:!!e.checked});e.loose?"paragraph"===(null===(n=e.tokens[0])||void 0===n?void 0:n.type)?(e.tokens[0].text=r+" "+e.tokens[0].text,e.tokens[0].tokens&&e.tokens[0].tokens.length>0&&"text"===e.tokens[0].tokens[0].type&&(e.tokens[0].tokens[0].text=r+" "+Dr(e.tokens[0].tokens[0].text),e.tokens[0].tokens[0].escaped=!0)):e.tokens.unshift({type:"text",raw:r+" ",text:r+" ",escaped:!0}):t+=r+" "}return t+=this.parser.parse(e.tokens,!!e.loose),"
  • ".concat(t,"
  • \n")}},{key:"checkbox",value:function(e){return"'}},{key:"paragraph",value:function(e){var t=e.tokens;return"

    ".concat(this.parser.parseInline(t),"

    \n")}},{key:"table",value:function(e){for(var t="",n="",r=0;r")),"\n\n"+t+"\n"+u+"
    \n"}},{key:"tablerow",value:function(e){var t=e.text;return"\n".concat(t,"\n")}},{key:"tablecell",value:function(e){var t=this.parser.parseInline(e.tokens),n=e.header?"th":"td";return(e.align?"<".concat(n,' align="').concat(e.align,'">'):"<".concat(n,">"))+t+"\n")}},{key:"strong",value:function(e){var t=e.tokens;return"".concat(this.parser.parseInline(t),"")}},{key:"em",value:function(e){var t=e.tokens;return"".concat(this.parser.parseInline(t),"")}},{key:"codespan",value:function(e){var t=e.text;return"".concat(Dr(t,!0),"")}},{key:"br",value:function(e){return"
    "}},{key:"del",value:function(e){var t=e.tokens;return"".concat(this.parser.parseInline(t),"")}},{key:"link",value:function(e){var t=e.href,n=e.title,r=e.tokens,u=this.parser.parseInline(r),a=yr(t);if(null===a)return u;var i='
    "+u+""}},{key:"image",value:function(e){var t=e.href,n=e.title,r=e.text,u=e.tokens;u&&(r=this.parser.parseInline(u,this.parser.textRenderer));var a=yr(t);if(null===a)return Dr(r);var i='').concat(r,'"}},{key:"text",value:function(e){return"tokens"in e&&e.tokens?this.parser.parseInline(e.tokens):"escaped"in e&&e.escaped?e.text:Dr(e.text)}}]),kr=d((function e(){s(this,e)}),[{key:"strong",value:function(e){return e.text}},{key:"em",value:function(e){return e.text}},{key:"codespan",value:function(e){return e.text}},{key:"del",value:function(e){return e.text}},{key:"html",value:function(e){return e.text}},{key:"text",value:function(e){return e.text}},{key:"link",value:function(e){return""+e.text}},{key:"image",value:function(e){return""+e.text}},{key:"br",value:function(){return""}}]),wr=function(){function e(t){s(this,e),p(this,"options",void 0),p(this,"renderer",void 0),p(this,"textRenderer",void 0),this.options=t||Dn,this.options.renderer=this.options.renderer||new Ar,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new kr}return d(e,[{key:"parse",value:function(e){for(var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n="",r=0;r1&&void 0!==arguments[1]?arguments[1]:this.renderer,n="",r=0;r"u"||null===n)return o(new Error("marked(): input parameter is undefined or null"));if("string"!=typeof n)return o(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(n)+", string expected"));if(a.hooks&&(a.hooks.options=a,a.hooks.block=e),a.async)return i(E().m((function r(){var u,i,o,s,c,l,d,f,p,h,v;return E().w((function(r){for(;;)switch(r.n){case 0:if(!a.hooks){r.n=2;break}return r.n=1,a.hooks.preprocess(n);case 1:c=r.v,r.n=3;break;case 2:c=n;case 3:if(u=c,!a.hooks){r.n=5;break}return r.n=4,a.hooks.provideLexer();case 4:l=r.v,r.n=6;break;case 5:l=e?Cr.lex:Cr.lexInline;case 6:return d=l,r.n=7,d(u,a);case 7:if(i=r.v,!a.hooks){r.n=9;break}return r.n=8,a.hooks.processAllTokens(i);case 8:f=r.v,r.n=10;break;case 9:f=i;case 10:if(o=f,!a.walkTokens){r.n=11;break}return r.n=11,Promise.all(t.walkTokens(o,a.walkTokens));case 11:if(!a.hooks){r.n=13;break}return r.n=12,a.hooks.provideParser();case 12:p=r.v,r.n=14;break;case 13:p=e?wr.parse:wr.parseInline;case 14:return h=p,r.n=15,h(o,a);case 15:if(s=r.v,!a.hooks){r.n=17;break}return r.n=16,a.hooks.postprocess(s);case 16:v=r.v,r.n=18;break;case 17:v=s;case 18:return r.a(2,v)}}),r)})))().catch(o);try{a.hooks&&(n=a.hooks.preprocess(n));var s=(a.hooks?a.hooks.provideLexer():e?Cr.lex:Cr.lexInline)(n,a);a.hooks&&(s=a.hooks.processAllTokens(s)),a.walkTokens&&t.walkTokens(s,a.walkTokens);var c=(a.hooks?a.hooks.provideParser():e?wr.parse:wr.parseInline)(s,a);return a.hooks&&(c=a.hooks.postprocess(c)),c}catch(e){return o(e)}}}},{key:"onError",value:function(e,t){return function(n){if(n.message+="\nPlease report this to https://github.com/markedjs/marked.",e){var r="

    An error occurred:

    "+Dr(n.message+"",!0)+"
    ";return t?Promise.resolve(r):r}if(t)return Promise.reject(n);throw n}}}]),xr=new Sr;function Br(e,t){return xr.parse(e,t)}function Ir(e){return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}Br.options=Br.setOptions=function(e){return xr.setOptions(e),Br.defaults=xr.defaults,yn(Br.defaults),Br},Br.getDefaults=function(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}},Br.defaults=Dn,Br.use=function(){return xr.use.apply(xr,arguments),Br.defaults=xr.defaults,yn(Br.defaults),Br},Br.walkTokens=function(e,t){return xr.walkTokens(e,t)},Br.parseInline=xr.parseInline,Br.Parser=wr,Br.parser=wr.parse,Br.Renderer=Ar,Br.TextRenderer=kr,Br.Lexer=Cr,Br.lexer=Cr.lex,Br.Tokenizer=br,Br.Hooks=_r,Br.parse=Br,Br.options,Br.setOptions,Br.use,Br.walkTokens,Br.parseInline,wr.parse,Cr.lex;var Or=new Br.Renderer;Or.code=function(e){var t=e.text,n=e.lang,r=void 0===n?"":n,u=e.escaped,a=r?"language-".concat(r):"",i=u?t:Ir(t),o=encodeURIComponent(t);return'\n
    \n \n
    ').concat(i,"
    \n
    \n ")},Or.link=function(e){var t=e.href,n=e.title,r=e.text,u=n?' title="'.concat(Ir(n),'"'):"",a=t?Ir(t):"",i=Ir(r);return'').concat(i,"")};var Tr=(0,r.memo)((function(e){var t=e.content,n=e.copyButtonText,u=e.copyButtonCopiedText,a=e.isStreaming,i=(0,r.useMemo)((function(){return Br.parse(t,{gfm:!0,breaks:!0,renderer:Or})}),[t]),o=(0,r.useRef)(null);return(0,r.useEffect)((function(){var e=o.current;if(e)return Array.from(e.querySelectorAll(".DocSearch-CodeSnippet-CopyButton")).forEach((function(e){var t=e.querySelector(".DocSearch-CodeSnippet-CopyButton-Label");t&&(t.textContent=n),e.classList.remove("DocSearch-CodeSnippet-CopyButton--copied")})),e.addEventListener("click",t),function(){e.removeEventListener("click",t)};function t(e){var t,r=e.target.closest(".DocSearch-CodeSnippet-CopyButton");if(r){var a=null!==(t=r.getAttribute("data-code"))&&void 0!==t?t:"";navigator.clipboard.writeText(decodeURIComponent(a)).catch((function(){}));var i=r.querySelector(".DocSearch-CodeSnippet-CopyButton-Label");if(i){r.classList.add("DocSearch-CodeSnippet-CopyButton--copied");var o=n;i.textContent=u,setTimeout((function(){r.classList.remove("DocSearch-CodeSnippet-CopyButton--copied"),i.textContent=o}),1500)}}}}),[i,n,u]),r.createElement("div",{ref:o,className:"DocSearch-Markdown-Content ".concat(a?"DocSearch-Markdown-Content--streaming":""),dangerouslySetInnerHTML:{__html:i}})}));function Pr(e){var t=e.part,n=e.translations,u=e.onSearchQueryClick,a=n.searchingText,i=n.preToolCallText,o=n.toolCallResultText;switch(t.state){case"input-streaming":return r.createElement("div",{className:"DocSearch-AskAiScreen-MessageContent-Tool Tool--PartialCall shimmer"},r.createElement(Jt,{className:"DocSearch-AskAiScreen-SmallerLoadingIcon"}),r.createElement("span",null,a));case"input-available":return r.createElement("div",{className:"DocSearch-AskAiScreen-MessageContent-Tool Tool--Call shimmer"},r.createElement(Jt,{className:"DocSearch-AskAiScreen-SmallerLoadingIcon"}),r.createElement("span",null,i," ",'"'.concat(t.input.query||"",'" ...')));case"output-available":var s,c,l="tool-searchIndex"===t.type?t.output.query:t.input.query,d=null!==(s=null===(c=t.output.hits)||void 0===c?void 0:c.length)&&void 0!==s?s:0;return r.createElement("div",{className:"DocSearch-AskAiScreen-MessageContent-Tool Tool--Result"},r.createElement(Xt,null),r.createElement("span",null,o," ",u?r.createElement("span",{role:"button",tabIndex:0,className:"DocSearch-AskAiScreen-MessageContent-Tool-Query",onKeyDown:function(e){"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),u(l||""))},onClick:function(){return u(l||"")}}," ",'"',l||"",'"'):r.createElement("span",{className:"DocSearch-AskAiScreen-MessageContent-Tool-Query"},' "',l||"",'"')," ","found ",d," results"));default:return null}}function jr(e){return e.replace(/<[^>]*>/g,"").replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}Tr.displayName="MemoizedMarkdown";var Nr=function(e,t){var n=t[0].parts.find((function(e){return"text"===e.type})),r=null!=n&&n.text?jr(n.text):"";return{query:e,objectID:r,messages:t,type:"askAI",anchor:"stored",content:null,hierarchy:{lvl0:"askAI",lvl1:r,lvl2:null,lvl3:null,lvl4:null,lvl5:null,lvl6:null},url:"",url_without_anchor:""}},zr=function(e){return null==e?void 0:e.parts.find((function(e){return"text"===e.type}))};function Rr(e){var t;return e&&(null===(t=e.message)||void 0===t?void 0:t.includes("AI-217"))||!1}var Mr=["translations"];function Zr(e){var t=e.disclaimerText;return r.createElement("p",{className:"DocSearch-AskAiScreen-Disclaimer"},t)}function Lr(e){var t,n,u,a=e.exchange,i=e.askAiError,o=e.isLastExchange,s=e.loadingStatus,c=e.onSearchQueryClick,l=e.translations,d=e.conversations,p=e.onFeedback,h=e.agentStudio,v=a.userMessage,m=a.assistantMessage,D=l.stoppedStreamingText,y=void 0===D?"You stopped this response":D,g=l.errorTitleText,F=void 0===g?"Chat error":g,E=l.preToolCallText,b=void 0===E?"Searching...":E,C=l.afterToolCallText,A=void 0===C?"Searched for":C,k=l.duringToolCallText,w=void 0===k?"Searching...":k,_=Rr(i),S=(0,r.useMemo)((function(){return zr(m)}),[m]),x=(0,r.useMemo)((function(){return zr(v)}),[v]),B=r.useMemo((function(){return e=m,t=[],n=new Set,e?(e.parts.forEach((function(e){if("text"===e.type&&0!==e.text.length){var r,u=e.text.replace(/```[\s\S]*?```/g,"").replace(/`[^`]*`/g,""),a=f(u.matchAll(/\[([^\]]*)\]\(([^)]+)\)/g));try{for(a.s();!(r=a.n()).done;){var i=r.value,o=i[1].trim(),s=i[2];n.has(s)||(n.add(s),t.push({url:s,title:o||void 0}))}}catch(e){a.e(e)}finally{a.f()}var c,l=f(u.matchAll(/(?"{}|\\^`[\]]+/g));try{for(l.s();!(c=l.n()).done;){var d=c.value[0].replace(/[.,;:!?]+$/,"");n.has(d)||(n.add(d),t.push({url:d}))}}catch(e){l.e(e)}finally{l.f()}}})),t):[];var e,t,n}),[m]),I=r.useMemo((function(){return function(e){for(var t=[],n=0;n0&&u.push(c),a++}u.length>1?t.push({type:"aggregated-tool-call",queries:u}):1===u.length&&t.push(r),n=a-1}else t.push(r)}return t}((null==m?void 0:m.parts)||[])}),[m]),O=(null===(t=v.metadata)||void 0===t?void 0:t.stopped)||(null==m||null===(n=m.metadata)||void 0===n?void 0:n.stopped),T=!O&&(!o||o&&"ready"===s&&Boolean(m)),P=["submitted","streaming"].includes(s)&&o&&!I.some((function(e){return"step-start"!==e.type})),j=h?(null==m?void 0:m.id)||a.id:(null==v?void 0:v.id)||a.id;return r.createElement("div",{className:"DocSearch-AskAiScreen-Response-Container"},r.createElement("div",{className:"DocSearch-AskAiScreen-Response"},r.createElement("div",{className:"DocSearch-AskAiScreen-Message DocSearch-AskAiScreen-Message--user"},r.createElement("p",{className:"DocSearch-AskAiScreen-Query"},null!==(u=null==x?void 0:x.text)&&void 0!==u?u:"")),r.createElement("div",{className:"DocSearch-AskAiScreen-Message DocSearch-AskAiScreen-Message--assistant"},r.createElement("div",{className:"DocSearch-AskAiScreen-MessageContent"},"error"===s&&i&&o&&!_&&r.createElement("div",{className:"DocSearch-AskAiScreen-MessageContent DocSearch-AskAiScreen-Error"},r.createElement(en,null),r.createElement("div",{className:"DocSearch-AskAiScreen-Error-Content"},r.createElement("h4",{className:"DocSearch-AskAiScreen-Error-Title"},F),r.createElement(Tr,{content:i.message,copyButtonText:"",copyButtonCopiedText:"",isStreaming:!1}))),P&&r.createElement("div",{className:"DocSearch-AskAiScreen-MessageContent-Reasoning"},r.createElement("span",{className:"shimmer"},l.thinkingText||"Thinking...")),I.map((function(e,t){var n=t;return"string"==typeof e?r.createElement(Tr,{key:n,content:e,copyButtonText:l.copyButtonText||"Copy",copyButtonCopiedText:l.copyButtonCopiedText||"Copied!",isStreaming:"streaming"===s}):"aggregated-tool-call"===e.type?r.createElement(mn,{key:n,queries:e.queries,translations:l,onSearchQueryClick:c}):"reasoning"===e.type&&"streaming"===e.state?r.createElement("div",{key:n,className:"DocSearch-AskAiScreen-MessageContent-Reasoning shimmer"},r.createElement(Jt,{className:"DocSearch-AskAiScreen-SmallerLoadingIcon"}),r.createElement("span",{className:"shimmer"},"Reasoning...")):"text"===e.type?r.createElement(Tr,{key:n,content:e.text,copyButtonText:l.copyButtonText||"Copy",copyButtonCopiedText:l.copyButtonCopiedText||"Copied!",isStreaming:"streaming"===e.state}):"tool-searchIndex"===e.type||"tool-algolia_search_index"===e.type?r.createElement(Pr,{key:n,translations:{preToolCallText:b,searchingText:w,toolCallResultText:A},part:e,onSearchQueryClick:c}):null}))),O&&r.createElement("p",{className:"DocSearck-AskAiScreen-MessageContent-Stopped"},y)),r.createElement("div",{className:"DocSearch-AskAiScreen-Answer-Footer"},r.createElement($r,{id:j,showActions:T,latestAssistantMessageContent:(null==S?void 0:S.text)||null,translations:l,conversations:d,onFeedback:p}))),B.length>0?r.createElement(qr,{urlsToDisplay:B,relatedSourcesText:l.relatedSourcesText}):null)}function $r(e){var t,n=e.id,u=e.showActions,a=e.latestAssistantMessageContent,o=e.translations,s=e.conversations,c=e.onFeedback,l=r.useMemo((function(){var e,t,r=null===(e=s.getOne)||void 0===e?void 0:e.call(s,n);return null!==(t=null==r?void 0:r.feedback)&&void 0!==t?t:null}),[s,n]),d=A(r.useState(l),2),f=d[0],p=d[1],h=A(r.useState(!1),2),v=h[0],m=h[1],D=A(r.useState(null),2),y=D[0],g=D[1],F=(t=i(E().m((function e(t){var r;return E().w((function(e){for(;;)switch(e.p=e.n){case 0:if(!v){e.n=1;break}return e.a(2);case 1:return g(null),m(!0),e.p=2,e.n=3,null==c?void 0:c(n,"like"===t?1:0);case 3:p(t),e.n=5;break;case 4:e.p=4,r=e.v,g(r);case 5:return e.p=5,m(!1),e.f(5);case 6:return e.a(2)}}),e,null,[[2,4,5,6]])}))),function(e){return t.apply(this,arguments)}),b=o.likeButtonTitle,C=void 0===b?"Like":b,k=o.dislikeButtonTitle,w=void 0===k?"Dislike":k,_=o.thanksForFeedbackText,S=void 0===_?"Thanks for your feedback!":_;return u&&a?r.createElement("div",{className:"DocSearch-AskAiScreen-Actions"},null===f?r.createElement(r.Fragment,null,v?r.createElement(Jt,{className:"DocSearch-AskAiScreen-SmallerLoadingIcon"}):r.createElement(r.Fragment,null,r.createElement(Kr,{title:C,onClick:function(){return F("like")}}),r.createElement(Wr,{title:w,onClick:function(){return F("dislike")}})),y&&r.createElement("p",{className:"DocSearch-AskAiScreen-FeedbackText"},y.message||"An error occured")):r.createElement("p",{className:"DocSearch-AskAiScreen-FeedbackText DocSearch-AskAiScreen-FeedbackText--visible"},S),r.createElement(Hr,{translations:o,onClick:function(){return navigator.clipboard.writeText(a)}})):null}function qr(e){var t=e.urlsToDisplay,n=e.relatedSourcesText;return r.createElement("div",{className:"DocSearch-AskAiScreen-RelatedSources"},r.createElement("p",{className:"DocSearch-AskAiScreen-RelatedSources-Title"},n||"Related sources"),r.createElement("div",{className:"DocSearch-AskAiScreen-RelatedSources-List"},t.length>0&&t.map((function(e){return r.createElement("a",{key:e.url,href:e.url,className:"DocSearch-AskAiScreen-RelatedSources-Item-Link",target:"_blank",rel:"noopener noreferrer"},r.createElement(Vr,null),r.createElement("span",null,e.title||e.url))}))))}function Ur(e){var t=e.translations,n=void 0===t?{}:t,u=F(e,Mr),a=n.disclaimerText,i=void 0===a?"Answers are generated with AI which can make mistakes. Verify responses.":a,o=n.threadDepthExceededMessage,s=void 0===o?"This conversation is now closed to keep responses accurate.":o,c=n.startNewConversationButtonText,l=void 0===c?"Start a new conversation":c,d=u.messages,f=u.askAiError,p=u.status,h=u.agentStudio,v=(0,r.useMemo)((function(){return"error"===p&&Rr(f)}),[p,f]),m=(0,r.useMemo)((function(){for(var e=[],t=0;t0&&(e[e.length-1].assistantMessage||e.pop()),e}),[d,v]),D=function(e){u.onAskAiToggle(!1),u.setQuery(e)},y=v&&d.some((function(e){return"assistant"===e.role}));return r.createElement("div",{className:"DocSearch-AskAiScreen DocSearch-AskAiScreen-Container"},y&&r.createElement("div",{className:"DocSearch-AskAiScreen-MessageContent DocSearch-AskAiScreen-Error DocSearch-AskAiScreen-Error--ThreadDepth"},r.createElement("div",{className:"DocSearch-AskAiScreen-Error-Content"},r.createElement("p",null,s," ",r.createElement("button",{type:"button",className:"DocSearch-ThreadDepthError-Link",onClick:u.onNewConversation},l)," ","to continue."))),r.createElement(Zr,{disclaimerText:i}),r.createElement("div",{className:"DocSearch-AskAiScreen-Body"},r.createElement("div",{className:"DocSearch-AskAiScreen-ExchangesList"},m.slice().reverse().map((function(e,t){return r.createElement(Lr,{key:e.id,exchange:e,askAiError:u.askAiError,isLastExchange:0===t,loadingStatus:u.status,translations:n,conversations:u.conversations,agentStudio:h,onSearchQueryClick:D,onFeedback:u.onFeedback})})))))}function Vr(){return r.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round"},r.createElement("line",{x1:"4",x2:"20",y1:"9",y2:"9"}),r.createElement("line",{x1:"4",x2:"20",y1:"15",y2:"15"}),r.createElement("line",{x1:"10",x2:"8",y1:"3",y2:"21"}),r.createElement("line",{x1:"16",x2:"14",y1:"3",y2:"21"}))}function Hr(e){var t=e.onClick,n=e.translations,u=n.copyButtonTitle,a=void 0===u?"Copy":u,i=n.copyButtonCopiedText,o=void 0===i?"Copied!":i,s=A((0,r.useState)(!1),2),c=s[0],l=s[1];return(0,r.useEffect)((function(){if(c){var e=setTimeout((function(){l(!1)}),1500);return function(){return clearTimeout(e)}}}),[c]),r.createElement("button",{type:"button",className:"DocSearch-AskAiScreen-ActionButton DocSearch-AskAiScreen-CopyButton ".concat(c?"DocSearch-AskAiScreen-CopyButton--copied":""),disabled:c,title:c?o:a,onClick:function(){t(),l(!0)}},c?r.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",className:"lucide lucide-check-icon lucide-check"},r.createElement("path",{d:"M20 6 9 17l-5-5"})):r.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",className:"lucide lucide-copy-icon lucide-copy"},r.createElement("rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2"}),r.createElement("path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"})))}function Kr(e){var t=e.title,n=e.onClick;return r.createElement("button",{type:"button",className:"DocSearch-AskAiScreen-ActionButton DocSearch-AskAiScreen-LikeButton",title:t,onClick:n},r.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",className:"lucide lucide-thumbs-up-icon lucide-thumbs-up"},r.createElement("path",{d:"M7 10v12"}),r.createElement("path",{d:"M15 5.88 14 10h5.83a2 2 0 0 1 1.92 2.56l-2.33 8A2 2 0 0 1 17.5 22H4a2 2 0 0 1-2-2v-8a2 2 0 0 1 2-2h2.76a2 2 0 0 0 1.79-1.11L12 2a3.13 3.13 0 0 1 3 3.88Z"})))}function Wr(e){var t=e.title,n=e.onClick;return r.createElement("button",{type:"button",className:"DocSearch-AskAiScreen-ActionButton DocSearch-AskAiScreen-DislikeButton",title:t,onClick:n},r.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round",className:"lucide lucide-thumbs-down-icon lucide-thumbs-down"},r.createElement("path",{d:"M17 14V2"}),r.createElement("path",{d:"M9 18.12 10 14H4.17a2 2 0 0 1-1.92-2.56l2.33-8A2 2 0 0 1 6.5 2H20a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-2.76a2 2 0 0 0-1.79 1.11L12 22a3.13 3.13 0 0 1-3-3.88Z"})))}var Jr=["hit","attribute","tagName"];function Qr(e,t){return t.split(".").reduce((function(e,t){return null!=e&&e[t]?e[t]:null}),e)}function Gr(e){var t=e.hit,n=e.attribute,u=e.tagName,a=void 0===u?"span":u,i=F(e,Jr);return(0,r.createElement)(a,g(g({},i),{},{dangerouslySetInnerHTML:{__html:Qr(t,"_snippetResult.".concat(n,".value"))||Qr(t,n)}}))}var Yr=["item","getItemProps","onItemClick","translations","collection"];function Xr(e){var t=r.useMemo((function(){return e.title?e.title.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,'"').replace(/'/g,"'"):null}),[e.title]);return e.collection&&0!==e.collection.items.length?"askAI"===e.collection.source.sourceId?r.createElement("section",{className:"DocSearch-AskAi-Section"},r.createElement("ul",e.getListProps({source:e.collection.source}),r.createElement(tu,h({item:e.collection.items[0],translations:e.translations},e)))):(e.collection.source.sourceId,r.createElement("section",{className:"DocSearch-Hits"},r.createElement("div",{className:"DocSearch-Hit-source"},t),r.createElement("ul",e.getListProps({source:e.collection.source}),e.collection.items.map((function(t,n){return r.createElement(eu,h({key:[e.title,t.objectID].join(":"),item:t,index:n},e))}))))):null}function eu(e){var t=e.item,n=e.index,u=e.renderIcon,a=e.renderAction,i=e.getItemProps,o=e.onItemClick,s=e.collection,c=e.hitComponent;return r.createElement("li",h({className:["DocSearch-Hit",t.__docsearch_parent&&"DocSearch-Hit--Child"].filter(Boolean).join(" ")},i({item:t,source:s.source,onClick:function(e){o(t,e)}})),r.createElement(c,{hit:t},r.createElement("div",{className:"DocSearch-Hit-Container"},u({item:t,index:n}),t.hierarchy[t.type]&&"lvl1"===t.type&&r.createElement("div",{className:"DocSearch-Hit-content-wrapper"},r.createElement(Gr,{className:"DocSearch-Hit-title",hit:t,attribute:"hierarchy.lvl1"}),t.content&&r.createElement(Gr,{className:"DocSearch-Hit-path",hit:t,attribute:"content"})),"askAI"===t.type&&r.createElement("div",{className:"DocSearch-Hit-content-wrapper"},r.createElement("span",{className:"DocSearch-Hit-title"},jr(t.hierarchy.lvl1||""))),t.hierarchy[t.type]&&("lvl2"===t.type||"lvl3"===t.type||"lvl4"===t.type||"lvl5"===t.type||"lvl6"===t.type)&&r.createElement("div",{className:"DocSearch-Hit-content-wrapper"},r.createElement(Gr,{className:"DocSearch-Hit-title",hit:t,attribute:"hierarchy.".concat(t.type)}),r.createElement(Gr,{className:"DocSearch-Hit-path",hit:t,attribute:"hierarchy.lvl1"})),"content"===t.type&&r.createElement("div",{className:"DocSearch-Hit-content-wrapper"},r.createElement(Gr,{className:"DocSearch-Hit-title",hit:t,attribute:"content"}),r.createElement(Gr,{className:"DocSearch-Hit-path",hit:t,attribute:"hierarchy.lvl1"})),a({item:t}))))}function tu(e){var t=e.item,n=e.getItemProps,u=e.onItemClick,a=e.translations,i=e.collection,o=F(e,Yr),s=a||{},c=s.askAiPlaceholder,l=void 0===c?"Ask AI: ":c,d=s.noResultsAskAiPlaceholder,f=void 0===d?"Didn't find it in the docs? Ask AI to help: ":d,p=1===o.state.collections.length?f:l;return r.createElement("li",h({className:"DocSearch-Hit"},n({item:t,source:i.source,onClick:function(e){u(t,e)}})),r.createElement("div",{className:"DocSearch-Hit--AskAI"},r.createElement("div",{className:"DocSearch-Hit-AskAIButton DocSearch-Hit-Container"},r.createElement("div",{className:" DocSearch-Hit-AskAIButton-icon DocSearch-Hit-icon"},r.createElement(Qt,null)),r.createElement("div",{className:"DocSearch-Hit-AskAIButton-title"},r.createElement("span",{className:"DocSearch-Hit-AskAIButton-title-highlight"},p),r.createElement("mark",{className:"DocSearch-Hit-AskAIButton-title-query"},String(t.query||""))))))}var nu=["onAskAiToggle"];function ru(e){var t=e.onAskAiToggle,n=F(e,nu),u=r.useMemo((function(){return n.state.collections[2]}),[n.state]);return r.useEffect((function(){u&&0!==u.items.length||t(!0)}),[u,t]),r.createElement("div",{className:"DocSearch-Dropdown-Container DocSearch-Conversation-History"},r.createElement(Xr,h({},n,{key:u.source.sourceId,title:"",translations:n.translations,collection:u,renderIcon:function(){return r.createElement("div",{className:"DocSearch-Hit-icon"},r.createElement(Qt,null))},renderAction:function(e){var t=e.item;return r.createElement("div",{className:"DocSearch-Hit-action"},r.createElement("button",{type:"button",className:"DocSearch-Hit-action-button",onClick:function(e){e.preventDefault(),e.stopPropagation(),n.conversations.remove(t),n.refresh()}},r.createElement(Yt,null)))}})))}function uu(e){var t=e.translations,n=void 0===t?{}:t,u=n.titleText,a=void 0===u?"Unable to fetch results":u,i=n.helpText,o=void 0===i?"You might want to check your network connection.":i;return r.createElement("div",{className:"DocSearch-ErrorScreen"},r.createElement("div",{className:"DocSearch-Screen-Icon"},r.createElement(cn,null)),r.createElement("p",{className:"DocSearch-Title"},a),r.createElement("p",{className:"DocSearch-Help"},o))}function au(e){var t=e.translations,n=void 0===t?{}:t,u=e.suggestedQuestions,a=void 0===u?[]:u,i=e.selectSuggestedQuestion,o=n.newConversationTitle,s=void 0===o?"How can I help you today?":o,c=n.newConversationDescription,l=void 0===c?"I search through your documentation to help you find setup guides, feature details and troubleshooting tips, fast.":c;return r.createElement("div",{className:"DocSearch-NewConversationScreen"},r.createElement("h3",{className:"DocSearch-NewConversationScreen-Title"},s),r.createElement("p",{className:"DocSearch-NewConversationScreen-Description"},l),r.createElement("div",{className:"DocSearch-NewConversationScreen-SuggestedQuestions"},a.map((function(e){return r.createElement("button",{key:e.objectID,type:"button",className:"DocSearch-NewConversationScreen-SuggestedQuestion",onClick:function(){return i(e)}},e.question)}))))}var iu=["translations"];function ou(e){var t=e.translations,n=void 0===t?{}:t,u=F(e,iu),a=n.noResultsText,i=void 0===a?"No results found for":a,o=n.suggestedQueryText,s=void 0===o?"Try searching for":o,c=n.reportMissingResultsText,l=void 0===c?"Believe this query should return results?":c,d=n.reportMissingResultsLinkText,f=void 0===d?"Let us know.":d,p=u.state.context.searchSuggestions;return r.createElement("div",{className:"DocSearch-NoResults ".concat(u.canHandleAskAi?"DocSearch-NoResults--withAskAi":"")},r.createElement("div",{className:"DocSearch-Screen-Icon"},r.createElement(ln,null)),r.createElement("p",{className:"DocSearch-Title"},i,' "',r.createElement("strong",null,u.state.query),'"'),p&&p.length>0&&r.createElement("div",{className:"DocSearch-NoResults-Prefill-List"},r.createElement("p",{className:"DocSearch-Help"},s,":"),r.createElement("div",{className:"DocSearch-NoResults-Prefill-List-Items"},p.slice(0,3).reduce((function(e,t){return[].concat(k(e),[r.createElement("p",{key:t},r.createElement(Xt,{size:16}),r.createElement("button",{className:"DocSearch-Prefill",key:t,type:"button",onClick:function(){u.setQuery(t.toLowerCase()+" "),u.refresh(),u.inputRef.current.focus()}},t))])}),[]))),u.getMissingResultsUrl&&r.createElement("p",{className:"DocSearch-Help"},"".concat(l," "),r.createElement("a",{href:u.getMissingResultsUrl({query:u.state.query}),target:"_blank",rel:"noopener noreferrer"},f)))}function su(e,t,n){return e.reduce((function(e,r){var u=t(r);return e.hasOwnProperty(u)||(e[u]=[]),e[u].length<(n||5)&&e[u].push(r),e}),{})}function cu(e){return e}function lu(e){return 1===e.button||e.altKey||e.ctrlKey||e.metaKey||e.shiftKey}function du(){}var fu=/(|<\/mark>)/g,pu=RegExp(fu.source);function hu(e){var t,n,r=e;if(!r.__docsearch_parent&&!e._highlightResult)return e.hierarchy.lvl0;var u=r.__docsearch_parent?null===(t=r.__docsearch_parent)||void 0===t||null===(t=t._highlightResult)||void 0===t||null===(t=t.hierarchy)||void 0===t?void 0:t.lvl0:null===(n=e._highlightResult)||void 0===n||null===(n=n.hierarchy)||void 0===n?void 0:n.lvl0;return u?u.value&&pu.test(u.value)?u.value.replace(fu,""):u.value:e.hierarchy.lvl0}var vu=["translations"];function mu(e){var t=e.translations,n=void 0===t?{}:t,u=F(e,vu);return r.createElement("div",{className:"DocSearch-Dropdown-Container"},u.state.collections.map((function(e){if(0===e.items.length)return null;var t=hu(e.items[0]);return r.createElement(Xr,h({},u,{key:e.source.sourceId,translations:n,title:t,collection:e,renderIcon:function(t){var n,u=t.item,a=t.index;return r.createElement(r.Fragment,null,u.__docsearch_parent&&r.createElement("svg",{className:"DocSearch-Hit-Tree",viewBox:"0 0 24 54"},r.createElement("g",{stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"},u.__docsearch_parent!==(null===(n=e.items[a+1])||void 0===n?void 0:n.__docsearch_parent)?r.createElement("path",{d:"M8 6v21M20 27H8.3"}):r.createElement("path",{d:"M8 6v42M20 27H8.3"}))),r.createElement("div",{className:"DocSearch-Hit-icon"},r.createElement(rn,{type:u.type})))},renderAction:function(){return r.createElement("div",{className:"DocSearch-Hit-action"},r.createElement(tn,null))}}))})),u.resultsFooterComponent&&r.createElement("section",{className:"DocSearch-HitsFooter"},r.createElement(u.resultsFooterComponent,{state:u.state})))}var Du=["translations"];function yu(e){var t=e.translations,n=void 0===t?{}:t,u=F(e,Du),a=n.recentSearchesTitle,i=void 0===a?"Recent":a,o=n.saveRecentSearchButtonTitle,s=void 0===o?"Save this search":o,c=n.removeRecentSearchButtonTitle,l=void 0===c?"Remove this search from history":c,d=n.favoriteSearchesTitle,f=void 0===d?"Favorite":d,p=n.removeFavoriteSearchButtonTitle,v=void 0===p?"Remove this search from favorites":p,m=n.recentConversationsTitle,D=void 0===m?"Recent conversations":m,y=n.removeRecentConversationButtonTitle,g=void 0===y?"Remove this conversation from history":y;return r.createElement("div",{className:"DocSearch-Dropdown-Container"},r.createElement(Xr,h({},u,{title:i,collection:u.state.collections[0],renderIcon:function(){return r.createElement("div",{className:"DocSearch-Hit-icon"},r.createElement(Gt,null))},renderAction:function(e){var t=e.item;return r.createElement(r.Fragment,null,r.createElement("div",{className:"DocSearch-Hit-action"},r.createElement("button",{className:"DocSearch-Hit-action-button",title:s,type:"submit",onClick:function(e){e.preventDefault(),e.stopPropagation(),u.favoriteSearches.add(t),u.recentSearches.remove(t),u.refresh()}},r.createElement(on,null))),r.createElement("div",{className:"DocSearch-Hit-action"},r.createElement("button",{className:"DocSearch-Hit-action-button",title:l,type:"submit",onClick:function(e){e.preventDefault(),e.stopPropagation(),u.recentSearches.remove(t),u.refresh()}},r.createElement(Yt,null))))}})),r.createElement(Xr,h({},u,{title:f,collection:u.state.collections[1],renderIcon:function(){return r.createElement("div",{className:"DocSearch-Hit-icon"},r.createElement(on,null))},renderAction:function(e){var t=e.item;return r.createElement("div",{className:"DocSearch-Hit-action"},r.createElement("button",{className:"DocSearch-Hit-action-button",title:v,type:"submit",onClick:function(e){e.preventDefault(),e.stopPropagation(),u.favoriteSearches.remove(t),u.refresh()}},r.createElement(Yt,null)))}})),r.createElement(Xr,h({},u,{title:D,collection:u.state.collections[2],renderIcon:function(){return r.createElement("div",{className:"DocSearch-Hit-icon"},r.createElement(Qt,null))},renderAction:function(e){var t=e.item;return r.createElement("div",{className:"DocSearch-Hit-action"},r.createElement("button",{className:"DocSearch-Hit-action-button",title:g,type:"submit",onClick:function(e){e.preventDefault(),e.stopPropagation(),u.conversations.remove(t),u.refresh()}},r.createElement(Yt,null)))}})))}var gu=["translations"],Fu=r.memo((function(e){var t,n=e.translations,u=void 0===n?{}:n,a=F(e,gu);return a.canHandleAskAi&&a.isAskAiActive&&"conversation-history"===a.askAiState?r.createElement(ru,a):a.canHandleAskAi&&a.isAskAiActive&&"new-conversation"===a.askAiState?r.createElement(au,{translations:null==u?void 0:u.newConversation,selectSuggestedQuestion:a.selectSuggestedQuestion,suggestedQuestions:a.suggestedQuestions}):a.isAskAiActive&&a.canHandleAskAi?r.createElement(Ur,h({},a,{messages:a.messages,status:a.status,askAiError:a.askAiError,translations:null==u?void 0:u.askAiScreen,agentStudio:a.agentStudio})):"error"===(null===(t=a.state)||void 0===t?void 0:t.status)?r.createElement(uu,{translations:null==u?void 0:u.errorScreen}):a.state.query?a.hasCollections||a.canHandleAskAi?r.createElement(r.Fragment,null,r.createElement(mu,h({},a,{translations:null==u?void 0:u.resultsScreen})),a.canHandleAskAi&&1===a.state.collections.length&&r.createElement(ou,h({},a,{translations:null==u?void 0:u.noResultsScreen}))):r.createElement(ou,h({},a,{translations:null==u?void 0:u.noResultsScreen})):r.createElement(yu,h({},a,{hasCollections:a.hasCollections,translations:null==u?void 0:u.startScreen}))}),(function(e,t){return"loading"===t.state.status||"stalled"===t.state.status}));function Eu(e){var t=e.size,n=void 0===t?20:t,u=e.color,a=void 0===u?"currentColor":u;return r.createElement("svg",{width:n,height:n,className:"DocSearch-Back-Icon",viewBox:"0 0 24 24",fill:"none",stroke:a,strokeWidth:"1.6",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true"},r.createElement("path",{d:"m12 19-7-7 7-7"}),r.createElement("path",{d:"M19 12H5"}))}var bu=["children","className","onClick"],Cu=r.createContext({open:!1,setOpen:function(e){}});function Au(e){var t=e.children,n=A(r.useState(!1),2),u=n[0],a=n[1],i=r.useRef(null);return r.useEffect((function(){function e(e){var t;null!==(t=i.current)&&void 0!==t&&t.contains(e.target)||a(!1)}return u&&window.addEventListener("click",e),function(){window.removeEventListener("click",e)}}),[u]),r.createElement(Cu.Provider,{value:{open:u,setOpen:a}},r.createElement("div",{ref:i,className:"DocSearch-Menu"},t))}function ku(e){var t=e.heading,n=e.shimmer,u=void 0!==n&&n;return r.createElement("span",{className:"DocSearch-Modal-heading".concat(u?" shimmer":"")},t)}Au.Trigger=function(e){var t=e.children,n=e.className,u=void 0===n?"":n,a=e.disabled,i=r.useContext(Cu),o=i.open,s=i.setOpen;return r.createElement("button",{type:"button",className:"DocSearch-Menu-trigger ".concat(u).concat(a?" disabled":""),"aria-disabled":a,onClick:function(){a||s(!o)}},t)},Au.Content=function(e){var t=e.children,n=r.useContext(Cu).open;return r.createElement("div",{className:"DocSearch-Menu-content".concat(n?" open":"")},t)},Au.Item=function(e){var t=e.children,n=e.className,u=void 0===n?"":n,a=e.onClick,i=F(e,bu),o=r.useContext(Cu).setOpen;return r.createElement("button",h({type:"button",className:"DocSearch-Menu-item ".concat(u),onClick:function(e){a&&(a(e),o(!1))}},i),t)};var wu=["translations","askAiState","onAskAiToggle","setAskAiState"];function _u(e){var t=e.translations,n=void 0===t?{}:t,u=e.askAiState,a=e.onAskAiToggle,i=e.setAskAiState,o=F(e,wu),s=n.clearButtonTitle,c=void 0===s?"Clear":s,l=n.clearButtonAriaLabel,d=void 0===l?"Clear the query":l,f=n.closeButtonText,p=void 0===f?"Close":f,v=n.closeButtonAriaLabel,m=void 0===v?"Close":v,D=n.searchInputLabel,y=void 0===D?"Search":D,E=n.backToKeywordSearchButtonText,b=void 0===E?"Back to keyword search":E,C=n.backToKeywordSearchButtonAriaLabel,A=void 0===C?"Back to keyword search":C,k=n.placeholderTextAskAiStreaming,w=void 0===k?"Answering...":k,_=n.newConversationPlaceholder,S=void 0===_?"Ask a question":_,x=n.conversationHistoryTitle,B=void 0===x?"My conversation history":x,I=n.startNewConversationText,O=void 0===I?"Start a new conversation":I,T=n.viewConversationHistoryText,P=void 0===T?"Conversation history":T,j=n.threadDepthErrorPlaceholder,N=void 0===j?"Conversation limit reached":j,z=o.getFormProps({inputElement:o.inputRef.current}).onReset;r.useEffect((function(){o.autoFocus&&o.inputRef.current&&o.inputRef.current.focus()}),[o.autoFocus,o.inputRef]),r.useEffect((function(){o.isFromSelection&&o.inputRef.current&&o.inputRef.current.select()}),[o.isFromSelection,o.inputRef]);var R=r.useMemo((function(){var e=o.state.collections[2];return!!e&&e.items.length>0}),[o.state.collections]),M=o.getInputProps({inputElement:o.inputRef.current,autoFocus:o.autoFocus,maxLength:512}),Z=new Set(["ArrowUp","ArrowDown","Enter"]),L=M.onKeyDown,$=M.onChange,q="streaming"===o.askAiStatus||"submitted"===o.askAiStatus,U="stalled"===o.state.status,V=o.isAskAiActive&&"conversation-history"!==u,H=o.isThreadDepthError||!1,K=o.placeholder;"new-conversation"===u&&(K=S),H&&o.isAskAiActive&&(K=N);var W=null;q&&(W=w),"conversation-history"===u&&(W=B),r.useEffect((function(){"streaming"!==o.askAiStatus&&"submitted"!==o.askAiStatus&&o.inputRef.current&&o.inputRef.current.focus()}),[o.askAiStatus,o.inputRef]);var J=g(g({},M),{},{enterKeyHint:o.isAskAiActive?"enter":"search",onKeyDown:function(e){if(o.isAskAiActive&&Z.has(e.key))return"Enter"===e.key&&!q&&o.state.query&&o.onAskAgain(o.state.query),e.preventDefault(),void e.stopPropagation();null==L||L(e)},onChange:function(e){if(o.isAskAiActive)return o.setQuery(e.currentTarget.value),e.preventDefault(),void e.stopPropagation();null==$||$(e)},disabled:q||H&&o.isAskAiActive}),Q=r.useCallback((function(){if(!H)return"conversation-history"===u?(a(!0),void i("initial")):void a(!1);o.onNewConversation()}),[u,H,a,i,o]);return r.createElement(r.Fragment,null,r.createElement("form",{className:"DocSearch-Form",onSubmit:function(e){e.preventDefault()},onReset:z},o.isAskAiActive?r.createElement(r.Fragment,null,r.createElement("button",{type:"button",tabIndex:0,className:"DocSearch-Action DocSearch-AskAi-Return",title:b,"aria-label":A,onClick:Q},r.createElement(Eu,null))):r.createElement(r.Fragment,null,U&&r.createElement("div",{className:"DocSearch-LoadingIndicator"},r.createElement(Jt,null)),!U&&r.createElement("label",h({className:"DocSearch-MagnifierLabel"},o.getLabelProps()),r.createElement(Xt,null),r.createElement("span",{className:"DocSearch-VisuallyHiddenForAccessibility"},y))),W&&r.createElement(ku,{heading:W,shimmer:q}),r.createElement("input",h({className:"DocSearch-Input",ref:o.inputRef},J,{placeholder:K,hidden:Boolean(W)})),r.createElement("div",{className:"DocSearch-Actions"},r.createElement("button",{className:"DocSearch-Clear",type:"reset","aria-label":d,hidden:!o.state.query,tabIndex:o.state.query?0:-1,"aria-hidden":o.state.query?"false":"true"},c),o.state.query&&r.createElement("div",{className:"DocSearch-Divider"}),q&&r.createElement(r.Fragment,null,r.createElement("button",{type:"button",className:"DocSearch-Action DocSearch-StopStreaming",onClick:o.onStopAskAiStreaming},r.createElement(sn,null)),r.createElement("div",{className:"DocSearch-Divider"})),V&&r.createElement(r.Fragment,null,r.createElement(Au,null,r.createElement(Au.Trigger,{className:"DocSearch-Action"},r.createElement(dn,null)),r.createElement(Au.Content,null,r.createElement(Au.Item,{onClick:o.onNewConversation},r.createElement(pn,null),O),R&&r.createElement(Au.Item,{onClick:o.onViewConversationHistory},r.createElement(fn,null),P))),r.createElement("div",{className:"DocSearch-Divider"})),r.createElement("button",{type:"button",title:p,className:"DocSearch-Action DocSearch-Close","aria-label":m,onClick:o.onClose},r.createElement(Yt,null)))))}function Su(){if("undefined"!=typeof window&&window.localStorage){var e=[];for(var t in window.localStorage)if(t.includes("__DOCSEARCH_")){var n=window.localStorage[t];e.push({key:t,size:n.length+t.length})}e.sort((function(e,t){return t.size-e.size}));for(var r=Math.ceil(e.length/2),u=0;u-1&&a.splice(i,1),a.unshift(n),a=a.slice(0,r),u.setItem(a)},remove:function(e){a=a.filter((function(t){return t.objectID!==e.objectID})),u.setItem(a)},getAll:function(){return a}}}var Ou,Tu="vercel.ai.error",Pu=Symbol.for(Tu),ju=class e extends Error{constructor({name:e,message:t,cause:n}){super(t),this[Ou]=!0,this.name=e,this.cause=n}static isInstance(t){return e.hasMarker(t,Tu)}static hasMarker(e,t){const n=Symbol.for(t);return null!=e&&"object"==typeof e&&n in e&&"boolean"==typeof e[n]&&!0===e[n]}};Ou=Pu;var Nu=ju;function zu(e){return null==e?"unknown error":"string"==typeof e?e:e instanceof Error?e.message:JSON.stringify(e)}var Ru,Mu="AI_InvalidArgumentError",Zu=`vercel.ai.error.${Mu}`,Lu=Symbol.for(Zu),$u=class extends Nu{constructor({message:e,cause:t,argument:n}){super({name:Mu,message:e,cause:t}),this[Ru]=!0,this.argument=n}static isInstance(e){return Nu.hasMarker(e,Zu)}};Ru=Lu;var qu,Uu="AI_JSONParseError",Vu=`vercel.ai.error.${Uu}`,Hu=Symbol.for(Vu),Ku=class extends Nu{constructor({text:e,cause:t}){super({name:Uu,message:`JSON parsing failed: Text: ${e}.\nError message: ${zu(t)}`,cause:t}),this[qu]=!0,this.text=e}static isInstance(e){return Nu.hasMarker(e,Vu)}};qu=Hu;var Wu,Ju="AI_TypeValidationError",Qu=`vercel.ai.error.${Ju}`,Gu=Symbol.for(Qu);Wu=Gu;var Yu=class e extends Nu{constructor({value:e,cause:t}){super({name:Ju,message:`Type validation failed: Value: ${JSON.stringify(e)}.\nError message: ${zu(t)}`,cause:t}),this[Wu]=!0,this.value=e}static isInstance(e){return Nu.hasMarker(e,Qu)}static wrap({value:t,cause:n}){return e.isInstance(n)&&n.value===t?n:new e({value:t,cause:n})}},Xu=function(){function e(t,n){var r;return s(this,e),(r=o(this,e,[t])).name="ParseError",r.type=n.type,r.field=n.field,r.value=n.value,r.line=n.line,r}return m(e,x(Error)),d(e)}();function ea(e){}var ta=function(){function e(){var t,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=n.onError,u=n.onRetry,a=n.onComment;return s(this,e),o(this,e,[{start:function(e){t=function(e){if("function"==typeof e)throw new TypeError("`callbacks` must be an object, got a function instead. Did you mean `{onEvent: fn}`?");var t,n=e.onEvent,r=void 0===n?ea:n,u=e.onError,a=void 0===u?ea:u,i=e.onRetry,o=void 0===i?ea:i,s=e.onComment,c="",l=!0,d="",p="";function h(e){if(""===e)return d.length>0&&r({id:t,event:p||void 0,data:d.endsWith("\n")?d.slice(0,-1):d}),t=void 0,d="",void(p="");if(e.startsWith(":"))s&&s(e.slice(e.startsWith(": ")?2:1));else{var n=e.indexOf(":");if(-1===n)v(e,"",e);else{var u=e.slice(0,n),a=" "===e[n+1]?2:1;v(u,e.slice(n+a),e)}}}function v(e,n,r){switch(e){case"event":p=n;break;case"data":d="".concat(d).concat(n,"\n");break;case"id":t=n.includes("\0")?void 0:n;break;case"retry":/^\d+$/.test(n)?o(parseInt(n,10)):a(new Xu('Invalid `retry` value: "'.concat(n,'"'),{type:"invalid-retry",value:n,line:r}));break;default:a(new Xu('Unknown field "'.concat(e.length>20?"".concat(e.slice(0,20),"\u2026"):e,'"'),{type:"unknown-field",field:e,value:n,line:r}))}}return{feed:function(e){var t,n=l?e.replace(/^\xEF\xBB\xBF/,""):e,r=function(e){for(var t=[],n="",r=0;r0&&void 0!==arguments[0]?arguments[0]:{}).consume&&h(c),l=!0,t=void 0,d="",p="",c=""}}}({onEvent:function(t){e.enqueue(t)},onError:function(t){"terminate"===r?e.error(t):"function"==typeof r&&r(t)},onRetry:u,onComment:a})},transform:function(e){t.feed(e)}}])}return m(e,x(TransformStream)),d(e)}();function na(e,t,n){var r;function u(n,r){var u,a,o;for(var s in Object.defineProperty(n,"_zod",{value:null!==(u=n._zod)&&void 0!==u?u:{},enumerable:!1}),null!==(a=(o=n._zod).traits)&&void 0!==a||(o.traits=new Set),n._zod.traits.add(e),t(n,r),i.prototype)s in n||Object.defineProperty(n,s,{value:i.prototype[s].bind(n)});n._zod.constr=i,n._zod.def=r}var a=function(e){function t(){return s(this,t),o(this,t,arguments)}return m(t,e),d(t)}(null!==(r=null==n?void 0:n.Parent)&&void 0!==r?r:Object);function i(e){var t,r,i=null!=n&&n.Parent?new a:this;u(i,e),null!==(t=(r=i._zod).deferred)&&void 0!==t||(r.deferred=[]);var o,s=f(i._zod.deferred);try{for(s.s();!(o=s.n()).done;)(0,o.value)()}catch(e){s.e(e)}finally{s.f()}return i}return Object.defineProperty(a,"name",{value:e}),Object.defineProperty(i,"init",{value:u}),Object.defineProperty(i,Symbol.hasInstance,{value:function(t){var r;return!!(null!=n&&n.Parent&&t instanceof n.Parent)||(null==t||null===(r=t._zod)||void 0===r||null===(r=r.traits)||void 0===r?void 0:r.has(e))}}),Object.defineProperty(i,"name",{value:e}),i}var ra=function(){function e(){return s(this,e),o(this,e,["Encountered Promise during synchronous parse. Use .parseAsync() instead."])}return m(e,x(Error)),d(e)}(),ua=function(){function e(t){var n;return s(this,e),(n=o(this,e,["Encountered unidirectional transform during encode: ".concat(t)])).name="ZodEncodeError",n}return m(e,x(Error)),d(e)}(),aa={};function ia(e){return aa}function oa(e){var t=Object.values(e).filter((function(e){return"number"==typeof e}));return Object.entries(e).filter((function(e){var n=A(e,2),r=n[0];return n[1],-1===t.indexOf(+r)})).map((function(e){var t=A(e,2);return t[0],t[1]}))}function sa(e,t){return"bigint"==typeof t?t.toString():t}function ca(e){return{get value(){var t=e();return Object.defineProperty(this,"value",{value:t}),t}}}function la(e){return null==e}function da(e){var t=e.startsWith("^")?1:0,n=e.endsWith("$")?e.length-1:e.length;return e.slice(t,n)}var fa=Symbol("evaluating");function pa(e,t,n){var r=void 0;Object.defineProperty(e,t,{get:function(){if(r!==fa)return void 0===r&&(r=fa,r=n()),r},set:function(n){Object.defineProperty(e,t,{value:n})},configurable:!0})}function ha(e,t,n){Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0})}function va(){for(var e={},t=arguments.length,n=new Array(t),r=0;r1&&void 0!==arguments[1]?arguments[1]:0;if(!0===e.aborted)return!0;for(var n=t;nu&&(t.inclusive?r.minimum=t.value:r.exclusiveMinimum=t.value)})),e._zod.check=function(r){(t.inclusive?r.value>=t.value:r.value>t.value)||r.issues.push({origin:n,code:"too_small",minimum:t.value,input:r.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}})),Fi=na("$ZodCheckMultipleOf",(function(e,t){mi.init(e,t),e._zod.onattach.push((function(e){var n,r;null!==(n=(r=e._zod.bag).multipleOf)&&void 0!==n||(r.multipleOf=t.value)})),e._zod.check=function(n){if(_(n.value)!==_(t.value))throw new Error("Cannot mix number and bigint in multiple_of check.");("bigint"==typeof n.value?n.value%t.value===BigInt(0):0===function(e,t){var n=(e.toString().split(".")[1]||"").length,r=t.toString(),u=(r.split(".")[1]||"").length;if(0===u&&/\d?e-\d?/.test(r)){var a=r.match(/\d?e-(\d?)/);null!=a&&a[1]&&(u=Number.parseInt(a[1]))}var i=n>u?n:u;return Number.parseInt(e.toFixed(i).replace(".",""))%Number.parseInt(t.toFixed(i).replace(".",""))/Math.pow(10,i)}(n.value,t.value))||n.issues.push({origin:_(n.value),code:"not_multiple_of",divisor:t.value,input:n.value,inst:e,continue:!t.abort})}})),Ei=na("$ZodCheckNumberFormat",(function(e,t){var n;mi.init(e,t),t.format=t.format||"float64";var r=null===(n=t.format)||void 0===n?void 0:n.includes("int"),u=r?"int":"number",a=A(wa[t.format],2),i=a[0],o=a[1];e._zod.onattach.push((function(e){var n=e._zod.bag;n.format=t.format,n.minimum=i,n.maximum=o,r&&(n.pattern=li)})),e._zod.check=function(n){var a=n.value;if(r){if(!Number.isInteger(a))return void n.issues.push({expected:u,format:t.format,code:"invalid_type",continue:!1,input:a,inst:e});if(!Number.isSafeInteger(a))return void(a>0?n.issues.push({input:a,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:u,continue:!t.abort}):n.issues.push({input:a,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:u,continue:!t.abort}))}ao&&n.issues.push({origin:"number",input:a,code:"too_big",maximum:o,inst:e})}})),bi=na("$ZodCheckMaxSize",(function(e,t){var n,r;mi.init(e,t),null!==(n=(r=e._zod.def).when)&&void 0!==n||(r.when=function(e){var t=e.value;return!la(t)&&void 0!==t.size}),e._zod.onattach.push((function(e){var n,r=null!==(n=e._zod.bag.maximum)&&void 0!==n?n:Number.POSITIVE_INFINITY;t.maximumr&&(e._zod.bag.minimum=t.minimum)})),e._zod.check=function(n){var r=n.value;r.size>=t.minimum||n.issues.push({origin:Ia(r),code:"too_small",minimum:t.minimum,inclusive:!0,input:r,inst:e,continue:!t.abort})}})),Ai=na("$ZodCheckSizeEquals",(function(e,t){var n,r;mi.init(e,t),null!==(n=(r=e._zod.def).when)&&void 0!==n||(r.when=function(e){var t=e.value;return!la(t)&&void 0!==t.size}),e._zod.onattach.push((function(e){var n=e._zod.bag;n.minimum=t.size,n.maximum=t.size,n.size=t.size})),e._zod.check=function(n){var r=n.value,u=r.size;if(u!==t.size){var a=u>t.size;n.issues.push(g(g({origin:Ia(r)},a?{code:"too_big",maximum:t.size}:{code:"too_small",minimum:t.size}),{},{inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort}))}}})),ki=na("$ZodCheckMaxLength",(function(e,t){var n,r;mi.init(e,t),null!==(n=(r=e._zod.def).when)&&void 0!==n||(r.when=function(e){var t=e.value;return!la(t)&&void 0!==t.length}),e._zod.onattach.push((function(e){var n,r=null!==(n=e._zod.bag.maximum)&&void 0!==n?n:Number.POSITIVE_INFINITY;t.maximumr&&(e._zod.bag.minimum=t.minimum)})),e._zod.check=function(n){var r=n.value;if(!(r.length>=t.minimum)){var u=Oa(r);n.issues.push({origin:u,code:"too_small",minimum:t.minimum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}})),_i=na("$ZodCheckLengthEquals",(function(e,t){var n,r;mi.init(e,t),null!==(n=(r=e._zod.def).when)&&void 0!==n||(r.when=function(e){var t=e.value;return!la(t)&&void 0!==t.length}),e._zod.onattach.push((function(e){var n=e._zod.bag;n.minimum=t.length,n.maximum=t.length,n.length=t.length})),e._zod.check=function(n){var r=n.value,u=r.length;if(u!==t.length){var a=Oa(r),i=u>t.length;n.issues.push(g(g({origin:a},i?{code:"too_big",maximum:t.length}:{code:"too_small",minimum:t.length}),{},{inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort}))}}})),Si=na("$ZodCheckStringFormat",(function(e,t){var n,r,u,a;mi.init(e,t),e._zod.onattach.push((function(e){var n,r=e._zod.bag;r.format=t.format,t.pattern&&(null!==(n=r.patterns)&&void 0!==n||(r.patterns=new Set),r.patterns.add(t.pattern))})),t.pattern?null!==(n=(u=e._zod).check)&&void 0!==n||(u.check=function(n){t.pattern.lastIndex=0,t.pattern.test(n.value)||n.issues.push(g(g({origin:"string",code:"invalid_format",format:t.format,input:n.value},t.pattern?{pattern:t.pattern.toString()}:{}),{},{inst:e,continue:!t.abort}))}):null!==(r=(a=e._zod).check)&&void 0!==r||(a.check=function(){})})),xi=na("$ZodCheckRegex",(function(e,t){Si.init(e,t),e._zod.check=function(n){t.pattern.lastIndex=0,t.pattern.test(n.value)||n.issues.push({origin:"string",code:"invalid_format",format:"regex",input:n.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}})),Bi=na("$ZodCheckLowerCase",(function(e,t){var n;null!==(n=t.pattern)&&void 0!==n||(t.pattern=hi),Si.init(e,t)})),Ii=na("$ZodCheckUpperCase",(function(e,t){var n;null!==(n=t.pattern)&&void 0!==n||(t.pattern=vi),Si.init(e,t)})),Oi=na("$ZodCheckIncludes",(function(e,t){mi.init(e,t);var n=Ca(t.includes),r=new RegExp("number"==typeof t.position?"^.{".concat(t.position,"}").concat(n):n);t.pattern=r,e._zod.onattach.push((function(e){var t,n=e._zod.bag;null!==(t=n.patterns)&&void 0!==t||(n.patterns=new Set),n.patterns.add(r)})),e._zod.check=function(n){n.value.includes(t.includes,t.position)||n.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:t.includes,input:n.value,inst:e,continue:!t.abort})}})),Ti=na("$ZodCheckStartsWith",(function(e,t){var n;mi.init(e,t);var r=new RegExp("^".concat(Ca(t.prefix),".*"));null!==(n=t.pattern)&&void 0!==n||(t.pattern=r),e._zod.onattach.push((function(e){var t,n=e._zod.bag;null!==(t=n.patterns)&&void 0!==t||(n.patterns=new Set),n.patterns.add(r)})),e._zod.check=function(n){n.value.startsWith(t.prefix)||n.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:t.prefix,input:n.value,inst:e,continue:!t.abort})}})),Pi=na("$ZodCheckEndsWith",(function(e,t){var n;mi.init(e,t);var r=new RegExp(".*".concat(Ca(t.suffix),"$"));null!==(n=t.pattern)&&void 0!==n||(t.pattern=r),e._zod.onattach.push((function(e){var t,n=e._zod.bag;null!==(t=n.patterns)&&void 0!==t||(n.patterns=new Set),n.patterns.add(r)})),e._zod.check=function(n){n.value.endsWith(t.suffix)||n.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:t.suffix,input:n.value,inst:e,continue:!t.abort})}}));function ji(e,t,n){var r;e.issues.length&&(r=t.issues).push.apply(r,k(Sa(n,e.issues)))}var Ni=na("$ZodCheckProperty",(function(e,t){mi.init(e,t),e._zod.check=function(e){var n=t.schema._zod.run({value:e.value[t.property],issues:[]},{});if(n instanceof Promise)return n.then((function(n){return ji(n,e,t.property)}));ji(n,e,t.property)}})),zi=na("$ZodCheckMimeType",(function(e,t){mi.init(e,t);var n=new Set(t.mime);e._zod.onattach.push((function(e){e._zod.bag.mime=t.mime})),e._zod.check=function(r){n.has(r.value.type)||r.issues.push({code:"invalid_value",values:t.mime,input:r.value.type,inst:e,continue:!t.abort})}})),Ri=na("$ZodCheckOverwrite",(function(e,t){mi.init(e,t),e._zod.check=function(e){e.value=t.tx(e.value)}})),Mi=d((function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];s(this,e),this.content=[],this.indent=0,this&&(this.args=t)}),[{key:"indented",value:function(e){this.indent+=1,e(this),this.indent-=1}},{key:"write",value:function(e){var t=this;if("function"==typeof e)return e(this,{execution:"sync"}),void e(this,{execution:"async"});var n,r=e.split("\n").filter((function(e){return e})),u=Math.min.apply(Math,k(r.map((function(e){return e.length-e.trimStart().length})))),a=r.map((function(e){return e.slice(u)})).map((function(e){return" ".repeat(2*t.indent)+e})),i=f(a);try{for(i.s();!(n=i.n()).done;){var o=n.value;this.content.push(o)}}catch(e){i.e(e)}finally{i.f()}}},{key:"compile",value:function(){var e,t=Function,n=null==this?void 0:this.args,r=k((null!==(e=null==this?void 0:this.content)&&void 0!==e?e:[""]).map((function(e){return" ".concat(e)})));return c(t,k(n).concat([r.join("\n")]))}}]),Zi={major:4,minor:1,patch:12},Li=na("$ZodType",(function(e,t){var n,r;null!=e||(e={}),e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=Zi;var u=k(null!==(n=e._zod.def.checks)&&void 0!==n?n:[]);e._zod.traits.has("$ZodCheck")&&u.unshift(e);var a,o=f(u);try{for(o.s();!(a=o.n()).done;){var s,c=f(a.value._zod.onattach);try{for(c.s();!(s=c.n()).done;)(0,s.value)(e)}catch(e){c.e(e)}finally{c.f()}}}catch(e){o.e(e)}finally{o.f()}if(0===u.length){var l,d;null!==(l=(r=e._zod).deferred)&&void 0!==l||(r.deferred=[]),null===(d=e._zod.deferred)||void 0===d||d.push((function(){e._zod.run=e._zod.parse}))}else{var p=function(e,t,n){var r,u,a=_a(e),o=f(t);try{var s=function(){var t=u.value;if(t._zod.def.when){if(!t._zod.def.when(e))return 0}else if(a)return 0;var o=e.issues.length,s=t._zod.check(e);if(s instanceof Promise&&!1===(null==n?void 0:n.async))throw new ra;if(r||s instanceof Promise)r=(null!=r?r:Promise.resolve()).then(i(E().m((function t(){return E().w((function(t){for(;;)switch(t.n){case 0:return t.n=1,s;case 1:if(e.issues.length!==o){t.n=2;break}return t.a(2);case 2:a||(a=_a(e,o));case 3:return t.a(2)}}),t)}))));else{if(e.issues.length===o)return 0;a||(a=_a(e,o))}};for(o.s();!(u=o.n()).done;)s()}catch(e){o.e(e)}finally{o.f()}return r?r.then((function(){return e})):e},h=function(t,n,r){if(_a(t))return t.aborted=!0,t;var a=p(n,u,r);if(a instanceof Promise){if(!1===r.async)throw new ra;return a.then((function(t){return e._zod.parse(t,r)}))}return e._zod.parse(a,r)};e._zod.run=function(t,n){if(n.skipChecks)return e._zod.parse(t,n);if("backward"===n.direction){var r=e._zod.parse({value:t.value,issues:[]},g(g({},n),{},{skipChecks:!0}));return r instanceof Promise?r.then((function(e){return h(e,t,n)})):h(r,t,n)}var a=e._zod.parse(t,n);if(a instanceof Promise){if(!1===n.async)throw new ra;return a.then((function(e){return p(e,u,n)}))}return p(a,u,n)}}e["~standard"]={validate:function(t){try{var n,r=Za(e,t);return r.success?{value:r.data}:{issues:null===(n=r.error)||void 0===n?void 0:n.issues}}catch(n){return $a(e,t).then((function(e){var t;return e.success?{value:e.data}:{issues:null===(t=e.error)||void 0===t?void 0:t.issues}}))}},vendor:"zod",version:1}})),$i=na("$ZodString",(function(e,t){var n,r,u;Li.init(e,t),e._zod.pattern=null!==(n=k(null!==(r=null==e||null===(u=e._zod.bag)||void 0===u?void 0:u.patterns)&&void 0!==r?r:[]).pop())&&void 0!==n?n:function(e){var t,n,r=e?"[\\s\\S]{".concat(null!==(t=null==e?void 0:e.minimum)&&void 0!==t?t:0,",").concat(null!==(n=null==e?void 0:e.maximum)&&void 0!==n?n:"","}"):"[\\s\\S]*";return new RegExp("^".concat(r,"$"))}(e._zod.bag),e._zod.parse=function(n,r){if(t.coerce)try{n.value=String(n.value)}catch(r){}return"string"==typeof n.value||n.issues.push({expected:"string",code:"invalid_type",input:n.value,inst:e}),n}})),qi=na("$ZodStringFormat",(function(e,t){Si.init(e,t),$i.init(e,t)})),Ui=na("$ZodGUID",(function(e,t){var n;null!==(n=t.pattern)&&void 0!==n||(t.pattern=Qa),qi.init(e,t)})),Vi=na("$ZodUUID",(function(e,t){var n;if(t.version){var r,u={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[t.version];if(void 0===u)throw new Error('Invalid UUID version: "'.concat(t.version,'"'));null!==(r=t.pattern)&&void 0!==r||(t.pattern=Ga(u))}else null!==(n=t.pattern)&&void 0!==n||(t.pattern=Ga());qi.init(e,t)})),Hi=na("$ZodEmail",(function(e,t){var n;null!==(n=t.pattern)&&void 0!==n||(t.pattern=Ya),qi.init(e,t)})),Ki=na("$ZodURL",(function(e,t){qi.init(e,t),e._zod.check=function(n){try{var r=n.value.trim(),u=new URL(r);return t.hostname&&(t.hostname.lastIndex=0,t.hostname.test(u.hostname)||n.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:ai.source,input:n.value,inst:e,continue:!t.abort})),t.protocol&&(t.protocol.lastIndex=0,t.protocol.test(u.protocol.endsWith(":")?u.protocol.slice(0,-1):u.protocol)||n.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:t.protocol.source,input:n.value,inst:e,continue:!t.abort})),void(t.normalize?n.value=u.href:n.value=r)}catch(r){n.issues.push({code:"invalid_format",format:"url",input:n.value,inst:e,continue:!t.abort})}}})),Wi=na("$ZodEmoji",(function(e,t){var n;null!==(n=t.pattern)&&void 0!==n||(t.pattern=new RegExp("^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$","u")),qi.init(e,t)})),Ji=na("$ZodNanoID",(function(e,t){var n;null!==(n=t.pattern)&&void 0!==n||(t.pattern=Wa),qi.init(e,t)})),Qi=na("$ZodCUID",(function(e,t){var n;null!==(n=t.pattern)&&void 0!==n||(t.pattern=qa),qi.init(e,t)})),Gi=na("$ZodCUID2",(function(e,t){var n;null!==(n=t.pattern)&&void 0!==n||(t.pattern=Ua),qi.init(e,t)})),Yi=na("$ZodULID",(function(e,t){var n;null!==(n=t.pattern)&&void 0!==n||(t.pattern=Va),qi.init(e,t)})),Xi=na("$ZodXID",(function(e,t){var n;null!==(n=t.pattern)&&void 0!==n||(t.pattern=Ha),qi.init(e,t)})),eo=na("$ZodKSUID",(function(e,t){var n;null!==(n=t.pattern)&&void 0!==n||(t.pattern=Ka),qi.init(e,t)})),to=na("$ZodISODateTime",(function(e,t){var n;null!==(n=t.pattern)&&void 0!==n||(t.pattern=function(e){var t=ci({precision:e.precision}),n=["Z"];e.local&&n.push(""),e.offset&&n.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)");var r="".concat(t,"(?:").concat(n.join("|"),")");return new RegExp("^".concat(oi,"T(?:").concat(r,")$"))}(t)),qi.init(e,t)})),no=na("$ZodISODate",(function(e,t){var n;null!==(n=t.pattern)&&void 0!==n||(t.pattern=si),qi.init(e,t)})),ro=na("$ZodISOTime",(function(e,t){var n;null!==(n=t.pattern)&&void 0!==n||(t.pattern=new RegExp("^".concat(ci(t),"$"))),qi.init(e,t)})),uo=na("$ZodISODuration",(function(e,t){var n;null!==(n=t.pattern)&&void 0!==n||(t.pattern=Ja),qi.init(e,t)})),ao=na("$ZodIPv4",(function(e,t){var n;null!==(n=t.pattern)&&void 0!==n||(t.pattern=Xa),qi.init(e,t),e._zod.onattach.push((function(e){e._zod.bag.format="ipv4"}))})),io=na("$ZodIPv6",(function(e,t){var n;null!==(n=t.pattern)&&void 0!==n||(t.pattern=ei),qi.init(e,t),e._zod.onattach.push((function(e){e._zod.bag.format="ipv6"})),e._zod.check=function(n){try{new URL("http://[".concat(n.value,"]"))}catch(r){n.issues.push({code:"invalid_format",format:"ipv6",input:n.value,inst:e,continue:!t.abort})}}})),oo=na("$ZodCIDRv4",(function(e,t){var n;null!==(n=t.pattern)&&void 0!==n||(t.pattern=ti),qi.init(e,t)})),so=na("$ZodCIDRv6",(function(e,t){var n;null!==(n=t.pattern)&&void 0!==n||(t.pattern=ni),qi.init(e,t),e._zod.check=function(n){var r=n.value.split("/");try{if(2!==r.length)throw new Error;var u=A(r,2),a=u[0],i=u[1];if(!i)throw new Error;var o=Number(i);if("".concat(o)!==i)throw new Error;if(o<0||o>128)throw new Error;new URL("http://[".concat(a,"]"))}catch(r){n.issues.push({code:"invalid_format",format:"cidrv6",input:n.value,inst:e,continue:!t.abort})}}}));function co(e){if(""===e)return!0;if(e.length%4!=0)return!1;try{return atob(e),!0}catch(e){return!1}}var lo=na("$ZodBase64",(function(e,t){var n;null!==(n=t.pattern)&&void 0!==n||(t.pattern=ri),qi.init(e,t),e._zod.onattach.push((function(e){e._zod.bag.contentEncoding="base64"})),e._zod.check=function(n){co(n.value)||n.issues.push({code:"invalid_format",format:"base64",input:n.value,inst:e,continue:!t.abort})}})),fo=na("$ZodBase64URL",(function(e,t){var n;null!==(n=t.pattern)&&void 0!==n||(t.pattern=ui),qi.init(e,t),e._zod.onattach.push((function(e){e._zod.bag.contentEncoding="base64url"})),e._zod.check=function(n){(function(e){if(!ui.test(e))return!1;var t=e.replace(/[-_]/g,(function(e){return"-"===e?"+":"/"}));return co(t.padEnd(4*Math.ceil(t.length/4),"="))})(n.value)||n.issues.push({code:"invalid_format",format:"base64url",input:n.value,inst:e,continue:!t.abort})}})),po=na("$ZodE164",(function(e,t){var n;null!==(n=t.pattern)&&void 0!==n||(t.pattern=ii),qi.init(e,t)})),ho=na("$ZodJWT",(function(e,t){qi.init(e,t),e._zod.check=function(n){(function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;try{var n=e.split(".");if(3!==n.length)return!1;var r=A(n,1)[0];if(!r)return!1;var u=JSON.parse(atob(r));return!("typ"in u&&"JWT"!==(null==u?void 0:u.typ)||!u.alg||t&&(!("alg"in u)||u.alg!==t))}catch(e){return!1}})(n.value,t.alg)||n.issues.push({code:"invalid_format",format:"jwt",input:n.value,inst:e,continue:!t.abort})}})),vo=na("$ZodNumber",(function(e,t){var n;Li.init(e,t),e._zod.pattern=null!==(n=e._zod.bag.pattern)&&void 0!==n?n:di,e._zod.parse=function(n,r){if(t.coerce)try{n.value=Number(n.value)}catch(e){}var u=n.value;if("number"==typeof u&&!Number.isNaN(u)&&Number.isFinite(u))return n;var a="number"==typeof u?Number.isNaN(u)?"NaN":Number.isFinite(u)?void 0:"Infinity":void 0;return n.issues.push(g({expected:"number",code:"invalid_type",input:u,inst:e},a?{received:a}:{})),n}})),mo=na("$ZodNumber",(function(e,t){Ei.init(e,t),vo.init(e,t)})),Do=na("$ZodBoolean",(function(e,t){Li.init(e,t),e._zod.pattern=fi,e._zod.parse=function(n,r){if(t.coerce)try{n.value=Boolean(n.value)}catch(e){}var u=n.value;return"boolean"==typeof u||n.issues.push({expected:"boolean",code:"invalid_type",input:u,inst:e}),n}})),yo=na("$ZodNull",(function(e,t){Li.init(e,t),e._zod.pattern=pi,e._zod.values=new Set([null]),e._zod.parse=function(t,n){var r=t.value;return null===r||t.issues.push({expected:"null",code:"invalid_type",input:r,inst:e}),t}})),go=na("$ZodUnknown",(function(e,t){Li.init(e,t),e._zod.parse=function(e){return e}})),Fo=na("$ZodNever",(function(e,t){Li.init(e,t),e._zod.parse=function(t,n){return t.issues.push({expected:"never",code:"invalid_type",input:t.value,inst:e}),t}}));function Eo(e,t,n){var r;e.issues.length&&(r=t.issues).push.apply(r,k(Sa(n,e.issues))),t.value[n]=e.value}var bo=na("$ZodArray",(function(e,t){Li.init(e,t),e._zod.parse=function(n,r){var u=n.value;if(!Array.isArray(u))return n.issues.push({expected:"array",code:"invalid_type",input:u,inst:e}),n;n.value=Array(u.length);for(var a=[],i=function(e){var i=u[e],o=t.element._zod.run({value:i,issues:[]},r);o instanceof Promise?a.push(o.then((function(t){return Eo(t,n,e)}))):Eo(o,n,e)},o=0;o ({\n ...iss,\n path: iss.path ? [").concat(h,", ...iss.path] : [").concat(h,"]\n })));\n }\n \n \n if (").concat(p,".value === undefined) {\n if (").concat(h," in input) {\n newResult[").concat(h,"] = undefined;\n }\n } else {\n newResult[").concat(h,"] = ").concat(p,".value;\n }\n \n "))}}catch(e){l.e(e)}finally{l.f()}t.write("payload.value = newResult;"),t.write("return payload;");var v=t.compile();return function(t,n){return v(e,t,n)}}(t.shape)),l=n(l,d),c?ko([],p,l,d,r,e):l):u(l,d):(l.issues.push({expected:"object",code:"invalid_type",input:p,inst:e}),l)}}));function So(e,t,n,r){var u,a=f(e);try{for(a.s();!(u=a.n()).done;){var i=u.value;if(0===i.issues.length)return t.value=i.value,t}}catch(e){a.e(e)}finally{a.f()}var o=e.filter((function(e){return!_a(e)}));return 1===o.length?(t.value=o[0].value,o[0]):(t.issues.push({code:"invalid_union",input:t.value,inst:n,errors:e.map((function(e){return e.issues.map((function(e){return Ba(e,r,ia())}))}))}),t)}var xo=na("$ZodUnion",(function(e,t){Li.init(e,t),pa(e._zod,"optin",(function(){return t.options.some((function(e){return"optional"===e._zod.optin}))?"optional":void 0})),pa(e._zod,"optout",(function(){return t.options.some((function(e){return"optional"===e._zod.optout}))?"optional":void 0})),pa(e._zod,"values",(function(){if(t.options.every((function(e){return e._zod.values})))return new Set(t.options.flatMap((function(e){return Array.from(e._zod.values)})))})),pa(e._zod,"pattern",(function(){if(t.options.every((function(e){return e._zod.pattern}))){var e=t.options.map((function(e){return e._zod.pattern}));return new RegExp("^(".concat(e.map((function(e){return da(e.source)})).join("|"),")$"))}}));var n=1===t.options.length,r=t.options[0]._zod.run;e._zod.parse=function(u,a){if(n)return r(u,a);var i,o=!1,s=[],c=f(t.options);try{for(c.s();!(i=c.n()).done;){var l=i.value._zod.run({value:u.value,issues:[]},a);if(l instanceof Promise)s.push(l),o=!0;else{if(0===l.issues.length)return l;s.push(l)}}}catch(e){c.e(e)}finally{c.f()}return o?Promise.all(s).then((function(t){return So(t,u,e,a)})):So(s,u,e,a)}})),Bo=na("$ZodDiscriminatedUnion",(function(e,t){xo.init(e,t);var n=e._zod.parse;pa(e._zod,"propValues",(function(){var e,n={},r=f(t.options);try{for(r.s();!(e=r.n()).done;){var u=e.value,a=u._zod.propValues;if(!a||0===Object.keys(a).length)throw new Error('Invalid discriminated union option at index "'.concat(t.options.indexOf(u),'"'));for(var i=0,o=Object.entries(a);i0&&n.issues.push({code:"unrecognized_keys",input:u,inst:e,keys:s})}else{n.value={};var p,h=f(Reflect.ownKeys(u));try{var v=function(){var i=p.value;if("__proto__"===i)return 0;var o=t.keyType._zod.run({value:i,issues:[]},r);if(o instanceof Promise)throw new Error("Async schemas not supported in object keys currently");if(o.issues.length)return n.issues.push({code:"invalid_key",origin:"record",issues:o.issues.map((function(e){return Ba(e,r,ia())})),input:i,path:[i],inst:e}),n.value[o.value]=o.value,0;var s,c=t.valueType._zod.run({value:u[i],issues:[]},r);c instanceof Promise?a.push(c.then((function(e){var t;e.issues.length&&(t=n.issues).push.apply(t,k(Sa(i,e.issues))),n.value[o.value]=e.value}))):(c.issues.length&&(s=n.issues).push.apply(s,k(Sa(i,c.issues))),n.value[o.value]=c.value)};for(h.s();!(p=h.n()).done;)v()}catch(e){h.e(e)}finally{h.f()}}return a.length?Promise.all(a).then((function(){return n})):n}})),jo=na("$ZodEnum",(function(e,t){Li.init(e,t);var n=oa(t.entries),r=new Set(n);e._zod.values=r,e._zod.pattern=new RegExp("^(".concat(n.filter((function(e){return ba.has(_(e))})).map((function(e){return"string"==typeof e?Ca(e):e.toString()})).join("|"),")$")),e._zod.parse=function(t,u){var a=t.value;return r.has(a)||t.issues.push({code:"invalid_value",values:n,input:a,inst:e}),t}})),No=na("$ZodLiteral",(function(e,t){if(Li.init(e,t),0===t.values.length)throw new Error("Cannot create literal schema with no valid values");e._zod.values=new Set(t.values),e._zod.pattern=new RegExp("^(".concat(t.values.map((function(e){return"string"==typeof e?Ca(e):e?Ca(e.toString()):String(e)})).join("|"),")$")),e._zod.parse=function(n,r){var u=n.value;return e._zod.values.has(u)||n.issues.push({code:"invalid_value",values:t.values,input:u,inst:e}),n}})),zo=na("$ZodTransform",(function(e,t){Li.init(e,t),e._zod.parse=function(n,r){if("backward"===r.direction)throw new ua(e.constructor.name);var u=t.transform(n.value,n);if(r.async)return(u instanceof Promise?u:Promise.resolve(u)).then((function(e){return n.value=e,n}));if(u instanceof Promise)throw new ra;return n.value=u,n}}));function Ro(e,t){return e.issues.length&&void 0===t?{issues:[],value:void 0}:e}var Mo=na("$ZodOptional",(function(e,t){Li.init(e,t),e._zod.optin="optional",e._zod.optout="optional",pa(e._zod,"values",(function(){return t.innerType._zod.values?new Set([].concat(k(t.innerType._zod.values),[void 0])):void 0})),pa(e._zod,"pattern",(function(){var e=t.innerType._zod.pattern;return e?new RegExp("^(".concat(da(e.source),")?$")):void 0})),e._zod.parse=function(e,n){if("optional"===t.innerType._zod.optin){var r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then((function(t){return Ro(t,e.value)})):Ro(r,e.value)}return void 0===e.value?e:t.innerType._zod.run(e,n)}})),Zo=na("$ZodNullable",(function(e,t){Li.init(e,t),pa(e._zod,"optin",(function(){return t.innerType._zod.optin})),pa(e._zod,"optout",(function(){return t.innerType._zod.optout})),pa(e._zod,"pattern",(function(){var e=t.innerType._zod.pattern;return e?new RegExp("^(".concat(da(e.source),"|null)$")):void 0})),pa(e._zod,"values",(function(){return t.innerType._zod.values?new Set([].concat(k(t.innerType._zod.values),[null])):void 0})),e._zod.parse=function(e,n){return null===e.value?e:t.innerType._zod.run(e,n)}})),Lo=na("$ZodDefault",(function(e,t){Li.init(e,t),e._zod.optin="optional",pa(e._zod,"values",(function(){return t.innerType._zod.values})),e._zod.parse=function(e,n){if("backward"===n.direction)return t.innerType._zod.run(e,n);if(void 0===e.value)return e.value=t.defaultValue,e;var r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then((function(e){return $o(e,t)})):$o(r,t)}}));function $o(e,t){return void 0===e.value&&(e.value=t.defaultValue),e}var qo=na("$ZodPrefault",(function(e,t){Li.init(e,t),e._zod.optin="optional",pa(e._zod,"values",(function(){return t.innerType._zod.values})),e._zod.parse=function(e,n){return"backward"===n.direction||void 0===e.value&&(e.value=t.defaultValue),t.innerType._zod.run(e,n)}})),Uo=na("$ZodNonOptional",(function(e,t){Li.init(e,t),pa(e._zod,"values",(function(){var e=t.innerType._zod.values;return e?new Set(k(e).filter((function(e){return void 0!==e}))):void 0})),e._zod.parse=function(n,r){var u=t.innerType._zod.run(n,r);return u instanceof Promise?u.then((function(t){return Vo(t,e)})):Vo(u,e)}}));function Vo(e,t){return e.issues.length||void 0!==e.value||e.issues.push({code:"invalid_type",expected:"nonoptional",input:e.value,inst:t}),e}var Ho=na("$ZodCatch",(function(e,t){Li.init(e,t),pa(e._zod,"optin",(function(){return t.innerType._zod.optin})),pa(e._zod,"optout",(function(){return t.innerType._zod.optout})),pa(e._zod,"values",(function(){return t.innerType._zod.values})),e._zod.parse=function(e,n){if("backward"===n.direction)return t.innerType._zod.run(e,n);var r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then((function(r){return e.value=r.value,r.issues.length&&(e.value=t.catchValue(g(g({},e),{},{error:{issues:r.issues.map((function(e){return Ba(e,n,ia())}))},input:e.value})),e.issues=[]),e})):(e.value=r.value,r.issues.length&&(e.value=t.catchValue(g(g({},e),{},{error:{issues:r.issues.map((function(e){return Ba(e,n,ia())}))},input:e.value})),e.issues=[]),e)}})),Ko=na("$ZodPipe",(function(e,t){Li.init(e,t),pa(e._zod,"values",(function(){return t.in._zod.values})),pa(e._zod,"optin",(function(){return t.in._zod.optin})),pa(e._zod,"optout",(function(){return t.out._zod.optout})),pa(e._zod,"propValues",(function(){return t.in._zod.propValues})),e._zod.parse=function(e,n){if("backward"===n.direction){var r=t.out._zod.run(e,n);return r instanceof Promise?r.then((function(e){return Wo(e,t.in,n)})):Wo(r,t.in,n)}var u=t.in._zod.run(e,n);return u instanceof Promise?u.then((function(e){return Wo(e,t.out,n)})):Wo(u,t.out,n)}}));function Wo(e,t,n){return e.issues.length?(e.aborted=!0,e):t._zod.run({value:e.value,issues:e.issues},n)}var Jo=na("$ZodReadonly",(function(e,t){Li.init(e,t),pa(e._zod,"propValues",(function(){return t.innerType._zod.propValues})),pa(e._zod,"values",(function(){return t.innerType._zod.values})),pa(e._zod,"optin",(function(){return t.innerType._zod.optin})),pa(e._zod,"optout",(function(){return t.innerType._zod.optout})),e._zod.parse=function(e,n){if("backward"===n.direction)return t.innerType._zod.run(e,n);var r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(Qo):Qo(r)}}));function Qo(e){return e.value=Object.freeze(e.value),e}var Go=na("$ZodLazy",(function(e,t){Li.init(e,t),pa(e._zod,"innerType",(function(){return t.getter()})),pa(e._zod,"pattern",(function(){return e._zod.innerType._zod.pattern})),pa(e._zod,"propValues",(function(){return e._zod.innerType._zod.propValues})),pa(e._zod,"optin",(function(){var t;return null!==(t=e._zod.innerType._zod.optin)&&void 0!==t?t:void 0})),pa(e._zod,"optout",(function(){var t;return null!==(t=e._zod.innerType._zod.optout)&&void 0!==t?t:void 0})),e._zod.parse=function(t,n){return e._zod.innerType._zod.run(t,n)}})),Yo=na("$ZodCustom",(function(e,t){mi.init(e,t),Li.init(e,t),e._zod.parse=function(e,t){return e},e._zod.check=function(n){var r=n.value,u=t.fn(r);if(u instanceof Promise)return u.then((function(t){return Xo(t,n,r,e)}));Xo(u,n,r,e)}}));function Xo(e,t,n,r){if(!e){var u,a={code:"custom",input:n,inst:r,path:k(null!==(u=r._zod.def.path)&&void 0!==u?u:[]),continue:!r._zod.def.abort};r._zod.def.params&&(a.params=r._zod.def.params),t.issues.push(Ta(a))}}var es=d((function e(){s(this,e),this._map=new WeakMap,this._idmap=new Map}),[{key:"add",value:function(e){var t=arguments.length<=1?void 0:arguments[1];if(this._map.set(e,t),t&&"object"===_(t)&&"id"in t){if(this._idmap.has(t.id))throw new Error("ID ".concat(t.id," already exists in the registry"));this._idmap.set(t.id,e)}return this}},{key:"clear",value:function(){return this._map=new WeakMap,this._idmap=new Map,this}},{key:"remove",value:function(e){var t=this._map.get(e);return t&&"object"===_(t)&&"id"in t&&this._idmap.delete(t.id),this._map.delete(e),this}},{key:"get",value:function(e){var t=e._zod.parent;if(t){var n,r=g({},null!==(n=this.get(t))&&void 0!==n?n:{});delete r.id;var u=g(g({},r),this._map.get(e));return Object.keys(u).length?u:void 0}return this._map.get(e)}},{key:"has",value:function(e){return this._map.has(e)}}]);var ts=new es;function ns(e,t){return new e(g({type:"string",format:"guid",check:"string_format",abort:!1},ka(t)))}function rs(e,t){return new yi(g(g({check:"less_than"},ka(t)),{},{value:e,inclusive:!1}))}function us(e,t){return new yi(g(g({check:"less_than"},ka(t)),{},{value:e,inclusive:!0}))}function as(e,t){return new gi(g(g({check:"greater_than"},ka(t)),{},{value:e,inclusive:!1}))}function is(e,t){return new gi(g(g({check:"greater_than"},ka(t)),{},{value:e,inclusive:!0}))}function os(e,t){return new Fi(g(g({check:"multiple_of"},ka(t)),{},{value:e}))}function ss(e,t){return new ki(g(g({check:"max_length"},ka(t)),{},{maximum:e}))}function cs(e,t){return new wi(g(g({check:"min_length"},ka(t)),{},{minimum:e}))}function ls(e,t){return new _i(g(g({check:"length_equals"},ka(t)),{},{length:e}))}function ds(e,t){return new xi(g(g({check:"string_format",format:"regex"},ka(t)),{},{pattern:e}))}function fs(e){return new Bi(g({check:"string_format",format:"lowercase"},ka(e)))}function ps(e){return new Ii(g({check:"string_format",format:"uppercase"},ka(e)))}function hs(e,t){return new Oi(g(g({check:"string_format",format:"includes"},ka(t)),{},{includes:e}))}function vs(e,t){return new Ti(g(g({check:"string_format",format:"starts_with"},ka(t)),{},{prefix:e}))}function ms(e,t){return new Pi(g(g({check:"string_format",format:"ends_with"},ka(t)),{},{suffix:e}))}function Ds(e){return new Ri({check:"overwrite",tx:e})}function ys(e){return Ds((function(t){return t.normalize(e)}))}function gs(){return Ds((function(e){return e.trim()}))}function Fs(){return Ds((function(e){return e.toLowerCase()}))}function Es(){return Ds((function(e){return e.toUpperCase()}))}var bs=d((function e(t){var n,r,u,a,i;s(this,e),this.counter=0,this.metadataRegistry=null!==(n=null==t?void 0:t.metadata)&&void 0!==n?n:ts,this.target=null!==(r=null==t?void 0:t.target)&&void 0!==r?r:"draft-2020-12",this.unrepresentable=null!==(u=null==t?void 0:t.unrepresentable)&&void 0!==u?u:"throw",this.override=null!==(a=null==t?void 0:t.override)&&void 0!==a?a:function(){},this.io=null!==(i=null==t?void 0:t.io)&&void 0!==i?i:"output",this.seen=new Map}),[{key:"process",value:function(e){var t,n,r,u,a=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{path:[],schemaPath:[]},o=e._zod.def,s=this.seen.get(e);if(s)return s.count++,i.schemaPath.includes(e)&&(s.cycle=i.path),s.schema;var c={schema:{},count:1,cycle:void 0,path:i.path};this.seen.set(e,c);var l=null===(t=(n=e._zod).toJSONSchema)||void 0===t?void 0:t.call(n);if(l)c.schema=l;else{var d=g(g({},i),{},{schemaPath:[].concat(k(i.schemaPath),[e]),path:i.path}),p=e._zod.parent;if(p)c.ref=p,this.process(p,d),this.seen.get(p).isParent=!0;else{var h=c.schema;switch(o.type){case"string":var v=h;v.type="string";var m,D=e._zod.bag,y=D.minimum,F=D.maximum,E=D.format,b=D.patterns,C=D.contentEncoding;if("number"==typeof y&&(v.minLength=y),"number"==typeof F&&(v.maxLength=F),E&&(v.format=null!==(m={guid:"uuid",url:"uri",datetime:"date-time",json_string:"json-string",regex:""}[E])&&void 0!==m?m:E,""===v.format&&delete v.format),C&&(v.contentEncoding=C),b&&b.size>0){var A=k(b);1===A.length?v.pattern=A[0].source:A.length>1&&(c.schema.allOf=k(A.map((function(e){return g(g({},"draft-7"===a.target||"draft-4"===a.target||"openapi-3.0"===a.target?{type:"string"}:{}),{},{pattern:e.source})}))))}break;case"number":var w=h,S=e._zod.bag,x=S.minimum,B=S.maximum,I=S.format,O=S.multipleOf,T=S.exclusiveMaximum,P=S.exclusiveMinimum;"string"==typeof I&&I.includes("int")?w.type="integer":w.type="number","number"==typeof P&&("draft-4"===this.target||"openapi-3.0"===this.target?(w.minimum=P,w.exclusiveMinimum=!0):w.exclusiveMinimum=P),"number"==typeof x&&(w.minimum=x,"number"==typeof P&&"draft-4"!==this.target&&(P>=x?delete w.minimum:delete w.exclusiveMinimum)),"number"==typeof T&&("draft-4"===this.target||"openapi-3.0"===this.target?(w.maximum=T,w.exclusiveMaximum=!0):w.exclusiveMaximum=T),"number"==typeof B&&(w.maximum=B,"number"==typeof T&&"draft-4"!==this.target&&(T<=B?delete w.maximum:delete w.exclusiveMaximum)),"number"==typeof O&&(w.multipleOf=O);break;case"boolean":case"success":h.type="boolean";break;case"bigint":if("throw"===this.unrepresentable)throw new Error("BigInt cannot be represented in JSON Schema");break;case"symbol":if("throw"===this.unrepresentable)throw new Error("Symbols cannot be represented in JSON Schema");break;case"null":"openapi-3.0"===this.target?(h.type="string",h.nullable=!0,h.enum=[null]):h.type="null";break;case"any":case"unknown":break;case"undefined":if("throw"===this.unrepresentable)throw new Error("Undefined cannot be represented in JSON Schema");break;case"void":if("throw"===this.unrepresentable)throw new Error("Void cannot be represented in JSON Schema");break;case"never":h.not={};break;case"date":if("throw"===this.unrepresentable)throw new Error("Date cannot be represented in JSON Schema");break;case"array":var j=h,N=e._zod.bag,z=N.minimum,R=N.maximum;"number"==typeof z&&(j.minItems=z),"number"==typeof R&&(j.maxItems=R),j.type="array",j.items=this.process(o.element,g(g({},d),{},{path:[].concat(k(d.path),["items"])}));break;case"object":var M,Z=h;Z.type="object",Z.properties={};var L=o.shape;for(var $ in L)Z.properties[$]=this.process(L[$],g(g({},d),{},{path:[].concat(k(d.path),["properties",$])}));var q=new Set(Object.keys(L)),U=new Set(k(q).filter((function(e){var t=o.shape[e]._zod;return"input"===a.io?void 0===t.optin:void 0===t.optout})));U.size>0&&(Z.required=Array.from(U)),"never"===(null===(M=o.catchall)||void 0===M?void 0:M._zod.def.type)?Z.additionalProperties=!1:o.catchall?o.catchall&&(Z.additionalProperties=this.process(o.catchall,g(g({},d),{},{path:[].concat(k(d.path),["additionalProperties"])}))):"output"===this.io&&(Z.additionalProperties=!1);break;case"union":var V=h,H=o.options.map((function(e,t){return a.process(e,g(g({},d),{},{path:[].concat(k(d.path),["anyOf",t])}))}));V.anyOf=H;break;case"intersection":var K=h,W=this.process(o.left,g(g({},d),{},{path:[].concat(k(d.path),["allOf",0])})),J=this.process(o.right,g(g({},d),{},{path:[].concat(k(d.path),["allOf",1])})),Q=function(e){return"allOf"in e&&1===Object.keys(e).length},G=[].concat(k(Q(W)?W.allOf:[W]),k(Q(J)?J.allOf:[J]));K.allOf=G;break;case"tuple":var Y=h;Y.type="array";var X="draft-2020-12"===this.target?"prefixItems":"items",ee="draft-2020-12"===this.target||"openapi-3.0"===this.target?"items":"additionalItems",te=o.items.map((function(e,t){return a.process(e,g(g({},d),{},{path:[].concat(k(d.path),[X,t])}))})),ne=o.rest?this.process(o.rest,g(g({},d),{},{path:[].concat(k(d.path),[ee],k("openapi-3.0"===this.target?[o.items.length]:[]))})):null;"draft-2020-12"===this.target?(Y.prefixItems=te,ne&&(Y.items=ne)):"openapi-3.0"===this.target?(Y.items={anyOf:te},ne&&Y.items.anyOf.push(ne),Y.minItems=te.length,ne||(Y.maxItems=te.length)):(Y.items=te,ne&&(Y.additionalItems=ne));var re=e._zod.bag,ue=re.minimum,ae=re.maximum;"number"==typeof ue&&(Y.minItems=ue),"number"==typeof ae&&(Y.maxItems=ae);break;case"record":var ie=h;ie.type="object","draft-7"!==this.target&&"draft-2020-12"!==this.target||(ie.propertyNames=this.process(o.keyType,g(g({},d),{},{path:[].concat(k(d.path),["propertyNames"])}))),ie.additionalProperties=this.process(o.valueType,g(g({},d),{},{path:[].concat(k(d.path),["additionalProperties"])}));break;case"map":if("throw"===this.unrepresentable)throw new Error("Map cannot be represented in JSON Schema");break;case"set":if("throw"===this.unrepresentable)throw new Error("Set cannot be represented in JSON Schema");break;case"enum":var oe=h,se=oa(o.entries);se.every((function(e){return"number"==typeof e}))&&(oe.type="number"),se.every((function(e){return"string"==typeof e}))&&(oe.type="string"),oe.enum=se;break;case"literal":var ce,le=h,de=[],fe=f(o.values);try{for(fe.s();!(ce=fe.n()).done;){var pe=ce.value;if(void 0===pe){if("throw"===this.unrepresentable)throw new Error("Literal `undefined` cannot be represented in JSON Schema")}else if("bigint"==typeof pe){if("throw"===this.unrepresentable)throw new Error("BigInt literals cannot be represented in JSON Schema");de.push(Number(pe))}else de.push(pe)}}catch(e){fe.e(e)}finally{fe.f()}if(0===de.length);else if(1===de.length){var he=de[0];le.type=null===he?"null":_(he),"draft-4"===this.target||"openapi-3.0"===this.target?le.enum=[he]:le.const=he}else de.every((function(e){return"number"==typeof e}))&&(le.type="number"),de.every((function(e){return"string"==typeof e}))&&(le.type="string"),de.every((function(e){return"boolean"==typeof e}))&&(le.type="string"),de.every((function(e){return null===e}))&&(le.type="null"),le.enum=de;break;case"file":var ve=h,me={type:"string",format:"binary",contentEncoding:"binary"},De=e._zod.bag,ye=De.minimum,ge=De.maximum,Fe=De.mime;void 0!==ye&&(me.minLength=ye),void 0!==ge&&(me.maxLength=ge),Fe?1===Fe.length?(me.contentMediaType=Fe[0],Object.assign(ve,me)):ve.anyOf=Fe.map((function(e){return g(g({},me),{},{contentMediaType:e})})):Object.assign(ve,me);break;case"transform":if("throw"===this.unrepresentable)throw new Error("Transforms cannot be represented in JSON Schema");break;case"nullable":var Ee=this.process(o.innerType,d);"openapi-3.0"===this.target?(c.ref=o.innerType,h.nullable=!0):h.anyOf=[Ee,{type:"null"}];break;case"nonoptional":case"promise":case"optional":this.process(o.innerType,d),c.ref=o.innerType;break;case"default":this.process(o.innerType,d),c.ref=o.innerType,h.default=JSON.parse(JSON.stringify(o.defaultValue));break;case"prefault":this.process(o.innerType,d),c.ref=o.innerType,"input"===this.io&&(h._prefault=JSON.parse(JSON.stringify(o.defaultValue)));break;case"catch":var be;this.process(o.innerType,d),c.ref=o.innerType;try{be=o.catchValue(void 0)}catch(e){throw new Error("Dynamic catch values are not supported in JSON Schema")}h.default=be;break;case"nan":if("throw"===this.unrepresentable)throw new Error("NaN cannot be represented in JSON Schema");break;case"template_literal":var Ce=h,Ae=e._zod.pattern;if(!Ae)throw new Error("Pattern not found in template literal");Ce.type="string",Ce.pattern=Ae.source;break;case"pipe":var ke="input"===this.io?"transform"===o.in._zod.def.type?o.out:o.in:o.out;this.process(ke,d),c.ref=ke;break;case"readonly":this.process(o.innerType,d),c.ref=o.innerType,h.readOnly=!0;break;case"lazy":var we=e._zod.innerType;this.process(we,d),c.ref=we;break;case"custom":if("throw"===this.unrepresentable)throw new Error("Custom types cannot be represented in JSON Schema");break;case"function":if("throw"===this.unrepresentable)throw new Error("Function types cannot be represented in JSON Schema")}}}var _e=this.metadataRegistry.get(e);return _e&&Object.assign(c.schema,_e),"input"===this.io&&Cs(e)&&(delete c.schema.examples,delete c.schema.default),"input"===this.io&&c.schema._prefault&&(null!==(r=(u=c.schema).default)&&void 0!==r||(u.default=c.schema._prefault)),delete c.schema._prefault,this.seen.get(e).schema}},{key:"emit",value:function(e,t){var n,r,u,a,i,o,s=this,c={cycles:null!==(n=null==t?void 0:t.cycles)&&void 0!==n?n:"ref",reused:null!==(r=null==t?void 0:t.reused)&&void 0!==r?r:"inline",external:null!==(u=null==t?void 0:t.external)&&void 0!==u?u:void 0},l=this.seen.get(e);if(!l)throw new Error("Unprocessed schema. This is a bug in Zod.");var d=function(e){if(!e[1].schema.$ref){var t=e[1],n=function(e){var t,n="draft-2020-12"===s.target?"$defs":"definitions";if(c.external){var r,u,a,i,o=null===(r=c.external.registry.get(e[0]))||void 0===r?void 0:r.id,d=null!==(u=c.external.uri)&&void 0!==u?u:function(e){return e};if(o)return{ref:d(o)};var f=null!==(a=null!==(i=e[1].defId)&&void 0!==i?i:e[1].schema.id)&&void 0!==a?a:"schema".concat(s.counter++);return e[1].defId=f,{defId:f,ref:"".concat(d("__shared"),"#/").concat(n,"/").concat(f)}}if(e[1]===l)return{ref:"#"};var p="".concat("#","/").concat(n,"/"),h=null!==(t=e[1].schema.id)&&void 0!==t?t:"__schema".concat(s.counter++);return{defId:h,ref:p+h}}(e),r=n.ref,u=n.defId;t.def=g({},t.schema),u&&(t.defId=u);var a=t.schema;for(var i in a)delete a[i];a.$ref=r}};if("throw"===c.cycles){var p,h=f(this.seen.entries());try{for(h.s();!(p=h.n()).done;){var v,m=p.value[1];if(m.cycle)throw new Error("Cycle detected: "+"#/".concat(null===(v=m.cycle)||void 0===v?void 0:v.join("/"),"/")+'\n\nSet the `cycles` parameter to `"ref"` to resolve cyclical schemas with defs.')}}catch(e){h.e(e)}finally{h.f()}}var D,y=f(this.seen.entries());try{for(y.s();!(D=y.n()).done;){var F,E=D.value,b=E[1];if(e!==E[0]){if(c.external){var C,A=null===(C=c.external.registry.get(E[0]))||void 0===C?void 0:C.id;if(e!==E[0]&&A){d(E);continue}}((null===(F=this.metadataRegistry.get(E[0]))||void 0===F?void 0:F.id)||b.cycle||b.count>1&&"ref"===c.reused)&&d(E)}else d(E)}}catch(e){y.e(e)}finally{y.f()}var w,_=function(e,t){var n,r,u=s.seen.get(e),a=null!==(n=u.def)&&void 0!==n?n:u.schema,i=g({},a);if(null!==u.ref){var o=u.ref;if(u.ref=null,o){_(o,t);var c,l=s.seen.get(o).schema;!l.$ref||"draft-7"!==t.target&&"draft-4"!==t.target&&"openapi-3.0"!==t.target?(Object.assign(a,l),Object.assign(a,i)):(a.allOf=null!==(c=a.allOf)&&void 0!==c?c:[],a.allOf.push(l))}u.isParent||s.override({zodSchema:e,jsonSchema:a,path:null!==(r=u.path)&&void 0!==r?r:[]})}},S=f(k(this.seen.entries()).reverse());try{for(S.s();!(w=S.n()).done;){var x=w.value;_(x[0],{target:this.target})}}catch(e){S.e(e)}finally{S.f()}var B={};if("draft-2020-12"===this.target?B.$schema="https://json-schema.org/draft/2020-12/schema":"draft-7"===this.target?B.$schema="http://json-schema.org/draft-07/schema#":"draft-4"===this.target?B.$schema="http://json-schema.org/draft-04/schema#":"openapi-3.0"===this.target||console.warn("Invalid target: ".concat(this.target)),null!==(a=c.external)&&void 0!==a&&a.uri){var I,O=null===(I=c.external.registry.get(e))||void 0===I?void 0:I.id;if(!O)throw new Error("Schema is missing an `id` property");B.$id=c.external.uri(O)}Object.assign(B,l.def);var T,P=null!==(i=null===(o=c.external)||void 0===o?void 0:o.defs)&&void 0!==i?i:{},j=f(this.seen.entries());try{for(j.s();!(T=j.n()).done;){var N=T.value[1];N.def&&N.defId&&(P[N.defId]=N.def)}}catch(e){j.e(e)}finally{j.f()}c.external||Object.keys(P).length>0&&("draft-2020-12"===this.target?B.$defs=P:B.definitions=P);try{return JSON.parse(JSON.stringify(B))}catch(e){throw new Error("Error converting schema to JSON.")}}}]);function Cs(e,t){var n=null!=t?t:{seen:new Set};if(n.seen.has(e))return!1;n.seen.add(e);var r=e._zod.def;switch(r.type){case"string":case"number":case"bigint":case"boolean":case"date":case"symbol":case"undefined":case"null":case"any":case"unknown":case"never":case"void":case"literal":case"enum":case"nan":case"file":case"template_literal":case"custom":case"success":case"catch":case"function":return!1;case"array":return Cs(r.element,n);case"object":for(var u in r.shape)if(Cs(r.shape[u],n))return!0;return!1;case"union":var a,i=f(r.options);try{for(i.s();!(a=i.n()).done;)if(Cs(a.value,n))return!0}catch(e){i.e(e)}finally{i.f()}return!1;case"intersection":return Cs(r.left,n)||Cs(r.right,n);case"tuple":var o,s=f(r.items);try{for(s.s();!(o=s.n()).done;)if(Cs(o.value,n))return!0}catch(e){s.e(e)}finally{s.f()}return!(!r.rest||!Cs(r.rest,n));case"record":case"map":return Cs(r.keyType,n)||Cs(r.valueType,n);case"set":return Cs(r.valueType,n);case"promise":case"optional":case"nonoptional":case"nullable":case"readonly":case"default":case"prefault":return Cs(r.innerType,n);case"lazy":return Cs(r.getter(),n);case"transform":return!0;case"pipe":return Cs(r.in,n)||Cs(r.out,n)}throw new Error("Unknown schema type: ".concat(r.type))}var As=Object.freeze({__proto__:null,endsWith:ms,gt:as,gte:is,includes:hs,length:ls,lowercase:fs,lt:rs,lte:us,maxLength:ss,maxSize:function(e,t){return new bi(g(g({check:"max_size"},ka(t)),{},{maximum:e}))},mime:function(e,t){return new zi(g({check:"mime_type",mime:e},ka(t)))},minLength:cs,minSize:function(e,t){return new Ci(g(g({check:"min_size"},ka(t)),{},{minimum:e}))},multipleOf:os,negative:function(e){return rs(0,e)},nonnegative:function(e){return is(0,e)},nonpositive:function(e){return us(0,e)},normalize:ys,overwrite:Ds,positive:function(e){return as(0,e)},property:function(e,t,n){return new Ni(g({check:"property",property:e,schema:t},ka(n)))},regex:ds,size:function(e,t){return new Ai(g(g({check:"size_equals"},ka(t)),{},{size:e}))},startsWith:vs,toLowerCase:Fs,toUpperCase:Es,trim:gs,uppercase:ps}),ks=na("ZodISODateTime",(function(e,t){to.init(e,t),Ks.init(e,t)}));var ws=na("ZodISODate",(function(e,t){no.init(e,t),Ks.init(e,t)}));var _s=na("ZodISOTime",(function(e,t){ro.init(e,t),Ks.init(e,t)}));var Ss=na("ZodISODuration",(function(e,t){uo.init(e,t),Ks.init(e,t)}));var xs,Bs=na("ZodError",(function(e,t){ja.init(e,t),e.name="ZodError",Object.defineProperties(e,{format:{value:function(t){return function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(e){return e.message},n={_errors:[]},r=function(e){var u,a=f(e.issues);try{for(a.s();!(u=a.n()).done;){var i=u.value;if("invalid_union"===i.code&&i.errors.length)i.errors.map((function(e){return r({issues:e})}));else if("invalid_key"===i.code)r({issues:i.issues});else if("invalid_element"===i.code)r({issues:i.issues});else if(0===i.path.length)n._errors.push(t(i));else for(var o=n,s=0;s1&&void 0!==arguments[1]?arguments[1]:function(e){return e.message},r={},u=[],a=f(e.issues);try{for(a.s();!(t=a.n()).done;){var i=t.value;i.path.length>0?(r[i.path[0]]=r[i.path[0]]||[],r[i.path[0]].push(n(i))):u.push(n(i))}}catch(e){a.e(e)}finally{a.f()}return{formErrors:u,fieldErrors:r}}(e,t)}},addIssue:{value:function(t){e.issues.push(t),e.message=JSON.stringify(e.issues,sa,2)}},addIssues:{value:function(t){var n;(n=e.issues).push.apply(n,k(t)),e.message=JSON.stringify(e.issues,sa,2)}},isEmpty:{get:function(){return 0===e.issues.length}}})}),{Parent:Error}),Is=za(Bs),Os=Ra(Bs),Ts=Ma(Bs),Ps=La(Bs),js=(xs=Bs,function(e,t,n){var r=n?Object.assign(n,{direction:"backward"}):{direction:"backward"};return za(xs)(e,t,r)}),Ns=function(e){return function(t,n,r){return za(e)(t,n,r)}}(Bs),zs=function(e){return t=i(E().m((function t(n,r,u){var a;return E().w((function(t){for(;;)if(0===t.n)return a=u?Object.assign(u,{direction:"backward"}):{direction:"backward"},t.a(2,Ra(e)(n,r,a))}),t)}))),function(e,n,r){return t.apply(this,arguments)};var t}(Bs),Rs=function(e){return t=i(E().m((function t(n,r,u){return E().w((function(t){for(;;)if(0===t.n)return t.a(2,Ra(e)(n,r,u))}),t)}))),function(e,n,r){return t.apply(this,arguments)};var t}(Bs),Ms=function(e){return function(t,n,r){var u=r?Object.assign(r,{direction:"backward"}):{direction:"backward"};return Ma(e)(t,n,u)}}(Bs),Zs=function(e){return function(t,n,r){return Ma(e)(t,n,r)}}(Bs),Ls=function(e){return t=i(E().m((function t(n,r,u){var a;return E().w((function(t){for(;;)if(0===t.n)return a=u?Object.assign(u,{direction:"backward"}):{direction:"backward"},t.a(2,La(e)(n,r,a))}),t)}))),function(e,n,r){return t.apply(this,arguments)};var t}(Bs),$s=function(e){return t=i(E().m((function t(n,r,u){return E().w((function(t){for(;;)if(0===t.n)return t.a(2,La(e)(n,r,u))}),t)}))),function(e,n,r){return t.apply(this,arguments)};var t}(Bs),qs=na("ZodType",(function(e,t){return Li.init(e,t),e.def=t,e.type=t.type,Object.defineProperty(e,"_def",{value:t}),e.check=function(){for(var n,r=arguments.length,u=new Array(r),a=0;a1&&void 0!==arguments[1]?arguments[1]:{})}(t,n))},e.superRefine=function(t){return e.check(function(e){var t=function(e,t){var n=new mi(g({check:"custom"},ka(void 0)));return n._zod.check=e,n}((function(n){return n.addIssue=function(e){if("string"==typeof e)n.issues.push(Ta(e,n.value,t._zod.def));else{var r,u,a,i,o=e;o.fatal&&(o.continue=!1),null!==(r=o.code)&&void 0!==r||(o.code="custom"),null!==(u=o.input)&&void 0!==u||(o.input=n.value),null!==(a=o.inst)&&void 0!==a||(o.inst=t),null!==(i=o.continue)&&void 0!==i||(o.continue=!t._zod.def.abort),n.issues.push(Ta(o))}},e(n.value,n)}));return t}(t))},e.overwrite=function(t){return e.check(Ds(t))},e.optional=function(){return $c(e)},e.nullable=function(){return Uc(e)},e.nullish=function(){return $c(Uc(e))},e.nonoptional=function(t){return function(e,t){return new Kc(g({type:"nonoptional",innerType:e},ka(t)))}(e,t)},e.array=function(){return wc(e)},e.or=function(t){return Ic([e,t])},e.and=function(t){return new Tc({type:"intersection",left:e,right:t})},e.transform=function(t){return Qc(e,new Zc({type:"transform",transform:t}))},e.default=function(t){return n=t,new Vc({type:"default",innerType:e,get defaultValue(){return"function"==typeof n?n():Ea(n)}});var n},e.prefault=function(t){return n=t,new Hc({type:"prefault",innerType:e,get defaultValue(){return"function"==typeof n?n():Ea(n)}});var n},e.catch=function(t){return new Wc({type:"catch",innerType:e,catchValue:"function"==typeof(n=t)?n:function(){return n}});var n},e.pipe=function(t){return Qc(e,t)},e.readonly=function(){return new Xc({type:"readonly",innerType:e})},e.describe=function(t){var n=e.clone();return ts.add(n,{description:t}),n},Object.defineProperty(e,"description",{get:function(){var t;return null===(t=ts.get(e))||void 0===t?void 0:t.description},configurable:!0}),e.meta=function(){if(0===arguments.length)return ts.get(e);var t=e.clone();return ts.add(t,arguments.length<=0?void 0:arguments[0]),t},e.isOptional=function(){return e.safeParse(void 0).success},e.isNullable=function(){return e.safeParse(null).success},e})),Us=na("_ZodString",(function(e,t){var n,r,u;$i.init(e,t),qs.init(e,t);var a=e._zod.bag;e.format=null!==(n=a.format)&&void 0!==n?n:null,e.minLength=null!==(r=a.minimum)&&void 0!==r?r:null,e.maxLength=null!==(u=a.maximum)&&void 0!==u?u:null,e.regex=function(){return e.check(ds.apply(As,arguments))},e.includes=function(){return e.check(hs.apply(As,arguments))},e.startsWith=function(){return e.check(vs.apply(As,arguments))},e.endsWith=function(){return e.check(ms.apply(As,arguments))},e.min=function(){return e.check(cs.apply(As,arguments))},e.max=function(){return e.check(ss.apply(As,arguments))},e.length=function(){return e.check(ls.apply(As,arguments))},e.nonempty=function(){for(var t=arguments.length,n=new Array(t),r=0;r0)throw new Error("Object schemas containing refinements cannot be extended. Use `.safeExtend()` instead.");var r=va(e._zod.def,{get shape(){var n=g(g({},e._zod.def.shape),t);return ha(this,"shape",n),n},checks:[]});return Aa(e,r)}(e,t)},e.safeExtend=function(t){return function(e,t){if(!Fa(t))throw new Error("Invalid input to safeExtend: expected a plain object");var n=g(g({},e._zod.def),{},{get shape(){var n=g(g({},e._zod.def.shape),t);return ha(this,"shape",n),n},checks:e._zod.def.checks});return Aa(e,n)}(e,t)},e.merge=function(t){return function(e,t){var n=va(e._zod.def,{get shape(){var n=g(g({},e._zod.def.shape),t._zod.def.shape);return ha(this,"shape",n),n},get catchall(){return t._zod.def.catchall},checks:[]});return Aa(e,n)}(e,t)},e.pick=function(t){return function(e,t){var n=e._zod.def;return Aa(e,va(e._zod.def,{get shape(){var e={};for(var r in t){if(!(r in n.shape))throw new Error('Unrecognized key: "'.concat(r,'"'));t[r]&&(e[r]=n.shape[r])}return ha(this,"shape",e),e},checks:[]}))}(e,t)},e.omit=function(t){return function(e,t){var n=e._zod.def,r=va(e._zod.def,{get shape(){var r=g({},e._zod.def.shape);for(var u in t){if(!(u in n.shape))throw new Error('Unrecognized key: "'.concat(u,'"'));t[u]&&delete r[u]}return ha(this,"shape",r),r},checks:[]});return Aa(e,r)}(e,t)},e.partial=function(){return function(e,t,n){var r=va(t._zod.def,{get shape(){var r=t._zod.def.shape,u=g({},r);if(n)for(var a in n){if(!(a in r))throw new Error('Unrecognized key: "'.concat(a,'"'));n[a]&&(u[a]=e?new e({type:"optional",innerType:r[a]}):r[a])}else for(var i in r)u[i]=e?new e({type:"optional",innerType:r[i]}):r[i];return ha(this,"shape",u),u},checks:[]});return Aa(t,r)}(Lc,e,arguments.length<=0?void 0:arguments[0])},e.required=function(){return function(e,t,n){var r=va(t._zod.def,{get shape(){var r=t._zod.def.shape,u=g({},r);if(n)for(var a in n){if(!(a in u))throw new Error('Unrecognized key: "'.concat(a,'"'));n[a]&&(u[a]=new e({type:"nonoptional",innerType:r[a]}))}else for(var i in r)u[i]=new e({type:"nonoptional",innerType:r[i]});return ha(this,"shape",u),u},checks:[]});return Aa(t,r)}(Kc,e,arguments.length<=0?void 0:arguments[0])}}));function Sc(e,t){var n=g({type:"object",shape:null!=e?e:{}},ka(t));return new _c(n)}function xc(e,t){return new _c(g({type:"object",shape:e,catchall:Ac()},ka(t)))}var Bc=na("ZodUnion",(function(e,t){xo.init(e,t),qs.init(e,t),e.options=t.options}));function Ic(e,t){return new Bc(g({type:"union",options:e},ka(t)))}var Oc=na("ZodDiscriminatedUnion",(function(e,t){Bc.init(e,t),Bo.init(e,t)})),Tc=na("ZodIntersection",(function(e,t){Io.init(e,t),qs.init(e,t)})),Pc=na("ZodRecord",(function(e,t){Po.init(e,t),qs.init(e,t),e.keyType=t.keyType,e.valueType=t.valueType}));function jc(e,t,n){return new Pc(g({type:"record",keyType:e,valueType:t},ka(n)))}var Nc=na("ZodEnum",(function(e,t){jo.init(e,t),qs.init(e,t),e.enum=t.entries,e.options=Object.values(t.entries);var n=new Set(Object.keys(t.entries));e.extract=function(e,r){var u,a={},i=f(e);try{for(i.s();!(u=i.n()).done;){var o=u.value;if(!n.has(o))throw new Error("Key ".concat(o," not found in enum"));a[o]=t.entries[o]}}catch(e){i.e(e)}finally{i.f()}return new Nc(g(g(g({},t),{},{checks:[]},ka(r)),{},{entries:a}))},e.exclude=function(e,r){var u,a=g({},t.entries),i=f(e);try{for(i.s();!(u=i.n()).done;){var o=u.value;if(!n.has(o))throw new Error("Key ".concat(o," not found in enum"));delete a[o]}}catch(e){i.e(e)}finally{i.f()}return new Nc(g(g(g({},t),{},{checks:[]},ka(r)),{},{entries:a}))}}));function zc(e,t){var n=Array.isArray(e)?Object.fromEntries(e.map((function(e){return[e,e]}))):e;return new Nc(g({type:"enum",entries:n},ka(t)))}var Rc=na("ZodLiteral",(function(e,t){No.init(e,t),qs.init(e,t),e.values=new Set(t.values),Object.defineProperty(e,"value",{get:function(){if(t.values.length>1)throw new Error("This schema contains multiple valid literal values. Use `.values` instead.");return t.values[0]}})}));function Mc(e,t){return new Rc(g({type:"literal",values:Array.isArray(e)?e:[e]},ka(t)))}var Zc=na("ZodTransform",(function(e,t){zo.init(e,t),qs.init(e,t),e._zod.parse=function(n,r){if("backward"===r.direction)throw new ua(e.constructor.name);n.addIssue=function(r){if("string"==typeof r)n.issues.push(Ta(r,n.value,t));else{var u,a,i,o=r;o.fatal&&(o.continue=!1),null!==(u=o.code)&&void 0!==u||(o.code="custom"),null!==(a=o.input)&&void 0!==a||(o.input=n.value),null!==(i=o.inst)&&void 0!==i||(o.inst=e),n.issues.push(Ta(o))}};var u=t.transform(n.value,n);return u instanceof Promise?u.then((function(e){return n.value=e,n})):(n.value=u,n)}})),Lc=na("ZodOptional",(function(e,t){Mo.init(e,t),qs.init(e,t),e.unwrap=function(){return e._zod.def.innerType}}));function $c(e){return new Lc({type:"optional",innerType:e})}var qc=na("ZodNullable",(function(e,t){Zo.init(e,t),qs.init(e,t),e.unwrap=function(){return e._zod.def.innerType}}));function Uc(e){return new qc({type:"nullable",innerType:e})}var Vc=na("ZodDefault",(function(e,t){Lo.init(e,t),qs.init(e,t),e.unwrap=function(){return e._zod.def.innerType},e.removeDefault=e.unwrap})),Hc=na("ZodPrefault",(function(e,t){qo.init(e,t),qs.init(e,t),e.unwrap=function(){return e._zod.def.innerType}})),Kc=na("ZodNonOptional",(function(e,t){Uo.init(e,t),qs.init(e,t),e.unwrap=function(){return e._zod.def.innerType}})),Wc=na("ZodCatch",(function(e,t){Ho.init(e,t),qs.init(e,t),e.unwrap=function(){return e._zod.def.innerType},e.removeCatch=e.unwrap})),Jc=na("ZodPipe",(function(e,t){Ko.init(e,t),qs.init(e,t),e.in=t.in,e.out=t.out}));function Qc(e,t){return new Jc({type:"pipe",in:e,out:t})}var Gc,Yc,Xc=na("ZodReadonly",(function(e,t){Jo.init(e,t),qs.init(e,t),e.unwrap=function(){return e._zod.def.innerType}})),el=na("ZodLazy",(function(e,t){Go.init(e,t),qs.init(e,t),e.unwrap=function(){return e._zod.def.getter()}})),tl=na("ZodCustom",(function(e,t){Yo.init(e,t),qs.init(e,t)}));function nl(e,t){return function(e,t,n){var r,u=ka(n);return null!==(r=u.abort)&&void 0!==r||(u.abort=!0),new e(g({type:"custom",check:"custom",fn:t},u))}(tl,null!=e?e:function(){return!0},t)}function rl(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{error:"Input not instance of ".concat(e.name)},n=new tl(g({type:"custom",check:"custom",fn:function(t){return t instanceof e},abort:!0},ka(t)));return n._zod.bag.Class=e,n}!function(e){e.assertEqual=function(e){},e.assertIs=function(e){},e.assertNever=function(e){throw new Error},e.arrayToEnum=function(e){var t,n={},r=f(e);try{for(r.s();!(t=r.n()).done;){var u=t.value;n[u]=u}}catch(e){r.e(e)}finally{r.f()}return n},e.getValidEnumValues=function(t){var n,r={},u=f(e.objectKeys(t).filter((function(e){return"number"!=typeof t[t[e]]})));try{for(u.s();!(n=u.n()).done;){var a=n.value;r[a]=t[a]}}catch(e){u.e(e)}finally{u.f()}return e.objectValues(r)},e.objectValues=function(t){return e.objectKeys(t).map((function(e){return t[e]}))},e.objectKeys="function"==typeof Object.keys?function(e){return Object.keys(e)}:function(e){var t=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.push(n);return t},e.find=function(e,t){var n,r=f(e);try{for(r.s();!(n=r.n()).done;){var u=n.value;if(t(u))return u}}catch(e){r.e(e)}finally{r.f()}},e.isInteger="function"==typeof Number.isInteger?function(e){return Number.isInteger(e)}:function(e){return"number"==typeof e&&Number.isFinite(e)&&Math.floor(e)===e},e.joinValues=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:" | ";return e.map((function(e){return"string"==typeof e?"'".concat(e,"'"):e})).join(t)},e.jsonStringifyReplacer=function(e,t){return"bigint"==typeof t?t.toString():t}}(Gc||(Gc={})),function(e){e.mergeShapes=function(e,t){return g(g({},e),t)}}(Yc||(Yc={}));var ul=Gc.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),al=function(e){switch(_(e)){case"undefined":return ul.undefined;case"string":return ul.string;case"number":return Number.isNaN(e)?ul.nan:ul.number;case"boolean":return ul.boolean;case"function":return ul.function;case"bigint":return ul.bigint;case"symbol":return ul.symbol;case"object":return Array.isArray(e)?ul.array:null===e?ul.null:e.then&&"function"==typeof e.then&&e.catch&&"function"==typeof e.catch?ul.promise:"undefined"!=typeof Map&&e instanceof Map?ul.map:"undefined"!=typeof Set&&e instanceof Set?ul.set:"undefined"!=typeof Date&&e instanceof Date?ul.date:ul.object;default:return ul.unknown}},il=Gc.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]),ol=function(){function e(t){var n;s(this,e),(n=o(this,e)).issues=[],n.addIssue=function(e){n.issues=[].concat(k(n.issues),[e])},n.addIssues=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];n.issues=[].concat(k(n.issues),k(e))};var r=(this instanceof e?this.constructor:void 0).prototype;return Object.setPrototypeOf?Object.setPrototypeOf(n,r):n.__proto__=r,n.name="ZodError",n.issues=t,n}return m(e,x(Error)),d(e,[{key:"errors",get:function(){return this.issues}},{key:"format",value:function(e){var t=e||function(e){return e.message},n={_errors:[]},r=function(e){var u,a=f(e.issues);try{for(a.s();!(u=a.n()).done;){var i=u.value;if("invalid_union"===i.code)i.unionErrors.map(r);else if("invalid_return_type"===i.code)r(i.returnTypeError);else if("invalid_arguments"===i.code)r(i.argumentsError);else if(0===i.path.length)n._errors.push(t(i));else for(var o=n,s=0;s0&&void 0!==arguments[0]?arguments[0]:function(e){return e.message},n=Object.create(null),r=[],u=f(this.issues);try{for(u.s();!(e=u.n()).done;){var a=e.value;if(a.path.length>0){var i=a.path[0];n[i]=n[i]||[],n[i].push(t(a))}else r.push(t(a))}}catch(e){u.e(e)}finally{u.f()}return{formErrors:r,fieldErrors:n}}},{key:"formErrors",get:function(){return this.flatten()}}],[{key:"assert",value:function(t){if(!(t instanceof e))throw new Error("Not a ZodError: ".concat(t))}}])}();ol.create=function(e){return new ol(e)};var sl=function(e,t){var n;switch(e.code){case il.invalid_type:n=e.received===ul.undefined?"Required":"Expected ".concat(e.expected,", received ").concat(e.received);break;case il.invalid_literal:n="Invalid literal value, expected ".concat(JSON.stringify(e.expected,Gc.jsonStringifyReplacer));break;case il.unrecognized_keys:n="Unrecognized key(s) in object: ".concat(Gc.joinValues(e.keys,", "));break;case il.invalid_union:n="Invalid input";break;case il.invalid_union_discriminator:n="Invalid discriminator value. Expected ".concat(Gc.joinValues(e.options));break;case il.invalid_enum_value:n="Invalid enum value. Expected ".concat(Gc.joinValues(e.options),", received '").concat(e.received,"'");break;case il.invalid_arguments:n="Invalid function arguments";break;case il.invalid_return_type:n="Invalid function return type";break;case il.invalid_date:n="Invalid date";break;case il.invalid_string:"object"===_(e.validation)?"includes"in e.validation?(n='Invalid input: must include "'.concat(e.validation.includes,'"'),"number"==typeof e.validation.position&&(n="".concat(n," at one or more positions greater than or equal to ").concat(e.validation.position))):"startsWith"in e.validation?n='Invalid input: must start with "'.concat(e.validation.startsWith,'"'):"endsWith"in e.validation?n='Invalid input: must end with "'.concat(e.validation.endsWith,'"'):Gc.assertNever(e.validation):n="regex"!==e.validation?"Invalid ".concat(e.validation):"Invalid";break;case il.too_small:n="array"===e.type?"Array must contain ".concat(e.exact?"exactly":e.inclusive?"at least":"more than"," ").concat(e.minimum," element(s)"):"string"===e.type?"String must contain ".concat(e.exact?"exactly":e.inclusive?"at least":"over"," ").concat(e.minimum," character(s)"):"number"===e.type||"bigint"===e.type?"Number must be ".concat(e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than ").concat(e.minimum):"date"===e.type?"Date must be ".concat(e.exact?"exactly equal to ":e.inclusive?"greater than or equal to ":"greater than ").concat(new Date(Number(e.minimum))):"Invalid input";break;case il.too_big:n="array"===e.type?"Array must contain ".concat(e.exact?"exactly":e.inclusive?"at most":"less than"," ").concat(e.maximum," element(s)"):"string"===e.type?"String must contain ".concat(e.exact?"exactly":e.inclusive?"at most":"under"," ").concat(e.maximum," character(s)"):"number"===e.type?"Number must be ".concat(e.exact?"exactly":e.inclusive?"less than or equal to":"less than"," ").concat(e.maximum):"bigint"===e.type?"BigInt must be ".concat(e.exact?"exactly":e.inclusive?"less than or equal to":"less than"," ").concat(e.maximum):"date"===e.type?"Date must be ".concat(e.exact?"exactly":e.inclusive?"smaller than or equal to":"smaller than"," ").concat(new Date(Number(e.maximum))):"Invalid input";break;case il.custom:n="Invalid input";break;case il.invalid_intersection_types:n="Intersection results could not be merged";break;case il.not_multiple_of:n="Number must be a multiple of ".concat(e.multipleOf);break;case il.not_finite:n="Number must be finite";break;default:n=t.defaultError,Gc.assertNever(e)}return{message:n}},cl=sl;function ll(){return cl}var dl=function(e){var t=e.data,n=e.path,r=e.errorMaps,u=e.issueData,a=[].concat(k(n),k(u.path||[])),i=g(g({},u),{},{path:a});if(void 0!==u.message)return g(g({},u),{},{path:a,message:u.message});var o,s="",c=r.filter((function(e){return!!e})).slice().reverse(),l=f(c);try{for(l.s();!(o=l.n()).done;)s=(0,o.value)(i,{data:t,defaultError:s}).message}catch(e){l.e(e)}finally{l.f()}return g(g({},u),{},{path:a,message:s})};function fl(e,t){var n=ll(),r=dl({issueData:t,data:e.data,path:e.path,errorMaps:[e.common.contextualErrorMap,e.schemaErrorMap,n,n===sl?void 0:sl].filter((function(e){return!!e}))});e.common.issues.push(r)}var pl,hl=function(){function e(){s(this,e),this.value="valid"}return d(e,[{key:"dirty",value:function(){"valid"===this.value&&(this.value="dirty")}},{key:"abort",value:function(){"aborted"!==this.value&&(this.value="aborted")}}],[{key:"mergeArray",value:function(e,t){var n,r=[],u=f(t);try{for(u.s();!(n=u.n()).done;){var a=n.value;if("aborted"===a.status)return vl;"dirty"===a.status&&e.dirty(),r.push(a.value)}}catch(e){u.e(e)}finally{u.f()}return{status:e.value,value:r}}},{key:"mergeObjectAsync",value:(t=i(E().m((function t(n,r){var u,a,i,o,s,c,l;return E().w((function(t){for(;;)switch(t.p=t.n){case 0:u=[],a=f(r),t.p=1,a.s();case 2:if((i=a.n()).done){t.n=6;break}return o=i.value,t.n=3,o.key;case 3:return s=t.v,t.n=4,o.value;case 4:c=t.v,u.push({key:s,value:c});case 5:t.n=2;break;case 6:t.n=8;break;case 7:t.p=7,l=t.v,a.e(l);case 8:return t.p=8,a.f(),t.f(8);case 9:return t.a(2,e.mergeObjectSync(n,u))}}),t,null,[[1,7,8,9]])}))),function(e,n){return t.apply(this,arguments)})},{key:"mergeObjectSync",value:function(e,t){var n,r={},u=f(t);try{for(u.s();!(n=u.n()).done;){var a=n.value,i=a.key,o=a.value;if("aborted"===i.status)return vl;if("aborted"===o.status)return vl;"dirty"===i.status&&e.dirty(),"dirty"===o.status&&e.dirty(),"__proto__"===i.value||void 0===o.value&&!a.alwaysSet||(r[i.value]=o.value)}}catch(e){u.e(e)}finally{u.f()}return{status:e.value,value:r}}}]);var t}(),vl=Object.freeze({status:"aborted"}),ml=function(e){return{status:"dirty",value:e}},Dl=function(e){return{status:"valid",value:e}},yl=function(e){return"aborted"===e.status},gl=function(e){return"dirty"===e.status},Fl=function(e){return"valid"===e.status},El=function(e){return"undefined"!=typeof Promise&&e instanceof Promise};!function(e){e.errToObj=function(e){return"string"==typeof e?{message:e}:e||{}},e.toString=function(e){return"string"==typeof e?e:null==e?void 0:e.message}}(pl||(pl={}));var bl=d((function e(t,n,r,u){s(this,e),this._cachedPath=[],this.parent=t,this.data=n,this._path=r,this._key=u}),[{key:"path",get:function(){var e,t;return this._cachedPath.length||(Array.isArray(this._key)?(e=this._cachedPath).push.apply(e,k(this._path).concat(k(this._key))):(t=this._cachedPath).push.apply(t,k(this._path).concat([this._key]))),this._cachedPath}}]),Cl=function(e,t){if(Fl(t))return{success:!0,data:t.value};if(!e.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;var t=new ol(e.common.issues);return this._error=t,this._error}}};function Al(e){if(!e)return{};var t=e.errorMap,n=e.invalid_type_error,r=e.required_error,u=e.description;if(t&&(n||r))throw new Error('Can\'t use "invalid_type_error" or "required_error" in conjunction with custom error map.');return t?{errorMap:t,description:u}:{errorMap:function(t,u){var a,i,o=e.message;return"invalid_enum_value"===t.code?{message:null!=o?o:u.defaultError}:void 0===u.data?{message:null!==(i=null!=o?o:r)&&void 0!==i?i:u.defaultError}:"invalid_type"!==t.code?{message:u.defaultError}:{message:null!==(a=null!=o?o:n)&&void 0!==a?a:u.defaultError}},description:u}}var kl,wl=function(){return d((function e(t){var n=this;s(this,e),this.spa=this.safeParseAsync,this._def=t,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:function(e){return n["~validate"](e)}}}),[{key:"description",get:function(){return this._def.description}},{key:"_getType",value:function(e){return al(e.data)}},{key:"_getOrReturnCtx",value:function(e,t){return t||{common:e.parent.common,data:e.data,parsedType:al(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}},{key:"_processInputParams",value:function(e){return{status:new hl,ctx:{common:e.parent.common,data:e.data,parsedType:al(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}},{key:"_parseSync",value:function(e){var t=this._parse(e);if(El(t))throw new Error("Synchronous parse encountered promise.");return t}},{key:"_parseAsync",value:function(e){var t=this._parse(e);return Promise.resolve(t)}},{key:"parse",value:function(e,t){var n=this.safeParse(e,t);if(n.success)return n.data;throw n.error}},{key:"safeParse",value:function(e,t){var n,r={common:{issues:[],async:null!==(n=null==t?void 0:t.async)&&void 0!==n&&n,contextualErrorMap:null==t?void 0:t.errorMap},path:(null==t?void 0:t.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:al(e)},u=this._parseSync({data:e,path:r.path,parent:r});return Cl(r,u)}},{key:"~validate",value:function(e){var t={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:al(e)};if(!this["~standard"].async)try{var n=this._parseSync({data:e,path:[],parent:t});return Fl(n)?{value:n.value}:{issues:t.common.issues}}catch(e){var r;null!=e&&null!==(r=e.message)&&void 0!==r&&null!==(r=r.toLowerCase())&&void 0!==r&&r.includes("encountered")&&(this["~standard"].async=!0),t.common={issues:[],async:!0}}return this._parseAsync({data:e,path:[],parent:t}).then((function(e){return Fl(e)?{value:e.value}:{issues:t.common.issues}}))}},{key:"parseAsync",value:(e=i(E().m((function e(t,n){var r;return E().w((function(e){for(;;)switch(e.n){case 0:return e.n=1,this.safeParseAsync(t,n);case 1:if(!(r=e.v).success){e.n=2;break}return e.a(2,r.data);case 2:throw r.error;case 3:return e.a(2)}}),e,this)}))),function(t,n){return e.apply(this,arguments)})},{key:"safeParseAsync",value:function(){var e=i(E().m((function e(t,n){var r,u,a;return E().w((function(e){for(;;)switch(e.n){case 0:return r={common:{issues:[],contextualErrorMap:null==n?void 0:n.errorMap,async:!0},path:(null==n?void 0:n.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:t,parsedType:al(t)},u=this._parse({data:t,path:r.path,parent:r}),e.n=1,El(u)?u:Promise.resolve(u);case 1:return a=e.v,e.a(2,Cl(r,a))}}),e,this)})));return function(t,n){return e.apply(this,arguments)}}()},{key:"refine",value:function(e,t){return this._refinement((function(n,r){var u=e(n),a=function(){return r.addIssue(g({code:il.custom},function(e){return"string"==typeof t||void 0===t?{message:t}:"function"==typeof t?t(e):t}(n)))};return"undefined"!=typeof Promise&&u instanceof Promise?u.then((function(e){return!!e||(a(),!1)})):!!u||(a(),!1)}))}},{key:"refinement",value:function(e,t){return this._refinement((function(n,r){return!!e(n)||(r.addIssue("function"==typeof t?t(n,r):t),!1)}))}},{key:"_refinement",value:function(e){return new _d({schema:this,typeName:Td.ZodEffects,effect:{type:"refinement",refinement:e}})}},{key:"superRefine",value:function(e){return this._refinement(e)}},{key:"optional",value:function(){return Sd.create(this,this._def)}},{key:"nullable",value:function(){return xd.create(this,this._def)}},{key:"nullish",value:function(){return this.nullable().optional()}},{key:"array",value:function(){return sd.create(this)}},{key:"promise",value:function(){return wd.create(this,this._def)}},{key:"or",value:function(e){return dd.create([this,e],this._def)}},{key:"and",value:function(e){return vd.create(this,e,this._def)}},{key:"transform",value:function(e){return new _d(g(g({},Al(this._def)),{},{schema:this,typeName:Td.ZodEffects,effect:{type:"transform",transform:e}}))}},{key:"default",value:function(e){var t="function"==typeof e?e:function(){return e};return new Bd(g(g({},Al(this._def)),{},{innerType:this,defaultValue:t,typeName:Td.ZodDefault}))}},{key:"brand",value:function(){return new Pd(g({typeName:Td.ZodBranded,type:this},Al(this._def)))}},{key:"catch",value:function(e){var t="function"==typeof e?e:function(){return e};return new Id(g(g({},Al(this._def)),{},{innerType:this,catchValue:t,typeName:Td.ZodCatch}))}},{key:"describe",value:function(e){return new(0,this.constructor)(g(g({},this._def),{},{description:e}))}},{key:"pipe",value:function(e){return jd.create(this,e)}},{key:"readonly",value:function(){return Nd.create(this)}},{key:"isOptional",value:function(){return this.safeParse(void 0).success}},{key:"isNullable",value:function(){return this.safeParse(null).success}}]);var e}(),_l=/^c[^\s-]{8,}$/i,Sl=/^[0-9a-z]+$/,xl=/^[0-9A-HJKMNP-TV-Z]{26}$/i,Bl=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,Il=/^[a-z0-9_-]{21}$/i,Ol=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,Tl=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,Pl=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,jl=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,Nl=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,zl=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,Rl=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,Ml=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,Zl=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,Ll="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",$l=new RegExp("^".concat(Ll,"$"));function ql(e){var t="[0-5]\\d";e.precision?t="".concat(t,"\\.\\d{").concat(e.precision,"}"):null==e.precision&&(t="".concat(t,"(\\.\\d+)?"));var n=e.precision?"+":"?";return"([01]\\d|2[0-3]):[0-5]\\d(:".concat(t,")").concat(n)}function Ul(e){return new RegExp("^".concat(ql(e),"$"))}function Vl(e){var t="".concat(Ll,"T").concat(ql(e)),n=[];return n.push(e.local?"Z?":"Z"),e.offset&&n.push("([+-]\\d{2}:?\\d{2})"),t="".concat(t,"(").concat(n.join("|"),")"),new RegExp("^".concat(t,"$"))}function Hl(e,t){return!("v4"!==t&&t||!jl.test(e))||!("v6"!==t&&t||!zl.test(e))}function Kl(e,t){if(!Ol.test(e))return!1;try{var n=A(e.split("."),1)[0];if(!n)return!1;var r=n.replace(/-/g,"+").replace(/_/g,"/").padEnd(n.length+(4-n.length%4)%4,"="),u=JSON.parse(atob(r));return!("object"!==_(u)||null===u||"typ"in u&&"JWT"!==(null==u?void 0:u.typ)||!u.alg||t&&u.alg!==t)}catch(e){return!1}}function Wl(e,t){return!("v4"!==t&&t||!Nl.test(e))||!("v6"!==t&&t||!Rl.test(e))}var Jl=function(){function e(){return s(this,e),o(this,e,arguments)}return m(e,wl),d(e,[{key:"_parse",value:function(e){if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==ul.string){var t=this._getOrReturnCtx(e);return fl(t,{code:il.invalid_type,expected:ul.string,received:t.parsedType}),vl}var n,r=new hl,u=void 0,a=f(this._def.checks);try{for(a.s();!(n=a.n()).done;){var i=n.value;if("min"===i.kind)e.data.lengthi.value&&(fl(u=this._getOrReturnCtx(e,u),{code:il.too_big,maximum:i.value,type:"string",inclusive:!0,exact:!1,message:i.message}),r.dirty());else if("length"===i.kind){var o=e.data.length>i.value,s=e.data.lengtht)&&(t=r.value)}}catch(e){n.e(e)}finally{n.f()}return t}},{key:"maxLength",get:function(){var e,t=null,n=f(this._def.checks);try{for(n.s();!(e=n.n()).done;){var r=e.value;"max"===r.kind&&(null===t||r.valuer?n:r;return Number.parseInt(e.toFixed(u).replace(".",""))%Number.parseInt(t.toFixed(u).replace(".",""))/Math.pow(10,u)}Jl.create=function(e){var t;return new Jl(g({checks:[],typeName:Td.ZodString,coerce:null!==(t=null==e?void 0:e.coerce)&&void 0!==t&&t},Al(e)))};var Gl=function(){function e(){var t;return s(this,e),(t=o(this,e,arguments)).min=t.gte,t.max=t.lte,t.step=t.multipleOf,t}return m(e,wl),d(e,[{key:"_parse",value:function(e){if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==ul.number){var t=this._getOrReturnCtx(e);return fl(t,{code:il.invalid_type,expected:ul.number,received:t.parsedType}),vl}var n,r=void 0,u=new hl,a=f(this._def.checks);try{for(a.s();!(n=a.n()).done;){var i=n.value;"int"===i.kind?Gc.isInteger(e.data)||(fl(r=this._getOrReturnCtx(e,r),{code:il.invalid_type,expected:"integer",received:"float",message:i.message}),u.dirty()):"min"===i.kind?(i.inclusive?e.datai.value:e.data>=i.value)&&(fl(r=this._getOrReturnCtx(e,r),{code:il.too_big,maximum:i.value,type:"number",inclusive:i.inclusive,exact:!1,message:i.message}),u.dirty()):"multipleOf"===i.kind?0!==Ql(e.data,i.value)&&(fl(r=this._getOrReturnCtx(e,r),{code:il.not_multiple_of,multipleOf:i.value,message:i.message}),u.dirty()):"finite"===i.kind?Number.isFinite(e.data)||(fl(r=this._getOrReturnCtx(e,r),{code:il.not_finite,message:i.message}),u.dirty()):Gc.assertNever(i)}}catch(e){a.e(e)}finally{a.f()}return{status:u.value,value:e.data}}},{key:"gte",value:function(e,t){return this.setLimit("min",e,!0,pl.toString(t))}},{key:"gt",value:function(e,t){return this.setLimit("min",e,!1,pl.toString(t))}},{key:"lte",value:function(e,t){return this.setLimit("max",e,!0,pl.toString(t))}},{key:"lt",value:function(e,t){return this.setLimit("max",e,!1,pl.toString(t))}},{key:"setLimit",value:function(t,n,r,u){return new e(g(g({},this._def),{},{checks:[].concat(k(this._def.checks),[{kind:t,value:n,inclusive:r,message:pl.toString(u)}])}))}},{key:"_addCheck",value:function(t){return new e(g(g({},this._def),{},{checks:[].concat(k(this._def.checks),[t])}))}},{key:"int",value:function(e){return this._addCheck({kind:"int",message:pl.toString(e)})}},{key:"positive",value:function(e){return this._addCheck({kind:"min",value:0,inclusive:!1,message:pl.toString(e)})}},{key:"negative",value:function(e){return this._addCheck({kind:"max",value:0,inclusive:!1,message:pl.toString(e)})}},{key:"nonpositive",value:function(e){return this._addCheck({kind:"max",value:0,inclusive:!0,message:pl.toString(e)})}},{key:"nonnegative",value:function(e){return this._addCheck({kind:"min",value:0,inclusive:!0,message:pl.toString(e)})}},{key:"multipleOf",value:function(e,t){return this._addCheck({kind:"multipleOf",value:e,message:pl.toString(t)})}},{key:"finite",value:function(e){return this._addCheck({kind:"finite",message:pl.toString(e)})}},{key:"safe",value:function(e){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:pl.toString(e)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:pl.toString(e)})}},{key:"minValue",get:function(){var e,t=null,n=f(this._def.checks);try{for(n.s();!(e=n.n()).done;){var r=e.value;"min"===r.kind&&(null===t||r.value>t)&&(t=r.value)}}catch(e){n.e(e)}finally{n.f()}return t}},{key:"maxValue",get:function(){var e,t=null,n=f(this._def.checks);try{for(n.s();!(e=n.n()).done;){var r=e.value;"max"===r.kind&&(null===t||r.valuen)&&(n=u.value):"max"===u.kind&&(null===t||u.valuea.value:e.data>=a.value)&&(fl(n=this._getOrReturnCtx(e,n),{code:il.too_big,type:"bigint",maximum:a.value,inclusive:a.inclusive,message:a.message}),r.dirty()):"multipleOf"===a.kind?e.data%a.value!==BigInt(0)&&(fl(n=this._getOrReturnCtx(e,n),{code:il.not_multiple_of,multipleOf:a.value,message:a.message}),r.dirty()):Gc.assertNever(a)}}catch(e){u.e(e)}finally{u.f()}return{status:r.value,value:e.data}}},{key:"_getInvalidInput",value:function(e){var t=this._getOrReturnCtx(e);return fl(t,{code:il.invalid_type,expected:ul.bigint,received:t.parsedType}),vl}},{key:"gte",value:function(e,t){return this.setLimit("min",e,!0,pl.toString(t))}},{key:"gt",value:function(e,t){return this.setLimit("min",e,!1,pl.toString(t))}},{key:"lte",value:function(e,t){return this.setLimit("max",e,!0,pl.toString(t))}},{key:"lt",value:function(e,t){return this.setLimit("max",e,!1,pl.toString(t))}},{key:"setLimit",value:function(t,n,r,u){return new e(g(g({},this._def),{},{checks:[].concat(k(this._def.checks),[{kind:t,value:n,inclusive:r,message:pl.toString(u)}])}))}},{key:"_addCheck",value:function(t){return new e(g(g({},this._def),{},{checks:[].concat(k(this._def.checks),[t])}))}},{key:"positive",value:function(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:pl.toString(e)})}},{key:"negative",value:function(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:pl.toString(e)})}},{key:"nonpositive",value:function(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:pl.toString(e)})}},{key:"nonnegative",value:function(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:pl.toString(e)})}},{key:"multipleOf",value:function(e,t){return this._addCheck({kind:"multipleOf",value:e,message:pl.toString(t)})}},{key:"minValue",get:function(){var e,t=null,n=f(this._def.checks);try{for(n.s();!(e=n.n()).done;){var r=e.value;"min"===r.kind&&(null===t||r.value>t)&&(t=r.value)}}catch(e){n.e(e)}finally{n.f()}return t}},{key:"maxValue",get:function(){var e,t=null,n=f(this._def.checks);try{for(n.s();!(e=n.n()).done;){var r=e.value;"max"===r.kind&&(null===t||r.valuei.value&&(fl(u=this._getOrReturnCtx(e,u),{code:il.too_big,message:i.message,inclusive:!0,exact:!1,maximum:i.value,type:"date"}),r.dirty()):Gc.assertNever(i)}}catch(e){a.e(e)}finally{a.f()}return{status:r.value,value:new Date(e.data.getTime())}}},{key:"_addCheck",value:function(t){return new e(g(g({},this._def),{},{checks:[].concat(k(this._def.checks),[t])}))}},{key:"min",value:function(e,t){return this._addCheck({kind:"min",value:e.getTime(),message:pl.toString(t)})}},{key:"max",value:function(e,t){return this._addCheck({kind:"max",value:e.getTime(),message:pl.toString(t)})}},{key:"minDate",get:function(){var e,t=null,n=f(this._def.checks);try{for(n.s();!(e=n.n()).done;){var r=e.value;"min"===r.kind&&(null===t||r.value>t)&&(t=r.value)}}catch(e){n.e(e)}finally{n.f()}return null!=t?new Date(t):null}},{key:"maxDate",get:function(){var e,t=null,n=f(this._def.checks);try{for(n.s();!(e=n.n()).done;){var r=e.value;"max"===r.kind&&(null===t||r.valueu.exactLength.value,i=n.data.lengthu.maxLength.value&&(fl(n,{code:il.too_big,maximum:u.maxLength.value,type:"array",inclusive:!0,exact:!1,message:u.maxLength.message}),r.dirty()),n.common.async)return Promise.all(k(n.data).map((function(e,t){return u.type._parseAsync(new bl(n,e,n.path,t))}))).then((function(e){return hl.mergeArray(r,e)}));var o=k(n.data).map((function(e,t){return u.type._parseSync(new bl(n,e,n.path,t))}));return hl.mergeArray(r,o)}},{key:"element",get:function(){return this._def.type}},{key:"min",value:function(t,n){return new e(g(g({},this._def),{},{minLength:{value:t,message:pl.toString(n)}}))}},{key:"max",value:function(t,n){return new e(g(g({},this._def),{},{maxLength:{value:t,message:pl.toString(n)}}))}},{key:"length",value:function(t,n){return new e(g(g({},this._def),{},{exactLength:{value:t,message:pl.toString(n)}}))}},{key:"nonempty",value:function(e){return this.min(1,e)}}])}();function cd(e){if(e instanceof ld){var t={};for(var n in e.shape){var r=e.shape[n];t[n]=Sd.create(cd(r))}return new ld(g(g({},e._def),{},{shape:function(){return t}}))}return e instanceof sd?new sd(g(g({},e._def),{},{type:cd(e.element)})):e instanceof Sd?Sd.create(cd(e.unwrap())):e instanceof xd?xd.create(cd(e.unwrap())):e instanceof md?md.create(e.items.map((function(e){return cd(e)}))):e}sd.create=function(e,t){return new sd(g({type:e,minLength:null,maxLength:null,exactLength:null,typeName:Td.ZodArray},Al(t)))};var ld=function(){function e(){var t;return s(this,e),(t=o(this,e,arguments))._cached=null,t.nonstrict=t.passthrough,t.augment=t.extend,t}return m(e,wl),d(e,[{key:"_getCached",value:function(){if(null!==this._cached)return this._cached;var e=this._def.shape(),t=Gc.objectKeys(e);return this._cached={shape:e,keys:t},this._cached}},{key:"_parse",value:function(e){if(this._getType(e)!==ul.object){var t=this._getOrReturnCtx(e);return fl(t,{code:il.invalid_type,expected:ul.object,received:t.parsedType}),vl}var n=this._processInputParams(e),r=n.status,u=n.ctx,a=this._getCached(),o=a.shape,s=a.keys,c=[];if(!(this._def.catchall instanceof id&&"strip"===this._def.unknownKeys))for(var l in u.data)s.includes(l)||c.push(l);var d,p=[],h=f(s);try{for(h.s();!(d=h.n()).done;){var v=d.value,m=o[v],D=u.data[v];p.push({key:{status:"valid",value:v},value:m._parse(new bl(u,D,u.path,v)),alwaysSet:v in u.data})}}catch(e){h.e(e)}finally{h.f()}if(this._def.catchall instanceof id){var y=this._def.unknownKeys;if("passthrough"===y){var g,F=f(c);try{for(F.s();!(g=F.n()).done;){var b=g.value;p.push({key:{status:"valid",value:b},value:{status:"valid",value:u.data[b]}})}}catch(e){F.e(e)}finally{F.f()}}else if("strict"===y)c.length>0&&(fl(u,{code:il.unrecognized_keys,keys:c}),r.dirty());else if("strip"!==y)throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{var C,A=this._def.catchall,k=f(c);try{for(k.s();!(C=k.n()).done;){var w=C.value,_=u.data[w];p.push({key:{status:"valid",value:w},value:A._parse(new bl(u,_,u.path,w)),alwaysSet:w in u.data})}}catch(e){k.e(e)}finally{k.f()}}return u.common.async?Promise.resolve().then(i(E().m((function e(){var t,n,r,u,a,i,o;return E().w((function(e){for(;;)switch(e.p=e.n){case 0:t=[],n=f(p),e.p=1,n.s();case 2:if((r=n.n()).done){e.n=6;break}return u=r.value,e.n=3,u.key;case 3:return a=e.v,e.n=4,u.value;case 4:i=e.v,t.push({key:a,value:i,alwaysSet:u.alwaysSet});case 5:e.n=2;break;case 6:e.n=8;break;case 7:e.p=7,o=e.v,n.e(o);case 8:return e.p=8,n.f(),e.f(8);case 9:return e.a(2,t)}}),e,null,[[1,7,8,9]])})))).then((function(e){return hl.mergeObjectSync(r,e)})):hl.mergeObjectSync(r,p)}},{key:"shape",get:function(){return this._def.shape()}},{key:"strict",value:function(t){var n=this;return pl.errToObj,new e(g(g({},this._def),{},{unknownKeys:"strict"},void 0!==t?{errorMap:function(e,r){var u,a,i,o,s=null!==(u=null===(a=(i=n._def).errorMap)||void 0===a?void 0:a.call(i,e,r).message)&&void 0!==u?u:r.defaultError;return"unrecognized_keys"===e.code?{message:null!==(o=pl.errToObj(t).message)&&void 0!==o?o:s}:{message:s}}}:{}))}},{key:"strip",value:function(){return new e(g(g({},this._def),{},{unknownKeys:"strip"}))}},{key:"passthrough",value:function(){return new e(g(g({},this._def),{},{unknownKeys:"passthrough"}))}},{key:"extend",value:function(t){var n=this;return new e(g(g({},this._def),{},{shape:function(){return g(g({},n._def.shape()),t)}}))}},{key:"merge",value:function(t){var n=this;return new e({unknownKeys:t._def.unknownKeys,catchall:t._def.catchall,shape:function(){return g(g({},n._def.shape()),t._def.shape())},typeName:Td.ZodObject})}},{key:"setKey",value:function(e,t){return this.augment(p({},e,t))}},{key:"catchall",value:function(t){return new e(g(g({},this._def),{},{catchall:t}))}},{key:"pick",value:function(t){var n,r={},u=f(Gc.objectKeys(t));try{for(u.s();!(n=u.n()).done;){var a=n.value;t[a]&&this.shape[a]&&(r[a]=this.shape[a])}}catch(e){u.e(e)}finally{u.f()}return new e(g(g({},this._def),{},{shape:function(){return r}}))}},{key:"omit",value:function(t){var n,r={},u=f(Gc.objectKeys(this.shape));try{for(u.s();!(n=u.n()).done;){var a=n.value;t[a]||(r[a]=this.shape[a])}}catch(e){u.e(e)}finally{u.f()}return new e(g(g({},this._def),{},{shape:function(){return r}}))}},{key:"deepPartial",value:function(){return cd(this)}},{key:"partial",value:function(t){var n,r={},u=f(Gc.objectKeys(this.shape));try{for(u.s();!(n=u.n()).done;){var a=n.value,i=this.shape[a];t&&!t[a]?r[a]=i:r[a]=i.optional()}}catch(e){u.e(e)}finally{u.f()}return new e(g(g({},this._def),{},{shape:function(){return r}}))}},{key:"required",value:function(t){var n,r={},u=f(Gc.objectKeys(this.shape));try{for(u.s();!(n=u.n()).done;){var a=n.value;if(t&&!t[a])r[a]=this.shape[a];else{for(var i=this.shape[a];i instanceof Sd;)i=i._def.innerType;r[a]=i}}}catch(e){u.e(e)}finally{u.f()}return new e(g(g({},this._def),{},{shape:function(){return r}}))}},{key:"keyof",value:function(){return Cd(Gc.objectKeys(this.shape))}}])}();ld.create=function(e,t){return new ld(g({shape:function(){return e},unknownKeys:"strip",catchall:id.create(),typeName:Td.ZodObject},Al(t)))},ld.strictCreate=function(e,t){return new ld(g({shape:function(){return e},unknownKeys:"strict",catchall:id.create(),typeName:Td.ZodObject},Al(t)))},ld.lazycreate=function(e,t){return new ld(g({shape:e,unknownKeys:"strip",catchall:id.create(),typeName:Td.ZodObject},Al(t)))};var dd=function(){function e(){return s(this,e),o(this,e,arguments)}return m(e,wl),d(e,[{key:"_parse",value:function(e){var t=this._processInputParams(e).ctx,n=this._def.options;if(t.common.async)return Promise.all(n.map(function(){var e=i(E().m((function e(n){var r,u,a;return E().w((function(e){for(;;)switch(e.n){case 0:return r=g(g({},t),{},{common:g(g({},t.common),{},{issues:[]}),parent:null}),e.n=1,n._parseAsync({data:t.data,path:t.path,parent:r});case 1:return u=e.v,a=r,e.a(2,{result:u,ctx:a})}}),e)})));return function(t){return e.apply(this,arguments)}}())).then((function(e){var n,r=f(e);try{for(r.s();!(n=r.n()).done;){var u=n.value;if("valid"===u.result.status)return u.result}}catch(e){r.e(e)}finally{r.f()}var a,i=f(e);try{for(i.s();!(a=i.n()).done;){var o,s=a.value;if("dirty"===s.result.status)return(o=t.common.issues).push.apply(o,k(s.ctx.common.issues)),s.result}}catch(e){i.e(e)}finally{i.f()}var c=e.map((function(e){return new ol(e.ctx.common.issues)}));return fl(t,{code:il.invalid_union,unionErrors:c}),vl}));var r,u,a=void 0,o=[],s=f(n);try{for(s.s();!(r=s.n()).done;){var c=r.value,l=g(g({},t),{},{common:g(g({},t.common),{},{issues:[]}),parent:null}),d=c._parseSync({data:t.data,path:t.path,parent:l});if("valid"===d.status)return d;"dirty"!==d.status||a||(a={result:d,ctx:l}),l.common.issues.length&&o.push(l.common.issues)}}catch(e){s.e(e)}finally{s.f()}if(a)return(u=t.common.issues).push.apply(u,k(a.ctx.common.issues)),a.result;var p=o.map((function(e){return new ol(e)}));return fl(t,{code:il.invalid_union,unionErrors:p}),vl}},{key:"options",get:function(){return this._def.options}}])}();dd.create=function(e,t){return new dd(g({options:e,typeName:Td.ZodUnion},Al(t)))};var fd=function(e){return e instanceof Ed?fd(e.schema):e instanceof _d?fd(e.innerType()):e instanceof bd?[e.value]:e instanceof Ad?e.options:e instanceof kd?Gc.objectValues(e.enum):e instanceof Bd?fd(e._def.innerType):e instanceof nd?[void 0]:e instanceof rd?[null]:e instanceof Sd?[void 0].concat(k(fd(e.unwrap()))):e instanceof xd?[null].concat(k(fd(e.unwrap()))):e instanceof Pd||e instanceof Nd?fd(e.unwrap()):e instanceof Id?fd(e._def.innerType):[]},pd=function(){function e(){return s(this,e),o(this,e,arguments)}return m(e,wl),d(e,[{key:"_parse",value:function(e){var t=this._processInputParams(e).ctx;if(t.parsedType!==ul.object)return fl(t,{code:il.invalid_type,expected:ul.object,received:t.parsedType}),vl;var n=this.discriminator,r=t.data[n],u=this.optionsMap.get(r);return u?t.common.async?u._parseAsync({data:t.data,path:t.path,parent:t}):u._parseSync({data:t.data,path:t.path,parent:t}):(fl(t,{code:il.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[n]}),vl)}},{key:"discriminator",get:function(){return this._def.discriminator}},{key:"options",get:function(){return this._def.options}},{key:"optionsMap",get:function(){return this._def.optionsMap}}],[{key:"create",value:function(t,n,r){var u,a=new Map,i=f(n);try{for(i.s();!(u=i.n()).done;){var o=u.value,s=fd(o.shape[t]);if(!s.length)throw new Error("A discriminator value for key `".concat(t,"` could not be extracted from all schema options"));var c,l=f(s);try{for(l.s();!(c=l.n()).done;){var d=c.value;if(a.has(d))throw new Error("Discriminator property ".concat(String(t)," has duplicate value ").concat(String(d)));a.set(d,o)}}catch(e){l.e(e)}finally{l.f()}}}catch(e){i.e(e)}finally{i.f()}return new e(g({typeName:Td.ZodDiscriminatedUnion,discriminator:t,options:n,optionsMap:a},Al(r)))}}])}();function hd(e,t){var n=al(e),r=al(t);if(e===t)return{valid:!0,data:e};if(n===ul.object&&r===ul.object){var u,a=Gc.objectKeys(t),i=Gc.objectKeys(e).filter((function(e){return-1!==a.indexOf(e)})),o=g(g({},e),t),s=f(i);try{for(s.s();!(u=s.n()).done;){var c=u.value,l=hd(e[c],t[c]);if(!l.valid)return{valid:!1};o[c]=l.data}}catch(e){s.e(e)}finally{s.f()}return{valid:!0,data:o}}if(n===ul.array&&r===ul.array){if(e.length!==t.length)return{valid:!1};for(var d=[],p=0;pthis._def.items.length&&(fl(u,{code:il.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),r.dirty());var a=k(u.data).map((function(e,n){var r=t._def.items[n]||t._def.rest;return r?r._parse(new bl(u,e,u.path,n)):null})).filter((function(e){return!!e}));return u.common.async?Promise.all(a).then((function(e){return hl.mergeArray(r,e)})):hl.mergeArray(r,a)}},{key:"items",get:function(){return this._def.items}},{key:"rest",value:function(t){return new e(g(g({},this._def),{},{rest:t}))}}])}();md.create=function(e,t){if(!Array.isArray(e))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new md(g({items:e,typeName:Td.ZodTuple,rest:null},Al(t)))};var Dd=function(){function e(){return s(this,e),o(this,e,arguments)}return m(e,wl),d(e,[{key:"keySchema",get:function(){return this._def.keyType}},{key:"valueSchema",get:function(){return this._def.valueType}},{key:"_parse",value:function(e){var t=this._processInputParams(e),n=t.status,r=t.ctx;if(r.parsedType!==ul.object)return fl(r,{code:il.invalid_type,expected:ul.object,received:r.parsedType}),vl;var u=[],a=this._def.keyType,i=this._def.valueType;for(var o in r.data)u.push({key:a._parse(new bl(r,o,r.path,o)),value:i._parse(new bl(r,r.data[o],r.path,o)),alwaysSet:o in r.data});return r.common.async?hl.mergeObjectAsync(n,u):hl.mergeObjectSync(n,u)}},{key:"element",get:function(){return this._def.valueType}}],[{key:"create",value:function(t,n,r){return new e(n instanceof wl?g({keyType:t,valueType:n,typeName:Td.ZodRecord},Al(r)):g({keyType:Jl.create(),valueType:t,typeName:Td.ZodRecord},Al(n)))}}])}(),yd=function(){function e(){return s(this,e),o(this,e,arguments)}return m(e,wl),d(e,[{key:"keySchema",get:function(){return this._def.keyType}},{key:"valueSchema",get:function(){return this._def.valueType}},{key:"_parse",value:function(e){var t=this._processInputParams(e),n=t.status,r=t.ctx;if(r.parsedType!==ul.map)return fl(r,{code:il.invalid_type,expected:ul.map,received:r.parsedType}),vl;var u=this._def.keyType,a=this._def.valueType,o=k(r.data.entries()).map((function(e,t){var n=A(e,2),i=n[0],o=n[1];return{key:u._parse(new bl(r,i,r.path,[t,"key"])),value:a._parse(new bl(r,o,r.path,[t,"value"]))}}));if(r.common.async){var s=new Map;return Promise.resolve().then(i(E().m((function e(){var t,r,u,a,i,c;return E().w((function(e){for(;;)switch(e.p=e.n){case 0:t=f(o),e.p=1,t.s();case 2:if((r=t.n()).done){e.n=7;break}return u=r.value,e.n=3,u.key;case 3:return a=e.v,e.n=4,u.value;case 4:if(i=e.v,"aborted"!==a.status&&"aborted"!==i.status){e.n=5;break}return e.a(2,vl);case 5:"dirty"!==a.status&&"dirty"!==i.status||n.dirty(),s.set(a.value,i.value);case 6:e.n=2;break;case 7:e.n=9;break;case 8:e.p=8,c=e.v,t.e(c);case 9:return e.p=9,t.f(),e.f(9);case 10:return e.a(2,{status:n.value,value:s})}}),e,null,[[1,8,9,10]])}))))}var c,l=new Map,d=f(o);try{for(d.s();!(c=d.n()).done;){var p=c.value,h=p.key,v=p.value;if("aborted"===h.status||"aborted"===v.status)return vl;"dirty"!==h.status&&"dirty"!==v.status||n.dirty(),l.set(h.value,v.value)}}catch(e){d.e(e)}finally{d.f()}return{status:n.value,value:l}}}])}();yd.create=function(e,t,n){return new yd(g({valueType:t,keyType:e,typeName:Td.ZodMap},Al(n)))};var gd=function(){function e(){return s(this,e),o(this,e,arguments)}return m(e,wl),d(e,[{key:"_parse",value:function(e){var t=this._processInputParams(e),n=t.status,r=t.ctx;if(r.parsedType!==ul.set)return fl(r,{code:il.invalid_type,expected:ul.set,received:r.parsedType}),vl;var u=this._def;null!==u.minSize&&r.data.sizeu.maxSize.value&&(fl(r,{code:il.too_big,maximum:u.maxSize.value,type:"set",inclusive:!0,exact:!1,message:u.maxSize.message}),n.dirty());var a=this._def.valueType;function i(e){var t,r=new Set,u=f(e);try{for(u.s();!(t=u.n()).done;){var a=t.value;if("aborted"===a.status)return vl;"dirty"===a.status&&n.dirty(),r.add(a.value)}}catch(e){u.e(e)}finally{u.f()}return{status:n.value,value:r}}var o=k(r.data.values()).map((function(e,t){return a._parse(new bl(r,e,r.path,t))}));return r.common.async?Promise.all(o).then((function(e){return i(e)})):i(o)}},{key:"min",value:function(t,n){return new e(g(g({},this._def),{},{minSize:{value:t,message:pl.toString(n)}}))}},{key:"max",value:function(t,n){return new e(g(g({},this._def),{},{maxSize:{value:t,message:pl.toString(n)}}))}},{key:"size",value:function(e,t){return this.min(e,t).max(e,t)}},{key:"nonempty",value:function(e){return this.min(1,e)}}])}();gd.create=function(e,t){return new gd(g({valueType:e,minSize:null,maxSize:null,typeName:Td.ZodSet},Al(t)))};var Fd=function(){function e(){var t;return s(this,e),(t=o(this,e,arguments)).validate=t.implement,t}return m(e,wl),d(e,[{key:"_parse",value:function(e){var t=this._processInputParams(e).ctx;if(t.parsedType!==ul.function)return fl(t,{code:il.invalid_type,expected:ul.function,received:t.parsedType}),vl;function n(e,n){return dl({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,ll(),sl].filter((function(e){return!!e})),issueData:{code:il.invalid_arguments,argumentsError:n}})}function r(e,n){return dl({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,ll(),sl].filter((function(e){return!!e})),issueData:{code:il.invalid_return_type,returnTypeError:n}})}var u={errorMap:t.common.contextualErrorMap},a=t.data;if(this._def.returns instanceof wd){var o=this;return Dl(i(E().m((function e(){var t,i,s,c,l,d,f,p=arguments;return E().w((function(e){for(;;)switch(e.n){case 0:for(t=p.length,i=new Array(t),s=0;s1&&void 0!==arguments[1]?arguments[1]:this._def;return e.create(t,g(g({},this._def),n))}},{key:"exclude",value:function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this._def;return e.create(this.options.filter((function(e){return!t.includes(e)})),g(g({},this._def),n))}}])}();Ad.create=Cd;var kd=function(){function e(){return s(this,e),o(this,e,arguments)}return m(e,wl),d(e,[{key:"_parse",value:function(e){var t=Gc.getValidEnumValues(this._def.values),n=this._getOrReturnCtx(e);if(n.parsedType!==ul.string&&n.parsedType!==ul.number){var r=Gc.objectValues(t);return fl(n,{expected:Gc.joinValues(r),received:n.parsedType,code:il.invalid_type}),vl}if(this._cache||(this._cache=new Set(Gc.getValidEnumValues(this._def.values))),!this._cache.has(e.data)){var u=Gc.objectValues(t);return fl(n,{received:n.data,code:il.invalid_enum_value,options:u}),vl}return Dl(e.data)}},{key:"enum",get:function(){return this._def.values}}])}();kd.create=function(e,t){return new kd(g({values:e,typeName:Td.ZodNativeEnum},Al(t)))};var wd=function(){function e(){return s(this,e),o(this,e,arguments)}return m(e,wl),d(e,[{key:"unwrap",value:function(){return this._def.type}},{key:"_parse",value:function(e){var t=this,n=this._processInputParams(e).ctx;if(n.parsedType!==ul.promise&&!1===n.common.async)return fl(n,{code:il.invalid_type,expected:ul.promise,received:n.parsedType}),vl;var r=n.parsedType===ul.promise?n.data:Promise.resolve(n.data);return Dl(r.then((function(e){return t._def.type.parseAsync(e,{path:n.path,errorMap:n.common.contextualErrorMap})})))}}])}();wd.create=function(e,t){return new wd(g({type:e,typeName:Td.ZodPromise},Al(t)))};var _d=function(){function e(){return s(this,e),o(this,e,arguments)}return m(e,wl),d(e,[{key:"innerType",value:function(){return this._def.schema}},{key:"sourceType",value:function(){return this._def.schema._def.typeName===Td.ZodEffects?this._def.schema.sourceType():this._def.schema}},{key:"_parse",value:function(e){var t=this,n=this._processInputParams(e),r=n.status,u=n.ctx,a=this._def.effect||null,o={addIssue:function(e){fl(u,e),e.fatal?r.abort():r.dirty()},get path(){return u.path}};if(o.addIssue=o.addIssue.bind(o),"preprocess"===a.type){var s=a.transform(u.data,o);if(u.common.async)return Promise.resolve(s).then(function(){var e=i(E().m((function e(n){var a;return E().w((function(e){for(;;)switch(e.n){case 0:if("aborted"!==r.value){e.n=1;break}return e.a(2,vl);case 1:return e.n=2,t._def.schema._parseAsync({data:n,path:u.path,parent:u});case 2:if("aborted"!==(a=e.v).status){e.n=3;break}return e.a(2,vl);case 3:if("dirty"!==a.status){e.n=4;break}return e.a(2,ml(a.value));case 4:if("dirty"!==r.value){e.n=5;break}return e.a(2,ml(a.value));case 5:return e.a(2,a)}}),e)})));return function(t){return e.apply(this,arguments)}}());if("aborted"===r.value)return vl;var c=this._def.schema._parseSync({data:s,path:u.path,parent:u});return"aborted"===c.status?vl:"dirty"===c.status||"dirty"===r.value?ml(c.value):c}if("refinement"===a.type){var l=function(e){var t=a.refinement(e,o);if(u.common.async)return Promise.resolve(t);if(t instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return e};if(!1===u.common.async){var d=this._def.schema._parseSync({data:u.data,path:u.path,parent:u});return"aborted"===d.status?vl:("dirty"===d.status&&r.dirty(),l(d.value),{status:r.value,value:d.value})}return this._def.schema._parseAsync({data:u.data,path:u.path,parent:u}).then((function(e){return"aborted"===e.status?vl:("dirty"===e.status&&r.dirty(),l(e.value).then((function(){return{status:r.value,value:e.value}})))}))}if("transform"===a.type){if(!1===u.common.async){var f=this._def.schema._parseSync({data:u.data,path:u.path,parent:u});if(!Fl(f))return vl;var p=a.transform(f.value,o);if(p instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:r.value,value:p}}return this._def.schema._parseAsync({data:u.data,path:u.path,parent:u}).then((function(e){return Fl(e)?Promise.resolve(a.transform(e.value,o)).then((function(e){return{status:r.value,value:e}})):vl}))}Gc.assertNever(a)}}])}();_d.create=function(e,t,n){return new _d(g({schema:e,typeName:Td.ZodEffects,effect:t},Al(n)))},_d.createWithPreprocess=function(e,t,n){return new _d(g({schema:t,effect:{type:"preprocess",transform:e},typeName:Td.ZodEffects},Al(n)))};var Sd=function(){function e(){return s(this,e),o(this,e,arguments)}return m(e,wl),d(e,[{key:"_parse",value:function(e){return this._getType(e)===ul.undefined?Dl(void 0):this._def.innerType._parse(e)}},{key:"unwrap",value:function(){return this._def.innerType}}])}();Sd.create=function(e,t){return new Sd(g({innerType:e,typeName:Td.ZodOptional},Al(t)))};var xd=function(){function e(){return s(this,e),o(this,e,arguments)}return m(e,wl),d(e,[{key:"_parse",value:function(e){return this._getType(e)===ul.null?Dl(null):this._def.innerType._parse(e)}},{key:"unwrap",value:function(){return this._def.innerType}}])}();xd.create=function(e,t){return new xd(g({innerType:e,typeName:Td.ZodNullable},Al(t)))};var Bd=function(){function e(){return s(this,e),o(this,e,arguments)}return m(e,wl),d(e,[{key:"_parse",value:function(e){var t=this._processInputParams(e).ctx,n=t.data;return t.parsedType===ul.undefined&&(n=this._def.defaultValue()),this._def.innerType._parse({data:n,path:t.path,parent:t})}},{key:"removeDefault",value:function(){return this._def.innerType}}])}();Bd.create=function(e,t){return new Bd(g({innerType:e,typeName:Td.ZodDefault,defaultValue:"function"==typeof t.default?t.default:function(){return t.default}},Al(t)))};var Id=function(){function e(){return s(this,e),o(this,e,arguments)}return m(e,wl),d(e,[{key:"_parse",value:function(e){var t=this,n=this._processInputParams(e).ctx,r=g(g({},n),{},{common:g(g({},n.common),{},{issues:[]})}),u=this._def.innerType._parse({data:r.data,path:r.path,parent:g({},r)});return El(u)?u.then((function(e){return{status:"valid",value:"valid"===e.status?e.value:t._def.catchValue({get error(){return new ol(r.common.issues)},input:r.data})}})):{status:"valid",value:"valid"===u.status?u.value:this._def.catchValue({get error(){return new ol(r.common.issues)},input:r.data})}}},{key:"removeCatch",value:function(){return this._def.innerType}}])}();Id.create=function(e,t){return new Id(g({innerType:e,typeName:Td.ZodCatch,catchValue:"function"==typeof t.catch?t.catch:function(){return t.catch}},Al(t)))};var Od=function(){function e(){return s(this,e),o(this,e,arguments)}return m(e,wl),d(e,[{key:"_parse",value:function(e){if(this._getType(e)!==ul.nan){var t=this._getOrReturnCtx(e);return fl(t,{code:il.invalid_type,expected:ul.nan,received:t.parsedType}),vl}return{status:"valid",value:e.data}}}])}();Od.create=function(e){return new Od(g({typeName:Td.ZodNaN},Al(e)))};var Td,Pd=function(){function e(){return s(this,e),o(this,e,arguments)}return m(e,wl),d(e,[{key:"_parse",value:function(e){var t=this._processInputParams(e).ctx,n=t.data;return this._def.type._parse({data:n,path:t.path,parent:t})}},{key:"unwrap",value:function(){return this._def.type}}])}(),jd=function(){function e(){return s(this,e),o(this,e,arguments)}return m(e,wl),d(e,[{key:"_parse",value:function(e){var t=this,n=this._processInputParams(e),r=n.status,u=n.ctx;if(u.common.async){var a=function(){var e=i(E().m((function e(){var n;return E().w((function(e){for(;;)switch(e.n){case 0:return e.n=1,t._def.in._parseAsync({data:u.data,path:u.path,parent:u});case 1:if("aborted"!==(n=e.v).status){e.n=2;break}return e.a(2,vl);case 2:if("dirty"!==n.status){e.n=3;break}return r.dirty(),e.a(2,ml(n.value));case 3:return e.a(2,t._def.out._parseAsync({data:n.value,path:u.path,parent:u}));case 4:return e.a(2)}}),e)})));return function(){return e.apply(this,arguments)}}();return a()}var o=this._def.in._parseSync({data:u.data,path:u.path,parent:u});return"aborted"===o.status?vl:"dirty"===o.status?(r.dirty(),{status:"dirty",value:o.value}):this._def.out._parseSync({data:o.value,path:u.path,parent:u})}}],[{key:"create",value:function(t,n){return new e({in:t,out:n,typeName:Td.ZodPipeline})}}])}(),Nd=function(){function e(){return s(this,e),o(this,e,arguments)}return m(e,wl),d(e,[{key:"_parse",value:function(e){var t=this._def.innerType._parse(e),n=function(e){return Fl(e)&&(e.value=Object.freeze(e.value)),e};return El(t)?t.then((function(e){return n(e)})):n(t)}},{key:"unwrap",value:function(){return this._def.innerType}}])}();Nd.create=function(e,t){return new Nd(g({innerType:e,typeName:Td.ZodReadonly},Al(t)))},ld.lazycreate,function(e){e.ZodString="ZodString",e.ZodNumber="ZodNumber",e.ZodNaN="ZodNaN",e.ZodBigInt="ZodBigInt",e.ZodBoolean="ZodBoolean",e.ZodDate="ZodDate",e.ZodSymbol="ZodSymbol",e.ZodUndefined="ZodUndefined",e.ZodNull="ZodNull",e.ZodAny="ZodAny",e.ZodUnknown="ZodUnknown",e.ZodNever="ZodNever",e.ZodVoid="ZodVoid",e.ZodArray="ZodArray",e.ZodObject="ZodObject",e.ZodUnion="ZodUnion",e.ZodDiscriminatedUnion="ZodDiscriminatedUnion",e.ZodIntersection="ZodIntersection",e.ZodTuple="ZodTuple",e.ZodRecord="ZodRecord",e.ZodMap="ZodMap",e.ZodSet="ZodSet",e.ZodFunction="ZodFunction",e.ZodLazy="ZodLazy",e.ZodLiteral="ZodLiteral",e.ZodEnum="ZodEnum",e.ZodEffects="ZodEffects",e.ZodNativeEnum="ZodNativeEnum",e.ZodOptional="ZodOptional",e.ZodNullable="ZodNullable",e.ZodDefault="ZodDefault",e.ZodCatch="ZodCatch",e.ZodPromise="ZodPromise",e.ZodBranded="ZodBranded",e.ZodPipeline="ZodPipeline",e.ZodReadonly="ZodReadonly"}(Td||(Td={})),Jl.create,Gl.create,Od.create,Yl.create,Xl.create,ed.create,td.create,nd.create,rd.create,ud.create,ad.create,id.create,od.create,sd.create,ld.create,ld.strictCreate,dd.create,pd.create,vd.create,md.create,Dd.create,yd.create,gd.create,Fd.create,Ed.create,bd.create,Ad.create,kd.create,wd.create,_d.create,Sd.create,xd.create,_d.createWithPreprocess,jd.create;var zd=({prefix:e,size:t=16,alphabet:n="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",separator:r="-"}={})=>{const u=()=>{const e=n.length,r=new Array(t);for(let u=0;u`${e}${r}${u()}`},Rd=zd();function Md(e=globalThis){var t,n,r;return e.window?"runtime/browser":(null==(t=e.navigator)?void 0:t.userAgent)?`runtime/${e.navigator.userAgent.toLowerCase()}`:(null==(r=null==(n=e.process)?void 0:n.versions)?void 0:r.node)?`runtime/node.js/${e.process.version.substring(0)}`:e.EdgeRuntime?"runtime/vercel-edge":"runtime/unknown"}function Zd(e){if(null==e)return{};const t={};if(e instanceof Headers)e.forEach(((e,n)=>{t[n.toLowerCase()]=e}));else{Array.isArray(e)||(e=Object.entries(e));for(const[n,r]of e)null!=r&&(t[n.toLowerCase()]=r)}return t}function Ld(e,...t){const n=new Headers(Zd(e)),r=n.get("user-agent")||"";return n.set("user-agent",[r,...t].filter(Boolean).join(" ")),Object.fromEntries(n.entries())}var $d=/"__proto__"\s*:/,qd=/"constructor"\s*:/;function Ud(e){const t=JSON.parse(e);return null===t||"object"!=typeof t||!1===$d.test(e)&&!1===qd.test(e)?t:function(e){let t=[e];for(;t.length;){const e=t;t=[];for(const n of e){if(Object.prototype.hasOwnProperty.call(n,"__proto__"))throw new SyntaxError("Object contains forbidden prototype property");if(Object.prototype.hasOwnProperty.call(n,"constructor")&&Object.prototype.hasOwnProperty.call(n.constructor,"prototype"))throw new SyntaxError("Object contains forbidden prototype property");for(const e in n){const r=n[e];r&&"object"==typeof r&&t.push(r)}}}return e}(t)}var Vd=Symbol.for("vercel.ai.validator");async function Hd({value:e,schema:t}){const n=await Kd({value:e,schema:t});if(!n.success)throw Yu.wrap({value:e,cause:n.error});return n.value}async function Kd({value:e,schema:t}){const n=function(e){return function(e){return"object"==typeof e&&null!==e&&Vd in e&&!0===e[Vd]&&"validate"in e}(e)?e:"function"==typeof e?e():(t=e,n=async e=>{const n=await t["~standard"].validate(e);return null==n.issues?{success:!0,value:n.value}:{success:!1,error:new Yu({value:e,cause:n.issues})}},{[Vd]:!0,validate:n});var t,n}(t);try{if(null==n.validate)return{success:!0,value:e,rawValue:e};const t=await n.validate(e);return t.success?{success:!0,value:t.value,rawValue:e}:{success:!1,error:Yu.wrap({value:e,cause:t.error}),rawValue:e}}catch(t){return{success:!1,error:Yu.wrap({value:e,cause:t}),rawValue:e}}}async function Wd({text:e,schema:t}){try{const n=function(e){const{stackTraceLimit:t}=Error;try{Error.stackTraceLimit=0}catch(t){return Ud(e)}try{return Ud(e)}finally{Error.stackTraceLimit=t}}(e);return null==t?{success:!0,value:n,rawValue:n}:await Kd({value:n,schema:t})}catch(t){return{success:!1,error:Ku.isInstance(t)?t:new Ku({text:e,cause:t}),rawValue:void 0}}}async function Jd(e){return"function"==typeof e&&(e=e()),Promise.resolve(e)}var Qd=(e,t)=>{let n=0;for(;nef(e,t,n)))};switch(r){case"string":case"format:date-time":return{type:"string",format:"date-time"};case"format:date":return{type:"string",format:"date"};case"integer":return tf(e)}}var tf=e=>{const t={type:"integer",format:"unix-time"};for(const n of e.checks)switch(n.kind){case"min":t.minimum=n.value;break;case"max":t.maximum=n.value}return t},nf=void 0,rf=/^[cC][^\s-]{8,}$/,uf=/^[0-9a-z]+$/,af=/^[0-9A-HJKMNP-TV-Z]{26}$/,of=/^(?!\.)(?!.*\.\.)([a-zA-Z0-9_'+\-\.]*)[a-zA-Z0-9_+-]@([a-zA-Z0-9][a-zA-Z0-9\-]*\.)+[a-zA-Z]{2,}$/,sf=()=>(void 0===nf&&(nf=RegExp("^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$","u")),nf),cf=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,lf=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,df=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,ff=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,pf=/^[a-zA-Z0-9_-]{21}$/,hf=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/;function vf(e,t){const n={type:"string"};if(e.checks)for(const r of e.checks)switch(r.kind){case"min":n.minLength="number"==typeof n.minLength?Math.max(n.minLength,r.value):r.value;break;case"max":n.maxLength="number"==typeof n.maxLength?Math.min(n.maxLength,r.value):r.value;break;case"email":switch(t.emailStrategy){case"format:email":yf(n,"email",r.message,t);break;case"format:idn-email":yf(n,"idn-email",r.message,t);break;case"pattern:zod":gf(n,of,r.message,t)}break;case"url":yf(n,"uri",r.message,t);break;case"uuid":yf(n,"uuid",r.message,t);break;case"regex":gf(n,r.regex,r.message,t);break;case"cuid":gf(n,rf,r.message,t);break;case"cuid2":gf(n,uf,r.message,t);break;case"startsWith":gf(n,RegExp(`^${mf(r.value,t)}`),r.message,t);break;case"endsWith":gf(n,RegExp(`${mf(r.value,t)}$`),r.message,t);break;case"datetime":yf(n,"date-time",r.message,t);break;case"date":yf(n,"date",r.message,t);break;case"time":yf(n,"time",r.message,t);break;case"duration":yf(n,"duration",r.message,t);break;case"length":n.minLength="number"==typeof n.minLength?Math.max(n.minLength,r.value):r.value,n.maxLength="number"==typeof n.maxLength?Math.min(n.maxLength,r.value):r.value;break;case"includes":gf(n,RegExp(mf(r.value,t)),r.message,t);break;case"ip":"v6"!==r.version&&yf(n,"ipv4",r.message,t),"v4"!==r.version&&yf(n,"ipv6",r.message,t);break;case"base64url":gf(n,ff,r.message,t);break;case"jwt":gf(n,hf,r.message,t);break;case"cidr":"v6"!==r.version&&gf(n,cf,r.message,t),"v4"!==r.version&&gf(n,lf,r.message,t);break;case"emoji":gf(n,sf(),r.message,t);break;case"ulid":gf(n,af,r.message,t);break;case"base64":switch(t.base64Strategy){case"format:binary":yf(n,"binary",r.message,t);break;case"contentEncoding:base64":n.contentEncoding="base64";break;case"pattern:zod":gf(n,df,r.message,t)}break;case"nanoid":gf(n,pf,r.message,t)}return n}function mf(e,t){return"escape"===t.patternStrategy?function(e){let t="";for(let n=0;ne.format)))?(e.anyOf||(e.anyOf=[]),e.format&&(e.anyOf.push({format:e.format}),delete e.format),e.anyOf.push({format:t,...n&&r.errorMessages&&{errorMessage:{format:n}}})):e.format=t}function gf(e,t,n,r){var u;e.pattern||(null==(u=e.allOf)?void 0:u.some((e=>e.pattern)))?(e.allOf||(e.allOf=[]),e.pattern&&(e.allOf.push({pattern:e.pattern}),delete e.pattern),e.allOf.push({pattern:Ff(t,r),...n&&r.errorMessages&&{errorMessage:{pattern:n}}})):e.pattern=Ff(t,r)}function Ff(e,t){var n;if(!t.applyRegexFlags||!e.flags)return e.source;const r=e.flags.includes("i"),u=e.flags.includes("m"),a=e.flags.includes("s"),i=r?e.source.toLowerCase():e.source;let o="",s=!1,c=!1,l=!1;for(let d=0;d{switch(t){case Td.ZodString:return vf(e,n);case Td.ZodNumber:return function(e){const t={type:"number"};if(!e.checks)return t;for(const n of e.checks)switch(n.kind){case"int":t.type="integer";break;case"min":n.inclusive?t.minimum=n.value:t.exclusiveMinimum=n.value;break;case"max":n.inclusive?t.maximum=n.value:t.exclusiveMaximum=n.value;break;case"multipleOf":t.multipleOf=n.value}return t}(e);case Td.ZodObject:return function(e,t){const n={type:"object",properties:{}},r=[],u=e.shape();for(const i in u){let e=u[i];if(void 0===e||void 0===e._def)continue;const a=Cf(e),o=kf(e._def,{...t,currentPath:[...t.currentPath,"properties",i],propertyPath:[...t.currentPath,"properties",i]});void 0!==o&&(n.properties[i]=o,a||r.push(i))}r.length&&(n.required=r);const a=function(e,t){if("ZodNever"!==e.catchall._def.typeName)return kf(e.catchall._def,{...t,currentPath:[...t.currentPath,"additionalProperties"]});switch(e.unknownKeys){case"passthrough":return t.allowedAdditionalProperties;case"strict":return t.rejectedAdditionalProperties;case"strip":return"strict"===t.removeAdditionalStrategy?t.allowedAdditionalProperties:t.rejectedAdditionalProperties}}(e,t);return void 0!==a&&(n.additionalProperties=a),n}(e,n);case Td.ZodBigInt:return function(e){const t={type:"integer",format:"int64"};if(!e.checks)return t;for(const n of e.checks)switch(n.kind){case"min":n.inclusive?t.minimum=n.value:t.exclusiveMinimum=n.value;break;case"max":n.inclusive?t.maximum=n.value:t.exclusiveMaximum=n.value;break;case"multipleOf":t.multipleOf=n.value}return t}(e);case Td.ZodBoolean:return{type:"boolean"};case Td.ZodDate:return ef(e,n);case Td.ZodUndefined:return{not:{}};case Td.ZodNull:return{type:"null"};case Td.ZodArray:return function(e,t){var n,r,u;const a={type:"array"};return(null==(n=e.type)?void 0:n._def)&&(null==(u=null==(r=e.type)?void 0:r._def)?void 0:u.typeName)!==Td.ZodAny&&(a.items=kf(e.type._def,{...t,currentPath:[...t.currentPath,"items"]})),e.minLength&&(a.minItems=e.minLength.value),e.maxLength&&(a.maxItems=e.maxLength.value),e.exactLength&&(a.minItems=e.exactLength.value,a.maxItems=e.exactLength.value),a}(e,n);case Td.ZodUnion:case Td.ZodDiscriminatedUnion:return function(e,t){const n=e.options instanceof Map?Array.from(e.options.values()):e.options;if(n.every((e=>e._def.typeName in bf&&(!e._def.checks||!e._def.checks.length)))){const e=n.reduce(((e,t)=>{const n=bf[t._def.typeName];return n&&!e.includes(n)?[...e,n]:e}),[]);return{type:e.length>1?e:e[0]}}if(n.every((e=>"ZodLiteral"===e._def.typeName&&!e.description))){const e=n.reduce(((e,t)=>{const n=typeof t._def.value;switch(n){case"string":case"number":case"boolean":return[...e,n];case"bigint":return[...e,"integer"];case"object":if(null===t._def.value)return[...e,"null"];default:return e}}),[]);if(e.length===n.length){const t=e.filter(((e,t,n)=>n.indexOf(e)===t));return{type:t.length>1?t:t[0],enum:n.reduce(((e,t)=>e.includes(t._def.value)?e:[...e,t._def.value]),[])}}}else if(n.every((e=>"ZodEnum"===e._def.typeName)))return{type:"string",enum:n.reduce(((e,t)=>[...e,...t._def.values.filter((t=>!e.includes(t)))]),[])};return((e,t)=>{const n=(e.options instanceof Map?Array.from(e.options.values()):e.options).map(((e,n)=>kf(e._def,{...t,currentPath:[...t.currentPath,"anyOf",`${n}`]}))).filter((e=>!!e&&(!t.strictUnions||"object"==typeof e&&Object.keys(e).length>0)));return n.length?{anyOf:n}:void 0})(e,t)}(e,n);case Td.ZodIntersection:return function(e,t){const n=[kf(e.left._def,{...t,currentPath:[...t.currentPath,"allOf","0"]}),kf(e.right._def,{...t,currentPath:[...t.currentPath,"allOf","1"]})].filter((e=>!!e)),r=[];return n.forEach((e=>{if("type"in(t=e)&&"string"===t.type||!("allOf"in t)){let t=e;if("additionalProperties"in e&&!1===e.additionalProperties){const{additionalProperties:n,...r}=e;t=r}r.push(t)}else r.push(...e.allOf);var t})),r.length?{allOf:r}:void 0}(e,n);case Td.ZodTuple:return function(e,t){return e.rest?{type:"array",minItems:e.items.length,items:e.items.map(((e,n)=>kf(e._def,{...t,currentPath:[...t.currentPath,"items",`${n}`]}))).reduce(((e,t)=>void 0===t?e:[...e,t]),[]),additionalItems:kf(e.rest._def,{...t,currentPath:[...t.currentPath,"additionalItems"]})}:{type:"array",minItems:e.items.length,maxItems:e.items.length,items:e.items.map(((e,n)=>kf(e._def,{...t,currentPath:[...t.currentPath,"items",`${n}`]}))).reduce(((e,t)=>void 0===t?e:[...e,t]),[])}}(e,n);case Td.ZodRecord:return Ef(e,n);case Td.ZodLiteral:return function(e){const t=typeof e.value;return"bigint"!==t&&"number"!==t&&"boolean"!==t&&"string"!==t?{type:Array.isArray(e.value)?"array":"object"}:{type:"bigint"===t?"integer":t,const:e.value}}(e);case Td.ZodEnum:return function(e){return{type:"string",enum:Array.from(e.values)}}(e);case Td.ZodNativeEnum:return function(e){const t=e.values,n=Object.keys(e.values).filter((e=>"number"!=typeof t[t[e]])).map((e=>t[e])),r=Array.from(new Set(n.map((e=>typeof e))));return{type:1===r.length?"string"===r[0]?"string":"number":["string","number"],enum:n}}(e);case Td.ZodNullable:return function(e,t){if(["ZodString","ZodNumber","ZodBigInt","ZodBoolean","ZodNull"].includes(e.innerType._def.typeName)&&(!e.innerType._def.checks||!e.innerType._def.checks.length))return{type:[bf[e.innerType._def.typeName],"null"]};const n=kf(e.innerType._def,{...t,currentPath:[...t.currentPath,"anyOf","0"]});return n&&{anyOf:[n,{type:"null"}]}}(e,n);case Td.ZodOptional:return((e,t)=>{var n;if(t.currentPath.toString()===(null==(n=t.propertyPath)?void 0:n.toString()))return kf(e.innerType._def,t);const r=kf(e.innerType._def,{...t,currentPath:[...t.currentPath,"anyOf","1"]});return r?{anyOf:[{not:{}},r]}:{}})(e,n);case Td.ZodMap:return function(e,t){return"record"===t.mapStrategy?Ef(e,t):{type:"array",maxItems:125,items:{type:"array",items:[kf(e.keyType._def,{...t,currentPath:[...t.currentPath,"items","items","0"]})||{},kf(e.valueType._def,{...t,currentPath:[...t.currentPath,"items","items","1"]})||{}],minItems:2,maxItems:2}}}(e,n);case Td.ZodSet:return function(e,t){const n={type:"array",uniqueItems:!0,items:kf(e.valueType._def,{...t,currentPath:[...t.currentPath,"items"]})};return e.minSize&&(n.minItems=e.minSize.value),e.maxSize&&(n.maxItems=e.maxSize.value),n}(e,n);case Td.ZodLazy:return()=>e.getter()._def;case Td.ZodPromise:return function(e,t){return kf(e.type._def,t)}(e,n);case Td.ZodNaN:case Td.ZodNever:return{not:{}};case Td.ZodEffects:return function(e,t){return"input"===t.effectStrategy?kf(e.schema._def,t):{}}(e,n);case Td.ZodAny:case Td.ZodUnknown:return{};case Td.ZodDefault:return function(e,t){return{...kf(e.innerType._def,t),default:e.defaultValue()}}(e,n);case Td.ZodBranded:return Xd(e,n);case Td.ZodReadonly:case Td.ZodCatch:return((e,t)=>kf(e.innerType._def,t))(e,n);case Td.ZodPipeline:return((e,t)=>{if("input"===t.pipeStrategy)return kf(e.in._def,t);if("output"===t.pipeStrategy)return kf(e.out._def,t);const n=kf(e.in._def,{...t,currentPath:[...t.currentPath,"allOf","0"]});return{allOf:[n,kf(e.out._def,{...t,currentPath:[...t.currentPath,"allOf",n?"1":"0"]})].filter((e=>void 0!==e))}})(e,n);case Td.ZodFunction:case Td.ZodVoid:case Td.ZodSymbol:default:return}};function kf(e,t,n=!1){var r;const u=t.seen.get(e);if(t.override){const a=null==(r=t.override)?void 0:r.call(t,e,t,u,n);if(a!==Gd)return a}if(u&&!n){const e=wf(u,t);if(void 0!==e)return e}const a={def:e,path:t.currentPath,jsonSchema:void 0};t.seen.set(e,a);const i=Af(e,e.typeName,t),o="function"==typeof i?kf(i(),t):i;if(o&&_f(e,t,o),t.postProcess){const n=t.postProcess(o,e,t);return a.jsonSchema=o,n}return a.jsonSchema=o,o}var wf=(e,t)=>{switch(t.$refStrategy){case"root":return{$ref:e.path.join("/")};case"relative":return{$ref:Qd(t.currentPath,e.path)};case"none":case"seen":return e.path.lengtht.currentPath[n]===e))?(console.warn(`Recursive reference detected at ${t.currentPath.join("/")}! Defaulting to any`),{}):"seen"===t.$refStrategy?{}:void 0}},_f=(e,t,n)=>(e.description&&(n.description=e.description),n),Sf=(e,t)=>{var n;const r=(e=>{const t=(e=>"string"==typeof e?{...Yd,name:e}:{...Yd,...e})(e),n=void 0!==t.name?[...t.basePath,t.definitionPath,t.name]:t.basePath;return{...t,currentPath:n,propertyPath:void 0,seen:new Map(Object.entries(t.definitions).map((([e,n])=>[n._def,{def:n._def,path:[...t.basePath,t.definitionPath,e],jsonSchema:void 0}])))}})(t);let u="object"==typeof t&&t.definitions?Object.entries(t.definitions).reduce(((e,[t,n])=>{var u;return{...e,[t]:null!=(u=kf(n._def,{...r,currentPath:[...r.basePath,r.definitionPath,t]},!0))?u:{}}}),{}):void 0;const a="string"==typeof t?t:"title"===(null==t?void 0:t.nameStrategy)||null==t?void 0:t.name,i=null!=(n=kf(e._def,void 0===a?r:{...r,currentPath:[...r.basePath,r.definitionPath,a]},!1))?n:{},o="object"==typeof t&&void 0!==t.name&&"title"===t.nameStrategy?t.name:void 0;void 0!==o&&(i.title=o);const s=void 0===a?u?{...i,[r.definitionPath]:u}:i:{$ref:[..."relative"===r.$refStrategy?[]:r.basePath,r.definitionPath,a].join("/"),[r.definitionPath]:{...u,[a]:i}};return s.$schema="http://json-schema.org/draft-07/schema#",s};function xf(e,t){return function(e){return"_zod"in e}(e)?function(e,t){return If((()=>function(e,t){if(e instanceof es){var n,r=new bs(t),u={},a=f(e._idmap.entries());try{for(a.s();!(n=a.n()).done;){var i=A(n.value,2),o=(i[0],i[1]);r.process(o)}}catch(e){a.e(e)}finally{a.f()}var s,c={},l={registry:e,uri:null==t?void 0:t.uri,defs:u},d=f(e._idmap.entries());try{for(d.s();!(s=d.n()).done;){var h=A(s.value,2),v=h[0],m=h[1];c[v]=r.emit(m,g(g({},t),{},{external:l}))}}catch(e){d.e(e)}finally{d.f()}if(Object.keys(u).length>0){var D="draft-2020-12"===r.target?"$defs":"definitions";c.__shared=p({},D,u)}return{schemas:c}}var y=new bs(t);return y.process(e),y.emit(e,t)}(e,{target:"draft-7",io:"output",reused:"inline"})),{validate:async t=>{const n=await Ps(e,t);return n.success?{success:!0,value:n.data}:{success:!1,error:n.error}}})}(e):function(e){return If((()=>Sf(e,{$refStrategy:"none"})),{validate:async t=>{const n=await e.safeParseAsync(t);return n.success?{success:!0,value:n.data}:{success:!1,error:n.error}}})}(e)}var Bf=Symbol.for("vercel.ai.schema");function If(e,{validate:t}={}){return{[Bf]:!0,_type:void 0,[Vd]:!0,get jsonSchema(){return"function"==typeof e&&(e=e()),e},validate:t}}var Of,Tf=Object.defineProperty,Pf="AI_NoObjectGeneratedError",jf=`vercel.ai.error.${Pf}`,Nf=Symbol.for(jf),zf=class extends Nu{constructor({message:e="No object generated.",cause:t,text:n,response:r,usage:u,finishReason:a}){super({name:Pf,message:e,cause:t}),this[Of]=!0,this.text=n,this.response=r,this.usage=u,this.finishReason=a}static isInstance(e){return Nu.hasMarker(e,jf)}};Of=Nf;var Rf="5.0.93",Mf=Ic([Hs(),rl(Uint8Array),rl(ArrayBuffer),nl((e=>{var t,n;return null!=(n=null==(t=globalThis.Buffer)?void 0:t.isBuffer(e))&&n}),{message:"Must be a Buffer"})]),Zf=new el({type:"lazy",getter:()=>Ic([Fc(),Hs(),hc(),yc(),jc(Hs(),Zf),wc(Zf)])}),Lf=jc(Hs(),jc(Hs(),Zf)),$f=Sc({type:Mc("text"),text:Hs(),providerOptions:Lf.optional()}),qf=Sc({type:Mc("image"),image:Ic([Mf,rl(URL)]),mediaType:Hs().optional(),providerOptions:Lf.optional()}),Uf=Sc({type:Mc("file"),data:Ic([Mf,rl(URL)]),filename:Hs().optional(),mediaType:Hs(),providerOptions:Lf.optional()}),Vf=Sc({type:Mc("reasoning"),text:Hs(),providerOptions:Lf.optional()}),Hf=Sc({type:Mc("tool-call"),toolCallId:Hs(),toolName:Hs(),input:bc(),providerOptions:Lf.optional(),providerExecuted:yc().optional()}),Kf=("type",new Oc(g({type:"union",options:[Sc({type:Mc("text"),value:Hs()}),Sc({type:Mc("json"),value:Zf}),Sc({type:Mc("error-text"),value:Hs()}),Sc({type:Mc("error-json"),value:Zf}),Sc({type:Mc("content"),value:wc(Ic([Sc({type:Mc("text"),text:Hs()}),Sc({type:Mc("media"),data:Hs(),mediaType:Hs()})]))})],discriminator:"type"},ka(undefined)))),Wf=Sc({type:Mc("tool-result"),toolCallId:Hs(),toolName:Hs(),output:Kf,providerOptions:Lf.optional()}),Jf=Sc({role:Mc("system"),content:Hs(),providerOptions:Lf.optional()}),Qf=Sc({role:Mc("user"),content:Ic([Hs(),wc(Ic([$f,qf,Uf]))]),providerOptions:Lf.optional()}),Gf=Sc({role:Mc("assistant"),content:Ic([Hs(),wc(Ic([$f,Uf,Vf,Hf,Wf]))]),providerOptions:Lf.optional()});Ic([Jf,Qf,Gf,Sc({role:Mc("tool"),content:wc(Wf),providerOptions:Lf.optional()})]),zd({prefix:"aitxt",size:24}),TransformStream;var Yf=function(e){let t;return()=>(null==t&&(t=xf(Ic([xc({type:Mc("text-start"),id:Hs(),providerMetadata:Lf.optional()}),xc({type:Mc("text-delta"),id:Hs(),delta:Hs(),providerMetadata:Lf.optional()}),xc({type:Mc("text-end"),id:Hs(),providerMetadata:Lf.optional()}),xc({type:Mc("error"),errorText:Hs()}),xc({type:Mc("tool-input-start"),toolCallId:Hs(),toolName:Hs(),providerExecuted:yc().optional(),dynamic:yc().optional()}),xc({type:Mc("tool-input-delta"),toolCallId:Hs(),inputTextDelta:Hs()}),xc({type:Mc("tool-input-available"),toolCallId:Hs(),toolName:Hs(),input:bc(),providerExecuted:yc().optional(),providerMetadata:Lf.optional(),dynamic:yc().optional()}),xc({type:Mc("tool-input-error"),toolCallId:Hs(),toolName:Hs(),input:bc(),providerExecuted:yc().optional(),providerMetadata:Lf.optional(),dynamic:yc().optional(),errorText:Hs()}),xc({type:Mc("tool-output-available"),toolCallId:Hs(),output:bc(),providerExecuted:yc().optional(),dynamic:yc().optional(),preliminary:yc().optional()}),xc({type:Mc("tool-output-error"),toolCallId:Hs(),errorText:Hs(),providerExecuted:yc().optional(),dynamic:yc().optional()}),xc({type:Mc("reasoning-start"),id:Hs(),providerMetadata:Lf.optional()}),xc({type:Mc("reasoning-delta"),id:Hs(),delta:Hs(),providerMetadata:Lf.optional()}),xc({type:Mc("reasoning-end"),id:Hs(),providerMetadata:Lf.optional()}),xc({type:Mc("source-url"),sourceId:Hs(),url:Hs(),title:Hs().optional(),providerMetadata:Lf.optional()}),xc({type:Mc("source-document"),sourceId:Hs(),mediaType:Hs(),title:Hs(),filename:Hs().optional(),providerMetadata:Lf.optional()}),xc({type:Mc("file"),url:Hs(),mediaType:Hs(),providerMetadata:Lf.optional()}),xc({type:nl((e=>"string"==typeof e&&e.startsWith("data-")),{message:'Type must start with "data-"'}),id:Hs().optional(),data:bc(),transient:yc().optional()}),xc({type:Mc("start-step")}),xc({type:Mc("finish-step")}),xc({type:Mc("start"),messageId:Hs().optional(),messageMetadata:bc().optional()}),xc({type:Mc("finish"),finishReason:zc(["stop","length","content-filter","tool-calls","error","other","unknown"]).optional(),messageMetadata:bc().optional()}),xc({type:Mc("abort")}),xc({type:Mc("message-metadata"),messageMetadata:bc()})]))),t)}();function Xf(e,t){if(void 0===e&&void 0===t)return;if(void 0===e)return t;if(void 0===t)return e;const n={...e};for(const r in t)if(Object.prototype.hasOwnProperty.call(t,r)){const u=t[r];if(void 0===u)continue;const a=r in e?e[r]:void 0,i=!(null===u||"object"!=typeof u||Array.isArray(u)||u instanceof Date||u instanceof RegExp),o=!(null==a||"object"!=typeof a||Array.isArray(a)||a instanceof Date||a instanceof RegExp);n[r]=i&&o?Xf(a,u):u}return n}function ep(e){const t=["ROOT"];let n=-1,r=null;function u(e,u,a){switch(e){case'"':n=u,t.pop(),t.push(a),t.push("INSIDE_STRING");break;case"f":case"t":case"n":n=u,r=u,t.pop(),t.push(a),t.push("INSIDE_LITERAL");break;case"-":t.pop(),t.push(a),t.push("INSIDE_NUMBER");break;case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":n=u,t.pop(),t.push(a),t.push("INSIDE_NUMBER");break;case"{":n=u,t.pop(),t.push(a),t.push("INSIDE_OBJECT_START");break;case"[":n=u,t.pop(),t.push(a),t.push("INSIDE_ARRAY_START")}}function a(e,r){switch(e){case",":t.pop(),t.push("INSIDE_OBJECT_AFTER_COMMA");break;case"}":n=r,t.pop()}}function i(e,r){switch(e){case",":t.pop(),t.push("INSIDE_ARRAY_AFTER_COMMA");break;case"]":n=r,t.pop()}}for(let s=0;s=0;s--)switch(t[s]){case"INSIDE_STRING":o+='"';break;case"INSIDE_OBJECT_KEY":case"INSIDE_OBJECT_AFTER_KEY":case"INSIDE_OBJECT_AFTER_COMMA":case"INSIDE_OBJECT_START":case"INSIDE_OBJECT_BEFORE_VALUE":case"INSIDE_OBJECT_AFTER_VALUE":o+="}";break;case"INSIDE_ARRAY_START":case"INSIDE_ARRAY_AFTER_COMMA":case"INSIDE_ARRAY_AFTER_VALUE":o+="]";break;case"INSIDE_LITERAL":{const t=e.substring(r,e.length);"true".startsWith(t)?o+="true".slice(t.length):"false".startsWith(t)?o+="false".slice(t.length):"null".startsWith(t)&&(o+="null".slice(t.length))}}return o}async function tp(e){if(void 0===e)return{value:void 0,state:"undefined-input"};let t=await Wd({text:e});return t.success?{value:t.value,state:"successful-parse"}:(t=await Wd({text:ep(e)}),t.success?{value:t.value,state:"repaired-parse"}:{value:void 0,state:"failed-parse"})}function np(e){return e.type.startsWith("tool-")}function rp(e){return np(e)||function(e){return"dynamic-tool"===e.type}(e)}function up(e){return e.type.split("-").slice(1).join("-")}function ap({lastMessage:e,messageId:t}){return{message:"assistant"===(null==e?void 0:e.role)?e:{id:t,metadata:void 0,role:"assistant",parts:[]},activeTextParts:{},activeReasoningParts:{},partialToolCalls:{}}}function ip({stream:e,messageMetadataSchema:t,dataPartSchemas:n,runUpdateMessageJob:r,onError:u,onToolCall:a,onData:i}){return e.pipeThrough(new TransformStream({async transform(e,o){await r((async({state:r,write:s})=>{var c,l,d,f;function p(e){const t=r.message.parts.filter(np).find((t=>t.toolCallId===e));if(null==t)throw new Error("tool-output-error must be preceded by a tool-input-available");return t}function h(e){const t=r.message.parts.filter((e=>"dynamic-tool"===e.type)).find((t=>t.toolCallId===e));if(null==t)throw new Error("tool-output-error must be preceded by a tool-input-available");return t}function v(e){var t;const n=r.message.parts.find((t=>np(t)&&t.toolCallId===e.toolCallId)),u=e,a=n;null!=n?(n.state=e.state,a.input=u.input,a.output=u.output,a.errorText=u.errorText,a.rawInput=u.rawInput,a.preliminary=u.preliminary,a.providerExecuted=null!=(t=u.providerExecuted)?t:n.providerExecuted,null!=u.providerMetadata&&"input-available"===n.state&&(n.callProviderMetadata=u.providerMetadata)):r.message.parts.push({type:`tool-${e.toolName}`,toolCallId:e.toolCallId,state:e.state,input:u.input,output:u.output,rawInput:u.rawInput,errorText:u.errorText,providerExecuted:u.providerExecuted,preliminary:u.preliminary,...null!=u.providerMetadata?{callProviderMetadata:u.providerMetadata}:{}})}function m(e){var t,n;const u=r.message.parts.find((t=>"dynamic-tool"===t.type&&t.toolCallId===e.toolCallId)),a=e,i=u;null!=u?(u.state=e.state,i.toolName=e.toolName,i.input=a.input,i.output=a.output,i.errorText=a.errorText,i.rawInput=null!=(t=a.rawInput)?t:i.rawInput,i.preliminary=a.preliminary,i.providerExecuted=null!=(n=a.providerExecuted)?n:u.providerExecuted,null!=a.providerMetadata&&"input-available"===u.state&&(u.callProviderMetadata=a.providerMetadata)):r.message.parts.push({type:"dynamic-tool",toolName:e.toolName,toolCallId:e.toolCallId,state:e.state,input:a.input,output:a.output,errorText:a.errorText,preliminary:a.preliminary,providerExecuted:a.providerExecuted,...null!=a.providerMetadata?{callProviderMetadata:a.providerMetadata}:{}})}async function D(e){if(null!=e){const n=null!=r.message.metadata?Xf(r.message.metadata,e):e;null!=t&&await Hd({value:n,schema:t}),r.message.metadata=n}}switch(e.type){case"text-start":{const t={type:"text",text:"",providerMetadata:e.providerMetadata,state:"streaming"};r.activeTextParts[e.id]=t,r.message.parts.push(t),s();break}case"text-delta":{const t=r.activeTextParts[e.id];t.text+=e.delta,t.providerMetadata=null!=(c=e.providerMetadata)?c:t.providerMetadata,s();break}case"text-end":{const t=r.activeTextParts[e.id];t.state="done",t.providerMetadata=null!=(l=e.providerMetadata)?l:t.providerMetadata,delete r.activeTextParts[e.id],s();break}case"reasoning-start":{const t={type:"reasoning",text:"",providerMetadata:e.providerMetadata,state:"streaming"};r.activeReasoningParts[e.id]=t,r.message.parts.push(t),s();break}case"reasoning-delta":{const t=r.activeReasoningParts[e.id];t.text+=e.delta,t.providerMetadata=null!=(d=e.providerMetadata)?d:t.providerMetadata,s();break}case"reasoning-end":{const t=r.activeReasoningParts[e.id];t.providerMetadata=null!=(f=e.providerMetadata)?f:t.providerMetadata,t.state="done",delete r.activeReasoningParts[e.id],s();break}case"file":r.message.parts.push({type:"file",mediaType:e.mediaType,url:e.url}),s();break;case"source-url":r.message.parts.push({type:"source-url",sourceId:e.sourceId,url:e.url,title:e.title,providerMetadata:e.providerMetadata}),s();break;case"source-document":r.message.parts.push({type:"source-document",sourceId:e.sourceId,mediaType:e.mediaType,title:e.title,filename:e.filename,providerMetadata:e.providerMetadata}),s();break;case"tool-input-start":{const t=r.message.parts.filter(np);r.partialToolCalls[e.toolCallId]={text:"",toolName:e.toolName,index:t.length,dynamic:e.dynamic},e.dynamic?m({toolCallId:e.toolCallId,toolName:e.toolName,state:"input-streaming",input:void 0,providerExecuted:e.providerExecuted}):v({toolCallId:e.toolCallId,toolName:e.toolName,state:"input-streaming",input:void 0,providerExecuted:e.providerExecuted}),s();break}case"tool-input-delta":{const t=r.partialToolCalls[e.toolCallId];t.text+=e.inputTextDelta;const{value:n}=await tp(t.text);t.dynamic?m({toolCallId:e.toolCallId,toolName:t.toolName,state:"input-streaming",input:n}):v({toolCallId:e.toolCallId,toolName:t.toolName,state:"input-streaming",input:n}),s();break}case"tool-input-available":e.dynamic?m({toolCallId:e.toolCallId,toolName:e.toolName,state:"input-available",input:e.input,providerExecuted:e.providerExecuted,providerMetadata:e.providerMetadata}):v({toolCallId:e.toolCallId,toolName:e.toolName,state:"input-available",input:e.input,providerExecuted:e.providerExecuted,providerMetadata:e.providerMetadata}),s(),a&&!e.providerExecuted&&await a({toolCall:e});break;case"tool-input-error":e.dynamic?m({toolCallId:e.toolCallId,toolName:e.toolName,state:"output-error",input:e.input,errorText:e.errorText,providerExecuted:e.providerExecuted,providerMetadata:e.providerMetadata}):v({toolCallId:e.toolCallId,toolName:e.toolName,state:"output-error",input:void 0,rawInput:e.input,errorText:e.errorText,providerExecuted:e.providerExecuted,providerMetadata:e.providerMetadata}),s();break;case"tool-output-available":if(e.dynamic){const t=h(e.toolCallId);m({toolCallId:e.toolCallId,toolName:t.toolName,state:"output-available",input:t.input,output:e.output,preliminary:e.preliminary})}else{const t=p(e.toolCallId);v({toolCallId:e.toolCallId,toolName:up(t),state:"output-available",input:t.input,output:e.output,providerExecuted:e.providerExecuted,preliminary:e.preliminary})}s();break;case"tool-output-error":if(e.dynamic){const t=h(e.toolCallId);m({toolCallId:e.toolCallId,toolName:t.toolName,state:"output-error",input:t.input,errorText:e.errorText,providerExecuted:e.providerExecuted})}else{const t=p(e.toolCallId);v({toolCallId:e.toolCallId,toolName:up(t),state:"output-error",input:t.input,rawInput:t.rawInput,errorText:e.errorText,providerExecuted:e.providerExecuted})}s();break;case"start-step":r.message.parts.push({type:"step-start"});break;case"finish-step":r.activeTextParts={},r.activeReasoningParts={};break;case"start":null!=e.messageId&&(r.message.id=e.messageId),await D(e.messageMetadata),null==e.messageId&&null==e.messageMetadata||s();break;case"finish":null!=e.finishReason&&(r.finishReason=e.finishReason),await D(e.messageMetadata),null!=e.messageMetadata&&s();break;case"message-metadata":await D(e.messageMetadata),null!=e.messageMetadata&&s();break;case"error":null==u||u(new Error(e.errorText));break;default:if(function(e){return e.type.startsWith("data-")}(e)){null!=(null==n?void 0:n[e.type])&&await Hd({value:e.data,schema:n[e.type]});const t=e;if(t.transient){null==i||i(t);break}const u=null!=t.id?r.message.parts.find((e=>t.type===e.type&&t.id===e.id)):void 0;null!=u?u.data=t.data:r.message.parts.push(t),null==i||i(t),s()}}o.enqueue(e)}))}}))}zd({prefix:"aitxt",size:24}),zd({prefix:"aiobj",size:24});var op=class{constructor(){this.queue=[],this.isProcessing=!1}async processQueue(){if(!this.isProcessing){for(this.isProcessing=!0;this.queue.length>0;)await this.queue[0](),this.queue.shift();this.isProcessing=!1}}async run(e){return new Promise(((t,n)=>{this.queue.push((async()=>{try{await e(),t()}catch(e){n(e)}})),this.processQueue()}))}};zd({prefix:"aiobj",size:24}),((e,t)=>{for(var n in t)Tf(e,n,{get:t[n],enumerable:!0})})({},{object:()=>dp,text:()=>lp});var sp,cp,lp=()=>({type:"text",responseFormat:{type:"text"},parsePartial:async({text:e})=>({partial:e}),parseOutput:async({text:e})=>e}),dp=({schema:e})=>{const t=function(e){return null==e?If({properties:{},additionalProperties:!1}):"object"==typeof(t=e)&&null!==t&&Bf in t&&!0===t[Bf]&&"jsonSchema"in t&&"validate"in t?e:"function"==typeof e?e():xf(e);var t}(e);return{type:"object",responseFormat:{type:"json",schema:t.jsonSchema},async parsePartial({text:e}){const t=await tp(e);switch(t.state){case"failed-parse":case"undefined-input":return;case"repaired-parse":case"successful-parse":return{partial:t.value};default:{const e=t.state;throw new Error(`Unsupported parse state: ${e}`)}}},async parseOutput({text:e},n){const r=await Wd({text:e});if(!r.success)throw new zf({message:"No object generated: could not parse the response.",cause:r.error,text:e,response:n.response,usage:n.usage,finishReason:n.finishReason});const u=await Kd({value:r.value,schema:t});if(!u.success)throw new zf({message:"No object generated: response did not match schema.",cause:u.error,text:e,response:n.response,usage:n.usage,finishReason:n.finishReason});return u.value}}},fp=class{constructor({api:e="/api/chat",credentials:t,headers:n,body:r,fetch:u,prepareSendMessagesRequest:a,prepareReconnectToStreamRequest:i}){this.api=e,this.credentials=t,this.headers=n,this.body=r,this.fetch=u,this.prepareSendMessagesRequest=a,this.prepareReconnectToStreamRequest=i}async sendMessages({abortSignal:e,...t}){var n,r,u,a,i;const o=await Jd(this.body),s=await Jd(this.headers),c=await Jd(this.credentials),l={...Zd(s),...Zd(t.headers)},d=await(null==(n=this.prepareSendMessagesRequest)?void 0:n.call(this,{api:this.api,id:t.chatId,messages:t.messages,body:{...o,...t.body},headers:l,credentials:c,requestMetadata:t.metadata,trigger:t.trigger,messageId:t.messageId})),f=null!=(r=null==d?void 0:d.api)?r:this.api,p=void 0!==(null==d?void 0:d.headers)?Zd(d.headers):l,h=void 0!==(null==d?void 0:d.body)?d.body:{...o,...t.body,id:t.chatId,messages:t.messages,trigger:t.trigger,messageId:t.messageId},v=null!=(u=null==d?void 0:d.credentials)?u:c,m=null!=(a=this.fetch)?a:globalThis.fetch,D=await m(f,{method:"POST",headers:Ld({"Content-Type":"application/json",...p},`ai-sdk/${Rf}`,Md()),body:JSON.stringify(h),credentials:v,signal:e});if(!D.ok)throw new Error(null!=(i=await D.text())?i:"Failed to fetch the chat response.");if(!D.body)throw new Error("The response body is empty.");return this.processResponseStream(D.body)}async reconnectToStream(e){var t,n,r,u,a;const i=await Jd(this.body),o=await Jd(this.headers),s=await Jd(this.credentials),c={...Zd(o),...Zd(e.headers)},l=await(null==(t=this.prepareReconnectToStreamRequest)?void 0:t.call(this,{api:this.api,id:e.chatId,body:{...i,...e.body},headers:c,credentials:s,requestMetadata:e.metadata})),d=null!=(n=null==l?void 0:l.api)?n:`${this.api}/${e.chatId}/stream`,f=void 0!==(null==l?void 0:l.headers)?Zd(l.headers):c,p=null!=(r=null==l?void 0:l.credentials)?r:s,h=null!=(u=this.fetch)?u:globalThis.fetch,v=await h(d,{method:"GET",headers:Ld(f,`ai-sdk/${Rf}`,Md()),credentials:p});if(204===v.status)return null;if(!v.ok)throw new Error(null!=(a=await v.text())?a:"Failed to fetch the chat response.");if(!v.body)throw new Error("The response body is empty.");return this.processResponseStream(v.body)}},pp=class extends fp{constructor(e={}){super(e)}processResponseStream(e){return function({stream:e,schema:t}){return e.pipeThrough(new TextDecoderStream).pipeThrough(new ta).pipeThrough(new TransformStream({async transform({data:e},n){"[DONE]"!==e&&n.enqueue(await Wd({text:e,schema:t}))}}))}({stream:e,schema:Yf}).pipeThrough(new TransformStream({async transform(e,t){if(!e.success)throw e.error;t.enqueue(e.value)}}))}},hp=class{constructor({generateId:e=Rd,id:t=e(),transport:n=new pp,messageMetadataSchema:r,dataPartSchemas:u,state:a,onError:i,onToolCall:o,onFinish:s,onData:c,sendAutomaticallyWhen:l}){this.activeResponse=void 0,this.jobExecutor=new op,this.sendMessage=async(e,t)=>{var n,r,u,a;if(null==e)return void await this.makeRequest({trigger:"submit-message",messageId:null==(n=this.lastMessage)?void 0:n.id,...t});let i;if("text"in e||"files"in e){const t=Array.isArray(e.files)?e.files:await async function(e){if(null==e)return[];if(!(globalThis.FileList&&e instanceof globalThis.FileList))throw new Error("FileList is not supported in the current environment");return Promise.all(Array.from(e).map((async e=>{const{name:t,type:n}=e;return{type:"file",mediaType:n,filename:t,url:await new Promise(((t,n)=>{const r=new FileReader;r.onload=e=>{var n;t(null==(n=e.target)?void 0:n.result)},r.onerror=e=>n(e),r.readAsDataURL(e)}))}})))}(e.files);i={parts:[...t,..."text"in e&&null!=e.text?[{type:"text",text:e.text}]:[]]}}else i=e;if(null!=e.messageId){const t=this.state.messages.findIndex((t=>t.id===e.messageId));if(-1===t)throw new Error(`message with id ${e.messageId} not found`);if("user"!==this.state.messages[t].role)throw new Error(`message with id ${e.messageId} is not a user message`);this.state.messages=this.state.messages.slice(0,t+1),this.state.replaceMessage(t,{...i,id:e.messageId,role:null!=(r=i.role)?r:"user",metadata:e.metadata})}else this.state.pushMessage({...i,id:null!=(u=i.id)?u:this.generateId(),role:null!=(a=i.role)?a:"user",metadata:e.metadata});await this.makeRequest({trigger:"submit-message",messageId:e.messageId,...t})},this.regenerate=async({messageId:e,...t}={})=>{const n=null==e?this.state.messages.length-1:this.state.messages.findIndex((t=>t.id===e));if(-1===n)throw new Error(`message ${e} not found`);this.state.messages=this.state.messages.slice(0,"assistant"===this.messages[n].role?n:n+1),await this.makeRequest({trigger:"regenerate-message",messageId:e,...t})},this.resumeStream=async(e={})=>{await this.makeRequest({trigger:"resume-stream",...e})},this.clearError=()=>{"error"===this.status&&(this.state.error=void 0,this.setStatus({status:"ready"}))},this.addToolOutput=async({state:e="output-available",tool:t,toolCallId:n,output:r,errorText:u})=>this.jobExecutor.run((async()=>{var t,a;const i=this.state.messages,o=i[i.length-1];this.state.replaceMessage(i.length-1,{...o,parts:o.parts.map((t=>rp(t)&&t.toolCallId===n?{...t,state:e,output:r,errorText:u}:t))}),this.activeResponse&&(this.activeResponse.state.message.parts=this.activeResponse.state.message.parts.map((t=>rp(t)&&t.toolCallId===n?{...t,state:e,output:r,errorText:u}:t))),"streaming"!==this.status&&"submitted"!==this.status&&(null==(t=this.sendAutomaticallyWhen)?void 0:t.call(this,{messages:this.state.messages}))&&this.makeRequest({trigger:"submit-message",messageId:null==(a=this.lastMessage)?void 0:a.id})})),this.addToolResult=this.addToolOutput,this.stop=async()=>{var e;"streaming"!==this.status&&"submitted"!==this.status||(null==(e=this.activeResponse)?void 0:e.abortController)&&this.activeResponse.abortController.abort()},this.id=t,this.transport=n,this.generateId=e,this.messageMetadataSchema=r,this.dataPartSchemas=u,this.state=a,this.onError=i,this.onToolCall=o,this.onFinish=s,this.onData=c,this.sendAutomaticallyWhen=l}get status(){return this.state.status}setStatus({status:e,error:t}){this.status!==e&&(this.state.status=e,this.state.error=t)}get error(){return this.state.error}get messages(){return this.state.messages}get lastMessage(){return this.state.messages[this.state.messages.length-1]}set messages(e){this.state.messages=e}async makeRequest({trigger:e,metadata:t,headers:n,body:r,messageId:u}){var a,i,o,s;this.setStatus({status:"submitted",error:void 0});const c=this.lastMessage;let l=!1,d=!1,f=!1;try{const a={state:ap({lastMessage:this.state.snapshot(c),messageId:this.generateId()}),abortController:new AbortController};let i;if(a.abortController.signal.addEventListener("abort",(()=>{l=!0})),this.activeResponse=a,"resume-stream"===e){const e=await this.transport.reconnectToStream({chatId:this.id,metadata:t,headers:n,body:r});if(null==e)return void this.setStatus({status:"ready"});i=e}else i=await this.transport.sendMessages({chatId:this.id,messages:this.state.messages,abortSignal:a.abortController.signal,metadata:t,headers:n,body:r,trigger:e,messageId:u});const o=e=>this.jobExecutor.run((()=>e({state:a.state,write:()=>{var e;this.setStatus({status:"streaming"}),a.state.message.id===(null==(e=this.lastMessage)?void 0:e.id)?this.state.replaceMessage(this.state.messages.length-1,a.state.message):this.state.pushMessage(a.state.message)}})));await async function({stream:e,onError:t}){const n=e.getReader();try{for(;;){const{done:e}=await n.read();if(e)break}}catch(e){null==t||t(e)}finally{n.releaseLock()}}({stream:ip({stream:i,onToolCall:this.onToolCall,onData:this.onData,messageMetadataSchema:this.messageMetadataSchema,dataPartSchemas:this.dataPartSchemas,runUpdateMessageJob:o,onError:e=>{throw e}}),onError:e=>{throw e}}),this.setStatus({status:"ready"})}catch(e){if(l||"AbortError"===e.name)return l=!0,this.setStatus({status:"ready"}),null;f=!0,e instanceof TypeError&&(e.message.toLowerCase().includes("fetch")||e.message.toLowerCase().includes("network"))&&(d=!0),this.onError&&e instanceof Error&&this.onError(e),this.setStatus({status:"error",error:e})}finally{try{null==(i=this.onFinish)||i.call(this,{message:this.activeResponse.state.message,messages:this.state.messages,isAbort:l,isDisconnect:d,isError:f,finishReason:null==(a=this.activeResponse)?void 0:a.state.finishReason})}catch(e){console.error(e)}this.activeResponse=void 0}(null==(o=this.sendAutomaticallyWhen)?void 0:o.call(this,{messages:this.state.messages}))&&!f&&await this.makeRequest({trigger:"submit-message",messageId:null==(s=this.lastMessage)?void 0:s.id,metadata:t,headers:n,body:r})}};function vp({messages:e}){const t=e[e.length-1];if(!t)return!1;if("assistant"!==t.role)return!1;const n=t.parts.reduce(((e,t,n)=>"step-start"===t.type?n:e),-1),r=t.parts.slice(n+1).filter(rp).filter((e=>!e.providerExecuted));return r.length>0&&r.every((e=>"output-available"===e.state||"output-error"===e.state))}var mp,Dp,yp,gp,Fp,Ep,bp,Cp,Ap,kp,wp=function(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}((cp||(cp=1,sp=function(e,t){if("function"!=typeof e)throw new TypeError("Expected the first argument to be a `function`, got `".concat(_(e),"`."));var n,r=0;return function(){for(var u=this,a=arguments.length,i=new Array(a),o=0;o{if(!t.has(e))throw TypeError("Cannot "+n)},Sp=(e,t,n)=>(_p(e,t,"read from private field"),n?n.call(e):t.get(e)),xp=(e,t,n)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,n)},Bp=(e,t,n,r)=>(_p(e,t,"write to private field"),t.set(e,n),n),Ip=class{constructor(e=[]){xp(this,mp,void 0),xp(this,Dp,"ready"),xp(this,yp,void 0),xp(this,gp,new Set),xp(this,Fp,new Set),xp(this,Ep,new Set),this.pushMessage=e=>{Bp(this,mp,Sp(this,mp).concat(e)),Sp(this,bp).call(this)},this.popMessage=()=>{Bp(this,mp,Sp(this,mp).slice(0,-1)),Sp(this,bp).call(this)},this.replaceMessage=(e,t)=>{Bp(this,mp,[...Sp(this,mp).slice(0,e),this.snapshot(t),...Sp(this,mp).slice(e+1)]),Sp(this,bp).call(this)},this.snapshot=e=>structuredClone(e),this["~registerMessagesCallback"]=(e,t)=>{const n=t?(r=e,null!=(u=t)?wp(r,u):r):e;var r,u;return Sp(this,gp).add(n),()=>{Sp(this,gp).delete(n)}},this["~registerStatusCallback"]=e=>(Sp(this,Fp).add(e),()=>{Sp(this,Fp).delete(e)}),this["~registerErrorCallback"]=e=>(Sp(this,Ep).add(e),()=>{Sp(this,Ep).delete(e)}),xp(this,bp,(()=>{Sp(this,gp).forEach((e=>e()))})),xp(this,Cp,(()=>{Sp(this,Fp).forEach((e=>e()))})),xp(this,Ap,(()=>{Sp(this,Ep).forEach((e=>e()))})),Bp(this,mp,e)}get status(){return Sp(this,Dp)}set status(e){Bp(this,Dp,e),Sp(this,Cp).call(this)}get error(){return Sp(this,yp)}set error(e){Bp(this,yp,e),Sp(this,Ap).call(this)}get messages(){return Sp(this,mp)}set messages(e){Bp(this,mp,[...e]),Sp(this,bp).call(this)}};mp=new WeakMap,Dp=new WeakMap,yp=new WeakMap,gp=new WeakMap,Fp=new WeakMap,Ep=new WeakMap,bp=new WeakMap,Cp=new WeakMap,Ap=new WeakMap;var Op=class extends hp{constructor({messages:e,...t}){const n=new Ip(e);super({...t,state:n}),xp(this,kp,void 0),this["~registerMessagesCallback"]=(e,t)=>Sp(this,kp)["~registerMessagesCallback"](e,t),this["~registerStatusCallback"]=e=>Sp(this,kp)["~registerStatusCallback"](e),this["~registerErrorCallback"]=e=>Sp(this,kp)["~registerErrorCallback"](e),Bp(this,kp,n)}};kp=new WeakMap;var Tp="askai_token",Pp=function(e){return"https://".concat(e,".algolia.net/agent-studio/1")},jp=function(e){if(!e)return!0;try{var t=function(e){var t=A(e.split("."),1)[0];return JSON.parse(atob(t))}(e),n=t.exp;return Date.now()/1e3>n-30}catch(e){return!0}},Np=null,zp=function(){var e=i(E().m((function e(t){var n,r,u,a,i,o;return E().w((function(e){for(;;)switch(e.n){case 0:if(n=t.assistantId,r=t.abortSignal,u=t.useStagingEnv,a=void 0!==u&&u,i=sessionStorage.getItem(Tp),jp(i)){e.n=1;break}return e.a(2,i);case 1:return o=a?Ut:qt,Np||(Np=fetch("".concat(o,"/token"),{method:"POST",headers:{"x-algolia-assistant-id":n,"content-type":"application/json"},signal:r}).then((function(e){return e.json()})).then((function(e){var t=e.token,n=e.success,r=e.message;if(!n&&r)throw new Error(r);return sessionStorage.setItem(Tp,t),t})).finally((function(){return Np=null}))),e.a(2,Np)}}),e)})));return function(t){return e.apply(this,arguments)}}(),Rp=function(){var e=i(E().m((function e(t){var n,r,u,a,i,o,s,c,l,d;return E().w((function(e){for(;;)switch(e.n){case 0:return n=t.assistantId,r=t.thumbs,u=t.messageId,a=t.appId,i=t.abortSignal,o=t.useStagingEnv,s=void 0!==o&&o,(c=new Headers).set("x-algolia-assistant-id",n),c.set("content-type","application/json"),e.n=1,zp({assistantId:n,abortSignal:i,useStagingEnv:s});case 1:return l=e.v,c.set("authorization","TOKEN ".concat(l)),d=s?Ut:qt,e.a(2,fetch("".concat(d,"/feedback"),{method:"POST",body:JSON.stringify({appId:a,messageId:u,thumbs:r}),headers:c}))}}),e)})));return function(t){return e.apply(this,arguments)}}(),Mp=function(e){var t=e.agentId,n=e.vote,r=e.messageId,u=e.appId,a=e.apiKey,i=e.abortSignal,o=new Headers;o.set("x-algolia-application-id",u),o.set("x-algolia-api-key",a),o.set("content-type","application/json");var s="".concat(Pp(u),"/feedback");return fetch(s,{method:"POST",body:JSON.stringify({messageId:r,agentId:t,vote:n}),headers:o,signal:i})},Zp=["assistantId","apiKey","appId","indexName","useStagingEnv"],Lp=function(e){var t=e.assistantId,n=e.apiKey,u=e.appId,a=e.indexName,o=e.useStagingEnv,s=void 0!==o&&o,c=F(e,Zp),l=(0,r.useRef)(new AbortController),d=(0,r.useMemo)((function(){return c.agentStudio?function(e){var t=e.appId,n=e.apiKey,r=e.assistantId,u=e.searchParameters;return new pp({api:"".concat(Pp(t),"/agents/").concat(r,"/completions?stream=true&compatibilityMode=ai-sdk-5"),headers:{"x-algolia-application-id":t,"x-algolia-api-key":n},body:u?{algolia:{searchParameters:u}}:{}})}({apiKey:n,appId:u,assistantId:null!=t?t:"",searchParameters:c.searchParameters}):function(e){var t,n=e.assistantId,r=e.apiKey,u=e.indexName,a=e.searchParameters,o=e.appId,s=e.abortController,c=e.useStagingEnv;return new pp({api:c?Ut:qt,headers:(t=i(E().m((function e(){var t;return E().w((function(e){for(;;)switch(e.n){case 0:if(n){e.n=1;break}throw new Error("Ask AI assistant ID is required");case 1:return e.n=2,zp({assistantId:n,abortSignal:s.signal,useStagingEnv:c});case 2:return t=e.v,e.a(2,g(g({},t?{authorization:"TOKEN ".concat(t)}:{}),{},{"X-Algolia-API-Key":r,"X-Algolia-Application-Id":o,"X-Algolia-Index-Name":u,"X-Algolia-Assistant-Id":n||"","X-AI-SDK-Version":"v5"}))}}),e)}))),function(){return t.apply(this,arguments)}),body:a?{searchParameters:a}:{}})}({assistantId:null!=t?t:"",apiKey:n,appId:u,indexName:a,searchParameters:c.searchParameters,abortController:l.current,useStagingEnv:s})}),[n,u,t,a,s,c]),f=function({experimental_throttle:e,resume:t=!1,...n}={}){const u=(0,r.useRef)("chat"in n?n.chat:new Op(n));("chat"in n&&n.chat!==u.current||"id"in n&&u.current.id!==n.id)&&(u.current="chat"in n?n.chat:new Op(n));const a="id"in n?n.id:null,i=(0,r.useCallback)((t=>u.current["~registerMessagesCallback"](t,e)),[e,a]),o=(0,r.useSyncExternalStore)(i,(()=>u.current.messages),(()=>u.current.messages)),s=(0,r.useSyncExternalStore)(u.current["~registerStatusCallback"],(()=>u.current.status),(()=>u.current.status)),c=(0,r.useSyncExternalStore)(u.current["~registerErrorCallback"],(()=>u.current.error),(()=>u.current.error)),l=(0,r.useCallback)((e=>{"function"==typeof e&&(e=e(u.current.messages)),u.current.messages=e}),[u]);return(0,r.useEffect)((()=>{t&&u.current.resumeStream()}),[t,u]),{id:u.current.id,messages:o,setMessages:l,sendMessage:u.current.sendMessage,regenerate:u.current.regenerate,clearError:u.current.clearError,stop:u.current.stop,error:c,resumeStream:u.current.resumeStream,status:s,addToolResult:u.current.addToolOutput,addToolOutput:u.current.addToolOutput}}({sendAutomaticallyWhen:vp,transport:d}),p=f.messages,h=f.sendMessage,v=f.status,m=f.setMessages,D=f.error,y=f.stop,b=(0,r.useRef)(function(e){var t=e.limit,n=void 0===t?5:t,r=xu(e.key),u=r.getItem().slice(0,n);return{add:function(e){var t=e.objectID,a=e.query,i=u.findIndex((function(e){return e.objectID===t||e.query===a}));i>-1?u[i]=e:(u.unshift(e),u=u.slice(0,n)),r.setItem(u)},addFeedback:function(e,t){var n=u.find((function(t){var n;return null===(n=t.messages)||void 0===n?void 0:n.some((function(t){return t.id===e}))}));if(n&&n.messages){var a=n.messages.find((function(t){return t.id===e}));a&&(a.feedback=t,r.setItem(u))}},getOne:function(e){var t,n=u.find((function(t){var n;return null===(n=t.messages)||void 0===n?void 0:n.some((function(t){return t.id===e}))}));return null==n||null===(t=n.messages)||void 0===t?void 0:t.find((function(t){return t.id===e}))},getAll:function(){return u},remove:function(e){u=u.filter((function(t){return t.objectID!==e.objectID})),r.setItem(u)},getConversation:function(e){var t=u.find((function(t){var n;return null===(n=t.messages)||void 0===n?void 0:n.some((function(t){return t.id===e}))}));if(t&&t.messages)return t}}}({key:"__DOCSEARCH_ASKAI_CONVERSATIONS__".concat(a),limit:10})).current,C=(0,r.useCallback)(function(){var e=i(E().m((function e(r,a){var i;return E().w((function(e){for(;;)switch(e.n){case 0:if(t){e.n=1;break}return e.a(2);case 1:return e.n=2,c.agentStudio?Mp({agentId:t,vote:a,messageId:r,appId:u,apiKey:n,abortSignal:l.current.signal}):Rp({assistantId:t,thumbs:a,messageId:r,appId:u,abortSignal:l.current.signal,useStagingEnv:s});case 2:if(!(e.v.status>=300)){e.n=3;break}throw new Error("Failed, try again later.");case 3:null===(i=b.addFeedback)||void 0===i||i.call(b,r,1===a?"like":"dislike");case 4:return e.a(2)}}),e)})));return function(t,n){return e.apply(this,arguments)}}(),[t,c.agentStudio,u,n,s,b]),A=function(){var e=i(E().m((function e(){return E().w((function(e){for(;;)switch(e.n){case 0:return l.current.abort(),e.n=1,y();case 1:return e.a(2)}}),e)})));return function(){return e.apply(this,arguments)}}(),k=(0,r.useMemo)((function(){for(var e=[],t=0;t0){var u=r.detail[0],a=u.msg,i=u.loc.at(-1);t="".concat(a,": ").concat(i)}}else t=n.message}catch(e){}return new Error(t)}(D):D}),[D,c.agentStudio]);return{messages:p,sendMessage:h,status:v,setMessages:m,askAiError:_,stopAskAiStreaming:A,isStreaming:w,exchanges:k,conversations:b,sendFeedback:C}};function $p(e){var t,n="algolia-client-js-".concat(e.key);function r(){return void 0===t&&(t=e.localStorage||window.localStorage),t}function u(){return JSON.parse(r().getItem(n)||"{}")}function a(e){r().setItem(n,JSON.stringify(e))}return{get:function(t,n){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}};return Promise.resolve().then((function(){var n,r,i;return n=e.timeToLive?1e3*e.timeToLive:null,r=u(),a(i=Object.fromEntries(Object.entries(r).filter((function(e){return void 0!==A(e,2)[1].timestamp})))),n&&a(Object.fromEntries(Object.entries(i).filter((function(e){var t=A(e,2)[1],r=(new Date).getTime();return!(t.timestamp+n2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}};return t().then((function(e){return Promise.all([e,n.miss(e)])})).then((function(e){return A(e,1)[0]}))},set:function(e,t){return Promise.resolve(t)},delete:function(e){return Promise.resolve()},clear:function(){return Promise.resolve()}}:{get:function(e,r){var u=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}};return n.get(e,r,u).catch((function(){return qp({caches:t}).get(e,r,u)}))},set:function(e,r){return n.set(e,r).catch((function(){return qp({caches:t}).set(e,r)}))},delete:function(e){return n.delete(e).catch((function(){return qp({caches:t}).delete(e)}))},clear:function(){return n.clear().catch((function(){return qp({caches:t}).clear()}))}}}function Up(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{serializable:!0},t={};return{get:function(n,r){var u=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}},a=JSON.stringify(n);if(a in t)return Promise.resolve(e.serializable?JSON.parse(t[a]):t[a]);var i=r();return i.then((function(e){return u.miss(e)})).then((function(){return i}))},set:function(n,r){return t[JSON.stringify(n)]=e.serializable?JSON.stringify(r):r,Promise.resolve(r)},delete:function(e){return delete t[JSON.stringify(e)],Promise.resolve()},clear:function(){return t={},Promise.resolve()}}}function Vp(e){var t=e.algoliaAgents,n=e.client,r=e.version,u=function(e){var t={value:"Algolia for JavaScript (".concat(e,")"),add:function(e){var n="; ".concat(e.segment).concat(void 0!==e.version?" (".concat(e.version,")"):"");return-1===t.value.indexOf(n)&&(t.value="".concat(t.value).concat(n)),t}};return t}(r).add({segment:n,version:r});return t.forEach((function(e){return u.add(e)})),u}var Hp=12e4;function Kp(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"up",n=Date.now();return g(g({},e),{},{status:t,lastUpdate:n,isUp:function(){return"up"===t||Date.now()-n>Hp},isTimedOut:function(){return"timed out"===t&&Date.now()-n<=Hp}})}var Wp=function(){function e(t,n){var r;return s(this,e),p(r=o(this,e,[t]),"name","AlgoliaError"),n&&(r.name=n),r}return m(e,x(Error)),d(e)}(),Jp=function(){function e(t,n,r){var u;return s(this,e),p(u=o(this,e,[t,r]),"stackTrace",void 0),u.stackTrace=n,u}return m(e,Wp),d(e)}(),Qp=function(){function e(t){return s(this,e),o(this,e,["Unreachable hosts - your application id may be incorrect. If the error persists, please visit our help center https://alg.li/support-unreachable-hosts or reach out to the Algolia Support team: https://alg.li/support",t,"RetryError"])}return m(e,Jp),d(e)}(),Gp=function(){function e(t,n,r){var u,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"ApiError";return s(this,e),p(u=o(this,e,[t,r,a]),"status",void 0),u.status=n,u}return m(e,Jp),d(e)}(),Yp=function(){function e(t,n){var r;return s(this,e),p(r=o(this,e,[t,"DeserializationError"]),"response",void 0),r.response=n,r}return m(e,Wp),d(e)}(),Xp=function(){function e(t,n,r,u){var a;return s(this,e),p(a=o(this,e,[t,n,u,"DetailedApiError"]),"error",void 0),a.error=r,a}return m(e,Gp),d(e)}();function eh(e,t,n){var r,u=(r=n,Object.keys(r).filter((function(e){return void 0!==r[e]})).sort().map((function(e){return"".concat(e,"=").concat(encodeURIComponent("[object Array]"===Object.prototype.toString.call(r[e])?r[e].join(","):r[e]).replace(/\+/g,"%20"))})).join("&")),a="".concat(e.protocol,"://").concat(e.url).concat(e.port?":".concat(e.port):"","/").concat("/"===t.charAt(0)?t.substring(1):t);return u.length&&(a+="?".concat(u)),a}function th(e,t){if("GET"!==e.method&&(void 0!==e.data||void 0!==t.data)){var n=Array.isArray(e.data)?e.data:g(g({},e.data),t.data);return JSON.stringify(n)}}function nh(e,t,n){var r=g(g(g({Accept:"application/json"},e),t),n),u={};return Object.keys(r).forEach((function(e){var t=r[e];u[e.toLowerCase()]=t})),u}function rh(e){try{return JSON.parse(e.content)}catch(t){throw new Yp(t.message,e)}}function uh(e,t){var n=e.content,r=e.status;try{var u=JSON.parse(n);return"error"in u?new Xp(u.message,r,u.error,t):new Gp(u.message,r,t)}catch(e){}return new Gp(n,r,t)}function ah(e){var t=e.isTimedOut,n=e.status;return t||function(e){return!e.isTimedOut&&0==~~e.status}({isTimedOut:t,status:n})||2!=~~(n/100)&&4!=~~(n/100)}function ih(e){return 2==~~(e.status/100)}function oh(e){return e.map((function(e){return sh(e)}))}function sh(e){var t=e.request.headers["x-algolia-api-key"]?{"x-algolia-api-key":"*****"}:{};return g(g({},e),{},{request:g(g({},e.request),{},{headers:g(g({},e.request.headers),t)})})}var ch=["appId","apiKey","authMode","algoliaAgents"],lh=["params"],dh="5.43.0";function fh(e){return[{url:"".concat(e,"-dsn.algolia.net"),accept:"read",protocol:"https"},{url:"".concat(e,".algolia.net"),accept:"write",protocol:"https"}].concat(function(e){for(var t=e,n=e.length-1;n>0;n--){var r=Math.floor(Math.random()*(n+1)),u=e[n];t[n]=e[r],t[r]=u}return t}([{url:"".concat(e,"-1.algolianet.com"),accept:"readWrite",protocol:"https"},{url:"".concat(e,"-2.algolianet.com"),accept:"readWrite",protocol:"https"},{url:"".concat(e,"-3.algolianet.com"),accept:"readWrite",protocol:"https"}]))}var ph="4.6.2";function hh(e,t,n){var u=r.useMemo((function(){var r=function(e,t,n){if(!e||"string"!=typeof e)throw new Error("`appId` is missing.");if(!t||"string"!=typeof t)throw new Error("`apiKey` is missing.");return function(e){var t=e.appId,n=e.apiKey,r=e.authMode,u=e.algoliaAgents,a=F(e,ch),o=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"WithinHeaders",r={"x-algolia-api-key":t,"x-algolia-application-id":e};return{headers:function(){return"WithinHeaders"===n?r:{}},queryParameters:function(){return"WithinQueryParameters"===n?r:{}}}}(t,n,r),s=function(e){var t=e.hosts,n=e.hostsCache,r=e.baseHeaders,u=e.logger,a=e.baseQueryParameters,o=e.algoliaAgent,s=e.timeouts,c=e.requester,l=e.requestsCache,d=e.responsesCache;function f(e){return p.apply(this,arguments)}function p(){return(p=i(E().m((function e(t){var r,u,a,i,o;return E().w((function(e){for(;;)switch(e.n){case 0:return e.n=1,Promise.all(t.map((function(e){return n.get(e,(function(){return Promise.resolve(Kp(e))}))})));case 1:return r=e.v,u=r.filter((function(e){return e.isUp()})),a=r.filter((function(e){return e.isTimedOut()})),i=[].concat(k(u),k(a)),o=i.length>0?i:t,e.a(2,{hosts:o,getTimeout:function(e,t){return(0===a.length&&0===e?1:a.length+3+e)*t}})}}),e)})))).apply(this,arguments)}function h(e,t){return v.apply(this,arguments)}function v(){return v=i(E().m((function e(l,d){var p,h,v,m,D,y,F,b,C,A,w,_,S,x=arguments;return E().w((function(e){for(;;)switch(e.n){case 0:if(p=!(x.length>2&&void 0!==x[2])||x[2],h=[],v=th(l,d),m=nh(r,l.headers,d.headers),D="GET"===l.method?g(g({},l.data),d.data):{},y=g(g(g({},a),l.queryParameters),D),o.value&&(y["x-algolia-agent"]=o.value),d&&d.queryParameters)for(F=0,b=Object.keys(d.queryParameters);F1&&void 0!==arguments[1]?arguments[1]:{},n=e.useReadTransporter||"GET"===e.method;if(!n)return h(e,t,n);var u=function(){return h(e,t)};if(!0!==(t.cacheable||e.cacheable))return u();var i={request:e,requestOptions:t,transporter:{queryParameters:a,headers:r}};return d.get(i,(function(){return l.get(i,(function(){return l.set(i,u()).then((function(e){return Promise.all([l.delete(i),e])}),(function(e){return Promise.all([l.delete(i),Promise.reject(e)])})).then((function(e){var t=A(e,2);return t[0],t[1]}))}))}),{miss:function(e){return d.set(i,e)}})},requestsCache:l,responsesCache:d}}(g(g({hosts:fh(t)},a),{},{algoliaAgent:Vp({algoliaAgents:u,client:"Lite",version:dh}),baseHeaders:g(g({"content-type":"text/plain"},o.headers()),a.baseHeaders),baseQueryParameters:g(g({},o.queryParameters()),a.baseQueryParameters)}));return{transporter:s,appId:t,apiKey:n,clearCache:function(){return Promise.all([s.requestsCache.clear(),s.responsesCache.clear()]).then((function(){}))},get _ua(){return s.algoliaAgent.value},addAlgoliaAgent:function(e,t){s.algoliaAgent.add({segment:e,version:t})},setClientApiKey:function(e){var t=e.apiKey;r&&"WithinHeaders"!==r?s.baseQueryParameters["x-algolia-api-key"]=t:s.baseHeaders["x-algolia-api-key"]=t},searchForHits:function(e,t){return this.search(e,t)},searchForFacets:function(e,t){return this.search(e,t)},customPost:function(e,t){var n=e.path,r=e.parameters,u=e.body;if(!n)throw new Error("Parameter `path` is required when calling `customPost`.");var a={method:"POST",path:"/{path}".replace("{path}",n),queryParameters:r||{},headers:{},data:u||{}};return s.request(a,t)},getRecommendations:function(e,t){if(e&&Array.isArray(e)&&(e={requests:e}),!e)throw new Error("Parameter `getRecommendationsParams` is required when calling `getRecommendations`.");if(!e.requests)throw new Error("Parameter `getRecommendationsParams.requests` is required when calling `getRecommendations`.");var n={method:"POST",path:"/1/indexes/*/recommendations",queryParameters:{},headers:{},data:e,useReadTransporter:!0,cacheable:!0};return s.request(n,t)},search:function(e,t){if(e&&Array.isArray(e)){var n={requests:e.map((function(e){var t=e.params,n=F(e,lh);return"facet"===n.type?g(g(g({},n),t),{},{type:"facet"}):g(g(g({},n),t),{},{facet:void 0,maxFacetHits:void 0,facetQuery:void 0})}))};e=n}if(!e)throw new Error("Parameter `searchMethodParams` is required when calling `search`.");if(!e.requests)throw new Error("Parameter `searchMethodParams.requests` is required when calling `search`.");var r={method:"POST",path:"/1/indexes/*/queries",queryParameters:{},headers:{},data:e,useReadTransporter:!0,cacheable:!0};return s.request(r,t)}}}(g({appId:e,apiKey:t,timeouts:{connect:1e3,read:2e3,write:3e4},logger:{debug:function(e,t){return Promise.resolve()},info:function(e,t){return Promise.resolve()},error:function(e,t){return Promise.resolve()}},requester:{send:function(e){return new Promise((function(t){var n=new XMLHttpRequest;n.open(e.method,e.url,!0),Object.keys(e.headers).forEach((function(t){return n.setRequestHeader(t,e.headers[t])}));var r,u=function(e,r){return setTimeout((function(){n.abort(),t({status:0,content:r,isTimedOut:!0})}),e)},a=u(e.connectTimeout,"Connection timeout");n.onreadystatechange=function(){n.readyState>n.OPENED&&void 0===r&&(clearTimeout(a),r=u(e.responseTimeout,"Socket timeout"))},n.onerror=function(){0===n.status&&(clearTimeout(a),clearTimeout(r),t({content:n.responseText||"Network request failed",status:n.status,isTimedOut:!1}))},n.onload=function(){clearTimeout(a),clearTimeout(r),t({content:n.responseText,status:n.status,isTimedOut:!1})},n.send(e.data)}))}},algoliaAgents:[{segment:"Browser"}],authMode:"WithinQueryParameters",responsesCache:Up(),requestsCache:Up({serializable:!1}),hostsCache:qp({caches:[$p({key:"".concat(dh,"-").concat(e)}),Up()]})},void 0))}(e,t);return r.addAlgoliaAgent("docsearch",ph),!1===/docsearch.js \(.*\)/.test(r.transporter.algoliaAgent.value)&&r.addAlgoliaAgent("docsearch-react",ph),n(r)}),[e,t,n]);return u}var vh=["appId","apiKey","askAi","maxResultsPerGroup","theme","onClose","transformItems","hitComponent","resultsFooterComponent","navigator","initialScrollY","transformSearchClient","disableUserPersonalization","initialQuery","translations","getMissingResultsUrl","insights","onAskAiToggle","interceptAskAiEvent","isAskAiActive","recentSearchesLimit","recentSearchesWithFavoritesLimit","indices","indexName","searchParameters","isHybridModeSupported"],mh=["footer","searchBox"],Dh=function(){var e=i(E().m((function e(t){var n,r,u,a,i,o,s,c,l,d,f,p,h,v,m,D,y,F,b;return E().w((function(e){for(;;)switch(e.p=e.n){case 0:return n=t.query,r=t.state,u=t.setContext,a=t.setStatus,i=t.searchClient,o=t.indexes,s=t.snippetLength,c=t.insights,l=t.appId,d=t.apiKey,f=t.maxResultsPerGroup,p=t.transformItems,h=void 0===p?cu:p,v=t.saveRecentSearch,m=t.onClose,D=c,e.p=1,e.n=2,i.search({requests:o.map((function(e){var t,r,u,a,i,o,c,l="string"==typeof e?e:e.name,d="string"==typeof e?{}:e.searchParameters;return g({query:n,indexName:l,attributesToRetrieve:null!==(t=null==d?void 0:d.attributesToRetrieve)&&void 0!==t?t:["hierarchy.lvl0","hierarchy.lvl1","hierarchy.lvl2","hierarchy.lvl3","hierarchy.lvl4","hierarchy.lvl5","hierarchy.lvl6","content","type","url"],attributesToSnippet:null!==(r=null==d?void 0:d.attributesToSnippet)&&void 0!==r?r:["hierarchy.lvl1:".concat(s.current),"hierarchy.lvl2:".concat(s.current),"hierarchy.lvl3:".concat(s.current),"hierarchy.lvl4:".concat(s.current),"hierarchy.lvl5:".concat(s.current),"hierarchy.lvl6:".concat(s.current),"content:".concat(s.current)],snippetEllipsisText:null!==(u=null==d?void 0:d.snippetEllipsisText)&&void 0!==u?u:"\u2026",highlightPreTag:null!==(a=null==d?void 0:d.highlightPreTag)&&void 0!==a?a:"",highlightPostTag:null!==(i=null==d?void 0:d.highlightPostTag)&&void 0!==i?i:"",hitsPerPage:null!==(o=null==d?void 0:d.hitsPerPage)&&void 0!==o?o:20,clickAnalytics:null!==(c=null==d?void 0:d.clickAnalytics)&&void 0!==c?c:D},null!=d?d:{})}))});case 2:return y=e.v,F=y.results,e.a(2,F.flatMap((function(e){var t,n=e,a=n.hits,i=n.nbHits,o=su(h(a),(function(e){return hu(e)}),f);if(r.context.searchSuggestions.length0&&G.forEach((function(e){xe.push("string"==typeof e?{name:e}:e)})),xe.length<1)throw new Error("Must supply either `indexName` or `indices` for DocSearch to work");var Be=xe[0].name,Ie=r.useRef(Iu({key:"__DOCSEARCH_FAVORITE_SEARCHES__".concat(Be),limit:10})).current,Oe=r.useRef(Iu({key:"__DOCSEARCH_RECENT_SEARCHES__".concat(Be),limit:0===Ie.getAll().length?K:J})).current,Te=A(r.useState(!1),2),Pe=Te[0],je=Te[1],Ne=Lp({assistantId:Ee,apiKey:(null==Fe?void 0:Fe.apiKey)||s,appId:(null==Fe?void 0:Fe.appId)||o,indexName:(null==Fe?void 0:Fe.indexName)||Be,searchParameters:be,useStagingEnv:Ce,agentStudio:Se}),ze=Ne.messages,Re=Ne.status,Me=Ne.setMessages,Ze=Ne.sendMessage,Le=Ne.stopAskAiStreaming,$e=Ne.askAiError,qe=Ne.sendFeedback,Ue=Ne.conversations,Ve=r.useRef(Re);r.useEffect((function(){if(!P){if("streaming"===Ve.current&&"ready"===Re){Pe&&ze.at(-1)&&(ze.at(-1).metadata={stopped:!0});var e,t=f(ze[0].parts);try{for(t.s();!(e=t.n()).done;){var n=e.value;"text"===n.type&&Ue.add(Nr(n.text,ze))}}catch(e){t.e(e)}finally{t.f()}}Ve.current=Re}}),[Re,ze,Ue,P,Pe]);var He=r.useMemo((function(){return"error"===Re&&Rr($e)}),[Re,$e]),Ke=r.useCallback((function(e){var t=e.hierarchy,n=["lvl6","lvl5","lvl4","lvl3","lvl2","lvl1","lvl0"].find((function(e){return t[e]}));return g(g({},e),{},{type:n||"lvl0",content:null})}),[]),We=r.useCallback((function(e){if(!P){var t="content"===e.type?e.__docsearch_parent||Ke(e):e;t&&-1===Ie.getAll().findIndex((function(e){return e.objectID===t.objectID}))&&Oe.add(t)}}),[Ie,Oe,P,Ke]),Je=r.useCallback((function(e){if(oe.context.algoliaInsightsPlugin&&e.__autocomplete_id){var t=e,n={eventName:"Item Selected",index:t.__autocomplete_indexName,items:[t],positions:[e.__autocomplete_id],queryID:t.__autocomplete_queryID};oe.context.algoliaInsightsPlugin.insights.clickedObjectIDsAfterSearch(n)}}),[oe.context.algoliaInsightsPlugin]),Qe=r.useRef(void 0),Ge=r.useCallback((function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;if(e){var r={query:t,suggestedQuestionId:null==n?void 0:n.objectID};if(null!=q&&q(r))return void(Qe.current&&Qe.current.setQuery(""))}if(e&&"new-conversation"===ke&&we("initial"),$(e,{query:t,suggestedQuestionId:null==n?void 0:n.objectID}),!te){je(!1);var u={};if(n&&(u.body={suggestedQuestionId:n.objectID}),Ze({role:"user",parts:[{type:"text",text:t}]},u),he.current){var a=he.current;"function"==typeof a.scrollTo?a.scrollTo({top:0,behavior:"smooth"}):a.scrollTop=0}Qe.current&&Qe.current.setQuery("")}}),[$,q,Ze,ke,we,te]),Ye=r.useCallback(function(){var e=i(E().m((function e(t,n){return E().w((function(e){for(;;)switch(e.n){case 0:if(Ee&&o){e.n=1;break}return e.a(2);case 1:return e.n=2,qe(t,n);case 2:return e.a(2)}}),e)})));return function(t,n){return e.apply(this,arguments)}}(),[Ee,o,qe]);Qe.current||(Qe.current=$t({id:"docsearch",defaultActiveItemId:0,openOnFocus:!0,initialState:{query:ye,context:{searchSuggestions:[]}},insights:Boolean(L),navigator:S,onStateChange:function(e){se(e.state)},getSources:function(e){var t=e.query,n=e.state,r=e.setContext,u=e.setStatus;if(!t){var a=function(e){var t=e.recentSearches,n=e.favoriteSearches,r=e.saveRecentSearch,u=e.onClose;return e.disableUserPersonalization?[]:[{sourceId:"recentSearches",onSelect:function(e){var t=e.item,n=e.event;r(t),lu(n)||u()},getItemUrl:function(e){return e.item.url},getItems:function(){return t.getAll()}},{sourceId:"favoriteSearches",onSelect:function(e){var t=e.item,n=e.event;r(t),lu(n)||u()},getItemUrl:function(e){return e.item.url},getItems:function(){return n.getAll()}}]}({recentSearches:Oe,favoriteSearches:Ie,saveRecentSearch:We,onClose:v,disableUserPersonalization:P}),i=ce?[{sourceId:"recentConversations",getItems:function(){return P?[]:Ue.getAll()},onSelect:function(e){var t=e.item;t.messages&&(Me(t.messages),$(!0))}}]:[];return[].concat(k(a),i)}var c={context:n.context},d=Dh({query:t,state:c,setContext:r,setStatus:u,searchClient:ge,indexes:xe,snippetLength:me,insights:Boolean(L),appId:o,apiKey:s,maxResultsPerGroup:l,transformItems:D,saveRecentSearch:We,onClose:v}),f=ce?[{sourceId:"askAI",getItems:function(){return[{type:"askAI",query:t,url_without_anchor:"",objectID:"ask-ai-button",content:null,url:"",anchor:null,hierarchy:{lvl0:"Ask AI",lvl1:t,lvl2:null,lvl3:null,lvl4:null,lvl5:null,lvl6:null},_highlightResult:{},_snippetResult:{},__docsearch_parent:null}]},onSelect:function(e){var t=e.item;"askAI"===t.type&&t.query&&Ge(!0,t.query)}}]:[];return d.then((function(e){return[].concat(f,k(e))}))}}));var Xe,et,tt=Qe.current,nt=tt.getEnvironmentProps,rt=tt.getRootProps,ut=tt.refresh;!function(e){var t=e.getEnvironmentProps,n=e.panelElement,u=e.formElement,a=e.inputElement;r.useEffect((function(){if(n&&u&&a){var e=t({panelElement:n,formElement:u,inputElement:a}),r=e.onTouchStart,i=e.onTouchMove;return window.addEventListener("touchstart",r),window.addEventListener("touchmove",i),function(){window.removeEventListener("touchstart",r),window.removeEventListener("touchmove",i)}}}),[t,n,u,a])}({getEnvironmentProps:nt,panelElement:he.current,formElement:pe.current,inputElement:ve.current}),Xe={container:de.current},et=Xe.container,r.useEffect((function(){if(et){var e=et.querySelectorAll("a[href]:not([disabled]), button:not([disabled]), input:not([disabled])"),t=e[0],n=e[e.length-1];return et.addEventListener("keydown",r),function(){et.removeEventListener("keydown",r)}}function r(e){"Tab"===e.key&&(e.shiftKey?document.activeElement===t&&(e.preventDefault(),n.focus()):document.activeElement===n&&(e.preventDefault(),t.focus()))}}),[et]),function(e){var t=e.theme;(0,r.useEffect)((function(){if(t){var e=document.documentElement.dataset.theme;if(t!==e)return document.documentElement.dataset.theme=t,function(){void 0===e?delete document.documentElement.dataset.theme:document.documentElement.dataset.theme=e}}}),[t])}({theme:d}),r.useEffect((function(){return document.body.classList.add("DocSearch--active"),function(){var e,t;document.body.classList.remove("DocSearch--active"),null===(e=(t=window).scrollTo)||void 0===e||e.call(t,0,B)}}),[]),r.useEffect((function(){"undefined"!=typeof window&&window.localStorage&&function(){if("undefined"==typeof window||!window.localStorage)return 0;var e=0;for(var t in window.localStorage)window.localStorage.hasOwnProperty(t)&&(e+=window.localStorage[t].length+t.length);return e}()>4194304&&Su()}),[]),r.useLayoutEffect((function(){var e=window.innerWidth-document.body.clientWidth;return document.body.style.marginInlineEnd="".concat(e,"px"),function(){document.body.style.marginInlineEnd="0px"}}),[]),r.useEffect((function(){window.matchMedia("(max-width: 768px)").matches&&(me.current=5)}),[]),r.useEffect((function(){var e;he.current&&!V&&("function"==typeof(e=he.current).scrollTo?e.scrollTo({top:0,behavior:"smooth"}):e.scrollTop=0)}),[oe.query,V]),r.useEffect((function(){ye.length>0&&(ut(),ve.current&&ve.current.focus())}),[ye,ut]),r.useEffect((function(){function e(){if(fe.current){var e=.01*window.innerHeight;fe.current.style.setProperty("--docsearch-vh","".concat(e,"px"))}}return e(),window.addEventListener("resize",e),function(){window.removeEventListener("resize",e)}}),[]),r.useEffect((function(){V||(tt.refresh(),Me([]))}),[V,tt,Me]),r.useEffect((function(){we("initial")}),[V,we]);var at=function(){var e=i(E().m((function e(){return E().w((function(e){for(;;)switch(e.n){case 0:return je(!0),e.n=1,Le();case 1:return e.a(2)}}),e)})));return function(){return e.apply(this,arguments)}}(),it=function(){Me([]),we("new-conversation")},ot=!0,st=oe.collections.some((function(e){return e.items.length>0}));return"idle"!==oe.status||!1!==st||0!==oe.query.length||V||(ot=!1),r.createElement("div",h({ref:de},rt({"aria-expanded":!0}),{className:["DocSearch","DocSearch-Container","stalled"===oe.status&&"DocSearch-Container--Stalled","error"===oe.status&&"DocSearch-Container--Errored"].filter(Boolean).join(" "),role:"button",tabIndex:0,onMouseDown:function(e){e.target===e.currentTarget&&v()}}),r.createElement("div",{className:"DocSearch-Modal",ref:fe},r.createElement("header",{className:"DocSearch-SearchBar",ref:pe},r.createElement(_u,h({},tt,{state:oe,placeholder:le||"Search docs",autoFocus:0===ye.length,inputRef:ve,isFromSelection:Boolean(ye)&&ye===De,translations:ue,isAskAiActive:V,askAiStatus:Re,askAiError:$e,askAiState:ke,setAskAiState:we,isThreadDepthError:He&&"new-conversation"!==ke,onClose:v,onAskAiToggle:$,onAskAgain:function(e){Ge(!0,e)},onStopAskAiStreaming:at,onNewConversation:it,onViewConversationHistory:function(){we("conversation-history")}}))),ot&&r.createElement("div",{className:"DocSearch-Dropdown",ref:he},r.createElement(Fu,h({},tt,{indexName:Be,state:oe,hitComponent:b,resultsFooterComponent:w,disableUserPersonalization:P,recentSearches:Oe,favoriteSearches:Ie,conversations:Ue,inputRef:ve,translations:ae,getMissingResultsUrl:M,isAskAiActive:V,canHandleAskAi:ce,messages:ze,askAiError:$e,status:Re,hasCollections:st,askAiState:ke,selectAskAiQuestion:Ge,suggestedQuestions:_e,selectSuggestedQuestion:function(e){Ge(!0,e.question,e)},agentStudio:Se,onAskAiToggle:$,onNewConversation:it,onItemClick:function(e,t){if("askAI"===e.type&&e.query){if("stored"===e.anchor&&"messages"in e){Me(e.messages);var n={query:e.query,messageId:e.messages[0].id};if(null!=q&&q(n))return Qe.current&&Qe.current.setQuery(""),void t.preventDefault();$(!0,n)}else Ge(!0,e.query);return we("initial"),void t.preventDefault()}Je(e),We(e),lu(t)||v()},onFeedback:Ye}))),r.createElement("footer",{className:"DocSearch-Footer"},r.createElement(Kt,{translations:re,isAskAiActive:V}))))}}}]); \ No newline at end of file diff --git a/assets/js/5074.f57d98a8.js.LICENSE.txt b/assets/js/5074.f57d98a8.js.LICENSE.txt new file mode 100644 index 00000000..775d3936 --- /dev/null +++ b/assets/js/5074.f57d98a8.js.LICENSE.txt @@ -0,0 +1 @@ +/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ diff --git a/assets/js/50a25d1d.8cc352b1.js b/assets/js/50a25d1d.8cc352b1.js new file mode 100644 index 00000000..a06993a7 --- /dev/null +++ b/assets/js/50a25d1d.8cc352b1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2693],{62406:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>h,frontMatter:()=>s,metadata:()=>r,toc:()=>d});const r=JSON.parse('{"id":"API-Reference/features/NewFileContentManager","title":"NewFileContentManager","description":"Import :","source":"@site/api/API-Reference/features/NewFileContentManager.md","sourceDirName":"API-Reference/features","slug":"/API-Reference/features/NewFileContentManager","permalink":"/api/API-Reference/features/NewFileContentManager","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"BeautificationManager","permalink":"/api/API-Reference/features/BeautificationManager"},"next":{"title":"PriorityBasedRegistration","permalink":"/api/API-Reference/features/PriorityBasedRegistration"}}');var i=t(74848),o=t(28453);const s={},a=void 0,l={},d=[{value:"Import :",id:"import-",level:3},{value:"features/NewFileContentManager",id:"featuresnewfilecontentmanager",level:2},{value:"Usage",id:"usage",level:2},{value:"API",id:"api",level:2},{value:"registerContentProvider",id:"registercontentprovider",level:3},{value:"removeContentProvider",id:"removecontentprovider",level:3},{value:"provider.getContent",id:"providergetcontent",level:3},{value:"parameters",id:"parameters",level:4},{value:"return types",id:"return-types",level:4},{value:"features/NewFileContentManager.getInitialContentForFile(fullPath) \u21d2 Promise.<string>",id:"featuresnewfilecontentmanagergetinitialcontentforfilefullpath--promisestring",level:3}];function c(e){const n={a:"a",br:"br",code:"code",h2:"h2",h3:"h3",h4:"h4",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,o.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h3,{id:"import-",children:"Import :"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-js",children:'const NewFileContentManager = brackets.getModule("features/NewFileContentManager")\n'})}),"\n",(0,i.jsx)("a",{name:"module_features/NewFileContentManager"}),"\n",(0,i.jsx)(n.h2,{id:"featuresnewfilecontentmanager",children:"features/NewFileContentManager"}),"\n",(0,i.jsxs)(n.p,{children:["NewFileContentManager provides support to add default template content when a new/empty file is created.\nExtensions can register to provide content with ",(0,i.jsx)(n.code,{children:"NewFileContentManager.registerContentProvider"})," API."]}),"\n",(0,i.jsx)(n.h2,{id:"usage",children:"Usage"}),"\n",(0,i.jsx)(n.p,{children:'Let\'s say whenever a user creates a new js file, we have to prefill the contents to "sample content"'}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Example"})}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-js",children:'const NewFileContentManager = brackets.getModule("features/NewFileContentManager");\n// replace `js` with language ID(Eg. javascript) if you want to restrict the preview to js files only. use `all` for\n// all languages.\nNewFileContentManager.registerContentProvider(exports, ["js"], 1);\n\n// provide a helpful name for the ContentProvider. This will be useful if you have to debug.\nexports.CONTENT_PROVIDER_NAME = "extension.someName";\n// now implement the getContent function that will be invoked when ever user creates a new empty file.\nexports.getContent = function(fullPath) {\n return new Promise((resolve, reject)=>{\n resolve("sample content");\n });\n };\n'})}),"\n",(0,i.jsx)(n.h2,{id:"api",children:"API"}),"\n",(0,i.jsx)(n.h3,{id:"registercontentprovider",children:"registerContentProvider"}),"\n",(0,i.jsxs)(n.p,{children:["Register a Content provider with this api.\n",(0,i.jsx)(n.strong,{children:"Example"})]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-js",children:"// syntax\nNewFileContentManager.registerContentProvider(provider, supportedLanguages, priority);\n"})}),"\n",(0,i.jsx)(n.p,{children:"The API requires three parameters:"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"provider"}),": must implement a ",(0,i.jsx)(n.code,{children:"getContent"})," function which will be invoked to get the content. See API doc below."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"supportedLanguages"}),": An array of languages that the provider supports. If ",(0,i.jsx)(n.code,{children:'["all"]'})," is supplied, then the\nprovider will be invoked for all languages. Restrict to specific languages: Eg: ",(0,i.jsx)(n.code,{children:'["javascript", "html", "php"]'})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"priority"}),": Contents provided hy providers with higher priority will win if there are more than\none provider registered for the language. Default is 0.\n",(0,i.jsx)(n.strong,{children:"Example"})]}),"\n"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-js",children:'// to register a provider that will be invoked for all languages. where provider is any object that implements\n// a getContent function\nNewFileContentManager.registerContentProvider(provider, ["all"]);\n\n// to register a provider that will be invoked for specific languages\nNewFileContentManager.registerContentProvider(provider, ["javascript", "html", "php"]);\n'})}),"\n",(0,i.jsx)(n.h3,{id:"removecontentprovider",children:"removeContentProvider"}),"\n",(0,i.jsxs)(n.p,{children:["Removes a registered content provider. The API takes the same arguments as ",(0,i.jsx)(n.code,{children:"registerContentProvider"}),".\n",(0,i.jsx)(n.strong,{children:"Example"})]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-js",children:'// syntax\nNewFileContentManager.removeContentProvider(provider, supportedLanguages);\n// Example\nNewFileContentManager.removeContentProvider(provider, ["javascript", "html"]);\n'})}),"\n",(0,i.jsx)(n.h3,{id:"providergetcontent",children:"provider.getContent"}),"\n",(0,i.jsxs)(n.p,{children:["Each provider must implement the ",(0,i.jsx)(n.code,{children:"getContent"})," function that returns a promise. The promise either resolves with\nthe content text or rejects if there is no content made available by the provider.\n",(0,i.jsx)(n.strong,{children:"Example"})]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-js",children:'exports.CONTENT_PROVIDER_NAME = "extension.someName"; // for debugging\n// function signature\nexports.getContent = function(fullPath) {\n return new Promise((resolve, reject)=>{\n resolve("sample content");\n });\n };\n'})}),"\n",(0,i.jsx)(n.h4,{id:"parameters",children:"parameters"}),"\n",(0,i.jsx)(n.p,{children:"The function will be called with the path of the file that needs the content."}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"fullPath"})," - string path"]}),"\n"]}),"\n",(0,i.jsx)(n.h4,{id:"return-types",children:"return types"}),"\n",(0,i.jsx)(n.p,{children:"A promise that resolves with the content text or rejects if there is no content made available by the provider."}),"\n",(0,i.jsx)("a",{name:"module_features/NewFileContentManager..getInitialContentForFile"}),"\n",(0,i.jsxs)(n.h3,{id:"featuresnewfilecontentmanagergetinitialcontentforfilefullpath--promisestring",children:["features/NewFileContentManager.getInitialContentForFile(fullPath) \u21d2 ",(0,i.jsx)("code",{children:"Promise."})]}),"\n",(0,i.jsx)(n.p,{children:'Returns a promise that resolves to the default text content of the given file after querying\nall the content providers. If no text is returned by any providers, it will return an empty string "".\nTo get the default content given a path\nNewFileContentManager.getInitialContentForFile("/path/to/file.jsx");'}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,i.jsx)(n.a,{href:"#module_features/NewFileContentManager",children:(0,i.jsx)("code",{children:"features/NewFileContentManager"})}),(0,i.jsx)(n.br,{}),"\n",(0,i.jsx)(n.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"Promise."})," - The text contents"]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"})]})}),(0,i.jsx)(n.tbody,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"fullPath"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})})]})})]})]})}function h(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},28453:(e,n,t)=>{t.d(n,{R:()=>s,x:()=>a});var r=t(96540);const i={},o=r.createContext(i);function s(e){const n=r.useContext(o);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:s(e.components),r.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/53a62df3.921b3a5c.js b/assets/js/53a62df3.921b3a5c.js new file mode 100644 index 00000000..56dd3164 --- /dev/null +++ b/assets/js/53a62df3.921b3a5c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1997],{71172:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>d,default:()=>h,frontMatter:()=>o,metadata:()=>r,toc:()=>c});const r=JSON.parse('{"id":"API-Reference/language/JSONUtils","title":"JSONUtils","description":"Import :","source":"@site/api/API-Reference/language/JSONUtils.md","sourceDirName":"API-Reference/language","slug":"/API-Reference/language/JSONUtils","permalink":"/api/API-Reference/language/JSONUtils","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"HTMLUtils","permalink":"/api/API-Reference/language/HTMLUtils"},"next":{"title":"JSUtils","permalink":"/api/API-Reference/language/JSUtils"}}');var s=t(74848),i=t(28453);const o={},d=void 0,l={},c=[{value:"Import :",id:"import-",level:3},{value:"regexAllowedChars : RegExp",id:"regexallowedchars--regexp",level:2},{value:"TOKEN_KEY : number",id:"token_key--number",level:2},{value:"TOKEN_VALUE : number",id:"token_value--number",level:2},{value:"stripQuotes(string) \u21d2 String",id:"stripquotesstring--string",level:2},{value:"getContextInfo(editor, constPos, requireParent, requireNextToken) \u21d2 Object",id:"getcontextinfoeditor-constpos-requireparent-requirenexttoken--object",level:2}];function a(e){const n={code:"code",h2:"h2",h3:"h3",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h3,{id:"import-",children:"Import :"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-js",children:'const JSONUtils = brackets.getModule("language/JSONUtils")\n'})}),"\n",(0,s.jsx)("a",{name:"regexAllowedChars"}),"\n",(0,s.jsxs)(n.h2,{id:"regexallowedchars--regexp",children:["regexAllowedChars : ",(0,s.jsx)("code",{children:"RegExp"})]}),"\n",(0,s.jsx)(n.p,{children:"Reg-ex to match colon, comma, opening bracket of an array and white-space."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,s.jsx)("a",{name:"TOKEN_KEY"}),"\n",(0,s.jsxs)(n.h2,{id:"token_key--number",children:["TOKEN_KEY : ",(0,s.jsx)("code",{children:"number"})]}),"\n",(0,s.jsx)(n.p,{children:"Enumeration for Token Key"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,s.jsx)("a",{name:"TOKEN_VALUE"}),"\n",(0,s.jsxs)(n.h2,{id:"token_value--number",children:["TOKEN_VALUE : ",(0,s.jsx)("code",{children:"number"})]}),"\n",(0,s.jsx)(n.p,{children:"Enumeration for Token value"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,s.jsx)("a",{name:"stripQuotes"}),"\n",(0,s.jsxs)(n.h2,{id:"stripquotesstring--string",children:["stripQuotes(string) \u21d2 ",(0,s.jsx)("code",{children:"String"})]}),"\n",(0,s.jsx)(n.p,{children:"Removes the quotes around a string"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"string"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"String"})})]})})]}),"\n",(0,s.jsx)("a",{name:"getContextInfo"}),"\n",(0,s.jsxs)(n.h2,{id:"getcontextinfoeditor-constpos-requireparent-requirenexttoken--object",children:["getContextInfo(editor, constPos, requireParent, requireNextToken) \u21d2 ",(0,s.jsx)("code",{children:"Object"})]}),"\n",(0,s.jsx)(n.p,{children:"Returns context info at a given position in editor"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"editor"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"Editor"})}),(0,s.jsx)(n.td,{})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"constPos"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"Object"})}),(0,s.jsx)(n.td,{children:"Position of cursor in the editor"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"requireParent"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"Boolean"})}),(0,s.jsx)(n.td,{children:"If true will look for parent key name"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"requireNextToken"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"Boolean"})}),(0,s.jsx)(n.td,{children:"if true we can replace the next token of a value."})]})]})]})]})}function h(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(a,{...e})}):a(e)}},28453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>d});var r=t(96540);const s={},i=r.createContext(s);function o(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/5480.7ba9af42.js b/assets/js/5480.7ba9af42.js new file mode 100644 index 00000000..f581526c --- /dev/null +++ b/assets/js/5480.7ba9af42.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5480],{52501:(t,e,n)=>{n.d(e,{o:()=>i});var i=(0,n(40797).K2)((()=>"\n /* Font Awesome icon styling - consolidated */\n .label-icon {\n display: inline-block;\n height: 1em;\n overflow: visible;\n vertical-align: -0.125em;\n }\n \n .node .label-icon path {\n fill: currentColor;\n stroke: revert;\n stroke-width: revert;\n }\n"),"getIconStyles")},92875:(t,e,n)=>{n.d(e,{CP:()=>h,HT:()=>y,PB:()=>u,aC:()=>c,lC:()=>o,m:()=>l,tk:()=>a});var i=n(67633),s=n(40797),r=n(16750),a=(0,s.K2)(((t,e)=>{const n=t.append("rect");if(n.attr("x",e.x),n.attr("y",e.y),n.attr("fill",e.fill),n.attr("stroke",e.stroke),n.attr("width",e.width),n.attr("height",e.height),e.name&&n.attr("name",e.name),e.rx&&n.attr("rx",e.rx),e.ry&&n.attr("ry",e.ry),void 0!==e.attrs)for(const i in e.attrs)n.attr(i,e.attrs[i]);return e.class&&n.attr("class",e.class),n}),"drawRect"),o=(0,s.K2)(((t,e)=>{const n={x:e.startx,y:e.starty,width:e.stopx-e.startx,height:e.stopy-e.starty,fill:e.fill,stroke:e.stroke,class:"rect"};a(t,n).lower()}),"drawBackgroundRect"),l=(0,s.K2)(((t,e)=>{const n=e.text.replace(i.H1," "),s=t.append("text");s.attr("x",e.x),s.attr("y",e.y),s.attr("class","legend"),s.style("text-anchor",e.anchor),e.class&&s.attr("class",e.class);const r=s.append("tspan");return r.attr("x",e.x+2*e.textMargin),r.text(n),s}),"drawText"),c=(0,s.K2)(((t,e,n,i)=>{const s=t.append("image");s.attr("x",e),s.attr("y",n);const a=(0,r.J)(i);s.attr("xlink:href",a)}),"drawImage"),h=(0,s.K2)(((t,e,n,i)=>{const s=t.append("use");s.attr("x",e),s.attr("y",n);const a=(0,r.J)(i);s.attr("xlink:href",`#${a}`)}),"drawEmbeddedImage"),u=(0,s.K2)((()=>({x:0,y:0,width:100,height:100,fill:"#EDF2AE",stroke:"#666",anchor:"start",rx:0,ry:0})),"getNoteRect"),y=(0,s.K2)((()=>({x:0,y:0,width:100,height:100,"text-anchor":"start",style:"#666",textMargin:0,rx:0,ry:0,tspan:!0})),"getTextObj")},45480:(t,e,n)=>{n.d(e,{diagram:()=>X});var i=n(92875),s=n(52501),r=n(67633),a=n(40797),o=n(70451),l=function(){var t=(0,a.K2)((function(t,e,n,i){for(n=n||{},i=t.length;i--;n[t[i]]=e);return n}),"o"),e=[6,8,10,11,12,14,16,17,18],n=[1,9],i=[1,10],s=[1,11],r=[1,12],o=[1,13],l=[1,14],c={trace:(0,a.K2)((function(){}),"trace"),yy:{},symbols_:{error:2,start:3,journey:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,title:11,acc_title:12,acc_title_value:13,acc_descr:14,acc_descr_value:15,acc_descr_multiline_value:16,section:17,taskName:18,taskData:19,$accept:0,$end:1},terminals_:{2:"error",4:"journey",6:"EOF",8:"SPACE",10:"NEWLINE",11:"title",12:"acc_title",13:"acc_title_value",14:"acc_descr",15:"acc_descr_value",16:"acc_descr_multiline_value",17:"section",18:"taskName",19:"taskData"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,1],[9,2],[9,2],[9,1],[9,1],[9,2]],performAction:(0,a.K2)((function(t,e,n,i,s,r,a){var o=r.length-1;switch(s){case 1:return r[o-1];case 2:case 6:case 7:this.$=[];break;case 3:r[o-1].push(r[o]),this.$=r[o-1];break;case 4:case 5:this.$=r[o];break;case 8:i.setDiagramTitle(r[o].substr(6)),this.$=r[o].substr(6);break;case 9:this.$=r[o].trim(),i.setAccTitle(this.$);break;case 10:case 11:this.$=r[o].trim(),i.setAccDescription(this.$);break;case 12:i.addSection(r[o].substr(8)),this.$=r[o].substr(8);break;case 13:i.addTask(r[o-1],r[o]),this.$="task"}}),"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:n,12:i,14:s,16:r,17:o,18:l},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:15,11:n,12:i,14:s,16:r,17:o,18:l},t(e,[2,5]),t(e,[2,6]),t(e,[2,8]),{13:[1,16]},{15:[1,17]},t(e,[2,11]),t(e,[2,12]),{19:[1,18]},t(e,[2,4]),t(e,[2,9]),t(e,[2,10]),t(e,[2,13])],defaultActions:{},parseError:(0,a.K2)((function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)}),"parseError"),parse:(0,a.K2)((function(t){var e=this,n=[0],i=[],s=[null],r=[],o=this.table,l="",c=0,h=0,u=0,y=r.slice.call(arguments,1),p=Object.create(this.lexer),d={yy:{}};for(var f in this.yy)Object.prototype.hasOwnProperty.call(this.yy,f)&&(d.yy[f]=this.yy[f]);p.setInput(t,d.yy),d.yy.lexer=p,d.yy.parser=this,void 0===p.yylloc&&(p.yylloc={});var g=p.yylloc;r.push(g);var x=p.options&&p.options.ranges;function m(){var t;return"number"!=typeof(t=i.pop()||p.lex()||1)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof d.yy.parseError?this.parseError=d.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,a.K2)((function(t){n.length=n.length-2*t,s.length=s.length-t,r.length=r.length-t}),"popStack"),(0,a.K2)(m,"lex");for(var k,b,_,w,v,K,$,T,M,S={};;){if(_=n[n.length-1],this.defaultActions[_]?w=this.defaultActions[_]:(null==k&&(k=m()),w=o[_]&&o[_][k]),void 0===w||!w.length||!w[0]){var C="";for(K in M=[],o[_])this.terminals_[K]&&K>2&&M.push("'"+this.terminals_[K]+"'");C=p.showPosition?"Parse error on line "+(c+1)+":\n"+p.showPosition()+"\nExpecting "+M.join(", ")+", got '"+(this.terminals_[k]||k)+"'":"Parse error on line "+(c+1)+": Unexpected "+(1==k?"end of input":"'"+(this.terminals_[k]||k)+"'"),this.parseError(C,{text:p.match,token:this.terminals_[k]||k,line:p.yylineno,loc:g,expected:M})}if(w[0]instanceof Array&&w.length>1)throw new Error("Parse Error: multiple actions possible at state: "+_+", token: "+k);switch(w[0]){case 1:n.push(k),s.push(p.yytext),r.push(p.yylloc),n.push(w[1]),k=null,b?(k=b,b=null):(h=p.yyleng,l=p.yytext,c=p.yylineno,g=p.yylloc,u>0&&u--);break;case 2:if($=this.productions_[w[1]][1],S.$=s[s.length-$],S._$={first_line:r[r.length-($||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-($||1)].first_column,last_column:r[r.length-1].last_column},x&&(S._$.range=[r[r.length-($||1)].range[0],r[r.length-1].range[1]]),void 0!==(v=this.performAction.apply(S,[l,h,c,d.yy,w[1],s,r].concat(y))))return v;$&&(n=n.slice(0,-1*$*2),s=s.slice(0,-1*$),r=r.slice(0,-1*$)),n.push(this.productions_[w[1]][0]),s.push(S.$),r.push(S._$),T=o[n[n.length-2]][n[n.length-1]],n.push(T);break;case 3:return!0}}return!0}),"parse")},h=function(){return{EOF:1,parseError:(0,a.K2)((function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)}),"parseError"),setInput:(0,a.K2)((function(t,e){return this.yy=e||this.yy||{},this._input=t,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:(0,a.K2)((function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t}),"input"),unput:(0,a.K2)((function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=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),n.length-1&&(this.yylineno-=n.length-1);var s=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:n?(n.length===i.length?this.yylloc.first_column:0)+i[i.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[s[0],s[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this}),"unput"),more:(0,a.K2)((function(){return this._more=!0,this}),"more"),reject:(0,a.K2)((function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):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).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})}),"reject"),less:(0,a.K2)((function(t){this.unput(this.match.slice(t))}),"less"),pastInput:(0,a.K2)((function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")}),"pastInput"),upcomingInput:(0,a.K2)((function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")}),"upcomingInput"),showPosition:(0,a.K2)((function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"}),"showPosition"),test_match:(0,a.K2)((function(t,e){var n,i,s;if(this.options.backtrack_lexer&&(s={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&&(s.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,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(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var r in s)this[r]=s[r];return!1}return!1}),"test_match"),next:(0,a.K2)((function(){if(this.done)return this.EOF;var t,e,n,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var s=this._currentRules(),r=0;re[0].length)){if(e=n,i=r,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,s[r])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,s[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})}),"next"),lex:(0,a.K2)((function(){var t=this.next();return t||this.lex()}),"lex"),begin:(0,a.K2)((function(t){this.conditionStack.push(t)}),"begin"),popState:(0,a.K2)((function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]}),"popState"),_currentRules:(0,a.K2)((function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules}),"_currentRules"),topState:(0,a.K2)((function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"}),"topState"),pushState:(0,a.K2)((function(t){this.begin(t)}),"pushState"),stateStackSize:(0,a.K2)((function(){return this.conditionStack.length}),"stateStackSize"),options:{"case-insensitive":!0},performAction:(0,a.K2)((function(t,e,n,i){switch(n){case 0:case 1:case 3:case 4:break;case 2:return 10;case 5:return 4;case 6:return 11;case 7:return this.begin("acc_title"),12;case 8:return this.popState(),"acc_title_value";case 9:return this.begin("acc_descr"),14;case 10:return this.popState(),"acc_descr_value";case 11:this.begin("acc_descr_multiline");break;case 12:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:return 17;case 15:return 18;case 16:return 19;case 17:return":";case 18:return 6;case 19:return"INVALID"}}),"anonymous"),rules:[/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:journey\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:section\s[^#:\n;]+)/i,/^(?:[^#:\n;]+)/i,/^(?::[^#\n;]+)/i,/^(?::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,9,11,14,15,16,17,18,19],inclusive:!0}}}}();function u(){this.yy={}}return c.lexer=h,(0,a.K2)(u,"Parser"),u.prototype=c,c.Parser=u,new u}();l.parser=l;var c=l,h="",u=[],y=[],p=[],d=(0,a.K2)((function(){u.length=0,y.length=0,h="",p.length=0,(0,r.IU)()}),"clear"),f=(0,a.K2)((function(t){h=t,u.push(t)}),"addSection"),g=(0,a.K2)((function(){return u}),"getSections"),x=(0,a.K2)((function(){let t=_();let e=0;for(;!t&&e<100;)t=_(),e++;return y.push(...p),y}),"getTasks"),m=(0,a.K2)((function(){const t=[];y.forEach((e=>{e.people&&t.push(...e.people)}));return[...new Set(t)].sort()}),"updateActors"),k=(0,a.K2)((function(t,e){const n=e.substr(1).split(":");let i=0,s=[];1===n.length?(i=Number(n[0]),s=[]):(i=Number(n[0]),s=n[1].split(","));const r=s.map((t=>t.trim())),a={section:h,type:h,people:r,task:t,score:i};p.push(a)}),"addTask"),b=(0,a.K2)((function(t){const e={section:h,type:h,description:t,task:t,classes:[]};y.push(e)}),"addTaskOrg"),_=(0,a.K2)((function(){const t=(0,a.K2)((function(t){return p[t].processed}),"compileTask");let e=!0;for(const[n,i]of p.entries())t(n),e=e&&i.processed;return e}),"compileTasks"),w=(0,a.K2)((function(){return m()}),"getActors"),v={getConfig:(0,a.K2)((()=>(0,r.D7)().journey),"getConfig"),clear:d,setDiagramTitle:r.ke,getDiagramTitle:r.ab,setAccTitle:r.SV,getAccTitle:r.iN,setAccDescription:r.EI,getAccDescription:r.m7,addSection:f,getSections:g,getTasks:x,addTask:k,addTaskOrg:b,getActors:w},K=(0,a.K2)((t=>`.label {\n font-family: ${t.fontFamily};\n color: ${t.textColor};\n }\n .mouth {\n stroke: #666;\n }\n\n line {\n stroke: ${t.textColor}\n }\n\n .legend {\n fill: ${t.textColor};\n font-family: ${t.fontFamily};\n }\n\n .label text {\n fill: #333;\n }\n .label {\n color: ${t.textColor}\n }\n\n .face {\n ${t.faceColor?`fill: ${t.faceColor}`:"fill: #FFF8DC"};\n stroke: #999;\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n stroke-width: 1px;\n }\n\n .node .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n .arrowheadPath {\n fill: ${t.arrowheadColor};\n }\n\n .edgePath .path {\n stroke: ${t.lineColor};\n stroke-width: 1.5px;\n }\n\n .flowchart-link {\n stroke: ${t.lineColor};\n fill: none;\n }\n\n .edgeLabel {\n background-color: ${t.edgeLabelBackground};\n rect {\n opacity: 0.5;\n }\n text-align: center;\n }\n\n .cluster rect {\n }\n\n .cluster text {\n fill: ${t.titleColor};\n }\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: ${t.fontFamily};\n font-size: 12px;\n background: ${t.tertiaryColor};\n border: 1px solid ${t.border2};\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n\n .task-type-0, .section-type-0 {\n ${t.fillType0?`fill: ${t.fillType0}`:""};\n }\n .task-type-1, .section-type-1 {\n ${t.fillType0?`fill: ${t.fillType1}`:""};\n }\n .task-type-2, .section-type-2 {\n ${t.fillType0?`fill: ${t.fillType2}`:""};\n }\n .task-type-3, .section-type-3 {\n ${t.fillType0?`fill: ${t.fillType3}`:""};\n }\n .task-type-4, .section-type-4 {\n ${t.fillType0?`fill: ${t.fillType4}`:""};\n }\n .task-type-5, .section-type-5 {\n ${t.fillType0?`fill: ${t.fillType5}`:""};\n }\n .task-type-6, .section-type-6 {\n ${t.fillType0?`fill: ${t.fillType6}`:""};\n }\n .task-type-7, .section-type-7 {\n ${t.fillType0?`fill: ${t.fillType7}`:""};\n }\n\n .actor-0 {\n ${t.actor0?`fill: ${t.actor0}`:""};\n }\n .actor-1 {\n ${t.actor1?`fill: ${t.actor1}`:""};\n }\n .actor-2 {\n ${t.actor2?`fill: ${t.actor2}`:""};\n }\n .actor-3 {\n ${t.actor3?`fill: ${t.actor3}`:""};\n }\n .actor-4 {\n ${t.actor4?`fill: ${t.actor4}`:""};\n }\n .actor-5 {\n ${t.actor5?`fill: ${t.actor5}`:""};\n }\n ${(0,s.o)()}\n`),"getStyles"),$=(0,a.K2)((function(t,e){return(0,i.tk)(t,e)}),"drawRect"),T=(0,a.K2)((function(t,e){const n=15,i=t.append("circle").attr("cx",e.cx).attr("cy",e.cy).attr("class","face").attr("r",n).attr("stroke-width",2).attr("overflow","visible"),s=t.append("g");function r(t){const i=(0,o.JLW)().startAngle(Math.PI/2).endAngle(Math.PI/2*3).innerRadius(7.5).outerRadius(n/2.2);t.append("path").attr("class","mouth").attr("d",i).attr("transform","translate("+e.cx+","+(e.cy+2)+")")}function l(t){const i=(0,o.JLW)().startAngle(3*Math.PI/2).endAngle(Math.PI/2*5).innerRadius(7.5).outerRadius(n/2.2);t.append("path").attr("class","mouth").attr("d",i).attr("transform","translate("+e.cx+","+(e.cy+7)+")")}function c(t){t.append("line").attr("class","mouth").attr("stroke",2).attr("x1",e.cx-5).attr("y1",e.cy+7).attr("x2",e.cx+5).attr("y2",e.cy+7).attr("class","mouth").attr("stroke-width","1px").attr("stroke","#666")}return s.append("circle").attr("cx",e.cx-5).attr("cy",e.cy-5).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),s.append("circle").attr("cx",e.cx+5).attr("cy",e.cy-5).attr("r",1.5).attr("stroke-width",2).attr("fill","#666").attr("stroke","#666"),(0,a.K2)(r,"smile"),(0,a.K2)(l,"sad"),(0,a.K2)(c,"ambivalent"),e.score>3?r(s):e.score<3?l(s):c(s),i}),"drawFace"),M=(0,a.K2)((function(t,e){const n=t.append("circle");return n.attr("cx",e.cx),n.attr("cy",e.cy),n.attr("class","actor-"+e.pos),n.attr("fill",e.fill),n.attr("stroke",e.stroke),n.attr("r",e.r),void 0!==n.class&&n.attr("class",n.class),void 0!==e.title&&n.append("title").text(e.title),n}),"drawCircle"),S=(0,a.K2)((function(t,e){return(0,i.m)(t,e)}),"drawText"),C=(0,a.K2)((function(t,e){function n(t,e,n,i,s){return t+","+e+" "+(t+n)+","+e+" "+(t+n)+","+(e+i-s)+" "+(t+n-1.2*s)+","+(e+i)+" "+t+","+(e+i)}(0,a.K2)(n,"genPoints");const i=t.append("polygon");i.attr("points",n(e.x,e.y,50,20,7)),i.attr("class","labelBox"),e.y=e.y+e.labelMargin,e.x=e.x+.5*e.labelMargin,S(t,e)}),"drawLabel"),E=(0,a.K2)((function(t,e,n){const s=t.append("g"),r=(0,i.PB)();r.x=e.x,r.y=e.y,r.fill=e.fill,r.width=n.width*e.taskCount+n.diagramMarginX*(e.taskCount-1),r.height=n.height,r.class="journey-section section-type-"+e.num,r.rx=3,r.ry=3,$(s,r),j(n)(e.text,s,r.x,r.y,r.width,r.height,{class:"journey-section section-type-"+e.num},n,e.colour)}),"drawSection"),I=-1,P=(0,a.K2)((function(t,e,n){const s=e.x+n.width/2,r=t.append("g");I++;r.append("line").attr("id","task"+I).attr("x1",s).attr("y1",e.y).attr("x2",s).attr("y2",450).attr("class","task-line").attr("stroke-width","1px").attr("stroke-dasharray","4 2").attr("stroke","#666"),T(r,{cx:s,cy:300+30*(5-e.score),score:e.score});const a=(0,i.PB)();a.x=e.x,a.y=e.y,a.fill=e.fill,a.width=n.width,a.height=n.height,a.class="task task-type-"+e.num,a.rx=3,a.ry=3,$(r,a);let o=e.x+14;e.people.forEach((t=>{const n=e.actors[t].color,i={cx:o,cy:e.y,r:7,fill:n,stroke:"#000",title:t,pos:e.actors[t].position};M(r,i),o+=10})),j(n)(e.task,r,a.x,a.y,a.width,a.height,{class:"task"},n,e.colour)}),"drawTask"),A=(0,a.K2)((function(t,e){(0,i.lC)(t,e)}),"drawBackgroundRect"),j=function(){function t(t,e,n,s,r,a,o,l){i(e.append("text").attr("x",n+r/2).attr("y",s+a/2+5).style("font-color",l).style("text-anchor","middle").text(t),o)}function e(t,e,n,s,r,a,o,l,c){const{taskFontSize:h,taskFontFamily:u}=l,y=t.split(//gi);for(let p=0;p{const r=L[s].color,a={cx:20,cy:i,r:7,fill:r,stroke:"#000",pos:L[s].position};B.drawCircle(t,a);let o=t.append("text").attr("visibility","hidden").text(s);const l=o.node().getBoundingClientRect().width;o.remove();let c=[];if(l<=n)c=[s];else{const e=s.split(" ");let i="";o=t.append("text").attr("visibility","hidden"),e.forEach((t=>{const e=i?`${i} ${t}`:t;o.text(e);if(o.node().getBoundingClientRect().width>n){if(i&&c.push(i),i=t,o.text(t),o.node().getBoundingClientRect().width>n){let e="";for(const i of t)e+=i,o.text(e+"-"),o.node().getBoundingClientRect().width>n&&(c.push(e.slice(0,-1)+"-"),e=i);i=e}}else i=e})),i&&c.push(i),o.remove()}c.forEach(((n,s)=>{const r={x:40,y:i+7+20*s,fill:"#666",text:n,textMargin:e.boxTextMargin??5},a=B.drawText(t,r).node().getBoundingClientRect().width;a>D&&a>e.leftMargin-a&&(D=a)})),i+=Math.max(20,20*c.length)}))}(0,a.K2)(V,"drawActorLegend");var R=(0,r.D7)().journey,O=0,N=(0,a.K2)((function(t,e,n,i){const s=(0,r.D7)(),a=s.journey.titleColor,l=s.journey.titleFontSize,c=s.journey.titleFontFamily,h=s.securityLevel;let u;"sandbox"===h&&(u=(0,o.Ltv)("#i"+e));const y="sandbox"===h?(0,o.Ltv)(u.nodes()[0].contentDocument.body):(0,o.Ltv)("body");z.init();const p=y.select("#"+e);B.initGraphics(p);const d=i.db.getTasks(),f=i.db.getDiagramTitle(),g=i.db.getActors();for(const r in L)delete L[r];let x=0;g.forEach((t=>{L[t]={color:R.actorColours[x%R.actorColours.length],position:x},x++})),V(p),O=R.leftMargin+D,z.insert(0,0,O,50*Object.keys(L).length),q(p,d,0);const m=z.getBounds();f&&p.append("text").text(f).attr("x",O).attr("font-size",l).attr("font-weight","bold").attr("y",25).attr("fill",a).attr("font-family",c);const k=m.stopy-m.starty+2*R.diagramMarginY,b=O+m.stopx+2*R.diagramMarginX;(0,r.a$)(p,k,b,R.useMaxWidth),p.append("line").attr("x1",O).attr("y1",4*R.height).attr("x2",b-O-4).attr("y2",4*R.height).attr("stroke-width",4).attr("stroke","black").attr("marker-end","url(#arrowhead)");const _=f?70:0;p.attr("viewBox",`${m.startx} -25 ${b} ${k+_}`),p.attr("preserveAspectRatio","xMinYMin meet"),p.attr("height",k+_+25)}),"draw"),z={data:{startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},verticalPos:0,sequenceItems:[],init:(0,a.K2)((function(){this.sequenceItems=[],this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0}),"init"),updateVal:(0,a.K2)((function(t,e,n,i){void 0===t[e]?t[e]=n:t[e]=i(n,t[e])}),"updateVal"),updateBounds:(0,a.K2)((function(t,e,n,i){const s=(0,r.D7)().journey,o=this;let l=0;function c(r){return(0,a.K2)((function(a){l++;const c=o.sequenceItems.length-l+1;o.updateVal(a,"starty",e-c*s.boxMargin,Math.min),o.updateVal(a,"stopy",i+c*s.boxMargin,Math.max),o.updateVal(z.data,"startx",t-c*s.boxMargin,Math.min),o.updateVal(z.data,"stopx",n+c*s.boxMargin,Math.max),"activation"!==r&&(o.updateVal(a,"startx",t-c*s.boxMargin,Math.min),o.updateVal(a,"stopx",n+c*s.boxMargin,Math.max),o.updateVal(z.data,"starty",e-c*s.boxMargin,Math.min),o.updateVal(z.data,"stopy",i+c*s.boxMargin,Math.max))}),"updateItemBounds")}(0,a.K2)(c,"updateFn"),this.sequenceItems.forEach(c())}),"updateBounds"),insert:(0,a.K2)((function(t,e,n,i){const s=Math.min(t,n),r=Math.max(t,n),a=Math.min(e,i),o=Math.max(e,i);this.updateVal(z.data,"startx",s,Math.min),this.updateVal(z.data,"starty",a,Math.min),this.updateVal(z.data,"stopx",r,Math.max),this.updateVal(z.data,"stopy",o,Math.max),this.updateBounds(s,a,r,o)}),"insert"),bumpVerticalPos:(0,a.K2)((function(t){this.verticalPos=this.verticalPos+t,this.data.stopy=this.verticalPos}),"bumpVerticalPos"),getVerticalPos:(0,a.K2)((function(){return this.verticalPos}),"getVerticalPos"),getBounds:(0,a.K2)((function(){return this.data}),"getBounds")},W=R.sectionFills,Y=R.sectionColours,q=(0,a.K2)((function(t,e,n){const i=(0,r.D7)().journey;let s="";const a=n+(2*i.height+i.diagramMarginY);let o=0,l="#CCC",c="black",h=0;for(const[r,u]of e.entries()){if(s!==u.section){l=W[o%W.length],h=o%W.length,c=Y[o%Y.length];let n=0;const a=u.section;for(let t=r;t(L[e]&&(t[e]=L[e]),t)),{});u.x=r*i.taskMargin+r*i.width+O,u.y=a,u.width=i.diagramMarginX,u.height=i.diagramMarginY,u.colour=c,u.fill=l,u.num=h,u.actors=n,B.drawTask(t,u,i),z.insert(u.x,u.y,u.x+u.width+i.taskMargin,450)}}),"drawTasks"),J={setConf:F,draw:N},X={parser:c,db:v,renderer:J,styles:K,init:(0,a.K2)((t=>{J.setConf(t.journey),v.clear()}),"init")}}}]); \ No newline at end of file diff --git a/assets/js/55d0ad9c.e3d727bd.js b/assets/js/55d0ad9c.e3d727bd.js new file mode 100644 index 00000000..9a2e9525 --- /dev/null +++ b/assets/js/55d0ad9c.e3d727bd.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7726],{62946:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>u,frontMatter:()=>d,metadata:()=>i,toc:()=>c});const i=JSON.parse('{"id":"Getting Started/index","title":"What is Phoenix Code?","description":"Phoenix Code is a lightweight, web-first code editor built by the same team behind Brackets. It\'s a front-end editor centered on Live Preview: edit your HTML and CSS and watch the page render as you type, or edit the rendered page directly and let Phoenix Code update your source code automatically.","source":"@site/docs/01-Getting Started/index.md","sourceDirName":"01-Getting Started","slug":"/what-is-phoenix-code","permalink":"/docs/what-is-phoenix-code","draft":false,"unlisted":false,"editUrl":"https://github.com/phcode-dev/docs/blob/main/docs/01-Getting Started/index.md","tags":[],"version":"current","frontMatter":{"title":"What is Phoenix Code?","slug":"/what-is-phoenix-code"},"sidebar":"tutorialSidebar","next":{"title":"Installation Guide","permalink":"/docs/intro"}}');var s=t(74848),r=t(28453),o=(t(96540),t(56399));const d={title:"What is Phoenix Code?",slug:"/what-is-phoenix-code"},a=void 0,l={},c=[{value:"Why Phoenix Code",id:"why-phoenix-code",level:2},{value:"Free vs Pro",id:"free-vs-pro",level:2},{value:"Who it's for",id:"who-its-for",level:2},{value:"Next steps",id:"next-steps",level:2}];function h(e){const n={a:"a",code:"code",h2:"h2",li:"li",p:"p",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Phoenix Code"})," is a lightweight, web-first code editor built by the same team behind ",(0,s.jsx)(n.a,{href:"https://brackets.io",children:"Brackets"}),". It's a front-end editor centered on ",(0,s.jsx)(n.strong,{children:"Live Preview"}),": edit your HTML and CSS and watch the page render as you type, or edit the rendered page directly and let Phoenix Code update your source code automatically."]}),"\n",(0,s.jsx)(o.A,{src:"https://docs-images.phcode.dev/videos/phcode.io-site/landing-page-final.mp4"}),"\n",(0,s.jsx)(n.p,{children:"This page covers what Phoenix Code is, why you might use it, and where to go next."}),"\n",(0,s.jsx)(n.h2,{id:"why-phoenix-code",children:"Why Phoenix Code"}),"\n",(0,s.jsx)(n.p,{children:"Here's what sets Phoenix Code apart."}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Live Preview"})," \u2014 Edit your HTML and CSS and watch the page update in real time. Phoenix Code goes a step further: edit the preview directly to change text, add and rearrange elements, or swap images, and your source code updates automatically."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"AI assistant"})," \u2014 A built-in AI agent (powered by Claude Code) works alongside you. It reads and edits your files, runs terminal commands, and because it's wired into Live Preview, it can see your running page, take screenshots, and verify its own work. Plan, Edit, and Full Auto modes keep you in control, and every change it makes is reversible."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Runs everywhere"})," \u2014 Native desktop apps for macOS, Windows, and Linux from ",(0,s.jsx)(n.a,{href:"https://phcode.io",children:"phcode.io"}),", or the full editor in your browser at ",(0,s.jsx)(n.a,{href:"https://phcode.dev",children:"phcode.dev"})," with nothing to install."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Built-in tools"})," \u2014 Git, Terminal, Emmet, Beautify, and code hints all ship in the editor, so you can start working right away."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Visual editing"})," \u2014 Color pickers, gradient editors, and draggable number scrubbing let you adjust CSS values directly and see the result immediately."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Extensions"})," \u2014 Add features, themes, and language support from the built-in Extension Manager, with a marketplace of community extensions and themes."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Open source"})," \u2014 Phoenix Code is open source, released under the AGPL-3.0 license."]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"free-vs-pro",children:"Free vs Pro"}),"\n",(0,s.jsx)(n.p,{children:"You can build complete websites for free. The core editor, Live Preview, Design Mode, Git, Terminal, and code tools are all included at no cost."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Phoenix Pro"})," adds:"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Live Preview Edit"})," \u2014 edit the rendered page directly and sync changes back to your source automatically."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"AI"})," \u2014 unlimited AI use (free users get a daily and monthly chat limit)."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Device Preview"})," \u2014 check how your page looks at phone, tablet, and desktop sizes."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Measurements"})," \u2014 ruler lines from a selected element to the edges of the page, labeled with exact pixel positions, for precise alignment."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Image Gallery"})," \u2014 browse stock images from providers like Unsplash and Pexels and embed or download them into your project without leaving Phoenix Code."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Markdown Editor"})," \u2014 edit Markdown directly in the preview with a full rich-text editor that keeps your source in sync."]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["See plans on the ",(0,s.jsx)(n.a,{href:"https://phcode.io/pricing",children:"pricing page"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Phoenix Pro is free for students and educators."})," If you have a ",(0,s.jsx)(n.code,{children:".edu"})," or ",(0,s.jsx)(n.code,{children:".ac.*"})," email, or your school requests an educational volume license, you get the full Pro feature set at no cost. See ",(0,s.jsx)(n.a,{href:"/docs/phoenix-pro-school",children:"Phoenix Pro for Education"}),"."]}),"\n",(0,s.jsx)(n.h2,{id:"who-its-for",children:"Who it's for"}),"\n",(0,s.jsx)(n.p,{children:"Phoenix Code is for anyone building for the web, and especially:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Front-end developers"})," who work in HTML, CSS, and JavaScript."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Web designers"})," who want to edit a page visually and see changes immediately."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Students and educators"})," who need a capable, no-cost editor that also runs in the browser."]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"next-steps",children:"Next steps"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Install it:"})," ",(0,s.jsx)(n.a,{href:"/docs/intro",children:"Installation"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Create your first project:"})," ",(0,s.jsx)(n.a,{href:"/docs/quick-start-project",children:"Your First Project"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Our flagship feature:"})," ",(0,s.jsx)(n.a,{href:"/docs/Features/Live%20Preview",children:"Live Preview"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Try the AI assistant:"})," ",(0,s.jsx)(n.a,{href:"/docs/Pro%20Features/ai-chat",children:"AI"})]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["Want to skip installing? Open ",(0,s.jsx)(n.a,{href:"https://phcode.dev",children:"phcode.dev"})," and start coding in your browser. Prefer the desktop app? Download it from ",(0,s.jsx)(n.a,{href:"https://phcode.io",children:"phcode.io"}),"."]})]})}function u(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},56399:(e,n,t)=>{t.d(n,{A:()=>r});var i=t(96540),s=t(74848);const r=({src:e,winLinuxTitle:n,macTitle:t})=>{const[r,o]=(0,i.useState)("");(0,i.useEffect)((()=>{navigator.platform.toLowerCase().includes("mac")?o(t):o(n)}),[n,t]);return(0,s.jsxs)("div",{style:{maxHeight:"68vh",width:"100%",display:"flex",justifyContent:"center",alignItems:"center",flexDirection:"column"},children:[(0,s.jsxs)("video",{style:{height:"90%",width:"100%"},controls:!0,autoPlay:!0,muted:!0,loop:!0,children:[(0,s.jsx)("source",{src:e,type:"video/mp4"}),"Your browser does not support the video tag."]}),(0,s.jsx)("div",{style:{width:"100%",textAlign:"center",fontSize:"1em",marginTop:"10px"},children:r})]})}},28453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>d});var i=t(96540);const s={},r=i.createContext(s);function o(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/5901.d3e1c7f3.js b/assets/js/5901.d3e1c7f3.js new file mode 100644 index 00000000..935aacf6 --- /dev/null +++ b/assets/js/5901.d3e1c7f3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5901],{75901:(e,s,c)=>{c.d(s,{createTreemapServices:()=>a.d});var a=c(51633);c(87960)}}]); \ No newline at end of file diff --git a/assets/js/591f7a5f.355aeb5c.js b/assets/js/591f7a5f.355aeb5c.js new file mode 100644 index 00000000..84ea4fe6 --- /dev/null +++ b/assets/js/591f7a5f.355aeb5c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3037],{31758:e=>{e.exports=JSON.parse('{"version":{"pluginId":"api","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"tutorialSidebar":[{"type":"link","href":"/api/getting-started","label":"Getting Started","docId":"getting-started","unlisted":false},{"type":"link","href":"/api/creating-themes","label":"Creating Themes","docId":"creating-themes","unlisted":false},{"type":"link","href":"/api/creating-extensions","label":"Creating Extensions","docId":"creating-extensions","unlisted":false},{"type":"link","href":"/api/creating-node-extensions","label":"Use node.js from your extension","docId":"creating-node-extensions","unlisted":false},{"type":"link","href":"/api/debugging-extensions","label":"Debugging Extensions","docId":"debugging-extensions","unlisted":false},{"type":"link","href":"/api/publishing-extensions","label":"Publishing Themes & Extensions","docId":"publishing-extensions","unlisted":false},{"type":"link","href":"/api/available-standard-libs","label":"Available Standard Libraries","docId":"available-standard-libs","unlisted":false},{"type":"category","label":"How-To","collapsible":true,"collapsed":true,"items":[{"type":"link","href":"/api/How-To/Dialogs","label":"Show Dialogs","docId":"How-To/Dialogs","unlisted":false},{"type":"link","href":"/api/How-To/Menus","label":"Add Menus, Menu items and Keyboard Shortcuts","docId":"How-To/Menus","unlisted":false},{"type":"link","href":"/api/How-To/Panels","label":"How to create Panels","docId":"How-To/Panels","unlisted":false},{"type":"link","href":"/api/How-To/StatusBar","label":"Add an indicator icon on the status bar","docId":"How-To/StatusBar","unlisted":false}]},{"type":"category","label":"API-Reference","collapsible":true,"collapsed":false,"items":[{"type":"category","label":"JSUtils","collapsible":true,"collapsed":true,"items":[{"type":"link","href":"/api/API-Reference/JSUtils/Preferences","label":"Preferences","docId":"API-Reference/JSUtils/Preferences","unlisted":false},{"type":"link","href":"/api/API-Reference/JSUtils/ScopeManager","label":"ScopeManager","docId":"API-Reference/JSUtils/ScopeManager","unlisted":false},{"type":"link","href":"/api/API-Reference/JSUtils/Session","label":"Session","docId":"API-Reference/JSUtils/Session","unlisted":false}]},{"type":"link","href":"/api/API-Reference/NodeConnector","label":"NodeConnector","docId":"API-Reference/NodeConnector","unlisted":false},{"type":"category","label":"command","collapsible":true,"collapsed":true,"items":[{"type":"link","href":"/api/API-Reference/command/CommandManager","label":"CommandManager","docId":"API-Reference/command/CommandManager","unlisted":false},{"type":"link","href":"/api/API-Reference/command/Commands","label":"Commands","docId":"API-Reference/command/Commands","unlisted":false},{"type":"link","href":"/api/API-Reference/command/KeyBindingManager","label":"KeyBindingManager","docId":"API-Reference/command/KeyBindingManager","unlisted":false},{"type":"link","href":"/api/API-Reference/command/KeyboardOverlayMode","label":"KeyboardOverlayMode","docId":"API-Reference/command/KeyboardOverlayMode","unlisted":false},{"type":"link","href":"/api/API-Reference/command/Keys","label":"Keys","docId":"API-Reference/command/Keys","unlisted":false},{"type":"link","href":"/api/API-Reference/command/Menus","label":"Menus","docId":"API-Reference/command/Menus","unlisted":false}]},{"type":"category","label":"Document","collapsible":true,"collapsed":true,"items":[{"type":"link","href":"/api/API-Reference/document/DocumentManager","label":"DocumentManager","docId":"API-Reference/document/DocumentManager","unlisted":false},{"type":"link","href":"/api/API-Reference/document/TextRange","label":"TextRange","docId":"API-Reference/document/TextRange","unlisted":false}],"href":"/api/API-Reference/document/"},{"type":"category","label":"Editor","collapsible":true,"collapsed":true,"items":[{"type":"link","href":"/api/API-Reference/editor/CodeHintManager","label":"CodeHintManager","docId":"API-Reference/editor/CodeHintManager","unlisted":false},{"type":"link","href":"/api/API-Reference/editor/EditorManager","label":"EditorManager","docId":"API-Reference/editor/EditorManager","unlisted":false}],"href":"/api/API-Reference/editor/"},{"type":"category","label":"features","collapsible":true,"collapsed":true,"items":[{"type":"link","href":"/api/API-Reference/features/BeautificationManager","label":"BeautificationManager","docId":"API-Reference/features/BeautificationManager","unlisted":false},{"type":"link","href":"/api/API-Reference/features/NewFileContentManager","label":"NewFileContentManager","docId":"API-Reference/features/NewFileContentManager","unlisted":false},{"type":"link","href":"/api/API-Reference/features/PriorityBasedRegistration","label":"PriorityBasedRegistration","docId":"API-Reference/features/PriorityBasedRegistration","unlisted":false},{"type":"link","href":"/api/API-Reference/features/QuickViewManager","label":"QuickViewManager","docId":"API-Reference/features/QuickViewManager","unlisted":false},{"type":"link","href":"/api/API-Reference/features/SelectionViewManager","label":"SelectionViewManager","docId":"API-Reference/features/SelectionViewManager","unlisted":false},{"type":"link","href":"/api/API-Reference/features/TaskManager","label":"TaskManager","docId":"API-Reference/features/TaskManager","unlisted":false}]},{"type":"category","label":"file","collapsible":true,"collapsed":true,"items":[{"type":"link","href":"/api/API-Reference/file/FileUtils","label":"FileUtils","docId":"API-Reference/file/FileUtils","unlisted":false}]},{"type":"category","label":"FileSystem","collapsible":true,"collapsed":true,"items":[{"type":"link","href":"/api/API-Reference/filesystem/Directory","label":"Directory","docId":"API-Reference/filesystem/Directory","unlisted":false},{"type":"link","href":"/api/API-Reference/filesystem/File","label":"File","docId":"API-Reference/filesystem/File","unlisted":false},{"type":"link","href":"/api/API-Reference/filesystem/FileIndex","label":"FileIndex","docId":"API-Reference/filesystem/FileIndex","unlisted":false},{"type":"link","href":"/api/API-Reference/filesystem/FileSystemEntry","label":"FileSystemEntry","docId":"API-Reference/filesystem/FileSystemEntry","unlisted":false},{"type":"link","href":"/api/API-Reference/filesystem/FileSystemError","label":"FileSystemError","docId":"API-Reference/filesystem/FileSystemError","unlisted":false},{"type":"link","href":"/api/API-Reference/filesystem/FileSystemStats","label":"FileSystemStats","docId":"API-Reference/filesystem/FileSystemStats","unlisted":false},{"type":"link","href":"/api/API-Reference/filesystem/RemoteFile","label":"RemoteFile","docId":"API-Reference/filesystem/RemoteFile","unlisted":false},{"type":"link","href":"/api/API-Reference/filesystem/WatchedRoot","label":"WatchedRoot","docId":"API-Reference/filesystem/WatchedRoot","unlisted":false}],"href":"/api/API-Reference/filesystem/"},{"type":"category","label":"language","collapsible":true,"collapsed":true,"items":[{"type":"link","href":"/api/API-Reference/language/CSSUtils","label":"CSSUtils","docId":"API-Reference/language/CSSUtils","unlisted":false},{"type":"link","href":"/api/API-Reference/language/CodeInspection","label":"CodeInspection","docId":"API-Reference/language/CodeInspection","unlisted":false},{"type":"link","href":"/api/API-Reference/language/HTMLDOMDiff","label":"HTMLDOMDiff","docId":"API-Reference/language/HTMLDOMDiff","unlisted":false},{"type":"link","href":"/api/API-Reference/language/HTMLSimpleDOM","label":"HTMLSimpleDOM","docId":"API-Reference/language/HTMLSimpleDOM","unlisted":false},{"type":"link","href":"/api/API-Reference/language/HTMLUtils","label":"HTMLUtils","docId":"API-Reference/language/HTMLUtils","unlisted":false},{"type":"link","href":"/api/API-Reference/language/JSONUtils","label":"JSONUtils","docId":"API-Reference/language/JSONUtils","unlisted":false},{"type":"link","href":"/api/API-Reference/language/JSUtils","label":"JSUtils","docId":"API-Reference/language/JSUtils","unlisted":false},{"type":"link","href":"/api/API-Reference/language/LanguageManager","label":"LanguageManager","docId":"API-Reference/language/LanguageManager","unlisted":false},{"type":"link","href":"/api/API-Reference/language/XMLUtils","label":"XMLUtils","docId":"API-Reference/language/XMLUtils","unlisted":false}]},{"type":"category","label":"preferences","collapsible":true,"collapsed":true,"items":[{"type":"link","href":"/api/API-Reference/preferences/PreferencesManager","label":"PreferencesManager","docId":"API-Reference/preferences/PreferencesManager","unlisted":false},{"type":"link","href":"/api/API-Reference/preferences/StateManager","label":"StateManager","docId":"API-Reference/preferences/StateManager","unlisted":false}]},{"type":"category","label":"project","collapsible":true,"collapsed":true,"items":[{"type":"link","href":"/api/API-Reference/project/FileSyncManager","label":"FileSyncManager","docId":"API-Reference/project/FileSyncManager","unlisted":false},{"type":"link","href":"/api/API-Reference/project/FileTreeView","label":"FileTreeView","docId":"API-Reference/project/FileTreeView","unlisted":false},{"type":"link","href":"/api/API-Reference/project/FileTreeViewModel","label":"FileTreeViewModel","docId":"API-Reference/project/FileTreeViewModel","unlisted":false},{"type":"link","href":"/api/API-Reference/project/FileViewController","label":"FileViewController","docId":"API-Reference/project/FileViewController","unlisted":false},{"type":"link","href":"/api/API-Reference/project/ProjectManager","label":"ProjectManager","docId":"API-Reference/project/ProjectManager","unlisted":false},{"type":"link","href":"/api/API-Reference/project/ProjectModel","label":"ProjectModel","docId":"API-Reference/project/ProjectModel","unlisted":false},{"type":"link","href":"/api/API-Reference/project/SidebarView","label":"SidebarView","docId":"API-Reference/project/SidebarView","unlisted":false},{"type":"link","href":"/api/API-Reference/project/WorkingSetSort","label":"WorkingSetSort","docId":"API-Reference/project/WorkingSetSort","unlisted":false},{"type":"link","href":"/api/API-Reference/project/WorkingSetView","label":"WorkingSetView","docId":"API-Reference/project/WorkingSetView","unlisted":false}]},{"type":"category","label":"search","collapsible":true,"collapsed":true,"items":[{"type":"link","href":"/api/API-Reference/search/FileFilters","label":"FileFilters","docId":"API-Reference/search/FileFilters","unlisted":false},{"type":"link","href":"/api/API-Reference/search/FindBar","label":"FindBar","docId":"API-Reference/search/FindBar","unlisted":false},{"type":"link","href":"/api/API-Reference/search/FindInFiles","label":"FindInFiles","docId":"API-Reference/search/FindInFiles","unlisted":false},{"type":"link","href":"/api/API-Reference/search/FindUtils","label":"FindUtils","docId":"API-Reference/search/FindUtils","unlisted":false},{"type":"link","href":"/api/API-Reference/search/QuickOpen","label":"QuickOpen","docId":"API-Reference/search/QuickOpen","unlisted":false},{"type":"link","href":"/api/API-Reference/search/QuickOpenHelper","label":"QuickOpenHelper","docId":"API-Reference/search/QuickOpenHelper","unlisted":false},{"type":"link","href":"/api/API-Reference/search/QuickSearchField","label":"QuickSearchField","docId":"API-Reference/search/QuickSearchField","unlisted":false},{"type":"link","href":"/api/API-Reference/search/SearchModel","label":"SearchModel","docId":"API-Reference/search/SearchModel","unlisted":false},{"type":"link","href":"/api/API-Reference/search/SearchResultsView","label":"SearchResultsView","docId":"API-Reference/search/SearchResultsView","unlisted":false}]},{"type":"category","label":"utils","collapsible":true,"collapsed":true,"items":[{"type":"link","href":"/api/API-Reference/utils/AppInit","label":"AppInit","docId":"API-Reference/utils/AppInit","unlisted":false},{"type":"link","href":"/api/API-Reference/utils/Async","label":"Async","docId":"API-Reference/utils/Async","unlisted":false},{"type":"link","href":"/api/API-Reference/utils/ColorUtils","label":"ColorUtils","docId":"API-Reference/utils/ColorUtils","unlisted":false},{"type":"link","href":"/api/API-Reference/utils/DeprecationWarning","label":"DeprecationWarning","docId":"API-Reference/utils/DeprecationWarning","unlisted":false},{"type":"link","href":"/api/API-Reference/utils/DragAndDrop","label":"DragAndDrop","docId":"API-Reference/utils/DragAndDrop","unlisted":false},{"type":"link","href":"/api/API-Reference/utils/DropdownEventHandler","label":"DropdownEventHandler","docId":"API-Reference/utils/DropdownEventHandler","unlisted":false},{"type":"link","href":"/api/API-Reference/utils/EventDispatcher","label":"EventDispatcher","docId":"API-Reference/utils/EventDispatcher","unlisted":false},{"type":"link","href":"/api/API-Reference/utils/EventManager","label":"EventManager","docId":"API-Reference/utils/EventManager","unlisted":false},{"type":"link","href":"/api/API-Reference/utils/ExtensionInterface","label":"ExtensionInterface","docId":"API-Reference/utils/ExtensionInterface","unlisted":false},{"type":"link","href":"/api/API-Reference/utils/ExtensionLoader","label":"ExtensionLoader","docId":"API-Reference/utils/ExtensionLoader","unlisted":false},{"type":"link","href":"/api/API-Reference/utils/ExtensionUtils","label":"ExtensionUtils","docId":"API-Reference/utils/ExtensionUtils","unlisted":false},{"type":"link","href":"/api/API-Reference/utils/FeatureGate","label":"FeatureGate","docId":"API-Reference/utils/FeatureGate","unlisted":false},{"type":"link","href":"/api/API-Reference/utils/KeyEvent","label":"KeyEvent","docId":"API-Reference/utils/KeyEvent","unlisted":false},{"type":"link","href":"/api/API-Reference/utils/LocalizationUtils","label":"LocalizationUtils","docId":"API-Reference/utils/LocalizationUtils","unlisted":false},{"type":"link","href":"/api/API-Reference/utils/NativeApp","label":"NativeApp","docId":"API-Reference/utils/NativeApp","unlisted":false},{"type":"link","href":"/api/API-Reference/utils/NodeUtils","label":"NodeUtils","docId":"API-Reference/utils/NodeUtils","unlisted":false},{"type":"link","href":"/api/API-Reference/utils/PerfUtils","label":"PerfUtils","docId":"API-Reference/utils/PerfUtils","unlisted":false},{"type":"link","href":"/api/API-Reference/utils/Resizer","label":"Resizer","docId":"API-Reference/utils/Resizer","unlisted":false},{"type":"link","href":"/api/API-Reference/utils/StringMatch","label":"StringMatch","docId":"API-Reference/utils/StringMatch","unlisted":false},{"type":"link","href":"/api/API-Reference/utils/StringUtils","label":"StringUtils","docId":"API-Reference/utils/StringUtils","unlisted":false},{"type":"link","href":"/api/API-Reference/utils/TokenUtils","label":"TokenUtils","docId":"API-Reference/utils/TokenUtils","unlisted":false},{"type":"link","href":"/api/API-Reference/utils/ValidationUtils","label":"ValidationUtils","docId":"API-Reference/utils/ValidationUtils","unlisted":false},{"type":"link","href":"/api/API-Reference/utils/ViewUtils","label":"ViewUtils","docId":"API-Reference/utils/ViewUtils","unlisted":false},{"type":"link","href":"/api/API-Reference/utils/ZipUtils","label":"ZipUtils","docId":"API-Reference/utils/ZipUtils","unlisted":false}]},{"type":"category","label":"view","collapsible":true,"collapsed":true,"items":[{"type":"link","href":"/api/API-Reference/view/MainViewFactory","label":"MainViewFactory","docId":"API-Reference/view/MainViewFactory","unlisted":false},{"type":"link","href":"/api/API-Reference/view/MainViewManager","label":"MainViewManager","docId":"API-Reference/view/MainViewManager","unlisted":false},{"type":"link","href":"/api/API-Reference/view/Pane","label":"Pane","docId":"API-Reference/view/Pane","unlisted":false},{"type":"link","href":"/api/API-Reference/view/PanelView","label":"PanelView","docId":"API-Reference/view/PanelView","unlisted":false},{"type":"link","href":"/api/API-Reference/view/PluginPanelView","label":"PluginPanelView","docId":"API-Reference/view/PluginPanelView","unlisted":false},{"type":"link","href":"/api/API-Reference/view/SidebarTabs","label":"SidebarTabs","docId":"API-Reference/view/SidebarTabs","unlisted":false},{"type":"link","href":"/api/API-Reference/view/ThemeManager","label":"ThemeManager","docId":"API-Reference/view/ThemeManager","unlisted":false},{"type":"link","href":"/api/API-Reference/view/VideoPlayer","label":"VideoPlayer","docId":"API-Reference/view/VideoPlayer","unlisted":false},{"type":"link","href":"/api/API-Reference/view/ViewCommandHandlers","label":"ViewCommandHandlers","docId":"API-Reference/view/ViewCommandHandlers","unlisted":false},{"type":"link","href":"/api/API-Reference/view/ViewStateManager","label":"ViewStateManager","docId":"API-Reference/view/ViewStateManager","unlisted":false},{"type":"link","href":"/api/API-Reference/view/WorkspaceManager","label":"WorkspaceManager","docId":"API-Reference/view/WorkspaceManager","unlisted":false}]},{"type":"category","label":"widgets","collapsible":true,"collapsed":true,"items":[{"type":"link","href":"/api/API-Reference/widgets/DefaultDialogs","label":"DefaultDialogs","docId":"API-Reference/widgets/DefaultDialogs","unlisted":false},{"type":"link","href":"/api/API-Reference/widgets/Dialogs","label":"Dialogs","docId":"API-Reference/widgets/Dialogs","unlisted":false},{"type":"link","href":"/api/API-Reference/widgets/DropdownButton","label":"DropdownButton","docId":"API-Reference/widgets/DropdownButton","unlisted":false},{"type":"link","href":"/api/API-Reference/widgets/ModalBar","label":"ModalBar","docId":"API-Reference/widgets/ModalBar","unlisted":false},{"type":"link","href":"/api/API-Reference/widgets/NotificationUI","label":"NotificationUI","docId":"API-Reference/widgets/NotificationUI","unlisted":false},{"type":"link","href":"/api/API-Reference/widgets/PopUpManager","label":"PopUpManager","docId":"API-Reference/widgets/PopUpManager","unlisted":false},{"type":"link","href":"/api/API-Reference/widgets/StatusBar","label":"StatusBar","docId":"API-Reference/widgets/StatusBar","unlisted":false}]},{"type":"category","label":"worker","collapsible":true,"collapsed":true,"items":[{"type":"link","href":"/api/API-Reference/worker/IndexingWorker","label":"IndexingWorker","docId":"API-Reference/worker/IndexingWorker","unlisted":false},{"type":"link","href":"/api/API-Reference/worker/WorkerComm","label":"WorkerComm","docId":"API-Reference/worker/WorkerComm","unlisted":false}]}]}]},"docs":{"API-Reference/command/CommandManager":{"id":"API-Reference/command/CommandManager","title":"CommandManager","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/command/Commands":{"id":"API-Reference/command/Commands","title":"Commands","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/command/KeyBindingManager":{"id":"API-Reference/command/KeyBindingManager","title":"KeyBindingManager","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/command/KeyboardOverlayMode":{"id":"API-Reference/command/KeyboardOverlayMode","title":"KeyboardOverlayMode","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/command/Keys":{"id":"API-Reference/command/Keys","title":"Keys","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/command/Menus":{"id":"API-Reference/command/Menus","title":"Menus","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/document/Document":{"id":"API-Reference/document/Document","title":"Document","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/document/DocumentManager":{"id":"API-Reference/document/DocumentManager","title":"DocumentManager","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/document/TextRange":{"id":"API-Reference/document/TextRange","title":"TextRange","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/editor/CodeHintManager":{"id":"API-Reference/editor/CodeHintManager","title":"CodeHintManager","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/editor/Editor":{"id":"API-Reference/editor/Editor","title":"Editor","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/editor/EditorManager":{"id":"API-Reference/editor/EditorManager","title":"EditorManager","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/features/BeautificationManager":{"id":"API-Reference/features/BeautificationManager","title":"BeautificationManager","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/features/NewFileContentManager":{"id":"API-Reference/features/NewFileContentManager","title":"NewFileContentManager","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/features/PriorityBasedRegistration":{"id":"API-Reference/features/PriorityBasedRegistration","title":"PriorityBasedRegistration","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/features/QuickViewManager":{"id":"API-Reference/features/QuickViewManager","title":"QuickViewManager","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/features/SelectionViewManager":{"id":"API-Reference/features/SelectionViewManager","title":"SelectionViewManager","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/features/TaskManager":{"id":"API-Reference/features/TaskManager","title":"TaskManager","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/file/FileUtils":{"id":"API-Reference/file/FileUtils","title":"FileUtils","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/filesystem/Directory":{"id":"API-Reference/filesystem/Directory","title":"Directory","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/filesystem/File":{"id":"API-Reference/filesystem/File","title":"File","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/filesystem/FileIndex":{"id":"API-Reference/filesystem/FileIndex","title":"FileIndex","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/filesystem/FileSystem":{"id":"API-Reference/filesystem/FileSystem","title":"FileSystem","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/filesystem/FileSystemEntry":{"id":"API-Reference/filesystem/FileSystemEntry","title":"FileSystemEntry","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/filesystem/FileSystemError":{"id":"API-Reference/filesystem/FileSystemError","title":"FileSystemError","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/filesystem/FileSystemStats":{"id":"API-Reference/filesystem/FileSystemStats","title":"FileSystemStats","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/filesystem/RemoteFile":{"id":"API-Reference/filesystem/RemoteFile","title":"RemoteFile","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/filesystem/WatchedRoot":{"id":"API-Reference/filesystem/WatchedRoot","title":"WatchedRoot","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/JSUtils/Preferences":{"id":"API-Reference/JSUtils/Preferences","title":"Preferences","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/JSUtils/ScopeManager":{"id":"API-Reference/JSUtils/ScopeManager","title":"ScopeManager","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/JSUtils/Session":{"id":"API-Reference/JSUtils/Session","title":"Session","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/language/CodeInspection":{"id":"API-Reference/language/CodeInspection","title":"CodeInspection","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/language/CSSUtils":{"id":"API-Reference/language/CSSUtils","title":"CSSUtils","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/language/HTMLDOMDiff":{"id":"API-Reference/language/HTMLDOMDiff","title":"HTMLDOMDiff","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/language/HTMLSimpleDOM":{"id":"API-Reference/language/HTMLSimpleDOM","title":"HTMLSimpleDOM","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/language/HTMLUtils":{"id":"API-Reference/language/HTMLUtils","title":"HTMLUtils","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/language/JSONUtils":{"id":"API-Reference/language/JSONUtils","title":"JSONUtils","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/language/JSUtils":{"id":"API-Reference/language/JSUtils","title":"JSUtils","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/language/LanguageManager":{"id":"API-Reference/language/LanguageManager","title":"LanguageManager","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/language/XMLUtils":{"id":"API-Reference/language/XMLUtils","title":"XMLUtils","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/NodeConnector":{"id":"API-Reference/NodeConnector","title":"NodeConnector","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/preferences/PreferencesManager":{"id":"API-Reference/preferences/PreferencesManager","title":"PreferencesManager","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/preferences/StateManager":{"id":"API-Reference/preferences/StateManager","title":"StateManager","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/project/FileSyncManager":{"id":"API-Reference/project/FileSyncManager","title":"FileSyncManager","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/project/FileTreeView":{"id":"API-Reference/project/FileTreeView","title":"FileTreeView","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/project/FileTreeViewModel":{"id":"API-Reference/project/FileTreeViewModel","title":"FileTreeViewModel","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/project/FileViewController":{"id":"API-Reference/project/FileViewController","title":"FileViewController","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/project/ProjectManager":{"id":"API-Reference/project/ProjectManager","title":"ProjectManager","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/project/ProjectModel":{"id":"API-Reference/project/ProjectModel","title":"ProjectModel","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/project/SidebarView":{"id":"API-Reference/project/SidebarView","title":"SidebarView","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/project/WorkingSetSort":{"id":"API-Reference/project/WorkingSetSort","title":"WorkingSetSort","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/project/WorkingSetView":{"id":"API-Reference/project/WorkingSetView","title":"WorkingSetView","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/search/FileFilters":{"id":"API-Reference/search/FileFilters","title":"FileFilters","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/search/FindBar":{"id":"API-Reference/search/FindBar","title":"FindBar","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/search/FindInFiles":{"id":"API-Reference/search/FindInFiles","title":"FindInFiles","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/search/FindUtils":{"id":"API-Reference/search/FindUtils","title":"FindUtils","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/search/QuickOpen":{"id":"API-Reference/search/QuickOpen","title":"QuickOpen","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/search/QuickOpenHelper":{"id":"API-Reference/search/QuickOpenHelper","title":"QuickOpenHelper","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/search/QuickSearchField":{"id":"API-Reference/search/QuickSearchField","title":"QuickSearchField","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/search/SearchModel":{"id":"API-Reference/search/SearchModel","title":"SearchModel","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/search/SearchResultsView":{"id":"API-Reference/search/SearchResultsView","title":"SearchResultsView","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/utils/AppInit":{"id":"API-Reference/utils/AppInit","title":"AppInit","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/utils/Async":{"id":"API-Reference/utils/Async","title":"Async","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/utils/ColorUtils":{"id":"API-Reference/utils/ColorUtils","title":"ColorUtils","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/utils/DeprecationWarning":{"id":"API-Reference/utils/DeprecationWarning","title":"DeprecationWarning","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/utils/DragAndDrop":{"id":"API-Reference/utils/DragAndDrop","title":"DragAndDrop","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/utils/DropdownEventHandler":{"id":"API-Reference/utils/DropdownEventHandler","title":"DropdownEventHandler","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/utils/EventDispatcher":{"id":"API-Reference/utils/EventDispatcher","title":"EventDispatcher","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/utils/EventManager":{"id":"API-Reference/utils/EventManager","title":"EventManager","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/utils/ExtensionInterface":{"id":"API-Reference/utils/ExtensionInterface","title":"ExtensionInterface","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/utils/ExtensionLoader":{"id":"API-Reference/utils/ExtensionLoader","title":"ExtensionLoader","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/utils/ExtensionUtils":{"id":"API-Reference/utils/ExtensionUtils","title":"ExtensionUtils","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/utils/FeatureGate":{"id":"API-Reference/utils/FeatureGate","title":"FeatureGate","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/utils/KeyEvent":{"id":"API-Reference/utils/KeyEvent","title":"KeyEvent","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/utils/LocalizationUtils":{"id":"API-Reference/utils/LocalizationUtils","title":"LocalizationUtils","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/utils/NativeApp":{"id":"API-Reference/utils/NativeApp","title":"NativeApp","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/utils/NodeUtils":{"id":"API-Reference/utils/NodeUtils","title":"NodeUtils","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/utils/PerfUtils":{"id":"API-Reference/utils/PerfUtils","title":"PerfUtils","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/utils/Resizer":{"id":"API-Reference/utils/Resizer","title":"Resizer","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/utils/StringMatch":{"id":"API-Reference/utils/StringMatch","title":"StringMatch","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/utils/StringUtils":{"id":"API-Reference/utils/StringUtils","title":"StringUtils","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/utils/TokenUtils":{"id":"API-Reference/utils/TokenUtils","title":"TokenUtils","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/utils/ValidationUtils":{"id":"API-Reference/utils/ValidationUtils","title":"ValidationUtils","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/utils/ViewUtils":{"id":"API-Reference/utils/ViewUtils","title":"ViewUtils","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/utils/ZipUtils":{"id":"API-Reference/utils/ZipUtils","title":"ZipUtils","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/view/MainViewFactory":{"id":"API-Reference/view/MainViewFactory","title":"MainViewFactory","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/view/MainViewManager":{"id":"API-Reference/view/MainViewManager","title":"MainViewManager","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/view/Pane":{"id":"API-Reference/view/Pane","title":"Pane","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/view/PanelView":{"id":"API-Reference/view/PanelView","title":"PanelView","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/view/PluginPanelView":{"id":"API-Reference/view/PluginPanelView","title":"PluginPanelView","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/view/SidebarTabs":{"id":"API-Reference/view/SidebarTabs","title":"SidebarTabs","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/view/ThemeManager":{"id":"API-Reference/view/ThemeManager","title":"ThemeManager","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/view/VideoPlayer":{"id":"API-Reference/view/VideoPlayer","title":"VideoPlayer","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/view/ViewCommandHandlers":{"id":"API-Reference/view/ViewCommandHandlers","title":"ViewCommandHandlers","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/view/ViewStateManager":{"id":"API-Reference/view/ViewStateManager","title":"ViewStateManager","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/view/WorkspaceManager":{"id":"API-Reference/view/WorkspaceManager","title":"WorkspaceManager","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/widgets/DefaultDialogs":{"id":"API-Reference/widgets/DefaultDialogs","title":"DefaultDialogs","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/widgets/Dialogs":{"id":"API-Reference/widgets/Dialogs","title":"Dialogs","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/widgets/DropdownButton":{"id":"API-Reference/widgets/DropdownButton","title":"DropdownButton","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/widgets/ModalBar":{"id":"API-Reference/widgets/ModalBar","title":"ModalBar","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/widgets/NotificationUI":{"id":"API-Reference/widgets/NotificationUI","title":"NotificationUI","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/widgets/PopUpManager":{"id":"API-Reference/widgets/PopUpManager","title":"PopUpManager","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/widgets/StatusBar":{"id":"API-Reference/widgets/StatusBar","title":"StatusBar","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/worker/IndexingWorker":{"id":"API-Reference/worker/IndexingWorker","title":"IndexingWorker","description":"Import :","sidebar":"tutorialSidebar"},"API-Reference/worker/WorkerComm":{"id":"API-Reference/worker/WorkerComm","title":"WorkerComm","description":"Import :","sidebar":"tutorialSidebar"},"available-standard-libs":{"id":"available-standard-libs","title":"Available Standard Libraries","description":"The following standard libraries are available inside Phoenix Code:","sidebar":"tutorialSidebar"},"creating-extensions":{"id":"creating-extensions","title":"Creating Extensions","description":"This document outlines how to write your own extensions for Phoenix Code.","sidebar":"tutorialSidebar"},"creating-node-extensions":{"id":"creating-node-extensions","title":"Use node.js from your extension","description":"This document outlines how to create node extensions for Phoenix Code.","sidebar":"tutorialSidebar"},"creating-themes":{"id":"creating-themes","title":"Creating Themes","description":"This document outlines how to create your own themes for Phoenix Code.","sidebar":"tutorialSidebar"},"debugging-extensions":{"id":"debugging-extensions","title":"Debugging Extensions","description":"The Debug menu provides several options for extension development.","sidebar":"tutorialSidebar"},"getting-started":{"id":"getting-started","title":"Getting Started","description":"This guide provides an overview on the documentation structure and how to get started with the Phoenix Code API documentation!","sidebar":"tutorialSidebar"},"How-To/Dialogs":{"id":"How-To/Dialogs","title":"Show Dialogs","description":"This document outlines the basic features of working with Dialogs, including:","sidebar":"tutorialSidebar"},"How-To/Menus":{"id":"How-To/Menus","title":"Add Menus, Menu items and Keyboard Shortcuts","description":"This document outlines the basic features of working with Menus, including:","sidebar":"tutorialSidebar"},"How-To/Panels":{"id":"How-To/Panels","title":"How to create Panels","description":"In Phoenix Code, Panels are of two types :- Plugin Panel and Bottom Panel.","sidebar":"tutorialSidebar"},"How-To/StatusBar":{"id":"How-To/StatusBar","title":"Add an indicator icon on the status bar","description":"This document outlines the basic features of working with Status Bar, including:","sidebar":"tutorialSidebar"},"publishing-extensions":{"id":"publishing-extensions","title":"Publishing Themes & Extensions","description":"This document outlines how to publish your Extensions/Themes to Phoenix Code Extension store.","sidebar":"tutorialSidebar"}}}}')}}]); \ No newline at end of file diff --git a/assets/js/5955.16f52523.js b/assets/js/5955.16f52523.js new file mode 100644 index 00000000..6dc58ac8 --- /dev/null +++ b/assets/js/5955.16f52523.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5955],{45955:(t,i,e)=>{e.d(i,{diagram:()=>it});var s=e(73590),a=e(30092),n=e(13226),h=e(67633),o=e(40797),r=e(70451),l=function(){var t=(0,o.K2)((function(t,i,e,s){for(e=e||{},s=t.length;s--;e[t[s]]=i);return e}),"o"),i=[1,10,12,14,16,18,19,21,23],e=[2,6],s=[1,3],a=[1,5],n=[1,6],h=[1,7],r=[1,5,10,12,14,16,18,19,21,23,34,35,36],l=[1,25],c=[1,26],g=[1,28],u=[1,29],x=[1,30],d=[1,31],p=[1,32],f=[1,33],y=[1,34],m=[1,35],b=[1,36],A=[1,37],w=[1,43],S=[1,42],C=[1,47],k=[1,50],_=[1,10,12,14,16,18,19,21,23,34,35,36],T=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36],R=[1,10,12,14,16,18,19,21,23,24,26,27,28,34,35,36,41,42,43,44,45,46,47,48,49,50],D=[1,64],L={trace:(0,o.K2)((function(){}),"trace"),yy:{},symbols_:{error:2,start:3,eol:4,XYCHART:5,chartConfig:6,document:7,CHART_ORIENTATION:8,statement:9,title:10,text:11,X_AXIS:12,parseXAxis:13,Y_AXIS:14,parseYAxis:15,LINE:16,plotData:17,BAR:18,acc_title:19,acc_title_value:20,acc_descr:21,acc_descr_value:22,acc_descr_multiline_value:23,SQUARE_BRACES_START:24,commaSeparatedNumbers:25,SQUARE_BRACES_END:26,NUMBER_WITH_DECIMAL:27,COMMA:28,xAxisData:29,bandData:30,ARROW_DELIMITER:31,commaSeparatedTexts:32,yAxisData:33,NEWLINE:34,SEMI:35,EOF:36,alphaNum:37,STR:38,MD_STR:39,alphaNumToken:40,AMP:41,NUM:42,ALPHA:43,PLUS:44,EQUALS:45,MULT:46,DOT:47,BRKT:48,MINUS:49,UNDERSCORE:50,$accept:0,$end:1},terminals_:{2:"error",5:"XYCHART",8:"CHART_ORIENTATION",10:"title",12:"X_AXIS",14:"Y_AXIS",16:"LINE",18:"BAR",19:"acc_title",20:"acc_title_value",21:"acc_descr",22:"acc_descr_value",23:"acc_descr_multiline_value",24:"SQUARE_BRACES_START",26:"SQUARE_BRACES_END",27:"NUMBER_WITH_DECIMAL",28:"COMMA",31:"ARROW_DELIMITER",34:"NEWLINE",35:"SEMI",36:"EOF",38:"STR",39:"MD_STR",41:"AMP",42:"NUM",43:"ALPHA",44:"PLUS",45:"EQUALS",46:"MULT",47:"DOT",48:"BRKT",49:"MINUS",50:"UNDERSCORE"},productions_:[0,[3,2],[3,3],[3,2],[3,1],[6,1],[7,0],[7,2],[9,2],[9,2],[9,2],[9,2],[9,2],[9,3],[9,2],[9,3],[9,2],[9,2],[9,1],[17,3],[25,3],[25,1],[13,1],[13,2],[13,1],[29,1],[29,3],[30,3],[32,3],[32,1],[15,1],[15,2],[15,1],[33,3],[4,1],[4,1],[4,1],[11,1],[11,1],[11,1],[37,1],[37,2],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1],[40,1]],performAction:(0,o.K2)((function(t,i,e,s,a,n,h){var o=n.length-1;switch(a){case 5:s.setOrientation(n[o]);break;case 9:s.setDiagramTitle(n[o].text.trim());break;case 12:s.setLineData({text:"",type:"text"},n[o]);break;case 13:s.setLineData(n[o-1],n[o]);break;case 14:s.setBarData({text:"",type:"text"},n[o]);break;case 15:s.setBarData(n[o-1],n[o]);break;case 16:this.$=n[o].trim(),s.setAccTitle(this.$);break;case 17:case 18:this.$=n[o].trim(),s.setAccDescription(this.$);break;case 19:case 27:this.$=n[o-1];break;case 20:this.$=[Number(n[o-2]),...n[o]];break;case 21:this.$=[Number(n[o])];break;case 22:s.setXAxisTitle(n[o]);break;case 23:s.setXAxisTitle(n[o-1]);break;case 24:s.setXAxisTitle({type:"text",text:""});break;case 25:s.setXAxisBand(n[o]);break;case 26:s.setXAxisRangeData(Number(n[o-2]),Number(n[o]));break;case 28:this.$=[n[o-2],...n[o]];break;case 29:this.$=[n[o]];break;case 30:s.setYAxisTitle(n[o]);break;case 31:s.setYAxisTitle(n[o-1]);break;case 32:s.setYAxisTitle({type:"text",text:""});break;case 33:s.setYAxisRangeData(Number(n[o-2]),Number(n[o]));break;case 37:case 38:this.$={text:n[o],type:"text"};break;case 39:this.$={text:n[o],type:"markdown"};break;case 40:this.$=n[o];break;case 41:this.$=n[o-1]+""+n[o]}}),"anonymous"),table:[t(i,e,{3:1,4:2,7:4,5:s,34:a,35:n,36:h}),{1:[3]},t(i,e,{4:2,7:4,3:8,5:s,34:a,35:n,36:h}),t(i,e,{4:2,7:4,6:9,3:10,5:s,8:[1,11],34:a,35:n,36:h}),{1:[2,4],9:12,10:[1,13],12:[1,14],14:[1,15],16:[1,16],18:[1,17],19:[1,18],21:[1,19],23:[1,20]},t(r,[2,34]),t(r,[2,35]),t(r,[2,36]),{1:[2,1]},t(i,e,{4:2,7:4,3:21,5:s,34:a,35:n,36:h}),{1:[2,3]},t(r,[2,5]),t(i,[2,7],{4:22,34:a,35:n,36:h}),{11:23,37:24,38:l,39:c,40:27,41:g,42:u,43:x,44:d,45:p,46:f,47:y,48:m,49:b,50:A},{11:39,13:38,24:w,27:S,29:40,30:41,37:24,38:l,39:c,40:27,41:g,42:u,43:x,44:d,45:p,46:f,47:y,48:m,49:b,50:A},{11:45,15:44,27:C,33:46,37:24,38:l,39:c,40:27,41:g,42:u,43:x,44:d,45:p,46:f,47:y,48:m,49:b,50:A},{11:49,17:48,24:k,37:24,38:l,39:c,40:27,41:g,42:u,43:x,44:d,45:p,46:f,47:y,48:m,49:b,50:A},{11:52,17:51,24:k,37:24,38:l,39:c,40:27,41:g,42:u,43:x,44:d,45:p,46:f,47:y,48:m,49:b,50:A},{20:[1,53]},{22:[1,54]},t(_,[2,18]),{1:[2,2]},t(_,[2,8]),t(_,[2,9]),t(T,[2,37],{40:55,41:g,42:u,43:x,44:d,45:p,46:f,47:y,48:m,49:b,50:A}),t(T,[2,38]),t(T,[2,39]),t(R,[2,40]),t(R,[2,42]),t(R,[2,43]),t(R,[2,44]),t(R,[2,45]),t(R,[2,46]),t(R,[2,47]),t(R,[2,48]),t(R,[2,49]),t(R,[2,50]),t(R,[2,51]),t(_,[2,10]),t(_,[2,22],{30:41,29:56,24:w,27:S}),t(_,[2,24]),t(_,[2,25]),{31:[1,57]},{11:59,32:58,37:24,38:l,39:c,40:27,41:g,42:u,43:x,44:d,45:p,46:f,47:y,48:m,49:b,50:A},t(_,[2,11]),t(_,[2,30],{33:60,27:C}),t(_,[2,32]),{31:[1,61]},t(_,[2,12]),{17:62,24:k},{25:63,27:D},t(_,[2,14]),{17:65,24:k},t(_,[2,16]),t(_,[2,17]),t(R,[2,41]),t(_,[2,23]),{27:[1,66]},{26:[1,67]},{26:[2,29],28:[1,68]},t(_,[2,31]),{27:[1,69]},t(_,[2,13]),{26:[1,70]},{26:[2,21],28:[1,71]},t(_,[2,15]),t(_,[2,26]),t(_,[2,27]),{11:59,32:72,37:24,38:l,39:c,40:27,41:g,42:u,43:x,44:d,45:p,46:f,47:y,48:m,49:b,50:A},t(_,[2,33]),t(_,[2,19]),{25:73,27:D},{26:[2,28]},{26:[2,20]}],defaultActions:{8:[2,1],10:[2,3],21:[2,2],72:[2,28],73:[2,20]},parseError:(0,o.K2)((function(t,i){if(!i.recoverable){var e=new Error(t);throw e.hash=i,e}this.trace(t)}),"parseError"),parse:(0,o.K2)((function(t){var i=this,e=[0],s=[],a=[null],n=[],h=this.table,r="",l=0,c=0,g=0,u=n.slice.call(arguments,1),x=Object.create(this.lexer),d={yy:{}};for(var p in this.yy)Object.prototype.hasOwnProperty.call(this.yy,p)&&(d.yy[p]=this.yy[p]);x.setInput(t,d.yy),d.yy.lexer=x,d.yy.parser=this,void 0===x.yylloc&&(x.yylloc={});var f=x.yylloc;n.push(f);var y=x.options&&x.options.ranges;function m(){var t;return"number"!=typeof(t=s.pop()||x.lex()||1)&&(t instanceof Array&&(t=(s=t).pop()),t=i.symbols_[t]||t),t}"function"==typeof d.yy.parseError?this.parseError=d.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,o.K2)((function(t){e.length=e.length-2*t,a.length=a.length-t,n.length=n.length-t}),"popStack"),(0,o.K2)(m,"lex");for(var b,A,w,S,C,k,_,T,R,D={};;){if(w=e[e.length-1],this.defaultActions[w]?S=this.defaultActions[w]:(null==b&&(b=m()),S=h[w]&&h[w][b]),void 0===S||!S.length||!S[0]){var L="";for(k in R=[],h[w])this.terminals_[k]&&k>2&&R.push("'"+this.terminals_[k]+"'");L=x.showPosition?"Parse error on line "+(l+1)+":\n"+x.showPosition()+"\nExpecting "+R.join(", ")+", got '"+(this.terminals_[b]||b)+"'":"Parse error on line "+(l+1)+": Unexpected "+(1==b?"end of input":"'"+(this.terminals_[b]||b)+"'"),this.parseError(L,{text:x.match,token:this.terminals_[b]||b,line:x.yylineno,loc:f,expected:R})}if(S[0]instanceof Array&&S.length>1)throw new Error("Parse Error: multiple actions possible at state: "+w+", token: "+b);switch(S[0]){case 1:e.push(b),a.push(x.yytext),n.push(x.yylloc),e.push(S[1]),b=null,A?(b=A,A=null):(c=x.yyleng,r=x.yytext,l=x.yylineno,f=x.yylloc,g>0&&g--);break;case 2:if(_=this.productions_[S[1]][1],D.$=a[a.length-_],D._$={first_line:n[n.length-(_||1)].first_line,last_line:n[n.length-1].last_line,first_column:n[n.length-(_||1)].first_column,last_column:n[n.length-1].last_column},y&&(D._$.range=[n[n.length-(_||1)].range[0],n[n.length-1].range[1]]),void 0!==(C=this.performAction.apply(D,[r,c,l,d.yy,S[1],a,n].concat(u))))return C;_&&(e=e.slice(0,-1*_*2),a=a.slice(0,-1*_),n=n.slice(0,-1*_)),e.push(this.productions_[S[1]][0]),a.push(D.$),n.push(D._$),T=h[e[e.length-2]][e[e.length-1]],e.push(T);break;case 3:return!0}}return!0}),"parse")},P=function(){return{EOF:1,parseError:(0,o.K2)((function(t,i){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,i)}),"parseError"),setInput:(0,o.K2)((function(t,i){return this.yy=i||this.yy||{},this._input=t,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:(0,o.K2)((function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t}),"input"),unput:(0,o.K2)((function(t){var i=t.length,e=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-i),this.offset-=i;var s=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),e.length-1&&(this.yylineno-=e.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:e?(e.length===s.length?this.yylloc.first_column:0)+s[s.length-e.length].length-e[0].length:this.yylloc.first_column-i},this.options.ranges&&(this.yylloc.range=[a[0],a[0]+this.yyleng-i]),this.yyleng=this.yytext.length,this}),"unput"),more:(0,o.K2)((function(){return this._more=!0,this}),"more"),reject:(0,o.K2)((function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):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).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})}),"reject"),less:(0,o.K2)((function(t){this.unput(this.match.slice(t))}),"less"),pastInput:(0,o.K2)((function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")}),"pastInput"),upcomingInput:(0,o.K2)((function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")}),"upcomingInput"),showPosition:(0,o.K2)((function(){var t=this.pastInput(),i=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+i+"^"}),"showPosition"),test_match:(0,o.K2)((function(t,i){var e,s,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))),(s=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=s.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:s?s[s.length-1].length-s[s.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,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(t[0].length),this.matched+=t[0],e=this.performAction.call(this,this.yy,this,i,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),e)return e;if(this._backtrack){for(var n in a)this[n]=a[n];return!1}return!1}),"test_match"),next:(0,o.K2)((function(){if(this.done)return this.EOF;var t,i,e,s;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var a=this._currentRules(),n=0;ni[0].length)){if(i=e,s=n,this.options.backtrack_lexer){if(!1!==(t=this.test_match(e,a[n])))return t;if(this._backtrack){i=!1;continue}return!1}if(!this.options.flex)break}return i?!1!==(t=this.test_match(i,a[s]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})}),"next"),lex:(0,o.K2)((function(){var t=this.next();return t||this.lex()}),"lex"),begin:(0,o.K2)((function(t){this.conditionStack.push(t)}),"begin"),popState:(0,o.K2)((function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]}),"popState"),_currentRules:(0,o.K2)((function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules}),"_currentRules"),topState:(0,o.K2)((function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"}),"topState"),pushState:(0,o.K2)((function(t){this.begin(t)}),"pushState"),stateStackSize:(0,o.K2)((function(){return this.conditionStack.length}),"stateStackSize"),options:{"case-insensitive":!0},performAction:(0,o.K2)((function(t,i,e,s){switch(e){case 0:case 1:case 5:case 44:break;case 2:case 3:return this.popState(),34;case 4:return 34;case 6:return 10;case 7:return this.pushState("acc_title"),19;case 8:return this.popState(),"acc_title_value";case 9:return this.pushState("acc_descr"),21;case 10:return this.popState(),"acc_descr_value";case 11:this.pushState("acc_descr_multiline");break;case 12:case 26:case 28:this.popState();break;case 13:return"acc_descr_multiline_value";case 14:case 15:return 5;case 16:return 8;case 17:return this.pushState("axis_data"),"X_AXIS";case 18:return this.pushState("axis_data"),"Y_AXIS";case 19:return this.pushState("axis_band_data"),24;case 20:return 31;case 21:return this.pushState("data"),16;case 22:return this.pushState("data"),18;case 23:return this.pushState("data_inner"),24;case 24:return 27;case 25:return this.popState(),26;case 27:this.pushState("string");break;case 29:return"STR";case 30:return 24;case 31:return 26;case 32:return 43;case 33:return"COLON";case 34:return 44;case 35:return 28;case 36:return 45;case 37:return 46;case 38:return 48;case 39:return 50;case 40:return 47;case 41:return 41;case 42:return 49;case 43:return 42;case 45:return 35;case 46:return 36}}),"anonymous"),rules:[/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:(\r?\n))/i,/^(?:(\r?\n))/i,/^(?:[\n\r]+)/i,/^(?:%%[^\n]*)/i,/^(?:title\b)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:\{)/i,/^(?:[^\}]*)/i,/^(?:xychart-beta\b)/i,/^(?:xychart\b)/i,/^(?:(?:vertical|horizontal))/i,/^(?:x-axis\b)/i,/^(?:y-axis\b)/i,/^(?:\[)/i,/^(?:-->)/i,/^(?:line\b)/i,/^(?:bar\b)/i,/^(?:\[)/i,/^(?:[+-]?(?:\d+(?:\.\d+)?|\.\d+))/i,/^(?:\])/i,/^(?:(?:`\) \{ this\.pushState\(md_string\); \}\n\(\?:\(\?!`"\)\.\)\+ \{ return MD_STR; \}\n\(\?:`))/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:\[)/i,/^(?:\])/i,/^(?:[A-Za-z]+)/i,/^(?::)/i,/^(?:\+)/i,/^(?:,)/i,/^(?:=)/i,/^(?:\*)/i,/^(?:#)/i,/^(?:[\_])/i,/^(?:\.)/i,/^(?:&)/i,/^(?:-)/i,/^(?:[0-9]+)/i,/^(?:\s+)/i,/^(?:;)/i,/^(?:$)/i],conditions:{data_inner:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,18,21,22,24,25,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0},data:{rules:[0,1,3,4,5,6,7,9,11,14,15,16,17,18,21,22,23,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0},axis_band_data:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,18,21,22,25,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0},axis_data:{rules:[0,1,2,4,5,6,7,9,11,14,15,16,17,18,19,20,21,22,24,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0},acc_descr_multiline:{rules:[12,13],inclusive:!1},acc_descr:{rules:[10],inclusive:!1},acc_title:{rules:[8],inclusive:!1},title:{rules:[],inclusive:!1},md_string:{rules:[],inclusive:!1},string:{rules:[28,29],inclusive:!1},INITIAL:{rules:[0,1,4,5,6,7,9,11,14,15,16,17,18,21,22,26,27,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46],inclusive:!0}}}}();function E(){this.yy={}}return L.lexer=P,(0,o.K2)(E,"Parser"),E.prototype=L,L.Parser=E,new E}();l.parser=l;var c=l;function g(t){return"bar"===t.type}function u(t){return"band"===t.type}function x(t){return"linear"===t.type}(0,o.K2)(g,"isBarPlot"),(0,o.K2)(u,"isBandAxisData"),(0,o.K2)(x,"isLinearAxisData");var d=class{constructor(t){this.parentGroup=t}static{(0,o.K2)(this,"TextDimensionCalculatorWithFont")}getMaxDimension(t,i){if(!this.parentGroup)return{width:t.reduce(((t,i)=>Math.max(i.length,t)),0)*i,height:i};const e={width:0,height:0},s=this.parentGroup.append("g").attr("visibility","hidden").attr("font-size",i);for(const n of t){const t=(0,a.W6)(s,1,n),h=t?t.width:n.length*i,o=t?t.height:i;e.width=Math.max(e.width,h),e.height=Math.max(e.height,o)}return s.remove(),e}},p=class{constructor(t,i,e,s){this.axisConfig=t,this.title=i,this.textDimensionCalculator=e,this.axisThemeConfig=s,this.boundingRect={x:0,y:0,width:0,height:0},this.axisPosition="left",this.showTitle=!1,this.showLabel=!1,this.showTick=!1,this.showAxisLine=!1,this.outerPadding=0,this.titleTextHeight=0,this.labelTextHeight=0,this.range=[0,10],this.boundingRect={x:0,y:0,width:0,height:0},this.axisPosition="left"}static{(0,o.K2)(this,"BaseAxis")}setRange(t){this.range=t,"left"===this.axisPosition||"right"===this.axisPosition?this.boundingRect.height=t[1]-t[0]:this.boundingRect.width=t[1]-t[0],this.recalculateScale()}getRange(){return[this.range[0]+this.outerPadding,this.range[1]-this.outerPadding]}setAxisPosition(t){this.axisPosition=t,this.setRange(this.range)}getTickDistance(){const t=this.getRange();return Math.abs(t[0]-t[1])/this.getTickValues().length}getAxisOuterPadding(){return this.outerPadding}getLabelDimension(){return this.textDimensionCalculator.getMaxDimension(this.getTickValues().map((t=>t.toString())),this.axisConfig.labelFontSize)}recalculateOuterPaddingToDrawBar(){.7*this.getTickDistance()>2*this.outerPadding&&(this.outerPadding=Math.floor(.7*this.getTickDistance()/2)),this.recalculateScale()}calculateSpaceIfDrawnHorizontally(t){let i=t.height;if(this.axisConfig.showAxisLine&&i>this.axisConfig.axisLineWidth&&(i-=this.axisConfig.axisLineWidth,this.showAxisLine=!0),this.axisConfig.showLabel){const e=this.getLabelDimension(),s=.2*t.width;this.outerPadding=Math.min(e.width/2,s);const a=e.height+2*this.axisConfig.labelPadding;this.labelTextHeight=e.height,a<=i&&(i-=a,this.showLabel=!0)}if(this.axisConfig.showTick&&i>=this.axisConfig.tickLength&&(this.showTick=!0,i-=this.axisConfig.tickLength),this.axisConfig.showTitle&&this.title){const t=this.textDimensionCalculator.getMaxDimension([this.title],this.axisConfig.titleFontSize),e=t.height+2*this.axisConfig.titlePadding;this.titleTextHeight=t.height,e<=i&&(i-=e,this.showTitle=!0)}this.boundingRect.width=t.width,this.boundingRect.height=t.height-i}calculateSpaceIfDrawnVertical(t){let i=t.width;if(this.axisConfig.showAxisLine&&i>this.axisConfig.axisLineWidth&&(i-=this.axisConfig.axisLineWidth,this.showAxisLine=!0),this.axisConfig.showLabel){const e=this.getLabelDimension(),s=.2*t.height;this.outerPadding=Math.min(e.height/2,s);const a=e.width+2*this.axisConfig.labelPadding;a<=i&&(i-=a,this.showLabel=!0)}if(this.axisConfig.showTick&&i>=this.axisConfig.tickLength&&(this.showTick=!0,i-=this.axisConfig.tickLength),this.axisConfig.showTitle&&this.title){const t=this.textDimensionCalculator.getMaxDimension([this.title],this.axisConfig.titleFontSize),e=t.height+2*this.axisConfig.titlePadding;this.titleTextHeight=t.height,e<=i&&(i-=e,this.showTitle=!0)}this.boundingRect.width=t.width-i,this.boundingRect.height=t.height}calculateSpace(t){return"left"===this.axisPosition||"right"===this.axisPosition?this.calculateSpaceIfDrawnVertical(t):this.calculateSpaceIfDrawnHorizontally(t),this.recalculateScale(),{width:this.boundingRect.width,height:this.boundingRect.height}}setBoundingBoxXY(t){this.boundingRect.x=t.x,this.boundingRect.y=t.y}getDrawableElementsForLeftAxis(){const t=[];if(this.showAxisLine){const i=this.boundingRect.x+this.boundingRect.width-this.axisConfig.axisLineWidth/2;t.push({type:"path",groupTexts:["left-axis","axisl-line"],data:[{path:`M ${i},${this.boundingRect.y} L ${i},${this.boundingRect.y+this.boundingRect.height} `,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&t.push({type:"text",groupTexts:["left-axis","label"],data:this.getTickValues().map((t=>({text:t.toString(),x:this.boundingRect.x+this.boundingRect.width-(this.showLabel?this.axisConfig.labelPadding:0)-(this.showTick?this.axisConfig.tickLength:0)-(this.showAxisLine?this.axisConfig.axisLineWidth:0),y:this.getScaleValue(t),fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"middle",horizontalPos:"right"})))}),this.showTick){const i=this.boundingRect.x+this.boundingRect.width-(this.showAxisLine?this.axisConfig.axisLineWidth:0);t.push({type:"path",groupTexts:["left-axis","ticks"],data:this.getTickValues().map((t=>({path:`M ${i},${this.getScaleValue(t)} L ${i-this.axisConfig.tickLength},${this.getScaleValue(t)}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth})))})}return this.showTitle&&t.push({type:"text",groupTexts:["left-axis","title"],data:[{text:this.title,x:this.boundingRect.x+this.axisConfig.titlePadding,y:this.boundingRect.y+this.boundingRect.height/2,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:270,verticalPos:"top",horizontalPos:"center"}]}),t}getDrawableElementsForBottomAxis(){const t=[];if(this.showAxisLine){const i=this.boundingRect.y+this.axisConfig.axisLineWidth/2;t.push({type:"path",groupTexts:["bottom-axis","axis-line"],data:[{path:`M ${this.boundingRect.x},${i} L ${this.boundingRect.x+this.boundingRect.width},${i}`,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&t.push({type:"text",groupTexts:["bottom-axis","label"],data:this.getTickValues().map((t=>({text:t.toString(),x:this.getScaleValue(t),y:this.boundingRect.y+this.axisConfig.labelPadding+(this.showTick?this.axisConfig.tickLength:0)+(this.showAxisLine?this.axisConfig.axisLineWidth:0),fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"})))}),this.showTick){const i=this.boundingRect.y+(this.showAxisLine?this.axisConfig.axisLineWidth:0);t.push({type:"path",groupTexts:["bottom-axis","ticks"],data:this.getTickValues().map((t=>({path:`M ${this.getScaleValue(t)},${i} L ${this.getScaleValue(t)},${i+this.axisConfig.tickLength}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth})))})}return this.showTitle&&t.push({type:"text",groupTexts:["bottom-axis","title"],data:[{text:this.title,x:this.range[0]+(this.range[1]-this.range[0])/2,y:this.boundingRect.y+this.boundingRect.height-this.axisConfig.titlePadding-this.titleTextHeight,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}]}),t}getDrawableElementsForTopAxis(){const t=[];if(this.showAxisLine){const i=this.boundingRect.y+this.boundingRect.height-this.axisConfig.axisLineWidth/2;t.push({type:"path",groupTexts:["top-axis","axis-line"],data:[{path:`M ${this.boundingRect.x},${i} L ${this.boundingRect.x+this.boundingRect.width},${i}`,strokeFill:this.axisThemeConfig.axisLineColor,strokeWidth:this.axisConfig.axisLineWidth}]})}if(this.showLabel&&t.push({type:"text",groupTexts:["top-axis","label"],data:this.getTickValues().map((t=>({text:t.toString(),x:this.getScaleValue(t),y:this.boundingRect.y+(this.showTitle?this.titleTextHeight+2*this.axisConfig.titlePadding:0)+this.axisConfig.labelPadding,fill:this.axisThemeConfig.labelColor,fontSize:this.axisConfig.labelFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"})))}),this.showTick){const i=this.boundingRect.y;t.push({type:"path",groupTexts:["top-axis","ticks"],data:this.getTickValues().map((t=>({path:`M ${this.getScaleValue(t)},${i+this.boundingRect.height-(this.showAxisLine?this.axisConfig.axisLineWidth:0)} L ${this.getScaleValue(t)},${i+this.boundingRect.height-this.axisConfig.tickLength-(this.showAxisLine?this.axisConfig.axisLineWidth:0)}`,strokeFill:this.axisThemeConfig.tickColor,strokeWidth:this.axisConfig.tickWidth})))})}return this.showTitle&&t.push({type:"text",groupTexts:["top-axis","title"],data:[{text:this.title,x:this.boundingRect.x+this.boundingRect.width/2,y:this.boundingRect.y+this.axisConfig.titlePadding,fill:this.axisThemeConfig.titleColor,fontSize:this.axisConfig.titleFontSize,rotation:0,verticalPos:"top",horizontalPos:"center"}]}),t}getDrawableElements(){if("left"===this.axisPosition)return this.getDrawableElementsForLeftAxis();if("right"===this.axisPosition)throw Error("Drawing of right axis is not implemented");return"bottom"===this.axisPosition?this.getDrawableElementsForBottomAxis():"top"===this.axisPosition?this.getDrawableElementsForTopAxis():[]}},f=class extends p{static{(0,o.K2)(this,"BandAxis")}constructor(t,i,e,s,a){super(t,s,a,i),this.categories=e,this.scale=(0,r.WH)().domain(this.categories).range(this.getRange())}setRange(t){super.setRange(t)}recalculateScale(){this.scale=(0,r.WH)().domain(this.categories).range(this.getRange()).paddingInner(1).paddingOuter(0).align(.5),o.Rm.trace("BandAxis axis final categories, range: ",this.categories,this.getRange())}getTickValues(){return this.categories}getScaleValue(t){return this.scale(t)??this.getRange()[0]}},y=class extends p{static{(0,o.K2)(this,"LinearAxis")}constructor(t,i,e,s,a){super(t,s,a,i),this.domain=e,this.scale=(0,r.m4Y)().domain(this.domain).range(this.getRange())}getTickValues(){return this.scale.ticks()}recalculateScale(){const t=[...this.domain];"left"===this.axisPosition&&t.reverse(),this.scale=(0,r.m4Y)().domain(t).range(this.getRange())}getScaleValue(t){return this.scale(t)}};function m(t,i,e,s){const a=new d(s);return u(t)?new f(i,e,t.categories,t.title,a):new y(i,e,[t.min,t.max],t.title,a)}(0,o.K2)(m,"getAxis");var b=class{constructor(t,i,e,s){this.textDimensionCalculator=t,this.chartConfig=i,this.chartData=e,this.chartThemeConfig=s,this.boundingRect={x:0,y:0,width:0,height:0},this.showChartTitle=!1}static{(0,o.K2)(this,"ChartTitle")}setBoundingBoxXY(t){this.boundingRect.x=t.x,this.boundingRect.y=t.y}calculateSpace(t){const i=this.textDimensionCalculator.getMaxDimension([this.chartData.title],this.chartConfig.titleFontSize),e=Math.max(i.width,t.width),s=i.height+2*this.chartConfig.titlePadding;return i.width<=e&&i.height<=s&&this.chartConfig.showTitle&&this.chartData.title&&(this.boundingRect.width=e,this.boundingRect.height=s,this.showChartTitle=!0),{width:this.boundingRect.width,height:this.boundingRect.height}}getDrawableElements(){const t=[];return this.showChartTitle&&t.push({groupTexts:["chart-title"],type:"text",data:[{fontSize:this.chartConfig.titleFontSize,text:this.chartData.title,verticalPos:"middle",horizontalPos:"center",x:this.boundingRect.x+this.boundingRect.width/2,y:this.boundingRect.y+this.boundingRect.height/2,fill:this.chartThemeConfig.titleColor,rotation:0}]}),t}};function A(t,i,e,s){const a=new d(s);return new b(a,t,i,e)}(0,o.K2)(A,"getChartTitleComponent");var w=class{constructor(t,i,e,s,a){this.plotData=t,this.xAxis=i,this.yAxis=e,this.orientation=s,this.plotIndex=a}static{(0,o.K2)(this,"LinePlot")}getDrawableElement(){const t=this.plotData.data.map((t=>[this.xAxis.getScaleValue(t[0]),this.yAxis.getScaleValue(t[1])]));let i;return i="horizontal"===this.orientation?(0,r.n8j)().y((t=>t[0])).x((t=>t[1]))(t):(0,r.n8j)().x((t=>t[0])).y((t=>t[1]))(t),i?[{groupTexts:["plot",`line-plot-${this.plotIndex}`],type:"path",data:[{path:i,strokeFill:this.plotData.strokeFill,strokeWidth:this.plotData.strokeWidth}]}]:[]}},S=class{constructor(t,i,e,s,a,n){this.barData=t,this.boundingRect=i,this.xAxis=e,this.yAxis=s,this.orientation=a,this.plotIndex=n}static{(0,o.K2)(this,"BarPlot")}getDrawableElement(){const t=this.barData.data.map((t=>[this.xAxis.getScaleValue(t[0]),this.yAxis.getScaleValue(t[1])])),i=.95*Math.min(2*this.xAxis.getAxisOuterPadding(),this.xAxis.getTickDistance()),e=i/2;return"horizontal"===this.orientation?[{groupTexts:["plot",`bar-plot-${this.plotIndex}`],type:"rect",data:t.map((t=>({x:this.boundingRect.x,y:t[0]-e,height:i,width:t[1]-this.boundingRect.x,fill:this.barData.fill,strokeWidth:0,strokeFill:this.barData.fill})))}]:[{groupTexts:["plot",`bar-plot-${this.plotIndex}`],type:"rect",data:t.map((t=>({x:t[0]-e,y:t[1],width:i,height:this.boundingRect.y+this.boundingRect.height-t[1],fill:this.barData.fill,strokeWidth:0,strokeFill:this.barData.fill})))}]}},C=class{constructor(t,i,e){this.chartConfig=t,this.chartData=i,this.chartThemeConfig=e,this.boundingRect={x:0,y:0,width:0,height:0}}static{(0,o.K2)(this,"BasePlot")}setAxes(t,i){this.xAxis=t,this.yAxis=i}setBoundingBoxXY(t){this.boundingRect.x=t.x,this.boundingRect.y=t.y}calculateSpace(t){return this.boundingRect.width=t.width,this.boundingRect.height=t.height,{width:this.boundingRect.width,height:this.boundingRect.height}}getDrawableElements(){if(!this.xAxis||!this.yAxis)throw Error("Axes must be passed to render Plots");const t=[];for(const[i,e]of this.chartData.plots.entries())switch(e.type){case"line":{const s=new w(e,this.xAxis,this.yAxis,this.chartConfig.chartOrientation,i);t.push(...s.getDrawableElement())}break;case"bar":{const s=new S(e,this.boundingRect,this.xAxis,this.yAxis,this.chartConfig.chartOrientation,i);t.push(...s.getDrawableElement())}}return t}};function k(t,i,e){return new C(t,i,e)}(0,o.K2)(k,"getPlotComponent");var _,T=class{constructor(t,i,e,s){this.chartConfig=t,this.chartData=i,this.componentStore={title:A(t,i,e,s),plot:k(t,i,e),xAxis:m(i.xAxis,t.xAxis,{titleColor:e.xAxisTitleColor,labelColor:e.xAxisLabelColor,tickColor:e.xAxisTickColor,axisLineColor:e.xAxisLineColor},s),yAxis:m(i.yAxis,t.yAxis,{titleColor:e.yAxisTitleColor,labelColor:e.yAxisLabelColor,tickColor:e.yAxisTickColor,axisLineColor:e.yAxisLineColor},s)}}static{(0,o.K2)(this,"Orchestrator")}calculateVerticalSpace(){let t=this.chartConfig.width,i=this.chartConfig.height,e=0,s=0,a=Math.floor(t*this.chartConfig.plotReservedSpacePercent/100),n=Math.floor(i*this.chartConfig.plotReservedSpacePercent/100),h=this.componentStore.plot.calculateSpace({width:a,height:n});t-=h.width,i-=h.height,h=this.componentStore.title.calculateSpace({width:this.chartConfig.width,height:i}),s=h.height,i-=h.height,this.componentStore.xAxis.setAxisPosition("bottom"),h=this.componentStore.xAxis.calculateSpace({width:t,height:i}),i-=h.height,this.componentStore.yAxis.setAxisPosition("left"),h=this.componentStore.yAxis.calculateSpace({width:t,height:i}),e=h.width,t-=h.width,t>0&&(a+=t,t=0),i>0&&(n+=i,i=0),this.componentStore.plot.calculateSpace({width:a,height:n}),this.componentStore.plot.setBoundingBoxXY({x:e,y:s}),this.componentStore.xAxis.setRange([e,e+a]),this.componentStore.xAxis.setBoundingBoxXY({x:e,y:s+n}),this.componentStore.yAxis.setRange([s,s+n]),this.componentStore.yAxis.setBoundingBoxXY({x:0,y:s}),this.chartData.plots.some((t=>g(t)))&&this.componentStore.xAxis.recalculateOuterPaddingToDrawBar()}calculateHorizontalSpace(){let t=this.chartConfig.width,i=this.chartConfig.height,e=0,s=0,a=0,n=Math.floor(t*this.chartConfig.plotReservedSpacePercent/100),h=Math.floor(i*this.chartConfig.plotReservedSpacePercent/100),o=this.componentStore.plot.calculateSpace({width:n,height:h});t-=o.width,i-=o.height,o=this.componentStore.title.calculateSpace({width:this.chartConfig.width,height:i}),e=o.height,i-=o.height,this.componentStore.xAxis.setAxisPosition("left"),o=this.componentStore.xAxis.calculateSpace({width:t,height:i}),t-=o.width,s=o.width,this.componentStore.yAxis.setAxisPosition("top"),o=this.componentStore.yAxis.calculateSpace({width:t,height:i}),i-=o.height,a=e+o.height,t>0&&(n+=t,t=0),i>0&&(h+=i,i=0),this.componentStore.plot.calculateSpace({width:n,height:h}),this.componentStore.plot.setBoundingBoxXY({x:s,y:a}),this.componentStore.yAxis.setRange([s,s+n]),this.componentStore.yAxis.setBoundingBoxXY({x:s,y:e}),this.componentStore.xAxis.setRange([a,a+h]),this.componentStore.xAxis.setBoundingBoxXY({x:0,y:a}),this.chartData.plots.some((t=>g(t)))&&this.componentStore.xAxis.recalculateOuterPaddingToDrawBar()}calculateSpace(){"horizontal"===this.chartConfig.chartOrientation?this.calculateHorizontalSpace():this.calculateVerticalSpace()}getDrawableElement(){this.calculateSpace();const t=[];this.componentStore.plot.setAxes(this.componentStore.xAxis,this.componentStore.yAxis);for(const i of Object.values(this.componentStore))t.push(...i.getDrawableElements());return t}},R=class{static{(0,o.K2)(this,"XYChartBuilder")}static build(t,i,e,s){return new T(t,i,e,s).getDrawableElement()}},D=0,L=M(),P=$(),E=z(),v=P.plotColorPalette.split(",").map((t=>t.trim())),K=!1,I=!1;function $(){const t=(0,h.P$)(),i=(0,h.zj)();return(0,n.$t)(t.xyChart,i.themeVariables.xyChart)}function M(){const t=(0,h.zj)();return(0,n.$t)(h.UI.xyChart,t.xyChart)}function z(){return{yAxis:{type:"linear",title:"",min:1/0,max:-1/0},xAxis:{type:"band",title:"",categories:[]},title:"",plots:[]}}function B(t){const i=(0,h.zj)();return(0,h.jZ)(t.trim(),i)}function W(t){_=t}function O(t){L.chartOrientation="horizontal"===t?"horizontal":"vertical"}function F(t){E.xAxis.title=B(t.text)}function N(t,i){E.xAxis={type:"linear",title:E.xAxis.title,min:t,max:i},K=!0}function X(t){E.xAxis={type:"band",title:E.xAxis.title,categories:t.map((t=>B(t.text)))},K=!0}function V(t){E.yAxis.title=B(t.text)}function Y(t,i){E.yAxis={type:"linear",title:E.yAxis.title,min:t,max:i},I=!0}function H(t){const i=Math.min(...t),e=Math.max(...t),s=x(E.yAxis)?E.yAxis.min:1/0,a=x(E.yAxis)?E.yAxis.max:-1/0;E.yAxis={type:"linear",title:E.yAxis.title,min:Math.min(s,i),max:Math.max(a,e)}}function U(t){let i=[];if(0===t.length)return i;if(!K){const i=x(E.xAxis)?E.xAxis.min:1/0,e=x(E.xAxis)?E.xAxis.max:-1/0;N(Math.min(i,1),Math.max(e,t.length))}if(I||H(t),u(E.xAxis)&&(i=E.xAxis.categories.map(((i,e)=>[i,t[e]]))),x(E.xAxis)){const e=E.xAxis.min,s=E.xAxis.max,a=(s-e)/(t.length-1),n=[];for(let t=e;t<=s;t+=a)n.push(`${t}`);i=n.map(((i,e)=>[i,t[e]]))}return i}function j(t){return v[0===t?0:t%v.length]}function G(t,i){const e=U(i);E.plots.push({type:"line",strokeFill:j(D),strokeWidth:2,data:e}),D++}function Q(t,i){const e=U(i);E.plots.push({type:"bar",fill:j(D),data:e}),D++}function Z(){if(0===E.plots.length)throw Error("No Plot to render, please provide a plot with some data");return E.title=(0,h.ab)(),R.build(L,E,P,_)}function q(){return P}function J(){return L}function tt(){return E}(0,o.K2)($,"getChartDefaultThemeConfig"),(0,o.K2)(M,"getChartDefaultConfig"),(0,o.K2)(z,"getChartDefaultData"),(0,o.K2)(B,"textSanitizer"),(0,o.K2)(W,"setTmpSVGG"),(0,o.K2)(O,"setOrientation"),(0,o.K2)(F,"setXAxisTitle"),(0,o.K2)(N,"setXAxisRangeData"),(0,o.K2)(X,"setXAxisBand"),(0,o.K2)(V,"setYAxisTitle"),(0,o.K2)(Y,"setYAxisRangeData"),(0,o.K2)(H,"setYAxisRangeFromPlotData"),(0,o.K2)(U,"transformDataWithoutCategory"),(0,o.K2)(j,"getPlotColorFromPalette"),(0,o.K2)(G,"setLineData"),(0,o.K2)(Q,"setBarData"),(0,o.K2)(Z,"getDrawableElem"),(0,o.K2)(q,"getChartThemeConfig"),(0,o.K2)(J,"getChartConfig"),(0,o.K2)(tt,"getXYChartData");var it={parser:c,db:{getDrawableElem:Z,clear:(0,o.K2)((function(){(0,h.IU)(),D=0,L=M(),E={yAxis:{type:"linear",title:"",min:1/0,max:-1/0},xAxis:{type:"band",title:"",categories:[]},title:"",plots:[]},P=$(),v=P.plotColorPalette.split(",").map((t=>t.trim())),K=!1,I=!1}),"clear"),setAccTitle:h.SV,getAccTitle:h.iN,setDiagramTitle:h.ke,getDiagramTitle:h.ab,getAccDescription:h.m7,setAccDescription:h.EI,setOrientation:O,setXAxisTitle:F,setXAxisRangeData:N,setXAxisBand:X,setYAxisTitle:V,setYAxisRangeData:Y,setLineData:G,setBarData:Q,setTmpSVGG:W,getChartThemeConfig:q,getChartConfig:J,getXYChartData:tt},renderer:{draw:(0,o.K2)(((t,i,e,a)=>{const n=a.db,r=n.getChartThemeConfig(),l=n.getChartConfig(),c=n.getXYChartData().plots[0].data.map((t=>t[1]));function g(t){return"top"===t?"text-before-edge":"middle"}function u(t){return"left"===t?"start":"right"===t?"end":"middle"}function x(t){return`translate(${t.x}, ${t.y}) rotate(${t.rotation||0})`}(0,o.K2)(g,"getDominantBaseLine"),(0,o.K2)(u,"getTextAnchor"),(0,o.K2)(x,"getTextTransformation"),o.Rm.debug("Rendering xychart chart\n"+t);const d=(0,s.D)(i),p=d.append("g").attr("class","main"),f=p.append("rect").attr("width",l.width).attr("height",l.height).attr("class","background");(0,h.a$)(d,l.height,l.width,!0),d.attr("viewBox",`0 0 ${l.width} ${l.height}`),f.attr("fill",r.backgroundColor),n.setTmpSVGG(d.append("g").attr("class","mermaid-tmp-group"));const y=n.getDrawableElem(),m={};function b(t){let i=p,e="";for(const[s]of t.entries()){let a=p;s>0&&m[e]&&(a=m[e]),e+=t[s],i=m[e],i||(i=m[e]=a.append("g").attr("class",t[s]))}return i}(0,o.K2)(b,"getGroup");for(const s of y){if(0===s.data.length)continue;const t=b(s.groupTexts);switch(s.type){case"rect":if(t.selectAll("rect").data(s.data).enter().append("rect").attr("x",(t=>t.x)).attr("y",(t=>t.y)).attr("width",(t=>t.width)).attr("height",(t=>t.height)).attr("fill",(t=>t.fill)).attr("stroke",(t=>t.strokeFill)).attr("stroke-width",(t=>t.strokeWidth)),l.showDataLabel)if("horizontal"===l.chartOrientation){let i=function(t,i){const{data:s,label:a}=t;return i*a.length*e<=s.width-10};(0,o.K2)(i,"fitsHorizontally");const e=.7,a=s.data.map(((t,i)=>({data:t,label:c[i].toString()}))).filter((t=>t.data.width>0&&t.data.height>0)),n=a.map((t=>{const{data:e}=t;let s=.7*e.height;for(;!i(t,s)&&s>0;)s-=1;return s})),h=Math.floor(Math.min(...n));t.selectAll("text").data(a).enter().append("text").attr("x",(t=>t.data.x+t.data.width-10)).attr("y",(t=>t.data.y+t.data.height/2)).attr("text-anchor","end").attr("dominant-baseline","middle").attr("fill","black").attr("font-size",`${h}px`).text((t=>t.label))}else{let i=function(t,i,e){const{data:s,label:a}=t,n=i*a.length*.7,h=s.x+s.width/2,o=h+n/2,r=h-n/2>=s.x&&o<=s.x+s.width,l=s.y+e+i<=s.y+s.height;return r&&l};(0,o.K2)(i,"fitsInBar");const e=10,a=s.data.map(((t,i)=>({data:t,label:c[i].toString()}))).filter((t=>t.data.width>0&&t.data.height>0)),n=a.map((t=>{const{data:s,label:a}=t;let n=s.width/(.7*a.length);for(;!i(t,n,e)&&n>0;)n-=1;return n})),h=Math.floor(Math.min(...n));t.selectAll("text").data(a).enter().append("text").attr("x",(t=>t.data.x+t.data.width/2)).attr("y",(t=>t.data.y+e)).attr("text-anchor","middle").attr("dominant-baseline","hanging").attr("fill","black").attr("font-size",`${h}px`).text((t=>t.label))}break;case"text":t.selectAll("text").data(s.data).enter().append("text").attr("x",0).attr("y",0).attr("fill",(t=>t.fill)).attr("font-size",(t=>t.fontSize)).attr("dominant-baseline",(t=>g(t.verticalPos))).attr("text-anchor",(t=>u(t.horizontalPos))).attr("transform",(t=>x(t))).text((t=>t.text));break;case"path":t.selectAll("path").data(s.data).enter().append("path").attr("d",(t=>t.path)).attr("fill",(t=>t.fill?t.fill:"none")).attr("stroke",(t=>t.strokeFill)).attr("stroke-width",(t=>t.strokeWidth))}}}),"draw")}}}}]); \ No newline at end of file diff --git a/assets/js/5996.084213a6.js b/assets/js/5996.084213a6.js new file mode 100644 index 00000000..1627c258 --- /dev/null +++ b/assets/js/5996.084213a6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5996],{37981:(t,e,r)=>{r.d(e,{T:()=>w});var a=r(39142),s=r(89610),i=r(27422),n=r(94092),o=r(66401),l=r(8058),c=r(69592),d=r(13588),h=r(24326),g=r(99902),u=r(53533);const p=(0,h.A)((function(t){return(0,g.A)((0,d.A)(t,1,u.A,!0))}));var y=r(38207),b=r(89463),x="\0",f="\0",m="\x01";class w{constructor(t={}){this._isDirected=!Object.prototype.hasOwnProperty.call(t,"directed")||t.directed,this._isMultigraph=!!Object.prototype.hasOwnProperty.call(t,"multigraph")&&t.multigraph,this._isCompound=!!Object.prototype.hasOwnProperty.call(t,"compound")&&t.compound,this._label=void 0,this._defaultNodeLabelFn=a.A(void 0),this._defaultEdgeLabelFn=a.A(void 0),this._nodes={},this._isCompound&&(this._parent={},this._children={},this._children[f]={}),this._in={},this._preds={},this._out={},this._sucs={},this._edgeObjs={},this._edgeLabels={}}isDirected(){return this._isDirected}isMultigraph(){return this._isMultigraph}isCompound(){return this._isCompound}setGraph(t){return this._label=t,this}graph(){return this._label}setDefaultNodeLabel(t){return s.A(t)||(t=a.A(t)),this._defaultNodeLabelFn=t,this}nodeCount(){return this._nodeCount}nodes(){return i.A(this._nodes)}sources(){var t=this;return n.A(this.nodes(),(function(e){return o.A(t._in[e])}))}sinks(){var t=this;return n.A(this.nodes(),(function(e){return o.A(t._out[e])}))}setNodes(t,e){var r=arguments,a=this;return l.A(t,(function(t){r.length>1?a.setNode(t,e):a.setNode(t)})),this}setNode(t,e){return Object.prototype.hasOwnProperty.call(this._nodes,t)?(arguments.length>1&&(this._nodes[t]=e),this):(this._nodes[t]=arguments.length>1?e:this._defaultNodeLabelFn(t),this._isCompound&&(this._parent[t]=f,this._children[t]={},this._children[f][t]=!0),this._in[t]={},this._preds[t]={},this._out[t]={},this._sucs[t]={},++this._nodeCount,this)}node(t){return this._nodes[t]}hasNode(t){return Object.prototype.hasOwnProperty.call(this._nodes,t)}removeNode(t){if(Object.prototype.hasOwnProperty.call(this._nodes,t)){var e=t=>this.removeEdge(this._edgeObjs[t]);delete this._nodes[t],this._isCompound&&(this._removeFromParentsChildList(t),delete this._parent[t],l.A(this.children(t),(t=>{this.setParent(t)})),delete this._children[t]),l.A(i.A(this._in[t]),e),delete this._in[t],delete this._preds[t],l.A(i.A(this._out[t]),e),delete this._out[t],delete this._sucs[t],--this._nodeCount}return this}setParent(t,e){if(!this._isCompound)throw new Error("Cannot set parent in a non-compound graph");if(c.A(e))e=f;else{for(var r=e+="";!c.A(r);r=this.parent(r))if(r===t)throw new Error("Setting "+e+" as parent of "+t+" would create a cycle");this.setNode(e)}return this.setNode(t),this._removeFromParentsChildList(t),this._parent[t]=e,this._children[e][t]=!0,this}_removeFromParentsChildList(t){delete this._children[this._parent[t]][t]}parent(t){if(this._isCompound){var e=this._parent[t];if(e!==f)return e}}children(t){if(c.A(t)&&(t=f),this._isCompound){var e=this._children[t];if(e)return i.A(e)}else{if(t===f)return this.nodes();if(this.hasNode(t))return[]}}predecessors(t){var e=this._preds[t];if(e)return i.A(e)}successors(t){var e=this._sucs[t];if(e)return i.A(e)}neighbors(t){var e=this.predecessors(t);if(e)return p(e,this.successors(t))}isLeaf(t){return 0===(this.isDirected()?this.successors(t):this.neighbors(t)).length}filterNodes(t){var e=new this.constructor({directed:this._isDirected,multigraph:this._isMultigraph,compound:this._isCompound});e.setGraph(this.graph());var r=this;l.A(this._nodes,(function(r,a){t(a)&&e.setNode(a,r)})),l.A(this._edgeObjs,(function(t){e.hasNode(t.v)&&e.hasNode(t.w)&&e.setEdge(t,r.edge(t))}));var a={};function s(t){var i=r.parent(t);return void 0===i||e.hasNode(i)?(a[t]=i,i):i in a?a[i]:s(i)}return this._isCompound&&l.A(e.nodes(),(function(t){e.setParent(t,s(t))})),e}setDefaultEdgeLabel(t){return s.A(t)||(t=a.A(t)),this._defaultEdgeLabelFn=t,this}edgeCount(){return this._edgeCount}edges(){return y.A(this._edgeObjs)}setPath(t,e){var r=this,a=arguments;return b.A(t,(function(t,s){return a.length>1?r.setEdge(t,s,e):r.setEdge(t,s),s})),this}setEdge(){var t,e,r,a,s=!1,i=arguments[0];"object"==typeof i&&null!==i&&"v"in i?(t=i.v,e=i.w,r=i.name,2===arguments.length&&(a=arguments[1],s=!0)):(t=i,e=arguments[1],r=arguments[3],arguments.length>2&&(a=arguments[2],s=!0)),t=""+t,e=""+e,c.A(r)||(r=""+r);var n=k(this._isDirected,t,e,r);if(Object.prototype.hasOwnProperty.call(this._edgeLabels,n))return s&&(this._edgeLabels[n]=a),this;if(!c.A(r)&&!this._isMultigraph)throw new Error("Cannot set a named edge when isMultigraph = false");this.setNode(t),this.setNode(e),this._edgeLabels[n]=s?a:this._defaultEdgeLabelFn(t,e,r);var o=function(t,e,r,a){var s=""+e,i=""+r;if(!t&&s>i){var n=s;s=i,i=n}var o={v:s,w:i};a&&(o.name=a);return o}(this._isDirected,t,e,r);return t=o.v,e=o.w,Object.freeze(o),this._edgeObjs[n]=o,_(this._preds[e],t),_(this._sucs[t],e),this._in[e][n]=o,this._out[t][n]=o,this._edgeCount++,this}edge(t,e,r){var a=1===arguments.length?S(this._isDirected,arguments[0]):k(this._isDirected,t,e,r);return this._edgeLabels[a]}hasEdge(t,e,r){var a=1===arguments.length?S(this._isDirected,arguments[0]):k(this._isDirected,t,e,r);return Object.prototype.hasOwnProperty.call(this._edgeLabels,a)}removeEdge(t,e,r){var a=1===arguments.length?S(this._isDirected,arguments[0]):k(this._isDirected,t,e,r),s=this._edgeObjs[a];return s&&(t=s.v,e=s.w,delete this._edgeLabels[a],delete this._edgeObjs[a],L(this._preds[e],t),L(this._sucs[t],e),delete this._in[e][a],delete this._out[t][a],this._edgeCount--),this}inEdges(t,e){var r=this._in[t];if(r){var a=y.A(r);return e?n.A(a,(function(t){return t.v===e})):a}}outEdges(t,e){var r=this._out[t];if(r){var a=y.A(r);return e?n.A(a,(function(t){return t.w===e})):a}}nodeEdges(t,e){var r=this.inEdges(t,e);if(r)return r.concat(this.outEdges(t,e))}}function _(t,e){t[e]?t[e]++:t[e]=1}function L(t,e){--t[e]||delete t[e]}function k(t,e,r,a){var s=""+e,i=""+r;if(!t&&s>i){var n=s;s=i,i=n}return s+m+i+m+(c.A(a)?x:a)}function S(t,e){return k(t,e.v,e.w,e.name)}w.prototype._nodeCount=0,w.prototype._edgeCount=0},697:(t,e,r)=>{r.d(e,{T:()=>a.T});var a=r(37981)},75937:(t,e,r)=>{r.d(e,{A:()=>i});var a=r(72453),s=r(74886);const i=(t,e)=>a.A.lang.round(s.A.parse(t)[e])},50053:(t,e,r)=>{r.d(e,{A:()=>s});var a=r(68675);const s=function(t){return(0,a.A)(t,4)}},65996:(t,e,r)=>{r.d(e,{diagram:()=>we});var a=r(52501),s=r(28698),i=r(63245),n=r(30092),o=r(13226),l=r(67633),c=r(40797),d=r(50053),h=r(75937),g=r(25582),u=r(70451),p=r(697),y=function(){var t=(0,c.K2)((function(t,e,r,a){for(r=r||{},a=t.length;a--;r[t[a]]=e);return r}),"o"),e=[1,15],r=[1,7],a=[1,13],s=[1,14],i=[1,19],n=[1,16],o=[1,17],l=[1,18],d=[8,30],h=[8,10,21,28,29,30,31,39,43,46],g=[1,23],u=[1,24],p=[8,10,15,16,21,28,29,30,31,39,43,46],y=[8,10,15,16,21,27,28,29,30,31,39,43,46],b=[1,49],x={trace:(0,c.K2)((function(){}),"trace"),yy:{},symbols_:{error:2,spaceLines:3,SPACELINE:4,NL:5,separator:6,SPACE:7,EOF:8,start:9,BLOCK_DIAGRAM_KEY:10,document:11,stop:12,statement:13,link:14,LINK:15,START_LINK:16,LINK_LABEL:17,STR:18,nodeStatement:19,columnsStatement:20,SPACE_BLOCK:21,blockStatement:22,classDefStatement:23,cssClassStatement:24,styleStatement:25,node:26,SIZE:27,COLUMNS:28,"id-block":29,end:30,NODE_ID:31,nodeShapeNLabel:32,dirList:33,DIR:34,NODE_DSTART:35,NODE_DEND:36,BLOCK_ARROW_START:37,BLOCK_ARROW_END:38,classDef:39,CLASSDEF_ID:40,CLASSDEF_STYLEOPTS:41,DEFAULT:42,class:43,CLASSENTITY_IDS:44,STYLECLASS:45,style:46,STYLE_ENTITY_IDS:47,STYLE_DEFINITION_DATA:48,$accept:0,$end:1},terminals_:{2:"error",4:"SPACELINE",5:"NL",7:"SPACE",8:"EOF",10:"BLOCK_DIAGRAM_KEY",15:"LINK",16:"START_LINK",17:"LINK_LABEL",18:"STR",21:"SPACE_BLOCK",27:"SIZE",28:"COLUMNS",29:"id-block",30:"end",31:"NODE_ID",34:"DIR",35:"NODE_DSTART",36:"NODE_DEND",37:"BLOCK_ARROW_START",38:"BLOCK_ARROW_END",39:"classDef",40:"CLASSDEF_ID",41:"CLASSDEF_STYLEOPTS",42:"DEFAULT",43:"class",44:"CLASSENTITY_IDS",45:"STYLECLASS",46:"style",47:"STYLE_ENTITY_IDS",48:"STYLE_DEFINITION_DATA"},productions_:[0,[3,1],[3,2],[3,2],[6,1],[6,1],[6,1],[9,3],[12,1],[12,1],[12,2],[12,2],[11,1],[11,2],[14,1],[14,4],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[19,3],[19,2],[19,1],[20,1],[22,4],[22,3],[26,1],[26,2],[33,1],[33,2],[32,3],[32,4],[23,3],[23,3],[24,3],[25,3]],performAction:(0,c.K2)((function(t,e,r,a,s,i,n){var o=i.length-1;switch(s){case 4:a.getLogger().debug("Rule: separator (NL) ");break;case 5:a.getLogger().debug("Rule: separator (Space) ");break;case 6:a.getLogger().debug("Rule: separator (EOF) ");break;case 7:a.getLogger().debug("Rule: hierarchy: ",i[o-1]),a.setHierarchy(i[o-1]);break;case 8:a.getLogger().debug("Stop NL ");break;case 9:a.getLogger().debug("Stop EOF ");break;case 10:a.getLogger().debug("Stop NL2 ");break;case 11:a.getLogger().debug("Stop EOF2 ");break;case 12:a.getLogger().debug("Rule: statement: ",i[o]),"number"==typeof i[o].length?this.$=i[o]:this.$=[i[o]];break;case 13:a.getLogger().debug("Rule: statement #2: ",i[o-1]),this.$=[i[o-1]].concat(i[o]);break;case 14:a.getLogger().debug("Rule: link: ",i[o],t),this.$={edgeTypeStr:i[o],label:""};break;case 15:a.getLogger().debug("Rule: LABEL link: ",i[o-3],i[o-1],i[o]),this.$={edgeTypeStr:i[o],label:i[o-1]};break;case 18:const e=parseInt(i[o]),r=a.generateId();this.$={id:r,type:"space",label:"",width:e,children:[]};break;case 23:a.getLogger().debug("Rule: (nodeStatement link node) ",i[o-2],i[o-1],i[o]," typestr: ",i[o-1].edgeTypeStr);const s=a.edgeStrToEdgeData(i[o-1].edgeTypeStr);this.$=[{id:i[o-2].id,label:i[o-2].label,type:i[o-2].type,directions:i[o-2].directions},{id:i[o-2].id+"-"+i[o].id,start:i[o-2].id,end:i[o].id,label:i[o-1].label,type:"edge",directions:i[o].directions,arrowTypeEnd:s,arrowTypeStart:"arrow_open"},{id:i[o].id,label:i[o].label,type:a.typeStr2Type(i[o].typeStr),directions:i[o].directions}];break;case 24:a.getLogger().debug("Rule: nodeStatement (abc88 node size) ",i[o-1],i[o]),this.$={id:i[o-1].id,label:i[o-1].label,type:a.typeStr2Type(i[o-1].typeStr),directions:i[o-1].directions,widthInColumns:parseInt(i[o],10)};break;case 25:a.getLogger().debug("Rule: nodeStatement (node) ",i[o]),this.$={id:i[o].id,label:i[o].label,type:a.typeStr2Type(i[o].typeStr),directions:i[o].directions,widthInColumns:1};break;case 26:a.getLogger().debug("APA123",this?this:"na"),a.getLogger().debug("COLUMNS: ",i[o]),this.$={type:"column-setting",columns:"auto"===i[o]?-1:parseInt(i[o])};break;case 27:a.getLogger().debug("Rule: id-block statement : ",i[o-2],i[o-1]);a.generateId();this.$={...i[o-2],type:"composite",children:i[o-1]};break;case 28:a.getLogger().debug("Rule: blockStatement : ",i[o-2],i[o-1],i[o]);const n=a.generateId();this.$={id:n,type:"composite",label:"",children:i[o-1]};break;case 29:a.getLogger().debug("Rule: node (NODE_ID separator): ",i[o]),this.$={id:i[o]};break;case 30:a.getLogger().debug("Rule: node (NODE_ID nodeShapeNLabel separator): ",i[o-1],i[o]),this.$={id:i[o-1],label:i[o].label,typeStr:i[o].typeStr,directions:i[o].directions};break;case 31:a.getLogger().debug("Rule: dirList: ",i[o]),this.$=[i[o]];break;case 32:a.getLogger().debug("Rule: dirList: ",i[o-1],i[o]),this.$=[i[o-1]].concat(i[o]);break;case 33:a.getLogger().debug("Rule: nodeShapeNLabel: ",i[o-2],i[o-1],i[o]),this.$={typeStr:i[o-2]+i[o],label:i[o-1]};break;case 34:a.getLogger().debug("Rule: BLOCK_ARROW nodeShapeNLabel: ",i[o-3],i[o-2]," #3:",i[o-1],i[o]),this.$={typeStr:i[o-3]+i[o],label:i[o-2],directions:i[o-1]};break;case 35:case 36:this.$={type:"classDef",id:i[o-1].trim(),css:i[o].trim()};break;case 37:this.$={type:"applyClass",id:i[o-1].trim(),styleClass:i[o].trim()};break;case 38:this.$={type:"applyStyles",id:i[o-1].trim(),stylesStr:i[o].trim()}}}),"anonymous"),table:[{9:1,10:[1,2]},{1:[3]},{10:e,11:3,13:4,19:5,20:6,21:r,22:8,23:9,24:10,25:11,26:12,28:a,29:s,31:i,39:n,43:o,46:l},{8:[1,20]},t(d,[2,12],{13:4,19:5,20:6,22:8,23:9,24:10,25:11,26:12,11:21,10:e,21:r,28:a,29:s,31:i,39:n,43:o,46:l}),t(h,[2,16],{14:22,15:g,16:u}),t(h,[2,17]),t(h,[2,18]),t(h,[2,19]),t(h,[2,20]),t(h,[2,21]),t(h,[2,22]),t(p,[2,25],{27:[1,25]}),t(h,[2,26]),{19:26,26:12,31:i},{10:e,11:27,13:4,19:5,20:6,21:r,22:8,23:9,24:10,25:11,26:12,28:a,29:s,31:i,39:n,43:o,46:l},{40:[1,28],42:[1,29]},{44:[1,30]},{47:[1,31]},t(y,[2,29],{32:32,35:[1,33],37:[1,34]}),{1:[2,7]},t(d,[2,13]),{26:35,31:i},{31:[2,14]},{17:[1,36]},t(p,[2,24]),{10:e,11:37,13:4,14:22,15:g,16:u,19:5,20:6,21:r,22:8,23:9,24:10,25:11,26:12,28:a,29:s,31:i,39:n,43:o,46:l},{30:[1,38]},{41:[1,39]},{41:[1,40]},{45:[1,41]},{48:[1,42]},t(y,[2,30]),{18:[1,43]},{18:[1,44]},t(p,[2,23]),{18:[1,45]},{30:[1,46]},t(h,[2,28]),t(h,[2,35]),t(h,[2,36]),t(h,[2,37]),t(h,[2,38]),{36:[1,47]},{33:48,34:b},{15:[1,50]},t(h,[2,27]),t(y,[2,33]),{38:[1,51]},{33:52,34:b,38:[2,31]},{31:[2,15]},t(y,[2,34]),{38:[2,32]}],defaultActions:{20:[2,7],23:[2,14],50:[2,15],52:[2,32]},parseError:(0,c.K2)((function(t,e){if(!e.recoverable){var r=new Error(t);throw r.hash=e,r}this.trace(t)}),"parseError"),parse:(0,c.K2)((function(t){var e=this,r=[0],a=[],s=[null],i=[],n=this.table,o="",l=0,d=0,h=0,g=i.slice.call(arguments,1),u=Object.create(this.lexer),p={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(p.yy[y]=this.yy[y]);u.setInput(t,p.yy),p.yy.lexer=u,p.yy.parser=this,void 0===u.yylloc&&(u.yylloc={});var b=u.yylloc;i.push(b);var x=u.options&&u.options.ranges;function f(){var t;return"number"!=typeof(t=a.pop()||u.lex()||1)&&(t instanceof Array&&(t=(a=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,c.K2)((function(t){r.length=r.length-2*t,s.length=s.length-t,i.length=i.length-t}),"popStack"),(0,c.K2)(f,"lex");for(var m,w,_,L,k,S,v,E,D,C={};;){if(_=r[r.length-1],this.defaultActions[_]?L=this.defaultActions[_]:(null==m&&(m=f()),L=n[_]&&n[_][m]),void 0===L||!L.length||!L[0]){var R="";for(S in D=[],n[_])this.terminals_[S]&&S>2&&D.push("'"+this.terminals_[S]+"'");R=u.showPosition?"Parse error on line "+(l+1)+":\n"+u.showPosition()+"\nExpecting "+D.join(", ")+", got '"+(this.terminals_[m]||m)+"'":"Parse error on line "+(l+1)+": Unexpected "+(1==m?"end of input":"'"+(this.terminals_[m]||m)+"'"),this.parseError(R,{text:u.match,token:this.terminals_[m]||m,line:u.yylineno,loc:b,expected:D})}if(L[0]instanceof Array&&L.length>1)throw new Error("Parse Error: multiple actions possible at state: "+_+", token: "+m);switch(L[0]){case 1:r.push(m),s.push(u.yytext),i.push(u.yylloc),r.push(L[1]),m=null,w?(m=w,w=null):(d=u.yyleng,o=u.yytext,l=u.yylineno,b=u.yylloc,h>0&&h--);break;case 2:if(v=this.productions_[L[1]][1],C.$=s[s.length-v],C._$={first_line:i[i.length-(v||1)].first_line,last_line:i[i.length-1].last_line,first_column:i[i.length-(v||1)].first_column,last_column:i[i.length-1].last_column},x&&(C._$.range=[i[i.length-(v||1)].range[0],i[i.length-1].range[1]]),void 0!==(k=this.performAction.apply(C,[o,d,l,p.yy,L[1],s,i].concat(g))))return k;v&&(r=r.slice(0,-1*v*2),s=s.slice(0,-1*v),i=i.slice(0,-1*v)),r.push(this.productions_[L[1]][0]),s.push(C.$),i.push(C._$),E=n[r[r.length-2]][r[r.length-1]],r.push(E);break;case 3:return!0}}return!0}),"parse")},f=function(){return{EOF:1,parseError:(0,c.K2)((function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)}),"parseError"),setInput:(0,c.K2)((function(t,e){return this.yy=e||this.yy||{},this._input=t,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:(0,c.K2)((function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t}),"input"),unput:(0,c.K2)((function(t){var e=t.length,r=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;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),r.length-1&&(this.yylineno-=r.length-1);var s=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:r?(r.length===a.length?this.yylloc.first_column:0)+a[a.length-r.length].length-r[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[s[0],s[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this}),"unput"),more:(0,c.K2)((function(){return this._more=!0,this}),"more"),reject:(0,c.K2)((function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):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).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})}),"reject"),less:(0,c.K2)((function(t){this.unput(this.match.slice(t))}),"less"),pastInput:(0,c.K2)((function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")}),"pastInput"),upcomingInput:(0,c.K2)((function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")}),"upcomingInput"),showPosition:(0,c.K2)((function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"}),"showPosition"),test_match:(0,c.K2)((function(t,e){var r,a,s;if(this.options.backtrack_lexer&&(s={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&&(s.yylloc.range=this.yylloc.range.slice(0))),(a=t[0].match(/(?:\r\n?|\n).*/g))&&(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+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,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(t[0].length),this.matched+=t[0],r=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),r)return r;if(this._backtrack){for(var i in s)this[i]=s[i];return!1}return!1}),"test_match"),next:(0,c.K2)((function(){if(this.done)return this.EOF;var t,e,r,a;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var s=this._currentRules(),i=0;ie[0].length)){if(e=r,a=i,this.options.backtrack_lexer){if(!1!==(t=this.test_match(r,s[i])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,s[a]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})}),"next"),lex:(0,c.K2)((function(){var t=this.next();return t||this.lex()}),"lex"),begin:(0,c.K2)((function(t){this.conditionStack.push(t)}),"begin"),popState:(0,c.K2)((function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]}),"popState"),_currentRules:(0,c.K2)((function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules}),"_currentRules"),topState:(0,c.K2)((function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"}),"topState"),pushState:(0,c.K2)((function(t){this.begin(t)}),"pushState"),stateStackSize:(0,c.K2)((function(){return this.conditionStack.length}),"stateStackSize"),options:{},performAction:(0,c.K2)((function(t,e,r,a){switch(r){case 0:return t.getLogger().debug("Found block-beta"),10;case 1:return t.getLogger().debug("Found id-block"),29;case 2:return t.getLogger().debug("Found block"),10;case 3:t.getLogger().debug(".",e.yytext);break;case 4:t.getLogger().debug("_",e.yytext);break;case 5:return 5;case 6:return e.yytext=-1,28;case 7:return e.yytext=e.yytext.replace(/columns\s+/,""),t.getLogger().debug("COLUMNS (LEX)",e.yytext),28;case 8:case 76:case 77:case 99:this.pushState("md_string");break;case 9:return"MD_STR";case 10:case 34:case 79:this.popState();break;case 11:this.pushState("string");break;case 12:t.getLogger().debug("LEX: POPPING STR:",e.yytext),this.popState();break;case 13:return t.getLogger().debug("LEX: STR end:",e.yytext),"STR";case 14:return e.yytext=e.yytext.replace(/space\:/,""),t.getLogger().debug("SPACE NUM (LEX)",e.yytext),21;case 15:return e.yytext="1",t.getLogger().debug("COLUMNS (LEX)",e.yytext),21;case 16:return 42;case 17:return"LINKSTYLE";case 18:return"INTERPOLATE";case 19:return this.pushState("CLASSDEF"),39;case 20:return this.popState(),this.pushState("CLASSDEFID"),"DEFAULT_CLASSDEF_ID";case 21:return this.popState(),this.pushState("CLASSDEFID"),40;case 22:return this.popState(),41;case 23:return this.pushState("CLASS"),43;case 24:return this.popState(),this.pushState("CLASS_STYLE"),44;case 25:return this.popState(),45;case 26:return this.pushState("STYLE_STMNT"),46;case 27:return this.popState(),this.pushState("STYLE_DEFINITION"),47;case 28:return this.popState(),48;case 29:return this.pushState("acc_title"),"acc_title";case 30:return this.popState(),"acc_title_value";case 31:return this.pushState("acc_descr"),"acc_descr";case 32:return this.popState(),"acc_descr_value";case 33:this.pushState("acc_descr_multiline");break;case 35:return"acc_descr_multiline_value";case 36:return 30;case 37:case 38:case 40:case 41:case 44:return this.popState(),t.getLogger().debug("Lex: (("),"NODE_DEND";case 39:return this.popState(),t.getLogger().debug("Lex: ))"),"NODE_DEND";case 42:return this.popState(),t.getLogger().debug("Lex: (-"),"NODE_DEND";case 43:return this.popState(),t.getLogger().debug("Lex: -)"),"NODE_DEND";case 45:return this.popState(),t.getLogger().debug("Lex: ]]"),"NODE_DEND";case 46:return this.popState(),t.getLogger().debug("Lex: ("),"NODE_DEND";case 47:return this.popState(),t.getLogger().debug("Lex: ])"),"NODE_DEND";case 48:case 49:return this.popState(),t.getLogger().debug("Lex: /]"),"NODE_DEND";case 50:return this.popState(),t.getLogger().debug("Lex: )]"),"NODE_DEND";case 51:return this.popState(),t.getLogger().debug("Lex: )"),"NODE_DEND";case 52:return this.popState(),t.getLogger().debug("Lex: ]>"),"NODE_DEND";case 53:return this.popState(),t.getLogger().debug("Lex: ]"),"NODE_DEND";case 54:return t.getLogger().debug("Lexa: -)"),this.pushState("NODE"),35;case 55:return t.getLogger().debug("Lexa: (-"),this.pushState("NODE"),35;case 56:return t.getLogger().debug("Lexa: ))"),this.pushState("NODE"),35;case 57:case 59:case 60:case 61:case 64:return t.getLogger().debug("Lexa: )"),this.pushState("NODE"),35;case 58:return t.getLogger().debug("Lex: ((("),this.pushState("NODE"),35;case 62:return t.getLogger().debug("Lexc: >"),this.pushState("NODE"),35;case 63:return t.getLogger().debug("Lexa: (["),this.pushState("NODE"),35;case 65:case 66:case 67:case 68:case 69:case 70:case 71:return this.pushState("NODE"),35;case 72:return t.getLogger().debug("Lexa: ["),this.pushState("NODE"),35;case 73:return this.pushState("BLOCK_ARROW"),t.getLogger().debug("LEX ARR START"),37;case 74:return t.getLogger().debug("Lex: NODE_ID",e.yytext),31;case 75:return t.getLogger().debug("Lex: EOF",e.yytext),8;case 78:return"NODE_DESCR";case 80:t.getLogger().debug("Lex: Starting string"),this.pushState("string");break;case 81:t.getLogger().debug("LEX ARR: Starting string"),this.pushState("string");break;case 82:return t.getLogger().debug("LEX: NODE_DESCR:",e.yytext),"NODE_DESCR";case 83:t.getLogger().debug("LEX POPPING"),this.popState();break;case 84:t.getLogger().debug("Lex: =>BAE"),this.pushState("ARROW_DIR");break;case 85:return e.yytext=e.yytext.replace(/^,\s*/,""),t.getLogger().debug("Lex (right): dir:",e.yytext),"DIR";case 86:return e.yytext=e.yytext.replace(/^,\s*/,""),t.getLogger().debug("Lex (left):",e.yytext),"DIR";case 87:return e.yytext=e.yytext.replace(/^,\s*/,""),t.getLogger().debug("Lex (x):",e.yytext),"DIR";case 88:return e.yytext=e.yytext.replace(/^,\s*/,""),t.getLogger().debug("Lex (y):",e.yytext),"DIR";case 89:return e.yytext=e.yytext.replace(/^,\s*/,""),t.getLogger().debug("Lex (up):",e.yytext),"DIR";case 90:return e.yytext=e.yytext.replace(/^,\s*/,""),t.getLogger().debug("Lex (down):",e.yytext),"DIR";case 91:return e.yytext="]>",t.getLogger().debug("Lex (ARROW_DIR end):",e.yytext),this.popState(),this.popState(),"BLOCK_ARROW_END";case 92:return t.getLogger().debug("Lex: LINK","#"+e.yytext+"#"),15;case 93:case 94:case 95:return t.getLogger().debug("Lex: LINK",e.yytext),15;case 96:case 97:case 98:return t.getLogger().debug("Lex: START_LINK",e.yytext),this.pushState("LLABEL"),16;case 100:return t.getLogger().debug("Lex: Starting string"),this.pushState("string"),"LINK_LABEL";case 101:return this.popState(),t.getLogger().debug("Lex: LINK","#"+e.yytext+"#"),15;case 102:case 103:return this.popState(),t.getLogger().debug("Lex: LINK",e.yytext),15;case 104:return t.getLogger().debug("Lex: COLON",e.yytext),e.yytext=e.yytext.slice(1),27}}),"anonymous"),rules:[/^(?:block-beta\b)/,/^(?:block:)/,/^(?:block\b)/,/^(?:[\s]+)/,/^(?:[\n]+)/,/^(?:((\u000D\u000A)|(\u000A)))/,/^(?:columns\s+auto\b)/,/^(?:columns\s+[\d]+)/,/^(?:["][`])/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:space[:]\d+)/,/^(?:space\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\s+)/,/^(?:DEFAULT\s+)/,/^(?:\w+\s+)/,/^(?:[^\n]*)/,/^(?:class\s+)/,/^(?:(\w+)+((,\s*\w+)*))/,/^(?:[^\n]*)/,/^(?:style\s+)/,/^(?:(\w+)+((,\s*\w+)*))/,/^(?:[^\n]*)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:end\b\s*)/,/^(?:\(\(\()/,/^(?:\)\)\))/,/^(?:[\)]\))/,/^(?:\}\})/,/^(?:\})/,/^(?:\(-)/,/^(?:-\))/,/^(?:\(\()/,/^(?:\]\])/,/^(?:\()/,/^(?:\]\))/,/^(?:\\\])/,/^(?:\/\])/,/^(?:\)\])/,/^(?:[\)])/,/^(?:\]>)/,/^(?:[\]])/,/^(?:-\))/,/^(?:\(-)/,/^(?:\)\))/,/^(?:\))/,/^(?:\(\(\()/,/^(?:\(\()/,/^(?:\{\{)/,/^(?:\{)/,/^(?:>)/,/^(?:\(\[)/,/^(?:\()/,/^(?:\[\[)/,/^(?:\[\|)/,/^(?:\[\()/,/^(?:\)\)\))/,/^(?:\[\\)/,/^(?:\[\/)/,/^(?:\[\\)/,/^(?:\[)/,/^(?:<\[)/,/^(?:[^\(\[\n\-\)\{\}\s\<\>:]+)/,/^(?:$)/,/^(?:["][`])/,/^(?:["][`])/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["])/,/^(?:["])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:\]>\s*\()/,/^(?:,?\s*right\s*)/,/^(?:,?\s*left\s*)/,/^(?:,?\s*x\s*)/,/^(?:,?\s*y\s*)/,/^(?:,?\s*up\s*)/,/^(?:,?\s*down\s*)/,/^(?:\)\s*)/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?:\s*~~[\~]+\s*)/,/^(?:\s*[xo<]?--\s*)/,/^(?:\s*[xo<]?==\s*)/,/^(?:\s*[xo<]?-\.\s*)/,/^(?:["][`])/,/^(?:["])/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?::\d+)/],conditions:{STYLE_DEFINITION:{rules:[28],inclusive:!1},STYLE_STMNT:{rules:[27],inclusive:!1},CLASSDEFID:{rules:[22],inclusive:!1},CLASSDEF:{rules:[20,21],inclusive:!1},CLASS_STYLE:{rules:[25],inclusive:!1},CLASS:{rules:[24],inclusive:!1},LLABEL:{rules:[99,100,101,102,103],inclusive:!1},ARROW_DIR:{rules:[85,86,87,88,89,90,91],inclusive:!1},BLOCK_ARROW:{rules:[76,81,84],inclusive:!1},NODE:{rules:[37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,77,80],inclusive:!1},md_string:{rules:[9,10,78,79],inclusive:!1},space:{rules:[],inclusive:!1},string:{rules:[12,13,82,83],inclusive:!1},acc_descr_multiline:{rules:[34,35],inclusive:!1},acc_descr:{rules:[32],inclusive:!1},acc_title:{rules:[30],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,11,14,15,16,17,18,19,23,26,29,31,33,36,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,92,93,94,95,96,97,98,104],inclusive:!0}}}}();function m(){this.yy={}}return x.lexer=f,(0,c.K2)(m,"Parser"),m.prototype=x,x.Parser=m,new m}();y.parser=y;var b=y,x=new Map,f=[],m=new Map,w="color",_="fill",L=(0,l.D7)(),k=new Map,S=(0,c.K2)((t=>l.Y2.sanitizeText(t,L)),"sanitizeText"),v=(0,c.K2)((function(t,e=""){let r=k.get(t);r||(r={id:t,styles:[],textStyles:[]},k.set(t,r)),null!=e&&e.split(",").forEach((t=>{const e=t.replace(/([^;]*);/,"$1").trim();if(RegExp(w).exec(t)){const t=e.replace(_,"bgFill").replace(w,_);r.textStyles.push(t)}r.styles.push(e)}))}),"addStyleClass"),E=(0,c.K2)((function(t,e=""){const r=x.get(t);null!=e&&(r.styles=e.split(","))}),"addStyle2Node"),D=(0,c.K2)((function(t,e){t.split(",").forEach((function(t){let r=x.get(t);if(void 0===r){const e=t.trim();r={id:e,type:"na",children:[]},x.set(e,r)}r.classes||(r.classes=[]),r.classes.push(e)}))}),"setCssClass"),C=(0,c.K2)(((t,e)=>{const r=t.flat(),a=[],s=r.find((t=>"column-setting"===t?.type)),i=s?.columns??-1;for(const n of r)if("number"==typeof i&&i>0&&"column-setting"!==n.type&&"number"==typeof n.widthInColumns&&n.widthInColumns>i&&c.Rm.warn(`Block ${n.id} width ${n.widthInColumns} exceeds configured column width ${i}`),n.label&&(n.label=S(n.label)),"classDef"!==n.type)if("applyClass"!==n.type)if("applyStyles"!==n.type)if("column-setting"===n.type)e.columns=n.columns??-1;else if("edge"===n.type){const t=(m.get(n.id)??0)+1;m.set(n.id,t),n.id=t+"-"+n.id,f.push(n)}else{n.label||("composite"===n.type?n.label="":n.label=n.id);const t=x.get(n.id);if(void 0===t?x.set(n.id,n):("na"!==n.type&&(t.type=n.type),n.label!==n.id&&(t.label=n.label)),n.children&&C(n.children,n),"space"===n.type){const t=n.width??1;for(let e=0;e{c.Rm.debug("Clear called"),(0,l.IU)(),K={id:"root",type:"composite",children:[],columns:-1},x=new Map([["root",K]]),R=[],k=new Map,f=[],m=new Map}),"clear");function N(t){switch(c.Rm.debug("typeStr2Type",t),t){case"[]":return"square";case"()":return c.Rm.debug("we have a round"),"round";case"(())":return"circle";case">]":return"rect_left_inv_arrow";case"{}":return"diamond";case"{{}}":return"hexagon";case"([])":return"stadium";case"[[]]":return"subroutine";case"[()]":return"cylinder";case"((()))":return"doublecircle";case"[//]":return"lean_right";case"[\\\\]":return"lean_left";case"[/\\]":return"trapezoid";case"[\\/]":return"inv_trapezoid";case"<[]>":return"block_arrow";default:return"na"}}function T(t){return c.Rm.debug("typeStr2Type",t),"=="===t?"thick":"normal"}function A(t){switch(t.replace(/^[\s-]+|[\s-]+$/g,"")){case"x":return"arrow_cross";case"o":return"arrow_circle";case">":return"arrow_point";default:return""}}(0,c.K2)(N,"typeStr2Type"),(0,c.K2)(T,"edgeTypeStr2Type"),(0,c.K2)(A,"edgeStrToEdgeData");var I=0,O=(0,c.K2)((()=>(I++,"id-"+Math.random().toString(36).substr(2,12)+"-"+I)),"generateId"),B=(0,c.K2)((t=>{K.children=t,C(t,K),R=K.children}),"setHierarchy"),z=(0,c.K2)((t=>{const e=x.get(t);return e?e.columns?e.columns:e.children?e.children.length:-1:-1}),"getColumns"),M=(0,c.K2)((()=>[...x.values()]),"getBlocksFlat"),P=(0,c.K2)((()=>R||[]),"getBlocks"),Y=(0,c.K2)((()=>f),"getEdges"),F=(0,c.K2)((t=>x.get(t)),"getBlock"),j=(0,c.K2)((t=>{x.set(t.id,t)}),"setBlock"),W=(0,c.K2)((()=>c.Rm),"getLogger"),X=(0,c.K2)((function(){return k}),"getClasses"),H={getConfig:(0,c.K2)((()=>(0,l.zj)().block),"getConfig"),typeStr2Type:N,edgeTypeStr2Type:T,edgeStrToEdgeData:A,getLogger:W,getBlocksFlat:M,getBlocks:P,getEdges:Y,setHierarchy:B,getBlock:F,setBlock:j,getColumns:z,getClasses:X,clear:$,generateId:O},U=(0,c.K2)(((t,e)=>{const r=h.A,a=r(t,"r"),s=r(t,"g"),i=r(t,"b");return g.A(a,s,i,e)}),"fade"),Z=(0,c.K2)((t=>`.label {\n font-family: ${t.fontFamily};\n color: ${t.nodeTextColor||t.textColor};\n }\n .cluster-label text {\n fill: ${t.titleColor};\n }\n .cluster-label span,p {\n color: ${t.titleColor};\n }\n\n\n\n .label text,span,p {\n fill: ${t.nodeTextColor||t.textColor};\n color: ${t.nodeTextColor||t.textColor};\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n stroke-width: 1px;\n }\n .flowchart-label text {\n text-anchor: middle;\n }\n // .flowchart-label .text-outer-tspan {\n // text-anchor: middle;\n // }\n // .flowchart-label .text-inner-tspan {\n // text-anchor: start;\n // }\n\n .node .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n .arrowheadPath {\n fill: ${t.arrowheadColor};\n }\n\n .edgePath .path {\n stroke: ${t.lineColor};\n stroke-width: 2.0px;\n }\n\n .flowchart-link {\n stroke: ${t.lineColor};\n fill: none;\n }\n\n .edgeLabel {\n background-color: ${t.edgeLabelBackground};\n rect {\n opacity: 0.5;\n background-color: ${t.edgeLabelBackground};\n fill: ${t.edgeLabelBackground};\n }\n text-align: center;\n }\n\n /* For html labels only */\n .labelBkg {\n background-color: ${U(t.edgeLabelBackground,.5)};\n // background-color:\n }\n\n .node .cluster {\n // fill: ${U(t.mainBkg,.5)};\n fill: ${U(t.clusterBkg,.5)};\n stroke: ${U(t.clusterBorder,.2)};\n box-shadow: rgba(50, 50, 93, 0.25) 0px 13px 27px -5px, rgba(0, 0, 0, 0.3) 0px 8px 16px -8px;\n stroke-width: 1px;\n }\n\n .cluster text {\n fill: ${t.titleColor};\n }\n\n .cluster span,p {\n color: ${t.titleColor};\n }\n /* .cluster div {\n color: ${t.titleColor};\n } */\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: ${t.fontFamily};\n font-size: 12px;\n background: ${t.tertiaryColor};\n border: 1px solid ${t.border2};\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n\n .flowchartTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${t.textColor};\n }\n ${(0,a.o)()}\n`),"getStyles"),q=(0,c.K2)(((t,e,r,a)=>{e.forEach((e=>{G[e](t,r,a)}))}),"insertMarkers"),G={extension:(0,c.K2)(((t,e,r)=>{c.Rm.trace("Making markers for ",r),t.append("defs").append("marker").attr("id",r+"_"+e+"-extensionStart").attr("class","marker extension "+e).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 1,7 L18,13 V 1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-extensionEnd").attr("class","marker extension "+e).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 1,1 V 13 L18,7 Z")}),"extension"),composition:(0,c.K2)(((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-compositionStart").attr("class","marker composition "+e).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-compositionEnd").attr("class","marker composition "+e).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")}),"composition"),aggregation:(0,c.K2)(((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-aggregationStart").attr("class","marker aggregation "+e).attr("refX",18).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-aggregationEnd").attr("class","marker aggregation "+e).attr("refX",1).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L1,7 L9,1 Z")}),"aggregation"),dependency:(0,c.K2)(((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-dependencyStart").attr("class","marker dependency "+e).attr("refX",6).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("path").attr("d","M 5,7 L9,13 L1,7 L9,1 Z"),t.append("defs").append("marker").attr("id",r+"_"+e+"-dependencyEnd").attr("class","marker dependency "+e).attr("refX",13).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")}),"dependency"),lollipop:(0,c.K2)(((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-lollipopStart").attr("class","marker lollipop "+e).attr("refX",13).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6),t.append("defs").append("marker").attr("id",r+"_"+e+"-lollipopEnd").attr("class","marker lollipop "+e).attr("refX",1).attr("refY",7).attr("markerWidth",190).attr("markerHeight",240).attr("orient","auto").append("circle").attr("stroke","black").attr("fill","transparent").attr("cx",7).attr("cy",7).attr("r",6)}),"lollipop"),point:(0,c.K2)(((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-pointEnd").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",6).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 0 L 10 5 L 0 10 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-pointStart").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",4.5).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto").append("path").attr("d","M 0 5 L 10 10 L 10 0 z").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")}),"point"),circle:(0,c.K2)(((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-circleEnd").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",11).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-circleStart").attr("class","marker "+e).attr("viewBox","0 0 10 10").attr("refX",-1).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("circle").attr("cx","5").attr("cy","5").attr("r","5").attr("class","arrowMarkerPath").style("stroke-width",1).style("stroke-dasharray","1,0")}),"circle"),cross:(0,c.K2)(((t,e,r)=>{t.append("marker").attr("id",r+"_"+e+"-crossEnd").attr("class","marker cross "+e).attr("viewBox","0 0 11 11").attr("refX",12).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0"),t.append("marker").attr("id",r+"_"+e+"-crossStart").attr("class","marker cross "+e).attr("viewBox","0 0 11 11").attr("refX",-1).attr("refY",5.2).attr("markerUnits","userSpaceOnUse").attr("markerWidth",11).attr("markerHeight",11).attr("orient","auto").append("path").attr("d","M 1,1 l 9,9 M 10,1 l -9,9").attr("class","arrowMarkerPath").style("stroke-width",2).style("stroke-dasharray","1,0")}),"cross"),barb:(0,c.K2)(((t,e,r)=>{t.append("defs").append("marker").attr("id",r+"_"+e+"-barbEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",14).attr("markerUnits","strokeWidth").attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")}),"barb")},J=q,V=(0,l.D7)()?.block?.padding??8;function Q(t,e){if(0===t||!Number.isInteger(t))throw new Error("Columns must be an integer !== 0.");if(e<0||!Number.isInteger(e))throw new Error("Position must be a non-negative integer."+e);if(t<0)return{px:e,py:0};if(1===t)return{px:0,py:e};return{px:e%t,py:Math.floor(e/t)}}(0,c.K2)(Q,"calculateBlockPosition");var tt=(0,c.K2)((t=>{let e=0,r=0;for(const a of t.children){const{width:s,height:i,x:n,y:o}=a.size??{width:0,height:0,x:0,y:0};c.Rm.debug("getMaxChildSize abc95 child:",a.id,"width:",s,"height:",i,"x:",n,"y:",o,a.type),"space"!==a.type&&(s>e&&(e=s/(t.widthInColumns??1)),i>r&&(r=i))}return{width:e,height:r}}),"getMaxChildSize");function et(t,e,r=0,a=0){c.Rm.debug("setBlockSizes abc95 (start)",t.id,t?.size?.x,"block width =",t?.size,"siblingWidth",r),t?.size?.width||(t.size={width:r,height:a,x:0,y:0});let s=0,i=0;if(t.children?.length>0){for(const r of t.children)et(r,e);const n=tt(t);s=n.width,i=n.height,c.Rm.debug("setBlockSizes abc95 maxWidth of",t.id,":s children is ",s,i);for(const e of t.children)e.size&&(c.Rm.debug(`abc95 Setting size of children of ${t.id} id=${e.id} ${s} ${i} ${JSON.stringify(e.size)}`),e.size.width=s*(e.widthInColumns??1)+V*((e.widthInColumns??1)-1),e.size.height=i,e.size.x=0,e.size.y=0,c.Rm.debug(`abc95 updating size of ${t.id} children child:${e.id} maxWidth:${s} maxHeight:${i}`));for(const r of t.children)et(r,e,s,i);const o=t.columns??-1;let l=0;for(const e of t.children)l+=e.widthInColumns??1;let d=t.children.length;o>0&&o0?Math.min(t.children.length,o):t.children.length;if(e>0){const r=(g-e*V-V)/e;c.Rm.debug("abc95 (growing to fit) width",t.id,g,t.size?.width,r);for(const e of t.children)e.size&&(e.size.width=r)}}t.size={width:g,height:u,x:0,y:0}}c.Rm.debug("setBlockSizes abc94 (done)",t.id,t?.size?.x,t?.size?.width,t?.size?.y,t?.size?.height)}function rt(t,e){c.Rm.debug(`abc85 layout blocks (=>layoutBlocks) ${t.id} x: ${t?.size?.x} y: ${t?.size?.y} width: ${t?.size?.width}`);const r=t.columns??-1;if(c.Rm.debug("layoutBlocks columns abc95",t.id,"=>",r,t),t.children&&t.children.length>0){const a=t?.children[0]?.size?.width??0,s=t.children.length*a+(t.children.length-1)*V;c.Rm.debug("widthOfChildren 88",s,"posX");let i=0;c.Rm.debug("abc91 block?.size?.x",t.id,t?.size?.x);let n=t?.size?.x?t?.size?.x+(-t?.size?.width/2||0):-V,o=0;for(const l of t.children){const a=t;if(!l.size)continue;const{width:s,height:d}=l.size,{px:h,py:g}=Q(r,i);if(g!=o&&(o=g,n=t?.size?.x?t?.size?.x+(-t?.size?.width/2||0):-V,c.Rm.debug("New row in layout for block",t.id," and child ",l.id,o)),c.Rm.debug(`abc89 layout blocks (child) id: ${l.id} Pos: ${i} (px, py) ${h},${g} (${a?.size?.x},${a?.size?.y}) parent: ${a.id} width: ${s}${V}`),a.size){const t=s/2;l.size.x=n+V+t,c.Rm.debug(`abc91 layout blocks (calc) px, pyid:${l.id} startingPos=X${n} new startingPosX${l.size.x} ${t} padding=${V} width=${s} halfWidth=${t} => x:${l.size.x} y:${l.size.y} ${l.widthInColumns} (width * (child?.w || 1)) / 2 ${s*(l?.widthInColumns??1)/2}`),n=l.size.x+t,l.size.y=a.size.y-a.size.height/2+g*(d+V)+d/2+V,c.Rm.debug(`abc88 layout blocks (calc) px, pyid:${l.id}startingPosX${n}${V}${t}=>x:${l.size.x}y:${l.size.y}${l.widthInColumns}(width * (child?.w || 1)) / 2${s*(l?.widthInColumns??1)/2}`)}l.children&&rt(l,e);let u=l?.widthInColumns??1;r>0&&(u=Math.min(u,r-i%r)),i+=u,c.Rm.debug("abc88 columnsPos",l,i)}}c.Rm.debug(`layout blocks (<==layoutBlocks) ${t.id} x: ${t?.size?.x} y: ${t?.size?.y} width: ${t?.size?.width}`)}function at(t,{minX:e,minY:r,maxX:a,maxY:s}={minX:0,minY:0,maxX:0,maxY:0}){if(t.size&&"root"!==t.id){const{x:i,y:n,width:o,height:l}=t.size;i-o/2a&&(a=i+o/2),n+l/2>s&&(s=n+l/2)}if(t.children)for(const i of t.children)({minX:e,minY:r,maxX:a,maxY:s}=at(i,{minX:e,minY:r,maxX:a,maxY:s}));return{minX:e,minY:r,maxX:a,maxY:s}}function st(t){const e=t.getBlock("root");if(!e)return;et(e,t,0,0),rt(e,t),c.Rm.debug("getBlocks",JSON.stringify(e,null,2));const{minX:r,minY:a,maxX:s,maxY:i}=at(e);return{x:r,y:a,width:s-r,height:i-a}}function it(t,e){e&&t.attr("style",e)}function nt(t,e){const r=(0,u.Ltv)(document.createElementNS("http://www.w3.org/2000/svg","foreignObject")),a=r.append("xhtml:div"),s=t.label,i=t.isNode?"nodeLabel":"edgeLabel",n=a.append("span");return n.html((0,l.jZ)(s,e)),it(n,t.labelStyle),n.attr("class",i),it(a,t.labelStyle),a.style("display","inline-block"),a.style("white-space","nowrap"),a.attr("xmlns","http://www.w3.org/1999/xhtml"),r.node()}(0,c.K2)(et,"setBlockSizes"),(0,c.K2)(rt,"layoutBlocks"),(0,c.K2)(at,"findBounds"),(0,c.K2)(st,"layout"),(0,c.K2)(it,"applyStyle"),(0,c.K2)(nt,"addHtmlLabel");var ot=(0,c.K2)((async(t,e,r,a)=>{let s=t||"";"object"==typeof s&&(s=s[0]);const i=(0,l.D7)();if((0,l._3)(i.flowchart.htmlLabels)){s=s.replace(/\\n|\n/g,"
    "),c.Rm.debug("vertexText"+s);return nt({isNode:a,label:await(0,n.hE)((0,o.Sm)(s)),labelStyle:e.replace("fill:","color:")},i)}{const t=document.createElementNS("http://www.w3.org/2000/svg","text");t.setAttribute("style",e.replace("color:","fill:"));let a=[];a="string"==typeof s?s.split(/\\n|\n|/gi):Array.isArray(s)?s:[];for(const e of a){const a=document.createElementNS("http://www.w3.org/2000/svg","tspan");a.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),a.setAttribute("dy","1em"),a.setAttribute("x","0"),r?a.setAttribute("class","title-row"):a.setAttribute("class","row"),a.textContent=e.trim(),t.appendChild(a)}return t}}),"createLabel"),lt=(0,c.K2)(((t,e,r,a,s)=>{e.arrowTypeStart&&dt(t,"start",e.arrowTypeStart,r,a,s),e.arrowTypeEnd&&dt(t,"end",e.arrowTypeEnd,r,a,s)}),"addEdgeMarkers"),ct={arrow_cross:"cross",arrow_point:"point",arrow_barb:"barb",arrow_circle:"circle",aggregation:"aggregation",extension:"extension",composition:"composition",dependency:"dependency",lollipop:"lollipop"},dt=(0,c.K2)(((t,e,r,a,s,i)=>{const n=ct[r];if(!n)return void c.Rm.warn(`Unknown arrow type: ${r}`);const o="start"===e?"Start":"End";t.attr(`marker-${e}`,`url(${a}#${s}_${i}-${n}${o})`)}),"addEdgeMarker"),ht={},gt={},ut=(0,c.K2)((async(t,e)=>{const r=(0,l.D7)(),a=(0,l._3)(r.flowchart.htmlLabels),s="markdown"===e.labelType?(0,n.GZ)(t,e.label,{style:e.labelStyle,useHtmlLabels:a,addSvgBackground:!0},r):await ot(e.label,e.labelStyle),i=t.insert("g").attr("class","edgeLabel"),o=i.insert("g").attr("class","label");o.node().appendChild(s);let c,d=s.getBBox();if(a){const t=s.children[0],e=(0,u.Ltv)(s);d=t.getBoundingClientRect(),e.attr("width",d.width),e.attr("height",d.height)}if(o.attr("transform","translate("+-d.width/2+", "+-d.height/2+")"),ht[e.id]=i,e.width=d.width,e.height=d.height,e.startLabelLeft){const r=await ot(e.startLabelLeft,e.labelStyle),a=t.insert("g").attr("class","edgeTerminals"),s=a.insert("g").attr("class","inner");c=s.node().appendChild(r);const i=r.getBBox();s.attr("transform","translate("+-i.width/2+", "+-i.height/2+")"),gt[e.id]||(gt[e.id]={}),gt[e.id].startLeft=a,pt(c,e.startLabelLeft)}if(e.startLabelRight){const r=await ot(e.startLabelRight,e.labelStyle),a=t.insert("g").attr("class","edgeTerminals"),s=a.insert("g").attr("class","inner");c=a.node().appendChild(r),s.node().appendChild(r);const i=r.getBBox();s.attr("transform","translate("+-i.width/2+", "+-i.height/2+")"),gt[e.id]||(gt[e.id]={}),gt[e.id].startRight=a,pt(c,e.startLabelRight)}if(e.endLabelLeft){const r=await ot(e.endLabelLeft,e.labelStyle),a=t.insert("g").attr("class","edgeTerminals"),s=a.insert("g").attr("class","inner");c=s.node().appendChild(r);const i=r.getBBox();s.attr("transform","translate("+-i.width/2+", "+-i.height/2+")"),a.node().appendChild(r),gt[e.id]||(gt[e.id]={}),gt[e.id].endLeft=a,pt(c,e.endLabelLeft)}if(e.endLabelRight){const r=await ot(e.endLabelRight,e.labelStyle),a=t.insert("g").attr("class","edgeTerminals"),s=a.insert("g").attr("class","inner");c=s.node().appendChild(r);const i=r.getBBox();s.attr("transform","translate("+-i.width/2+", "+-i.height/2+")"),a.node().appendChild(r),gt[e.id]||(gt[e.id]={}),gt[e.id].endRight=a,pt(c,e.endLabelRight)}return s}),"insertEdgeLabel");function pt(t,e){(0,l.D7)().flowchart.htmlLabels&&t&&(t.style.width=9*e.length+"px",t.style.height="12px")}(0,c.K2)(pt,"setTerminalWidth");var yt=(0,c.K2)(((t,e)=>{c.Rm.debug("Moving label abc88 ",t.id,t.label,ht[t.id],e);let r=e.updatedPath?e.updatedPath:e.originalPath;const a=(0,l.D7)(),{subGraphTitleTotalMargin:s}=(0,i.O)(a);if(t.label){const a=ht[t.id];let i=t.x,n=t.y;if(r){const a=o._K.calcLabelPosition(r);c.Rm.debug("Moving label "+t.label+" from (",i,",",n,") to (",a.x,",",a.y,") abc88"),e.updatedPath&&(i=a.x,n=a.y)}a.attr("transform",`translate(${i}, ${n+s/2})`)}if(t.startLabelLeft){const e=gt[t.id].startLeft;let a=t.x,s=t.y;if(r){const e=o._K.calcTerminalLabelPosition(t.arrowTypeStart?10:0,"start_left",r);a=e.x,s=e.y}e.attr("transform",`translate(${a}, ${s})`)}if(t.startLabelRight){const e=gt[t.id].startRight;let a=t.x,s=t.y;if(r){const e=o._K.calcTerminalLabelPosition(t.arrowTypeStart?10:0,"start_right",r);a=e.x,s=e.y}e.attr("transform",`translate(${a}, ${s})`)}if(t.endLabelLeft){const e=gt[t.id].endLeft;let a=t.x,s=t.y;if(r){const e=o._K.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,"end_left",r);a=e.x,s=e.y}e.attr("transform",`translate(${a}, ${s})`)}if(t.endLabelRight){const e=gt[t.id].endRight;let a=t.x,s=t.y;if(r){const e=o._K.calcTerminalLabelPosition(t.arrowTypeEnd?10:0,"end_right",r);a=e.x,s=e.y}e.attr("transform",`translate(${a}, ${s})`)}}),"positionEdgeLabel"),bt=(0,c.K2)(((t,e)=>{const r=t.x,a=t.y,s=Math.abs(e.x-r),i=Math.abs(e.y-a),n=t.width/2,o=t.height/2;return s>=n||i>=o}),"outsideNode"),xt=(0,c.K2)(((t,e,r)=>{c.Rm.debug(`intersection calc abc89:\n outsidePoint: ${JSON.stringify(e)}\n insidePoint : ${JSON.stringify(r)}\n node : x:${t.x} y:${t.y} w:${t.width} h:${t.height}`);const a=t.x,s=t.y,i=Math.abs(a-r.x),n=t.width/2;let o=r.xMath.abs(a-e.x)*l){let t=r.y{c.Rm.debug("abc88 cutPathAtIntersect",t,e);let r=[],a=t[0],s=!1;return t.forEach((t=>{if(bt(e,t)||s)a=t,s||r.push(t);else{const i=xt(e,a,t);let n=!1;r.forEach((t=>{n=n||t.x===i.x&&t.y===i.y})),r.some((t=>t.x===i.x&&t.y===i.y))||r.push(i),s=!0}})),r}),"cutPathAtIntersect"),mt=(0,c.K2)((function(t,e,r,a,i,n,o){let d=r.points;c.Rm.debug("abc88 InsertEdge: edge=",r,"e=",e);let h=!1;const g=n.node(e.v);var p=n.node(e.w);p?.intersect&&g?.intersect&&(d=d.slice(1,r.points.length-1),d.unshift(g.intersect(d[0])),d.push(p.intersect(d[d.length-1]))),r.toCluster&&(c.Rm.debug("to cluster abc88",a[r.toCluster]),d=ft(r.points,a[r.toCluster].node),h=!0),r.fromCluster&&(c.Rm.debug("from cluster abc88",a[r.fromCluster]),d=ft(d.reverse(),a[r.fromCluster].node).reverse(),h=!0);const y=d.filter((t=>!Number.isNaN(t.y)));let b=u.qrM;!r.curve||"graph"!==i&&"flowchart"!==i||(b=r.curve);const{x:x,y:f}=(0,s.RI)(r),m=(0,u.n8j)().x(x).y(f).curve(b);let w;switch(r.thickness){case"normal":w="edge-thickness-normal";break;case"thick":case"invisible":w="edge-thickness-thick";break;default:w=""}switch(r.pattern){case"solid":w+=" edge-pattern-solid";break;case"dotted":w+=" edge-pattern-dotted";break;case"dashed":w+=" edge-pattern-dashed"}const _=t.append("path").attr("d",m(y)).attr("id",r.id).attr("class"," "+w+(r.classes?" "+r.classes:"")).attr("style",r.style);let L="";((0,l.D7)().flowchart.arrowMarkerAbsolute||(0,l.D7)().state.arrowMarkerAbsolute)&&(L=(0,l.ID)(!0)),lt(_,r,L,o,i);let k={};return h&&(k.updatedPath=d),k.originalPath=r.points,k}),"insertEdge"),wt=(0,c.K2)((t=>{const e=new Set;for(const r of t)switch(r){case"x":e.add("right"),e.add("left");break;case"y":e.add("up"),e.add("down");break;default:e.add(r)}return e}),"expandAndDeduplicateDirections"),_t=(0,c.K2)(((t,e,r)=>{const a=wt(t),s=e.height+2*r.padding,i=s/2,n=e.width+2*i+r.padding,o=r.padding/2;return a.has("right")&&a.has("left")&&a.has("up")&&a.has("down")?[{x:0,y:0},{x:i,y:0},{x:n/2,y:2*o},{x:n-i,y:0},{x:n,y:0},{x:n,y:-s/3},{x:n+2*o,y:-s/2},{x:n,y:-2*s/3},{x:n,y:-s},{x:n-i,y:-s},{x:n/2,y:-s-2*o},{x:i,y:-s},{x:0,y:-s},{x:0,y:-2*s/3},{x:-2*o,y:-s/2},{x:0,y:-s/3}]:a.has("right")&&a.has("left")&&a.has("up")?[{x:i,y:0},{x:n-i,y:0},{x:n,y:-s/2},{x:n-i,y:-s},{x:i,y:-s},{x:0,y:-s/2}]:a.has("right")&&a.has("left")&&a.has("down")?[{x:0,y:0},{x:i,y:-s},{x:n-i,y:-s},{x:n,y:0}]:a.has("right")&&a.has("up")&&a.has("down")?[{x:0,y:0},{x:n,y:-i},{x:n,y:-s+i},{x:0,y:-s}]:a.has("left")&&a.has("up")&&a.has("down")?[{x:n,y:0},{x:0,y:-i},{x:0,y:-s+i},{x:n,y:-s}]:a.has("right")&&a.has("left")?[{x:i,y:0},{x:i,y:-o},{x:n-i,y:-o},{x:n-i,y:0},{x:n,y:-s/2},{x:n-i,y:-s},{x:n-i,y:-s+o},{x:i,y:-s+o},{x:i,y:-s},{x:0,y:-s/2}]:a.has("up")&&a.has("down")?[{x:n/2,y:0},{x:0,y:-o},{x:i,y:-o},{x:i,y:-s+o},{x:0,y:-s+o},{x:n/2,y:-s},{x:n,y:-s+o},{x:n-i,y:-s+o},{x:n-i,y:-o},{x:n,y:-o}]:a.has("right")&&a.has("up")?[{x:0,y:0},{x:n,y:-i},{x:0,y:-s}]:a.has("right")&&a.has("down")?[{x:0,y:0},{x:n,y:0},{x:0,y:-s}]:a.has("left")&&a.has("up")?[{x:n,y:0},{x:0,y:-i},{x:n,y:-s}]:a.has("left")&&a.has("down")?[{x:n,y:0},{x:0,y:0},{x:n,y:-s}]:a.has("right")?[{x:i,y:-o},{x:i,y:-o},{x:n-i,y:-o},{x:n-i,y:0},{x:n,y:-s/2},{x:n-i,y:-s},{x:n-i,y:-s+o},{x:i,y:-s+o},{x:i,y:-s+o}]:a.has("left")?[{x:i,y:0},{x:i,y:-o},{x:n-i,y:-o},{x:n-i,y:-s+o},{x:i,y:-s+o},{x:i,y:-s},{x:0,y:-s/2}]:a.has("up")?[{x:i,y:-o},{x:i,y:-s+o},{x:0,y:-s+o},{x:n/2,y:-s},{x:n,y:-s+o},{x:n-i,y:-s+o},{x:n-i,y:-o}]:a.has("down")?[{x:n/2,y:0},{x:0,y:-o},{x:i,y:-o},{x:i,y:-s+o},{x:n-i,y:-s+o},{x:n-i,y:-o},{x:n,y:-o}]:[{x:0,y:0}]}),"getArrowPoints");function Lt(t,e){return t.intersect(e)}(0,c.K2)(Lt,"intersectNode");var kt=Lt;function St(t,e,r,a){var s=t.x,i=t.y,n=s-a.x,o=i-a.y,l=Math.sqrt(e*e*o*o+r*r*n*n),c=Math.abs(e*r*n/l);a.x0}(0,c.K2)(Ct,"intersectLine"),(0,c.K2)(Rt,"sameSign");var Kt=Ct,$t=Nt;function Nt(t,e,r){var a=t.x,s=t.y,i=[],n=Number.POSITIVE_INFINITY,o=Number.POSITIVE_INFINITY;"function"==typeof e.forEach?e.forEach((function(t){n=Math.min(n,t.x),o=Math.min(o,t.y)})):(n=Math.min(n,e.x),o=Math.min(o,e.y));for(var l=a-t.width/2-n,c=s-t.height/2-o,d=0;d1&&i.sort((function(t,e){var a=t.x-r.x,s=t.y-r.y,i=Math.sqrt(a*a+s*s),n=e.x-r.x,o=e.y-r.y,l=Math.sqrt(n*n+o*o);return i{var r,a,s=t.x,i=t.y,n=e.x-s,o=e.y-i,l=t.width/2,c=t.height/2;return Math.abs(o)*l>Math.abs(n)*c?(o<0&&(c=-c),r=0===o?0:c*n/o,a=c):(n<0&&(l=-l),r=l,a=0===n?0:l*o/n),{x:s+r,y:i+a}}),"intersectRect")},At=(0,c.K2)((async(t,e,r,a)=>{const s=(0,l.D7)();let i;const d=e.useHtmlLabels||(0,l._3)(s.flowchart.htmlLabels);i=r||"node default";const h=t.insert("g").attr("class",i).attr("id",e.domId||e.id),g=h.insert("g").attr("class","label").attr("style",e.labelStyle);let p;p=void 0===e.labelText?"":"string"==typeof e.labelText?e.labelText:e.labelText[0];const y=g.node();let b;b="markdown"===e.labelType?(0,n.GZ)(g,(0,l.jZ)((0,o.Sm)(p),s),{useHtmlLabels:d,width:e.width||s.flowchart.wrappingWidth,classes:"markdown-node-label"},s):y.appendChild(await ot((0,l.jZ)((0,o.Sm)(p),s),e.labelStyle,!1,a));let x=b.getBBox();const f=e.padding/2;if((0,l._3)(s.flowchart.htmlLabels)){const t=b.children[0],e=(0,u.Ltv)(b),r=t.getElementsByTagName("img");if(r){const t=""===p.replace(/]*>/g,"").trim();await Promise.all([...r].map((e=>new Promise((r=>{function a(){if(e.style.display="flex",e.style.flexDirection="column",t){const t=s.fontSize?s.fontSize:window.getComputedStyle(document.body).fontSize,r=5,a=parseInt(t,10)*r+"px";e.style.minWidth=a,e.style.maxWidth=a}else e.style.width="100%";r(e)}(0,c.K2)(a,"setupImage"),setTimeout((()=>{e.complete&&a()})),e.addEventListener("error",a),e.addEventListener("load",a)})))))}x=t.getBoundingClientRect(),e.attr("width",x.width),e.attr("height",x.height)}return d?g.attr("transform","translate("+-x.width/2+", "+-x.height/2+")"):g.attr("transform","translate(0, "+-x.height/2+")"),e.centerLabel&&g.attr("transform","translate("+-x.width/2+", "+-x.height/2+")"),g.insert("rect",":first-child"),{shapeSvg:h,bbox:x,halfPadding:f,label:g}}),"labelHelper"),It=(0,c.K2)(((t,e)=>{const r=e.node().getBBox();t.width=r.width,t.height=r.height}),"updateNodeBounds");function Ot(t,e,r,a){return t.insert("polygon",":first-child").attr("points",a.map((function(t){return t.x+","+t.y})).join(" ")).attr("class","label-container").attr("transform","translate("+-e/2+","+r/2+")")}(0,c.K2)(Ot,"insertPolygonShape");var Bt=(0,c.K2)((async(t,e)=>{e.useHtmlLabels||(0,l.D7)().flowchart.htmlLabels||(e.centerLabel=!0);const{shapeSvg:r,bbox:a,halfPadding:s}=await At(t,e,"node "+e.classes,!0);c.Rm.info("Classes = ",e.classes);const i=r.insert("rect",":first-child");return i.attr("rx",e.rx).attr("ry",e.ry).attr("x",-a.width/2-s).attr("y",-a.height/2-s).attr("width",a.width+e.padding).attr("height",a.height+e.padding),It(e,i),e.intersect=function(t){return Tt.rect(e,t)},r}),"note"),zt=(0,c.K2)((t=>t?" "+t:""),"formatClass"),Mt=(0,c.K2)(((t,e)=>`${e||"node default"}${zt(t.classes)} ${zt(t.class)}`),"getClassesFromNode"),Pt=(0,c.K2)((async(t,e)=>{const{shapeSvg:r,bbox:a}=await At(t,e,Mt(e,void 0),!0),s=a.width+e.padding+(a.height+e.padding),i=[{x:s/2,y:0},{x:s,y:-s/2},{x:s/2,y:-s},{x:0,y:-s/2}];c.Rm.info("Question main (Circle)");const n=Ot(r,s,s,i);return n.attr("style",e.style),It(e,n),e.intersect=function(t){return c.Rm.warn("Intersect called"),Tt.polygon(e,i,t)},r}),"question"),Yt=(0,c.K2)(((t,e)=>{const r=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),a=[{x:0,y:14},{x:14,y:0},{x:0,y:-14},{x:-14,y:0}];return r.insert("polygon",":first-child").attr("points",a.map((function(t){return t.x+","+t.y})).join(" ")).attr("class","state-start").attr("r",7).attr("width",28).attr("height",28),e.width=28,e.height=28,e.intersect=function(t){return Tt.circle(e,14,t)},r}),"choice"),Ft=(0,c.K2)((async(t,e)=>{const{shapeSvg:r,bbox:a}=await At(t,e,Mt(e,void 0),!0),s=a.height+e.padding,i=s/4,n=a.width+2*i+e.padding,o=[{x:i,y:0},{x:n-i,y:0},{x:n,y:-s/2},{x:n-i,y:-s},{x:i,y:-s},{x:0,y:-s/2}],l=Ot(r,n,s,o);return l.attr("style",e.style),It(e,l),e.intersect=function(t){return Tt.polygon(e,o,t)},r}),"hexagon"),jt=(0,c.K2)((async(t,e)=>{const{shapeSvg:r,bbox:a}=await At(t,e,void 0,!0),s=a.height+2*e.padding,i=s/2,n=a.width+2*i+e.padding,o=_t(e.directions,a,e),l=Ot(r,n,s,o);return l.attr("style",e.style),It(e,l),e.intersect=function(t){return Tt.polygon(e,o,t)},r}),"block_arrow"),Wt=(0,c.K2)((async(t,e)=>{const{shapeSvg:r,bbox:a}=await At(t,e,Mt(e,void 0),!0),s=a.width+e.padding,i=a.height+e.padding,n=[{x:-i/2,y:0},{x:s,y:0},{x:s,y:-i},{x:-i/2,y:-i},{x:0,y:-i/2}];return Ot(r,s,i,n).attr("style",e.style),e.width=s+i,e.height=i,e.intersect=function(t){return Tt.polygon(e,n,t)},r}),"rect_left_inv_arrow"),Xt=(0,c.K2)((async(t,e)=>{const{shapeSvg:r,bbox:a}=await At(t,e,Mt(e),!0),s=a.width+e.padding,i=a.height+e.padding,n=[{x:-2*i/6,y:0},{x:s-i/6,y:0},{x:s+2*i/6,y:-i},{x:i/6,y:-i}],o=Ot(r,s,i,n);return o.attr("style",e.style),It(e,o),e.intersect=function(t){return Tt.polygon(e,n,t)},r}),"lean_right"),Ht=(0,c.K2)((async(t,e)=>{const{shapeSvg:r,bbox:a}=await At(t,e,Mt(e,void 0),!0),s=a.width+e.padding,i=a.height+e.padding,n=[{x:2*i/6,y:0},{x:s+i/6,y:0},{x:s-2*i/6,y:-i},{x:-i/6,y:-i}],o=Ot(r,s,i,n);return o.attr("style",e.style),It(e,o),e.intersect=function(t){return Tt.polygon(e,n,t)},r}),"lean_left"),Ut=(0,c.K2)((async(t,e)=>{const{shapeSvg:r,bbox:a}=await At(t,e,Mt(e,void 0),!0),s=a.width+e.padding,i=a.height+e.padding,n=[{x:-2*i/6,y:0},{x:s+2*i/6,y:0},{x:s-i/6,y:-i},{x:i/6,y:-i}],o=Ot(r,s,i,n);return o.attr("style",e.style),It(e,o),e.intersect=function(t){return Tt.polygon(e,n,t)},r}),"trapezoid"),Zt=(0,c.K2)((async(t,e)=>{const{shapeSvg:r,bbox:a}=await At(t,e,Mt(e,void 0),!0),s=a.width+e.padding,i=a.height+e.padding,n=[{x:i/6,y:0},{x:s-i/6,y:0},{x:s+2*i/6,y:-i},{x:-2*i/6,y:-i}],o=Ot(r,s,i,n);return o.attr("style",e.style),It(e,o),e.intersect=function(t){return Tt.polygon(e,n,t)},r}),"inv_trapezoid"),qt=(0,c.K2)((async(t,e)=>{const{shapeSvg:r,bbox:a}=await At(t,e,Mt(e,void 0),!0),s=a.width+e.padding,i=a.height+e.padding,n=[{x:0,y:0},{x:s+i/2,y:0},{x:s,y:-i/2},{x:s+i/2,y:-i},{x:0,y:-i}],o=Ot(r,s,i,n);return o.attr("style",e.style),It(e,o),e.intersect=function(t){return Tt.polygon(e,n,t)},r}),"rect_right_inv_arrow"),Gt=(0,c.K2)((async(t,e)=>{const{shapeSvg:r,bbox:a}=await At(t,e,Mt(e,void 0),!0),s=a.width+e.padding,i=s/2,n=i/(2.5+s/50),o=a.height+n+e.padding,l="M 0,"+n+" a "+i+","+n+" 0,0,0 "+s+" 0 a "+i+","+n+" 0,0,0 "+-s+" 0 l 0,"+o+" a "+i+","+n+" 0,0,0 "+s+" 0 l 0,"+-o,c=r.attr("label-offset-y",n).insert("path",":first-child").attr("style",e.style).attr("d",l).attr("transform","translate("+-s/2+","+-(o/2+n)+")");return It(e,c),e.intersect=function(t){const r=Tt.rect(e,t),a=r.x-e.x;if(0!=i&&(Math.abs(a)e.height/2-n)){let s=n*n*(1-a*a/(i*i));0!=s&&(s=Math.sqrt(s)),s=n-s,t.y-e.y>0&&(s=-s),r.y+=s}return r},r}),"cylinder"),Jt=(0,c.K2)((async(t,e)=>{const{shapeSvg:r,bbox:a,halfPadding:s}=await At(t,e,"node "+e.classes+" "+e.class,!0),i=r.insert("rect",":first-child"),n=e.positioned?e.width:a.width+e.padding,o=e.positioned?e.height:a.height+e.padding,l=e.positioned?-n/2:-a.width/2-s,d=e.positioned?-o/2:-a.height/2-s;if(i.attr("class","basic label-container").attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("x",l).attr("y",d).attr("width",n).attr("height",o),e.props){const t=new Set(Object.keys(e.props));e.props.borders&&(te(i,e.props.borders,n,o),t.delete("borders")),t.forEach((t=>{c.Rm.warn(`Unknown node property ${t}`)}))}return It(e,i),e.intersect=function(t){return Tt.rect(e,t)},r}),"rect"),Vt=(0,c.K2)((async(t,e)=>{const{shapeSvg:r,bbox:a,halfPadding:s}=await At(t,e,"node "+e.classes,!0),i=r.insert("rect",":first-child"),n=e.positioned?e.width:a.width+e.padding,o=e.positioned?e.height:a.height+e.padding,l=e.positioned?-n/2:-a.width/2-s,d=e.positioned?-o/2:-a.height/2-s;if(i.attr("class","basic cluster composite label-container").attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("x",l).attr("y",d).attr("width",n).attr("height",o),e.props){const t=new Set(Object.keys(e.props));e.props.borders&&(te(i,e.props.borders,n,o),t.delete("borders")),t.forEach((t=>{c.Rm.warn(`Unknown node property ${t}`)}))}return It(e,i),e.intersect=function(t){return Tt.rect(e,t)},r}),"composite"),Qt=(0,c.K2)((async(t,e)=>{const{shapeSvg:r}=await At(t,e,"label",!0);c.Rm.trace("Classes = ",e.class);const a=r.insert("rect",":first-child");if(a.attr("width",0).attr("height",0),r.attr("class","label edgeLabel"),e.props){const t=new Set(Object.keys(e.props));e.props.borders&&(te(a,e.props.borders,0,0),t.delete("borders")),t.forEach((t=>{c.Rm.warn(`Unknown node property ${t}`)}))}return It(e,a),e.intersect=function(t){return Tt.rect(e,t)},r}),"labelRect");function te(t,e,r,a){const s=[],i=(0,c.K2)((t=>{s.push(t,0)}),"addBorder"),n=(0,c.K2)((t=>{s.push(0,t)}),"skipBorder");e.includes("t")?(c.Rm.debug("add top border"),i(r)):n(r),e.includes("r")?(c.Rm.debug("add right border"),i(a)):n(a),e.includes("b")?(c.Rm.debug("add bottom border"),i(r)):n(r),e.includes("l")?(c.Rm.debug("add left border"),i(a)):n(a),t.attr("stroke-dasharray",s.join(" "))}(0,c.K2)(te,"applyNodePropertyBorders");var ee=(0,c.K2)((async(t,e)=>{let r;r=e.classes?"node "+e.classes:"node default";const a=t.insert("g").attr("class",r).attr("id",e.domId||e.id),s=a.insert("rect",":first-child"),i=a.insert("line"),n=a.insert("g").attr("class","label"),o=e.labelText.flat?e.labelText.flat():e.labelText;let d="";d="object"==typeof o?o[0]:o,c.Rm.info("Label text abc79",d,o,"object"==typeof o);const h=n.node().appendChild(await ot(d,e.labelStyle,!0,!0));let g={width:0,height:0};if((0,l._3)((0,l.D7)().flowchart.htmlLabels)){const t=h.children[0],e=(0,u.Ltv)(h);g=t.getBoundingClientRect(),e.attr("width",g.width),e.attr("height",g.height)}c.Rm.info("Text 2",o);const p=o.slice(1,o.length);let y=h.getBBox();const b=n.node().appendChild(await ot(p.join?p.join("
    "):p,e.labelStyle,!0,!0));if((0,l._3)((0,l.D7)().flowchart.htmlLabels)){const t=b.children[0],e=(0,u.Ltv)(b);g=t.getBoundingClientRect(),e.attr("width",g.width),e.attr("height",g.height)}const x=e.padding/2;return(0,u.Ltv)(b).attr("transform","translate( "+(g.width>y.width?0:(y.width-g.width)/2)+", "+(y.height+x+5)+")"),(0,u.Ltv)(h).attr("transform","translate( "+(g.width{const{shapeSvg:r,bbox:a}=await At(t,e,Mt(e,void 0),!0),s=a.height+e.padding,i=a.width+s/4+e.padding,n=r.insert("rect",":first-child").attr("style",e.style).attr("rx",s/2).attr("ry",s/2).attr("x",-i/2).attr("y",-s/2).attr("width",i).attr("height",s);return It(e,n),e.intersect=function(t){return Tt.rect(e,t)},r}),"stadium"),ae=(0,c.K2)((async(t,e)=>{const{shapeSvg:r,bbox:a,halfPadding:s}=await At(t,e,Mt(e,void 0),!0),i=r.insert("circle",":first-child");return i.attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("r",a.width/2+s).attr("width",a.width+e.padding).attr("height",a.height+e.padding),c.Rm.info("Circle main"),It(e,i),e.intersect=function(t){return c.Rm.info("Circle intersect",e,a.width/2+s,t),Tt.circle(e,a.width/2+s,t)},r}),"circle"),se=(0,c.K2)((async(t,e)=>{const{shapeSvg:r,bbox:a,halfPadding:s}=await At(t,e,Mt(e,void 0),!0),i=r.insert("g",":first-child"),n=i.insert("circle"),o=i.insert("circle");return i.attr("class",e.class),n.attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("r",a.width/2+s+5).attr("width",a.width+e.padding+10).attr("height",a.height+e.padding+10),o.attr("style",e.style).attr("rx",e.rx).attr("ry",e.ry).attr("r",a.width/2+s).attr("width",a.width+e.padding).attr("height",a.height+e.padding),c.Rm.info("DoubleCircle main"),It(e,n),e.intersect=function(t){return c.Rm.info("DoubleCircle intersect",e,a.width/2+s+5,t),Tt.circle(e,a.width/2+s+5,t)},r}),"doublecircle"),ie=(0,c.K2)((async(t,e)=>{const{shapeSvg:r,bbox:a}=await At(t,e,Mt(e,void 0),!0),s=a.width+e.padding,i=a.height+e.padding,n=[{x:0,y:0},{x:s,y:0},{x:s,y:-i},{x:0,y:-i},{x:0,y:0},{x:-8,y:0},{x:s+8,y:0},{x:s+8,y:-i},{x:-8,y:-i},{x:-8,y:0}],o=Ot(r,s,i,n);return o.attr("style",e.style),It(e,o),e.intersect=function(t){return Tt.polygon(e,n,t)},r}),"subroutine"),ne=(0,c.K2)(((t,e)=>{const r=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),a=r.insert("circle",":first-child");return a.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),It(e,a),e.intersect=function(t){return Tt.circle(e,7,t)},r}),"start"),oe=(0,c.K2)(((t,e,r)=>{const a=t.insert("g").attr("class","node default").attr("id",e.domId||e.id);let s=70,i=10;"LR"===r&&(s=10,i=70);const n=a.append("rect").attr("x",-1*s/2).attr("y",-1*i/2).attr("width",s).attr("height",i).attr("class","fork-join");return It(e,n),e.height=e.height+e.padding/2,e.width=e.width+e.padding/2,e.intersect=function(t){return Tt.rect(e,t)},a}),"forkJoin"),le={rhombus:Pt,composite:Vt,question:Pt,rect:Jt,labelRect:Qt,rectWithTitle:ee,choice:Yt,circle:ae,doublecircle:se,stadium:re,hexagon:Ft,block_arrow:jt,rect_left_inv_arrow:Wt,lean_right:Xt,lean_left:Ht,trapezoid:Ut,inv_trapezoid:Zt,rect_right_inv_arrow:qt,cylinder:Gt,start:ne,end:(0,c.K2)(((t,e)=>{const r=t.insert("g").attr("class","node default").attr("id",e.domId||e.id),a=r.insert("circle",":first-child"),s=r.insert("circle",":first-child");return s.attr("class","state-start").attr("r",7).attr("width",14).attr("height",14),a.attr("class","state-end").attr("r",5).attr("width",10).attr("height",10),It(e,s),e.intersect=function(t){return Tt.circle(e,7,t)},r}),"end"),note:Bt,subroutine:ie,fork:oe,join:oe,class_box:(0,c.K2)((async(t,e)=>{const r=e.padding/2;let a;a=e.classes?"node "+e.classes:"node default";const s=t.insert("g").attr("class",a).attr("id",e.domId||e.id),i=s.insert("rect",":first-child"),n=s.insert("line"),o=s.insert("line");let c=0,d=4;const h=s.insert("g").attr("class","label");let g=0;const p=e.classData.annotations?.[0],y=e.classData.annotations[0]?"\xab"+e.classData.annotations[0]+"\xbb":"",b=h.node().appendChild(await ot(y,e.labelStyle,!0,!0));let x=b.getBBox();if((0,l._3)((0,l.D7)().flowchart.htmlLabels)){const t=b.children[0],e=(0,u.Ltv)(b);x=t.getBoundingClientRect(),e.attr("width",x.width),e.attr("height",x.height)}e.classData.annotations[0]&&(d+=x.height+4,c+=x.width);let f=e.classData.label;void 0!==e.classData.type&&""!==e.classData.type&&((0,l.D7)().flowchart.htmlLabels?f+="<"+e.classData.type+">":f+="<"+e.classData.type+">");const m=h.node().appendChild(await ot(f,e.labelStyle,!0,!0));(0,u.Ltv)(m).attr("class","classTitle");let w=m.getBBox();if((0,l._3)((0,l.D7)().flowchart.htmlLabels)){const t=m.children[0],e=(0,u.Ltv)(m);w=t.getBoundingClientRect(),e.attr("width",w.width),e.attr("height",w.height)}d+=w.height+4,w.width>c&&(c=w.width);const _=[];e.classData.members.forEach((async t=>{const r=t.getDisplayDetails();let a=r.displayText;(0,l.D7)().flowchart.htmlLabels&&(a=a.replace(//g,">"));const s=h.node().appendChild(await ot(a,r.cssStyle?r.cssStyle:e.labelStyle,!0,!0));let i=s.getBBox();if((0,l._3)((0,l.D7)().flowchart.htmlLabels)){const t=s.children[0],e=(0,u.Ltv)(s);i=t.getBoundingClientRect(),e.attr("width",i.width),e.attr("height",i.height)}i.width>c&&(c=i.width),d+=i.height+4,_.push(s)})),d+=8;const L=[];if(e.classData.methods.forEach((async t=>{const r=t.getDisplayDetails();let a=r.displayText;(0,l.D7)().flowchart.htmlLabels&&(a=a.replace(//g,">"));const s=h.node().appendChild(await ot(a,r.cssStyle?r.cssStyle:e.labelStyle,!0,!0));let i=s.getBBox();if((0,l._3)((0,l.D7)().flowchart.htmlLabels)){const t=s.children[0],e=(0,u.Ltv)(s);i=t.getBoundingClientRect(),e.attr("width",i.width),e.attr("height",i.height)}i.width>c&&(c=i.width),d+=i.height+4,L.push(s)})),d+=8,p){let t=(c-x.width)/2;(0,u.Ltv)(b).attr("transform","translate( "+(-1*c/2+t)+", "+-1*d/2+")"),g=x.height+4}let k=(c-w.width)/2;return(0,u.Ltv)(m).attr("transform","translate( "+(-1*c/2+k)+", "+(-1*d/2+g)+")"),g+=w.height+4,n.attr("class","divider").attr("x1",-c/2-r).attr("x2",c/2+r).attr("y1",-d/2-r+8+g).attr("y2",-d/2-r+8+g),g+=8,_.forEach((t=>{(0,u.Ltv)(t).attr("transform","translate( "+-c/2+", "+(-1*d/2+g+4)+")");const e=t?.getBBox();g+=(e?.height??0)+4})),g+=8,o.attr("class","divider").attr("x1",-c/2-r).attr("x2",c/2+r).attr("y1",-d/2-r+8+g).attr("y2",-d/2-r+8+g),g+=8,L.forEach((t=>{(0,u.Ltv)(t).attr("transform","translate( "+-c/2+", "+(-1*d/2+g)+")");const e=t?.getBBox();g+=(e?.height??0)+4})),i.attr("style",e.style).attr("class","outer title-state").attr("x",-c/2-r).attr("y",-d/2-r).attr("width",c+e.padding).attr("height",d+e.padding),It(e,i),e.intersect=function(t){return Tt.rect(e,t)},s}),"class_box")},ce={},de=(0,c.K2)((async(t,e,r)=>{let a,s;if(e.link){let i;"sandbox"===(0,l.D7)().securityLevel?i="_top":e.linkTarget&&(i=e.linkTarget||"_blank"),a=t.insert("svg:a").attr("xlink:href",e.link).attr("target",i),s=await le[e.shape](a,e,r)}else s=await le[e.shape](t,e,r),a=s;return e.tooltip&&s.attr("title",e.tooltip),e.class&&s.attr("class","node default "+e.class),ce[e.id]=a,e.haveCallback&&ce[e.id].attr("class",ce[e.id].attr("class")+" clickable"),a}),"insertNode"),he=(0,c.K2)((t=>{const e=ce[t.id];c.Rm.trace("Transforming node",t.diff,t,"translate("+(t.x-t.width/2-5)+", "+t.width/2+")");const r=t.diff||0;return t.clusterNode?e.attr("transform","translate("+(t.x+r-t.width/2)+", "+(t.y-t.height/2-8)+")"):e.attr("transform","translate("+t.x+", "+t.y+")"),r}),"positionNode");function ge(t,e,r=!1){const a=t;let s="default";(a?.classes?.length||0)>0&&(s=(a?.classes??[]).join(" ")),s+=" flowchart-label";let i,n=0,c="";switch(a.type){case"round":n=5,c="rect";break;case"composite":n=0,c="composite",i=0;break;case"square":case"group":default:c="rect";break;case"diamond":c="question";break;case"hexagon":c="hexagon";break;case"block_arrow":c="block_arrow";break;case"odd":case"rect_left_inv_arrow":c="rect_left_inv_arrow";break;case"lean_right":c="lean_right";break;case"lean_left":c="lean_left";break;case"trapezoid":c="trapezoid";break;case"inv_trapezoid":c="inv_trapezoid";break;case"circle":c="circle";break;case"ellipse":c="ellipse";break;case"stadium":c="stadium";break;case"subroutine":c="subroutine";break;case"cylinder":c="cylinder";break;case"doublecircle":c="doublecircle"}const d=(0,o.sM)(a?.styles??[]),h=a.label,g=a.size??{width:0,height:0,x:0,y:0};return{labelStyle:d.labelStyle,shape:c,labelText:h,rx:n,ry:n,class:s,style:d.style,id:a.id,directions:a.directions,width:g.width,height:g.height,x:g.x,y:g.y,positioned:r,intersect:void 0,type:a.type,padding:i??(0,l.zj)()?.block?.padding??0}}async function ue(t,e,r){const a=ge(e,0,!1);if("group"===a.type)return;const s=(0,l.zj)(),i=await de(t,a,{config:s}),n=i.node().getBBox(),o=r.getBlock(a.id);o.size={width:n.width,height:n.height,x:0,y:0,node:i},r.setBlock(o),i.remove()}async function pe(t,e,r){const a=ge(e,0,!0);if("space"!==r.getBlock(a.id).type){const r=(0,l.zj)();await de(t,a,{config:r}),e.intersect=a?.intersect,he(a)}}async function ye(t,e,r,a){for(const s of e)await a(t,s,r),s.children&&await ye(t,s.children,r,a)}async function be(t,e,r){await ye(t,e,r,ue)}async function xe(t,e,r){await ye(t,e,r,pe)}async function fe(t,e,r,a,s){const i=new p.T({multigraph:!0,compound:!0});i.setGraph({rankdir:"TB",nodesep:10,ranksep:10,marginx:8,marginy:8});for(const n of r)n.size&&i.setNode(n.id,{width:n.size.width,height:n.size.height,intersect:n.intersect});for(const n of e)if(n.start&&n.end){const e=a.getBlock(n.start),r=a.getBlock(n.end);if(e?.size&&r?.size){const a=e.size,o=r.size,l=[{x:a.x,y:a.y},{x:a.x+(o.x-a.x)/2,y:a.y+(o.y-a.y)/2},{x:o.x,y:o.y}];mt(t,{v:n.start,w:n.end,name:n.id},{...n,arrowTypeEnd:n.arrowTypeEnd,arrowTypeStart:n.arrowTypeStart,points:l,classes:"edge-thickness-normal edge-pattern-solid flowchart-link LS-a1 LE-b1"},void 0,"block",i,s),n.label&&(await ut(t,{...n,label:n.label,labelStyle:"stroke: #333; stroke-width: 1.5px;fill:none;",arrowTypeEnd:n.arrowTypeEnd,arrowTypeStart:n.arrowTypeStart,points:l,classes:"edge-thickness-normal edge-pattern-solid flowchart-link LS-a1 LE-b1"}),yt({...n,x:l[1].x,y:l[1].y},{originalPath:l}))}}}(0,c.K2)(ge,"getNodeFromBlock"),(0,c.K2)(ue,"calculateBlockSize"),(0,c.K2)(pe,"insertBlockPositioned"),(0,c.K2)(ye,"performOperations"),(0,c.K2)(be,"calculateBlockSizes"),(0,c.K2)(xe,"insertBlocks"),(0,c.K2)(fe,"insertEdges");var me=(0,c.K2)((function(t,e){return e.db.getClasses()}),"getClasses"),we={parser:b,db:H,renderer:{draw:(0,c.K2)((async function(t,e,r,a){const{securityLevel:s,block:i}=(0,l.zj)(),n=a.db;let o;"sandbox"===s&&(o=(0,u.Ltv)("#i"+e));const d="sandbox"===s?(0,u.Ltv)(o.nodes()[0].contentDocument.body):(0,u.Ltv)("body"),h="sandbox"===s?d.select(`[id="${e}"]`):(0,u.Ltv)(`[id="${e}"]`);J(h,["point","circle","cross"],a.type,e);const g=n.getBlocks(),p=n.getBlocksFlat(),y=n.getEdges(),b=h.insert("g").attr("class","block");await be(b,g,n);const x=st(n);if(await xe(b,g,n),await fe(b,y,p,n,e),x){const t=x,e=Math.max(1,Math.round(t.width/t.height*.125)),r=t.height+e+10,a=t.width+10,{useMaxWidth:s}=i;(0,l.a$)(h,r,a,!!s),c.Rm.debug("Here Bounds",x,t),h.attr("viewBox",`${t.x-5} ${t.y-5} ${t.width+10} ${t.height+10}`)}}),"draw"),getClasses:me},styles:Z}},52501:(t,e,r)=>{r.d(e,{o:()=>a});var a=(0,r(40797).K2)((()=>"\n /* Font Awesome icon styling - consolidated */\n .label-icon {\n display: inline-block;\n height: 1em;\n overflow: visible;\n vertical-align: -0.125em;\n }\n \n .node .label-icon path {\n fill: currentColor;\n stroke: revert;\n stroke-width: revert;\n }\n"),"getIconStyles")}}]); \ No newline at end of file diff --git a/assets/js/5b70ecc4.e74e1663.js b/assets/js/5b70ecc4.e74e1663.js new file mode 100644 index 00000000..af31e2ec --- /dev/null +++ b/assets/js/5b70ecc4.e74e1663.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2422],{53628:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>c,contentTitle:()=>l,default:()=>a,frontMatter:()=>d,metadata:()=>s,toc:()=>o});const s=JSON.parse('{"id":"API-Reference/language/CodeInspection","title":"CodeInspection","description":"Import :","source":"@site/api/API-Reference/language/CodeInspection.md","sourceDirName":"API-Reference/language","slug":"/API-Reference/language/CodeInspection","permalink":"/api/API-Reference/language/CodeInspection","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"CSSUtils","permalink":"/api/API-Reference/language/CSSUtils"},"next":{"title":"HTMLDOMDiff","permalink":"/api/API-Reference/language/HTMLDOMDiff"}}');var i=r(74848),t=r(28453);const d={},l=void 0,c={},o=[{value:"Import :",id:"import-",level:3},{value:"_",id:"_",level:2},{value:"CODE_INSPECTION_GUTTER : string",id:"code_inspection_gutter--string",level:2},{value:"Type",id:"type",level:2},{value:"Type.ERROR",id:"typeerror",level:3},{value:"Type.WARNING",id:"typewarning",level:3},{value:"Type.META",id:"typemeta",level:3},{value:"getProvidersForPath(filePath) \u21d2 Object",id:"getprovidersforpathfilepath--object",level:2},{value:"getProviderIDsForLanguage(languageId) \u21d2 Array.<string>",id:"getprovideridsforlanguagelanguageid--arraystring",level:2},{value:"inspectFile(file, providerList) \u21d2 $.Promise",id:"inspectfilefile-providerlist--promise",level:2},{value:"scrollToProblem(lineNumber) \u21d2 jQuery | null",id:"scrolltoproblemlinenumber--jquery--null",level:2},{value:"run(providerName)",id:"runprovidername",level:2},{value:"toggleEnabled(enabled, doNotSave)",id:"toggleenabledenabled-donotsave",level:2},{value:"Error : Object",id:"error--object",level:2}];function h(e){const n={a:"a",br:"br",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,t.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h3,{id:"import-",children:"Import :"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-js",children:'const CodeInspection = brackets.getModule("language/CodeInspection")\n'})}),"\n",(0,i.jsx)("a",{name:"_"}),"\n",(0,i.jsx)(n.h2,{id:"_",children:"_"}),"\n",(0,i.jsx)(n.p,{children:"Manages linters and other code inspections on a per-language basis. Provides a UI and status indicator for\nthe resulting errors/warnings."}),"\n",(0,i.jsx)(n.p,{children:"Currently, inspection providers are only invoked on the current file and only when it is opened, switched to,\nor saved. But in the future, inspectors may be invoked as part of a global scan, at intervals while typing, etc.\nCurrently, results are only displayed in a bottom panel list and in a status bar icon. But in the future,\nresults may also be displayed inline in the editor (as gutter markers, etc.).\nIn the future, support may also be added for error/warning providers that cannot process a single file at a time\n(e.g. a full-project compiler)."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,i.jsx)("a",{name:"CODE_INSPECTION_GUTTER"}),"\n",(0,i.jsxs)(n.h2,{id:"code_inspection_gutter--string",children:["CODE_INSPECTION_GUTTER : ",(0,i.jsx)("code",{children:"string"})]}),"\n",(0,i.jsx)(n.p,{children:"Code inspection gutter"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,i.jsx)("a",{name:"Type"}),"\n",(0,i.jsx)(n.h2,{id:"type",children:"Type"}),"\n",(0,i.jsx)(n.p,{children:"Values for problem's 'type' property"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"#Type",children:"Type"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"#Type.ERROR",children:".ERROR"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"#Type.WARNING",children:".WARNING"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"#Type.META",children:".META"})}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)("a",{name:"Type.ERROR"}),"\n",(0,i.jsx)(n.h3,{id:"typeerror",children:"Type.ERROR"}),"\n",(0,i.jsx)(n.p,{children:"Unambiguous error, such as a syntax error"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": static property of ",(0,i.jsx)(n.a,{href:"#Type",children:(0,i.jsx)("code",{children:"Type"})})]}),"\n",(0,i.jsx)("a",{name:"Type.WARNING"}),"\n",(0,i.jsx)(n.h3,{id:"typewarning",children:"Type.WARNING"}),"\n",(0,i.jsx)(n.p,{children:"Maintainability issue, probable error / bad smell, etc."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": static property of ",(0,i.jsx)(n.a,{href:"#Type",children:(0,i.jsx)("code",{children:"Type"})})]}),"\n",(0,i.jsx)("a",{name:"Type.META"}),"\n",(0,i.jsx)(n.h3,{id:"typemeta",children:"Type.META"}),"\n",(0,i.jsx)(n.p,{children:"Inspector unable to continue, code too complex for static analysis, etc. Not counted in err/warn tally."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": static property of ",(0,i.jsx)(n.a,{href:"#Type",children:(0,i.jsx)("code",{children:"Type"})})]}),"\n",(0,i.jsx)("a",{name:"getProvidersForPath"}),"\n",(0,i.jsxs)(n.h2,{id:"getprovidersforpathfilepath--object",children:["getProvidersForPath(filePath) \u21d2 ",(0,i.jsx)("code",{children:"Object"})]}),"\n",(0,i.jsx)(n.p,{children:"Returns a list of provider for given file path, if available.\nDecision is made depending on the file extension."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"})]})}),(0,i.jsx)(n.tbody,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"filePath"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})})]})})]}),"\n",(0,i.jsx)("a",{name:"getProviderIDsForLanguage"}),"\n",(0,i.jsxs)(n.h2,{id:"getprovideridsforlanguagelanguageid--arraystring",children:["getProviderIDsForLanguage(languageId) \u21d2 ",(0,i.jsx)("code",{children:"Array."})]}),"\n",(0,i.jsx)(n.p,{children:"Returns an array of the IDs of providers registered for a specific language"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function",(0,i.jsx)(n.br,{}),"\n",(0,i.jsx)(n.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"Array."})," - Names of registered providers."]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"})]})}),(0,i.jsx)(n.tbody,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"languageId"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})})]})})]}),"\n",(0,i.jsx)("a",{name:"inspectFile"}),"\n",(0,i.jsxs)(n.h2,{id:"inspectfilefile-providerlist--promise",children:["inspectFile(file, providerList) \u21d2 ",(0,i.jsx)("code",{children:"$.Promise"})]}),"\n",(0,i.jsx)(n.p,{children:"Runs a file inspection over passed file. Uses the given list of providers if specified, otherwise uses\nthe set of providers that are registered for the file's language.\nThis method doesn't update the Brackets UI, just provides inspection results.\nThese results will reflect any unsaved changes present in the file if currently open."}),"\n",(0,i.jsx)(n.p,{children:"The Promise yields an array of provider-result pair objects (the result is the return value of the\nprovider's scanFile() - see register() for details). The result object may be null if there were no\nerrors from that provider.\nIf there are no providers registered for this file, the Promise yields null instead."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function",(0,i.jsx)(n.br,{}),"\n",(0,i.jsx)(n.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"$.Promise"})," - a jQuery promise that will be resolved with ?{provider",":Object",", result: ?{errors:!Array, aborted",":boolean","}}"]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"file"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"File"})}),(0,i.jsx)(n.td,{children:"File that will be inspected for errors."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"providerList"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"Object"})}),(0,i.jsx)(n.td,{children:"Array"})]})]})]}),"\n",(0,i.jsx)("a",{name:"scrollToProblem"}),"\n",(0,i.jsxs)(n.h2,{id:"scrolltoproblemlinenumber--jquery--null",children:["scrollToProblem(lineNumber) \u21d2 ",(0,i.jsx)("code",{children:"jQuery"})," | ",(0,i.jsx)("code",{children:"null"})]}),"\n",(0,i.jsx)(n.p,{children:"Scrolls to the problem line"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsx)(n.tbody,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"lineNumber"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"number"})}),(0,i.jsx)(n.td,{children:"The line number to scroll to"})]})})]}),"\n",(0,i.jsx)("a",{name:"run"}),"\n",(0,i.jsx)(n.h2,{id:"runprovidername",children:"run(providerName)"}),"\n",(0,i.jsx)(n.p,{children:"Run inspector applicable to current document. Updates status bar indicator and refreshes error list in\nbottom panel. Does not run if inspection is disabled or if a providerName is given and does not\nmatch the current doc's provider name."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsx)(n.tbody,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"providerName"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(n.td,{children:"name of the provider that is requesting a run"})]})})]}),"\n",(0,i.jsx)("a",{name:"toggleEnabled"}),"\n",(0,i.jsx)(n.h2,{id:"toggleenabledenabled-donotsave",children:"toggleEnabled(enabled, doNotSave)"}),"\n",(0,i.jsx)(n.p,{children:"Enable or disable all inspection."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"enabled"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"boolean"})}),(0,i.jsx)(n.td,{children:"Enabled state. If omitted, the state is toggled."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"doNotSave"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"boolean"})}),(0,i.jsx)(n.td,{children:"true if the preference should not be saved to user settings. This is generally for events triggered by project-level settings."})]})]})]}),"\n",(0,i.jsx)("a",{name:"Error"}),"\n",(0,i.jsxs)(n.h2,{id:"error--object",children:["Error : ",(0,i.jsx)("code",{children:"Object"})]}),"\n",(0,i.jsx)(n.p,{children:"Registers a provider for a specific language to inspect files and provide linting results."}),"\n",(0,i.jsxs)(n.p,{children:["The provider is passed the text of the file and its full path. Providers should not assume that\nthe file is open (i.e., ",(0,i.jsx)(n.code,{children:"DocumentManager.getOpenDocumentForPath()"})," may return ",(0,i.jsx)(n.code,{children:"null"}),") or that the\nfile on disk matches the text given (the file may have unsaved changes)."]}),"\n",(0,i.jsx)(n.p,{children:'Registering any provider for the "javascript" language automatically unregisters the built-in\nBrackets JSLint provider. This is a temporary convenience until a UI exists for disabling\nregistered providers.'}),"\n",(0,i.jsxs)(n.p,{children:["Providers must implement ",(0,i.jsx)(n.code,{children:"canInspect()"}),", ",(0,i.jsx)(n.code,{children:"scanFile()"}),", or ",(0,i.jsx)(n.code,{children:"scanFileAsync()"}),". If both ",(0,i.jsx)(n.code,{children:"scanFile()"}),"\nand ",(0,i.jsx)(n.code,{children:"scanFileAsync()"})," are implemented, ",(0,i.jsx)(n.code,{children:"scanFile()"})," is ignored."]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"canInspect(fullPath)"}),": A synchronous call to determine if the file can be scanned by this provider."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"scanFile(text, fullPath)"}),": A synchronous function returning linting results or ",(0,i.jsx)(n.code,{children:"null"}),"."]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.code,{children:"scanFileAsync(text, fullPath)"}),": An asynchronous function returning a jQuery Promise resolved with\nthe same type of value as ",(0,i.jsx)(n.code,{children:"scanFile()"}),". Rejecting the promise is treated as an internal error in the provider."]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Each error object in the results should have the following structure:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-js",children:' { pos:{line,ch},\n endPos:?{line,ch},\n message:string,\n htmlMessage:string,\n type:?Type ,\n fix: { // an optional fix, if present will show the fix button\n replace: "text to replace the offset given below",\n rangeOffset: {\n start: number,\n end: number\n }}}\n'})}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global typedef"]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"languageId"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(n.td,{children:"The language ID for which the provider is registered."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"provider"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"Object"})}),(0,i.jsx)(n.td,{children:"The provider object."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"provider.name"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(n.td,{children:"The name of the provider."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"provider.scanFile"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"function"})}),(0,i.jsx)(n.td,{children:"Synchronous scan function."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"provider.scanFileAsync"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"function"})}),(0,i.jsx)(n.td,{children:"Asynchronous scan function returning a Promise."})]})]})]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Properties"})}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Name"}),(0,i.jsx)(n.th,{children:"Type"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"pos"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"Object"})}),(0,i.jsx)(n.td,{children:"The start position of the error."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"pos.line"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"number"})}),(0,i.jsx)(n.td,{children:"The line number (0-based)."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"pos.ch"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"number"})}),(0,i.jsx)(n.td,{children:"The character position within the line (0-based)."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"endPos"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"Object"})}),(0,i.jsx)(n.td,{children:"The end position of the error."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"endPos.line"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"number"})}),(0,i.jsx)(n.td,{children:"The end line number (0-based)."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"endPos.ch"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"number"})}),(0,i.jsx)(n.td,{children:"The end character position within the line (0-based)."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"message"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(n.td,{children:"The error message to be displayed as text."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"htmlMessage"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(n.td,{children:"The error message to be displayed as HTML."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"type"}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.a,{href:"#Type",children:(0,i.jsx)("code",{children:"Type"})})}),(0,i.jsxs)(n.td,{children:["The type of the error. Defaults to ",(0,i.jsx)(n.code,{children:"Type.WARNING"})," if unspecified."]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"fix"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"Object"})}),(0,i.jsx)(n.td,{children:"An optional fix object."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"fix.replace"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(n.td,{children:"The text to replace the error with."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"fix.rangeOffset"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"Object"})}),(0,i.jsx)(n.td,{children:"The range within the text to replace."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"fix.rangeOffset.start"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"number"})}),(0,i.jsx)(n.td,{children:"The start offset of the range."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"fix.rangeOffset.end"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"number"})}),(0,i.jsxs)(n.td,{children:["The end offset of the range. If no errors are found, return either ",(0,i.jsx)(n.code,{children:"null"}),"(treated as file is problem free) or an object with a zero-length ",(0,i.jsx)(n.code,{children:"errors"})," array. Always use ",(0,i.jsx)(n.code,{children:"message"})," to safely display the error as text. If you want to display HTML error message, then explicitly use ",(0,i.jsx)(n.code,{children:"htmlMessage"})," to display it. Both ",(0,i.jsx)(n.code,{children:"message"})," and ",(0,i.jsx)(n.code,{children:"htmlMessage"})," can be used simultaneously. After scanning the file, if you need to omit the lint result, return or resolve with ",(0,i.jsx)(n.code,{children:"{isIgnored: true}"}),". This prevents the file from being marked with a no errors tick mark in the status bar and excludes the linter from the problems panel."]})]})]})]})]})}function a(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(h,{...e})}):h(e)}},28453:(e,n,r)=>{r.d(n,{R:()=>d,x:()=>l});var s=r(96540);const i={},t=s.createContext(i);function d(e){const n=s.useContext(t);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:d(e.components),s.createElement(t.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/5cc5c852.7f02f781.js b/assets/js/5cc5c852.7f02f781.js new file mode 100644 index 00000000..3ce07a3d --- /dev/null +++ b/assets/js/5cc5c852.7f02f781.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8839],{29191:(e,i,n)=>{n.r(i),n.d(i,{assets:()=>a,contentTitle:()=>l,default:()=>h,frontMatter:()=>s,metadata:()=>t,toc:()=>c});const t=JSON.parse('{"id":"API-Reference/features/SelectionViewManager","title":"SelectionViewManager","description":"Import :","source":"@site/api/API-Reference/features/SelectionViewManager.md","sourceDirName":"API-Reference/features","slug":"/API-Reference/features/SelectionViewManager","permalink":"/api/API-Reference/features/SelectionViewManager","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"QuickViewManager","permalink":"/api/API-Reference/features/QuickViewManager"},"next":{"title":"TaskManager","permalink":"/api/API-Reference/features/TaskManager"}}');var r=n(74848),o=n(28453);const s={},l=void 0,a={},c=[{value:"Import :",id:"import-",level:3},{value:"features/SelectionViewManager",id:"featuresselectionviewmanager",level:2},{value:"See Related: QuickViewManager",id:"see-related-quickviewmanager",level:3},{value:"Usage",id:"usage",level:2},{value:"How it works",id:"how-it-works",level:3},{value:"API",id:"api",level:2},{value:"registerSelectionViewProvider",id:"registerselectionviewprovider",level:3},{value:"removeSelectionViewProvider",id:"removeselectionviewprovider",level:3},{value:"getSelectionView",id:"getselectionview",level:3},{value:"parameters",id:"parameters",level:4},{value:"return types",id:"return-types",level:4},{value:"Modifying the SelectionView content after resolving getSelectionView promise",id:"modifying-the-selectionview-content-after-resolving-getselectionview-promise",level:4},{value:"Considerations",id:"considerations",level:4},{value:"features/SelectionViewManager.isSelectionViewShown() \u21d2 boolean",id:"featuresselectionviewmanagerisselectionviewshown--boolean",level:3}];function d(e){const i={a:"a",code:"code",h2:"h2",h3:"h3",h4:"h4",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,o.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(i.h3,{id:"import-",children:"Import :"}),"\n",(0,r.jsx)(i.pre,{children:(0,r.jsx)(i.code,{className:"language-js",children:'const SelectionViewManager = brackets.getModule("features/SelectionViewManager")\n'})}),"\n",(0,r.jsx)("a",{name:"module_features/SelectionViewManager"}),"\n",(0,r.jsx)(i.h2,{id:"featuresselectionviewmanager",children:"features/SelectionViewManager"}),"\n",(0,r.jsx)(i.p,{children:"SelectionViewManager provides support to add interactive preview popups on selection over the main editors.\nThis can be used to provide interactive editor controls on a selected element."}),"\n",(0,r.jsxs)(i.p,{children:["Extensions can register to provide previews with ",(0,r.jsx)(i.code,{children:"SelectionViewManager.registerSelectionViewProvider"})," API."]}),"\n",(0,r.jsx)("img",{src:"https://user-images.githubusercontent.com/5336369/186434397-3db55789-6077-4d02-b4e2-78ef3f663399.png",alt:"Phoenix code selection view"}),"\n",(0,r.jsx)("img",{src:"https://user-images.githubusercontent.com/5336369/186434671-c1b263e5-19a9-4a9d-8f90-507df5f881b5.gif"}),"\n",(0,r.jsx)(i.h3,{id:"see-related-quickviewmanager",children:"See Related: QuickViewManager"}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.a,{href:"https://github.com/phcode-dev/phoenix/wiki/QuickViewManager-API",children:"features/QuickViewManager"})," is similar to\nSelectionViewManager API."]}),"\n",(0,r.jsxs)(i.ul,{children:["\n",(0,r.jsx)(i.li,{children:"SelectionViews popup only once user selects a text by mouse or hover over a region with text selection."}),"\n",(0,r.jsx)(i.li,{children:"Quickviews popup on mouse hover."}),"\n"]}),"\n",(0,r.jsx)("img",{src:"https://docs-images.phcode.dev/phcode-sdk/quick-view-youtube.png",alt:"Phoenix code selection view Youtube image"}),"\n",(0,r.jsx)(i.h2,{id:"usage",children:"Usage"}),"\n",(0,r.jsx)(i.p,{children:'Lets build a "hello world" extension that displays "hello world" above selected text in the editor.\nIn your extension file, add the following code:'}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.strong,{children:"Example"})}),"\n",(0,r.jsx)(i.pre,{children:(0,r.jsx)(i.code,{className:"language-js",children:'const SelectionViewManager = brackets.getModule("features/SelectionViewManager");\n// replace `all` with language ID(Eg. javascript) if you want to restrict the preview to js files only.\nSelectionViewManager.registerSelectionViewProvider(exports, ["all"]);\n\n// provide a helpful name for the SelectionView. This will be useful if you have to debug the selection view\nexports.SELECTION_VIEW_NAME = "extension.someName";\n// now implement the getSelectionView function that will be invoked when ever user selection changes in the editor.\nexports.getSelectionView = function(editor, selections) {\n return new Promise((resolve, reject)=>{\n resolve({\n content: "
    hello world
    "\n });\n });\n };\n'})}),"\n",(0,r.jsx)(i.h3,{id:"how-it-works",children:"How it works"}),"\n",(0,r.jsxs)(i.p,{children:["When SelectionViewManager determines that the user intents to see SelectionViewr, ",(0,r.jsx)(i.code,{children:"getSelectionView"})," function on all\nregistered SelectionView providers are invoked to get the Selection View popup. ",(0,r.jsx)(i.code,{children:"getSelectionView"})," should return\na promise that resolves to the popup contents if the provider has a Selection View. Else just reject the promise.\nIf multiple providers returns SelectionView, all of them are displayed one by one.\nSee detailed API docs for implementation details below:"]}),"\n",(0,r.jsx)(i.h2,{id:"api",children:"API"}),"\n",(0,r.jsx)(i.h3,{id:"registerselectionviewprovider",children:"registerSelectionViewProvider"}),"\n",(0,r.jsxs)(i.p,{children:["Register a SelectionView provider with this api.\n",(0,r.jsx)(i.strong,{children:"Example"})]}),"\n",(0,r.jsx)(i.pre,{children:(0,r.jsx)(i.code,{className:"language-js",children:"// syntax\nSelectionViewManager.registerSelectionViewProvider(provider, supportedLanguages);\n"})}),"\n",(0,r.jsx)(i.p,{children:"The API requires two parameters:"}),"\n",(0,r.jsxs)(i.ol,{children:["\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.code,{children:"provider"}),": must implement a ",(0,r.jsx)(i.code,{children:"getSelectionView"})," function which will be invoked to get the preview. See API doc below."]}),"\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.code,{children:"supportedLanguages"}),": An array of languages that the SelectionView supports. If ",(0,r.jsx)(i.code,{children:'["all"]'})," is supplied, then the\nSelectionView will be invoked for all languages. Restrict to specific languages: Eg: ",(0,r.jsx)(i.code,{children:'["javascript", "html", "php"]'}),"\n",(0,r.jsx)(i.strong,{children:"Example"})]}),"\n"]}),"\n",(0,r.jsx)(i.pre,{children:(0,r.jsx)(i.code,{className:"language-js",children:'// to register a provider that will be invoked for all languages. where provider is any object that implements\n// a getSelectionView function\nSelectionViewManager.registerSelectionViewProvider(provider, ["all"]);\n\n// to register a provider that will be invoked for specific languages\nSelectionViewManager.registerSelectionViewProvider(provider, ["javascript", "html", "php"]);\n'})}),"\n",(0,r.jsx)(i.h3,{id:"removeselectionviewprovider",children:"removeSelectionViewProvider"}),"\n",(0,r.jsxs)(i.p,{children:["Removes a registered SelectionView provider. The API takes the same arguments as ",(0,r.jsx)(i.code,{children:"registerSelectionViewProvider"}),".\n",(0,r.jsx)(i.strong,{children:"Example"})]}),"\n",(0,r.jsx)(i.pre,{children:(0,r.jsx)(i.code,{className:"language-js",children:'// syntax\nSelectionViewManager.removeSelectionViewProvider(provider, supportedLanguages);\n// Example\nSelectionViewManager.removeSelectionViewProvider(provider, ["javascript", "html"]);\n'})}),"\n",(0,r.jsx)(i.h3,{id:"getselectionview",children:"getSelectionView"}),"\n",(0,r.jsxs)(i.p,{children:["Each provider must implement the ",(0,r.jsx)(i.code,{children:"getSelectionView"})," function that returns a promise. The promise either resolves with\nthe Selection View details object(described below) or rejects if there is no preview for the position.\n",(0,r.jsx)(i.strong,{children:"Example"})]}),"\n",(0,r.jsx)(i.pre,{children:(0,r.jsx)(i.code,{className:"language-js",children:'// function signature\nprovider.getSelectionView = function(editor, selections) {\n return new Promise((resolve, reject)=>{\n resolve({\n content: "
    hello world
    "\n });\n });\n };\n'})}),"\n",(0,r.jsx)(i.h4,{id:"parameters",children:"parameters"}),"\n",(0,r.jsx)(i.p,{children:"The function will be called with the following arguments:"}),"\n",(0,r.jsxs)(i.ol,{children:["\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.code,{children:"editor"})," - The editor over which the user hovers the mouse cursor."]}),"\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.code,{children:"selections"})," - An array containing the active selections when the selection view was trigerred."]}),"\n"]}),"\n",(0,r.jsx)(i.h4,{id:"return-types",children:"return types"}),"\n",(0,r.jsx)(i.p,{children:"The promise returned should resolve to an object with the following contents:"}),"\n",(0,r.jsxs)(i.ol,{children:["\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.code,{children:"content"}),": Either ",(0,r.jsx)(i.code,{children:"HTML"})," as text, a ",(0,r.jsx)(i.code,{children:"DOM Node"})," or a ",(0,r.jsx)(i.code,{children:"Jquery Element"}),"."]}),"\n"]}),"\n",(0,r.jsxs)(i.h4,{id:"modifying-the-selectionview-content-after-resolving-getselectionview-promise",children:["Modifying the SelectionView content after resolving ",(0,r.jsx)(i.code,{children:"getSelectionView"})," promise"]}),"\n",(0,r.jsxs)(i.p,{children:["Some advanced/interactive extensions may need to do dom operations on the SelectionView content.\nIn such cases, it is advised to return a domNode/Jquery element as content in ",(0,r.jsx)(i.code,{children:"getSelectionView"}),". Event Handlers\nor further dom manipulations can be done on the returned content element.\nThe SelectionView may be dismissed at any time, so be sure to check if the DOM Node is visible in the editor before\nperforming any operations."]}),"\n",(0,r.jsx)(i.h4,{id:"considerations",children:"Considerations"}),"\n",(0,r.jsxs)(i.ol,{children:["\n",(0,r.jsx)(i.li,{children:"SelectionView won't be displayed till all provider promises are settled. To improve performance, if your SelectionView\nhandler takes time to resolve the SelectionView, resolve a dummy quick once you are sure that a SelectionView needs\nto be shown to the user. The div contents can be later updated as and when more details are available."}),"\n",(0,r.jsx)(i.li,{children:"Note that the SelectionView could be hidden/removed any time by the SelectionViewManager."}),"\n",(0,r.jsx)(i.li,{children:"If multiple providers returns a valid popup, all of them are displayed."}),"\n"]}),"\n",(0,r.jsx)("a",{name:"module_features/SelectionViewManager..isSelectionViewShown"}),"\n",(0,r.jsxs)(i.h3,{id:"featuresselectionviewmanagerisselectionviewshown--boolean",children:["features/SelectionViewManager.isSelectionViewShown() \u21d2 ",(0,r.jsx)("code",{children:"boolean"})]}),"\n",(0,r.jsx)(i.p,{children:"If quickview is displayed and visible on screen"}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Kind"}),": inner method of ",(0,r.jsx)(i.a,{href:"#module_features/SelectionViewManager",children:(0,r.jsx)("code",{children:"features/SelectionViewManager"})})]})]})}function h(e={}){const{wrapper:i}={...(0,o.R)(),...e.components};return i?(0,r.jsx)(i,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},28453:(e,i,n)=>{n.d(i,{R:()=>s,x:()=>l});var t=n(96540);const r={},o=t.createContext(r);function s(e){const i=t.useContext(o);return t.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function l(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:s(e.components),t.createElement(o.Provider,{value:i},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/5d3bd3eb.655c59f6.js b/assets/js/5d3bd3eb.655c59f6.js new file mode 100644 index 00000000..4ad19364 --- /dev/null +++ b/assets/js/5d3bd3eb.655c59f6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3741],{54860:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>a,contentTitle:()=>o,default:()=>p,frontMatter:()=>i,metadata:()=>r,toc:()=>l});const r=JSON.parse('{"id":"API-Reference/project/FileSyncManager","title":"FileSyncManager","description":"Import :","source":"@site/api/API-Reference/project/FileSyncManager.md","sourceDirName":"API-Reference/project","slug":"/API-Reference/project/FileSyncManager","permalink":"/api/API-Reference/project/FileSyncManager","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"StateManager","permalink":"/api/API-Reference/preferences/StateManager"},"next":{"title":"FileTreeView","permalink":"/api/API-Reference/project/FileTreeView"}}');var c=n(74848),s=n(28453);const i={},o=void 0,a={},l=[{value:"Import :",id:"import-",level:3},{value:"syncOpenDocuments(title)",id:"syncopendocumentstitle",level:2}];function d(e){const t={code:"code",h2:"h2",h3:"h3",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,s.R)(),...e.components};return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(t.h3,{id:"import-",children:"Import :"}),"\n",(0,c.jsx)(t.pre,{children:(0,c.jsx)(t.code,{className:"language-js",children:'const FileSyncManager = brackets.getModule("project/FileSyncManager")\n'})}),"\n",(0,c.jsx)("a",{name:"syncOpenDocuments"}),"\n",(0,c.jsx)(t.h2,{id:"syncopendocumentstitle",children:"syncOpenDocuments(title)"}),"\n",(0,c.jsx)(t.p,{children:"Check to see whether any open files have been modified by an external app since the last time\nBrackets synced up with the copy on disk (either by loading or saving the file). For clean\nfiles, we silently upate the editor automatically. For files with unsaved changes, we prompt\nthe user."}),"\n",(0,c.jsxs)(t.p,{children:[(0,c.jsx)(t.strong,{children:"Kind"}),": global function"]}),"\n",(0,c.jsxs)(t.table,{children:[(0,c.jsx)(t.thead,{children:(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.th,{children:"Param"}),(0,c.jsx)(t.th,{children:"Type"}),(0,c.jsx)(t.th,{children:"Description"})]})}),(0,c.jsx)(t.tbody,{children:(0,c.jsxs)(t.tr,{children:[(0,c.jsx)(t.td,{children:"title"}),(0,c.jsx)(t.td,{children:(0,c.jsx)("code",{children:"string"})}),(0,c.jsx)(t.td,{children:'Title to use for document. Default is "External Changes".'})]})})]})]})}function p(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,c.jsx)(t,{...e,children:(0,c.jsx)(d,{...e})}):d(e)}},28453:(e,t,n)=>{n.d(t,{R:()=>i,x:()=>o});var r=n(96540);const c={},s=r.createContext(c);function i(e){const t=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(c):e.components||c:i(e.components),r.createElement(s.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/5da542a3.84604df2.js b/assets/js/5da542a3.84604df2.js new file mode 100644 index 00000000..5e0d32cd --- /dev/null +++ b/assets/js/5da542a3.84604df2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5732],{18103:l=>{l.exports=JSON.parse('{"tag":{"label":"Linux","permalink":"/blog/tags/linux","allTagsPath":"/blog/tags","count":10,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/linux","page":1,"postsPerPage":10,"totalPages":1,"totalCount":10,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]); \ No newline at end of file diff --git a/assets/js/5dfd81cd.2b9b9a22.js b/assets/js/5dfd81cd.2b9b9a22.js new file mode 100644 index 00000000..dc7b60cd --- /dev/null +++ b/assets/js/5dfd81cd.2b9b9a22.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6346],{6307:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>o,contentTitle:()=>l,default:()=>h,frontMatter:()=>d,metadata:()=>t,toc:()=>a});const t=JSON.parse('{"id":"API-Reference/project/SidebarView","title":"SidebarView","description":"Import :","source":"@site/api/API-Reference/project/SidebarView.md","sourceDirName":"API-Reference/project","slug":"/API-Reference/project/SidebarView","permalink":"/api/API-Reference/project/SidebarView","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"ProjectModel","permalink":"/api/API-Reference/project/ProjectModel"},"next":{"title":"WorkingSetSort","permalink":"/api/API-Reference/project/WorkingSetSort"}}');var s=i(74848),r=i(28453);const d={},l=void 0,o={},a=[{value:"Import :",id:"import-",level:3},{value:"AppInit",id:"appinit",level:2},{value:"toggle()",id:"toggle",level:2},{value:"show()",id:"show",level:2},{value:"hide()",id:"hide",level:2},{value:"isVisible() \u21d2 boolean",id:"isvisible--boolean",level:2},{value:"resize(width)",id:"resizewidth",level:2},{value:"getWidth() \u21d2 number",id:"getwidth--number",level:2}];function c(e){const n={br:"br",code:"code",h2:"h2",h3:"h3",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,r.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h3,{id:"import-",children:"Import :"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-js",children:'const SidebarView = brackets.getModule("project/SidebarView")\n'})}),"\n",(0,s.jsx)("a",{name:"AppInit"}),"\n",(0,s.jsx)(n.h2,{id:"appinit",children:"AppInit"}),"\n",(0,s.jsx)(n.p,{children:"The view that controls the showing and hiding of the sidebar."}),"\n",(0,s.jsx)(n.p,{children:"Although the sidebar view doesn't dispatch any events directly, it is a\nresizable element (../utils/Resizer.js), which means it can dispatch Resizer\nevents. For example, if you want to listen for the sidebar showing\nor hiding itself, set up listeners for the corresponding Resizer events,\npanelCollapsed and panelExpanded:"}),"\n",(0,s.jsx)(n.p,{children:'$("#sidebar").on("panelCollapsed", ...);\n$("#sidebar").on("panelExpanded", ...);'}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,s.jsx)("a",{name:"toggle"}),"\n",(0,s.jsx)(n.h2,{id:"toggle",children:"toggle()"}),"\n",(0,s.jsx)(n.p,{children:"Toggle sidebar visibility."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsx)("a",{name:"show"}),"\n",(0,s.jsx)(n.h2,{id:"show",children:"show()"}),"\n",(0,s.jsx)(n.p,{children:"Show the sidebar."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsx)("a",{name:"hide"}),"\n",(0,s.jsx)(n.h2,{id:"hide",children:"hide()"}),"\n",(0,s.jsx)(n.p,{children:"Hide the sidebar."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsx)("a",{name:"isVisible"}),"\n",(0,s.jsxs)(n.h2,{id:"isvisible--boolean",children:["isVisible() \u21d2 ",(0,s.jsx)("code",{children:"boolean"})]}),"\n",(0,s.jsx)(n.p,{children:"Returns the visibility state of the sidebar."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"boolean"})," - true if element is visible, false if it is not visible"]}),"\n",(0,s.jsx)("a",{name:"resize"}),"\n",(0,s.jsx)(n.h2,{id:"resizewidth",children:"resize(width)"}),"\n",(0,s.jsxs)(n.p,{children:["Programmatically resize the sidebar to the given width. Persists\nthe new size so it is restored on reload, resyncs the drag handle,\nand fires ",(0,s.jsx)(n.code,{children:"panelResizeEnd"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"width"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"number"})}),(0,s.jsx)(n.td,{children:"Desired sidebar width in pixels"})]})})]}),"\n",(0,s.jsx)("a",{name:"getWidth"}),"\n",(0,s.jsxs)(n.h2,{id:"getwidth--number",children:["getWidth() \u21d2 ",(0,s.jsx)("code",{children:"number"})]}),"\n",(0,s.jsx)(n.p,{children:"Get the current sidebar width in pixels. Returns the CSS width\neven if the sidebar is hidden (so the value can be restored later)."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function"]})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(c,{...e})}):c(e)}},28453:(e,n,i)=>{i.d(n,{R:()=>d,x:()=>l});var t=i(96540);const s={},r=t.createContext(s);function d(e){const n=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:d(e.components),t.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/5e8f057f.f03c754e.js b/assets/js/5e8f057f.f03c754e.js new file mode 100644 index 00000000..e99860fc --- /dev/null +++ b/assets/js/5e8f057f.f03c754e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5625],{75896:(e,n,l)=>{l.r(n),l.d(n,{assets:()=>i,contentTitle:()=>o,default:()=>h,frontMatter:()=>t,metadata:()=>r,toc:()=>c});const r=JSON.parse('{"id":"API-Reference/utils/DropdownEventHandler","title":"DropdownEventHandler","description":"Import :","source":"@site/api/API-Reference/utils/DropdownEventHandler.md","sourceDirName":"API-Reference/utils","slug":"/API-Reference/utils/DropdownEventHandler","permalink":"/api/API-Reference/utils/DropdownEventHandler","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"DragAndDrop","permalink":"/api/API-Reference/utils/DragAndDrop"},"next":{"title":"EventDispatcher","permalink":"/api/API-Reference/utils/EventDispatcher"}}');var d=l(74848),s=l(28453);const t={},o=void 0,i={},c=[{value:"Import :",id:"import-",level:3},{value:"DropdownEventHandler",id:"dropdowneventhandler",level:2},{value:"new DropdownEventHandler($list, selectionCallback, closeCallback, keyDownCallback)",id:"new-dropdowneventhandlerlist-selectioncallback-closecallback-keydowncallback",level:3},{value:"dropdownEventHandler.open()",id:"dropdowneventhandleropen",level:3},{value:"dropdownEventHandler.close()",id:"dropdowneventhandlerclose",level:3},{value:"dropdownEventHandler.reRegisterMouseHandlers($list)",id:"dropdowneventhandlerreregistermousehandlerslist",level:3}];function a(e){const n={a:"a",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(n.h3,{id:"import-",children:"Import :"}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-js",children:'const DropdownEventHandler = brackets.getModule("utils/DropdownEventHandler")\n'})}),"\n",(0,d.jsx)("a",{name:"DropdownEventHandler"}),"\n",(0,d.jsx)(n.h2,{id:"dropdowneventhandler",children:"DropdownEventHandler"}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Kind"}),": global class"]}),"\n",(0,d.jsxs)(n.ul,{children:["\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#DropdownEventHandler",children:"DropdownEventHandler"}),"\n",(0,d.jsxs)(n.ul,{children:["\n",(0,d.jsx)(n.li,{children:(0,d.jsx)(n.a,{href:"#new_DropdownEventHandler_new",children:"new DropdownEventHandler($list, selectionCallback, closeCallback, keyDownCallback)"})}),"\n",(0,d.jsx)(n.li,{children:(0,d.jsx)(n.a,{href:"#DropdownEventHandler+open",children:".open()"})}),"\n",(0,d.jsx)(n.li,{children:(0,d.jsx)(n.a,{href:"#DropdownEventHandler+close",children:".close()"})}),"\n",(0,d.jsx)(n.li,{children:(0,d.jsx)(n.a,{href:"#DropdownEventHandler+reRegisterMouseHandlers",children:".reRegisterMouseHandlers($list)"})}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,d.jsx)("a",{name:"new_DropdownEventHandler_new"}),"\n",(0,d.jsx)(n.h3,{id:"new-dropdowneventhandlerlist-selectioncallback-closecallback-keydowncallback",children:"new DropdownEventHandler($list, selectionCallback, closeCallback, keyDownCallback)"}),"\n",(0,d.jsx)(n.p,{children:"Object to handle events for a dropdown list."}),"\n",(0,d.jsx)(n.p,{children:"DropdownEventHandler handles these events:"}),"\n",(0,d.jsx)(n.p,{children:"Mouse:"}),"\n",(0,d.jsxs)(n.ul,{children:["\n",(0,d.jsx)(n.li,{children:"click - execute selection callback and dismiss list"}),"\n",(0,d.jsx)(n.li,{children:"mouseover - highlight item"}),"\n",(0,d.jsx)(n.li,{children:"mouseleave - remove mouse highlighting"}),"\n"]}),"\n",(0,d.jsx)(n.p,{children:"Keyboard:"}),"\n",(0,d.jsxs)(n.ul,{children:["\n",(0,d.jsx)(n.li,{children:"Enter - execute selection callback and dismiss list"}),"\n",(0,d.jsx)(n.li,{children:"Esc - dismiss list"}),"\n",(0,d.jsx)(n.li,{children:"Up/Down - change selection"}),"\n",(0,d.jsx)(n.li,{children:"PageUp/Down - change selection"}),"\n"]}),"\n",(0,d.jsx)(n.p,{children:'Items whose "a" has the .disabled class do not respond to selection.'}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Param"}),(0,d.jsx)(n.th,{children:"Type"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsxs)(n.tbody,{children:[(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:"$list"}),(0,d.jsx)(n.td,{children:(0,d.jsx)("code",{children:"jQueryObject"})}),(0,d.jsx)(n.td,{children:"associated list object"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:"selectionCallback"}),(0,d.jsx)(n.td,{children:(0,d.jsx)("code",{children:"function"})}),(0,d.jsx)(n.td,{children:"function called when list item is selected."})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:"closeCallback"}),(0,d.jsx)(n.td,{children:(0,d.jsx)("code",{children:"function"})}),(0,d.jsx)(n.td,{children:"function called when list item is selected."})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:"keyDownCallback"}),(0,d.jsx)(n.td,{children:(0,d.jsx)("code",{children:"function"})}),(0,d.jsx)(n.td,{children:"function called when list item is selected."})]})]})]}),"\n",(0,d.jsx)("a",{name:"DropdownEventHandler+open"}),"\n",(0,d.jsx)(n.h3,{id:"dropdowneventhandleropen",children:"dropdownEventHandler.open()"}),"\n",(0,d.jsx)(n.p,{children:"Public open method"}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,d.jsx)(n.a,{href:"#DropdownEventHandler",children:(0,d.jsx)("code",{children:"DropdownEventHandler"})})]}),"\n",(0,d.jsx)("a",{name:"DropdownEventHandler+close"}),"\n",(0,d.jsx)(n.h3,{id:"dropdowneventhandlerclose",children:"dropdownEventHandler.close()"}),"\n",(0,d.jsx)(n.p,{children:"Public close method"}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,d.jsx)(n.a,{href:"#DropdownEventHandler",children:(0,d.jsx)("code",{children:"DropdownEventHandler"})})]}),"\n",(0,d.jsx)("a",{name:"DropdownEventHandler+reRegisterMouseHandlers"}),"\n",(0,d.jsx)(n.h3,{id:"dropdowneventhandlerreregistermousehandlerslist",children:"dropdownEventHandler.reRegisterMouseHandlers($list)"}),"\n",(0,d.jsx)(n.p,{children:"Re-register mouse event handlers"}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,d.jsx)(n.a,{href:"#DropdownEventHandler",children:(0,d.jsx)("code",{children:"DropdownEventHandler"})})]}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Param"}),(0,d.jsx)(n.th,{children:"Type"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsx)(n.tbody,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:"$list"}),(0,d.jsx)(n.td,{children:(0,d.jsx)("code",{children:"jQueryObject"})}),(0,d.jsx)(n.td,{children:"newly updated list object"})]})})]})]})}function h(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,d.jsx)(n,{...e,children:(0,d.jsx)(a,{...e})}):a(e)}},28453:(e,n,l)=>{l.d(n,{R:()=>t,x:()=>o});var r=l(96540);const d={},s=r.createContext(d);function t(e){const n=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(d):e.components||d:t(e.components),r.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/5e95c892.099c94b2.js b/assets/js/5e95c892.099c94b2.js new file mode 100644 index 00000000..f28ff09d --- /dev/null +++ b/assets/js/5e95c892.099c94b2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9647],{7121:(e,s,r)=>{r.r(s),r.d(s,{default:()=>l});r(96540);var c=r(34164),u=r(45500),a=r(17559),d=r(22831),n=r(36882),t=r(74848);function l(e){return(0,t.jsx)(u.e3,{className:(0,c.A)(a.G.wrapper.docsPages),children:(0,t.jsx)(n.A,{children:(0,d.v)(e.route.routes)})})}}}]); \ No newline at end of file diff --git a/assets/js/606e906f.b8367cb0.js b/assets/js/606e906f.b8367cb0.js new file mode 100644 index 00000000..e2364679 --- /dev/null +++ b/assets/js/606e906f.b8367cb0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9405],{72158:(e,i,n)=>{n.r(i),n.d(i,{assets:()=>l,contentTitle:()=>r,default:()=>h,frontMatter:()=>a,metadata:()=>s,toc:()=>d});var s=n(97809),t=n(74848),o=n(28453);const a={slug:"release-3.8",title:"Critical Update + HTML Helpers Release (June-2024, V-3.8) is now Live",description:"Phoenix Code 3.8 fixes crashes on M1 Macs and Linux, adds HTML drag-and-drop editing, and improves live preview stability.",authors:["arun","charly","phoenixBot"],tags:["Live Preview","Live Code Hints","Windows","Linux","Mac","Release"]},r=void 0,l={authorsImageUrls:[void 0,void 0,void 0]},d=[{value:"HTML Validation",id:"html-validation",level:4},{value:"Drag and Drop Files and Folders in Desktop Apps - Experimental",id:"drag-and-drop-files-and-folders-in-desktop-apps---experimental",level:4},{value:"ESLint Support",id:"eslint-support",level:4},{value:"UX Improvements",id:"ux-improvements",level:4},{value:"A Request from the Phoenix Team:",id:"a-request-from-the-phoenix-team",level:2}];function c(e){const i={a:"a",blockquote:"blockquote",code:"code",h2:"h2",h4:"h4",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,o.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(i.p,{children:["June release(3.8) of Phoenix Code is now available for download at\n",(0,t.jsx)(i.a,{href:"https://phcode.io",children:"phcode.io"}),"."]}),"\n",(0,t.jsx)(i.p,{children:"This update addresses a critical issue where Phoenix Code crashes in M1 Macs\nat app start after a recent macOS update. Also fixes app start issues in some\nnewer Linux distributions with latest webkitGTK."}),"\n",(0,t.jsxs)(i.p,{children:["This month's theme is all about ",(0,t.jsx)(i.code,{children:"HTML assistance"}),", ",(0,t.jsx)(i.code,{children:"Drag and Drop"})," and\n",(0,t.jsx)(i.code,{children:"ESLint"}),". We've also addressed numerous feature requests and bug reports, along\nwith improving app UX and stability."]}),"\n",(0,t.jsx)(i.h4,{id:"html-validation",children:"HTML Validation"}),"\n",(0,t.jsxs)(i.p,{children:["We have added HTML Validator to help you find errors like duplicate IDs,\nunrecognized tags, and more. ",(0,t.jsx)(i.a,{href:"https://docs.phcode.dev/docs/Features/Problems%20Panel/html-lint/",children:"Read more here."})]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{src:"https://github.com/phcode-dev/phoenix/assets/5336369/5bc4a1cc-2429-477c-83ca-91f19dcc0b0f",alt:"HTML validate"})}),"\n",(0,t.jsx)(i.h4,{id:"drag-and-drop-files-and-folders-in-desktop-apps---experimental",children:"Drag and Drop Files and Folders in Desktop Apps - Experimental"}),"\n",(0,t.jsx)(i.p,{children:"Drag files from Explorer (Windows) or Finder (Mac) and drop them into Phoenix\nCode to open individual files. Drop a folder to open it as a project."}),"\n",(0,t.jsxs)(i.blockquote,{children:["\n",(0,t.jsxs)(i.p,{children:["Note: This feature is currently disabled on Linux due to UI issues in some\nLinux distributions. To enable it, select menu\n",(0,t.jsx)(i.code,{children:"Debug -> Experimental Features -> Drag And Drop Files."})]}),"\n"]}),"\n",(0,t.jsxs)(i.blockquote,{children:["\n",(0,t.jsx)(i.p,{children:"This feature is not yet available in the browser version @ phcode.dev"}),"\n"]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{src:"https://github.com/phcode-dev/phoenix/assets/5336369/ddd96ff7-bc99-46a6-a62d-6f6f5b78438b",alt:"drag and drop"})}),"\n",(0,t.jsx)(i.h4,{id:"eslint-support",children:"ESLint Support"}),"\n",(0,t.jsxs)(i.p,{children:["All new and simplified ESLint experience that displays all ESLint errors in a\nfile. Fix one or all errors with a single click. To enable, open a project that\nuses ESLint in Phoenix Code. ",(0,t.jsx)(i.a,{href:"https://docs.phcode.dev/docs/Features/Problems%20Panel/ESLint/",children:"Read more here."})]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{src:"https://github.com/phcode-dev/phoenix/assets/5336369/eb00691a-a0b4-4c1a-9209-d78fc7db764d",alt:"image"})}),"\n",(0,t.jsx)(i.h4,{id:"ux-improvements",children:"UX Improvements"}),"\n",(0,t.jsxs)(i.ul,{children:["\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.strong,{children:"Non-Intrusive Automatic Updates:"})," Updates are now installed in the\nbackground with no more distracting dialogs when an update is available."]}),"\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.strong,{children:"Case-Sensitive File Renaming:"})," Renaming files to a different case, such as\n",(0,t.jsx)(i.code,{children:"a.txt"})," to ",(0,t.jsx)(i.code,{children:"A.TXT"}),", is now supported."]}),"\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.code,{children:"File > New Project"})," is now renamed to ",(0,t.jsx)(i.code,{children:"Start Project"}),"."]}),"\n",(0,t.jsx)(i.li,{children:"Increased stability and app startup experience."}),"\n"]}),"\n",(0,t.jsx)(i.h2,{id:"a-request-from-the-phoenix-team",children:"A Request from the Phoenix Team:"}),"\n",(0,t.jsxs)(i.ul,{children:["\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.strong,{children:"Share your feedback:"})," ",(0,t.jsx)(i.a,{href:"https://github.com/orgs/phcode-dev/discussions",children:"https://github.com/orgs/phcode-dev/discussions"})]}),"\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.strong,{children:"Spread the word"})," about Phoenix to friends and colleagues."]}),"\n",(0,t.jsxs)(i.li,{children:[(0,t.jsxs)(i.a,{href:"https://github.com/sponsors/phcode-dev",children:[(0,t.jsx)(i.strong,{children:"Consider supporting us"})," on GitHub Sponsors"]}),".\nEvery contribution helps us to keep improving Phoenix Code."]}),"\n"]}),"\n",(0,t.jsx)(i.p,{children:"With gratitude,"}),"\n",(0,t.jsx)(i.p,{children:"The Phoenix Team"})]})}function h(e={}){const{wrapper:i}={...(0,o.R)(),...e.components};return i?(0,t.jsx)(i,{...e,children:(0,t.jsx)(c,{...e})}):c(e)}},28453:(e,i,n)=>{n.d(i,{R:()=>a,x:()=>r});var s=n(96540);const t={},o=s.createContext(t);function a(e){const i=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function r(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:a(e.components),s.createElement(o.Provider,{value:i},e.children)}},97809:e=>{e.exports=JSON.parse('{"permalink":"/blog/release-3.8","editUrl":"https://github.com/phcode-dev/docs/blob/main/blog/2024-06-27-Release-3.8/index.md","source":"@site/blog/2024-06-27-Release-3.8/index.md","title":"Critical Update + HTML Helpers Release (June-2024, V-3.8) is now Live","description":"Phoenix Code 3.8 fixes crashes on M1 Macs and Linux, adds HTML drag-and-drop editing, and improves live preview stability.","date":"2024-06-27T00:00:00.000Z","tags":[{"inline":true,"label":"Live Preview","permalink":"/blog/tags/live-preview"},{"inline":true,"label":"Live Code Hints","permalink":"/blog/tags/live-code-hints"},{"inline":true,"label":"Windows","permalink":"/blog/tags/windows"},{"inline":true,"label":"Linux","permalink":"/blog/tags/linux"},{"inline":true,"label":"Mac","permalink":"/blog/tags/mac"},{"inline":true,"label":"Release","permalink":"/blog/tags/release"}],"readingTime":1.89,"hasTruncateMarker":false,"authors":[{"name":"Arun Bose","title":"Co-Founder, Phoenix Code","url":"https://github.com/abose","imageURL":"https://github.com/abose.png","key":"arun","page":null},{"name":"Charly P Abraham","title":"Co-Founder, Phoenix Code","url":"https://github.com/charlypa","imageURL":"https://github.com/charlypa.png","key":"charly","page":null},{"name":"Phoenix Code Bot","title":"Our little elf who keeps the whole place together","url":"https://github.com/phoenixide","imageURL":"https://github.com/phoenixide.png","key":"phoenixBot","page":null}],"frontMatter":{"slug":"release-3.8","title":"Critical Update + HTML Helpers Release (June-2024, V-3.8) is now Live","description":"Phoenix Code 3.8 fixes crashes on M1 Macs and Linux, adds HTML drag-and-drop editing, and improves live preview stability.","authors":["arun","charly","phoenixBot"],"tags":["Live Preview","Live Code Hints","Windows","Linux","Mac","Release"]},"unlisted":false,"prevItem":{"title":"HTML Workflows and stability Release (September-2024, V-3.9) is now Live","permalink":"/blog/release-3.9"},"nextItem":{"title":"Little Things Release (May-2024, V-3.7) is now Live","permalink":"/blog/release-3.7"}}')}}]); \ No newline at end of file diff --git a/assets/js/617.88cc5a8b.js b/assets/js/617.88cc5a8b.js new file mode 100644 index 00000000..b33ecd21 --- /dev/null +++ b/assets/js/617.88cc5a8b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[617],{50617:(e,s,c)=>{c.d(s,{createPieServices:()=>a.f});var a=c(69150);c(87960)}}]); \ No newline at end of file diff --git a/assets/js/621db11d.b5758de5.js b/assets/js/621db11d.b5758de5.js new file mode 100644 index 00000000..8f8b88ee --- /dev/null +++ b/assets/js/621db11d.b5758de5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4212],{13250:(t,s,e)=>{e.r(s),e.d(s,{default:()=>m});e(96540);var a=e(34164),o=e(45500),r=e(17559),u=e(96461),l=e(28027),n=e(41463),i=e(51107),c=e(39907);const h={authorListItem:"authorListItem_n3yI"};var g=e(74848);function p({author:t}){return(0,g.jsx)("li",{className:h.authorListItem,children:(0,g.jsx)(c.A,{as:"h2",author:t,count:t.count})})}function d({authors:t}){return(0,g.jsx)("section",{className:(0,a.A)("margin-vert--lg",h.authorsListSection),children:(0,g.jsx)("ul",{children:t.map((t=>(0,g.jsx)(p,{author:t},t.key)))})})}function m({authors:t,sidebar:s}){const e=(0,u.uz)();return(0,g.jsxs)(o.e3,{className:(0,a.A)(r.G.wrapper.blogPages,r.G.page.blogAuthorsListPage),children:[(0,g.jsx)(o.be,{title:e}),(0,g.jsx)(n.A,{tag:"blog_authors_list"}),(0,g.jsxs)(l.A,{sidebar:s,children:[(0,g.jsx)(i.A,{as:"h1",children:e}),(0,g.jsx)(d,{authors:t})]})]})}},96461:(t,s,e)=>{e.d(s,{ZD:()=>u,uz:()=>l});e(96540);var a=e(21312),o=e(53465);e(74848);function r(){const{selectMessage:t}=(0,o.W)();return s=>t(s,(0,a.T)({id:"theme.blog.post.plurals",description:'Pluralized label for "{count} posts". Use as much plural forms (separated by "|") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)',message:"One post|{count} posts"},{count:s}))}function u(t){const s=r();return(0,a.T)({id:"theme.blog.tagTitle",description:"The title of the page for a blog tag",message:'{nPosts} tagged with "{tagName}"'},{nPosts:s(t.count),tagName:t.label})}const l=()=>(0,a.T)({id:"theme.blog.authorsList.pageTitle",message:"Authors",description:"The title of the authors page"})}}]); \ No newline at end of file diff --git a/assets/js/6241.db748413.js b/assets/js/6241.db748413.js new file mode 100644 index 00000000..4341ab77 --- /dev/null +++ b/assets/js/6241.db748413.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6241],{52501:(t,e,n)=>{n.d(e,{o:()=>i});var i=(0,n(40797).K2)((()=>"\n /* Font Awesome icon styling - consolidated */\n .label-icon {\n display: inline-block;\n height: 1em;\n overflow: visible;\n vertical-align: -0.125em;\n }\n \n .node .label-icon path {\n fill: currentColor;\n stroke: revert;\n stroke-width: revert;\n }\n"),"getIconStyles")},16241:(t,e,n)=>{n.d(e,{diagram:()=>I});var i=n(73590),s=n(52501),r=n(73981),o=n(5894),a=(n(63245),n(32387),n(30092),n(13226),n(67633)),c=n(40797),l=n(3219),h=n(78041),u=n(75263),g=function(){var t=(0,c.K2)((function(t,e,n,i){for(n=n||{},i=t.length;i--;n[t[i]]=e);return n}),"o"),e=[1,4],n=[1,13],i=[1,12],s=[1,15],r=[1,16],o=[1,20],a=[1,19],l=[6,7,8],h=[1,26],u=[1,24],g=[1,25],d=[6,7,11],p=[1,31],y=[6,7,11,24],f=[1,6,13,16,17,20,23],m=[1,35],b=[1,36],_=[1,6,7,11,13,16,17,20,23],k=[1,38],E={trace:(0,c.K2)((function(){}),"trace"),yy:{},symbols_:{error:2,start:3,mindMap:4,spaceLines:5,SPACELINE:6,NL:7,KANBAN:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,node:14,shapeData:15,ICON:16,CLASS:17,nodeWithId:18,nodeWithoutId:19,NODE_DSTART:20,NODE_DESCR:21,NODE_DEND:22,NODE_ID:23,SHAPE_DATA:24,$accept:0,$end:1},terminals_:{2:"error",6:"SPACELINE",7:"NL",8:"KANBAN",11:"EOF",13:"SPACELIST",16:"ICON",17:"CLASS",20:"NODE_DSTART",21:"NODE_DESCR",22:"NODE_DEND",23:"NODE_ID",24:"SHAPE_DATA"},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,3],[12,2],[12,2],[12,2],[12,1],[12,2],[12,1],[12,1],[12,1],[12,1],[14,1],[14,1],[19,3],[18,1],[18,4],[15,2],[15,1]],performAction:(0,c.K2)((function(t,e,n,i,s,r,o){var a=r.length-1;switch(s){case 6:case 7:return i;case 8:i.getLogger().trace("Stop NL ");break;case 9:i.getLogger().trace("Stop EOF ");break;case 11:i.getLogger().trace("Stop NL2 ");break;case 12:i.getLogger().trace("Stop EOF2 ");break;case 15:i.getLogger().info("Node: ",r[a-1].id),i.addNode(r[a-2].length,r[a-1].id,r[a-1].descr,r[a-1].type,r[a]);break;case 16:i.getLogger().info("Node: ",r[a].id),i.addNode(r[a-1].length,r[a].id,r[a].descr,r[a].type);break;case 17:i.getLogger().trace("Icon: ",r[a]),i.decorateNode({icon:r[a]});break;case 18:case 23:i.decorateNode({class:r[a]});break;case 19:i.getLogger().trace("SPACELIST");break;case 20:i.getLogger().trace("Node: ",r[a-1].id),i.addNode(0,r[a-1].id,r[a-1].descr,r[a-1].type,r[a]);break;case 21:i.getLogger().trace("Node: ",r[a].id),i.addNode(0,r[a].id,r[a].descr,r[a].type);break;case 22:i.decorateNode({icon:r[a]});break;case 27:i.getLogger().trace("node found ..",r[a-2]),this.$={id:r[a-1],descr:r[a-1],type:i.getType(r[a-2],r[a])};break;case 28:this.$={id:r[a],descr:r[a],type:0};break;case 29:i.getLogger().trace("node found ..",r[a-3]),this.$={id:r[a-3],descr:r[a-1],type:i.getType(r[a-2],r[a])};break;case 30:this.$=r[a-1]+r[a];break;case 31:this.$=r[a]}}),"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],8:e},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:e},{6:n,7:[1,10],9:9,12:11,13:i,14:14,16:s,17:r,18:17,19:18,20:o,23:a},t(l,[2,3]),{1:[2,2]},t(l,[2,4]),t(l,[2,5]),{1:[2,6],6:n,12:21,13:i,14:14,16:s,17:r,18:17,19:18,20:o,23:a},{6:n,9:22,12:11,13:i,14:14,16:s,17:r,18:17,19:18,20:o,23:a},{6:h,7:u,10:23,11:g},t(d,[2,24],{18:17,19:18,14:27,16:[1,28],17:[1,29],20:o,23:a}),t(d,[2,19]),t(d,[2,21],{15:30,24:p}),t(d,[2,22]),t(d,[2,23]),t(y,[2,25]),t(y,[2,26]),t(y,[2,28],{20:[1,32]}),{21:[1,33]},{6:h,7:u,10:34,11:g},{1:[2,7],6:n,12:21,13:i,14:14,16:s,17:r,18:17,19:18,20:o,23:a},t(f,[2,14],{7:m,11:b}),t(_,[2,8]),t(_,[2,9]),t(_,[2,10]),t(d,[2,16],{15:37,24:p}),t(d,[2,17]),t(d,[2,18]),t(d,[2,20],{24:k}),t(y,[2,31]),{21:[1,39]},{22:[1,40]},t(f,[2,13],{7:m,11:b}),t(_,[2,11]),t(_,[2,12]),t(d,[2,15],{24:k}),t(y,[2,30]),{22:[1,41]},t(y,[2,27]),t(y,[2,29])],defaultActions:{2:[2,1],6:[2,2]},parseError:(0,c.K2)((function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)}),"parseError"),parse:(0,c.K2)((function(t){var e=this,n=[0],i=[],s=[null],r=[],o=this.table,a="",l=0,h=0,u=0,g=r.slice.call(arguments,1),d=Object.create(this.lexer),p={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(p.yy[y]=this.yy[y]);d.setInput(t,p.yy),p.yy.lexer=d,p.yy.parser=this,void 0===d.yylloc&&(d.yylloc={});var f=d.yylloc;r.push(f);var m=d.options&&d.options.ranges;function b(){var t;return"number"!=typeof(t=i.pop()||d.lex()||1)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,c.K2)((function(t){n.length=n.length-2*t,s.length=s.length-t,r.length=r.length-t}),"popStack"),(0,c.K2)(b,"lex");for(var _,k,E,S,N,x,D,L,I,v={};;){if(E=n[n.length-1],this.defaultActions[E]?S=this.defaultActions[E]:(null==_&&(_=b()),S=o[E]&&o[E][_]),void 0===S||!S.length||!S[0]){var C="";for(x in I=[],o[E])this.terminals_[x]&&x>2&&I.push("'"+this.terminals_[x]+"'");C=d.showPosition?"Parse error on line "+(l+1)+":\n"+d.showPosition()+"\nExpecting "+I.join(", ")+", got '"+(this.terminals_[_]||_)+"'":"Parse error on line "+(l+1)+": Unexpected "+(1==_?"end of input":"'"+(this.terminals_[_]||_)+"'"),this.parseError(C,{text:d.match,token:this.terminals_[_]||_,line:d.yylineno,loc:f,expected:I})}if(S[0]instanceof Array&&S.length>1)throw new Error("Parse Error: multiple actions possible at state: "+E+", token: "+_);switch(S[0]){case 1:n.push(_),s.push(d.yytext),r.push(d.yylloc),n.push(S[1]),_=null,k?(_=k,k=null):(h=d.yyleng,a=d.yytext,l=d.yylineno,f=d.yylloc,u>0&&u--);break;case 2:if(D=this.productions_[S[1]][1],v.$=s[s.length-D],v._$={first_line:r[r.length-(D||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-(D||1)].first_column,last_column:r[r.length-1].last_column},m&&(v._$.range=[r[r.length-(D||1)].range[0],r[r.length-1].range[1]]),void 0!==(N=this.performAction.apply(v,[a,h,l,p.yy,S[1],s,r].concat(g))))return N;D&&(n=n.slice(0,-1*D*2),s=s.slice(0,-1*D),r=r.slice(0,-1*D)),n.push(this.productions_[S[1]][0]),s.push(v.$),r.push(v._$),L=o[n[n.length-2]][n[n.length-1]],n.push(L);break;case 3:return!0}}return!0}),"parse")},S=function(){return{EOF:1,parseError:(0,c.K2)((function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)}),"parseError"),setInput:(0,c.K2)((function(t,e){return this.yy=e||this.yy||{},this._input=t,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:(0,c.K2)((function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t}),"input"),unput:(0,c.K2)((function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=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),n.length-1&&(this.yylineno-=n.length-1);var s=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:n?(n.length===i.length?this.yylloc.first_column:0)+i[i.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[s[0],s[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this}),"unput"),more:(0,c.K2)((function(){return this._more=!0,this}),"more"),reject:(0,c.K2)((function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):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).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})}),"reject"),less:(0,c.K2)((function(t){this.unput(this.match.slice(t))}),"less"),pastInput:(0,c.K2)((function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")}),"pastInput"),upcomingInput:(0,c.K2)((function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")}),"upcomingInput"),showPosition:(0,c.K2)((function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"}),"showPosition"),test_match:(0,c.K2)((function(t,e){var n,i,s;if(this.options.backtrack_lexer&&(s={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&&(s.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,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(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var r in s)this[r]=s[r];return!1}return!1}),"test_match"),next:(0,c.K2)((function(){if(this.done)return this.EOF;var t,e,n,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var s=this._currentRules(),r=0;re[0].length)){if(e=n,i=r,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,s[r])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,s[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})}),"next"),lex:(0,c.K2)((function(){var t=this.next();return t||this.lex()}),"lex"),begin:(0,c.K2)((function(t){this.conditionStack.push(t)}),"begin"),popState:(0,c.K2)((function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]}),"popState"),_currentRules:(0,c.K2)((function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules}),"_currentRules"),topState:(0,c.K2)((function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"}),"topState"),pushState:(0,c.K2)((function(t){this.begin(t)}),"pushState"),stateStackSize:(0,c.K2)((function(){return this.conditionStack.length}),"stateStackSize"),options:{"case-insensitive":!0},performAction:(0,c.K2)((function(t,e,n,i){switch(n){case 0:return this.pushState("shapeData"),e.yytext="",24;case 1:return this.pushState("shapeDataStr"),24;case 2:return this.popState(),24;case 3:const n=/\n\s*/g;return e.yytext=e.yytext.replace(n,"
    "),24;case 4:return 24;case 5:case 10:case 29:case 32:this.popState();break;case 6:return t.getLogger().trace("Found comment",e.yytext),6;case 7:return 8;case 8:this.begin("CLASS");break;case 9:return this.popState(),17;case 11:t.getLogger().trace("Begin icon"),this.begin("ICON");break;case 12:return t.getLogger().trace("SPACELINE"),6;case 13:return 7;case 14:return 16;case 15:t.getLogger().trace("end icon"),this.popState();break;case 16:return t.getLogger().trace("Exploding node"),this.begin("NODE"),20;case 17:return t.getLogger().trace("Cloud"),this.begin("NODE"),20;case 18:return t.getLogger().trace("Explosion Bang"),this.begin("NODE"),20;case 19:return t.getLogger().trace("Cloud Bang"),this.begin("NODE"),20;case 20:case 21:case 22:case 23:return this.begin("NODE"),20;case 24:return 13;case 25:return 23;case 26:return 11;case 27:this.begin("NSTR2");break;case 28:return"NODE_DESCR";case 30:t.getLogger().trace("Starting NSTR"),this.begin("NSTR");break;case 31:return t.getLogger().trace("description:",e.yytext),"NODE_DESCR";case 33:return this.popState(),t.getLogger().trace("node end ))"),"NODE_DEND";case 34:return this.popState(),t.getLogger().trace("node end )"),"NODE_DEND";case 35:return this.popState(),t.getLogger().trace("node end ...",e.yytext),"NODE_DEND";case 36:case 39:case 40:return this.popState(),t.getLogger().trace("node end (("),"NODE_DEND";case 37:case 38:return this.popState(),t.getLogger().trace("node end (-"),"NODE_DEND";case 41:case 42:return t.getLogger().trace("Long description:",e.yytext),21}}),"anonymous"),rules:[/^(?:@\{)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^\"]+)/i,/^(?:[^}^"]+)/i,/^(?:\})/i,/^(?:\s*%%.*)/i,/^(?:kanban\b)/i,/^(?::::)/i,/^(?:.+)/i,/^(?:\n)/i,/^(?:::icon\()/i,/^(?:[\s]+[\n])/i,/^(?:[\n]+)/i,/^(?:[^\)]+)/i,/^(?:\))/i,/^(?:-\))/i,/^(?:\(-)/i,/^(?:\)\))/i,/^(?:\))/i,/^(?:\(\()/i,/^(?:\{\{)/i,/^(?:\()/i,/^(?:\[)/i,/^(?:[\s]+)/i,/^(?:[^\(\[\n\)\{\}@]+)/i,/^(?:$)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:[^"]+)/i,/^(?:["])/i,/^(?:[\)]\))/i,/^(?:[\)])/i,/^(?:[\]])/i,/^(?:\}\})/i,/^(?:\(-)/i,/^(?:-\))/i,/^(?:\(\()/i,/^(?:\()/i,/^(?:[^\)\]\(\}]+)/i,/^(?:.+(?!\(\())/i],conditions:{shapeDataEndBracket:{rules:[],inclusive:!1},shapeDataStr:{rules:[2,3],inclusive:!1},shapeData:{rules:[1,4,5],inclusive:!1},CLASS:{rules:[9,10],inclusive:!1},ICON:{rules:[14,15],inclusive:!1},NSTR2:{rules:[28,29],inclusive:!1},NSTR:{rules:[31,32],inclusive:!1},NODE:{rules:[27,30,33,34,35,36,37,38,39,40,41,42],inclusive:!1},INITIAL:{rules:[0,6,7,8,11,12,13,16,17,18,19,20,21,22,23,24,25,26],inclusive:!0}}}}();function N(){this.yy={}}return E.lexer=S,(0,c.K2)(N,"Parser"),N.prototype=E,E.Parser=N,new N}();g.parser=g;var d=g,p=[],y=[],f=0,m={},b=(0,c.K2)((()=>{p=[],y=[],f=0,m={}}),"clear"),_=(0,c.K2)((t=>{if(0===p.length)return null;const e=p[0].level;let n=null;for(let i=p.length-1;i>=0;i--)if(p[i].level!==e||n||(n=p[i]),p[i].levelt.parentId===i.id));for(const r of s){const e={id:r.id,parentId:i.id,label:(0,a.jZ)(r.label??"",n),isGroup:!1,ticket:r?.ticket,priority:r?.priority,assigned:r?.assigned,icon:r?.icon,shape:"kanbanItem",level:r.level,rx:5,ry:5,cssStyles:["text-align: left"]};t.push(e)}}return{nodes:t,edges:[],other:{},config:(0,a.D7)()}}),"getData"),S=(0,c.K2)(((t,e,n,i,s)=>{const o=(0,a.D7)();let c=o.mindmap?.padding??a.UI.mindmap.padding;switch(i){case N.ROUNDED_RECT:case N.RECT:case N.HEXAGON:c*=2}const l={id:(0,a.jZ)(e,o)||"kbn"+f++,level:t,label:(0,a.jZ)(n,o),width:o.mindmap?.maxNodeWidth??a.UI.mindmap.maxNodeWidth,padding:c,isGroup:!1};if(void 0!==s){let t;t=s.includes("\n")?s+"\n":"{\n"+s+"\n}";const e=(0,r.H)(t,{schema:r.r});if(e.shape&&(e.shape!==e.shape.toLowerCase()||e.shape.includes("_")))throw new Error(`No such shape: ${e.shape}. Shape names should be lowercase.`);e?.shape&&"kanbanItem"===e.shape&&(l.shape=e?.shape),e?.label&&(l.label=e?.label),e?.icon&&(l.icon=e?.icon.toString()),e?.assigned&&(l.assigned=e?.assigned.toString()),e?.ticket&&(l.ticket=e?.ticket.toString()),e?.priority&&(l.priority=e?.priority)}const h=_(t);h?l.parentId=h.id||"kbn"+f++:y.push(l),p.push(l)}),"addNode"),N={DEFAULT:0,NO_BORDER:0,ROUNDED_RECT:1,RECT:2,CIRCLE:3,CLOUD:4,BANG:5,HEXAGON:6},x={clear:b,addNode:S,getSections:k,getData:E,nodeType:N,getType:(0,c.K2)(((t,e)=>{switch(c.Rm.debug("In get type",t,e),t){case"[":return N.RECT;case"(":return")"===e?N.ROUNDED_RECT:N.CLOUD;case"((":return N.CIRCLE;case")":return N.CLOUD;case"))":return N.BANG;case"{{":return N.HEXAGON;default:return N.DEFAULT}}),"getType"),setElementForId:(0,c.K2)(((t,e)=>{m[t]=e}),"setElementForId"),decorateNode:(0,c.K2)((t=>{if(!t)return;const e=(0,a.D7)(),n=p[p.length-1];t.icon&&(n.icon=(0,a.jZ)(t.icon,e)),t.class&&(n.cssClasses=(0,a.jZ)(t.class,e))}),"decorateNode"),type2Str:(0,c.K2)((t=>{switch(t){case N.DEFAULT:return"no-border";case N.RECT:return"rect";case N.ROUNDED_RECT:return"rounded-rect";case N.CIRCLE:return"circle";case N.CLOUD:return"cloud";case N.BANG:return"bang";case N.HEXAGON:return"hexgon";default:return"no-border"}}),"type2Str"),getLogger:(0,c.K2)((()=>c.Rm),"getLogger"),getElementById:(0,c.K2)((t=>m[t]),"getElementById")},D={draw:(0,c.K2)((async(t,e,n,s)=>{c.Rm.debug("Rendering kanban diagram\n"+t);const r=s.db.getData(),l=(0,a.D7)();l.htmlLabels=!1;const h=(0,i.D)(e),u=h.append("g");u.attr("class","sections");const g=h.append("g");g.attr("class","items");const d=r.nodes.filter((t=>t.isGroup));let p=0;const y=[];let f=25;for(const i of d){const t=l?.kanban?.sectionWidth||200;p+=1,i.x=t*p+10*(p-1)/2,i.width=t,i.y=0,i.height=3*t,i.rx=5,i.ry=5,i.cssClasses=i.cssClasses+" section-"+p;const e=await(0,o.U)(u,i);f=Math.max(f,e?.labelBBox?.height),y.push(e)}let m=0;for(const i of d){const t=y[m];m+=1;const e=l?.kanban?.sectionWidth||200,n=3*-e/2+f;let s=n;const a=r.nodes.filter((t=>t.parentId===i.id));for(const r of a){if(r.isGroup)throw new Error("Groups within groups are not allowed in Kanban diagrams");r.x=i.x,r.width=e-15;const t=(await(0,o.on)(g,r,{config:l})).node().getBBox();r.y=s+t.height/2,await(0,o.U_)(r),s=r.y+t.height/2+5}const c=t.cluster.select("rect"),h=Math.max(s-n+30,50)+(f-25);c.attr("height",h)}(0,a.ot)(void 0,h,l.mindmap?.padding??a.UI.kanban.padding,l.mindmap?.useMaxWidth??a.UI.kanban.useMaxWidth)}),"draw")},L=(0,c.K2)((t=>{let e="";for(let i=0;it.darkMode?(0,u.A)(e,n):(0,h.A)(e,n)),"adjuster");for(let i=0;i`\n .edge {\n stroke-width: 3;\n }\n ${L(t)}\n .section-root rect, .section-root path, .section-root circle, .section-root polygon {\n fill: ${t.git0};\n }\n .section-root text {\n fill: ${t.gitBranchLabel0};\n }\n .icon-container {\n height:100%;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n .edge {\n fill: none;\n }\n .cluster-label, .label {\n color: ${t.textColor};\n fill: ${t.textColor};\n }\n .kanban-label {\n dy: 1em;\n alignment-baseline: middle;\n text-anchor: middle;\n dominant-baseline: middle;\n text-align: center;\n }\n ${(0,s.o)()}\n`),"getStyles")}}}]); \ No newline at end of file diff --git a/assets/js/6264dbfe.82c6e540.js b/assets/js/6264dbfe.82c6e540.js new file mode 100644 index 00000000..61fc9f73 --- /dev/null +++ b/assets/js/6264dbfe.82c6e540.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7148],{51111:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>l,default:()=>x,frontMatter:()=>d,metadata:()=>i,toc:()=>a});const i=JSON.parse('{"id":"Live Preview/markdown-editor","title":"Markdown Editor","description":"When you open a Markdown file (.md), Live Preview shows a nicely formatted version of your document \u2014 with syntax-highlighted code blocks, rendered Mermaid diagrams, and more. As you type in the editor, the preview updates in real time. With Phoenix Pro, you can go a step further and edit your Markdown directly in the preview with a full rich text editor.","source":"@site/docs/02-Live Preview/06-markdown-editor.md","sourceDirName":"02-Live Preview","slug":"/Pro Features/markdown-editor","permalink":"/docs/Pro Features/markdown-editor","draft":false,"unlisted":false,"editUrl":"https://github.com/phcode-dev/docs/blob/main/docs/02-Live Preview/06-markdown-editor.md","tags":[],"version":"current","sidebarPosition":6,"frontMatter":{"title":"Markdown Editor","slug":"/Pro Features/markdown-editor"},"sidebar":"tutorialSidebar","previous":{"title":"Image Gallery","permalink":"/docs/Pro Features/image-gallery"},"next":{"title":"PHP Live Preview Setup","permalink":"/docs/Features/Live Preview/php-live-preview"}}');var r=t(74848),s=t(28453),o=(t(96540),t(56399));const d={title:"Markdown Editor",slug:"/Pro Features/markdown-editor"},l=void 0,c={},a=[{value:"Scroll and Cursor Sync",id:"scroll-and-cursor-sync",level:2},{value:"Theme, Search, and Print",id:"theme-search-and-print",level:2},{value:"Editing Markdown (Pro)",id:"editing-markdown-pro",level:2},{value:"What you can do",id:"what-you-can-do",level:3},{value:"Enabling Edit Mode",id:"enabling-edit-mode",level:3},{value:"Text Formatting",id:"text-formatting",level:3},{value:"Blocks and Lists",id:"blocks-and-lists",level:3},{value:"Slash Menu",id:"slash-menu",level:3},{value:"Markdown Shortcuts",id:"markdown-shortcuts",level:4},{value:"Table Editing",id:"table-editing",level:3},{value:"Images",id:"images",level:3},{value:"Links",id:"links",level:3},{value:"Keyboard Shortcuts",id:"keyboard-shortcuts",level:3}];function h(e){const n={a:"a",admonition:"admonition",blockquote:"blockquote",code:"code",em:"em",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(n.p,{children:["When you open a Markdown file (",(0,r.jsx)(n.code,{children:".md"}),"), ",(0,r.jsx)(n.strong,{children:"Live Preview"})," shows a nicely formatted version of your document \u2014 with syntax-highlighted code blocks, rendered Mermaid diagrams, and more. As you type in the editor, the preview updates in real time. With ",(0,r.jsx)(n.strong,{children:"Phoenix Pro"}),", you can go a step further and edit your Markdown directly in the preview with a full rich text editor."]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.img,{alt:"Markdown Live Preview",src:t(81370).A+"",title:"A Markdown file open in the editor with its rendered Live Preview alongside",width:"1920",height:"1080"})}),"\n",(0,r.jsx)(n.h2,{id:"scroll-and-cursor-sync",children:"Scroll and Cursor Sync"}),"\n",(0,r.jsx)(n.p,{children:"The editor and preview stay in sync as you work. When you scroll or move your cursor in the editor, the preview follows along to show the same section. Clicking a line in the preview scrolls the editor to the matching line and briefly highlights it, so you can see where you landed. Scrolling in either view keeps the other in step."}),"\n",(0,r.jsxs)(n.p,{children:["You can turn sync on or off using the ",(0,r.jsx)(n.strong,{children:"cursor sync toggle"})," ",(0,r.jsx)(n.em,{children:"(link icon)"})," in the preview toolbar."]}),"\n",(0,r.jsx)(o.A,{src:"https://docs-images.phcode.dev/videos/markdown/toggle-cursor-sync.mp4"}),"\n",(0,r.jsx)(n.h2,{id:"theme-search-and-print",children:"Theme, Search, and Print"}),"\n",(0,r.jsxs)(n.p,{children:["The preview toolbar also has a ",(0,r.jsx)(n.strong,{children:"theme toggle"})," ",(0,r.jsx)(n.em,{children:"(sun/moon icon)"})," to switch between light and dark themes, a ",(0,r.jsx)(n.strong,{children:"search"})," bar (",(0,r.jsx)(n.code,{children:"Ctrl/Cmd + F"}),") to find text in the document, and a ",(0,r.jsx)(n.strong,{children:"print"})," button."]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.img,{alt:"Theme toggle button in the markdown toolbar with tooltip",src:t(49503).A+"",title:"The theme toggle in the markdown toolbar",width:"1084",height:"126"})}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsx)(n.p,{children:"Print is not available on macOS desktop apps."}),"\n"]}),"\n",(0,r.jsx)(n.h2,{id:"editing-markdown-pro",children:"Editing Markdown (Pro)"}),"\n",(0,r.jsx)(n.admonition,{title:"Pro Feature",type:"info",children:(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.a,{href:"https://phcode.io/pricing",children:"Upgrade to Phoenix Code Pro"})," to access this feature."]})}),"\n",(0,r.jsxs)(n.p,{children:["With ",(0,r.jsx)(n.strong,{children:"Phoenix Pro"}),", you can go beyond just viewing. Edit your Markdown directly in the Live Preview with a full rich text editor \u2014 format text, build tables, drop in images, add links, use slash commands to insert blocks, and much more. Every change syncs back to your source code instantly."]}),"\n",(0,r.jsx)(o.A,{src:"https://docs-images.phcode.dev/website/videos/markdown-pro-dialog.mp4"}),"\n",(0,r.jsx)(n.h3,{id:"what-you-can-do",children:"What you can do"}),"\n",(0,r.jsxs)(n.p,{children:["Open any ",(0,r.jsx)(n.code,{children:".md"})," file and you get a beautiful WYSIWYG editor that stays perfectly in sync with the source."]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.a,{href:"#text-formatting",children:"Type the way you read"})})," \u2014 bold, headings, lists, blockquotes, and tables work like in any modern document editor."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.a,{href:"#slash-menu",children:"Slash menu"})})," (",(0,r.jsx)(n.code,{children:"/"}),") inserts blocks, images, tables, and more without remembering syntax."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.a,{href:"#table-editing",children:"Tables"})})," with right-click row/column controls and easy copy/paste."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.a,{href:"#images",children:"Drop or paste images"})})," straight into your document."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Find in document"})," with ",(0,r.jsx)(n.code,{children:"Ctrl+F"})," and ",(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.a,{href:"#theme-search-and-print",children:"print"})})," with a clean light theme."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.a,{href:"#theme-search-and-print",children:"Dark and light themes"})})," match the rest of the app."]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:(0,r.jsx)(n.a,{href:"#scroll-and-cursor-sync",children:"Side-by-side sync"})})," \u2014 your source view and rich view scroll, select, and edit together."]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"enabling-edit-mode",children:"Enabling Edit Mode"}),"\n",(0,r.jsxs)(n.p,{children:["To start editing, click the ",(0,r.jsx)(n.strong,{children:"Edit"})," button on the right side of the markdown toolbar. The toolbar expands to show formatting options, and you can start making changes right away."]}),"\n",(0,r.jsxs)(n.p,{children:["To go back to the read-only view, click ",(0,r.jsx)(n.strong,{children:"Reader"})," in the same place."]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.img,{alt:"Edit button in the markdown toolbar",src:t(44458).A+"",title:"The Edit button in the markdown toolbar",width:"1044",height:"315"})}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsxs)(n.p,{children:["By default, markdown files open in Edit mode for ",(0,r.jsx)(n.strong,{children:"Phoenix Code Pro"})," users."]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"text-formatting",children:"Text Formatting"}),"\n",(0,r.jsx)(n.p,{children:"Select the text you want to format and click a formatting button, or use the keyboard shortcut. If no text is selected, the formatting applies to the word at your cursor."}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Bold"})," (",(0,r.jsx)(n.code,{children:"Ctrl/Cmd + B"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Italic"})," (",(0,r.jsx)(n.code,{children:"Ctrl/Cmd + I"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Underline"})," (",(0,r.jsx)(n.code,{children:"Ctrl/Cmd + U"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Strikethrough"})," (",(0,r.jsx)(n.code,{children:"Ctrl/Cmd + Shift + X"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Inline Code"})," (",(0,r.jsx)(n.code,{children:"Ctrl/Cmd + E"}),")"]}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:["You can also select text and use the ",(0,r.jsx)(n.strong,{children:"floating format bar"})," that appears near your selection."]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.img,{alt:"Floating format bar above selected text",src:t(84282).A+"",title:"The floating format bar appears near your selection",width:"1096",height:"180"})}),"\n",(0,r.jsx)(n.h3,{id:"blocks-and-lists",children:"Blocks and Lists"}),"\n",(0,r.jsxs)(n.p,{children:["The toolbar lets you change the current block type using a ",(0,r.jsx)(n.strong,{children:"block type dropdown"})," (Paragraph, Heading 1 through Heading 5) and insert different types of content:"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Bullet list"}),", ",(0,r.jsx)(n.strong,{children:"Numbered list"}),", ",(0,r.jsx)(n.strong,{children:"Task list"})," (checklist with checkboxes)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Blockquote"}),", ",(0,r.jsx)(n.strong,{children:"Divider"})," (horizontal line)"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Code block"})," with an optional language picker"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Table"})," (see ",(0,r.jsx)(n.a,{href:"#table-editing",children:"Table Editing"}),")"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Mermaid diagram"})," with a syntax editor and live rendered preview"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.img,{alt:"Markdown toolbar with block type dropdown and block insertion buttons",src:t(98653).A+"",title:"The markdown toolbar in Edit mode",width:"1177",height:"85"})}),"\n",(0,r.jsx)(n.h3,{id:"slash-menu",children:"Slash Menu"}),"\n",(0,r.jsxs)(n.p,{children:["Type ",(0,r.jsx)(n.code,{children:"/"})," at the start of an empty line to open the ",(0,r.jsx)(n.strong,{children:"Slash Menu"}),". This gives you a quick way to insert any block type without reaching for the toolbar."]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.img,{alt:"Slash menu showing block type options",src:t(83354).A+"",title:"The Slash Menu with block type options",width:"961",height:"546"})}),"\n",(0,r.jsxs)(n.p,{children:["Start typing to filter the list. Use the arrow keys to navigate and press ",(0,r.jsx)(n.code,{children:"Enter"})," to insert."]}),"\n",(0,r.jsxs)(n.blockquote,{children:["\n",(0,r.jsx)(n.p,{children:"The Slash Menu shows your most-used items first."}),"\n"]}),"\n",(0,r.jsx)(n.h4,{id:"markdown-shortcuts",children:"Markdown Shortcuts"}),"\n",(0,r.jsx)(n.p,{children:"You can also use standard Markdown shortcuts as you type:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"# "})," through ",(0,r.jsx)(n.code,{children:"##### "})," for headings"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"- "})," or ",(0,r.jsx)(n.code,{children:"* "})," for bullet lists"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"1. "})," for numbered lists"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"- [ ] "})," for task lists"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"> "})," for blockquotes"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"```"})," for code blocks"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.code,{children:"---"})," for dividers"]}),"\n"]}),"\n",(0,r.jsx)(n.h3,{id:"table-editing",children:"Table Editing"}),"\n",(0,r.jsxs)(n.p,{children:["When you insert a table, you can edit it directly in the preview. Click any cell to start typing in it. Use ",(0,r.jsx)(n.code,{children:"Tab"})," to move to the next cell."]}),"\n",(0,r.jsx)(n.p,{children:"Right-click a cell to open a context menu with options to:"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsx)(n.li,{children:"Insert or delete rows"}),"\n",(0,r.jsx)(n.li,{children:"Insert or delete columns"}),"\n",(0,r.jsx)(n.li,{children:"Copy, cut, and paste rows or columns"}),"\n",(0,r.jsx)(n.li,{children:"Delete the entire table"}),"\n"]}),"\n",(0,r.jsxs)(n.p,{children:["You can also click the ",(0,r.jsx)(n.strong,{children:"+ New row"})," button below the table to add a row."]}),"\n",(0,r.jsx)(o.A,{src:"https://docs-images.phcode.dev/videos/markdown/markdown-editor-table.mp4"}),"\n",(0,r.jsx)(n.h3,{id:"images",children:"Images"}),"\n",(0,r.jsx)(n.p,{children:"Paste images into Markdown like you would in a document editor."}),"\n",(0,r.jsx)(n.p,{children:"Normally, adding images to Markdown means saving the image, uploading it somewhere, copying the URL, and then pasting that URL into your file. Phoenix Code removes that extra work."}),"\n",(0,r.jsx)(n.p,{children:"You can add images by pasting from your clipboard, uploading from your computer, or using an existing image URL."}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Paste from clipboard"})," \u2014 copy an image or screenshot and paste it directly into the editor"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"Upload from your computer"})," \u2014 pick an image file from your device"]}),"\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.strong,{children:"From a URL"})," \u2014 enter the image URL and alt text in a dialog"]}),"\n"]}),"\n",(0,r.jsx)(n.p,{children:"When you paste an image or upload one from your computer, Phoenix Code can upload it to the Phoenix CDN and insert the Markdown image link automatically. The first time you do this, Phoenix Code will ask for confirmation before using the CDN."}),"\n",(0,r.jsxs)(n.p,{children:["The ",(0,r.jsx)(n.strong,{children:"Upload from Computer"})," and ",(0,r.jsx)(n.strong,{children:"Image URL"})," options are available from the ",(0,r.jsx)(n.strong,{children:"Image"})," button in the toolbar or through the ",(0,r.jsx)(n.a,{href:"#slash-menu",children:"Slash Menu"}),". Clipboard images can be pasted directly into the editor using ",(0,r.jsx)(n.strong,{children:"Ctrl+V"})," or ",(0,r.jsx)(n.strong,{children:"Cmd+V"}),"."]}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.img,{alt:"Image button dropdown with Image URL and Upload from Computer options",src:t(94385).A+"",title:"The Image button dropdown",width:"956",height:"231"})}),"\n",(0,r.jsx)(n.p,{children:(0,r.jsx)(n.img,{src:"https://user-cdn.phcode.site/images/15f0c966-ed26-4c5c-a26e-886bacb305e7.png",alt:"Paste images"})}),"\n",(0,r.jsxs)(n.p,{children:["Click an image in the editor to see a popover with ",(0,r.jsx)(n.strong,{children:"Edit"})," and ",(0,r.jsx)(n.strong,{children:"Delete"})," buttons."]}),"\n",(0,r.jsx)(n.h3,{id:"links",children:"Links"}),"\n",(0,r.jsxs)(n.p,{children:["To add a link, select some text and click the ",(0,r.jsx)(n.strong,{children:"Link"})," button in the toolbar (or press ",(0,r.jsx)(n.code,{children:"Ctrl/Cmd + K"}),"). Enter the URL in the floating input that appears and press ",(0,r.jsx)(n.code,{children:"Enter"}),"."]}),"\n",(0,r.jsxs)(n.p,{children:["Click an existing link to see a popover showing the URL, with options to ",(0,r.jsx)(n.strong,{children:"Edit"})," or ",(0,r.jsx)(n.strong,{children:"Remove"})," the link."]}),"\n",(0,r.jsx)(o.A,{src:"https://docs-images.phcode.dev/videos/markdown/markdown-editor-links.mp4"}),"\n",(0,r.jsx)(n.h3,{id:"keyboard-shortcuts",children:"Keyboard Shortcuts"}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Action"}),(0,r.jsx)(n.th,{children:"Shortcut"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Bold"}),(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"Ctrl/Cmd + B"})})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Italic"}),(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"Ctrl/Cmd + I"})})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Underline"}),(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"Ctrl/Cmd + U"})})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Strikethrough"}),(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"Ctrl/Cmd + Shift + X"})})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Inline Code"}),(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"Ctrl/Cmd + E"})})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Link"}),(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"Ctrl/Cmd + K"})})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Undo"}),(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"Ctrl/Cmd + Z"})})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Redo"}),(0,r.jsxs)(n.td,{children:[(0,r.jsx)(n.code,{children:"Ctrl/Cmd + Y"})," or ",(0,r.jsx)(n.code,{children:"Ctrl/Cmd + Shift + Z"})]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Search"}),(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"Ctrl/Cmd + F"})})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"Select All"}),(0,r.jsx)(n.td,{children:(0,r.jsx)(n.code,{children:"Ctrl/Cmd + A"})})]})]})]})]})}function x(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},56399:(e,n,t)=>{t.d(n,{A:()=>s});var i=t(96540),r=t(74848);const s=({src:e,winLinuxTitle:n,macTitle:t})=>{const[s,o]=(0,i.useState)("");(0,i.useEffect)((()=>{navigator.platform.toLowerCase().includes("mac")?o(t):o(n)}),[n,t]);return(0,r.jsxs)("div",{style:{maxHeight:"68vh",width:"100%",display:"flex",justifyContent:"center",alignItems:"center",flexDirection:"column"},children:[(0,r.jsxs)("video",{style:{height:"90%",width:"100%"},controls:!0,autoPlay:!0,muted:!0,loop:!0,children:[(0,r.jsx)("source",{src:e,type:"video/mp4"}),"Your browser does not support the video tag."]}),(0,r.jsx)("div",{style:{width:"100%",textAlign:"center",fontSize:"1em",marginTop:"10px"},children:s})]})}},81370:(e,n,t)=>{t.d(n,{A:()=>i});const i=t.p+"assets/images/markdown-preview-61539cdd0c30736b4f8c7c5088b12912.png"},98653:(e,n,t)=>{t.d(n,{A:()=>i});const i=t.p+"assets/images/markdown-blocks-lists-05f6e56c1c32777650d6bac292ffdfcb.png"},44458:(e,n,t)=>{t.d(n,{A:()=>i});const i=t.p+"assets/images/markdown-edit-button-c7617e36423b479db1329cc9047b3b09.png"},84282:(e,n,t)=>{t.d(n,{A:()=>i});const i=t.p+"assets/images/markdown-format-bar-4e9463570a7dbde89055cf7fa37387ff.png"},94385:(e,n,t)=>{t.d(n,{A:()=>i});const i=t.p+"assets/images/markdown-image-options-4c255a61d000ea632a1432bc33e9535c.png"},83354:(e,n,t)=>{t.d(n,{A:()=>i});const i=t.p+"assets/images/markdown-slash-menu-489e1dcbdb1f213ecdaabb3e5ccb0aed.png"},49503:(e,n,t)=>{t.d(n,{A:()=>i});const i=t.p+"assets/images/markdown-theme-toggle-dedf458a2f30b1ec49a46e79dffb751b.png"},28453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>d});var i=t(96540);const r={},s=i.createContext(r);function o(e){const n=i.useContext(s);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),i.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/6319.29a7b073.js b/assets/js/6319.29a7b073.js new file mode 100644 index 00000000..a599374e --- /dev/null +++ b/assets/js/6319.29a7b073.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6319],{25871:(t,r,e)=>{function n(t,r){t.accDescr&&r.setAccDescription?.(t.accDescr),t.accTitle&&r.setAccTitle?.(t.accTitle),t.title&&r.setDiagramTitle?.(t.title)}e.d(r,{S:()=>n}),(0,e(40797).K2)(n,"populateCommonDb")},72938:(t,r,e)=>{e.d(r,{m:()=>o});var n=e(40797),o=class{constructor(t){this.init=t,this.records=this.init()}static{(0,n.K2)(this,"ImperativeState")}reset(){this.records=this.init()}}},66319:(t,r,e)=>{e.d(r,{diagram:()=>ut});var n=e(25871),o=e(72938),a=e(13226),c=e(67633),s=e(40797),i=e(78731),h=e(70451),d={NORMAL:0,REVERSE:1,HIGHLIGHT:2,MERGE:3,CHERRY_PICK:4},m=c.UI.gitGraph,$=(0,s.K2)((()=>(0,a.$t)({...m,...(0,c.zj)().gitGraph})),"getConfig"),l=new o.m((()=>{const t=$(),r=t.mainBranchName,e=t.mainBranchOrder;return{mainBranchName:r,commits:new Map,head:null,branchConfig:new Map([[r,{name:r,order:e}]]),branches:new Map([[r,null]]),currBranch:r,direction:"LR",seq:0,options:{}}}));function y(){return(0,a.yT)({length:7})}function g(t,r){const e=Object.create(null);return t.reduce(((t,n)=>{const o=r(n);return e[o]||(e[o]=!0,t.push(n)),t}),[])}(0,s.K2)(y,"getID"),(0,s.K2)(g,"uniqBy");var p=(0,s.K2)((function(t){l.records.direction=t}),"setDirection"),x=(0,s.K2)((function(t){s.Rm.debug("options str",t),t=t?.trim(),t=t||"{}";try{l.records.options=JSON.parse(t)}catch(r){s.Rm.error("error while parsing gitGraph options",r.message)}}),"setOptions"),f=(0,s.K2)((function(){return l.records.options}),"getOptions"),u=(0,s.K2)((function(t){let r=t.msg,e=t.id;const n=t.type;let o=t.tags;s.Rm.info("commit",r,e,n,o),s.Rm.debug("Entering commit:",r,e,n,o);const a=$();e=c.Y2.sanitizeText(e,a),r=c.Y2.sanitizeText(r,a),o=o?.map((t=>c.Y2.sanitizeText(t,a)));const i={id:e||l.records.seq+"-"+y(),message:r,seq:l.records.seq++,type:n??d.NORMAL,tags:o??[],parents:null==l.records.head?[]:[l.records.head.id],branch:l.records.currBranch};l.records.head=i,s.Rm.info("main branch",a.mainBranchName),l.records.commits.has(i.id)&&s.Rm.warn(`Commit ID ${i.id} already exists`),l.records.commits.set(i.id,i),l.records.branches.set(l.records.currBranch,i.id),s.Rm.debug("in pushCommit "+i.id)}),"commit"),b=(0,s.K2)((function(t){let r=t.name;const e=t.order;if(r=c.Y2.sanitizeText(r,$()),l.records.branches.has(r))throw new Error(`Trying to create an existing branch. (Help: Either use a new name if you want create a new branch or try using "checkout ${r}")`);l.records.branches.set(r,null!=l.records.head?l.records.head.id:null),l.records.branchConfig.set(r,{name:r,order:e}),E(r),s.Rm.debug("in createBranch")}),"branch"),w=(0,s.K2)((t=>{let r=t.branch,e=t.id;const n=t.type,o=t.tags,a=$();r=c.Y2.sanitizeText(r,a),e&&(e=c.Y2.sanitizeText(e,a));const i=l.records.branches.get(l.records.currBranch),h=l.records.branches.get(r),m=i?l.records.commits.get(i):void 0,g=h?l.records.commits.get(h):void 0;if(m&&g&&m.branch===r)throw new Error(`Cannot merge branch '${r}' into itself.`);if(l.records.currBranch===r){const t=new Error('Incorrect usage of "merge". Cannot merge a branch to itself');throw t.hash={text:`merge ${r}`,token:`merge ${r}`,expected:["branch abc"]},t}if(void 0===m||!m){const t=new Error(`Incorrect usage of "merge". Current branch (${l.records.currBranch})has no commits`);throw t.hash={text:`merge ${r}`,token:`merge ${r}`,expected:["commit"]},t}if(!l.records.branches.has(r)){const t=new Error('Incorrect usage of "merge". Branch to be merged ('+r+") does not exist");throw t.hash={text:`merge ${r}`,token:`merge ${r}`,expected:[`branch ${r}`]},t}if(void 0===g||!g){const t=new Error('Incorrect usage of "merge". Branch to be merged ('+r+") has no commits");throw t.hash={text:`merge ${r}`,token:`merge ${r}`,expected:['"commit"']},t}if(m===g){const t=new Error('Incorrect usage of "merge". Both branches have same head');throw t.hash={text:`merge ${r}`,token:`merge ${r}`,expected:["branch abc"]},t}if(e&&l.records.commits.has(e)){const t=new Error('Incorrect usage of "merge". Commit with id:'+e+" already exists, use different custom id");throw t.hash={text:`merge ${r} ${e} ${n} ${o?.join(" ")}`,token:`merge ${r} ${e} ${n} ${o?.join(" ")}`,expected:[`merge ${r} ${e}_UNIQUE ${n} ${o?.join(" ")}`]},t}const p=h||"",x={id:e||`${l.records.seq}-${y()}`,message:`merged branch ${r} into ${l.records.currBranch}`,seq:l.records.seq++,parents:null==l.records.head?[]:[l.records.head.id,p],branch:l.records.currBranch,type:d.MERGE,customType:n,customId:!!e,tags:o??[]};l.records.head=x,l.records.commits.set(x.id,x),l.records.branches.set(l.records.currBranch,x.id),s.Rm.debug(l.records.branches),s.Rm.debug("in mergeBranch")}),"merge"),B=(0,s.K2)((function(t){let r=t.id,e=t.targetId,n=t.tags,o=t.parent;s.Rm.debug("Entering cherryPick:",r,e,n);const a=$();if(r=c.Y2.sanitizeText(r,a),e=c.Y2.sanitizeText(e,a),n=n?.map((t=>c.Y2.sanitizeText(t,a))),o=c.Y2.sanitizeText(o,a),!r||!l.records.commits.has(r)){const t=new Error('Incorrect usage of "cherryPick". Source commit id should exist and provided');throw t.hash={text:`cherryPick ${r} ${e}`,token:`cherryPick ${r} ${e}`,expected:["cherry-pick abc"]},t}const i=l.records.commits.get(r);if(void 0===i||!i)throw new Error('Incorrect usage of "cherryPick". Source commit id should exist and provided');if(o&&(!Array.isArray(i.parents)||!i.parents.includes(o))){throw new Error("Invalid operation: The specified parent commit is not an immediate parent of the cherry-picked commit.")}const h=i.branch;if(i.type===d.MERGE&&!o){throw new Error("Incorrect usage of cherry-pick: If the source commit is a merge commit, an immediate parent commit must be specified.")}if(!e||!l.records.commits.has(e)){if(h===l.records.currBranch){const t=new Error('Incorrect usage of "cherryPick". Source commit is already on current branch');throw t.hash={text:`cherryPick ${r} ${e}`,token:`cherryPick ${r} ${e}`,expected:["cherry-pick abc"]},t}const t=l.records.branches.get(l.records.currBranch);if(void 0===t||!t){const t=new Error(`Incorrect usage of "cherry-pick". Current branch (${l.records.currBranch})has no commits`);throw t.hash={text:`cherryPick ${r} ${e}`,token:`cherryPick ${r} ${e}`,expected:["cherry-pick abc"]},t}const a=l.records.commits.get(t);if(void 0===a||!a){const t=new Error(`Incorrect usage of "cherry-pick". Current branch (${l.records.currBranch})has no commits`);throw t.hash={text:`cherryPick ${r} ${e}`,token:`cherryPick ${r} ${e}`,expected:["cherry-pick abc"]},t}const c={id:l.records.seq+"-"+y(),message:`cherry-picked ${i?.message} into ${l.records.currBranch}`,seq:l.records.seq++,parents:null==l.records.head?[]:[l.records.head.id,i.id],branch:l.records.currBranch,type:d.CHERRY_PICK,tags:n?n.filter(Boolean):[`cherry-pick:${i.id}${i.type===d.MERGE?`|parent:${o}`:""}`]};l.records.head=c,l.records.commits.set(c.id,c),l.records.branches.set(l.records.currBranch,c.id),s.Rm.debug(l.records.branches),s.Rm.debug("in cherryPick")}}),"cherryPick"),E=(0,s.K2)((function(t){if(t=c.Y2.sanitizeText(t,$()),!l.records.branches.has(t)){const r=new Error(`Trying to checkout branch which is not yet created. (Help try using "branch ${t}")`);throw r.hash={text:`checkout ${t}`,token:`checkout ${t}`,expected:[`branch ${t}`]},r}{l.records.currBranch=t;const r=l.records.branches.get(l.records.currBranch);l.records.head=void 0!==r&&r?l.records.commits.get(r)??null:null}}),"checkout");function k(t,r,e){const n=t.indexOf(r);-1===n?t.push(e):t.splice(n,1,e)}function C(t){const r=t.reduce(((t,r)=>t.seq>r.seq?t:r),t[0]);let e="";t.forEach((function(t){e+=t===r?"\t*":"\t|"}));const n=[e,r.id,r.seq];for(const o in l.records.branches)l.records.branches.get(o)===r.id&&n.push(o);if(s.Rm.debug(n.join(" ")),r.parents&&2==r.parents.length&&r.parents[0]&&r.parents[1]){const e=l.records.commits.get(r.parents[0]);k(t,r,e),r.parents[1]&&t.push(l.records.commits.get(r.parents[1]))}else{if(0==r.parents.length)return;if(r.parents[0]){const e=l.records.commits.get(r.parents[0]);k(t,r,e)}}C(t=g(t,(t=>t.id)))}(0,s.K2)(k,"upsert"),(0,s.K2)(C,"prettyPrintCommitHistory");var T=(0,s.K2)((function(){s.Rm.debug(l.records.commits);C([v()[0]])}),"prettyPrint"),L=(0,s.K2)((function(){l.reset(),(0,c.IU)()}),"clear"),K=(0,s.K2)((function(){return[...l.records.branchConfig.values()].map(((t,r)=>null!==t.order&&void 0!==t.order?t:{...t,order:parseFloat(`0.${r}`)})).sort(((t,r)=>(t.order??0)-(r.order??0))).map((({name:t})=>({name:t})))}),"getBranchesAsObjArray"),M=(0,s.K2)((function(){return l.records.branches}),"getBranches"),R=(0,s.K2)((function(){return l.records.commits}),"getCommits"),v=(0,s.K2)((function(){const t=[...l.records.commits.values()];return t.forEach((function(t){s.Rm.debug(t.id)})),t.sort(((t,r)=>t.seq-r.seq)),t}),"getCommitsArray"),P={commitType:d,getConfig:$,setDirection:p,setOptions:x,getOptions:f,commit:u,branch:b,merge:w,cherryPick:B,checkout:E,prettyPrint:T,clear:L,getBranchesAsObjArray:K,getBranches:M,getCommits:R,getCommitsArray:v,getCurrentBranch:(0,s.K2)((function(){return l.records.currBranch}),"getCurrentBranch"),getDirection:(0,s.K2)((function(){return l.records.direction}),"getDirection"),getHead:(0,s.K2)((function(){return l.records.head}),"getHead"),setAccTitle:c.SV,getAccTitle:c.iN,getAccDescription:c.m7,setAccDescription:c.EI,setDiagramTitle:c.ke,getDiagramTitle:c.ab},I=(0,s.K2)(((t,r)=>{(0,n.S)(t,r),t.dir&&r.setDirection(t.dir);for(const e of t.statements)A(e,r)}),"populate"),A=(0,s.K2)(((t,r)=>{const e={Commit:(0,s.K2)((t=>r.commit(G(t))),"Commit"),Branch:(0,s.K2)((t=>r.branch(O(t))),"Branch"),Merge:(0,s.K2)((t=>r.merge(q(t))),"Merge"),Checkout:(0,s.K2)((t=>r.checkout(z(t))),"Checkout"),CherryPicking:(0,s.K2)((t=>r.cherryPick(D(t))),"CherryPicking")}[t.$type];e?e(t):s.Rm.error(`Unknown statement type: ${t.$type}`)}),"parseStatement"),G=(0,s.K2)((t=>({id:t.id,msg:t.message??"",type:void 0!==t.type?d[t.type]:d.NORMAL,tags:t.tags??void 0})),"parseCommit"),O=(0,s.K2)((t=>({name:t.name,order:t.order??0})),"parseBranch"),q=(0,s.K2)((t=>({branch:t.branch,id:t.id??"",type:void 0!==t.type?d[t.type]:void 0,tags:t.tags??void 0})),"parseMerge"),z=(0,s.K2)((t=>t.branch),"parseCheckout"),D=(0,s.K2)((t=>({id:t.id,targetId:"",tags:0===t.tags?.length?void 0:t.tags,parent:t.parent})),"parseCherryPicking"),H={parse:(0,s.K2)((async t=>{const r=await(0,i.qg)("gitGraph",t);s.Rm.debug(r),I(r,P)}),"parse")};var S=(0,c.D7)(),Y=S?.gitGraph,N=10,j=40,W=new Map,_=new Map,F=new Map,U=[],V=0,J="LR",Q=(0,s.K2)((()=>{W.clear(),_.clear(),F.clear(),V=0,U=[],J="LR"}),"clear"),X=(0,s.K2)((t=>{const r=document.createElementNS("http://www.w3.org/2000/svg","text");return("string"==typeof t?t.split(/\\n|\n|/gi):t).forEach((t=>{const e=document.createElementNS("http://www.w3.org/2000/svg","tspan");e.setAttributeNS("http://www.w3.org/XML/1998/namespace","xml:space","preserve"),e.setAttribute("dy","1em"),e.setAttribute("x","0"),e.setAttribute("class","row"),e.textContent=t.trim(),r.appendChild(e)})),r}),"drawText"),Z=(0,s.K2)((t=>{let r,e,n;return"BT"===J?(e=(0,s.K2)(((t,r)=>t<=r),"comparisonFunc"),n=1/0):(e=(0,s.K2)(((t,r)=>t>=r),"comparisonFunc"),n=0),t.forEach((t=>{const o="TB"===J||"BT"==J?_.get(t)?.y:_.get(t)?.x;void 0!==o&&e(o,n)&&(r=t,n=o)})),r}),"findClosestParent"),tt=(0,s.K2)((t=>{let r="",e=1/0;return t.forEach((t=>{const n=_.get(t).y;n<=e&&(r=t,e=n)})),r||void 0}),"findClosestParentBT"),rt=(0,s.K2)(((t,r,e)=>{let n=e,o=e;const a=[];t.forEach((t=>{const e=r.get(t);if(!e)throw new Error(`Commit not found for key ${t}`);e.parents.length?(n=nt(e),o=Math.max(n,o)):a.push(e),ot(e,n)})),n=o,a.forEach((t=>{at(t,n,e)})),t.forEach((t=>{const e=r.get(t);if(e?.parents.length){const t=tt(e.parents);n=_.get(t).y-j,n<=o&&(o=n);const r=W.get(e.branch).pos,a=n-N;_.set(e.id,{x:r,y:a})}}))}),"setParallelBTPos"),et=(0,s.K2)((t=>{const r=Z(t.parents.filter((t=>null!==t)));if(!r)throw new Error(`Closest parent not found for commit ${t.id}`);const e=_.get(r)?.y;if(void 0===e)throw new Error(`Closest parent position not found for commit ${t.id}`);return e}),"findClosestParentPos"),nt=(0,s.K2)((t=>et(t)+j),"calculateCommitPosition"),ot=(0,s.K2)(((t,r)=>{const e=W.get(t.branch);if(!e)throw new Error(`Branch not found for commit ${t.id}`);const n=e.pos,o=r+N;return _.set(t.id,{x:n,y:o}),{x:n,y:o}}),"setCommitPosition"),at=(0,s.K2)(((t,r,e)=>{const n=W.get(t.branch);if(!n)throw new Error(`Branch not found for commit ${t.id}`);const o=r+e,a=n.pos;_.set(t.id,{x:a,y:o})}),"setRootPosition"),ct=(0,s.K2)(((t,r,e,n,o,a)=>{if(a===d.HIGHLIGHT)t.append("rect").attr("x",e.x-10).attr("y",e.y-10).attr("width",20).attr("height",20).attr("class",`commit ${r.id} commit-highlight${o%8} ${n}-outer`),t.append("rect").attr("x",e.x-6).attr("y",e.y-6).attr("width",12).attr("height",12).attr("class",`commit ${r.id} commit${o%8} ${n}-inner`);else if(a===d.CHERRY_PICK)t.append("circle").attr("cx",e.x).attr("cy",e.y).attr("r",10).attr("class",`commit ${r.id} ${n}`),t.append("circle").attr("cx",e.x-3).attr("cy",e.y+2).attr("r",2.75).attr("fill","#fff").attr("class",`commit ${r.id} ${n}`),t.append("circle").attr("cx",e.x+3).attr("cy",e.y+2).attr("r",2.75).attr("fill","#fff").attr("class",`commit ${r.id} ${n}`),t.append("line").attr("x1",e.x+3).attr("y1",e.y+1).attr("x2",e.x).attr("y2",e.y-5).attr("stroke","#fff").attr("class",`commit ${r.id} ${n}`),t.append("line").attr("x1",e.x-3).attr("y1",e.y+1).attr("x2",e.x).attr("y2",e.y-5).attr("stroke","#fff").attr("class",`commit ${r.id} ${n}`);else{const c=t.append("circle");if(c.attr("cx",e.x),c.attr("cy",e.y),c.attr("r",r.type===d.MERGE?9:10),c.attr("class",`commit ${r.id} commit${o%8}`),a===d.MERGE){const a=t.append("circle");a.attr("cx",e.x),a.attr("cy",e.y),a.attr("r",6),a.attr("class",`commit ${n} ${r.id} commit${o%8}`)}if(a===d.REVERSE){t.append("path").attr("d",`M ${e.x-5},${e.y-5}L${e.x+5},${e.y+5}M${e.x-5},${e.y+5}L${e.x+5},${e.y-5}`).attr("class",`commit ${n} ${r.id} commit${o%8}`)}}}),"drawCommitBullet"),st=(0,s.K2)(((t,r,e,n)=>{if(r.type!==d.CHERRY_PICK&&(r.customId&&r.type===d.MERGE||r.type!==d.MERGE)&&Y?.showCommitLabel){const o=t.append("g"),a=o.insert("rect").attr("class","commit-label-bkg"),c=o.append("text").attr("x",n).attr("y",e.y+25).attr("class","commit-label").text(r.id),s=c.node()?.getBBox();if(s&&(a.attr("x",e.posWithOffset-s.width/2-2).attr("y",e.y+13.5).attr("width",s.width+4).attr("height",s.height+4),"TB"===J||"BT"===J?(a.attr("x",e.x-(s.width+16+5)).attr("y",e.y-12),c.attr("x",e.x-(s.width+16)).attr("y",e.y+s.height-12)):c.attr("x",e.posWithOffset-s.width/2),Y.rotateCommitLabel))if("TB"===J||"BT"===J)c.attr("transform","rotate(-45, "+e.x+", "+e.y+")"),a.attr("transform","rotate(-45, "+e.x+", "+e.y+")");else{const t=-7.5-(s.width+10)/25*9.5,r=10+s.width/25*8.5;o.attr("transform","translate("+t+", "+r+") rotate(-45, "+n+", "+e.y+")")}}}),"drawCommitLabel"),it=(0,s.K2)(((t,r,e,n)=>{if(r.tags.length>0){let o=0,a=0,c=0;const s=[];for(const n of r.tags.reverse()){const r=t.insert("polygon"),i=t.append("circle"),h=t.append("text").attr("y",e.y-16-o).attr("class","tag-label").text(n),d=h.node()?.getBBox();if(!d)throw new Error("Tag bbox not found");a=Math.max(a,d.width),c=Math.max(c,d.height),h.attr("x",e.posWithOffset-d.width/2),s.push({tag:h,hole:i,rect:r,yOffset:o}),o+=20}for(const{tag:t,hole:r,rect:i,yOffset:h}of s){const o=c/2,s=e.y-19.2-h;if(i.attr("class","tag-label-bkg").attr("points",`\n ${n-a/2-2},${s+2} \n ${n-a/2-2},${s-2}\n ${e.posWithOffset-a/2-4},${s-o-2}\n ${e.posWithOffset+a/2+4},${s-o-2}\n ${e.posWithOffset+a/2+4},${s+o+2}\n ${e.posWithOffset-a/2-4},${s+o+2}`),r.attr("cy",s).attr("cx",n-a/2+2).attr("r",1.5).attr("class","tag-hole"),"TB"===J||"BT"===J){const c=n+h;i.attr("class","tag-label-bkg").attr("points",`\n ${e.x},${c+2}\n ${e.x},${c-2}\n ${e.x+N},${c-o-2}\n ${e.x+N+a+4},${c-o-2}\n ${e.x+N+a+4},${c+o+2}\n ${e.x+N},${c+o+2}`).attr("transform","translate(12,12) rotate(45, "+e.x+","+n+")"),r.attr("cx",e.x+2).attr("cy",c).attr("transform","translate(12,12) rotate(45, "+e.x+","+n+")"),t.attr("x",e.x+5).attr("y",c+3).attr("transform","translate(14,14) rotate(45, "+e.x+","+n+")")}}}}),"drawCommitTags"),ht=(0,s.K2)((t=>{switch(t.customType??t.type){case d.NORMAL:return"commit-normal";case d.REVERSE:return"commit-reverse";case d.HIGHLIGHT:return"commit-highlight";case d.MERGE:return"commit-merge";case d.CHERRY_PICK:return"commit-cherry-pick";default:return"commit-normal"}}),"getCommitClassType"),dt=(0,s.K2)(((t,r,e,n)=>{const o={x:0,y:0};if(!(t.parents.length>0)){if("TB"===r)return 30;if("BT"===r){return(n.get(t.id)??o).y-j}return 0}{const e=Z(t.parents);if(e){const a=n.get(e)??o;if("TB"===r)return a.y+j;if("BT"===r){return(n.get(t.id)??o).y-j}return a.x+j}}return 0}),"calculatePosition"),mt=(0,s.K2)(((t,r,e)=>{const n="BT"===J&&e?r:r+N,o="TB"===J||"BT"===J?n:W.get(t.branch)?.pos,a="TB"===J||"BT"===J?W.get(t.branch)?.pos:n;if(void 0===a||void 0===o)throw new Error(`Position were undefined for commit ${t.id}`);return{x:a,y:o,posWithOffset:n}}),"getCommitPosition"),$t=(0,s.K2)(((t,r,e)=>{if(!Y)throw new Error("GitGraph config not found");const n=t.append("g").attr("class","commit-bullets"),o=t.append("g").attr("class","commit-labels");let a="TB"===J||"BT"===J?30:0;const c=[...r.keys()],i=Y?.parallelCommits??!1,h=(0,s.K2)(((t,e)=>{const n=r.get(t)?.seq,o=r.get(e)?.seq;return void 0!==n&&void 0!==o?n-o:0}),"sortKeys");let d=c.sort(h);"BT"===J&&(i&&rt(d,r,a),d=d.reverse()),d.forEach((t=>{const c=r.get(t);if(!c)throw new Error(`Commit not found for key ${t}`);i&&(a=dt(c,J,a,_));const s=mt(c,a,i);if(e){const t=ht(c),r=c.customType??c.type,e=W.get(c.branch)?.index??0;ct(n,c,s,t,e,r),st(o,c,s,a),it(o,c,s,a)}"TB"===J||"BT"===J?_.set(c.id,{x:s.x,y:s.posWithOffset}):_.set(c.id,{x:s.posWithOffset,y:s.y}),a="BT"===J&&i?a+j:a+j+N,a>V&&(V=a)}))}),"drawCommits"),lt=(0,s.K2)(((t,r,e,n,o)=>{const a=("TB"===J||"BT"===J?e.xt.branch===a),"isOnBranchToGetCurve"),i=(0,s.K2)((e=>e.seq>t.seq&&e.seqi(t)&&c(t)))}),"shouldRerouteArrow"),yt=(0,s.K2)(((t,r,e=0)=>{const n=t+Math.abs(t-r)/2;if(e>5)return n;if(U.every((t=>Math.abs(t-n)>=10)))return U.push(n),n;const o=Math.abs(t-r);return yt(t,r-o/5,e+1)}),"findLane"),gt=(0,s.K2)(((t,r,e,n)=>{const o=_.get(r.id),a=_.get(e.id);if(void 0===o||void 0===a)throw new Error(`Commit positions not found for commits ${r.id} and ${e.id}`);const c=lt(r,e,o,a,n);let s,i="",h="",m=0,$=0,l=W.get(e.branch)?.index;if(e.type===d.MERGE&&r.id!==e.parents[0]&&(l=W.get(r.branch)?.index),c){i="A 10 10, 0, 0, 0,",h="A 10 10, 0, 0, 1,",m=10,$=10;const t=o.ya.x&&(i="A 20 20, 0, 0, 0,",h="A 20 20, 0, 0, 1,",m=20,$=20,s=e.type===d.MERGE&&r.id!==e.parents[0]?`M ${o.x} ${o.y} L ${o.x} ${a.y-m} ${h} ${o.x-$} ${a.y} L ${a.x} ${a.y}`:`M ${o.x} ${o.y} L ${a.x+m} ${o.y} ${i} ${a.x} ${o.y+$} L ${a.x} ${a.y}`),o.x===a.x&&(s=`M ${o.x} ${o.y} L ${a.x} ${a.y}`)):"BT"===J?(o.xa.x&&(i="A 20 20, 0, 0, 0,",h="A 20 20, 0, 0, 1,",m=20,$=20,s=e.type===d.MERGE&&r.id!==e.parents[0]?`M ${o.x} ${o.y} L ${o.x} ${a.y+m} ${i} ${o.x-$} ${a.y} L ${a.x} ${a.y}`:`M ${o.x} ${o.y} L ${a.x-m} ${o.y} ${i} ${a.x} ${o.y-$} L ${a.x} ${a.y}`),o.x===a.x&&(s=`M ${o.x} ${o.y} L ${a.x} ${a.y}`)):(o.ya.y&&(s=e.type===d.MERGE&&r.id!==e.parents[0]?`M ${o.x} ${o.y} L ${a.x-m} ${o.y} ${i} ${a.x} ${o.y-$} L ${a.x} ${a.y}`:`M ${o.x} ${o.y} L ${o.x} ${a.y+m} ${h} ${o.x+$} ${a.y} L ${a.x} ${a.y}`),o.y===a.y&&(s=`M ${o.x} ${o.y} L ${a.x} ${a.y}`));if(void 0===s)throw new Error("Line definition not found");t.append("path").attr("d",s).attr("class","arrow arrow"+l%8)}),"drawArrow"),pt=(0,s.K2)(((t,r)=>{const e=t.append("g").attr("class","commit-arrows");[...r.keys()].forEach((t=>{const n=r.get(t);n.parents&&n.parents.length>0&&n.parents.forEach((t=>{gt(e,r.get(t),n,r)}))}))}),"drawArrows"),xt=(0,s.K2)(((t,r)=>{const e=t.append("g");r.forEach(((t,r)=>{const n=r%8,o=W.get(t.name)?.pos;if(void 0===o)throw new Error(`Position not found for branch ${t.name}`);const a=e.append("line");a.attr("x1",0),a.attr("y1",o),a.attr("x2",V),a.attr("y2",o),a.attr("class","branch branch"+n),"TB"===J?(a.attr("y1",30),a.attr("x1",o),a.attr("y2",V),a.attr("x2",o)):"BT"===J&&(a.attr("y1",V),a.attr("x1",o),a.attr("y2",30),a.attr("x2",o)),U.push(o);const c=t.name,s=X(c),i=e.insert("rect"),h=e.insert("g").attr("class","branchLabel").insert("g").attr("class","label branch-label"+n);h.node().appendChild(s);const d=s.getBBox();i.attr("class","branchLabelBkg label"+n).attr("rx",4).attr("ry",4).attr("x",-d.width-4-(!0===Y?.rotateCommitLabel?30:0)).attr("y",-d.height/2+8).attr("width",d.width+18).attr("height",d.height+4),h.attr("transform","translate("+(-d.width-14-(!0===Y?.rotateCommitLabel?30:0))+", "+(o-d.height/2-1)+")"),"TB"===J?(i.attr("x",o-d.width/2-10).attr("y",0),h.attr("transform","translate("+(o-d.width/2-5)+", 0)")):"BT"===J?(i.attr("x",o-d.width/2-10).attr("y",V),h.attr("transform","translate("+(o-d.width/2-5)+", "+V+")")):i.attr("transform","translate(-19, "+(o-d.height/2)+")")}))}),"drawBranches"),ft=(0,s.K2)((function(t,r,e,n,o){return W.set(t,{pos:r,index:e}),r+=50+(o?40:0)+("TB"===J||"BT"===J?n.width/2:0)}),"setBranchPosition");var ut={parser:H,db:P,renderer:{draw:(0,s.K2)((function(t,r,e,n){if(Q(),s.Rm.debug("in gitgraph renderer",t+"\n","id:",r,e),!Y)throw new Error("GitGraph config not found");const o=Y.rotateCommitLabel??!1,i=n.db;F=i.getCommits();const d=i.getBranchesAsObjArray();J=i.getDirection();const m=(0,h.Ltv)(`[id="${r}"]`);let $=0;d.forEach(((t,r)=>{const e=X(t.name),n=m.append("g"),a=n.insert("g").attr("class","branchLabel"),c=a.insert("g").attr("class","label branch-label");c.node()?.appendChild(e);const s=e.getBBox();$=ft(t.name,$,r,s,o),c.remove(),a.remove(),n.remove()})),$t(m,F,!1),Y.showBranches&&xt(m,d),pt(m,F),$t(m,F,!0),a._K.insertTitle(m,"gitTitleText",Y.titleTopMargin??0,i.getDiagramTitle()),(0,c.mj)(void 0,m,Y.diagramPadding,Y.useMaxWidth)}),"draw")},styles:(0,s.K2)((t=>`\n .commit-id,\n .commit-msg,\n .branch-label {\n fill: lightgrey;\n color: lightgrey;\n font-family: 'trebuchet ms', verdana, arial, sans-serif;\n font-family: var(--mermaid-font-family);\n }\n ${[0,1,2,3,4,5,6,7].map((r=>`\n .branch-label${r} { fill: ${t["gitBranchLabel"+r]}; }\n .commit${r} { stroke: ${t["git"+r]}; fill: ${t["git"+r]}; }\n .commit-highlight${r} { stroke: ${t["gitInv"+r]}; fill: ${t["gitInv"+r]}; }\n .label${r} { fill: ${t["git"+r]}; }\n .arrow${r} { stroke: ${t["git"+r]}; }\n `)).join("\n")}\n\n .branch {\n stroke-width: 1;\n stroke: ${t.lineColor};\n stroke-dasharray: 2;\n }\n .commit-label { font-size: ${t.commitLabelFontSize}; fill: ${t.commitLabelColor};}\n .commit-label-bkg { font-size: ${t.commitLabelFontSize}; fill: ${t.commitLabelBackground}; opacity: 0.5; }\n .tag-label { font-size: ${t.tagLabelFontSize}; fill: ${t.tagLabelColor};}\n .tag-label-bkg { fill: ${t.tagLabelBackground}; stroke: ${t.tagLabelBorder}; }\n .tag-hole { fill: ${t.textColor}; }\n\n .commit-merge {\n stroke: ${t.primaryColor};\n fill: ${t.primaryColor};\n }\n .commit-reverse {\n stroke: ${t.primaryColor};\n fill: ${t.primaryColor};\n stroke-width: 3;\n }\n .commit-highlight-outer {\n }\n .commit-highlight-inner {\n stroke: ${t.primaryColor};\n fill: ${t.primaryColor};\n }\n\n .arrow { stroke-width: 8; stroke-linecap: round; fill: none}\n .gitTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${t.textColor};\n }\n`),"getStyles")}}}]); \ No newline at end of file diff --git a/assets/js/6366.bbfb6a63.js b/assets/js/6366.bbfb6a63.js new file mode 100644 index 00000000..9cbc0064 --- /dev/null +++ b/assets/js/6366.bbfb6a63.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6366],{86366:(e,c,s)=>{s.d(c,{createArchitectureServices:()=>r.S});var r=s(38980);s(87960)}}]); \ No newline at end of file diff --git a/assets/js/64b7a62f.014483ab.js b/assets/js/64b7a62f.014483ab.js new file mode 100644 index 00000000..4ed11dee --- /dev/null +++ b/assets/js/64b7a62f.014483ab.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8529],{49342:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>a,contentTitle:()=>l,default:()=>h,frontMatter:()=>o,metadata:()=>r,toc:()=>d});const r=JSON.parse('{"id":"API-Reference/project/FileTreeViewModel","title":"FileTreeViewModel","description":"Import :","source":"@site/api/API-Reference/project/FileTreeViewModel.md","sourceDirName":"API-Reference/project","slug":"/API-Reference/project/FileTreeViewModel","permalink":"/api/API-Reference/project/FileTreeViewModel","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"FileTreeView","permalink":"/api/API-Reference/project/FileTreeView"},"next":{"title":"FileViewController","permalink":"/api/API-Reference/project/FileViewController"}}');var i=n(74848),s=n(28453);const o={},l=void 0,a={},d=[{value:"Import :",id:"import-",level:3},{value:"Contains the treeData used to generate the file tree and methods used to update that",id:"contains-the-treedata-used-to-generate-the-file-tree-and-methods-used-to-update-that",level:2},{value:"Immutable",id:"immutable",level:2},{value:"EVENT_CHANGE : string",id:"event_change--string",level:2},{value:"isFile(entry) \u21d2 boolean",id:"isfileentry--boolean",level:2}];function c(e){const t={br:"br",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.h3,{id:"import-",children:"Import :"}),"\n",(0,i.jsx)(t.pre,{children:(0,i.jsx)(t.code,{className:"language-js",children:'const FileTreeViewModel = brackets.getModule("project/FileTreeViewModel")\n'})}),"\n",(0,i.jsx)("a",{name:"Contains the treeData used to generate the file tree and methods used to update that\ntreeData.\n\nInstances dispatch the following events_\n- change (FileTreeViewModel.EVENT_CHANGE constant)_ Fired any time theres a change that should be reflected in the view."}),"\n",(0,i.jsx)(t.h2,{id:"contains-the-treedata-used-to-generate-the-file-tree-and-methods-used-to-update-that",children:"Contains the treeData used to generate the file tree and methods used to update that"}),"\n",(0,i.jsx)(t.p,{children:"treeData."}),"\n",(0,i.jsx)(t.p,{children:"Instances dispatch the following events:"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:["change (FileTreeViewModel.EVENT_CHANGE constant): Fired any time theres a change that should be reflected in the view.\n",(0,i.jsx)(t.strong,{children:"Kind"}),": global class"]}),"\n"]}),"\n",(0,i.jsx)("a",{name:"Immutable"}),"\n",(0,i.jsx)(t.h2,{id:"immutable",children:"Immutable"}),"\n",(0,i.jsx)(t.p,{children:"The view model (or a Store in the Flux terminology) used by the file tree."}),"\n",(0,i.jsx)(t.p,{children:"Many of the view model's methods are implemented by pure functions, which can be\nhelpful for composability. Many of the methods commit the new treeData and send a\nchange event when they're done whereas the functions do not do this."}),"\n",(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.strong,{children:"Kind"}),": global variable"]}),"\n",(0,i.jsx)("a",{name:"EVENT_CHANGE"}),"\n",(0,i.jsxs)(t.h2,{id:"event_change--string",children:["EVENT_CHANGE : ",(0,i.jsx)("code",{children:"string"})]}),"\n",(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.strong,{children:"Kind"}),": global constant"]}),"\n",(0,i.jsx)("a",{name:"isFile"}),"\n",(0,i.jsxs)(t.h2,{id:"isfileentry--boolean",children:["isFile(entry) \u21d2 ",(0,i.jsx)("code",{children:"boolean"})]}),"\n",(0,i.jsx)(t.p,{children:"Determine if an entry from the treeData map is a file."}),"\n",(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.strong,{children:"Kind"}),": global function",(0,i.jsx)(t.br,{}),"\n",(0,i.jsx)(t.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"boolean"})," - true if this is a file and not a directory"]}),"\n",(0,i.jsxs)(t.table,{children:[(0,i.jsx)(t.thead,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.th,{children:"Param"}),(0,i.jsx)(t.th,{children:"Type"}),(0,i.jsx)(t.th,{children:"Description"})]})}),(0,i.jsx)(t.tbody,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"entry"}),(0,i.jsx)(t.td,{children:(0,i.jsx)("code",{children:"Immutable.Map"})}),(0,i.jsx)(t.td,{children:"entry to test"})]})})]})]})}function h(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},28453:(e,t,n)=>{n.d(t,{R:()=>o,x:()=>l});var r=n(96540);const i={},s=r.createContext(i);function o(e){const t=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),r.createElement(s.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/6567.7871bc2f.js b/assets/js/6567.7871bc2f.js new file mode 100644 index 00000000..1ac7db7f --- /dev/null +++ b/assets/js/6567.7871bc2f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6567],{25871:(t,e,a)=>{function r(t,e){t.accDescr&&e.setAccDescription?.(t.accDescr),t.accTitle&&e.setAccTitle?.(t.accTitle),t.title&&e.setDiagramTitle?.(t.title)}a.d(e,{S:()=>r}),(0,a(40797).K2)(r,"populateCommonDb")},16567:(t,e,a)=>{a.d(e,{diagram:()=>u});var r=a(73590),i=a(25871),s=a(13226),o=a(67633),n=a(40797),l=a(78731),c=o.UI.packet,d=class{constructor(){this.packet=[],this.setAccTitle=o.SV,this.getAccTitle=o.iN,this.setDiagramTitle=o.ke,this.getDiagramTitle=o.ab,this.getAccDescription=o.m7,this.setAccDescription=o.EI}static{(0,n.K2)(this,"PacketDB")}getConfig(){const t=(0,s.$t)({...c,...(0,o.zj)().packet});return t.showBits&&(t.paddingY+=10),t}getPacket(){return this.packet}pushWord(t){t.length>0&&this.packet.push(t)}clear(){(0,o.IU)(),this.packet=[]}},p=(0,n.K2)(((t,e)=>{(0,i.S)(t,e);let a=-1,r=[],s=1;const{bitsPerRow:o}=e.getConfig();for(let{start:i,end:l,bits:c,label:d}of t.blocks){if(void 0!==i&&void 0!==l&&l{if(void 0===t.start)throw new Error("start should have been set during first phase");if(void 0===t.end)throw new Error("end should have been set during first phase");if(t.start>t.end)throw new Error(`Block start ${t.start} is greater than block end ${t.end}.`);if(t.end+1<=e*a)return[t,void 0];const r=e*a-1,i=e*a;return[{start:t.start,end:r,label:t.label,bits:r-t.start},{start:i,end:t.end,label:t.label,bits:t.end-i}]}),"getNextFittingBlock"),h={parser:{yy:void 0},parse:(0,n.K2)((async t=>{const e=await(0,l.qg)("packet",t),a=h.parser?.yy;if(!(a instanceof d))throw new Error("parser.parser?.yy was not a PacketDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.");n.Rm.debug(e),p(e,a)}),"parse")},k=(0,n.K2)(((t,e,a,i)=>{const s=i.db,n=s.getConfig(),{rowHeight:l,paddingY:c,bitWidth:d,bitsPerRow:p}=n,b=s.getPacket(),h=s.getDiagramTitle(),k=l+c,f=k*(b.length+1)-(h?0:l),u=d*p+2,w=(0,r.D)(e);w.attr("viewbox",`0 0 ${u} ${f}`),(0,o.a$)(w,f,u,n.useMaxWidth);for(const[r,o]of b.entries())g(w,o,r,n);w.append("text").text(h).attr("x",u/2).attr("y",f-k/2).attr("dominant-baseline","middle").attr("text-anchor","middle").attr("class","packetTitle")}),"draw"),g=(0,n.K2)(((t,e,a,{rowHeight:r,paddingX:i,paddingY:s,bitWidth:o,bitsPerRow:n,showBits:l})=>{const c=t.append("g"),d=a*(r+s)+s;for(const p of e){const t=p.start%n*o+1,e=(p.end-p.start+1)*o-i;if(c.append("rect").attr("x",t).attr("y",d).attr("width",e).attr("height",r).attr("class","packetBlock"),c.append("text").attr("x",t+e/2).attr("y",d+r/2).attr("class","packetLabel").attr("dominant-baseline","middle").attr("text-anchor","middle").text(p.label),!l)continue;const a=p.end===p.start,s=d-2;c.append("text").attr("x",t+(a?e/2:0)).attr("y",s).attr("class","packetByte start").attr("dominant-baseline","auto").attr("text-anchor",a?"middle":"start").text(p.start),a||c.append("text").attr("x",t+e).attr("y",s).attr("class","packetByte end").attr("dominant-baseline","auto").attr("text-anchor","end").text(p.end)}}),"drawWord"),f={byteFontSize:"10px",startByteColor:"black",endByteColor:"black",labelColor:"black",labelFontSize:"12px",titleColor:"black",titleFontSize:"14px",blockStrokeColor:"black",blockStrokeWidth:"1",blockFillColor:"#efefef"},u={parser:h,get db(){return new d},renderer:{draw:k},styles:(0,n.K2)((({packet:t}={})=>{const e=(0,s.$t)(f,t);return`\n\t.packetByte {\n\t\tfont-size: ${e.byteFontSize};\n\t}\n\t.packetByte.start {\n\t\tfill: ${e.startByteColor};\n\t}\n\t.packetByte.end {\n\t\tfill: ${e.endByteColor};\n\t}\n\t.packetLabel {\n\t\tfill: ${e.labelColor};\n\t\tfont-size: ${e.labelFontSize};\n\t}\n\t.packetTitle {\n\t\tfill: ${e.titleColor};\n\t\tfont-size: ${e.titleFontSize};\n\t}\n\t.packetBlock {\n\t\tstroke: ${e.blockStrokeColor};\n\t\tstroke-width: ${e.blockStrokeWidth};\n\t\tfill: ${e.blockFillColor};\n\t}\n\t`}),"styles")}}}]); \ No newline at end of file diff --git a/assets/js/65a6d713.dd321e5b.js b/assets/js/65a6d713.dd321e5b.js new file mode 100644 index 00000000..000fe2ec --- /dev/null +++ b/assets/js/65a6d713.dd321e5b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1486],{53739:a=>{a.exports=JSON.parse('{"tag":{"label":"AI","permalink":"/blog/tags/ai","allTagsPath":"/blog/tags","count":1,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/ai","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]); \ No newline at end of file diff --git a/assets/js/65b98cfc.719714a5.js b/assets/js/65b98cfc.719714a5.js new file mode 100644 index 00000000..183b03d3 --- /dev/null +++ b/assets/js/65b98cfc.719714a5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8561],{74819:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>r,default:()=>c,frontMatter:()=>a,metadata:()=>i,toc:()=>d});var i=t(49520),o=t(74848),s=t(28453);const a={slug:"release-3.9",title:"HTML Workflows and stability Release (September-2024, V-3.9) is now Live",description:"Phoenix Code 3.9 improves app stability and robustness, adds HTML and text editing workflow enhancements, and ChromeOS support.",authors:["arun","charly","kiran","devvaannsh","jozsefk9","acemi1","phoenixBot"],tags:["Live Preview","Live Code Hints","Windows","Linux","Mac","Release"]},r=void 0,l={authorsImageUrls:[void 0,void 0,void 0,void 0,void 0,void 0,void 0]},d=[{value:"Now Available on ChromeOS",id:"now-available-on-chromeos",level:2},{value:"Auto rename start and end of HTML/XML/SVG tags",id:"auto-rename-start-and-end-of-htmlxmlsvg-tags",level:2},{value:"Auto Tab and Spacing detection",id:"auto-tab-and-spacing-detection",level:2},{value:"UX Improvements",id:"ux-improvements",level:2},{value:"Stability Improvements",id:"stability-improvements",level:2},{value:"Update on Release Schedule",id:"update-on-release-schedule",level:2},{value:"A Request from the Phoenix Team:",id:"a-request-from-the-phoenix-team",level:2}];function h(e){const n={a:"a",code:"code",h2:"h2",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(n.p,{children:["September release(3.9) of Phoenix Code is now available for download at\n",(0,o.jsx)(n.a,{href:"https://phcode.io",children:"phcode.io"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["This month's core theme is ",(0,o.jsx)(n.code,{children:"App robustness"})," and ",(0,o.jsx)(n.code,{children:"stability"})," improvements.\nWe have also added several ",(0,o.jsx)(n.code,{children:"HTML and Text Editing"})," workflow improvements."]}),"\n",(0,o.jsx)(n.h2,{id:"now-available-on-chromeos",children:"Now Available on ChromeOS"}),"\n",(0,o.jsx)(n.p,{children:"All new native ChromeOS app is now available on the Google Play Store.\nThe ChromeOS app is a highly requested feature and is specially made for education and student use."}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.a,{href:"https://play.google.com/store/apps/details?id=prod.phcode.twa",children:(0,o.jsx)(n.img,{src:"https://github.com/user-attachments/assets/0a7f20ce-653c-43a8-ac3e-3875ea74df5b",alt:"google play icon (1)"})})}),"\n",(0,o.jsx)(n.h2,{id:"auto-rename-start-and-end-of-htmlxmlsvg-tags",children:"Auto rename start and end of HTML/XML/SVG tags"}),"\n",(0,o.jsxs)(n.p,{children:["Automatically rename paired HTML/XML/SVG tags as you type at the start or end of the tag. ",(0,o.jsx)(n.a,{href:"https://docs.phcode.dev/docs/editing-text/#auto-rename-tag",children:"Read more..."})]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{src:"https://github.com/user-attachments/assets/ad82db8c-df1c-4c83-a5db-145caab539ec",alt:"tag sync"})}),"\n",(0,o.jsx)(n.h2,{id:"auto-tab-and-spacing-detection",children:"Auto Tab and Spacing detection"}),"\n",(0,o.jsxs)(n.p,{children:["Phoenix Code can now automatically detect and apply the indentation style (tabs or spaces) based on the existing code in the file.\n",(0,o.jsx)(n.a,{href:"https://docs.phcode.dev/docs/editing-text/#auto-space-detection",children:"Read more..."})]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{src:"https://github.com/user-attachments/assets/0adc47c5-a561-4002-bffb-d7bcde999b9d",alt:"image"})}),"\n",(0,o.jsx)(n.h2,{id:"ux-improvements",children:"UX Improvements"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.code,{children:"Reopen closed files"})," option added to ",(0,o.jsx)(n.code,{children:"File"})," menu. Shortcut: ",(0,o.jsx)(n.code,{children:"Ctrl-Shift-T"}),", or (",(0,o.jsx)(n.code,{children:"Cmd-Shift-T"})," on Mac)."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.code,{children:"Go to Next Problem"})," and ",(0,o.jsx)(n.code,{children:"Go to Previous Problem"})," option added to ",(0,o.jsxs)(n.a,{href:"https://github.com/phcode-dev/phoenix/pull/1732",children:[(0,o.jsx)(n.code,{children:"Navigate"})," menu."]})]}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"https://github.com/orgs/phcode-dev/discussions/1809",children:"Tab key press to insert code hints"})}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.code,{children:"window.alert"}),", ",(0,o.jsx)(n.code,{children:"window.confirm"})," and ",(0,o.jsx)(n.code,{children:"window.prompt"})," APIs ",(0,o.jsx)(n.a,{href:"https://github.com/phcode-dev/phoenix/pull/1814",children:"will work in live preview"})]}),"\n",(0,o.jsxs)(n.li,{children:["Clicking on live preview no longer automatically switches from your ",(0,o.jsx)(n.a,{href:"https://github.com/phcode-dev/phoenix/pull/1800",children:"current unrelated file to the main HTML file."})]}),"\n",(0,o.jsxs)(n.li,{children:["Live preview usability and navigation improvements - (",(0,o.jsx)(n.a,{href:"https://github.com/phcode-dev/phoenix/pull/1741",children:"1"}),", ",(0,o.jsx)(n.a,{href:"https://github.com/phcode-dev/phoenix/pull/1760",children:"2"}),")"]}),"\n",(0,o.jsxs)(n.li,{children:["Increase/Decrease font size will ",(0,o.jsx)(n.a,{href:"https://github.com/phcode-dev/phoenix/pull/1799",children:"change the Editor Font size Only"}),"."]}),"\n",(0,o.jsx)(n.li,{children:"Fixed issue where code folding markers disappear when hovering over gutter in dark theme."}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.code,{children:".cjs"})," and ",(0,o.jsx)(n.code,{children:".mjs"})," files support as javascript files."]}),"\n",(0,o.jsxs)(n.li,{children:["Support for ",(0,o.jsx)(n.code,{children:"shtml"})," custom server live preview."]}),"\n"]}),"\n",(0,o.jsx)(n.h2,{id:"stability-improvements",children:"Stability Improvements"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"https://github.com/phcode-dev/phoenix/issues/1791",children:"Fixes node crashes after wakeup from sleep in Windows/Mac."})}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"https://github.com/phcode-dev/phoenix/issues/1821",children:"Kaspersky AV trojan horse false positive mitigation."})}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"https://github.com/phcode-dev/phoenix/pull/1818",children:"Corrupt preferences auto reset."})}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"https://github.com/phcode-dev/phoenix/pull/1812",children:"Boot time crash recovery."})}),"\n",(0,o.jsxs)(n.li,{children:["Phoenix Code won't start in ",(0,o.jsx)(n.a,{href:"https://github.com/phcode-dev/phoenix/pull/1740",children:"some Fedora/other Linux distros."})]}),"\n"]}),"\n",(0,o.jsx)(n.h2,{id:"update-on-release-schedule",children:"Update on Release Schedule"}),"\n",(0,o.jsx)(n.p,{children:"In the past, we've released Phoenix Code updates on a monthly basis. However, last month we encountered an issue with our release that led to stability problems for our users."}),"\n",(0,o.jsx)(n.p,{children:"To address this, we've taken a step back to reevaluate our release process and make improvements to ensure greater robustness and reliability going forward."}),"\n",(0,o.jsx)(n.p,{children:"As a result, we've decided to slow down the desktop release schedule to once every two months. This will allow us to thoroughly test each update and deliver a more stable experience."}),"\n",(0,o.jsx)(n.p,{children:"We apologize for any inconvenience caused by the previous release and appreciate your patience and understanding as we work to improve the quality of Phoenix Code."}),"\n",(0,o.jsx)(n.p,{children:"We look forward to bringing you new features and improvements in a more controlled and reliable manner."}),"\n",(0,o.jsx)(n.h2,{id:"a-request-from-the-phoenix-team",children:"A Request from the Phoenix Team:"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Share your feedback:"})," ",(0,o.jsx)(n.a,{href:"https://github.com/orgs/phcode-dev/discussions",children:"https://github.com/orgs/phcode-dev/discussions"})]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Spread the word"})," about Phoenix to friends and colleagues."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsxs)(n.a,{href:"https://github.com/sponsors/phcode-dev",children:[(0,o.jsx)(n.strong,{children:"Consider supporting us"})," on GitHub Sponsors"]}),".\nEvery contribution helps us to keep improving Phoenix Code."]}),"\n"]}),"\n",(0,o.jsx)(n.p,{children:"With gratitude,"}),"\n",(0,o.jsx)(n.p,{children:"The Phoenix Team"})]})}function c(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(h,{...e})}):h(e)}},28453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>r});var i=t(96540);const o={},s=i.createContext(o);function a(e){const n=i.useContext(s);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:a(e.components),i.createElement(s.Provider,{value:n},e.children)}},49520:e=>{e.exports=JSON.parse('{"permalink":"/blog/release-3.9","editUrl":"https://github.com/phcode-dev/docs/blob/main/blog/2024-09-02-Release-3.9/index.md","source":"@site/blog/2024-09-02-Release-3.9/index.md","title":"HTML Workflows and stability Release (September-2024, V-3.9) is now Live","description":"Phoenix Code 3.9 improves app stability and robustness, adds HTML and text editing workflow enhancements, and ChromeOS support.","date":"2024-09-02T00:00:00.000Z","tags":[{"inline":true,"label":"Live Preview","permalink":"/blog/tags/live-preview"},{"inline":true,"label":"Live Code Hints","permalink":"/blog/tags/live-code-hints"},{"inline":true,"label":"Windows","permalink":"/blog/tags/windows"},{"inline":true,"label":"Linux","permalink":"/blog/tags/linux"},{"inline":true,"label":"Mac","permalink":"/blog/tags/mac"},{"inline":true,"label":"Release","permalink":"/blog/tags/release"}],"readingTime":3.05,"hasTruncateMarker":false,"authors":[{"name":"Arun Bose","title":"Co-Founder, Phoenix Code","url":"https://github.com/abose","imageURL":"https://github.com/abose.png","key":"arun","page":null},{"name":"Charly P Abraham","title":"Co-Founder, Phoenix Code","url":"https://github.com/charlypa","imageURL":"https://github.com/charlypa.png","key":"charly","page":null},{"name":"Kiran Bose","title":"Community Contributor","url":"https://github.com/kiranbose","imageURL":"https://github.com/kiranbose.png","key":"kiran","page":null},{"name":"Devansh Agarwal","title":"Founding Engineer, Phoenix Code","url":"https://github.com/devvaannsh","imageURL":"https://github.com/devvaannsh.png","key":"devvaannsh","page":null},{"name":"Jozsef","title":"Community Contributor","url":"https://github.com/jozsefk9","imageURL":"https://github.com/jozsefk9.png","key":"jozsefk9","page":null},{"name":"acemi1","title":"Community Contributor","url":"https://github.com/acemi1","imageURL":"https://github.com/acemi1.png","key":"acemi1","page":null},{"name":"Phoenix Code Bot","title":"Our little elf who keeps the whole place together","url":"https://github.com/phoenixide","imageURL":"https://github.com/phoenixide.png","key":"phoenixBot","page":null}],"frontMatter":{"slug":"release-3.9","title":"HTML Workflows and stability Release (September-2024, V-3.9) is now Live","description":"Phoenix Code 3.9 improves app stability and robustness, adds HTML and text editing workflow enhancements, and ChromeOS support.","authors":["arun","charly","kiran","devvaannsh","jozsefk9","acemi1","phoenixBot"],"tags":["Live Preview","Live Code Hints","Windows","Linux","Mac","Release"]},"unlisted":false,"prevItem":{"title":"Editor Experience Release (November-2024, V-3.10) is now Live","permalink":"/blog/release-3.10"},"nextItem":{"title":"Critical Update + HTML Helpers Release (June-2024, V-3.8) is now Live","permalink":"/blog/release-3.8"}}')}}]); \ No newline at end of file diff --git a/assets/js/6765094f.0c81e154.js b/assets/js/6765094f.0c81e154.js new file mode 100644 index 00000000..25188708 --- /dev/null +++ b/assets/js/6765094f.0c81e154.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7370],{16491:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>t,contentTitle:()=>a,default:()=>o,frontMatter:()=>l,metadata:()=>i,toc:()=>c});const i=JSON.parse('{"id":"API-Reference/search/FindBar","title":"FindBar","description":"Import :","source":"@site/api/API-Reference/search/FindBar.md","sourceDirName":"API-Reference/search","slug":"/API-Reference/search/FindBar","permalink":"/api/API-Reference/search/FindBar","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"FileFilters","permalink":"/api/API-Reference/search/FileFilters"},"next":{"title":"FindInFiles","permalink":"/api/API-Reference/search/FindInFiles"}}');var s=r(74848),d=r(28453);const l={},a=void 0,t={},c=[{value:"Import :",id:"import-",level:3},{value:"FindBar",id:"findbar",level:2},{value:"new FindBar([scopeLabel])",id:"new-findbarscopelabel",level:3},{value:"findBar.open()",id:"findbaropen",level:3},{value:"findBar.close(suppressAnimation)",id:"findbarclosesuppressanimation",level:3},{value:"findBar.isClosed() \u21d2 boolean",id:"findbarisclosed--boolean",level:3},{value:"findBar.getOptions() \u21d2 Object",id:"findbargetoptions--object",level:3},{value:"findBar.getQueryInfo() \u21d2 Object",id:"findbargetqueryinfo--object",level:3},{value:"findBar.showError(error, [isHTML], [isFilterError])",id:"findbarshowerrorerror-ishtml-isfiltererror",level:3},{value:"findBar.showFindCount(count)",id:"findbarshowfindcountcount",level:3},{value:"findBar.showNoResults(showIndicator, showMessage)",id:"findbarshownoresultsshowindicator-showmessage",level:3},{value:"findBar.getReplaceText() \u21d2 string",id:"findbargetreplacetext--string",level:3},{value:"findBar.enable(enable)",id:"findbarenableenable",level:3},{value:"findBar.isEnabled() \u21d2 boolean",id:"findbarisenabled--boolean",level:3},{value:"findBar.isReplaceEnabled() \u21d2 boolean",id:"findbarisreplaceenabled--boolean",level:3},{value:"findBar.enableNavigation(enable)",id:"findbarenablenavigationenable",level:3},{value:"findBar.enableReplace(enable)",id:"findbarenablereplaceenable",level:3},{value:"findBar.focusQuery()",id:"findbarfocusquery",level:3},{value:"findBar.focusReplace()",id:"findbarfocusreplace",level:3},{value:"findBar.showIndexingSpinner()",id:"findbarshowindexingspinner",level:3},{value:"findBar.redoInstantSearch()",id:"findbarredoinstantsearch",level:3}];function h(e){const n={a:"a",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,d.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h3,{id:"import-",children:"Import :"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-js",children:'const FindBar = brackets.getModule("search/FindBar")\n'})}),"\n",(0,s.jsx)("a",{name:"FindBar"}),"\n",(0,s.jsx)(n.h2,{id:"findbar",children:"FindBar"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global class"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"#FindBar",children:"FindBar"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"#new_FindBar_new",children:"new FindBar([scopeLabel])"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"#FindBar+open",children:".open()"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"#FindBar+close",children:".close(suppressAnimation)"})}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"#FindBar+isClosed",children:".isClosed()"})," \u21d2 ",(0,s.jsx)("code",{children:"boolean"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"#FindBar+getOptions",children:".getOptions()"})," \u21d2 ",(0,s.jsx)("code",{children:"Object"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"#FindBar+getQueryInfo",children:".getQueryInfo()"})," \u21d2 ",(0,s.jsx)("code",{children:"Object"})]}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"#FindBar+showError",children:".showError(error, [isHTML], [isFilterError])"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"#FindBar+showFindCount",children:".showFindCount(count)"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"#FindBar+showNoResults",children:".showNoResults(showIndicator, showMessage)"})}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"#FindBar+getReplaceText",children:".getReplaceText()"})," \u21d2 ",(0,s.jsx)("code",{children:"string"})]}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"#FindBar+enable",children:".enable(enable)"})}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"#FindBar+isEnabled",children:".isEnabled()"})," \u21d2 ",(0,s.jsx)("code",{children:"boolean"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"#FindBar+isReplaceEnabled",children:".isReplaceEnabled()"})," \u21d2 ",(0,s.jsx)("code",{children:"boolean"})]}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"#FindBar+enableNavigation",children:".enableNavigation(enable)"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"#FindBar+enableReplace",children:".enableReplace(enable)"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"#FindBar+focusQuery",children:".focusQuery()"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"#FindBar+focusReplace",children:".focusReplace()"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"#FindBar+showIndexingSpinner",children:".showIndexingSpinner()"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"#FindBar+redoInstantSearch",children:".redoInstantSearch()"})}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)("a",{name:"new_FindBar_new"}),"\n",(0,s.jsx)(n.h3,{id:"new-findbarscopelabel",children:"new FindBar([scopeLabel])"}),"\n",(0,s.jsx)(n.p,{children:"Find Bar UI component, used for both single- and multi-file find/replace. This doesn't actually\ncreate and add the FindBar to the DOM - for that, call open()."}),"\n",(0,s.jsx)(n.p,{children:"Dispatches these events:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"queryChange - when the user types in the input field or sets a query option. Use getQueryInfo()\nto get the current query state."}),"\n",(0,s.jsx)(n.li,{children:"doFind - when the user chooses to do a Find Previous or Find Next.\nParameters are:\nshiftKey - boolean, false for Find Next, true for Find Previous"}),"\n",(0,s.jsx)(n.li,{children:"doReplace - when the user chooses to do a single replace. Use getReplaceText() to get the current replacement text."}),"\n",(0,s.jsx)(n.li,{children:"doReplaceBatch - when the user chooses to initiate a Replace All. Use getReplaceText() to get the current replacement text."}),"\n",(0,s.jsx)(n.li,{children:"doReplaceAll - when the user chooses to perform a Replace All. Use getReplaceText() to get the current replacement text."}),"\n",(0,s.jsx)(n.li,{children:"close - when the find bar is closed"}),"\n"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"[options.multifile]"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"boolean"})}),(0,s.jsx)(n.td,{children:"true if this is a Find/Replace in Files (changes the behavior of Enter in the fields, hides the navigator controls, shows the scope/filter controls, and if in replace mode, hides the Replace button (so there's only Replace All)"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"[options.replace]"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"boolean"})}),(0,s.jsx)(n.td,{children:"true to show the Replace controls - default false"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"[options.queryPlaceholder]"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(n.td,{children:"label to show in the Find field - default empty string"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"[options.initialQuery]"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(n.td,{children:"query to populate in the Find field on open - default empty string"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"[scopeLabel]"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(n.td,{children:"HTML label to show for the scope of the search, expected to be already escaped - default empty string"})]})]})]}),"\n",(0,s.jsx)("a",{name:"FindBar+open"}),"\n",(0,s.jsx)(n.h3,{id:"findbaropen",children:"findBar.open()"}),"\n",(0,s.jsx)(n.p,{children:"Opens the Find bar, closing any other existing Find bars."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,s.jsx)(n.a,{href:"#FindBar",children:(0,s.jsx)("code",{children:"FindBar"})})]}),"\n",(0,s.jsx)("a",{name:"FindBar+close"}),"\n",(0,s.jsx)(n.h3,{id:"findbarclosesuppressanimation",children:"findBar.close(suppressAnimation)"}),"\n",(0,s.jsx)(n.p,{children:"Closes this Find bar. If already closed, does nothing."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,s.jsx)(n.a,{href:"#FindBar",children:(0,s.jsx)("code",{children:"FindBar"})})]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"suppressAnimation"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"boolean"})}),(0,s.jsx)(n.td,{children:"If true, don't do the standard closing animation. Default false."})]})})]}),"\n",(0,s.jsx)("a",{name:"FindBar+isClosed"}),"\n",(0,s.jsxs)(n.h3,{id:"findbarisclosed--boolean",children:["findBar.isClosed() \u21d2 ",(0,s.jsx)("code",{children:"boolean"})]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,s.jsx)(n.a,{href:"#FindBar",children:(0,s.jsx)("code",{children:"FindBar"})}),(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"boolean"})," - true if this FindBar has been closed."]}),"\n",(0,s.jsx)("a",{name:"FindBar+getOptions"}),"\n",(0,s.jsxs)(n.h3,{id:"findbargetoptions--object",children:["findBar.getOptions() \u21d2 ",(0,s.jsx)("code",{children:"Object"})]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,s.jsx)(n.a,{href:"#FindBar",children:(0,s.jsx)("code",{children:"FindBar"})}),(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"Object"})," - The options passed into the FindBar."]}),"\n",(0,s.jsx)("a",{name:"FindBar+getQueryInfo"}),"\n",(0,s.jsxs)(n.h3,{id:"findbargetqueryinfo--object",children:["findBar.getQueryInfo() \u21d2 ",(0,s.jsx)("code",{children:"Object"})]}),"\n",(0,s.jsx)(n.p,{children:"Returns the current query and parameters."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,s.jsx)(n.a,{href:"#FindBar",children:(0,s.jsx)("code",{children:"FindBar"})})]}),"\n",(0,s.jsx)("a",{name:"FindBar+showError"}),"\n",(0,s.jsx)(n.h3,{id:"findbarshowerrorerror-ishtml-isfiltererror",children:"findBar.showError(error, [isHTML], [isFilterError])"}),"\n",(0,s.jsx)(n.p,{children:"Show or clear an error message related to the query."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,s.jsx)(n.a,{href:"#FindBar",children:(0,s.jsx)("code",{children:"FindBar"})})]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"error"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(n.td,{children:"The error message to show, or null to hide the error display."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"[isHTML]"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"boolean"})}),(0,s.jsx)(n.td,{children:"Whether the error message is HTML that should remain unescaped."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"[isFilterError]"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"boolean"})}),(0,s.jsx)(n.td,{children:"Whether the error related to file filters"})]})]})]}),"\n",(0,s.jsx)("a",{name:"FindBar+showFindCount"}),"\n",(0,s.jsx)(n.h3,{id:"findbarshowfindcountcount",children:"findBar.showFindCount(count)"}),"\n",(0,s.jsx)(n.p,{children:"Set the find count."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,s.jsx)(n.a,{href:"#FindBar",children:(0,s.jsx)("code",{children:"FindBar"})})]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"count"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(n.td,{children:"The find count message to show. Can be the empty string to hide it."})]})})]}),"\n",(0,s.jsx)("a",{name:"FindBar+showNoResults"}),"\n",(0,s.jsx)(n.h3,{id:"findbarshownoresultsshowindicator-showmessage",children:"findBar.showNoResults(showIndicator, showMessage)"}),"\n",(0,s.jsx)(n.p,{children:"Show or hide the no-results indicator and optional message. This is also used to\nindicate regular expression errors."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,s.jsx)(n.a,{href:"#FindBar",children:(0,s.jsx)("code",{children:"FindBar"})})]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"showIndicator"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"boolean"})})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"showMessage"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"boolean"})})]})]})]}),"\n",(0,s.jsx)("a",{name:"FindBar+getReplaceText"}),"\n",(0,s.jsxs)(n.h3,{id:"findbargetreplacetext--string",children:["findBar.getReplaceText() \u21d2 ",(0,s.jsx)("code",{children:"string"})]}),"\n",(0,s.jsx)(n.p,{children:"Returns the current replace text."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,s.jsx)(n.a,{href:"#FindBar",children:(0,s.jsx)("code",{children:"FindBar"})})]}),"\n",(0,s.jsx)("a",{name:"FindBar+enable"}),"\n",(0,s.jsx)(n.h3,{id:"findbarenableenable",children:"findBar.enable(enable)"}),"\n",(0,s.jsxs)(n.p,{children:["Enables or disables the controls in the Find bar. Note that if enable is true, ",(0,s.jsx)(n.em,{children:"all"})," controls will be\nre-enabled, even if some were previously disabled using enableNavigation() or enableReplace(), so you\nwill need to refresh their enable state after calling this."]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,s.jsx)(n.a,{href:"#FindBar",children:(0,s.jsx)("code",{children:"FindBar"})})]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"enable"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"boolean"})}),(0,s.jsx)(n.td,{children:"Whether to enable or disable the controls."})]})})]}),"\n",(0,s.jsx)("a",{name:"FindBar+isEnabled"}),"\n",(0,s.jsxs)(n.h3,{id:"findbarisenabled--boolean",children:["findBar.isEnabled() \u21d2 ",(0,s.jsx)("code",{children:"boolean"})]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,s.jsx)(n.a,{href:"#FindBar",children:(0,s.jsx)("code",{children:"FindBar"})}),(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"boolean"})," - true if the FindBar is enabled."]}),"\n",(0,s.jsx)("a",{name:"FindBar+isReplaceEnabled"}),"\n",(0,s.jsxs)(n.h3,{id:"findbarisreplaceenabled--boolean",children:["findBar.isReplaceEnabled() \u21d2 ",(0,s.jsx)("code",{children:"boolean"})]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,s.jsx)(n.a,{href:"#FindBar",children:(0,s.jsx)("code",{children:"FindBar"})}),(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"boolean"})," - true if the Replace button is enabled."]}),"\n",(0,s.jsx)("a",{name:"FindBar+enableNavigation"}),"\n",(0,s.jsx)(n.h3,{id:"findbarenablenavigationenable",children:"findBar.enableNavigation(enable)"}),"\n",(0,s.jsx)(n.p,{children:"Enable or disable the navigation controls if present. Note that if the Find bar is currently disabled\n(i.e. isEnabled() returns false), this will have no effect."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,s.jsx)(n.a,{href:"#FindBar",children:(0,s.jsx)("code",{children:"FindBar"})})]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"enable"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"boolean"})}),(0,s.jsx)(n.td,{children:"Whether to enable the controls."})]})})]}),"\n",(0,s.jsx)("a",{name:"FindBar+enableReplace"}),"\n",(0,s.jsx)(n.h3,{id:"findbarenablereplaceenable",children:"findBar.enableReplace(enable)"}),"\n",(0,s.jsx)(n.p,{children:"Enable or disable the replace controls if present. Note that if the Find bar is currently disabled\n(i.e. isEnabled() returns false), this will have no effect."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,s.jsx)(n.a,{href:"#FindBar",children:(0,s.jsx)("code",{children:"FindBar"})})]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"enable"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"boolean"})}),(0,s.jsx)(n.td,{children:"Whether to enable the controls."})]})})]}),"\n",(0,s.jsx)("a",{name:"FindBar+focusQuery"}),"\n",(0,s.jsx)(n.h3,{id:"findbarfocusquery",children:"findBar.focusQuery()"}),"\n",(0,s.jsx)(n.p,{children:"Sets focus to the query field and selects its text."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,s.jsx)(n.a,{href:"#FindBar",children:(0,s.jsx)("code",{children:"FindBar"})})]}),"\n",(0,s.jsx)("a",{name:"FindBar+focusReplace"}),"\n",(0,s.jsx)(n.h3,{id:"findbarfocusreplace",children:"findBar.focusReplace()"}),"\n",(0,s.jsx)(n.p,{children:"Sets focus to the replace field and selects its text."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,s.jsx)(n.a,{href:"#FindBar",children:(0,s.jsx)("code",{children:"FindBar"})})]}),"\n",(0,s.jsx)("a",{name:"FindBar+showIndexingSpinner"}),"\n",(0,s.jsx)(n.h3,{id:"findbarshowindexingspinner",children:"findBar.showIndexingSpinner()"}),"\n",(0,s.jsx)(n.p,{children:"The indexing spinner is usually shown when node is indexing files"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,s.jsx)(n.a,{href:"#FindBar",children:(0,s.jsx)("code",{children:"FindBar"})})]}),"\n",(0,s.jsx)("a",{name:"FindBar+redoInstantSearch"}),"\n",(0,s.jsx)(n.h3,{id:"findbarredoinstantsearch",children:"findBar.redoInstantSearch()"}),"\n",(0,s.jsx)(n.p,{children:"Force a search again"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,s.jsx)(n.a,{href:"#FindBar",children:(0,s.jsx)("code",{children:"FindBar"})})]})]})}function o(e={}){const{wrapper:n}={...(0,d.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},28453:(e,n,r)=>{r.d(n,{R:()=>l,x:()=>a});var i=r(96540);const s={},d=i.createContext(s);function l(e){const n=i.useContext(d);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),i.createElement(d.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/6875c492.32e5eabe.js b/assets/js/6875c492.32e5eabe.js new file mode 100644 index 00000000..b015c00f --- /dev/null +++ b/assets/js/6875c492.32e5eabe.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4813],{47713:(e,t,a)=>{a.d(t,{A:()=>r});a(96540);var n=a(21312),s=a(39022),i=a(74848);function r(e){const{metadata:t}=e,{previousPage:a,nextPage:r}=t;return(0,i.jsxs)("nav",{className:"pagination-nav","aria-label":(0,n.T)({id:"theme.blog.paginator.navAriaLabel",message:"Blog list page navigation",description:"The ARIA label for the blog pagination"}),children:[a&&(0,i.jsx)(s.A,{permalink:a,title:(0,i.jsx)(n.A,{id:"theme.blog.paginator.newerEntries",description:"The label used to navigate to the newer blog posts page (previous page)",children:"Newer entries"})}),r&&(0,i.jsx)(s.A,{permalink:r,title:(0,i.jsx)(n.A,{id:"theme.blog.paginator.olderEntries",description:"The label used to navigate to the older blog posts page (next page)",children:"Older entries"}),isNext:!0})]})}},82907:(e,t,a)=>{a.d(t,{A:()=>B});a(96540);var n=a(34164),s=a(44096),i=a(74848);function r({children:e,className:t}){return(0,i.jsx)("article",{className:t,children:e})}var l=a(28774);const o={title:"title_f1Hy"};function c({className:e}){const{metadata:t,isBlogPostPage:a}=(0,s.e7)(),{permalink:r,title:c}=t,d=a?"h1":"h2";return(0,i.jsx)(d,{className:(0,n.A)(o.title,e),children:a?c:(0,i.jsx)(l.A,{to:r,children:c})})}var d=a(21312),g=a(53465),u=a(36266);const m={container:"container_mt6G"};function h({readingTime:e}){const t=function(){const{selectMessage:e}=(0,g.W)();return t=>{const a=Math.ceil(t);return e(a,(0,d.T)({id:"theme.blog.post.readingTime.plurals",description:'Pluralized label for "{readingTime} min read". Use as much plural forms (separated by "|") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)',message:"One min read|{readingTime} min read"},{readingTime:a}))}}();return(0,i.jsx)(i.Fragment,{children:t(e)})}function p({date:e,formattedDate:t}){return(0,i.jsx)("time",{dateTime:e,children:t})}function x(){return(0,i.jsx)(i.Fragment,{children:" \xb7 "})}function j({className:e}){const{metadata:t}=(0,s.e7)(),{date:a,readingTime:r}=t,l=(0,u.i)({day:"numeric",month:"long",year:"numeric",timeZone:"UTC"});return(0,i.jsxs)("div",{className:(0,n.A)(m.container,"margin-vert--md",e),children:[(0,i.jsx)(p,{date:a,formattedDate:(o=a,l.format(new Date(o)))}),void 0!==r&&(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(x,{}),(0,i.jsx)(h,{readingTime:r})]})]});var o}var b=a(39907);const A={authorCol:"authorCol_Hf19",imageOnlyAuthorRow:"imageOnlyAuthorRow_pa_O",imageOnlyAuthorCol:"imageOnlyAuthorCol_G86a"};function f({className:e}){const{metadata:{authors:t},assets:a}=(0,s.e7)();if(0===t.length)return null;const r=t.every((({name:e})=>!e)),l=1===t.length;return(0,i.jsx)("div",{className:(0,n.A)("margin-top--md margin-bottom--sm",r?A.imageOnlyAuthorRow:"row",e),children:t.map(((e,t)=>(0,i.jsx)("div",{className:(0,n.A)(!r&&(l?"col col--12":"col col--6"),r?A.imageOnlyAuthorCol:A.authorCol),children:(0,i.jsx)(b.A,{author:{...e,imageURL:a.authorsImageUrls[t]??e.imageURL}})},t)))})}function v(){return(0,i.jsxs)("header",{children:[(0,i.jsx)(c,{}),(0,i.jsx)(j,{}),(0,i.jsx)(f,{})]})}var T=a(70440),N=a(56314);function w({children:e,className:t}){const{isBlogPostPage:a}=(0,s.e7)();return(0,i.jsx)("div",{id:a?T.LU:void 0,className:(0,n.A)("markdown",t),children:(0,i.jsx)(N.A,{children:e})})}var _=a(17559),k=a(4336),y=a(62053);function P(){return(0,i.jsx)("b",{children:(0,i.jsx)(d.A,{id:"theme.blog.post.readMore",description:"The label used in blog post item excerpts to link to full blog posts",children:"Read more"})})}function R(e){const{blogPostTitle:t,...a}=e;return(0,i.jsx)(l.A,{"aria-label":(0,d.T)({message:"Read more about {title}",id:"theme.blog.post.readMoreLabel",description:"The ARIA label for the link to full blog posts from excerpts"},{title:t}),...a,children:(0,i.jsx)(P,{})})}function U(){const{metadata:e,isBlogPostPage:t}=(0,s.e7)(),{tags:a,title:r,editUrl:l,hasTruncateMarker:o,lastUpdatedBy:c,lastUpdatedAt:d}=e,g=!t&&o,u=a.length>0;if(!(u||g||l))return null;if(t){const e=!!(l||d||c);return(0,i.jsxs)("footer",{className:"docusaurus-mt-lg",children:[u&&(0,i.jsx)("div",{className:(0,n.A)("row","margin-top--sm",_.G.blog.blogFooterEditMetaRow),children:(0,i.jsx)("div",{className:"col",children:(0,i.jsx)(y.A,{tags:a})})}),e&&(0,i.jsx)(k.A,{className:(0,n.A)("margin-top--sm",_.G.blog.blogFooterEditMetaRow),editUrl:l,lastUpdatedAt:d,lastUpdatedBy:c})]})}return(0,i.jsxs)("footer",{className:"row docusaurus-mt-lg",children:[u&&(0,i.jsx)("div",{className:(0,n.A)("col",{"col--9":g}),children:(0,i.jsx)(y.A,{tags:a})}),g&&(0,i.jsx)("div",{className:(0,n.A)("col text--right",{"col--3":u}),children:(0,i.jsx)(R,{blogPostTitle:r,to:e.permalink})})]})}function B({children:e,className:t}){const a=function(){const{isBlogPostPage:e}=(0,s.e7)();return e?void 0:"margin-bottom--xl"}();return(0,i.jsxs)(r,{className:(0,n.A)(a,t),children:[(0,i.jsx)(v,{}),(0,i.jsx)(w,{children:e}),(0,i.jsx)(U,{})]})}},33892:(e,t,a)=>{a.d(t,{A:()=>r});a(96540);var n=a(44096),s=a(82907),i=a(74848);function r({items:e,component:t=s.A}){return(0,i.jsx)(i.Fragment,{children:e.map((({content:e})=>(0,i.jsx)(n.in,{content:e,children:(0,i.jsx)(t,{children:(0,i.jsx)(e,{})})},e.metadata.permalink)))})}},33069:(e,t,a)=>{a.r(t),a.d(t,{default:()=>b});a(96540);var n=a(34164),s=a(21312),i=a(45500),r=a(17559),l=a(96461),o=a(28774),c=a(28027),d=a(47713),g=a(41463),u=a(33892),m=a(32234),h=a(51107),p=a(74848);function x({tag:e}){const t=(0,l.ZD)(e);return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)(i.be,{title:t,description:e.description}),(0,p.jsx)(g.A,{tag:"blog_tags_posts"})]})}function j({tag:e,items:t,sidebar:a,listMetadata:n}){const i=(0,l.ZD)(e);return(0,p.jsxs)(c.A,{sidebar:a,children:[e.unlisted&&(0,p.jsx)(m.A,{}),(0,p.jsxs)("header",{className:"margin-bottom--xl",children:[(0,p.jsx)(h.A,{as:"h1",children:i}),e.description&&(0,p.jsx)("p",{children:e.description}),(0,p.jsx)(o.A,{href:e.allTagsPath,children:(0,p.jsx)(s.A,{id:"theme.tags.tagsPageLink",description:"The label of the link targeting the tag list page",children:"View All Tags"})})]}),(0,p.jsx)(u.A,{items:t}),(0,p.jsx)(d.A,{metadata:n})]})}function b(e){return(0,p.jsxs)(i.e3,{className:(0,n.A)(r.G.wrapper.blogPages,r.G.page.blogTagPostListPage),children:[(0,p.jsx)(x,{...e}),(0,p.jsx)(j,{...e})]})}},32234:(e,t,a)=>{a.d(t,{A:()=>c});a(96540);var n=a(34164),s=a(44084),i=a(17559),r=a(27293),l=a(74848);function o({className:e}){return(0,l.jsx)(r.A,{type:"caution",title:(0,l.jsx)(s.Rc,{}),className:(0,n.A)(e,i.G.common.unlistedBanner),children:(0,l.jsx)(s.Uh,{})})}function c(e){return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.AE,{}),(0,l.jsx)(o,{...e})]})}},39022:(e,t,a)=>{a.d(t,{A:()=>r});a(96540);var n=a(34164),s=a(28774),i=a(74848);function r(e){const{permalink:t,title:a,subLabel:r,isNext:l}=e;return(0,i.jsxs)(s.A,{className:(0,n.A)("pagination-nav__link",l?"pagination-nav__link--next":"pagination-nav__link--prev"),to:t,children:[r&&(0,i.jsx)("div",{className:"pagination-nav__sublabel",children:r}),(0,i.jsx)("div",{className:"pagination-nav__label",children:a})]})}},56133:(e,t,a)=>{a.d(t,{A:()=>l});a(96540);var n=a(34164),s=a(28774);const i={tag:"tag_zVej",tagRegular:"tagRegular_sFm0",tagWithCount:"tagWithCount_h2kH"};var r=a(74848);function l({permalink:e,label:t,count:a,description:l}){return(0,r.jsxs)(s.A,{rel:"tag",href:e,title:l,className:(0,n.A)(i.tag,a?i.tagWithCount:i.tagRegular),children:[t,a&&(0,r.jsx)("span",{children:a})]})}},62053:(e,t,a)=>{a.d(t,{A:()=>o});a(96540);var n=a(34164),s=a(21312),i=a(56133);const r={tags:"tags_jXut",tag:"tag_QGVx"};var l=a(74848);function o({tags:e}){return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("b",{children:(0,l.jsx)(s.A,{id:"theme.tags.tagsListLabel",description:"The label alongside a tag list",children:"Tags:"})}),(0,l.jsx)("ul",{className:(0,n.A)(r.tags,"padding--none","margin-left--sm"),children:e.map((e=>(0,l.jsx)("li",{className:r.tag,children:(0,l.jsx)(i.A,{...e})},e.permalink)))})]})}},96461:(e,t,a)=>{a.d(t,{ZD:()=>r,uz:()=>l});a(96540);var n=a(21312),s=a(53465);a(74848);function i(){const{selectMessage:e}=(0,s.W)();return t=>e(t,(0,n.T)({id:"theme.blog.post.plurals",description:'Pluralized label for "{count} posts". Use as much plural forms (separated by "|") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)',message:"One post|{count} posts"},{count:t}))}function r(e){const t=i();return(0,n.T)({id:"theme.blog.tagTitle",description:"The title of the page for a blog tag",message:'{nPosts} tagged with "{tagName}"'},{nPosts:t(e.count),tagName:e.label})}const l=()=>(0,n.T)({id:"theme.blog.authorsList.pageTitle",message:"Authors",description:"The title of the authors page"})},44084:(e,t,a)=>{a.d(t,{AE:()=>o,Rc:()=>r,TT:()=>d,Uh:()=>l,Yh:()=>c});a(96540);var n=a(21312),s=a(5260),i=a(74848);function r(){return(0,i.jsx)(n.A,{id:"theme.contentVisibility.unlistedBanner.title",description:"The unlisted content banner title",children:"Unlisted page"})}function l(){return(0,i.jsx)(n.A,{id:"theme.contentVisibility.unlistedBanner.message",description:"The unlisted content banner message",children:"This page is unlisted. Search engines will not index it, and only users having a direct link can access it."})}function o(){return(0,i.jsx)(s.A,{children:(0,i.jsx)("meta",{name:"robots",content:"noindex, nofollow"})})}function c(){return(0,i.jsx)(n.A,{id:"theme.contentVisibility.draftBanner.title",description:"The draft content banner title",children:"Draft page"})}function d(){return(0,i.jsx)(n.A,{id:"theme.contentVisibility.draftBanner.message",description:"The draft content banner message",children:"This page is a draft. It will only be visible in dev and be excluded from the production build."})}}}]); \ No newline at end of file diff --git a/assets/js/694988c4.3da3fda1.js b/assets/js/694988c4.3da3fda1.js new file mode 100644 index 00000000..240abee6 --- /dev/null +++ b/assets/js/694988c4.3da3fda1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8968],{76458:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>l,frontMatter:()=>o,metadata:()=>n,toc:()=>u});const n=JSON.parse('{"id":"API-Reference/features/PriorityBasedRegistration","title":"PriorityBasedRegistration","description":"Import :","source":"@site/api/API-Reference/features/PriorityBasedRegistration.md","sourceDirName":"API-Reference/features","slug":"/API-Reference/features/PriorityBasedRegistration","permalink":"/api/API-Reference/features/PriorityBasedRegistration","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"NewFileContentManager","permalink":"/api/API-Reference/features/NewFileContentManager"},"next":{"title":"QuickViewManager","permalink":"/api/API-Reference/features/QuickViewManager"}}');var i=r(74848),s=r(28453);const o={},a=void 0,c={},u=[{value:"Import :",id:"import-",level:3}];function d(e){const t={code:"code",h3:"h3",pre:"pre",...(0,s.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.h3,{id:"import-",children:"Import :"}),"\n",(0,i.jsx)(t.pre,{children:(0,i.jsx)(t.code,{className:"language-js",children:'const PriorityBasedRegistration = brackets.getModule("features/PriorityBasedRegistration")\n'})})]})}function l(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(d,{...e})}):d(e)}},28453:(e,t,r)=>{r.d(t,{R:()=>o,x:()=>a});var n=r(96540);const i={},s=n.createContext(i);function o(e){const t=n.useContext(s);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),n.createElement(s.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/6950ff21.0b829216.js b/assets/js/6950ff21.0b829216.js new file mode 100644 index 00000000..638d6751 --- /dev/null +++ b/assets/js/6950ff21.0b829216.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8836],{84426:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>d,contentTitle:()=>l,default:()=>o,frontMatter:()=>c,metadata:()=>t,toc:()=>a});const t=JSON.parse('{"id":"API-Reference/search/QuickOpen","title":"QuickOpen","description":"Import :","source":"@site/api/API-Reference/search/QuickOpen.md","sourceDirName":"API-Reference/search","slug":"/API-Reference/search/QuickOpen","permalink":"/api/API-Reference/search/QuickOpen","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"FindUtils","permalink":"/api/API-Reference/search/FindUtils"},"next":{"title":"QuickOpenHelper","permalink":"/api/API-Reference/search/QuickOpenHelper"}}');var r=i(74848),s=i(28453);const c={},l=void 0,d={},a=[{value:"Import :",id:"import-",level:3},{value:"SymbolKind : Object",id:"symbolkind--object",level:2},{value:"QuickOpenPlugin()",id:"quickopenplugin",level:2},{value:"addQuickOpenPlugin(pluginDef)",id:"addquickopenpluginplugindef",level:2},{value:"highlightMatch(item, matchClass, rangeFilter) \u21d2 string",id:"highlightmatchitem-matchclass-rangefilter--string",level:2},{value:"beginSearch(prefix, initialString)",id:"beginsearchprefix-initialstring",level:2}];function h(e){const n={br:"br",code:"code",h2:"h2",h3:"h3",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"import-",children:"Import :"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-js",children:'const QuickOpen = brackets.getModule("search/QuickOpen")\n'})}),"\n",(0,r.jsx)("a",{name:"SymbolKind"}),"\n",(0,r.jsxs)(n.h2,{id:"symbolkind--object",children:["SymbolKind : ",(0,r.jsx)("code",{children:"Object"})]}),"\n",(0,r.jsx)(n.p,{children:"Represents the symbol kind"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,r.jsx)("a",{name:"QuickOpenPlugin"}),"\n",(0,r.jsx)(n.h2,{id:"quickopenplugin",children:"QuickOpenPlugin()"}),"\n",(0,r.jsx)(n.p,{children:"Defines API for new QuickOpen plug-ins"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,r.jsx)("a",{name:"addQuickOpenPlugin"}),"\n",(0,r.jsx)(n.h2,{id:"addquickopenpluginplugindef",children:"addQuickOpenPlugin(pluginDef)"}),"\n",(0,r.jsx)(n.p,{children:"Creates and registers a new QuickOpenPlugin"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Param"}),(0,r.jsx)(n.th,{children:"Type"}),(0,r.jsx)(n.th,{children:"Description"})]})}),(0,r.jsx)(n.tbody,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"pluginDef"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"Object"})}),(0,r.jsxs)(n.td,{children:["Plugin definition object containing the following properties: {string} name - Plug-in name, ",(0,r.jsx)(n.strong,{children:"must be unique"}),'. {Array(string)} languageIds - Language Ids array. Example: ["javascript", "css", "html"]. To allow any language, pass []. Required. {function()} [done] - Called when quick open is complete. Plug-in should clear its internal state. Optional. {function(string, StringMatch.StringMatcher): (Array(SearchResult']})]})})]}),"\n",(0,r.jsx)("a",{name:"highlightMatch"}),"\n",(0,r.jsxs)(n.h2,{id:"highlightmatchitem-matchclass-rangefilter--string",children:["highlightMatch(item, matchClass, rangeFilter) \u21d2 ",(0,r.jsx)("code",{children:"string"})]}),"\n",(0,r.jsx)(n.p,{children:"Formats item's label as properly escaped HTML text, highlighting sections that match 'query'.\nIf item is a SearchResult generated by stringMatch(), uses its metadata about which string ranges\nmatched; else formats the label with no highlighting."}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global function",(0,r.jsx)(n.br,{}),"\n",(0,r.jsx)(n.strong,{children:"Returns"}),": ",(0,r.jsx)("code",{children:"string"})," - bolded, HTML-escaped result"]}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Param"}),(0,r.jsx)(n.th,{children:"Type"}),(0,r.jsx)(n.th,{children:"Description"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"item"}),(0,r.jsxs)(n.td,{children:[(0,r.jsx)("code",{children:"string"})," | ",(0,r.jsx)("code",{children:"SearchResult"})]}),(0,r.jsx)(n.td,{})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"matchClass"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"string"})}),(0,r.jsx)(n.td,{children:"CSS class for highlighting matched text"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"rangeFilter"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"function"})}),(0,r.jsx)(n.td,{})]})]})]}),"\n",(0,r.jsx)("a",{name:"beginSearch"}),"\n",(0,r.jsx)(n.h2,{id:"beginsearchprefix-initialstring",children:"beginSearch(prefix, initialString)"}),"\n",(0,r.jsx)(n.p,{children:"Opens the Quick Open bar prepopulated with the given prefix (to select a mode) and optionally\nwith the given query text too. Updates text field contents if Quick Open already open."}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Param"}),(0,r.jsx)(n.th,{children:"Type"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"prefix"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"string"})})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"initialString"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"string"})})]})]})]})]})}function o(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},28453:(e,n,i)=>{i.d(n,{R:()=>c,x:()=>l});var t=i(96540);const r={},s=t.createContext(r);function c(e){const n=t.useContext(s);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:c(e.components),t.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/6992.2b2c1e33.js b/assets/js/6992.2b2c1e33.js new file mode 100644 index 00000000..6b36328d --- /dev/null +++ b/assets/js/6992.2b2c1e33.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6992],{25871:(t,e,a)=>{function r(t,e){t.accDescr&&e.setAccDescription?.(t.accDescr),t.accTitle&&e.setAccTitle?.(t.accTitle),t.title&&e.setDiagramTitle?.(t.title)}a.d(e,{S:()=>r}),(0,a(40797).K2)(r,"populateCommonDb")},16992:(t,e,a)=>{a.d(e,{diagram:()=>z});var r=a(73590),n=a(25871),i=a(13226),s=a(67633),o=a(40797),l=a(78731),c={showLegend:!0,ticks:5,max:null,min:0,graticule:"circle"},d={axes:[],curves:[],options:c},g=structuredClone(d),u=s.UI.radar,h=(0,o.K2)((()=>(0,i.$t)({...u,...(0,s.zj)().radar})),"getConfig"),p=(0,o.K2)((()=>g.axes),"getAxes"),x=(0,o.K2)((()=>g.curves),"getCurves"),m=(0,o.K2)((()=>g.options),"getOptions"),$=(0,o.K2)((t=>{g.axes=t.map((t=>({name:t.name,label:t.label??t.name})))}),"setAxes"),f=(0,o.K2)((t=>{g.curves=t.map((t=>({name:t.name,label:t.label??t.name,entries:y(t.entries)})))}),"setCurves"),y=(0,o.K2)((t=>{if(null==t[0].axis)return t.map((t=>t.value));const e=p();if(0===e.length)throw new Error("Axes must be populated before curves for reference entries");return e.map((e=>{const a=t.find((t=>t.axis?.$refText===e.name));if(void 0===a)throw new Error("Missing entry for axis "+e.label);return a.value}))}),"computeCurveEntries"),v={getAxes:p,getCurves:x,getOptions:m,setAxes:$,setCurves:f,setOptions:(0,o.K2)((t=>{const e=t.reduce(((t,e)=>(t[e.name]=e,t)),{});g.options={showLegend:e.showLegend?.value??c.showLegend,ticks:e.ticks?.value??c.ticks,max:e.max?.value??c.max,min:e.min?.value??c.min,graticule:e.graticule?.value??c.graticule}}),"setOptions"),getConfig:h,clear:(0,o.K2)((()=>{(0,s.IU)(),g=structuredClone(d)}),"clear"),setAccTitle:s.SV,getAccTitle:s.iN,setDiagramTitle:s.ke,getDiagramTitle:s.ab,getAccDescription:s.m7,setAccDescription:s.EI},w=(0,o.K2)((t=>{(0,n.S)(t,v);const{axes:e,curves:a,options:r}=t;v.setAxes(e),v.setCurves(a),v.setOptions(r)}),"populate"),b={parse:(0,o.K2)((async t=>{const e=await(0,l.qg)("radar",t);o.Rm.debug(e),w(e)}),"parse")},C=(0,o.K2)(((t,e,a,n)=>{const i=n.db,s=i.getAxes(),o=i.getCurves(),l=i.getOptions(),c=i.getConfig(),d=i.getDiagramTitle(),g=(0,r.D)(e),u=M(g,c),h=l.max??Math.max(...o.map((t=>Math.max(...t.entries)))),p=l.min,x=Math.min(c.width,c.height)/2;K(u,s,x,l.ticks,l.graticule),L(u,s,x,c),T(u,s,o,p,h,l.graticule,c),O(u,o,l.showLegend,c),u.append("text").attr("class","radarTitle").text(d).attr("x",0).attr("y",-c.height/2-c.marginTop)}),"draw"),M=(0,o.K2)(((t,e)=>{const a=e.width+e.marginLeft+e.marginRight,r=e.height+e.marginTop+e.marginBottom,n=e.marginLeft+e.width/2,i=e.marginTop+e.height/2;return t.attr("viewbox",`0 0 ${a} ${r}`).attr("width",a).attr("height",r),t.append("g").attr("transform",`translate(${n}, ${i})`)}),"drawFrame"),K=(0,o.K2)(((t,e,a,r,n)=>{if("circle"===n)for(let i=0;i{const a=2*e*Math.PI/n-Math.PI/2;return`${s*Math.cos(a)},${s*Math.sin(a)}`})).join(" ");t.append("polygon").attr("points",o).attr("class","radarGraticule")}}}),"drawGraticule"),L=(0,o.K2)(((t,e,a,r)=>{const n=e.length;for(let i=0;i{if(e.entries.length!==o)return;const c=e.entries.map(((t,e)=>{const a=2*Math.PI*e/o-Math.PI/2,i=k(t,r,n,l);return{x:i*Math.cos(a),y:i*Math.sin(a)}}));"circle"===i?t.append("path").attr("d",A(c,s.curveTension)).attr("class",`radarCurve-${a}`):"polygon"===i&&t.append("polygon").attr("points",c.map((t=>`${t.x},${t.y}`)).join(" ")).attr("class",`radarCurve-${a}`)}))}function k(t,e,a,r){return r*(Math.min(Math.max(t,e),a)-e)/(a-e)}function A(t,e){const a=t.length;let r=`M${t[0].x},${t[0].y}`;for(let n=0;n{const r=t.append("g").attr("transform",`translate(${n}, ${i+20*a})`);r.append("rect").attr("width",12).attr("height",12).attr("class",`radarLegendBox-${a}`),r.append("text").attr("x",16).attr("y",0).attr("class","radarLegendText").text(e.label)}))}(0,o.K2)(T,"drawCurves"),(0,o.K2)(k,"relativeRadius"),(0,o.K2)(A,"closedRoundCurve"),(0,o.K2)(O,"drawLegend");var S={draw:C},I=(0,o.K2)(((t,e)=>{let a="";for(let r=0;r{const e=(0,s.P$)(),a=(0,s.zj)(),r=(0,i.$t)(e,a.themeVariables);return{themeVariables:r,radarOptions:(0,i.$t)(r.radar,t)}}),"buildRadarStyleOptions"),z={parser:b,db:v,renderer:S,styles:(0,o.K2)((({radar:t}={})=>{const{themeVariables:e,radarOptions:a}=D(t);return`\n\t.radarTitle {\n\t\tfont-size: ${e.fontSize};\n\t\tcolor: ${e.titleColor};\n\t\tdominant-baseline: hanging;\n\t\ttext-anchor: middle;\n\t}\n\t.radarAxisLine {\n\t\tstroke: ${a.axisColor};\n\t\tstroke-width: ${a.axisStrokeWidth};\n\t}\n\t.radarAxisLabel {\n\t\tdominant-baseline: middle;\n\t\ttext-anchor: middle;\n\t\tfont-size: ${a.axisLabelFontSize}px;\n\t\tcolor: ${a.axisColor};\n\t}\n\t.radarGraticule {\n\t\tfill: ${a.graticuleColor};\n\t\tfill-opacity: ${a.graticuleOpacity};\n\t\tstroke: ${a.graticuleColor};\n\t\tstroke-width: ${a.graticuleStrokeWidth};\n\t}\n\t.radarLegendText {\n\t\ttext-anchor: start;\n\t\tfont-size: ${a.legendFontSize}px;\n\t\tdominant-baseline: hanging;\n\t}\n\t${I(e,a)}\n\t`}),"styles")}}}]); \ No newline at end of file diff --git a/assets/js/69e7d938.68b9a7b2.js b/assets/js/69e7d938.68b9a7b2.js new file mode 100644 index 00000000..898b765f --- /dev/null +++ b/assets/js/69e7d938.68b9a7b2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5636],{45444:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>A,default:()=>a,frontMatter:()=>r,metadata:()=>i,toc:()=>c});const i=JSON.parse('{"id":"Live Preview/live-preview-edit","title":"Live Preview Edit","description":"Upgrade to Phoenix Code Pro to access this feature.","source":"@site/docs/02-Live Preview/02-live-preview-edit.md","sourceDirName":"02-Live Preview","slug":"/Pro Features/live-preview-edit","permalink":"/docs/Pro Features/live-preview-edit","draft":false,"unlisted":false,"editUrl":"https://github.com/phcode-dev/docs/blob/main/docs/02-Live Preview/02-live-preview-edit.md","tags":[],"version":"current","sidebarPosition":2,"frontMatter":{"title":"Live Preview Edit","slug":"/Pro Features/live-preview-edit"},"sidebar":"tutorialSidebar","previous":{"title":"Design Mode","permalink":"/docs/design-mode"},"next":{"title":"Device Preview","permalink":"/docs/Pro Features/device-preview"}}');var s=t(74848),o=t(28453),l=(t(96540),t(56399));const r={title:"Live Preview Edit",slug:"/Pro Features/live-preview-edit"},A=void 0,d={},c=[{value:"Enabling Edit Mode",id:"enabling-edit-mode",level:2},{value:"Control Box",id:"control-box",level:2},{value:"Element Info",id:"element-info",level:3},{value:"Select Parent",id:"select-parent",level:3},{value:"Tools",id:"tools",level:3},{value:"Hover Box",id:"hover-box",level:2},{value:"Inspect Element on Hover",id:"inspect-element-on-hover",level:2},{value:"Edit Element Properties",id:"edit-element-properties",level:2},{value:"Insert Element",id:"insert-element",level:2},{value:"Choosing a Position",id:"choosing-a-position",level:3},{value:"Picking an Element",id:"picking-an-element",level:3},{value:"Inline Text Editing",id:"inline-text-editing",level:2},{value:"Formatting Toolbar",id:"formatting-toolbar",level:3},{value:"More Formatting Options",id:"more-formatting-options",level:4},{value:"Drag and Drop",id:"drag-and-drop",level:2},{value:"Visual Indicators",id:"visual-indicators",level:4},{value:"Edit Hyperlink",id:"edit-hyperlink",level:2},{value:"Cut, Copy, and Paste",id:"cut-copy-and-paste",level:2},{value:"Using Keyboard Shortcuts",id:"using-keyboard-shortcuts",level:3},{value:"Using the More Options Menu",id:"using-the-more-options-menu",level:3},{value:"Undo and Redo",id:"undo-and-redo",level:2},{value:"Quick Preview Toggle",id:"quick-preview-toggle",level:2},{value:"Disabling Edit Mode for Specific Elements",id:"disabling-edit-mode-for-specific-elements",level:2}];function h(e){const n={a:"a",admonition:"admonition",blockquote:"blockquote",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.admonition,{title:"Pro Feature",type:"info",children:(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.a,{href:"https://phcode.io/pricing",children:"Upgrade to Phoenix Code Pro"})," to access this feature."]})}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Edit Mode"})," lets you modify your page directly in the Live Preview. You can edit text, insert new elements, rearrange them with drag and drop, swap images, edit links, and much more.",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Phoenix Code"})," updates your source code automatically as you make changes."]}),"\n",(0,s.jsx)(l.A,{src:"https://docs-images.phcode.dev/website/videos/lp-edit-pro-dialog.mp4"}),"\n",(0,s.jsx)(n.h2,{id:"enabling-edit-mode",children:"Enabling Edit Mode"}),"\n",(0,s.jsxs)(n.p,{children:["To switch to Edit Mode, click the ",(0,s.jsx)(n.strong,{children:"pen icon"})," in the Live Preview toolbar. This enables full interactivity in the Live Preview."]}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsxs)(n.p,{children:["When enabled, the ",(0,s.jsx)(n.strong,{children:"pen icon"})," is highlighted in orange color."]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"Live Preview Edit mode",src:t(46539).A+"",title:"Live Preview edit mode",width:"847",height:"164"})}),"\n",(0,s.jsxs)(n.p,{children:["Alternatively, you can switch to Edit Mode by updating the ",(0,s.jsx)(n.code,{children:"livePreviewMode"})," setting in the preferences file. See ",(0,s.jsx)(n.a,{href:"../editing-text#editing-preferences",children:"Editing Preferences"})," to learn how to edit the preferences file."]}),"\n",(0,s.jsx)(n.h2,{id:"control-box",children:"Control Box"}),"\n",(0,s.jsxs)(n.p,{children:["When you click an element in the Live Preview, a ",(0,s.jsx)(n.strong,{children:"Control Box"})," appears near it. This floating panel shows you what the element is and gives you tools to edit it."]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"Control Box",src:t(4924).A+"",title:"Control Box",width:"1052",height:"208"})}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsx)(n.p,{children:"The Control Box is shown only for editable elements. It is not shown for non-editable elements that are dynamically created by JavaScript."}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"element-info",children:"Element Info"}),"\n",(0,s.jsx)(n.p,{children:"The left side of the Control Box displays information about the selected element:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Tag name"}),": The element type (for example, ",(0,s.jsx)(n.code,{children:"div"}),", ",(0,s.jsx)(n.code,{children:"p"}),", ",(0,s.jsx)(n.code,{children:"img"}),")"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"ID"}),": The element\u2019s ID attribute (if present), shown with a ",(0,s.jsx)(n.code,{children:"#"})," prefix"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Dimensions"}),": The element\u2019s size in pixels (width \xd7 height)"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"CSS classes"}),": The element\u2019s classes, shown with a ",(0,s.jsx)(n.code,{children:"."})," prefix. If the element has more than three classes, only the first three are shown, followed by a \u201c+N more\u201d indicator"]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"Element Properties panel",src:t(96493).A+"",title:"Element Properties panel",width:"1057",height:"410"})}),"\n",(0,s.jsxs)(n.p,{children:["Clicking on the info section opens the ",(0,s.jsx)(n.a,{href:"#edit-element-properties",children:"Element Properties"})," editor, where you can edit the element\u2019s tag name, classes, and ID."]}),"\n",(0,s.jsx)(n.h3,{id:"select-parent",children:"Select Parent"}),"\n",(0,s.jsxs)(n.p,{children:["The ",(0,s.jsx)(n.strong,{children:"Select Parent"})," button ",(0,s.jsx)(n.em,{children:"(up-arrow icon)"})," appears next to the info section. Clicking it selects the parent of the currently selected element."]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"Select Parent button",src:t(45106).A+"",title:"Select Parent button",width:"1052",height:"208"})}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsxs)(n.p,{children:["This button appears only when a valid parent exists. It is not shown when the parent is ",(0,s.jsx)(n.code,{children:"body"}),", ",(0,s.jsx)(n.code,{children:"html"}),", or a JavaScript-rendered element."]}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"tools",children:"Tools"}),"\n",(0,s.jsx)(n.p,{children:"The right side of the Control Box displays a set of tools you can use to modify the selected element. The available tools depend on the element type. Some buttons are shown for all elements, while others appear only for specific element types."}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"Tools section",src:t(54606).A+"",title:"Tools section",width:"1052",height:"208"})}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Insert Element"})," ",(0,s.jsx)(n.em,{children:"(plus icon)"}),": Opens a panel where you can insert a new HTML element before, after, or inside the selected element.",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.em,{children:"This option is available for all elements."}),(0,s.jsx)(n.br,{}),"\n","See the ",(0,s.jsx)(n.a,{href:"#insert-element",children:"Insert Element"})," section for more details."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Edit Hyperlink"})," ",(0,s.jsx)(n.em,{children:"(chain icon)"}),": Opens a panel that lets you edit the element\u2019s ",(0,s.jsx)(n.code,{children:"href"})," attribute.",(0,s.jsx)(n.br,{}),"\n",(0,s.jsxs)(n.em,{children:["This button appears only for ",(0,s.jsx)(n.code,{children:""})," elements."]}),(0,s.jsx)(n.br,{}),"\n","See the ",(0,s.jsx)(n.a,{href:"#edit-hyperlink",children:"Edit Hyperlink"})," section for more details."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Change Image"})," ",(0,s.jsx)(n.em,{children:"(image icon)"}),": Opens an image gallery at the bottom of the Live Preview, where you can browse and select an image. You can also choose an image from your computer. Phoenix Code automatically saves the image to your project folder and updates the ",(0,s.jsx)(n.code,{children:"src"})," attribute of the element.",(0,s.jsx)(n.br,{}),"\n",(0,s.jsxs)(n.em,{children:["This button appears only for ",(0,s.jsx)(n.code,{children:""})," elements."]}),(0,s.jsx)(n.br,{}),"\n","See ",(0,s.jsx)(n.a,{href:"./image-gallery",children:"Image Gallery"})," for more details."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Edit Text"})," ",(0,s.jsx)(n.em,{children:"(pen icon)"}),": Opens inline text editing for the selected element. You can edit text directly in the Live Preview, and Phoenix Code automatically updates the source code.",(0,s.jsx)(n.br,{}),"\n",(0,s.jsxs)(n.em,{children:["This button appears only for elements that can contain text (it is not available for ",(0,s.jsx)(n.code,{children:""}),", ",(0,s.jsx)(n.code,{children:"
    "}),", ",(0,s.jsx)(n.code,{children:"
    "}),", ",(0,s.jsx)(n.code,{children:"
    "}),", etc.)."]}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"picking-an-element",children:"Picking an Element"}),"\n",(0,s.jsx)(n.p,{children:"The panel shows a grid of commonly used HTML elements like Paragraph, Heading, Link, Image, Button, Div, List, Form, and many more. Each item shows the element name and its HTML tag. Click an item to insert it."}),"\n",(0,s.jsxs)(n.p,{children:["Use the ",(0,s.jsx)(n.strong,{children:"search bar"})," at the top to filter elements by name or tag. If no matching element exists, you can type any valid HTML tag name and click ",(0,s.jsx)(n.strong,{children:"Create "})," to insert a custom element."]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"Create custom element",src:t(81747).A+"",title:"Create custom element",width:"1222",height:"509"})}),"\n",(0,s.jsx)(n.p,{children:"After inserting an element, Phoenix Code automatically selects it in the Live Preview so you can continue editing it."}),"\n",(0,s.jsx)(n.h2,{id:"inline-text-editing",children:"Inline Text Editing"}),"\n",(0,s.jsxs)(n.p,{children:["The ",(0,s.jsx)(n.strong,{children:"Inline Text Editing"})," feature lets you modify text content directly in the Live Preview, with all changes automatically synced to the source code."]}),"\n",(0,s.jsxs)(n.p,{children:["To start editing, ",(0,s.jsx)(n.strong,{children:"double-click"})," an element in the Live Preview or click the ",(0,s.jsx)(n.strong,{children:"Edit Text"})," button ",(0,s.jsx)(n.em,{children:"(pen icon)"})," in the Control Box.",(0,s.jsx)(n.br,{}),"\n","Edit the text as needed, then press ",(0,s.jsx)(n.code,{children:"Enter"})," to save or ",(0,s.jsx)(n.code,{children:"Esc"})," to cancel.",(0,s.jsx)(n.br,{}),"\n","To insert a line break, press ",(0,s.jsx)(n.code,{children:"Shift + Enter"}),"."]}),"\n",(0,s.jsx)(l.A,{src:"https://docs-images.phcode.dev/videos/live-preview-edit/inline-text-editing.mp4"}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsxs)(n.p,{children:["Text editing is available only for elements that can contain text. It is not supported for elements such as ",(0,s.jsx)(n.code,{children:""}),", ",(0,s.jsx)(n.code,{children:""}),") elements directly in the Live Preview."]}),"\n",(0,s.jsx)(l.A,{src:"https://docs-images.phcode.dev/videos/live-preview-edit/edit-hyperlink.mp4"}),"\n",(0,s.jsxs)(n.p,{children:["To edit a hyperlink, select an ",(0,s.jsx)(n.code,{children:""})," element and click the ",(0,s.jsx)(n.strong,{children:"Edit Hyperlink"})," button ",(0,s.jsx)(n.em,{children:"(chain icon)"})," in the ",(0,s.jsx)(n.a,{href:"#control-box",children:"Control Box"}),". A panel appears near the element with the following options:"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"URL input"}),": Edit the link's destination (",(0,s.jsx)(n.code,{children:"href"})," attribute). Press ",(0,s.jsx)(n.code,{children:"Enter"})," to save your changes or ",(0,s.jsx)(n.code,{children:"Esc"})," to cancel."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Opens in new tab"}),": Toggle this option to make the link open in a new tab. This adds ",(0,s.jsx)(n.code,{children:'target="_blank"'})," in your source code."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Open this link"}),": Opens the URL in your default browser. This option is available only in desktop apps."]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"cut-copy-and-paste",children:"Cut, Copy, and Paste"}),"\n",(0,s.jsxs)(n.p,{children:["You can cut, copy, and paste elements in Edit Mode using standard keyboard shortcuts or the Control Box ",(0,s.jsx)(n.strong,{children:"More Options"})," menu ",(0,s.jsx)(n.em,{children:"(three-dots icon)"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"using-keyboard-shortcuts",children:"Using Keyboard Shortcuts"}),"\n",(0,s.jsx)(n.p,{children:"When you click an element in the Live Preview, keyboard focus moves to the Live Preview. You can then use:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Ctrl/Cmd + X"}),": Cut the selected element"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Ctrl/Cmd + C"}),": Copy the selected element"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Ctrl/Cmd + V"}),": Paste the copied or cut element below the currently selected element"]}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"using-the-more-options-menu",children:"Using the More Options Menu"}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"More Options dropdown",src:t(31255).A+"",title:"More Options Dropdown",width:"1010",height:"478"})}),"\n",(0,s.jsxs)(n.p,{children:["Click the ",(0,s.jsx)(n.strong,{children:"More Options"})," button ",(0,s.jsx)(n.em,{children:"(three-dots icon)"})," in the Control Box and select ",(0,s.jsx)(n.strong,{children:"Cut"}),", ",(0,s.jsx)(n.strong,{children:"Copy"}),", or ",(0,s.jsx)(n.strong,{children:"Paste"})," from the dropdown menu."]}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsx)(n.p,{children:"Keyboard shortcuts apply to elements only when focus is in the Live Preview. When editing source code, the shortcuts affect the code instead."}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"undo-and-redo",children:"Undo and Redo"}),"\n",(0,s.jsx)(n.p,{children:"You can undo and redo changes made in Edit Mode using keyboard shortcuts:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Ctrl/Cmd + Z"}),": Undo the last change"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Ctrl/Cmd + Y"})," or ",(0,s.jsx)(n.strong,{children:"Ctrl/Cmd + Shift + Z"}),": Redo the last undone change"]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"These shortcuts work for all Edit Mode operations, including text edits, element moves, deletions, and other modifications."}),"\n",(0,s.jsx)(n.h2,{id:"quick-preview-toggle",children:"Quick Preview Toggle"}),"\n",(0,s.jsx)(n.admonition,{type:"note",children:(0,s.jsx)(n.p,{children:"The Quick Preview Toggle button is available only in the popped-out Live Preview window."})}),"\n",(0,s.jsxs)(n.p,{children:["A ",(0,s.jsx)(n.strong,{children:"Quick Preview Toggle"})," button is available at the top center of the popped-out Live Preview window. It lets you quickly switch to Preview Mode and back to the previously selected mode (Highlight Mode or Edit Mode). You can also use the ",(0,s.jsx)(n.code,{children:"F8"})," keyboard shortcut to toggle Preview Mode."]}),"\n",(0,s.jsx)(l.A,{src:"https://docs-images.phcode.dev/videos/live-preview-edit/quick-preview-toggle.mp4"}),"\n",(0,s.jsx)(n.p,{children:"The button is partially visible as a thin strip at the top edge of the Live Preview. Moving your cursor over this strip reveals the full button, which you can click to toggle Preview Mode."}),"\n",(0,s.jsx)(n.h2,{id:"disabling-edit-mode-for-specific-elements",children:"Disabling Edit Mode for Specific Elements"}),"\n",(0,s.jsx)(n.p,{children:"If you have interactive elements (like navigation menus, modals, or carousels) that need to respond to clicks normally, you can exclude them from Edit Mode behavior."}),"\n",(0,s.jsxs)(n.p,{children:["Add the ",(0,s.jsx)(n.code,{children:"phcode-no-lp-edit"})," class to any element you want to behave normally:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-html",children:'
    \n \x3c!-- Clicks and interactions inside this element work normally --\x3e\n
    \n'})}),"\n",(0,s.jsx)(n.p,{children:"When an element has this class, the element behaves as if you're in Preview Mode."}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsx)(n.p,{children:"This also applies to all child elements inside the marked element."}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["If you want only to exclude the particular element and not its children, use the class ",(0,s.jsx)(n.code,{children:"phcode-no-lp-edit-this"}),"."]}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsx)(n.p,{children:"Placing your cursor on the element in the source code will still highlight it in the Live Preview. To use edit features, click the element directly in the Live Preview."}),"\n"]})]})}function a(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},56399:(e,n,t)=>{t.d(n,{A:()=>o});var i=t(96540),s=t(74848);const o=({src:e,winLinuxTitle:n,macTitle:t})=>{const[o,l]=(0,i.useState)("");(0,i.useEffect)((()=>{navigator.platform.toLowerCase().includes("mac")?l(t):l(n)}),[n,t]);return(0,s.jsxs)("div",{style:{maxHeight:"68vh",width:"100%",display:"flex",justifyContent:"center",alignItems:"center",flexDirection:"column"},children:[(0,s.jsxs)("video",{style:{height:"90%",width:"100%"},controls:!0,autoPlay:!0,muted:!0,loop:!0,children:[(0,s.jsx)("source",{src:e,type:"video/mp4"}),"Your browser does not support the video tag."]}),(0,s.jsx)("div",{style:{width:"100%",textAlign:"center",fontSize:"1em",marginTop:"10px"},children:o})]})}},4924:(e,n,t)=>{t.d(n,{A:()=>i});const i=t.p+"assets/images/control-box-c1ae95fb08a3548ffa4739cb5762a236.png"},96493:(e,n,t)=>{t.d(n,{A:()=>i});const i=t.p+"assets/images/element-properties-042058b9f6ae7071eae412d838980f8c.png"},71550:(e,n,t)=>{t.d(n,{A:()=>i});const i=t.p+"assets/images/formatting-more-c0aa5b3a0757252c42110637508c1aa3.png"},64484:(e,n,t)=>{t.d(n,{A:()=>i});const i=t.p+"assets/images/formatting-toolbar-e8a66820b21615991d02f3bb8e187306.png"},49665:(e,n,t)=>{t.d(n,{A:()=>i});const i=t.p+"assets/images/hover-box-85f3ed7552a13e5f30d85c6d8b7397f0.png"},81747:(e,n,t)=>{t.d(n,{A:()=>i});const i=t.p+"assets/images/insert-element-custom-2d99e6a2fb736cd774ffcebbbace2db3.png"},73647:(e,n,t)=>{t.d(n,{A:()=>i});const i=t.p+"assets/images/insert-element-2b7c020e0a7a55d500ed7529a171b883.png"},12985:(e,n,t)=>{t.d(n,{A:()=>i});const i=t.p+"assets/images/inspect-element-hover-7ce4a08eab7f5896b2ac7bc32e09a281.png"},46539:(e,n,t)=>{t.d(n,{A:()=>i});const i="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA08AAACkCAYAAABPVRXGAAAACXBIWXMAAC4jAAAuIwF4pT92AAAgAElEQVR4Xu3dCXhVxfnH8TdAIKxhEZClQMRAAJVFGhYVCLKDQkQFNKVQ9oKyiFRIFy226r/K6oZ7ay0RqRVRqeyyNTw0LYK2CFRLkRQfN4ICErY/77Q3TcJN7tx7ziWT+J3n6VMlc+bM/cw1h9+ZOXNiEhMTzwkFAQQQQAABBBBAAAEEEECgWIEYwhPfEAQQQAABBBBAAAEEEEAgtADhKbQRNRBAAAEEEEAAAQQQQAABITzxJUAAAQQQQAABBBBAAAEELAQITxZIVEEAAQQQQAABBBBAAAEECE98BxBAAAEEEEAAAQQQQAABCwHCkwUSVRBAAAEEEEAAAQQQQAABwlOE34GYGJH2zWJl3+HT8tUJdnuPkJHDEEAAAQQQQAABBBAoUiDm/F+6mzdvLlWqVCmyztmzZ+Wjjz6SY8eORV3SOjxpx+vXry8JCQly8uRJOXjwoHz22Wdy7tw5ue6666Rhw4by8ssv+97hdu3aSd26dU27X375pfz5z3/OO0ejRo2kdevW5t9Pnz4tmZmZcuLECd/7ULjB6nExsmRsTWnXNFZO5J6TyS/kSOa+3KiflxMggAACRQmUK1dO9OJBcU+gT58+Uq1atbyOHT9+XP74xz+611F6hAACCDgoMHToUElKSgrZM80CixcvFv0dG81iFZ5atWol/fr1uyDx/fvf/5bly5ebnzVu3FjmzZvne1/nzJkjGty0fP3117Jo0SIT2LT07NlTunTpknfOFStWyHvvved7H/I3WO58V0Z0rSzpQ6rn/fGxk+ekx9zPRP+fggACCJSEwM0332x+R7799tt5vyNt+6E3or766is5evSo7SEF6lWvXl369u0rb7zxhnzzzTcRtRHsoJSUFMnOzpYPPvjAtzYLNxQXFyeDBg2SVatWRe2OZXx8vFSsWFEqVKggN9xwg9SuXVsefPDBqH0mGkYAAQTKkoBmAZ1V2rZtW5EfSyd4evfuLRcjC4QMTxqchgwZIkeOHJFNmzaZC5lOm+n0WdeuXc2FUmeiKleuHJXwlJ6eLu+//765sJ06deqCO6uVKlWS73znOzJs2DBZuXKl7Nq1K2rfl2r/nXFauvWEtGpUQUZ3/9/0Yer8L+SD7NNROzcNI4AAAkUJ6KzT9OnTRYNAVlZW2AHqjjvukH/84x/y1ltvRYSsYWDSpEmycOFCE+D8Kt///vdNcNJVBcGK3ljTu5F79uwJOzAG2tPgd+edd8qjjz4qOTk5EXVdg5EGpMJFV0IEPDQ4acDdv3+/dOjQQZ566qmIzsVBCCCAwLdNQLOA/v1e/55fVGnatKmkpaVFPQvo+YsNT3ox+OEPfyiHDx+W3/72tya8mIPOX7CaNWsml19+uSQnJ5s/04tENGaeZs+ebcDefPPNIsF01ksvstFMmxqcnh5XU9o2iZUz51fGzM44mhegNu3JlYnPHvm2fZf5vAgg4ICABqebbrpJWrZsmdebcAOU3hDLzc01y58jKSUVnnQp3NSpU+WBBx6IeMmi1/CkdrqkJNg6+08++US2bt1qZpwCwUmXno8fP57wFMkXjWMQQOBbKVCqwpPeHevfv7/5Jf/pp5/mDVgg3eUfQb1jp3fu/C56V1HP/fnnnxfZtP7loW3btvK3v/3NzIL5XapW+k9w0mecAiUQoOIqxsjKrPOzb6dZsue3O+0hgEDxAsGCU+CIcAKULls7cOCA7N6926ws0L/ov/7662YpXoMGDcyfb9myJe/3q95A0yV1V155pbmppje4unfvXmDmSZ+Pvf76682MzD//+U8zq6U32fT5H/3/zZs3m65effXVcumllwa9QRaYeapataq0adPG3Mh75513REOJLjXU65Mu1dB/P3PmjDz//POmnoa5L774wjyPq2XDhg1y6NAhU18/z1/+8hf505/+ZI7xGp70udtLLrnErMwIVgoHJ61DeOK/bAQQQMBeoFSFJ72A6gVKl2LkL4GZJ12qECi6eURxAceeyK2awYJToIebz884TWDGya0BozcIlHEBDSMaSurUqWM+ab169YJ+Yn029He/+50JLqFK/uVxgTChgUQDhrajIWrt2rUmRGnR4KQ3rHRFgM64XHvttZKYmJgXnjQMfe973zM/12uDBittR5+R1Z/p+Z5++mmzpG3y5Mny+9//Xv71r39d0E2tpxsG7dixw3yObt26mQC3bNky0UB1xRVXSK9evcy/axD68MMPzWoI7c/HH38s27dvN0vkdKWELj3XdjRwaojKyMgwgdFreNKl7RqeAmEw/4cIFpz05zp2ZfF6Gep7xs8RQACBSARKVXjStYN6YXniiSci+ayl/hgNTk+dn3Fqn2/GKfChtu7NlSnP54Q94zRmzBjzl4f8RZfLqLGfzwqUenw+AAIIBBXQmRP93Zz/5lX+ihpS1q1bZ56tsf0LerDw9Nxzz4luCqQlNTXVPN+qz57GxsbKjBkzzLpyne3XUnjZni5j03Nv3Lgx7+cTJ06Uhx9+2CwP1PCiz8nqTJLu1KqhKljRfunOruvXrzc/1pUIAwYMkPnz55swpjf3Ro0aVWDZnoYnnc1asmSJWcqn4UtnenQ3WDXRMnLkSBO0dDYtWuGpcHDSJYb6mfOv4uArjgACCCAQWsDv8NSiRQuzwiKwIV2gB/p8rV4/Q5Vin3m65pprzB3DBQsWRH3bv6I6WqNGDbPEI/C8VVH19OKtW5kHduIL9cFD/bzy+eV4z2hwOv8up8Il0uCk7ejd2oEDBxYYMN0hUJfI+NX3UJ+NnyOAQOkW0E1yhg8ffkGA0t8huuNduBvnBAtP+TdQ0BkffbZUZ7L05o/eBHrkkUfydtYrHJ6mTJliwonOOgWK7o767LPPmvCgSwN1gwktutROl9gFK4U3jAgEocC5iwpPOiOl4U+LzjTps7MvvPCCWbqnRX8H659rAIxGeAo241TcDFXp/jbSewQQQCC6An6HJ91cSW9C6rLvQNFVDXqN043xQpViw5Pe4fzBD35glmroX+5LosycOVPeffddWbNmTZGn1w8/duxYc/fSry1tZw+uJqkdK4tuFJG/eAlOgXbat29v7rxq4tWdBHWjC4JTSXy7OCcCpVdAnym67bbbCnwAXSa3c+fOsD9UqPCkzw5pYNMLS+CZ1+LCk+78p7v36cxS/qLXEr0ZpoFl3Lhx5negzroX9U6OwuFJl8dNmDAhL7jZhCc9h25zmz886exV+fLloxaeatasaZz02hUohKewv5YcgAACCBgBv8OTtqkrAW6//XYToDQ4LV26NO8GWyj2kFuV657pugxCZ0d0KiuwtEwvWp06dTIP3tqsqQ/VkaJ+Hg2wUH0pX05k23115aUtx2Vir6p51f0IToHG9EFrHTA1JTiFGhF+jgAC+QUCMxs6Y6Oz2YElfI899ph5tifcEk54qlWrltmFVZ8z2rdvnzlV4ZknXRanfdNZsGBl8ODB5lqiIUOX8RW1/axteNJ3JukzT1r0epV/5qkkwlOwz0x4CvdbSX0EEEDgPwKaBXR1mS7jLqro0ujLLrssrK3KdRWE5hzdBTWwMsHGPGR40kYCAUr/WV+iqBduPaEupfvDH/6QdwG1OWG4dRRM19rrbn4K9+qrr+aFjauuuspcKPUvDnpB9+s9T8nNK8pTY+NlwP99IcO7VDYvxd154FREzziF+3mpjwACCBQnUHhJWGAJnz6LpJv7BNsyO5RoOOFJ29JlezqDpDvo6ct1dUMJnVEPvOdJw4u+PF1n1fU5Iw0wukmCLtnT/t56661mxknf06fPI+mMll4U9f2B+r/Vq1ebLocKTxq+dMOJ3/zmN3kX1XDDk9591Ge4tD9FLR8szs82FNnWCzVW/BwBBBD4tgloFshf9HlW3Wioc+fO5pqSv/iVBYoztgpP2oCuNddEp0tFtNO6E5NuhRvtTQ70beyBNYlFhSftnwY5vctp+4B0cSh3Dawmo7pVOX/BF/n8q7PyyvYT8tT645LLduTftv9e+bwIOCWgIUQfctU3reudskDRi4fudhfYWCHcTocbnvR3svZDn0nVm1u6K5/uwLd48eK8a4I+M6u73unPdYmcPoelM+0avHT5nu6Ep0WXBOpGEPo8lO4iqDNp+s5Avc6ECk96fOAdVxoatQ3dqjycmSdtQ/ukyzb0fYbhFttQZFsv3PNTHwEEECjrAqNHjzabCwVKceFJNwvK/7xtNGysw1M0Tu5qm50TK5p3Om36+0n5e/bp8zNdrvaUfiGAwLdJQGdJdMMGDU8uFA1PegNNL2TBim7KoHV0diqwrK64fms41NkoDVzhFD2Hth/JrJueR8+rbegKh3CLvpxYA1uwrcrzt6WBTm/y6Q5/FAQQQAABewFdZdCuXTuz6q2ootehvXv3ms2Kol0IT9EWpn0EEEAAgTIroLNq+i6pwktHCn9gXRWh2+BG40XuZRaXD4YAAgg4KEB4cnBQ6BICCCCAAAIIIIAAAgi4J0B4cm9M6BECCCCAAAIIIIAAAgg4KEB4cnBQ6BICCCCAAAIIIIAAAgi4J0B4cm9M6BECCCCAAAIIIIAAAgg4KEB4cnBQ6BICCCCAAAIIIIAAAgi4J0B4cm9M6BECCCCAAAIIIIAAAgg4KEB4cnBQ6BICCCCAAAIIIIAAAgi4JxCTnJzMK2DdGxd6hAACCCCAAAIIIIAAAo4JxJw7XxzrE91BAAEEEEAAAQQQQAABBJwTIDw5NyR0CAEEEEAAAQQQQAABBFwUIDz5MCo6ebd7925JSEiQihUrSqVKlXxolSYQQAABBBBAAAEEEEDAJQHCk0+jsWDBAtmxY4cMHjxYUlNTJTY21qeWaQYBBBBAAAEEEEAAAQRcECA8+TAKOTk5MnfuXJk3b57UqVNH7r77bunfv7+0bNnSzERREEAAAQQQQAABBBBAoPQLEJ58GMNTp07JmDFjJCMjQ/Sf69evL61bt5aZM2fKgAEDRJf1xcTE+HAmmkAAAQQQQAABBBBAAIGSEiA8+SCfnZ0t99xzj7z44ot5rWlYSkpKkrS0NLnxxhulTZs2BCgfrGkCAQQQQAABBBBAAIGSEiA8+SB/9OhR86zTpk2b5OzZswVarFGjhtlIQpf0tW/fXuLj46VcuXI+nJUmEEAAAQQQQAABBBBA4GIKEJ580N63b59MnTpVVq1aFbQ1nYVq27at9O7dW8aOHSstWrTw4aw0gQACCCCAAAIIIIAAAhdTgPDkg/aXX34pPXr0kF27dhXZmgaoChUqSL9+/WTixInSuXNnqV27tg9npwkEEEAAAQQQQAABBBC4GAKEJx+U3333XROIMjMzQ7amS/Z0Fz4NW3PmzJGGDRuyjC+kGhUQQAABBBBAAAEEECh5AcKTD2Nw8OBB+e53vyuffPKJdWv6It3AO6F0W3N9FoqCAAIIIIAAAggggAAC7goQnnwYmw0bNsidd94p7733Xlit6Tug6tata7Y5HzVqlDRu3JiX64YlSGUEEEAAAQQQQAABBC6eAOHJo7XurpeVlSU9e/aUr7/+OqLWKleubJ6FSk1NlZtuukmqVq0aUTschAACCCCAAAIIIIAAAtETIDz5YLts2TKZNWuWHDhwwFNr9erVk7vvvtvsyqfvhdINJigIIIAAAggggAACCCDghgDhyeM4nD59WlasWCHDhw8X/WevpVatWtKhQweZPn269O3bV8qXL8/Ldb2icjwCCCCAAAIIIIAAAj4IEJ58QHz88cclPT1djhw54kNr/2miadOmMnr0aBkwYIB5uS6zUL7R0hACCCCAAAIIIIAAAhEJEJ4iYvvfQefOnZOFCxea5XZ+zDwFWtYtzfXZp1atWsm8efMkKSlJ6tSp47G3HI4AAggggAACCCCAAAKRChCeIpX773G5ubny8MMPy/333y8nTpzw2NqFh+uyPX0vlM5AjR8/XhITE30/Bw0igAACCCCAAAIIIIBAaAHCU2ijYmvobnu6ZG/+/Ply8uRJj60VfXhMTIykpKSYLdGTk5Pl0ksv5VmoqGnTMAIIIIAAAggggAACFwoQnjx+K/Q5p3vvvVcWLVokuoQvmkXfC5WQkCB9+vQxM126rE9npigIIIAAAggggAACCCAQfQHCk0djXao3btw4efnll3195qm4bgXeCzV06FAZNGiQxMfHe/wUHI4AAggggAACCCCAAAKhBAhPoYRC/Dw7O1vuuusuycjI8NhSeIfHxsZK9erVZezYsTJhwgRp2LChxMXFhdcItRFAAAEEEEAAAQQQQMBagPBkTRW84tGjR0VngNatWxf1ZXvBeqDvhbr22mvl5ptvlpEjR5o+6PNRFAQQQAABBBBAAAEEEPBXgPDk0XP//v0yefJkWb16tceWvB1ev359MwOWlpYmDRo08NYYRyOAAAIIIIAAAggggMAFAoQnj1+KnJwc6datm+zatctjS94O1y3M+/fvb8JTx44dmX3yxsnRCCCAAAIIIIAAAggQnvz+DmRlZcmUKVMkMzPT76at2mvRooV06tRJOnfuLF27dpV27dpZHUclBBBAAAEEEEAAAQQQCE+AmafwvArU1ueLDh8+bALLp59+elGfedIX5+YPTW3btvXwSTgUAQQQQAABBBBAAAEEQgkQnkIJhfi5Pus0Y8YMef/99z22ZHe4hiadZQrMNF111VV2B1ILAQQQQAABBBBAAAEEPAkQnjzwnT17VrZv3y49e/aUb775xkNLoQ9NSkoqEJquvPLK0AdRAwEEEEAAAQQQQAABBHwTIDx5pNT3O82aNUsOHjzosaXgh7dq1apAaLriiiuich4aRQABBBBAAAEEEEAAgeIFCE8eviFnzpyR5cuXy4gRI3x/3knf1TR8+HBJSUkxG0G0adPGQ085FAEEEEAAAQQQQAABBLwKEJ48Cj7xxBMyZ84cOXLkiMeWLjx8zJgx8swzz/jeLg0igAACCCCAAAIIIIBA+AKEp/DN8o7Q3fYWLlwo99xzj5w8edJDS8EPjY2NlY8//ljq1avne9s0iAACCCCAAAIIIIAAAuEJEJ7C8ypQOzc3Vx566CF54IEH5MSJEx5aKvpQDWbaPgUBBBBAAAEEEEAAAQRKVoDw5MH/1KlT8uMf/1gWLFggGqSiUSpVqmRmny655JJoNE+bCCCAAAIIIIAAAgggYClAeLKEClZNn3NKT0+XJ598UnTbcpui72XSdzTpe6G2bt1qc4h5puoXv/iFVV0qIYAAAggggAACCCCAQHQECE8eXI8dOyYTJkyQpUuXhgxPbdu2LbDluL4XSv/MpsTFxcmhQ4ekdu3aNtWpgwACCCCAAAIIIIAAAlEQIDx5QM3OzpZp06bJK6+8UmQr7dq1M6GpS5cu5n+JiYl5dUeNGiW//vWvrXqgywPnzp1rVZdKCCCAAAIIIIAAAggg4L8A4cmDaU5Ojtxyyy2yZs2aC1pp3759gdB0+eWXX1Bn586dovVsSpUqVczsU82aNW2qUwcBBBBAAAEEEEAAAQR8FiA8eQDdv3+/TJo0SdauXZvXSocOHaRTp05mlklfbtu8efNizzBy5Eh58cUXrXrx05/+VO677z6rulRCAAEEEEAAAQQQQAABfwUITx489bml5ORk2b17t1x99dUFQtNll11m1fJf//pX0cBlU6pVq2Z23ouPj7epTh0EEEAAAQQQQAABBBDwUYDw5AFz7969snjxYtGX5QZmmhISEsJuMS0tTV566SWr4+6991752c9+ZlWXSggggAACCCCAAAIIIOCfAOHJg+Xx48dFn1tq1KiRNG3aNOKWsrKypGPHjlbH16hRw8w+Va9e3ao+lRBAAAEEEEAAAQQQQMAfAcKTP46eW7ntttvMluc2hdknGyXqIIAAAggggAACCCDgrwDhyV/PiFvbsWOHeX7KpuiOezr7VLVqVZvq1EEAAQQQQAABBBBAAAEfBAhPPiD61cSIESMkIyPDqrmf//zn8pOf/MSqLpUQQAABBBBAAAEEEEDAuwDhybuhby1s377dvBvKptSqVcu896ly5co21amDAAIIIIAAAggggAACHgUITx4B/T582LBhsmzZMqtm77//fklPT7eqSyUEEEAAAQQQQAABBBDwJkB48ubn+9GZmZlm23ObUqdOHfPsU1xcnE116iCAAAIIIIAAAggggIAHAcKTB7xoHXrLLbfI8uXLrZr/5S9/KbNnz7aqSyUEEEAAAQQQQAABBBCIXIDwFLld1I7ctm2bXHPNNVbt161b18w+VaxY0ao+lRBAAAEEEEAAAQQQQCAyAcJTZG5RP2ro0KHy6quvWp3nwQcflB/96EdWdamEAAIIIIAAAggggAACkQkQniJzi/pRW7Zskeuuu87qPPXr1zezTxUqVLCqTyUEEEAAAQQQQAABBBAIX4DwFL7ZRTsiNTVVXnvtNavzPfTQQzJr1iyrulRCAAEEEEAAAQQQQACB8AUIT+GbXbQjNm3aJN27d7c6X4MGDczsU7ly5azqUwkBBBBAAAEEEEAAAQTCEyA8hed10WsPGTJEVqxYYXXeX/3qVzJz5kyrulRCAAEEEEAAAQQQQACB8AQIT+F5XfTaGzdulJSUFKvzNmzYUA4dOmRVl0oIIIAAAggggAACCCAQngDhKTyvEql94403ysqVK63O/cgjj8iMGTOs6lIJAQQQQAABBBBAAAEE7AUIT/ZWJVZzw4YN0rNnT6vzN27cWA4ePGhVl0oIIIAAAggggAACCCBgL0B4srcq0ZqDBg2SN99806oP8+fPl2nTplnVpRICCCCAAAIIIIAAAgjYCRCe7JxKvNa6deukV69eVv1o0qSJHDhwwKoulRBAAAEEEEAAAQQQQMBOgPBk5+RErQEDBsiqVaus+rJgwQKZOnWqVV0qIYAAAggggAACCCCAQGgBwlNoI2dqrFmzRvr06WPVn2bNmslHH31kVZdKCCCAAAIIIIAAAgggEFqA8BTayKka/fr1k7ffftuqT4sWLZI77rjDqi6VEEAAAQQQQAABBBBAoHgBwlMp+4ZocNIAZVMSEhLkww8/tKlKHQQQQAABBBBAAAEEEAghQHgqhV+Rvn37yurVq616/uijj8rkyZOt6lIJAQQQQAABBBBAAAEEihYgPJXCb4duGqGbR9iU5s2by/79+22qUgcBBBBAAAEEEEAAAQSKESA8ldKvR+/evWXt2rVWvX/88cdl0qRJVnWphAACCCCAAAIIIIAAAsEFCE+l9Jvx1ltvycCBA616n5iYKHv37rWqSyUEEEAAAQQQQAABBBAgPJW578D1118v69evt/pcTz75pEyYMMGqLpUQQAABBBBAAAEEEEDgQgFmnkrxt+KNN96QG264weoTtGzZUvbs2WNVl0oIIIAAAggggAACCCBAeCpz34GUlBTZuHGj1edasmSJjB8/3qoulRBAAAEEEEAAAQQQQKCgADNPpfwb8frrr8vgwYNDfoomTZrItGnTZPr06SHrUgEBBBBAAAEEEEAAAQSYeSqT34EePXrIO++8E/SzNW3aVG6//XYZNmyYtG7dWipUqFAmDfhQCCCAAAIIIIAAAghEW4CZp2gLX4T2X3vtNUlNTS1wpmbNmuWFplatWhGaLsI4cAoEEEAAAQQQQACBsi1AeCoj49utWzfZvHmzJCQkSFpamtx6662SlJREaCoj48vHQAABBBBAAAEEECh5AcJTyY+BLz1YvXq1bN261YQm3VmP5Xm+sNIIAggggAACCCCAAAJ5AoSnMvRlOHPmjJQvX74MfSI+CgIIIIAAAggggAAC7ggQntwZC3qCAAIIIIAAAggggAACDgsQnhweHLqGAAIIIIAAAggggAAC7ggQntwZC3qCAAIIIIAAAggggAACDgsQnhweHLqGAAIIIIAAAggggAAC7ggQntwZC3qCAAIIIIAAAggggAACDgsQnhweHLqGAAIIIIAAAggggAAC7ggQntwZC3qCAAIIIIAAAggggAACDgsQnhweHLqGAAIIIIAAAggggAAC7ggQntwZC3qCAAIIIIAAAggggAACDgsQnhweHLqGAAIIIIAAAggggAAC7ggQntwZC3qCAAIIIIAAAggggAACDgsQnhweHLqGAAIIIIAAAggggAAC7ggQntwZC3qCAAIIIIAAAggggAACDgsQnhweHLqGAAIIIIAAAggggAAC7ggQntwZC3qCAAIIIIAAAggggAACDgsQnhweHLqGAAIIIIAAAggggAAC7ggQntwZC3qCAAIIIIAAAggggAACDgsQnhweHLqGAAIIIIAAAggggAAC7ggQntwZC3qCAAIIIIAAAggggAACDgsQnhweHLqGAAIIIIAAAggggAAC7ggQntwZC3qCAAIIIIAAAggggAACDgsQnhweHLqGAAIIIIAAAggggAAC7ggQntwZC3qCAAIIIIAAAggggAACDgsQnhweHLqGAAIIIIAAAggggAAC7ggQntwZC3qCAAIIIIAAAggggAACDgsQnhweHLqGAAIIIIAAAggggAAC7ggQntwZC3qCAAIIIIAAAggggAACDgsQnhweHLqGAAIIIIAAAggggAAC7ggQntwZC3qCAAIIIIAAAggggAACDgsQnhweHLqGAAIIIIAAAggggAAC7ggQntwZC3qCAAIIIIAAAggggAACDgsQnhweHLqGAAIIIIAAAggggAAC7ggQntwZC3qCAAIIIIAAAggggAACDgsQnhweHLqGAAIIIIAAAggggAAC7ggQntwZC3qCAAIIIIAAAggggAACDgsQnhweHLqGAAIIIIAAAggggAAC7ggQntwZC3qCAAIIIIAAAggggAACDgsQnhweHLqGAAIIIIAAAggggAAC7ggQntwZC3qCAAIIIIAAAggggAACDgsQnhweHLqGAAIIIIAAAggggAAC7ggQntwZC3qCAAIIIIAAAggggAACDgsQnhweHLqGAAIIIIAAAggggAAC7h8aS04AAAEYSURBVAgQntwZC3qCAAIIIIAAAggggAACDgsQnhweHLqGAAIIIIAAAggggAAC7ggQntwZC3qCAAIIIIAAAggggAACDgsQnhweHLqGAAIIIIAAAggggAAC7ggQntwZC3qCAAIIIIAAAggggAACDgsQnhweHLqGAAIIIIAAAggggAAC7ggQntwZC3qCAAIIIIAAAggggAACDgsQnhweHLqGAAIIIIAAAggggAAC7ggQntwZC3qCAAIIIIAAAggggAACDgsQnhweHLqGAAIIIIAAAggggAAC7ggQntwZC3qCAAIIIIAAAggggAACDgsQnhweHLqGAAIIIIAAAggggAAC7ggQntwZC3qCAAIIIIAAAggggAACDgv8P+tfgUll+IeCAAAAAElFTkSuQmCC"},31255:(e,n,t)=>{t.d(n,{A:()=>i});const i=t.p+"assets/images/more-options-dropdown-2b02c463ead75eb94a7591daabc09e03.png"},45106:(e,n,t)=>{t.d(n,{A:()=>i});const i=t.p+"assets/images/select-parent-daaae173d47bdb6c7922f4d73bdf7d92.png"},54606:(e,n,t)=>{t.d(n,{A:()=>i});const i=t.p+"assets/images/tools-4da783777a189880077404fa13ec5b8e.png"},28453:(e,n,t)=>{t.d(n,{R:()=>l,x:()=>r});var i=t(96540);const s={},o=i.createContext(s);function l(e){const n=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),i.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/6b537463.dfec3098.js b/assets/js/6b537463.dfec3098.js new file mode 100644 index 00000000..0e68b5a1 --- /dev/null +++ b/assets/js/6b537463.dfec3098.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7155],{69480:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>c,contentTitle:()=>l,default:()=>p,frontMatter:()=>o,metadata:()=>s,toc:()=>d});const s=JSON.parse('{"id":"API-Reference/utils/NativeApp","title":"NativeApp","description":"Import :","source":"@site/api/API-Reference/utils/NativeApp.md","sourceDirName":"API-Reference/utils","slug":"/API-Reference/utils/NativeApp","permalink":"/api/API-Reference/utils/NativeApp","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"LocalizationUtils","permalink":"/api/API-Reference/utils/LocalizationUtils"},"next":{"title":"NodeUtils","permalink":"/api/API-Reference/utils/NodeUtils"}}');var i=r(74848),t=r(28453);const o={},l=void 0,c={},d=[{value:"Import :",id:"import-",level:3},{value:"Async",id:"async",level:2},{value:"openLiveBrowser(url, [enableRemoteDebugging]) \u21d2 $.Promise",id:"openlivebrowserurl-enableremotedebugging--promise",level:2},{value:"closeLiveBrowser() \u21d2 $.Promise",id:"closelivebrowser--promise",level:2},{value:"closeAllLiveBrowsers() \u21d2 $.Promise",id:"closealllivebrowsers--promise",level:2},{value:"openURLInDefaultBrowser(url, tabIdentifier)",id:"openurlindefaultbrowserurl-tabidentifier",level:2},{value:"getApplicationSupportDirectory()",id:"getapplicationsupportdirectory",level:2}];function a(e){const n={code:"code",h2:"h2",h3:"h3",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,t.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h3,{id:"import-",children:"Import :"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-js",children:'const NativeApp = brackets.getModule("utils/NativeApp")\n'})}),"\n",(0,i.jsx)("a",{name:"Async"}),"\n",(0,i.jsx)(n.h2,{id:"async",children:"Async"}),"\n",(0,i.jsx)(n.p,{children:"Virtualized NativeApp apis that works cross-platform, and in the browser."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,i.jsx)("a",{name:"openLiveBrowser"}),"\n",(0,i.jsxs)(n.h2,{id:"openlivebrowserurl-enableremotedebugging--promise",children:["openLiveBrowser(url, [enableRemoteDebugging]) \u21d2 ",(0,i.jsx)("code",{children:"$.Promise"})]}),"\n",(0,i.jsx)(n.p,{children:"openLiveBrowser\nOpen the given URL in the user's system browser, optionally enabling debugging."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"url"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(n.td,{children:"The URL to open."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"[enableRemoteDebugging]"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"boolean"})}),(0,i.jsx)(n.td,{children:"Whether to turn on remote debugging. Default false."})]})]})]}),"\n",(0,i.jsx)("a",{name:"closeLiveBrowser"}),"\n",(0,i.jsxs)(n.h2,{id:"closelivebrowser--promise",children:["closeLiveBrowser() \u21d2 ",(0,i.jsx)("code",{children:"$.Promise"})]}),"\n",(0,i.jsx)(n.p,{children:"closeLiveBrowser"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,i.jsx)("a",{name:"closeAllLiveBrowsers"}),"\n",(0,i.jsxs)(n.h2,{id:"closealllivebrowsers--promise",children:["closeAllLiveBrowsers() \u21d2 ",(0,i.jsx)("code",{children:"$.Promise"})]}),"\n",(0,i.jsx)(n.p,{children:"closeAllLiveBrowsers\nCloses all the browsers that were tracked on open"}),"\n",(0,i.jsx)(n.p,{children:"TODO: does not seem to work on Windows"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,i.jsx)("a",{name:"openURLInDefaultBrowser"}),"\n",(0,i.jsx)(n.h2,{id:"openurlindefaultbrowserurl-tabidentifier",children:"openURLInDefaultBrowser(url, tabIdentifier)"}),"\n",(0,i.jsx)(n.p,{children:"Opens a URL in the system default browser."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"url"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(n.td,{})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"tabIdentifier"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(n.td,{children:"An optional tab identifier can be set to group the tabs. Maps to target option in browser. Doesn't do anything in tauri."})]})]})]}),"\n",(0,i.jsx)("a",{name:"getApplicationSupportDirectory"}),"\n",(0,i.jsx)(n.h2,{id:"getapplicationsupportdirectory",children:"getApplicationSupportDirectory()"}),"\n",(0,i.jsx)(n.p,{children:"Gets the path to the application's support directory"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function"]})]})}function p(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(a,{...e})}):a(e)}},28453:(e,n,r)=>{r.d(n,{R:()=>o,x:()=>l});var s=r(96540);const i={},t=s.createContext(i);function o(e){const n=s.useContext(t);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),s.createElement(t.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/6bc38044.9a96f0b3.js b/assets/js/6bc38044.9a96f0b3.js new file mode 100644 index 00000000..3e384683 --- /dev/null +++ b/assets/js/6bc38044.9a96f0b3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6701],{22369:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>a,contentTitle:()=>c,default:()=>p,frontMatter:()=>i,metadata:()=>r,toc:()=>l});const r=JSON.parse('{"id":"API-Reference/utils/KeyEvent","title":"KeyEvent","description":"Import :","source":"@site/api/API-Reference/utils/KeyEvent.md","sourceDirName":"API-Reference/utils","slug":"/API-Reference/utils/KeyEvent","permalink":"/api/API-Reference/utils/KeyEvent","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"FeatureGate","permalink":"/api/API-Reference/utils/FeatureGate"},"next":{"title":"LocalizationUtils","permalink":"/api/API-Reference/utils/LocalizationUtils"}}');var s=n(74848),o=n(28453);const i={},c=void 0,a={},l=[{value:"Import :",id:"import-",level:3}];function u(e){const t={code:"code",h3:"h3",pre:"pre",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.h3,{id:"import-",children:"Import :"}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-js",children:'const KeyEvent = brackets.getModule("utils/KeyEvent")\n'})})]})}function p(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(u,{...e})}):u(e)}},28453:(e,t,n)=>{n.d(t,{R:()=>i,x:()=>c});var r=n(96540);const s={},o=r.createContext(s);function i(e){const t=r.useContext(o);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),r.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/6cd9c2ef.095ef697.js b/assets/js/6cd9c2ef.095ef697.js new file mode 100644 index 00000000..162e53cf --- /dev/null +++ b/assets/js/6cd9c2ef.095ef697.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6705],{69699:(e,n,l)=>{l.r(n),l.d(n,{assets:()=>t,contentTitle:()=>a,default:()=>o,frontMatter:()=>d,metadata:()=>i,toc:()=>h});const i=JSON.parse('{"id":"API-Reference/view/PluginPanelView","title":"PluginPanelView","description":"Import :","source":"@site/api/API-Reference/view/PluginPanelView.md","sourceDirName":"API-Reference/view","slug":"/API-Reference/view/PluginPanelView","permalink":"/api/API-Reference/view/PluginPanelView","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"PanelView","permalink":"/api/API-Reference/view/PanelView"},"next":{"title":"SidebarTabs","permalink":"/api/API-Reference/view/SidebarTabs"}}');var s=l(74848),r=l(28453);const d={},a=void 0,t={},h=[{value:"Import :",id:"import-",level:3},{value:"Panel",id:"panel",level:2},{value:"new Panel($panel, id, $toolbarIcon, [minWidth], [initialSize])",id:"new-panelpanel-id-toolbaricon-minwidth-initialsize",level:3},{value:"panel.$panel : jQueryObject",id:"panelpanel--jqueryobject",level:3},{value:"panel.isVisible() \u21d2 boolean",id:"panelisvisible--boolean",level:3},{value:"panel.registerCanBeShownHandler(canShowHandlerFn) \u21d2 boolean",id:"panelregistercanbeshownhandlercanshowhandlerfn--boolean",level:3},{value:"panel.canBeShown() \u21d2 boolean",id:"panelcanbeshown--boolean",level:3},{value:"panel.registerOnCloseRequestedHandler(handler)",id:"panelregisteroncloserequestedhandlerhandler",level:3},{value:"panel.requestClose() \u21d2 Promise.<boolean>",id:"panelrequestclose--promiseboolean",level:3},{value:"panel.show()",id:"panelshow",level:3},{value:"panel.hide()",id:"panelhide",level:3},{value:"panel.setVisible(visible)",id:"panelsetvisiblevisible",level:3},{value:"panel.getPanelType() \u21d2 string",id:"panelgetpaneltype--string",level:3},{value:"EVENT_PANEL_HIDDEN : string",id:"event_panel_hidden--string",level:2},{value:"EVENT_PANEL_SHOWN : string",id:"event_panel_shown--string",level:2},{value:"PANEL_TYPE_PLUGIN_PANEL : string",id:"panel_type_plugin_panel--string",level:2}];function c(e){const n={a:"a",br:"br",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,r.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h3,{id:"import-",children:"Import :"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-js",children:'const PluginPanelView = brackets.getModule("view/PluginPanelView")\n'})}),"\n",(0,s.jsx)("a",{name:"Panel"}),"\n",(0,s.jsx)(n.h2,{id:"panel",children:"Panel"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global class"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"#Panel",children:"Panel"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"#new_Panel_new",children:"new Panel($panel, id, $toolbarIcon, [minWidth], [initialSize])"})}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"#Panel+$panel",children:".$panel"})," : ",(0,s.jsx)("code",{children:"jQueryObject"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"#Panel+isVisible",children:".isVisible()"})," \u21d2 ",(0,s.jsx)("code",{children:"boolean"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"#Panel+registerCanBeShownHandler",children:".registerCanBeShownHandler(canShowHandlerFn)"})," \u21d2 ",(0,s.jsx)("code",{children:"boolean"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"#Panel+canBeShown",children:".canBeShown()"})," \u21d2 ",(0,s.jsx)("code",{children:"boolean"})]}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"#Panel+registerOnCloseRequestedHandler",children:".registerOnCloseRequestedHandler(handler)"})}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"#Panel+requestClose",children:".requestClose()"})," \u21d2 ",(0,s.jsx)("code",{children:"Promise."})]}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"#Panel+show",children:".show()"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"#Panel+hide",children:".hide()"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"#Panel+setVisible",children:".setVisible(visible)"})}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"#Panel+getPanelType",children:".getPanelType()"})," \u21d2 ",(0,s.jsx)("code",{children:"string"})]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)("a",{name:"new_Panel_new"}),"\n",(0,s.jsx)(n.h3,{id:"new-panelpanel-id-toolbaricon-minwidth-initialsize",children:"new Panel($panel, id, $toolbarIcon, [minWidth], [initialSize])"}),"\n",(0,s.jsx)(n.p,{children:'Represents a panel below the editor area (a child of ".content").'}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"$panel"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"jQueryObject"})}),(0,s.jsx)(n.td,{children:"The entire panel, including any chrome, already in the DOM."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"id"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(n.td,{children:'Unique id for this panel. Use package-style naming, e.g. "myextension.panelname". will overwrite an existing panel id if present.'})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"$toolbarIcon"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"jQueryObject"})}),(0,s.jsx)(n.td,{children:"An icon that should be present in main-toolbar to associate this panel to. The panel will be shown only if the icon is visible on the toolbar and the user clicks on the icon."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"[minWidth]"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"number"})}),(0,s.jsx)(n.td,{children:"Minimum width of panel in px."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"[initialSize]"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"number"})}),(0,s.jsx)(n.td,{children:"Optional Initial size of panel in px. If not given, panel will use minsize or current size."})]})]})]}),"\n",(0,s.jsx)("a",{name:"Panel+$panel"}),"\n",(0,s.jsxs)(n.h3,{id:"panelpanel--jqueryobject",children:["panel.$panel : ",(0,s.jsx)("code",{children:"jQueryObject"})]}),"\n",(0,s.jsx)(n.p,{children:"Dom node holding the rendered panel"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": instance property of ",(0,s.jsx)(n.a,{href:"#Panel",children:(0,s.jsx)("code",{children:"Panel"})})]}),"\n",(0,s.jsx)("a",{name:"Panel+isVisible"}),"\n",(0,s.jsxs)(n.h3,{id:"panelisvisible--boolean",children:["panel.isVisible() \u21d2 ",(0,s.jsx)("code",{children:"boolean"})]}),"\n",(0,s.jsx)(n.p,{children:"Determines if the panel is visible"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,s.jsx)(n.a,{href:"#Panel",children:(0,s.jsx)("code",{children:"Panel"})}),(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"boolean"})," - true if visible, false if not"]}),"\n",(0,s.jsx)("a",{name:"Panel+registerCanBeShownHandler"}),"\n",(0,s.jsxs)(n.h3,{id:"panelregistercanbeshownhandlercanshowhandlerfn--boolean",children:["panel.registerCanBeShownHandler(canShowHandlerFn) \u21d2 ",(0,s.jsx)("code",{children:"boolean"})]}),"\n",(0,s.jsx)(n.p,{children:"Registers a call back function that will be called just before panel is shown. The handler should return true\nif the panel can be shown, else return false and the panel will not be shown."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,s.jsx)(n.a,{href:"#Panel",children:(0,s.jsx)("code",{children:"Panel"})}),(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"boolean"})," - true if visible, false if not"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"canShowHandlerFn"}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("code",{children:"function"})," | ",(0,s.jsx)("code",{children:"null"})]}),(0,s.jsx)(n.td,{children:"function that should return true of false if the panel can be shown/not. or null to clear the handler."})]})})]}),"\n",(0,s.jsx)("a",{name:"Panel+canBeShown"}),"\n",(0,s.jsxs)(n.h3,{id:"panelcanbeshown--boolean",children:["panel.canBeShown() \u21d2 ",(0,s.jsx)("code",{children:"boolean"})]}),"\n",(0,s.jsx)(n.p,{children:"Returns true if th panel can be shown, else false."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,s.jsx)(n.a,{href:"#Panel",children:(0,s.jsx)("code",{children:"Panel"})})]}),"\n",(0,s.jsx)("a",{name:"Panel+registerOnCloseRequestedHandler"}),"\n",(0,s.jsx)(n.h3,{id:"panelregisteroncloserequestedhandlerhandler",children:"panel.registerOnCloseRequestedHandler(handler)"}),"\n",(0,s.jsxs)(n.p,{children:["Registers an async handler that is called before the panel is closed via user interaction.\nThe handler should return ",(0,s.jsx)(n.code,{children:"true"})," to allow the close, or ",(0,s.jsx)(n.code,{children:"false"})," to prevent it."]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,s.jsx)(n.a,{href:"#Panel",children:(0,s.jsx)("code",{children:"Panel"})})]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"handler"}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("code",{children:"function"})," | ",(0,s.jsx)("code",{children:"null"})]}),(0,s.jsx)(n.td,{children:"An async function returning a boolean, or null to clear the handler."})]})})]}),"\n",(0,s.jsx)("a",{name:"Panel+requestClose"}),"\n",(0,s.jsxs)(n.h3,{id:"panelrequestclose--promiseboolean",children:["panel.requestClose() \u21d2 ",(0,s.jsx)("code",{children:"Promise."})]}),"\n",(0,s.jsxs)(n.p,{children:["Requests the panel to hide, invoking the registered onCloseRequested handler first (if any).\nIf the handler returns false, the panel stays open. If it returns true or no handler is\nregistered, ",(0,s.jsx)(n.code,{children:"hide()"})," is called."]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,s.jsx)(n.a,{href:"#Panel",children:(0,s.jsx)("code",{children:"Panel"})}),(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"Promise."})," - Resolves to true if the panel was hidden, false if prevented."]}),"\n",(0,s.jsx)("a",{name:"Panel+show"}),"\n",(0,s.jsx)(n.h3,{id:"panelshow",children:"panel.show()"}),"\n",(0,s.jsx)(n.p,{children:"Shows the panel"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,s.jsx)(n.a,{href:"#Panel",children:(0,s.jsx)("code",{children:"Panel"})})]}),"\n",(0,s.jsx)("a",{name:"Panel+hide"}),"\n",(0,s.jsx)(n.h3,{id:"panelhide",children:"panel.hide()"}),"\n",(0,s.jsx)(n.p,{children:"Hides the panel"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,s.jsx)(n.a,{href:"#Panel",children:(0,s.jsx)("code",{children:"Panel"})})]}),"\n",(0,s.jsx)("a",{name:"Panel+setVisible"}),"\n",(0,s.jsx)(n.h3,{id:"panelsetvisiblevisible",children:"panel.setVisible(visible)"}),"\n",(0,s.jsx)(n.p,{children:"Sets the panel's visibility state"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,s.jsx)(n.a,{href:"#Panel",children:(0,s.jsx)("code",{children:"Panel"})})]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"visible"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"boolean"})}),(0,s.jsx)(n.td,{children:"true to show, false to hide"})]})})]}),"\n",(0,s.jsx)("a",{name:"Panel+getPanelType"}),"\n",(0,s.jsxs)(n.h3,{id:"panelgetpaneltype--string",children:["panel.getPanelType() \u21d2 ",(0,s.jsx)("code",{children:"string"})]}),"\n",(0,s.jsx)(n.p,{children:"gets the Panel's type"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,s.jsx)(n.a,{href:"#Panel",children:(0,s.jsx)("code",{children:"Panel"})})]}),"\n",(0,s.jsx)("a",{name:"EVENT_PANEL_HIDDEN"}),"\n",(0,s.jsxs)(n.h2,{id:"event_panel_hidden--string",children:["EVENT_PANEL_HIDDEN : ",(0,s.jsx)("code",{children:"string"})]}),"\n",(0,s.jsx)(n.p,{children:"Event when panel is hidden"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,s.jsx)("a",{name:"EVENT_PANEL_SHOWN"}),"\n",(0,s.jsxs)(n.h2,{id:"event_panel_shown--string",children:["EVENT_PANEL_SHOWN : ",(0,s.jsx)("code",{children:"string"})]}),"\n",(0,s.jsx)(n.p,{children:"Event when panel is shown"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,s.jsx)("a",{name:"PANEL_TYPE_PLUGIN_PANEL"}),"\n",(0,s.jsxs)(n.h2,{id:"panel_type_plugin_panel--string",children:["PANEL_TYPE_PLUGIN_PANEL : ",(0,s.jsx)("code",{children:"string"})]}),"\n",(0,s.jsx)(n.p,{children:"type for plugin panel"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global constant"]})]})}function o(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(c,{...e})}):c(e)}},28453:(e,n,l)=>{l.d(n,{R:()=>d,x:()=>a});var i=l(96540);const s={},r=i.createContext(s);function d(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:d(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/6e37a3fa.ea460e88.js b/assets/js/6e37a3fa.ea460e88.js new file mode 100644 index 00000000..670302f5 --- /dev/null +++ b/assets/js/6e37a3fa.ea460e88.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6341],{91456:(e,s,i)=>{i.r(s),i.d(s,{assets:()=>h,contentTitle:()=>r,default:()=>c,frontMatter:()=>l,metadata:()=>n,toc:()=>a});const n=JSON.parse('{"id":"publishing-extensions","title":"Publishing Themes & Extensions","description":"This document outlines how to publish your Extensions/Themes to Phoenix Code Extension store.","source":"@site/api/06-publishing-extensions.md","sourceDirName":".","slug":"/publishing-extensions","permalink":"/api/publishing-extensions","draft":false,"unlisted":false,"tags":[],"version":"current","sidebarPosition":6,"frontMatter":{"title":"Publishing Themes & Extensions"},"sidebar":"tutorialSidebar","previous":{"title":"Debugging Extensions","permalink":"/api/debugging-extensions"},"next":{"title":"Available Standard Libraries","permalink":"/api/available-standard-libs"}}');var t=i(74848),o=i(28453);const l={title:"Publishing Themes & Extensions"},r=void 0,h={},a=[{value:"Publishing Extensions/Themes.",id:"publishing-extensionsthemes",level:2},{value:"Publishing legacy Brackets extensions",id:"publishing-legacy-brackets-extensions",level:2},{value:"FAQ",id:"faq",level:2},{value:"Why is my extension not being published?",id:"why-is-my-extension-not-being-published",level:3},{value:"How can I get a Verified Badge for my extension?",id:"how-can-i-get-a-verified-badge-for-my-extension",level:3},{value:"How do I delete my extension from the store",id:"how-do-i-delete-my-extension-from-the-store",level:3}];function d(e){const s={a:"a",blockquote:"blockquote",code:"code",h2:"h2",h3:"h3",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",...(0,o.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(s.p,{children:"This document outlines how to publish your Extensions/Themes to Phoenix Code Extension store."}),"\n",(0,t.jsx)(s.h2,{id:"publishing-extensionsthemes",children:"Publishing Extensions/Themes."}),"\n",(0,t.jsx)(s.p,{children:"Extensions created from the Phoenix Code extension/theme template can be easily published from your GitHub repository to the store."}),"\n",(0,t.jsx)(s.p,{children:"Follow these steps:"}),"\n",(0,t.jsxs)(s.ol,{children:["\n",(0,t.jsxs)(s.li,{children:["Increment the ",(0,t.jsx)(s.code,{children:"version"})," field in ",(0,t.jsx)(s.code,{children:"package.json"})," file before publishing, if needed."]}),"\n",(0,t.jsxs)(s.li,{children:["Compress the extension folder into a zip file with name ",(0,t.jsx)(s.code,{children:"extension.zip"}),"."]}),"\n"]}),"\n",(0,t.jsxs)(s.blockquote,{children:["\n",(0,t.jsx)(s.p,{children:(0,t.jsxs)(s.strong,{children:["It is important to name the file as exactly ",(0,t.jsx)(s.code,{children:"extension.zip"})]})}),"\n"]}),"\n",(0,t.jsx)(s.p,{children:(0,t.jsx)(s.img,{alt:"Compress folder Image",src:i(71545).A+"",title:"Compress the folder into a zip file",width:"572",height:"454"})}),"\n",(0,t.jsxs)(s.ol,{start:"3",children:["\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:["Create a new release in GitHub and attach the above ",(0,t.jsx)(s.code,{children:"extension.zip"})," file in the release."]}),"\n",(0,t.jsxs)(s.ol,{children:["\n",(0,t.jsx)(s.li,{children:"On GitHub.com, navigate to the main page of the repository."}),"\n",(0,t.jsxs)(s.li,{children:["To the right of the list of files, click ",(0,t.jsx)(s.code,{children:"Releases"}),"."]}),"\n"]}),"\n",(0,t.jsx)(s.p,{children:(0,t.jsx)(s.img,{alt:"Github Releases Image",src:i(9132).A+"",title:"Click on Releases",width:"1000",height:"631"})}),"\n",(0,t.jsxs)(s.ol,{start:"3",children:["\n",(0,t.jsxs)(s.li,{children:["Click on ",(0,t.jsx)(s.code,{children:"Draft a new release"}),"."]}),"\n"]}),"\n",(0,t.jsx)(s.p,{children:(0,t.jsx)(s.img,{alt:"Draft New Release Image",src:i(75069).A+"",title:"Click on Draft a new release",width:"906",height:"283"})}),"\n",(0,t.jsxs)(s.ol,{start:"4",children:["\n",(0,t.jsxs)(s.li,{children:["Select ",(0,t.jsx)(s.code,{children:"choose a tag"})," and type in your new extension version and ",(0,t.jsx)(s.code,{children:"Create new tag"}),"."]}),"\n"]}),"\n",(0,t.jsx)(s.p,{children:(0,t.jsx)(s.img,{alt:"Create New Tag",src:i(26975).A+"",title:"Click on Choose a tag > create new tag",width:"569",height:"438"})}),"\n",(0,t.jsxs)(s.ol,{start:"5",children:["\n",(0,t.jsx)(s.li,{children:"Fill out all the remaining fields."}),"\n",(0,t.jsxs)(s.li,{children:["Drag and drop the ",(0,t.jsx)(s.code,{children:"extension.zip"})," file to the release."]}),"\n"]}),"\n",(0,t.jsx)(s.p,{children:(0,t.jsx)(s.img,{alt:"Drag-Drop-Zip-File",src:i(16110).A+"",title:"Drag and drop the extension.zip file to release",width:"1287",height:"800"})}),"\n",(0,t.jsxs)(s.ol,{start:"7",children:["\n",(0,t.jsxs)(s.li,{children:["Click on ",(0,t.jsx)(s.code,{children:"Publish release"})," button."]}),"\n"]}),"\n",(0,t.jsxs)(s.blockquote,{children:["\n",(0,t.jsxs)(s.p,{children:["See Release Example: ",(0,t.jsx)(s.a,{href:"https://github.com/phcode-dev/extension-template/releases/tag/0.0.1",children:"https://github.com/phcode-dev/extension-template/releases/tag/0.0.1"})]}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsx)(s.p,{children:"You will get an issue in your issue tab regarding the publishing status of the extension/theme."}),"\n",(0,t.jsxs)(s.blockquote,{children:["\n",(0,t.jsxs)(s.p,{children:["See Example: ",(0,t.jsx)(s.a,{href:"https://github.com/phcode-dev/extension-template/issues/2",children:"https://github.com/phcode-dev/extension-template/issues/2"})]}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:["If there are any errors in publishing, please visit the link in the issue to see the errors. Fix and ",(0,t.jsx)(s.code,{children:"retry"})," publishing the release."]}),"\n",(0,t.jsx)(s.p,{children:(0,t.jsx)(s.img,{alt:"Publish Failed Image",src:i(88140).A+"",title:"Publish Failed",width:"716",height:"883"})}),"\n"]}),"\n",(0,t.jsxs)(s.li,{children:["\n",(0,t.jsxs)(s.p,{children:["Once published, your extension will appear in the Phoenix Code Extension Store at ",(0,t.jsx)(s.a,{href:"https://phcode.dev",children:"https://phcode.dev"}),"."]}),"\n",(0,t.jsx)(s.p,{children:(0,t.jsx)(s.img,{alt:"Extension Store Image",src:i(4782).A+"",title:"Phoenix Code Extension Store",width:"1029",height:"696"})}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(s.h2,{id:"publishing-legacy-brackets-extensions",children:"Publishing legacy Brackets extensions"}),"\n",(0,t.jsxs)(s.blockquote,{children:["\n",(0,t.jsx)(s.p,{children:"Follow this section only for old brackets extensions."}),"\n"]}),"\n",(0,t.jsxs)(s.p,{children:["To publish Extensions/themes that are not created from the above ",(0,t.jsx)(s.a,{href:"https://github.com/phcode-dev/theme-template",children:"theme"})," and ",(0,t.jsx)(s.a,{href:"https://github.com/phcode-dev/extension-template",children:"extension"})," template\nor old Brackets extensions, please follow the steps below:"]}),"\n",(0,t.jsxs)(s.ol,{children:["\n",(0,t.jsx)(s.li,{children:"Create a GitHub repository for your extension if it is not present."}),"\n",(0,t.jsxs)(s.li,{children:["Create a file ",(0,t.jsx)(s.code,{children:".github/workflows/publishToPhcode.yml"})," in your repo with the following contents: ",(0,t.jsx)(s.a,{href:"https://github.com/phcode-dev/theme-template/blob/main/.github/workflows/publishToPhcode.yml",children:"https://github.com/phcode-dev/theme-template/blob/main/.github/workflows/publishToPhcode.yml"})]}),"\n"]}),"\n",(0,t.jsxs)(s.p,{children:["That's all, you can now follow the above ",(0,t.jsx)(s.a,{href:"#publishing-to-the-extensiontheme-store",children:"Publishing to the extension/theme store"})," section."]}),"\n",(0,t.jsx)(s.h2,{id:"faq",children:"FAQ"}),"\n",(0,t.jsx)(s.h3,{id:"why-is-my-extension-not-being-published",children:"Why is my extension not being published?"}),"\n",(0,t.jsxs)(s.p,{children:["Your repository must be ",(0,t.jsx)(s.strong,{children:"public"})," to be able to be published to the Phoenix Code Extension store.\nSee this link on ",(0,t.jsx)(s.a,{href:"https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/managing-repository-settings/setting-repository-visibility#changing-a-repositorys-visibility",children:"understanding how to change repository visibility"})," to public in GitHub."]}),"\n",(0,t.jsx)(s.h3,{id:"how-can-i-get-a-verified-badge-for-my-extension",children:"How can I get a Verified Badge for my extension?"}),"\n",(0,t.jsxs)(s.p,{children:["The ",(0,t.jsx)(s.code,{children:"verified"})," extension badge(tick mark) will be automatically granted to verified GitHub Organizations."]}),"\n",(0,t.jsx)(s.h3,{id:"how-do-i-delete-my-extension-from-the-store",children:"How do I delete my extension from the store"}),"\n",(0,t.jsxs)(s.p,{children:["Please raise an issue here: ",(0,t.jsx)(s.a,{href:"https://github.com/phcode-dev/phoenix/issues/new/choose",children:"https://github.com/phcode-dev/phoenix/issues/new/choose"}),", mention your extension repository."]})]})}function c(e={}){const{wrapper:s}={...(0,o.R)(),...e.components};return s?(0,t.jsx)(s,{...e,children:(0,t.jsx)(d,{...e})}):d(e)}},71545:(e,s,i)=>{i.d(s,{A:()=>n});const n=i.p+"assets/images/compress-to-zip-c4c9896983e9859f5f1a40a39bcc5fa2.png"},26975:(e,s,i)=>{i.d(s,{A:()=>n});const n=i.p+"assets/images/create-new-tag-e6e42d0ef9e8feae8b11c9449b42e0ab.png"},75069:(e,s,i)=>{i.d(s,{A:()=>n});const n=i.p+"assets/images/draft-new-release-d98ab78386636a766c7921acd265bef4.png"},16110:(e,s,i)=>{i.d(s,{A:()=>n});const n=i.p+"assets/images/drag-drop-946ba662d98f0acdd52c5e1d60795e2e.gif"},4782:(e,s,i)=>{i.d(s,{A:()=>n});const n=i.p+"assets/images/extension-store-55e5afd0adb2291385a92325ac98317e.png"},88140:(e,s,i)=>{i.d(s,{A:()=>n});const n=i.p+"assets/images/publish-failed-ce5fb40d3fb2a7179f6faec794bf46f9.png"},9132:(e,s,i)=>{i.d(s,{A:()=>n});const n=i.p+"assets/images/release-github-f4cc9b3b5f249a7ba91c2d5d2a3d6ac9.png"},28453:(e,s,i)=>{i.d(s,{R:()=>l,x:()=>r});var n=i(96540);const t={},o=n.createContext(t);function l(e){const s=n.useContext(o);return n.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function r(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:l(e.components),n.createElement(o.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/6e88904b.f07a06a4.js b/assets/js/6e88904b.f07a06a4.js new file mode 100644 index 00000000..5e195157 --- /dev/null +++ b/assets/js/6e88904b.f07a06a4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9353],{35829:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>d,default:()=>p,frontMatter:()=>o,metadata:()=>a,toc:()=>u});const a=JSON.parse('{"id":"Getting Started/installation","title":"Installation Guide","description":"Phoenix Code is a text editor designed to make coding as intuitive and fun as playing a video game \u2014 specially crafted for web developers, designers, and students. This guide walks you through downloading and installing Phoenix Code on Windows, macOS, and Linux, or running it straight from your browser with no install at all.","source":"@site/docs/01-Getting Started/01-installation.md","sourceDirName":"01-Getting Started","slug":"/intro","permalink":"/docs/intro","draft":false,"unlisted":false,"editUrl":"https://github.com/phcode-dev/docs/blob/main/docs/01-Getting Started/01-installation.md","tags":[],"version":"current","sidebarPosition":1,"frontMatter":{"title":"Installation Guide","slug":"/intro"},"sidebar":"tutorialSidebar","previous":{"title":"What is Phoenix Code?","permalink":"/docs/what-is-phoenix-code"},"next":{"title":"Quick Start Project","permalink":"/docs/quick-start-project"}}');var s=t(74848),i=t(28453),l=t(11470),r=t(19365);const o={title:"Installation Guide",slug:"/intro"},d="Phoenix Code Installation Guide",c={},u=[{value:"Download",id:"download",level:2},{value:"Choosing a different installer",id:"choosing-a-different-installer",level:3},{value:"Install",id:"install",level:2},{value:"Windows & macOS",id:"windows--macos",level:3},{value:"Linux",id:"linux",level:3},{value:"Use it in the browser",id:"use-it-in-the-browser",level:2},{value:"Advanced Linux installation",id:"linux-advanced",level:2},{value:"Uninstalling",id:"uninstalling",level:3},{value:"Manual installation",id:"manual-installation",level:3},{value:"Desktop environment compatibility",id:"desktop-environment-compatibility",level:3},{value:"Dependencies",id:"dependencies",level:3},{value:"FAQ",id:"faq",level:3}];function h(e){const n={a:"a",blockquote:"blockquote",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",header:"header",hr:"hr",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.header,{children:(0,s.jsx)(n.h1,{id:"phoenix-code-installation-guide",children:"Phoenix Code Installation Guide"})}),"\n",(0,s.jsx)(n.p,{children:"Phoenix Code is a text editor designed to make coding as intuitive and fun as playing a video game \u2014 specially crafted for web developers, designers, and students. This guide walks you through downloading and installing Phoenix Code on Windows, macOS, and Linux, or running it straight from your browser with no install at all."}),"\n",(0,s.jsx)(n.h2,{id:"download",children:"Download"}),"\n",(0,s.jsxs)(n.p,{children:["Visit the official website \u2014 ",(0,s.jsx)(n.a,{href:"https://phcode.io",children:"phcode.io"})," \u2014 and click the ",(0,s.jsx)(n.strong,{children:"Download"})," button to grab the installer for your operating system."]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"Download Phoenix Code from the website",src:t(20881).A+"",width:"386",height:"92"})}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Linux users:"})," see ",(0,s.jsx)(n.a,{href:"#linux",children:"Installing on Linux"})," below for the one-line terminal installer."]}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"choosing-a-different-installer",children:"Choosing a different installer"}),"\n",(0,s.jsx)(n.p,{children:"If you need a build for another operating system, or have specific requirements:"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["Click the ",(0,s.jsx)(n.strong,{children:"Download"})," drop-down on the website."]}),"\n",(0,s.jsx)(n.li,{children:"Select the installer you need from the list."}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"Download options drop-down",src:t(8675).A+"",width:"653",height:"371"})}),"\n",(0,s.jsx)(n.p,{children:"Phoenix Code supports a wide range of operating systems:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"macOS"})," \u2014 Apple Silicon (M1+) and Intel chipsets"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Windows"})," \u2014 x64 architectures"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Linux"})," \u2014 Ubuntu, Debian, Pop!_OS, Fedora, Arch, and more"]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"install",children:"Install"}),"\n",(0,s.jsx)(n.h3,{id:"windows--macos",children:"Windows & macOS"}),"\n",(0,s.jsx)(n.p,{children:"Run the downloaded installer and follow the on-screen instructions. Once it finishes, launch Phoenix Code and you're ready to start building."}),"\n",(0,s.jsx)(n.h3,{id:"linux",children:"Linux"}),"\n",(0,s.jsx)(n.p,{children:"Open a terminal and run the official installer script \u2014 copy it from the website or use the command below:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"wget -qO- https://updates.phcode.io/linux/installer.sh | bash\n"})}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"Linux install command",src:t(85255).A+"",width:"805",height:"181"})}),"\n",(0,s.jsx)(n.p,{children:"This installs Phoenix Code along with all required dependencies, and sets up app-drawer shortcuts and file associations automatically. It works on all major distributions, including Ubuntu, Debian, Fedora, and Arch-based systems."}),"\n",(0,s.jsxs)(n.p,{children:["Need to install by hand, check dependencies, or uninstall? See ",(0,s.jsx)(n.a,{href:"#linux-advanced",children:"Advanced Linux installation"})," below."]}),"\n",(0,s.jsx)(n.h2,{id:"use-it-in-the-browser",children:"Use it in the browser"}),"\n",(0,s.jsxs)(n.p,{children:["Prefer not to install anything? Run the full editor right in your browser at ",(0,s.jsx)(n.a,{href:"https://phcode.dev",children:"phcode.dev"})," \u2014 perfect for Chromebooks, tablets, or just trying things out. Everything runs locally in the browser, with nothing to download."]}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsx)(n.h2,{id:"linux-advanced",children:"Advanced Linux installation"}),"\n",(0,s.jsx)(n.p,{children:"The one-line installer above is all most users need. The sections below cover manual installation, runtime dependencies, and common questions."}),"\n",(0,s.jsx)(n.h3,{id:"uninstalling",children:"Uninstalling"}),"\n",(0,s.jsx)(n.p,{children:"To remove an automatic installation, run:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"wget -qO- https://updates.phcode.io/linux/installer.sh | bash -s -- --uninstall\n"})}),"\n",(0,s.jsx)(n.p,{children:"For a manual installation, delete the folder where you placed the Phoenix Code app, along with any related files."}),"\n",(0,s.jsx)(n.h3,{id:"manual-installation",children:"Manual installation"}),"\n",(0,s.jsx)(n.p,{children:"If automatic installation fails, or you prefer to install by hand:"}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Check your GLIBC version:"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"ldd --version | awk '/ldd/{print $NF}'\n"})}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Download the package:"})," visit the ",(0,s.jsx)(n.a,{href:"https://github.com/phcode-dev/phoenix-desktop/releases",children:"Phoenix Code releases page"})," and download a build compatible with your GLIBC version."]}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Extract it:"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"tar -xvf phoenix_code_version.tar.gz\n"})}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Read the bundled instructions:"})}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"cat extracted_folder/ReadMe.txt\n"})}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Follow the steps"})," in ",(0,s.jsx)(n.code,{children:"ReadMe.txt"})," to complete the installation."]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"desktop-environment-compatibility",children:"Desktop environment compatibility"}),"\n",(0,s.jsxs)(n.p,{children:["Phoenix Code is tested on both ",(0,s.jsx)(n.strong,{children:"GNOME"})," and ",(0,s.jsx)(n.strong,{children:"KDE"}),". Other desktop environments may work via ",(0,s.jsx)(n.a,{href:"#manual-installation",children:"manual installation"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"dependencies",children:"Dependencies"}),"\n",(0,s.jsx)(n.p,{children:"If Phoenix doesn't start after installing, restart your system and confirm the required dependencies for your distribution are installed:"}),"\n",(0,s.jsxs)(l.A,{defaultValue:"ubuntu",values:[{label:"Ubuntu/Debian",value:"ubuntu"},{label:"Fedora/Red Hat",value:"fedora"},{label:"Arch Linux",value:"arch"}],children:[(0,s.jsxs)(r.A,{value:"ubuntu",children:[(0,s.jsx)(n.p,{children:"Update your package list:"}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"sudo apt update\n"})}),(0,s.jsx)(n.p,{children:"Install WebKitGTK and GTK:"}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"sudo apt install libgtk-3-0 libwebkit2gtk-4.0-37\n"})}),(0,s.jsx)(n.p,{children:(0,s.jsx)(n.em,{children:"Note: In Ubuntu 22+ versions, WebKitGTK may be pre-installed."})}),(0,s.jsx)(n.p,{children:"Install optional GStreamer plugins for media playback:"}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"sudo apt install gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-tools gstreamer1.0-libav\n"})})]}),(0,s.jsxs)(r.A,{value:"fedora",children:[(0,s.jsx)(n.p,{children:"Update your package list:"}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"sudo dnf update\n"})}),(0,s.jsx)(n.p,{children:"Install WebKitGTK and GTK:"}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"sudo dnf install webkit2gtk3 gtk3\n"})}),(0,s.jsx)(n.p,{children:"Install optional GStreamer plugins for media playback:"}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"sudo dnf install gstreamer1-plugins-base gstreamer1-plugins-good gstreamer1-plugins-bad-free gstreamer1-plugins-bad-freeworld gstreamer1-plugins-ugly gstreamer1-libav\n"})})]}),(0,s.jsxs)(r.A,{value:"arch",children:[(0,s.jsx)(n.p,{children:"Ensure your system is up to date:"}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"sudo pacman -Syu\n"})}),(0,s.jsx)(n.p,{children:"Install WebKitGTK and GTK:"}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"sudo pacman -S webkit2gtk gtk3\n"})}),(0,s.jsx)(n.p,{children:"Install optional GStreamer plugins for media playback:"}),(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"sudo pacman -S gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly gst-libav\n"})})]})]}),"\n",(0,s.jsx)(n.h3,{id:"faq",children:"FAQ"}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"How can I verify my distribution is supported?"})}),"\n",(0,s.jsxs)(n.p,{children:["Run the ",(0,s.jsx)(n.a,{href:"#linux",children:"one-line installer"}),". If it completes successfully, your distribution is supported."]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"How do I upgrade Phoenix Code?"})}),"\n",(0,s.jsxs)(n.p,{children:["For automatic installations, you'll get an update notification in the app itself. For manual installations, repeat the ",(0,s.jsx)(n.a,{href:"#manual-installation",children:"manual installation"})," steps."]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.strong,{children:"Phoenix won't start after installing \u2014 what can I do?"})}),"\n",(0,s.jsxs)(n.p,{children:["Restart your system, then confirm the ",(0,s.jsx)(n.a,{href:"#dependencies",children:"dependencies"})," for your distribution are installed."]})]})}function p(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},19365:(e,n,t)=>{t.d(n,{A:()=>l});t(96540);var a=t(34164);const s={tabItem:"tabItem_Ymn6"};var i=t(74848);function l({children:e,hidden:n,className:t}){return(0,i.jsx)("div",{role:"tabpanel",className:(0,a.A)(s.tabItem,t),hidden:n,children:e})}},11470:(e,n,t)=>{t.d(n,{A:()=>k});var a=t(96540),s=t(34164),i=t(17559),l=t(23104),r=t(56347),o=t(205),d=t(57485),c=t(31682),u=t(70679);function h(e){return a.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function p(e){const{values:n,children:t}=e;return(0,a.useMemo)((()=>{const e=n??function(e){return h(e).map((({props:{value:e,label:n,attributes:t,default:a}})=>({value:e,label:n,attributes:t,default:a})))}(t);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,t])}function x({value:e,tabValues:n}){return n.some((n=>n.value===e))}function g({queryString:e=!1,groupId:n}){const t=(0,r.W6)(),s=function({queryString:e=!1,groupId:n}){if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:e,groupId:n});return[(0,d.aZ)(s),(0,a.useCallback)((e=>{if(!s)return;const n=new URLSearchParams(t.location.search);n.set(s,e),t.replace({...t.location,search:n.toString()})}),[s,t])]}function m(e){const{defaultValue:n,queryString:t=!1,groupId:s}=e,i=p(e),[l,r]=(0,a.useState)((()=>function({defaultValue:e,tabValues:n}){if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(e){if(!x({value:e,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}const t=n.find((e=>e.default))??n[0];if(!t)throw new Error("Unexpected error: 0 tabValues");return t.value}({defaultValue:n,tabValues:i}))),[d,c]=g({queryString:t,groupId:s}),[h,m]=function({groupId:e}){const n=function(e){return e?`docusaurus.tab.${e}`:null}(e),[t,s]=(0,u.Dv)(n);return[t,(0,a.useCallback)((e=>{n&&s.set(e)}),[n,s])]}({groupId:s}),b=(()=>{const e=d??h;return x({value:e,tabValues:i})?e:null})();(0,o.A)((()=>{b&&r(b)}),[b]);return{selectedValue:l,selectValue:(0,a.useCallback)((e=>{if(!x({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);r(e),c(e),m(e)}),[c,m,i]),tabValues:i}}var b=t(92303);const f={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var j=t(74848);function v({className:e,block:n,selectedValue:t,selectValue:a,tabValues:i}){const r=[],{blockElementScrollPositionUntilNextRender:o}=(0,l.a_)(),d=e=>{const n=e.currentTarget,s=r.indexOf(n),l=i[s].value;l!==t&&(o(n),a(l))},c=e=>{let n=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const t=r.indexOf(e.currentTarget)+1;n=r[t]??r[0];break}case"ArrowLeft":{const t=r.indexOf(e.currentTarget)-1;n=r[t]??r[r.length-1];break}}n?.focus()};return(0,j.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.A)("tabs",{"tabs--block":n},e),children:i.map((({value:e,label:n,attributes:a})=>(0,j.jsx)("li",{role:"tab",tabIndex:t===e?0:-1,"aria-selected":t===e,ref:e=>{r.push(e)},onKeyDown:c,onClick:d,...a,className:(0,s.A)("tabs__item",f.tabItem,a?.className,{"tabs__item--active":t===e}),children:n??e},e)))})}function w({lazy:e,children:n,selectedValue:t}){const i=(Array.isArray(n)?n:[n]).filter(Boolean);if(e){const e=i.find((e=>e.props.value===t));return e?(0,a.cloneElement)(e,{className:(0,s.A)("margin-top--md",e.props.className)}):null}return(0,j.jsx)("div",{className:"margin-top--md",children:i.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==t})))})}function y(e){const n=m(e);return(0,j.jsxs)("div",{className:(0,s.A)(i.G.tabs.container,"tabs-container",f.tabList),children:[(0,j.jsx)(v,{...n,...e}),(0,j.jsx)(w,{...n,...e})]})}function k(e){const n=(0,b.A)();return(0,j.jsx)(y,{...e,children:h(e.children)},String(n))}},20881:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/download-9d5503efc2ad929ae758ab9712c31b47.png"},8675:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/downloadOptions-59fa63c46fc30b1c8bfac73a5895926d.png"},85255:(e,n,t)=>{t.d(n,{A:()=>a});const a=t.p+"assets/images/linuxCmd-a6e2843eeb5e2b2c29d9521cc38aa05d.png"},28453:(e,n,t)=>{t.d(n,{R:()=>l,x:()=>r});var a=t(96540);const s={},i=a.createContext(s);function l(e){const n=a.useContext(i);return a.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),a.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/7082ed03.02936658.js b/assets/js/7082ed03.02936658.js new file mode 100644 index 00000000..c5d5bcec --- /dev/null +++ b/assets/js/7082ed03.02936658.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9308],{17337:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>a,contentTitle:()=>l,default:()=>h,frontMatter:()=>o,metadata:()=>s,toc:()=>d});const s=JSON.parse('{"id":"Code Quality/ESLint","title":"ESLint for Javascript Problems","description":"Phoenix Code provides a comprehensive interface for identifying and resolving","source":"@site/docs/06-Code Quality/02-ESLint.md","sourceDirName":"06-Code Quality","slug":"/Features/Problems Panel/ESLint","permalink":"/docs/Features/Problems Panel/ESLint","draft":false,"unlisted":false,"editUrl":"https://github.com/phcode-dev/docs/blob/main/docs/06-Code Quality/02-ESLint.md","tags":[],"version":"current","sidebarPosition":2,"frontMatter":{"slug":"/Features/Problems Panel/ESLint"},"sidebar":"tutorialSidebar","previous":{"title":"HTML Validator","permalink":"/docs/Features/Problems Panel/html-lint"},"next":{"title":"Phoenix Pro for Education (Free)","permalink":"/docs/phoenix-pro-school"}}');var t=i(74848),r=i(28453);const o={slug:"/Features/Problems Panel/ESLint"},l="ESLint for Javascript Problems",a={},d=[{value:"Basic Usage",id:"basic-usage",level:3},{value:"Features",id:"features",level:4},{value:"Advanced Use",id:"advanced-use",level:3},{value:"FAQ",id:"faq",level:2},{value:"Q: Which version of ESLint are supported",id:"q-which-version-of-eslint-are-supported",level:4},{value:"Q: Why is ESLint not working in my project.",id:"q-why-is-eslint-not-working-in-my-project",level:4}];function c(e){const n={a:"a",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.header,{children:(0,t.jsx)(n.h1,{id:"eslint-for-javascript-problems",children:"ESLint for Javascript Problems"})}),"\n",(0,t.jsxs)(n.p,{children:["Phoenix Code provides a comprehensive interface for identifying and resolving\n",(0,t.jsx)(n.code,{children:"ESLint"})," issues in your ",(0,t.jsx)(n.code,{children:"js"}),"/",(0,t.jsx)(n.code,{children:"jsx"})," files."]}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.code,{children:"ESLint"})," is only available in desktop apps. In Browsers, ",(0,t.jsx)(n.code,{children:"JSHint"})," is the default\nlinter for javascript files."]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{src:"https://github.com/phcode-dev/phoenix/assets/5336369/eb00691a-a0b4-4c1a-9209-d78fc7db764d",alt:"image"})}),"\n",(0,t.jsx)(n.h3,{id:"basic-usage",children:"Basic Usage"}),"\n",(0,t.jsxs)(n.p,{children:["To activate ",(0,t.jsx)(n.code,{children:"ESLint"}),", the project must have a node ",(0,t.jsx)(n.code,{children:"package.json"})," file with\nESLint as a dependency. Opening or editing+saving a ",(0,t.jsx)(n.code,{children:"js"})," or ",(0,t.jsx)(n.code,{children:"jsx"})," file will lint\nthe file with ESLint and ."]}),"\n",(0,t.jsx)(n.h4,{id:"features",children:"Features"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Errors and warnings are underlined directly in the editor."}),"\n",(0,t.jsx)(n.li,{children:"Hovering over a highlighted line provides detailed information about the\nspecific ESLint problem and a suggested fix if available."}),"\n",(0,t.jsxs)(n.li,{children:["Fix individual issues by clicking on the ",(0,t.jsx)(n.code,{children:"Fix"})," button next to the specific\nproblem, or you can resolve all fixable issues in the file by clicking on\nthe ",(0,t.jsx)(n.code,{children:"Fix All"})," button at the top of the panel."]}),"\n"]}),"\n",(0,t.jsx)(n.h3,{id:"advanced-use",children:"Advanced Use"}),"\n",(0,t.jsxs)(n.p,{children:["Phoenix Code uses ESLint configured in the opened project directory. Any changes\nto your ESLint configuration files will be automatically picked up. To learn\nmore about how to use and configure ESLint, see\n",(0,t.jsx)(n.a,{href:"https://eslint.org/docs/latest/use/getting-started",children:"Getting Started with ESLint"}),"."]}),"\n",(0,t.jsx)(n.h2,{id:"faq",children:"FAQ"}),"\n",(0,t.jsx)(n.h4,{id:"q-which-version-of-eslint-are-supported",children:"Q: Which version of ESLint are supported"}),"\n",(0,t.jsxs)(n.p,{children:["Phoenix Code supports ",(0,t.jsx)(n.strong,{children:"ESLint versions 7 and above"})," only."]}),"\n",(0,t.jsx)(n.h4,{id:"q-why-is-eslint-not-working-in-my-project",children:"Q: Why is ESLint not working in my project."}),"\n",(0,t.jsx)(n.p,{children:"Most problems are usually reported in the problesm panel itself. These are the\nmost common errors:"}),"\n",(0,t.jsxs)(n.ol,{children:["\n",(0,t.jsxs)(n.li,{children:["Ensure that ESLint is listed in ",(0,t.jsx)(n.code,{children:"dependencies"})," or ",(0,t.jsx)(n.code,{children:"devDependencies"})," section\nin your ",(0,t.jsx)(n.code,{children:"package.json"})," file. E.g."]}),"\n"]}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-js",children:'{\n "name": "My Project With ESLint",\n "version": "1.0.0",\n "description": "Sample package.json to activate ESLint",\n "main": "index.js",\n "scripts": {},\n "devDependencies": {\n "eslint": "^8.0.0"\n }\n}\n'})}),"\n",(0,t.jsxs)(n.ol,{start:"2",children:["\n",(0,t.jsxs)(n.li,{children:["Ensure to run ",(0,t.jsx)(n.code,{children:"npm install"})," on the project and ",(0,t.jsx)(n.code,{children:"node_modules"})," folder is\npresent in the project at the top level."]}),"\n",(0,t.jsx)(n.li,{children:"ESLint config files may have errors. Check if the problem message contains\nany references to your ESLint config file."}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.em,{children:"Note: ESLint runs automatically when you save your file. Issues and errors are displayed in the Problems Panel."})})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(c,{...e})}):c(e)}},28453:(e,n,i)=>{i.d(n,{R:()=>o,x:()=>l});var s=i(96540);const t={},r=s.createContext(t);function o(e){const n=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:o(e.components),s.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/710bdae4.e55228bb.js b/assets/js/710bdae4.e55228bb.js new file mode 100644 index 00000000..c0df3778 --- /dev/null +++ b/assets/js/710bdae4.e55228bb.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4987],{80664:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>c,contentTitle:()=>o,default:()=>h,frontMatter:()=>l,metadata:()=>r,toc:()=>d});const r=JSON.parse('{"id":"API-Reference/utils/ZipUtils","title":"ZipUtils","description":"Import :","source":"@site/api/API-Reference/utils/ZipUtils.md","sourceDirName":"API-Reference/utils","slug":"/API-Reference/utils/ZipUtils","permalink":"/api/API-Reference/utils/ZipUtils","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"ViewUtils","permalink":"/api/API-Reference/utils/ViewUtils"},"next":{"title":"MainViewFactory","permalink":"/api/API-Reference/view/MainViewFactory"}}');var n=i(74848),s=i(28453);const l={},o=void 0,c={},d=[{value:"Import :",id:"import-",level:3},{value:"unzipBinDataToLocation(zipData, projectDir, flattenFirstLevel, [progressControlCallback]) \u21d2 Promise",id:"unzipbindatatolocationzipdata-projectdir-flattenfirstlevel-progresscontrolcallback--promise",level:2},{value:"zipFolder(fullPath) \u21d2 Promise.<JSZip>",id:"zipfolderfullpath--promisejszip",level:2},{value:"unzipURLToLocation(url, projectDir, flattenFirstLevel) \u21d2 Promise",id:"unzipurltolocationurl-projectdir-flattenfirstlevel--promise",level:2}];function a(e){const t={a:"a",br:"br",code:"code",h2:"h2",h3:"h3",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,s.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.h3,{id:"import-",children:"Import :"}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-js",children:'const ZipUtils = brackets.getModule("utils/ZipUtils")\n'})}),"\n",(0,n.jsx)("a",{name:"unzipBinDataToLocation"}),"\n",(0,n.jsxs)(t.h2,{id:"unzipbindatatolocationzipdata-projectdir-flattenfirstlevel-progresscontrolcallback--promise",children:["unzipBinDataToLocation(zipData, projectDir, flattenFirstLevel, [progressControlCallback]) \u21d2 ",(0,n.jsx)("code",{children:"Promise"})]}),"\n",(0,n.jsx)(t.p,{children:"Extracts a given binary zip data array to a specified location."}),"\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"Kind"}),": global function",(0,n.jsx)(t.br,{}),"\n",(0,n.jsx)(t.strong,{children:"Returns"}),": ",(0,n.jsx)("code",{children:"Promise"})," - - A promise that resolves when extraction is complete."]}),"\n",(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Param"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Default"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"zipData"}),(0,n.jsx)(t.td,{children:(0,n.jsx)("code",{children:"UInt8Array"})}),(0,n.jsx)(t.td,{}),(0,n.jsx)(t.td,{children:"Binary zip data."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"projectDir"}),(0,n.jsx)(t.td,{children:(0,n.jsx)("code",{children:"string"})}),(0,n.jsx)(t.td,{}),(0,n.jsx)(t.td,{children:"Directory to extract to."})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"flattenFirstLevel"}),(0,n.jsx)(t.td,{children:(0,n.jsx)("code",{children:"boolean"})}),(0,n.jsx)(t.td,{children:(0,n.jsx)("code",{children:"false"})}),(0,n.jsxs)(t.td,{children:["If set to true, then if zip contents are nested inside a directory, the nested directory will be removed in the path structure in the destination. For example, some zip may contain a ",(0,n.jsx)(t.code,{children:"contents"})," folder inside the zip which has all the files. If we blindly extract the zip, all the contents will be placed inside a ",(0,n.jsx)(t.code,{children:"contents"})," folder in the root instead of the root directory itself. See a sample zip file here: ",(0,n.jsx)(t.a,{href:"https://api.github.com/repos/StartBootstrap/startbootstrap-grayscales/zipball",children:"https://api.github.com/repos/StartBootstrap/startbootstrap-grayscales/zipball"})]})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"[progressControlCallback]"}),(0,n.jsx)(t.td,{children:(0,n.jsx)("code",{children:"function"})}),(0,n.jsx)(t.td,{}),(0,n.jsxs)(t.td,{children:["A function that can be used to view the progress and stop further extraction. The function will be invoked with (doneCount, totalCount). The function should return ",(0,n.jsx)(t.code,{children:"false"})," if further extraction needs to be stopped. If nothing or ",(0,n.jsx)(t.code,{children:"true"})," is returned, it will continue extraction."]})]})]})]}),"\n",(0,n.jsx)("a",{name:"zipFolder"}),"\n",(0,n.jsxs)(t.h2,{id:"zipfolderfullpath--promisejszip",children:["zipFolder(fullPath) \u21d2 ",(0,n.jsx)("code",{children:"Promise."})]}),"\n",(0,n.jsx)(t.p,{children:"Zips a given folder located at path to a jsZip object."}),"\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"Kind"}),": global function",(0,n.jsx)(t.br,{}),"\n",(0,n.jsx)(t.strong,{children:"Returns"}),": ",(0,n.jsx)("code",{children:"Promise."})," - zip object"]}),"\n",(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Param"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsx)(t.tbody,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"fullPath"}),(0,n.jsx)(t.td,{children:(0,n.jsx)("code",{children:"string"})}),(0,n.jsx)(t.td,{children:"to zip"})]})})]}),"\n",(0,n.jsx)("a",{name:"unzipURLToLocation"}),"\n",(0,n.jsxs)(t.h2,{id:"unzipurltolocationurl-projectdir-flattenfirstlevel--promise",children:["unzipURLToLocation(url, projectDir, flattenFirstLevel) \u21d2 ",(0,n.jsx)("code",{children:"Promise"})]}),"\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"Kind"}),": global function"]}),"\n",(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Param"}),(0,n.jsx)(t.th,{children:"Default"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"url"}),(0,n.jsx)(t.td,{}),(0,n.jsx)(t.td,{children:"the zip fle URL"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"projectDir"}),(0,n.jsx)(t.td,{}),(0,n.jsx)(t.td,{children:"To extract to"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"flattenFirstLevel"}),(0,n.jsx)(t.td,{children:(0,n.jsx)("code",{children:"false"})}),(0,n.jsxs)(t.td,{children:["if set to true, then if zip contents are nested inside a directory, the nexted dir will be removed in the path structure in destination. For Eg. some Zip may contain a ",(0,n.jsx)(t.code,{children:"contents"})," folder inside the zip which has all the contents. If we blindly extract the zio, all the contents will be placed inside a ",(0,n.jsx)(t.code,{children:"contents"})," folder in root and not the root dir itself. See a sample zip file here: ",(0,n.jsx)(t.a,{href:"https://api.github.com/repos/StartBootstrap/startbootstrap-grayscales/zipball",children:"https://api.github.com/repos/StartBootstrap/startbootstrap-grayscales/zipball"})]})]})]})]})]})}function h(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(a,{...e})}):a(e)}},28453:(e,t,i)=>{i.d(t,{R:()=>l,x:()=>o});var r=i(96540);const n={},s=r.createContext(n);function l(e){const t=r.useContext(s);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:l(e.components),r.createElement(s.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/7125637e.9f34fdc3.js b/assets/js/7125637e.9f34fdc3.js new file mode 100644 index 00000000..629f12f3 --- /dev/null +++ b/assets/js/7125637e.9f34fdc3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[177],{94146:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>r,default:()=>c,frontMatter:()=>a,metadata:()=>i,toc:()=>d});var i=t(49520),o=t(74848),s=t(28453);const a={slug:"release-3.9",title:"HTML Workflows and stability Release (September-2024, V-3.9) is now Live",description:"Phoenix Code 3.9 improves app stability and robustness, adds HTML and text editing workflow enhancements, and ChromeOS support.",authors:["arun","charly","kiran","devvaannsh","jozsefk9","acemi1","phoenixBot"],tags:["Live Preview","Live Code Hints","Windows","Linux","Mac","Release"]},r=void 0,l={authorsImageUrls:[void 0,void 0,void 0,void 0,void 0,void 0,void 0]},d=[{value:"Now Available on ChromeOS",id:"now-available-on-chromeos",level:2},{value:"Auto rename start and end of HTML/XML/SVG tags",id:"auto-rename-start-and-end-of-htmlxmlsvg-tags",level:2},{value:"Auto Tab and Spacing detection",id:"auto-tab-and-spacing-detection",level:2},{value:"UX Improvements",id:"ux-improvements",level:2},{value:"Stability Improvements",id:"stability-improvements",level:2},{value:"Update on Release Schedule",id:"update-on-release-schedule",level:2},{value:"A Request from the Phoenix Team:",id:"a-request-from-the-phoenix-team",level:2}];function h(e){const n={a:"a",code:"code",h2:"h2",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(n.p,{children:["September release(3.9) of Phoenix Code is now available for download at\n",(0,o.jsx)(n.a,{href:"https://phcode.io",children:"phcode.io"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["This month's core theme is ",(0,o.jsx)(n.code,{children:"App robustness"})," and ",(0,o.jsx)(n.code,{children:"stability"})," improvements.\nWe have also added several ",(0,o.jsx)(n.code,{children:"HTML and Text Editing"})," workflow improvements."]}),"\n",(0,o.jsx)(n.h2,{id:"now-available-on-chromeos",children:"Now Available on ChromeOS"}),"\n",(0,o.jsx)(n.p,{children:"All new native ChromeOS app is now available on the Google Play Store.\nThe ChromeOS app is a highly requested feature and is specially made for education and student use."}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.a,{href:"https://play.google.com/store/apps/details?id=prod.phcode.twa",children:(0,o.jsx)(n.img,{src:"https://github.com/user-attachments/assets/0a7f20ce-653c-43a8-ac3e-3875ea74df5b",alt:"google play icon (1)"})})}),"\n",(0,o.jsx)(n.h2,{id:"auto-rename-start-and-end-of-htmlxmlsvg-tags",children:"Auto rename start and end of HTML/XML/SVG tags"}),"\n",(0,o.jsxs)(n.p,{children:["Automatically rename paired HTML/XML/SVG tags as you type at the start or end of the tag. ",(0,o.jsx)(n.a,{href:"https://docs.phcode.dev/docs/editing-text/#auto-rename-tag",children:"Read more..."})]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{src:"https://github.com/user-attachments/assets/ad82db8c-df1c-4c83-a5db-145caab539ec",alt:"tag sync"})}),"\n",(0,o.jsx)(n.h2,{id:"auto-tab-and-spacing-detection",children:"Auto Tab and Spacing detection"}),"\n",(0,o.jsxs)(n.p,{children:["Phoenix Code can now automatically detect and apply the indentation style (tabs or spaces) based on the existing code in the file.\n",(0,o.jsx)(n.a,{href:"https://docs.phcode.dev/docs/editing-text/#auto-space-detection",children:"Read more..."})]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{src:"https://github.com/user-attachments/assets/0adc47c5-a561-4002-bffb-d7bcde999b9d",alt:"image"})}),"\n",(0,o.jsx)(n.h2,{id:"ux-improvements",children:"UX Improvements"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.code,{children:"Reopen closed files"})," option added to ",(0,o.jsx)(n.code,{children:"File"})," menu. Shortcut: ",(0,o.jsx)(n.code,{children:"Ctrl-Shift-T"}),", or (",(0,o.jsx)(n.code,{children:"Cmd-Shift-T"})," on Mac)."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.code,{children:"Go to Next Problem"})," and ",(0,o.jsx)(n.code,{children:"Go to Previous Problem"})," option added to ",(0,o.jsxs)(n.a,{href:"https://github.com/phcode-dev/phoenix/pull/1732",children:[(0,o.jsx)(n.code,{children:"Navigate"})," menu."]})]}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"https://github.com/orgs/phcode-dev/discussions/1809",children:"Tab key press to insert code hints"})}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.code,{children:"window.alert"}),", ",(0,o.jsx)(n.code,{children:"window.confirm"})," and ",(0,o.jsx)(n.code,{children:"window.prompt"})," APIs ",(0,o.jsx)(n.a,{href:"https://github.com/phcode-dev/phoenix/pull/1814",children:"will work in live preview"})]}),"\n",(0,o.jsxs)(n.li,{children:["Clicking on live preview no longer automatically switches from your ",(0,o.jsx)(n.a,{href:"https://github.com/phcode-dev/phoenix/pull/1800",children:"current unrelated file to the main HTML file."})]}),"\n",(0,o.jsxs)(n.li,{children:["Live preview usability and navigation improvements - (",(0,o.jsx)(n.a,{href:"https://github.com/phcode-dev/phoenix/pull/1741",children:"1"}),", ",(0,o.jsx)(n.a,{href:"https://github.com/phcode-dev/phoenix/pull/1760",children:"2"}),")"]}),"\n",(0,o.jsxs)(n.li,{children:["Increase/Decrease font size will ",(0,o.jsx)(n.a,{href:"https://github.com/phcode-dev/phoenix/pull/1799",children:"change the Editor Font size Only"}),"."]}),"\n",(0,o.jsx)(n.li,{children:"Fixed issue where code folding markers disappear when hovering over gutter in dark theme."}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.code,{children:".cjs"})," and ",(0,o.jsx)(n.code,{children:".mjs"})," files support as javascript files."]}),"\n",(0,o.jsxs)(n.li,{children:["Support for ",(0,o.jsx)(n.code,{children:"shtml"})," custom server live preview."]}),"\n"]}),"\n",(0,o.jsx)(n.h2,{id:"stability-improvements",children:"Stability Improvements"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"https://github.com/phcode-dev/phoenix/issues/1791",children:"Fixes node crashes after wakeup from sleep in Windows/Mac."})}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"https://github.com/phcode-dev/phoenix/issues/1821",children:"Kaspersky AV trojan horse false positive mitigation."})}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"https://github.com/phcode-dev/phoenix/pull/1818",children:"Corrupt preferences auto reset."})}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"https://github.com/phcode-dev/phoenix/pull/1812",children:"Boot time crash recovery."})}),"\n",(0,o.jsxs)(n.li,{children:["Phoenix Code won't start in ",(0,o.jsx)(n.a,{href:"https://github.com/phcode-dev/phoenix/pull/1740",children:"some Fedora/other Linux distros."})]}),"\n"]}),"\n",(0,o.jsx)(n.h2,{id:"update-on-release-schedule",children:"Update on Release Schedule"}),"\n",(0,o.jsx)(n.p,{children:"In the past, we've released Phoenix Code updates on a monthly basis. However, last month we encountered an issue with our release that led to stability problems for our users."}),"\n",(0,o.jsx)(n.p,{children:"To address this, we've taken a step back to reevaluate our release process and make improvements to ensure greater robustness and reliability going forward."}),"\n",(0,o.jsx)(n.p,{children:"As a result, we've decided to slow down the desktop release schedule to once every two months. This will allow us to thoroughly test each update and deliver a more stable experience."}),"\n",(0,o.jsx)(n.p,{children:"We apologize for any inconvenience caused by the previous release and appreciate your patience and understanding as we work to improve the quality of Phoenix Code."}),"\n",(0,o.jsx)(n.p,{children:"We look forward to bringing you new features and improvements in a more controlled and reliable manner."}),"\n",(0,o.jsx)(n.h2,{id:"a-request-from-the-phoenix-team",children:"A Request from the Phoenix Team:"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Share your feedback:"})," ",(0,o.jsx)(n.a,{href:"https://github.com/orgs/phcode-dev/discussions",children:"https://github.com/orgs/phcode-dev/discussions"})]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Spread the word"})," about Phoenix to friends and colleagues."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsxs)(n.a,{href:"https://github.com/sponsors/phcode-dev",children:[(0,o.jsx)(n.strong,{children:"Consider supporting us"})," on GitHub Sponsors"]}),".\nEvery contribution helps us to keep improving Phoenix Code."]}),"\n"]}),"\n",(0,o.jsx)(n.p,{children:"With gratitude,"}),"\n",(0,o.jsx)(n.p,{children:"The Phoenix Team"})]})}function c(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(h,{...e})}):h(e)}},28453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>r});var i=t(96540);const o={},s=i.createContext(o);function a(e){const n=i.useContext(s);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:a(e.components),i.createElement(s.Provider,{value:n},e.children)}},49520:e=>{e.exports=JSON.parse('{"permalink":"/blog/release-3.9","editUrl":"https://github.com/phcode-dev/docs/blob/main/blog/2024-09-02-Release-3.9/index.md","source":"@site/blog/2024-09-02-Release-3.9/index.md","title":"HTML Workflows and stability Release (September-2024, V-3.9) is now Live","description":"Phoenix Code 3.9 improves app stability and robustness, adds HTML and text editing workflow enhancements, and ChromeOS support.","date":"2024-09-02T00:00:00.000Z","tags":[{"inline":true,"label":"Live Preview","permalink":"/blog/tags/live-preview"},{"inline":true,"label":"Live Code Hints","permalink":"/blog/tags/live-code-hints"},{"inline":true,"label":"Windows","permalink":"/blog/tags/windows"},{"inline":true,"label":"Linux","permalink":"/blog/tags/linux"},{"inline":true,"label":"Mac","permalink":"/blog/tags/mac"},{"inline":true,"label":"Release","permalink":"/blog/tags/release"}],"readingTime":3.05,"hasTruncateMarker":false,"authors":[{"name":"Arun Bose","title":"Co-Founder, Phoenix Code","url":"https://github.com/abose","imageURL":"https://github.com/abose.png","key":"arun","page":null},{"name":"Charly P Abraham","title":"Co-Founder, Phoenix Code","url":"https://github.com/charlypa","imageURL":"https://github.com/charlypa.png","key":"charly","page":null},{"name":"Kiran Bose","title":"Community Contributor","url":"https://github.com/kiranbose","imageURL":"https://github.com/kiranbose.png","key":"kiran","page":null},{"name":"Devansh Agarwal","title":"Founding Engineer, Phoenix Code","url":"https://github.com/devvaannsh","imageURL":"https://github.com/devvaannsh.png","key":"devvaannsh","page":null},{"name":"Jozsef","title":"Community Contributor","url":"https://github.com/jozsefk9","imageURL":"https://github.com/jozsefk9.png","key":"jozsefk9","page":null},{"name":"acemi1","title":"Community Contributor","url":"https://github.com/acemi1","imageURL":"https://github.com/acemi1.png","key":"acemi1","page":null},{"name":"Phoenix Code Bot","title":"Our little elf who keeps the whole place together","url":"https://github.com/phoenixide","imageURL":"https://github.com/phoenixide.png","key":"phoenixBot","page":null}],"frontMatter":{"slug":"release-3.9","title":"HTML Workflows and stability Release (September-2024, V-3.9) is now Live","description":"Phoenix Code 3.9 improves app stability and robustness, adds HTML and text editing workflow enhancements, and ChromeOS support.","authors":["arun","charly","kiran","devvaannsh","jozsefk9","acemi1","phoenixBot"],"tags":["Live Preview","Live Code Hints","Windows","Linux","Mac","Release"]},"unlisted":false,"prevItem":{"title":"Editor Experience Release (November-2024, V-3.10) is now Live","permalink":"/blog/release-3.10"},"nextItem":{"title":"Critical Update + HTML Helpers Release (June-2024, V-3.8) is now Live","permalink":"/blog/release-3.8"}}')}}]); \ No newline at end of file diff --git a/assets/js/7137ee20.f2de1581.js b/assets/js/7137ee20.f2de1581.js new file mode 100644 index 00000000..ded105a5 --- /dev/null +++ b/assets/js/7137ee20.f2de1581.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5649],{96263:(e,n,l)=>{l.r(n),l.d(n,{assets:()=>d,contentTitle:()=>a,default:()=>h,frontMatter:()=>t,metadata:()=>i,toc:()=>o});const i=JSON.parse('{"id":"API-Reference/view/PanelView","title":"PanelView","description":"Import :","source":"@site/api/API-Reference/view/PanelView.md","sourceDirName":"API-Reference/view","slug":"/API-Reference/view/PanelView","permalink":"/api/API-Reference/view/PanelView","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"Pane","permalink":"/api/API-Reference/view/Pane"},"next":{"title":"PluginPanelView","permalink":"/api/API-Reference/view/PluginPanelView"}}');var s=l(74848),r=l(28453);const t={},a=void 0,d={},o=[{value:"Import :",id:"import-",level:3},{value:"_panelMap : Object.<string, Panel>",id:"_panelmap--objectstring-panel",level:2},{value:"_$container : jQueryObject",id:"_container--jqueryobject",level:2},{value:"_$tabBar : jQueryObject",id:"_tabbar--jqueryobject",level:2},{value:"_$tabsOverflow : jQueryObject",id:"_tabsoverflow--jqueryobject",level:2},{value:"_openIds : Array.<string>",id:"_openids--arraystring",level:2},{value:"_activeId : string | null",id:"_activeid--string--null",level:2},{value:"_isMaximized : boolean",id:"_ismaximized--boolean",level:2},{value:"_preMaximizeHeight : number | null",id:"_premaximizeheight--number--null",level:2},{value:"_$editorHolder : jQueryObject",id:"_editorholder--jqueryobject",level:2},{value:"_recomputeLayout : function",id:"_recomputelayout--function",level:2},{value:"_defaultPanelId : string | null",id:"_defaultpanelid--string--null",level:2},{value:"_$overflowBtn : jQueryObject",id:"_overflowbtn--jqueryobject",level:2},{value:"_overflowDropdown : DropdownButton.DropdownButton",id:"_overflowdropdown--dropdownbuttondropdownbutton",level:2},{value:"EVENT_PANEL_HIDDEN : string",id:"event_panel_hidden--string",level:2},{value:"EVENT_PANEL_SHOWN : string",id:"event_panel_shown--string",level:2},{value:"PANEL_TYPE_BOTTOM_PANEL : string",id:"panel_type_bottom_panel--string",level:2},{value:"MAXIMIZE_THRESHOLD : number",id:"maximize_threshold--number",level:2},{value:"MIN_PANEL_HEIGHT : number",id:"min_panel_height--number",level:2},{value:"PREF_BOTTOM_PANEL_MAXIMIZED",id:"pref_bottom_panel_maximized",level:2},{value:"Panel($panel, id, [title], [options])",id:"panelpanel-id-title-options",level:2},{value:"panel.$panel : jQueryObject",id:"panelpanel--jqueryobject",level:3},{value:"panel.isVisible() \u21d2 boolean",id:"panelisvisible--boolean",level:3},{value:"panel.registerCanBeShownHandler(canShowHandlerFn) \u21d2 boolean",id:"panelregistercanbeshownhandlercanshowhandlerfn--boolean",level:3},{value:"panel.canBeShown() \u21d2 boolean",id:"panelcanbeshown--boolean",level:3},{value:"panel.registerOnCloseRequestedHandler(handler)",id:"panelregisteroncloserequestedhandlerhandler",level:3},{value:"panel.requestClose() \u21d2 Promise.<boolean>",id:"panelrequestclose--promiseboolean",level:3},{value:"panel.show()",id:"panelshow",level:3},{value:"panel.addToTabBar()",id:"paneladdtotabbar",level:3},{value:"panel.hide()",id:"panelhide",level:3},{value:"panel.closeTab()",id:"panelclosetab",level:3},{value:"panel.focus() \u21d2 boolean",id:"panelfocus--boolean",level:3},{value:"panel.setVisible(visible)",id:"panelsetvisiblevisible",level:3},{value:"panel.setTitle(newTitle)",id:"panelsettitlenewtitle",level:3},{value:"panel.destroy()",id:"paneldestroy",level:3},{value:"panel.getPanelType() \u21d2 string",id:"panelgetpaneltype--string",level:3},{value:"init($container, $tabBar, $tabsOverflow, $editorHolder, recomputeLayoutFn, defaultPanelId)",id:"initcontainer-tabbar-tabsoverflow-editorholder-recomputelayoutfn-defaultpanelid",level:2},{value:"exitMaximizeOnResize()",id:"exitmaximizeonresize",level:2},{value:"enterMaximizeOnResize()",id:"entermaximizeonresize",level:2},{value:"restoreIfMaximized()",id:"restoreifmaximized",level:2},{value:"isMaximized() \u21d2 boolean",id:"ismaximized--boolean",level:2},{value:"collapseContainer()",id:"collapsecontainer",level:2},{value:"restoreContainer()",id:"restorecontainer",level:2},{value:"getOpenBottomPanelIDs() \u21d2 Array.<string>",id:"getopenbottompanelids--arraystring",level:2},{value:"hideAllOpenPanels() \u21d2 Array.<string>",id:"hideallopenpanels--arraystring",level:2},{value:"getActiveBottomPanel() \u21d2 Panel | null",id:"getactivebottompanel--panel--null",level:2},{value:"showNextPanel() \u21d2 boolean",id:"shownextpanel--boolean",level:2}];function c(e){const n={a:"a",br:"br",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,r.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h3,{id:"import-",children:"Import :"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-js",children:'const PanelView = brackets.getModule("view/PanelView")\n'})}),"\n",(0,s.jsx)("a",{name:"_panelMap"}),"\n",(0,s.jsxs)(n.h2,{id:"_panelmap--objectstring-panel",children:["_panelMap : ",(0,s.jsx)("code",{children:"Object."})]}),"\n",(0,s.jsx)(n.p,{children:"Maps panel ID to Panel instance"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,s.jsx)("a",{name:"_$container"}),"\n",(0,s.jsxs)(n.h2,{id:"_container--jqueryobject",children:["_$container : ",(0,s.jsx)("code",{children:"jQueryObject"})]}),"\n",(0,s.jsx)(n.p,{children:"The single container wrapping all bottom panels"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,s.jsx)("a",{name:"_$tabBar"}),"\n",(0,s.jsxs)(n.h2,{id:"_tabbar--jqueryobject",children:["_$tabBar : ",(0,s.jsx)("code",{children:"jQueryObject"})]}),"\n",(0,s.jsx)(n.p,{children:"The tab bar inside the container"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,s.jsx)("a",{name:"_$tabsOverflow"}),"\n",(0,s.jsxs)(n.h2,{id:"_tabsoverflow--jqueryobject",children:["_$tabsOverflow : ",(0,s.jsx)("code",{children:"jQueryObject"})]}),"\n",(0,s.jsx)(n.p,{children:"Scrollable area holding the tab elements"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,s.jsx)("a",{name:"_openIds"}),"\n",(0,s.jsxs)(n.h2,{id:"_openids--arraystring",children:["_openIds : ",(0,s.jsx)("code",{children:"Array."})]}),"\n",(0,s.jsx)(n.p,{children:"Ordered list of currently open (tabbed) panel IDs"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,s.jsx)("a",{name:"_activeId"}),"\n",(0,s.jsxs)(n.h2,{id:"_activeid--string--null",children:["_activeId : ",(0,s.jsx)("code",{children:"string"})," | ",(0,s.jsx)("code",{children:"null"})]}),"\n",(0,s.jsx)(n.p,{children:"The panel ID of the currently visible (active) tab"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,s.jsx)("a",{name:"_isMaximized"}),"\n",(0,s.jsxs)(n.h2,{id:"_ismaximized--boolean",children:["_isMaximized : ",(0,s.jsx)("code",{children:"boolean"})]}),"\n",(0,s.jsx)(n.p,{children:"Whether the bottom panel is currently maximized"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,s.jsx)("a",{name:"_preMaximizeHeight"}),"\n",(0,s.jsxs)(n.h2,{id:"_premaximizeheight--number--null",children:["_preMaximizeHeight : ",(0,s.jsx)("code",{children:"number"})," | ",(0,s.jsx)("code",{children:"null"})]}),"\n",(0,s.jsx)(n.p,{children:"The panel height before maximize, for restore"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,s.jsx)("a",{name:"_$editorHolder"}),"\n",(0,s.jsxs)(n.h2,{id:"_editorholder--jqueryobject",children:["_$editorHolder : ",(0,s.jsx)("code",{children:"jQueryObject"})]}),"\n",(0,s.jsx)(n.p,{children:"The editor holder element, passed from WorkspaceManager"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,s.jsx)("a",{name:"_recomputeLayout"}),"\n",(0,s.jsxs)(n.h2,{id:"_recomputelayout--function",children:["_recomputeLayout : ",(0,s.jsx)("code",{children:"function"})]}),"\n",(0,s.jsx)(n.p,{children:"recomputeLayout callback from WorkspaceManager"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,s.jsx)("a",{name:"_defaultPanelId"}),"\n",(0,s.jsxs)(n.h2,{id:"_defaultpanelid--string--null",children:["_defaultPanelId : ",(0,s.jsx)("code",{children:"string"})," | ",(0,s.jsx)("code",{children:"null"})]}),"\n",(0,s.jsx)(n.p,{children:"The default/quick-access panel ID"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,s.jsx)("a",{name:"_$overflowBtn"}),"\n",(0,s.jsxs)(n.h2,{id:"_overflowbtn--jqueryobject",children:["_$overflowBtn : ",(0,s.jsx)("code",{children:"jQueryObject"})]}),"\n",(0,s.jsx)(n.p,{children:"Overflow dropdown button"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,s.jsx)("a",{name:"_overflowDropdown"}),"\n",(0,s.jsxs)(n.h2,{id:"_overflowdropdown--dropdownbuttondropdownbutton",children:["_overflowDropdown : ",(0,s.jsx)("code",{children:"DropdownButton.DropdownButton"})]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,s.jsx)("a",{name:"EVENT_PANEL_HIDDEN"}),"\n",(0,s.jsxs)(n.h2,{id:"event_panel_hidden--string",children:["EVENT_PANEL_HIDDEN : ",(0,s.jsx)("code",{children:"string"})]}),"\n",(0,s.jsx)(n.p,{children:"Event when panel is hidden"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,s.jsx)("a",{name:"EVENT_PANEL_SHOWN"}),"\n",(0,s.jsxs)(n.h2,{id:"event_panel_shown--string",children:["EVENT_PANEL_SHOWN : ",(0,s.jsx)("code",{children:"string"})]}),"\n",(0,s.jsx)(n.p,{children:"Event when panel is shown"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,s.jsx)("a",{name:"PANEL_TYPE_BOTTOM_PANEL"}),"\n",(0,s.jsxs)(n.h2,{id:"panel_type_bottom_panel--string",children:["PANEL_TYPE_BOTTOM_PANEL : ",(0,s.jsx)("code",{children:"string"})]}),"\n",(0,s.jsx)(n.p,{children:"type for bottom panel"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,s.jsx)("a",{name:"MAXIMIZE_THRESHOLD"}),"\n",(0,s.jsxs)(n.h2,{id:"maximize_threshold--number",children:["MAXIMIZE_THRESHOLD : ",(0,s.jsx)("code",{children:"number"})]}),"\n",(0,s.jsx)(n.p,{children:"Pixel threshold for detecting near-maximize state during resize.\nIf the editor holder height is within this many pixels of zero, the\npanel is treated as maximized. Keeps the maximize icon responsive\nduring drag without being overly sensitive."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,s.jsx)("a",{name:"MIN_PANEL_HEIGHT"}),"\n",(0,s.jsxs)(n.h2,{id:"min_panel_height--number",children:["MIN_PANEL_HEIGHT : ",(0,s.jsx)("code",{children:"number"})]}),"\n",(0,s.jsx)(n.p,{children:"Minimum panel height (matches Resizer minSize) used as a floor\nwhen computing a sensible restore height."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,s.jsx)("a",{name:"PREF_BOTTOM_PANEL_MAXIMIZED"}),"\n",(0,s.jsx)(n.h2,{id:"pref_bottom_panel_maximized",children:"PREF_BOTTOM_PANEL_MAXIMIZED"}),"\n",(0,s.jsx)(n.p,{children:"Preference key for persisting the maximize state across reloads."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,s.jsx)("a",{name:"Panel"}),"\n",(0,s.jsx)(n.h2,{id:"panelpanel-id-title-options",children:"Panel($panel, id, [title], [options])"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"$panel"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"jQueryObject"})}),(0,s.jsx)(n.td,{})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"id"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(n.td,{})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"[title]"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(n.td,{})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"[options]"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"Object"})}),(0,s.jsx)(n.td,{})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"[options.iconSvg]"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(n.td,{children:'Path to an SVG icon (e.g. "styles/images/icon.svg").'})]})]})]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"#Panel",children:"Panel($panel, id, [title], [options])"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"#Panel+$panel",children:".$panel"})," : ",(0,s.jsx)("code",{children:"jQueryObject"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"#Panel+isVisible",children:".isVisible()"})," \u21d2 ",(0,s.jsx)("code",{children:"boolean"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"#Panel+registerCanBeShownHandler",children:".registerCanBeShownHandler(canShowHandlerFn)"})," \u21d2 ",(0,s.jsx)("code",{children:"boolean"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"#Panel+canBeShown",children:".canBeShown()"})," \u21d2 ",(0,s.jsx)("code",{children:"boolean"})]}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"#Panel+registerOnCloseRequestedHandler",children:".registerOnCloseRequestedHandler(handler)"})}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"#Panel+requestClose",children:".requestClose()"})," \u21d2 ",(0,s.jsx)("code",{children:"Promise."})]}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"#Panel+show",children:".show()"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"#Panel+addToTabBar",children:".addToTabBar()"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"#Panel+hide",children:".hide()"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"#Panel+closeTab",children:".closeTab()"})}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"#Panel+focus",children:".focus()"})," \u21d2 ",(0,s.jsx)("code",{children:"boolean"})]}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"#Panel+setVisible",children:".setVisible(visible)"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"#Panel+setTitle",children:".setTitle(newTitle)"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"#Panel+destroy",children:".destroy()"})}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"#Panel+getPanelType",children:".getPanelType()"})," \u21d2 ",(0,s.jsx)("code",{children:"string"})]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)("a",{name:"Panel+$panel"}),"\n",(0,s.jsxs)(n.h3,{id:"panelpanel--jqueryobject",children:["panel.$panel : ",(0,s.jsx)("code",{children:"jQueryObject"})]}),"\n",(0,s.jsx)(n.p,{children:"Dom node holding the rendered panel"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": instance property of ",(0,s.jsx)(n.a,{href:"#Panel",children:(0,s.jsx)("code",{children:"Panel"})})]}),"\n",(0,s.jsx)("a",{name:"Panel+isVisible"}),"\n",(0,s.jsxs)(n.h3,{id:"panelisvisible--boolean",children:["panel.isVisible() \u21d2 ",(0,s.jsx)("code",{children:"boolean"})]}),"\n",(0,s.jsx)(n.p,{children:"Determines if the panel is visible"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,s.jsx)(n.a,{href:"#Panel",children:(0,s.jsx)("code",{children:"Panel"})}),(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"boolean"})," - true if visible, false if not"]}),"\n",(0,s.jsx)("a",{name:"Panel+registerCanBeShownHandler"}),"\n",(0,s.jsxs)(n.h3,{id:"panelregistercanbeshownhandlercanshowhandlerfn--boolean",children:["panel.registerCanBeShownHandler(canShowHandlerFn) \u21d2 ",(0,s.jsx)("code",{children:"boolean"})]}),"\n",(0,s.jsx)(n.p,{children:"Registers a call back function that will be called just before panel is shown. The handler should return true\nif the panel can be shown, else return false and the panel will not be shown."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,s.jsx)(n.a,{href:"#Panel",children:(0,s.jsx)("code",{children:"Panel"})}),(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"boolean"})," - true if visible, false if not"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"canShowHandlerFn"}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("code",{children:"function"})," | ",(0,s.jsx)("code",{children:"null"})]}),(0,s.jsx)(n.td,{children:"function that should return true of false if the panel can be shown/not. or null to clear the handler."})]})})]}),"\n",(0,s.jsx)("a",{name:"Panel+canBeShown"}),"\n",(0,s.jsxs)(n.h3,{id:"panelcanbeshown--boolean",children:["panel.canBeShown() \u21d2 ",(0,s.jsx)("code",{children:"boolean"})]}),"\n",(0,s.jsx)(n.p,{children:"Returns true if th panel can be shown, else false."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,s.jsx)(n.a,{href:"#Panel",children:(0,s.jsx)("code",{children:"Panel"})})]}),"\n",(0,s.jsx)("a",{name:"Panel+registerOnCloseRequestedHandler"}),"\n",(0,s.jsx)(n.h3,{id:"panelregisteroncloserequestedhandlerhandler",children:"panel.registerOnCloseRequestedHandler(handler)"}),"\n",(0,s.jsxs)(n.p,{children:["Registers an async handler that is called before the panel is closed via user interaction (e.g. clicking the\ntab close button). The handler should return ",(0,s.jsx)(n.code,{children:"true"})," to allow the close, or ",(0,s.jsx)(n.code,{children:"false"})," to prevent it."]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,s.jsx)(n.a,{href:"#Panel",children:(0,s.jsx)("code",{children:"Panel"})})]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"handler"}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("code",{children:"function"})," | ",(0,s.jsx)("code",{children:"null"})]}),(0,s.jsx)(n.td,{children:"An async function returning a boolean, or null to clear the handler."})]})})]}),"\n",(0,s.jsx)("a",{name:"Panel+requestClose"}),"\n",(0,s.jsxs)(n.h3,{id:"panelrequestclose--promiseboolean",children:["panel.requestClose() \u21d2 ",(0,s.jsx)("code",{children:"Promise."})]}),"\n",(0,s.jsxs)(n.p,{children:["Requests this panel's tab to close, invoking the registered\nonCloseRequested handler first (if any). If the handler returns false,\nthe tab stays open. Otherwise, ",(0,s.jsx)(n.code,{children:"closeTab()"})," is called."]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,s.jsx)(n.a,{href:"#Panel",children:(0,s.jsx)("code",{children:"Panel"})}),(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"Promise."})," - Resolves to true if the tab was closed, false if prevented."]}),"\n",(0,s.jsx)("a",{name:"Panel+show"}),"\n",(0,s.jsx)(n.h3,{id:"panelshow",children:"panel.show()"}),"\n",(0,s.jsx)(n.p,{children:"Shows the panel"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,s.jsx)(n.a,{href:"#Panel",children:(0,s.jsx)("code",{children:"Panel"})})]}),"\n",(0,s.jsx)("a",{name:"Panel+addToTabBar"}),"\n",(0,s.jsx)(n.h3,{id:"paneladdtotabbar",children:"panel.addToTabBar()"}),"\n",(0,s.jsx)(n.p,{children:"Adds the panel to the tab bar and open set without showing the container.\nUse this during startup to restore a panel's tab when the container\nwas collapsed by the user \u2014 avoids forcing the bottom panel open."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,s.jsx)(n.a,{href:"#Panel",children:(0,s.jsx)("code",{children:"Panel"})})]}),"\n",(0,s.jsx)("a",{name:"Panel+hide"}),"\n",(0,s.jsx)(n.h3,{id:"panelhide",children:"panel.hide()"}),"\n",(0,s.jsx)(n.p,{children:"Hides this panel: removes its tab from the tab bar, and if this was\nthe active tab, collapses the bottom panel container. The panel stays\nregistered \u2014 call show() to bring it back."}),"\n",(0,s.jsx)(n.p,{children:"For tab-bar UX where closing the active tab should switch to the next\nsibling tab (like clicking the X on a tab), use closeTab() instead.\nFor permanent removal, use destroy()."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,s.jsx)(n.a,{href:"#Panel",children:(0,s.jsx)("code",{children:"Panel"})})]}),"\n",(0,s.jsx)("a",{name:"Panel+closeTab"}),"\n",(0,s.jsx)(n.h3,{id:"panelclosetab",children:"panel.closeTab()"}),"\n",(0,s.jsx)(n.p,{children:"Closes this tab: removes its tab from the tab bar. If this was the\nactive tab, switches to the next sibling tab; if no other tab is open,\ncollapses the bottom panel container instead. The panel stays\nregistered \u2014 call show() to bring it back."}),"\n",(0,s.jsx)(n.p,{children:"For a programmatic hide that always collapses (no auto-switch to a\nsibling tab), use hide(). For permanent removal, use destroy()."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,s.jsx)(n.a,{href:"#Panel",children:(0,s.jsx)("code",{children:"Panel"})})]}),"\n",(0,s.jsx)("a",{name:"Panel+focus"}),"\n",(0,s.jsxs)(n.h3,{id:"panelfocus--boolean",children:["panel.focus() \u21d2 ",(0,s.jsx)("code",{children:"boolean"})]}),"\n",(0,s.jsx)(n.p,{children:"Attempts to focus the panel. Override this in panels that support focus\n(e.g. terminal). The default implementation returns false."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,s.jsx)(n.a,{href:"#Panel",children:(0,s.jsx)("code",{children:"Panel"})}),(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"boolean"})," - true if the panel accepted focus, false otherwise"]}),"\n",(0,s.jsx)("a",{name:"Panel+setVisible"}),"\n",(0,s.jsx)(n.h3,{id:"panelsetvisiblevisible",children:"panel.setVisible(visible)"}),"\n",(0,s.jsx)(n.p,{children:"Sets the panel's visibility state"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,s.jsx)(n.a,{href:"#Panel",children:(0,s.jsx)("code",{children:"Panel"})})]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"visible"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"boolean"})}),(0,s.jsx)(n.td,{children:"true to show, false to hide"})]})})]}),"\n",(0,s.jsx)("a",{name:"Panel+setTitle"}),"\n",(0,s.jsx)(n.h3,{id:"panelsettitlenewtitle",children:"panel.setTitle(newTitle)"}),"\n",(0,s.jsx)(n.p,{children:"Updates the display title shown in the tab bar for this panel."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,s.jsx)(n.a,{href:"#Panel",children:(0,s.jsx)("code",{children:"Panel"})})]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"newTitle"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(n.td,{children:"The new title to display."})]})})]}),"\n",(0,s.jsx)("a",{name:"Panel+destroy"}),"\n",(0,s.jsx)(n.h3,{id:"paneldestroy",children:"panel.destroy()"}),"\n",(0,s.jsx)(n.p,{children:"Destroys the panel, removing it from the tab bar, internal maps, and the DOM.\nAfter calling this, the Panel instance should not be reused."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,s.jsx)(n.a,{href:"#Panel",children:(0,s.jsx)("code",{children:"Panel"})})]}),"\n",(0,s.jsx)("a",{name:"Panel+getPanelType"}),"\n",(0,s.jsxs)(n.h3,{id:"panelgetpaneltype--string",children:["panel.getPanelType() \u21d2 ",(0,s.jsx)("code",{children:"string"})]}),"\n",(0,s.jsx)(n.p,{children:"gets the Panel's type"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,s.jsx)(n.a,{href:"#Panel",children:(0,s.jsx)("code",{children:"Panel"})})]}),"\n",(0,s.jsx)("a",{name:"init"}),"\n",(0,s.jsx)(n.h2,{id:"initcontainer-tabbar-tabsoverflow-editorholder-recomputelayoutfn-defaultpanelid",children:"init($container, $tabBar, $tabsOverflow, $editorHolder, recomputeLayoutFn, defaultPanelId)"}),"\n",(0,s.jsx)(n.p,{children:"Initializes the PanelView module with references to the bottom panel container DOM elements.\nCalled by WorkspaceManager during htmlReady."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"$container"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"jQueryObject"})}),(0,s.jsx)(n.td,{children:"The bottom panel container element."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"$tabBar"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"jQueryObject"})}),(0,s.jsx)(n.td,{children:"The tab bar element inside the container."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"$tabsOverflow"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"jQueryObject"})}),(0,s.jsx)(n.td,{children:"The scrollable area holding tab elements."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"$editorHolder"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"jQueryObject"})}),(0,s.jsx)(n.td,{children:"The editor holder element (for maximize height calculation)."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"recomputeLayoutFn"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"function"})}),(0,s.jsx)(n.td,{children:"Callback to trigger workspace layout recomputation."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"defaultPanelId"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(n.td,{children:"The ID of the default/quick-access panel."})]})]})]}),"\n",(0,s.jsx)("a",{name:"exitMaximizeOnResize"}),"\n",(0,s.jsx)(n.h2,{id:"exitmaximizeonresize",children:"exitMaximizeOnResize()"}),"\n",(0,s.jsx)(n.p,{children:"Exit maximize state without resizing (for external callers like drag-resize).\nClears internal maximize state and resets the button icon."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsx)("a",{name:"enterMaximizeOnResize"}),"\n",(0,s.jsx)(n.h2,{id:"entermaximizeonresize",children:"enterMaximizeOnResize()"}),"\n",(0,s.jsx)(n.p,{children:"Enter maximize state during a drag-resize that reaches the maximum\nheight. No pre-maximize height is stored because the user arrived\nhere via continuous dragging; a sensible default will be computed if\nthey later click the Restore button."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsx)("a",{name:"restoreIfMaximized"}),"\n",(0,s.jsx)(n.h2,{id:"restoreifmaximized",children:"restoreIfMaximized()"}),"\n",(0,s.jsx)(n.p,{children:"Restore the container's CSS height to the pre-maximize value and clear maximize state.\nMust be called BEFORE Resizer.hide() so the Resizer reads the correct height.\nIf not maximized, this is a no-op.\nWhen the saved height is near-max or unknown, a sensible default is used."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsx)("a",{name:"isMaximized"}),"\n",(0,s.jsxs)(n.h2,{id:"ismaximized--boolean",children:["isMaximized() \u21d2 ",(0,s.jsx)("code",{children:"boolean"})]}),"\n",(0,s.jsx)(n.p,{children:"Returns true if the bottom panel is currently maximized."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsx)("a",{name:"collapseContainer"}),"\n",(0,s.jsx)(n.h2,{id:"collapsecontainer",children:"collapseContainer()"}),"\n",(0,s.jsx)(n.p,{children:'Collapse the bottom panel container (transient hide) without touching\nwhich panel is logically active. Fires EVENT_PANEL_HIDDEN with the\ndefault panel id as a "container collapsed" signal so toolbar icons\nand menu items that mirror container visibility deselect.\nNo-op if the container is already hidden.'}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsx)("a",{name:"restoreContainer"}),"\n",(0,s.jsx)(n.h2,{id:"restorecontainer",children:"restoreContainer()"}),"\n",(0,s.jsx)(n.p,{children:"Re-show the bottom panel container after a previous collapse, with the\npreviously active panel still mounted. Fires EVENT_PANEL_SHOWN for the\nactive panel id so toolbar icons / menu items that mirror visibility\nre-select. No-op if the container is already visible or there's no\nactive panel to restore."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsx)("a",{name:"getOpenBottomPanelIDs"}),"\n",(0,s.jsxs)(n.h2,{id:"getopenbottompanelids--arraystring",children:["getOpenBottomPanelIDs() \u21d2 ",(0,s.jsx)("code",{children:"Array."})]}),"\n",(0,s.jsx)(n.p,{children:"Returns a copy of the currently open bottom panel IDs in tab order."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsx)("a",{name:"hideAllOpenPanels"}),"\n",(0,s.jsxs)(n.h2,{id:"hideallopenpanels--arraystring",children:["hideAllOpenPanels() \u21d2 ",(0,s.jsx)("code",{children:"Array."})]}),"\n",(0,s.jsx)(n.p,{children:"Hides every open bottom panel tab in a single batch"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"Array."})," - The IDs of panels that were open (useful for restoring later)."]}),"\n",(0,s.jsx)("a",{name:"getActiveBottomPanel"}),"\n",(0,s.jsxs)(n.h2,{id:"getactivebottompanel--panel--null",children:["getActiveBottomPanel() \u21d2 ",(0,s.jsx)(n.a,{href:"#Panel",children:(0,s.jsx)("code",{children:"Panel"})})," | ",(0,s.jsx)("code",{children:"null"})]}),"\n",(0,s.jsx)(n.p,{children:"Returns the currently active (visible) bottom panel, or null if none."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsx)("a",{name:"showNextPanel"}),"\n",(0,s.jsxs)(n.h2,{id:"shownextpanel--boolean",children:["showNextPanel() \u21d2 ",(0,s.jsx)("code",{children:"boolean"})]}),"\n",(0,s.jsx)(n.p,{children:"Cycle to the next open bottom panel tab. If the container is hidden\nor no panels are open, does nothing and returns false."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"boolean"})," - true if a panel switch occurred"]})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(c,{...e})}):c(e)}},28453:(e,n,l)=>{l.d(n,{R:()=>t,x:()=>a});var i=l(96540);const s={},r=i.createContext(s);function t(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:t(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/71917e71.07678183.js b/assets/js/71917e71.07678183.js new file mode 100644 index 00000000..fecd2a33 --- /dev/null +++ b/assets/js/71917e71.07678183.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2345],{19764:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>l,default:()=>h,frontMatter:()=>d,metadata:()=>i,toc:()=>c});const i=JSON.parse('{"id":"API-Reference/search/FindUtils","title":"FindUtils","description":"Import :","source":"@site/api/API-Reference/search/FindUtils.md","sourceDirName":"API-Reference/search","slug":"/API-Reference/search/FindUtils","permalink":"/api/API-Reference/search/FindUtils","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"FindInFiles","permalink":"/api/API-Reference/search/FindInFiles"},"next":{"title":"QuickOpen","permalink":"/api/API-Reference/search/QuickOpen"}}');var r=s(74848),t=s(28453);const d={},l=void 0,o={},c=[{value:"Import :",id:"import-",level:3},{value:"parseDollars(replaceWith, match) \u21d2 string",id:"parsedollarsreplacewith-match--string",level:2},{value:"performReplacements(results, replaceText, options) \u21d2 $.Promise",id:"performreplacementsresults-replacetext-options--promise",level:2},{value:"labelForScope(scope) \u21d2 string",id:"labelforscopescope--string",level:2},{value:"parseQueryInfo(queryInfo) \u21d2 Object",id:"parsequeryinfoqueryinfo--object",level:2},{value:"prioritizeOpenFile(files, firstFile) \u21d2 Array.<*>",id:"prioritizeopenfilefiles-firstfile--array",level:2},{value:"getOpenFilePath() \u21d2 string",id:"getopenfilepath--string",level:2},{value:"setInstantSearchDisabled(disable)",id:"setinstantsearchdisableddisable",level:2},{value:"isInstantSearchDisabled() \u21d2 boolean",id:"isinstantsearchdisabled--boolean",level:2},{value:"setIndexingSuspended(suspended)",id:"setindexingsuspendedsuspended",level:2},{value:"isIndexingSuspended() \u21d2 boolean",id:"isindexingsuspended--boolean",level:2},{value:"isWorkerSearchInProgress() \u21d2 Boolean",id:"isworkersearchinprogress--boolean",level:2},{value:"notifyFileFiltersChanged()",id:"notifyfilefilterschanged",level:2},{value:"notifySearchScopeChanged()",id:"notifysearchscopechanged",level:2},{value:"notifyWorkerSearchStarted()",id:"notifyworkersearchstarted",level:2},{value:"notifyWorkerSearchFinished()",id:"notifyworkersearchfinished",level:2},{value:"notifyIndexingStarted()",id:"notifyindexingstarted",level:2},{value:"notifyIndexingProgress()",id:"notifyindexingprogress",level:2},{value:"notifyIndexingFinished()",id:"notifyindexingfinished",level:2},{value:"isIndexingInProgress() \u21d2 boolean",id:"isindexinginprogress--boolean",level:2},{value:"setCollapseResults(collapse)",id:"setcollapseresultscollapse",level:2},{value:"isCollapsedResults() \u21d2 boolean",id:"iscollapsedresults--boolean",level:2}];function a(e){const n={br:"br",code:"code",em:"em",h2:"h2",h3:"h3",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,t.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"import-",children:"Import :"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-js",children:'const FindUtils = brackets.getModule("search/FindUtils")\n'})}),"\n",(0,r.jsx)("a",{name:"parseDollars"}),"\n",(0,r.jsxs)(n.h2,{id:"parsedollarsreplacewith-match--string",children:["parseDollars(replaceWith, match) \u21d2 ",(0,r.jsx)("code",{children:"string"})]}),"\n",(0,r.jsx)(n.p,{children:"Given a replace string that contains $-expressions, replace them with data from the given\nregexp match info.\nNOTE: we can't just use the ordinary replace() function here because the string has been\nextracted from the original text and so might be missing some context that the regexp matched."}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global function",(0,r.jsx)(n.br,{}),"\n",(0,r.jsx)(n.strong,{children:"Returns"}),": ",(0,r.jsx)("code",{children:"string"})," - The replace text with the $-expressions substituted."]}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Param"}),(0,r.jsx)(n.th,{children:"Type"}),(0,r.jsx)(n.th,{children:"Description"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"replaceWith"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"string"})}),(0,r.jsx)(n.td,{children:"The string containing the $-expressions."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"match"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"Object"})}),(0,r.jsx)(n.td,{children:"The match data from the regexp."})]})]})]}),"\n",(0,r.jsx)("a",{name:"performReplacements"}),"\n",(0,r.jsxs)(n.h2,{id:"performreplacementsresults-replacetext-options--promise",children:["performReplacements(results, replaceText, options) \u21d2 ",(0,r.jsx)("code",{children:"$.Promise"})]}),"\n",(0,r.jsxs)(n.p,{children:["Given a set of search results, replaces them with the given ",(0,r.jsx)(n.code,{children:"replaceText"}),", either on disk or in memory.\nChecks timestamps to ensure replacements are not performed in files that have changed on disk since\nthe original search results were generated. However, does ",(0,r.jsx)(n.em,{children:"not"})," check whether edits have been performed\nin in-memory documents since the search; it's up to the caller to guarantee this hasn't happened.\n(When called from the standard Find in Files UI, ",(0,r.jsx)(n.code,{children:"SearchResultsView"})," guarantees this. If called headlessly,\nthe caller needs to track changes.)"]}),"\n",(0,r.jsxs)(n.p,{children:["Replacements in documents that are already open in memory at the start of the replacement are guaranteed to\nhappen synchronously; replacements in files on disk will return an error if the on-disk file changes between\nthe time ",(0,r.jsx)(n.code,{children:"performReplacements()"})," is called and the time the replacement actually happens."]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global function",(0,r.jsx)(n.br,{}),"\n",(0,r.jsx)(n.strong,{children:"Returns"}),": ",(0,r.jsx)("code",{children:"$.Promise"})," - A promise that's resolved when the replacement is finished or rejected with an array of errors\nif there were one or more errors. Each individual item in the array will be a ",(0,r.jsx)(n.code,{children:"{item: string, error: string}"})," object,\nwhere ",(0,r.jsx)(n.code,{children:"item"})," is the full path to the file that could not be updated, and ",(0,r.jsx)(n.code,{children:"error"})," is either a FileSystem error or one\nof the ",(0,r.jsx)(n.code,{children:"FindUtils.ERROR_*"})," constants."]}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Param"}),(0,r.jsx)(n.th,{children:"Type"}),(0,r.jsx)(n.th,{children:"Description"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"results"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"Object"})}),(0,r.jsxs)(n.td,{children:["The list of results to replace, as returned from ",(0,r.jsx)(n.code,{children:"_doSearch"}),"."]})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"replaceText"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"string"})}),(0,r.jsx)(n.td,{children:"The text to replace each result with."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"options"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"Object"})}),(0,r.jsx)(n.td,{children:"An options object:"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"[options.forceFilesOpen]"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"boolean"})}),(0,r.jsx)(n.td,{children:"Whether to open all files in editors and do replacements there rather than doing the replacements on disk. Note that even if this is false, files that are already open in editors will have replacements done in memory."})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"[options.isRegexp]"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"boolean"})}),(0,r.jsx)(n.td,{children:"Whether the original query was a regexp. If true, $-substitution is performed on the replaceText."})]})]})]}),"\n",(0,r.jsx)("a",{name:"labelForScope"}),"\n",(0,r.jsxs)(n.h2,{id:"labelforscopescope--string",children:["labelForScope(scope) \u21d2 ",(0,r.jsx)("code",{children:"string"})]}),"\n",(0,r.jsx)(n.p,{children:"Returns label text to indicate the search scope. Already HTML-escaped."}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Param"}),(0,r.jsx)(n.th,{children:"Type"})]})}),(0,r.jsx)(n.tbody,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"scope"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"Entry"})})]})})]}),"\n",(0,r.jsx)("a",{name:"parseQueryInfo"}),"\n",(0,r.jsxs)(n.h2,{id:"parsequeryinfoqueryinfo--object",children:["parseQueryInfo(queryInfo) \u21d2 ",(0,r.jsx)("code",{children:"Object"})]}),"\n",(0,r.jsx)(n.p,{children:"Parses the given query into a regexp, and returns whether it was valid or not."}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global function",(0,r.jsx)(n.br,{}),"\n",(0,r.jsx)(n.strong,{children:"Returns"}),": ",(0,r.jsx)("code",{children:"Object"})," - queryExpr - the regexp representing the query\nvalid - set to true if query is a nonempty string or a valid regexp.\nempty - set to true if query was empty.\nerror - set to an error string if valid is false and query is nonempty."]}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Param"}),(0,r.jsx)(n.th,{children:"Type"})]})}),(0,r.jsx)(n.tbody,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"queryInfo"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"Object"})})]})})]}),"\n",(0,r.jsx)("a",{name:"prioritizeOpenFile"}),"\n",(0,r.jsxs)(n.h2,{id:"prioritizeopenfilefiles-firstfile--array",children:["prioritizeOpenFile(files, firstFile) \u21d2 ",(0,r.jsx)("code",{children:"Array.<*>"})]}),"\n",(0,r.jsx)(n.p,{children:"Prioritizes the open file and then the working set files to the starting of the list of files"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Param"}),(0,r.jsx)(n.th,{children:"Type"}),(0,r.jsx)(n.th,{children:"Description"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"files"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"Array.<*>"})}),(0,r.jsx)(n.td,{children:"An array of file paths or file objects to sort"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"firstFile"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"string"})}),(0,r.jsx)(n.td,{children:"If specified, the path to the file that should be sorted to the top."})]})]})]}),"\n",(0,r.jsx)("a",{name:"getOpenFilePath"}),"\n",(0,r.jsxs)(n.h2,{id:"getopenfilepath--string",children:["getOpenFilePath() \u21d2 ",(0,r.jsx)("code",{children:"string"})]}),"\n",(0,r.jsx)(n.p,{children:"Returns the path of the currently open file or null if there isn't one open"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,r.jsx)("a",{name:"setInstantSearchDisabled"}),"\n",(0,r.jsx)(n.h2,{id:"setinstantsearchdisableddisable",children:"setInstantSearchDisabled(disable)"}),"\n",(0,r.jsx)(n.p,{children:"enable/disable instant search"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Param"}),(0,r.jsx)(n.th,{children:"Type"}),(0,r.jsx)(n.th,{children:"Description"})]})}),(0,r.jsx)(n.tbody,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"disable"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"boolean"})}),(0,r.jsx)(n.td,{children:"true to disable web worker based search"})]})})]}),"\n",(0,r.jsx)("a",{name:"isInstantSearchDisabled"}),"\n",(0,r.jsxs)(n.h2,{id:"isinstantsearchdisabled--boolean",children:["isInstantSearchDisabled() \u21d2 ",(0,r.jsx)("code",{children:"boolean"})]}),"\n",(0,r.jsx)(n.p,{children:"if instant search is disabled, this will return true we can only do instant search through worker"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,r.jsx)("a",{name:"setIndexingSuspended"}),"\n",(0,r.jsx)(n.h2,{id:"setindexingsuspendedsuspended",children:"setIndexingSuspended(suspended)"}),"\n",(0,r.jsx)(n.p,{children:"Set whether indexing has been suspended due to cache size limit"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Param"}),(0,r.jsx)(n.th,{children:"Type"}),(0,r.jsx)(n.th,{children:"Description"})]})}),(0,r.jsx)(n.tbody,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"suspended"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"boolean"})}),(0,r.jsx)(n.td,{children:"true if indexing was suspended"})]})})]}),"\n",(0,r.jsx)("a",{name:"isIndexingSuspended"}),"\n",(0,r.jsxs)(n.h2,{id:"isindexingsuspended--boolean",children:["isIndexingSuspended() \u21d2 ",(0,r.jsx)("code",{children:"boolean"})]}),"\n",(0,r.jsx)(n.p,{children:"Check if indexing was suspended due to cache size limit.\nWhen true, Find in Files should not perform searches."}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,r.jsx)("a",{name:"isWorkerSearchInProgress"}),"\n",(0,r.jsxs)(n.h2,{id:"isworkersearchinprogress--boolean",children:["isWorkerSearchInProgress() \u21d2 ",(0,r.jsx)("code",{children:"Boolean"})]}),"\n",(0,r.jsx)(n.p,{children:"check if a search is progressing in worker"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global function",(0,r.jsx)(n.br,{}),"\n",(0,r.jsx)(n.strong,{children:"Returns"}),": ",(0,r.jsx)("code",{children:"Boolean"})," - true if search is processing in worker"]}),"\n",(0,r.jsx)("a",{name:"notifyFileFiltersChanged"}),"\n",(0,r.jsx)(n.h2,{id:"notifyfilefilterschanged",children:"notifyFileFiltersChanged()"}),"\n",(0,r.jsx)(n.p,{children:"Raises an event when the file filters applied to a search changes"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,r.jsx)("a",{name:"notifySearchScopeChanged"}),"\n",(0,r.jsx)(n.h2,{id:"notifysearchscopechanged",children:"notifySearchScopeChanged()"}),"\n",(0,r.jsx)(n.p,{children:"Raises an event when the search scope changes[say search in a subdirectory in the project]"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,r.jsx)("a",{name:"notifyWorkerSearchStarted"}),"\n",(0,r.jsx)(n.h2,{id:"notifyworkersearchstarted",children:"notifyWorkerSearchStarted()"}),"\n",(0,r.jsx)(n.p,{children:"Notifies that a worker search has started so that we FindUtils can figure out\nif any outstanding worker search requests are pending"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,r.jsx)("a",{name:"notifyWorkerSearchFinished"}),"\n",(0,r.jsx)(n.h2,{id:"notifyworkersearchfinished",children:"notifyWorkerSearchFinished()"}),"\n",(0,r.jsx)(n.p,{children:"Notifies that a worker search has finished so that we FindUtils can figure out\nif any outstanding worker search requests are pending"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,r.jsx)("a",{name:"notifyIndexingStarted"}),"\n",(0,r.jsx)(n.h2,{id:"notifyindexingstarted",children:"notifyIndexingStarted()"}),"\n",(0,r.jsx)(n.p,{children:"Notifies that a worker has started indexing the files"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,r.jsx)("a",{name:"notifyIndexingProgress"}),"\n",(0,r.jsx)(n.h2,{id:"notifyindexingprogress",children:"notifyIndexingProgress()"}),"\n",(0,r.jsx)(n.p,{children:"Notifies that a worker has started indexing the files"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,r.jsx)("a",{name:"notifyIndexingFinished"}),"\n",(0,r.jsx)(n.h2,{id:"notifyindexingfinished",children:"notifyIndexingFinished()"}),"\n",(0,r.jsx)(n.p,{children:"Notifies that a worker has finished indexing the files"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,r.jsx)("a",{name:"isIndexingInProgress"}),"\n",(0,r.jsxs)(n.h2,{id:"isindexinginprogress--boolean",children:["isIndexingInProgress() \u21d2 ",(0,r.jsx)("code",{children:"boolean"})]}),"\n",(0,r.jsx)(n.p,{children:"Return true if indexing is in progress in worker"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global function",(0,r.jsx)(n.br,{}),"\n",(0,r.jsx)(n.strong,{children:"Returns"}),": ",(0,r.jsx)("code",{children:"boolean"})," - true if files are being indexed in worker"]}),"\n",(0,r.jsx)("a",{name:"setCollapseResults"}),"\n",(0,r.jsx)(n.h2,{id:"setcollapseresultscollapse",children:"setCollapseResults(collapse)"}),"\n",(0,r.jsx)(n.p,{children:"Set if we need to collapse all results in the results pane"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Param"}),(0,r.jsx)(n.th,{children:"Type"}),(0,r.jsx)(n.th,{children:"Description"})]})}),(0,r.jsx)(n.tbody,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"collapse"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"boolean"})}),(0,r.jsx)(n.td,{children:"true to collapse"})]})})]}),"\n",(0,r.jsx)("a",{name:"isCollapsedResults"}),"\n",(0,r.jsxs)(n.h2,{id:"iscollapsedresults--boolean",children:["isCollapsedResults() \u21d2 ",(0,r.jsx)("code",{children:"boolean"})]}),"\n",(0,r.jsx)(n.p,{children:"check if results should be collapsed"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global function",(0,r.jsx)(n.br,{}),"\n",(0,r.jsx)(n.strong,{children:"Returns"}),": ",(0,r.jsx)("code",{children:"boolean"})," - true if results should be collapsed"]})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(a,{...e})}):a(e)}},28453:(e,n,s)=>{s.d(n,{R:()=>d,x:()=>l});var i=s(96540);const r={},t=i.createContext(r);function d(e){const n=i.useContext(t);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:d(e.components),i.createElement(t.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/7372a3a4.48c740fc.js b/assets/js/7372a3a4.48c740fc.js new file mode 100644 index 00000000..b6d44900 --- /dev/null +++ b/assets/js/7372a3a4.48c740fc.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5741],{97828:(e,n,d)=>{d.r(n),d.d(n,{assets:()=>a,contentTitle:()=>r,default:()=>h,frontMatter:()=>c,metadata:()=>s,toc:()=>o});const s=JSON.parse('{"id":"API-Reference/command/CommandManager","title":"CommandManager","description":"Import :","source":"@site/api/API-Reference/command/CommandManager.md","sourceDirName":"API-Reference/command","slug":"/API-Reference/command/CommandManager","permalink":"/api/API-Reference/command/CommandManager","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"NodeConnector","permalink":"/api/API-Reference/NodeConnector"},"next":{"title":"Commands","permalink":"/api/API-Reference/command/Commands"}}');var i=d(74848),t=d(28453);const c={},r=void 0,a={},o=[{value:"Import :",id:"import-",level:3},{value:"Command",id:"command",level:2},{value:"new Command(name, id, commandFn, [options])",id:"new-commandname-id-commandfn-options",level:3},{value:"command.getID() \u21d2 string",id:"commandgetid--string",level:3},{value:"command.execute() \u21d2 $.Promise",id:"commandexecute--promise",level:3},{value:"command.getEnabled() \u21d2 boolean",id:"commandgetenabled--boolean",level:3},{value:"command.getOptions() \u21d2 object",id:"commandgetoptions--object",level:3},{value:"command.isSupportedInDesignMode() \u21d2 boolean",id:"commandissupportedindesignmode--boolean",level:3},{value:"command.setEnabled(enabled)",id:"commandsetenabledenabled",level:3},{value:"command.setChecked(checked)",id:"commandsetcheckedchecked",level:3},{value:"command.getChecked() \u21d2 boolean",id:"commandgetchecked--boolean",level:3},{value:"command.setName(name, htmlName)",id:"commandsetnamename-htmlname",level:3},{value:"command.getName() \u21d2 string",id:"commandgetname--string",level:3},{value:"EventDispatcher",id:"eventdispatcher",level:2},{value:"EVENT_BEFORE_EXECUTE_COMMAND : string",id:"event_before_execute_command--string",level:2},{value:"SOURCE_KEYBOARD_SHORTCUT : string",id:"source_keyboard_shortcut--string",level:2},{value:"SOURCE_UI_MENU_CLICK : string",id:"source_ui_menu_click--string",level:2},{value:"SOURCE_OTHER : string",id:"source_other--string",level:2},{value:"register(name, id, commandFn, [options]) \u21d2 Command",id:"registername-id-commandfn-options--command",level:2},{value:"registerInternal(id, commandFn) \u21d2 Command",id:"registerinternalid-commandfn--command",level:2},{value:"get(id) \u21d2 Command",id:"getid--command",level:2},{value:"getAll() \u21d2 Array.<string>",id:"getall--arraystring",level:2},{value:"execute(id) \u21d2 $.Promise",id:"executeid--promise",level:2}];function l(e){const n={a:"a",br:"br",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,t.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h3,{id:"import-",children:"Import :"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-js",children:'const CommandManager = brackets.getModule("command/CommandManager")\n'})}),"\n",(0,i.jsx)("a",{name:"Command"}),"\n",(0,i.jsx)(n.h2,{id:"command",children:"Command"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global class"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"#Command",children:"Command"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"#new_Command_new",children:"new Command(name, id, commandFn, [options])"})}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"#Command+getID",children:".getID()"})," \u21d2 ",(0,i.jsx)("code",{children:"string"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"#Command+execute",children:".execute()"})," \u21d2 ",(0,i.jsx)("code",{children:"$.Promise"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"#Command+getEnabled",children:".getEnabled()"})," \u21d2 ",(0,i.jsx)("code",{children:"boolean"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"#Command+getOptions",children:".getOptions()"})," \u21d2 ",(0,i.jsx)("code",{children:"object"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"#Command+isSupportedInDesignMode",children:".isSupportedInDesignMode()"})," \u21d2 ",(0,i.jsx)("code",{children:"boolean"})]}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"#Command+setEnabled",children:".setEnabled(enabled)"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"#Command+setChecked",children:".setChecked(checked)"})}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"#Command+getChecked",children:".getChecked()"})," \u21d2 ",(0,i.jsx)("code",{children:"boolean"})]}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"#Command+setName",children:".setName(name, htmlName)"})}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"#Command+getName",children:".getName()"})," \u21d2 ",(0,i.jsx)("code",{children:"string"})]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)("a",{name:"new_Command_new"}),"\n",(0,i.jsx)(n.h3,{id:"new-commandname-id-commandfn-options",children:"new Command(name, id, commandFn, [options])"}),"\n",(0,i.jsx)(n.p,{children:"Events:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"enabledStateChange"}),"\n",(0,i.jsx)(n.li,{children:"checkedStateChange"}),"\n",(0,i.jsx)(n.li,{children:"keyBindingAdded"}),"\n",(0,i.jsx)(n.li,{children:"keyBindingRemoved"}),"\n"]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"name"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(n.td,{children:"text that will be displayed in the UI to represent command"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"id"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(n.td,{})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"commandFn"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"function"})}),(0,i.jsx)(n.td,{children:"the function that is called when the command is executed. TODO: where should this be triggered, The Command or Exports?"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"[options]"}),(0,i.jsx)(n.td,{}),(0,i.jsx)(n.td,{})]})]})]}),"\n",(0,i.jsx)("a",{name:"Command+getID"}),"\n",(0,i.jsxs)(n.h3,{id:"commandgetid--string",children:["command.getID() \u21d2 ",(0,i.jsx)("code",{children:"string"})]}),"\n",(0,i.jsx)(n.p,{children:"Get command id"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(n.a,{href:"#Command",children:(0,i.jsx)("code",{children:"Command"})})]}),"\n",(0,i.jsx)("a",{name:"Command+execute"}),"\n",(0,i.jsxs)(n.h3,{id:"commandexecute--promise",children:["command.execute() \u21d2 ",(0,i.jsx)("code",{children:"$.Promise"})]}),"\n",(0,i.jsx)(n.p,{children:"Executes the command. Additional arguments are passed to the executing function"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(n.a,{href:"#Command",children:(0,i.jsx)("code",{children:"Command"})}),(0,i.jsx)(n.br,{}),"\n",(0,i.jsx)(n.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"$.Promise"})," - a jQuery promise that will be resolved when the command completes."]}),"\n",(0,i.jsx)("a",{name:"Command+getEnabled"}),"\n",(0,i.jsxs)(n.h3,{id:"commandgetenabled--boolean",children:["command.getEnabled() \u21d2 ",(0,i.jsx)("code",{children:"boolean"})]}),"\n",(0,i.jsx)(n.p,{children:"Is command enabled?"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(n.a,{href:"#Command",children:(0,i.jsx)("code",{children:"Command"})})]}),"\n",(0,i.jsx)("a",{name:"Command+getOptions"}),"\n",(0,i.jsxs)(n.h3,{id:"commandgetoptions--object",children:["command.getOptions() \u21d2 ",(0,i.jsx)("code",{children:"object"})]}),"\n",(0,i.jsx)(n.p,{children:"get the command options"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(n.a,{href:"#Command",children:(0,i.jsx)("code",{children:"Command"})})]}),"\n",(0,i.jsx)("a",{name:"Command+isSupportedInDesignMode"}),"\n",(0,i.jsxs)(n.h3,{id:"commandissupportedindesignmode--boolean",children:["command.isSupportedInDesignMode() \u21d2 ",(0,i.jsx)("code",{children:"boolean"})]}),"\n",(0,i.jsx)(n.p,{children:"Returns true if the command opted in to running while the workspace is in\ndesign mode (editor collapsed). KeyBindingManager uses this to decide\nwhether a keyboard shortcut should fire; commands that don't opt in are\nswallowed in design mode."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(n.a,{href:"#Command",children:(0,i.jsx)("code",{children:"Command"})})]}),"\n",(0,i.jsx)("a",{name:"Command+setEnabled"}),"\n",(0,i.jsx)(n.h3,{id:"commandsetenabledenabled",children:"command.setEnabled(enabled)"}),"\n",(0,i.jsx)(n.p,{children:'Sets enabled state of Command and dispatches "enabledStateChange"\nwhen the enabled state changes.'}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(n.a,{href:"#Command",children:(0,i.jsx)("code",{children:"Command"})})]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"})]})}),(0,i.jsx)(n.tbody,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"enabled"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"boolean"})})]})})]}),"\n",(0,i.jsx)("a",{name:"Command+setChecked"}),"\n",(0,i.jsx)(n.h3,{id:"commandsetcheckedchecked",children:"command.setChecked(checked)"}),"\n",(0,i.jsx)(n.p,{children:'Sets enabled state of Command and dispatches "checkedStateChange"\nwhen the enabled state changes.'}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(n.a,{href:"#Command",children:(0,i.jsx)("code",{children:"Command"})})]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"})]})}),(0,i.jsx)(n.tbody,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"checked"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"boolean"})})]})})]}),"\n",(0,i.jsx)("a",{name:"Command+getChecked"}),"\n",(0,i.jsxs)(n.h3,{id:"commandgetchecked--boolean",children:["command.getChecked() \u21d2 ",(0,i.jsx)("code",{children:"boolean"})]}),"\n",(0,i.jsx)(n.p,{children:"Is command checked?"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(n.a,{href:"#Command",children:(0,i.jsx)("code",{children:"Command"})})]}),"\n",(0,i.jsx)("a",{name:"Command+setName"}),"\n",(0,i.jsx)(n.h3,{id:"commandsetnamename-htmlname",children:"command.setName(name, htmlName)"}),"\n",(0,i.jsx)(n.p,{children:'Sets the name of the Command and dispatches "nameChange" so that\nUI that reflects the command name can update.'}),"\n",(0,i.jsx)(n.p,{children:"Note, a Command name can appear in either HTML or native UI\nso HTML tags should not be used. To add a Unicode character,\nuse \\uXXXX instead of an HTML entity."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(n.a,{href:"#Command",children:(0,i.jsx)("code",{children:"Command"})})]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"name"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(n.td,{})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"htmlName"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsxs)(n.td,{children:["If set, this will be displayed in ui menus instead of the name given. Example: ",(0,i.jsx)(n.code,{children:"\"Phoenix menu\""})]})]})]})]}),"\n",(0,i.jsx)("a",{name:"Command+getName"}),"\n",(0,i.jsxs)(n.h3,{id:"commandgetname--string",children:["command.getName() \u21d2 ",(0,i.jsx)("code",{children:"string"})]}),"\n",(0,i.jsx)(n.p,{children:"Get command name"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(n.a,{href:"#Command",children:(0,i.jsx)("code",{children:"Command"})})]}),"\n",(0,i.jsx)("a",{name:"EventDispatcher"}),"\n",(0,i.jsx)(n.h2,{id:"eventdispatcher",children:"EventDispatcher"}),"\n",(0,i.jsx)(n.p,{children:"Manages global application commands that can be called from menu items, key bindings, or subparts\nof the application."}),"\n",(0,i.jsx)(n.p,{children:"This module dispatches these event(s):"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"commandRegistered -- when a new command is registered"}),"\n",(0,i.jsx)(n.li,{children:"beforeExecuteCommand -- before dispatching a command"}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,i.jsx)("a",{name:"EVENT_BEFORE_EXECUTE_COMMAND"}),"\n",(0,i.jsxs)(n.h2,{id:"event_before_execute_command--string",children:["EVENT_BEFORE_EXECUTE_COMMAND : ",(0,i.jsx)("code",{children:"string"})]}),"\n",(0,i.jsx)(n.p,{children:"Event triggered before command executes."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,i.jsx)("a",{name:"SOURCE_KEYBOARD_SHORTCUT"}),"\n",(0,i.jsxs)(n.h2,{id:"source_keyboard_shortcut--string",children:["SOURCE_KEYBOARD_SHORTCUT : ",(0,i.jsx)("code",{children:"string"})]}),"\n",(0,i.jsx)(n.p,{children:"Keyboard shortcut trigger."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,i.jsx)("a",{name:"SOURCE_UI_MENU_CLICK"}),"\n",(0,i.jsxs)(n.h2,{id:"source_ui_menu_click--string",children:["SOURCE_UI_MENU_CLICK : ",(0,i.jsx)("code",{children:"string"})]}),"\n",(0,i.jsx)(n.p,{children:"UI menu click trigger."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,i.jsx)("a",{name:"SOURCE_OTHER"}),"\n",(0,i.jsxs)(n.h2,{id:"source_other--string",children:["SOURCE_OTHER : ",(0,i.jsx)("code",{children:"string"})]}),"\n",(0,i.jsx)(n.p,{children:"Other trigger types."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,i.jsx)("a",{name:"register"}),"\n",(0,i.jsxs)(n.h2,{id:"registername-id-commandfn-options--command",children:["register(name, id, commandFn, [options]) \u21d2 ",(0,i.jsx)(n.a,{href:"#Command",children:(0,i.jsx)("code",{children:"Command"})})]}),"\n",(0,i.jsx)(n.p,{children:"Registers a global command."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"name"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(n.td,{children:"text that will be displayed in the UI to represent command"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"id"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(n.td,{children:'unique identifier for command. Core commands in Brackets use a simple command title as an id, for example "open.file". Extensions should use the following format: "author.myextension.mycommandname". For example, "lschmitt.csswizard.format.css".'})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"commandFn"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"function"})}),(0,i.jsx)(n.td,{children:"the function to call when the command is executed. Any arguments passed to execute() (after the id) are passed as arguments to the function. If the function is asynchronous, it must return a jQuery promise that is resolved when the command completes. Otherwise, the CommandManager will assume it is synchronous, and return a promise that is already resolved."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"[options]"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"Object"})}),(0,i.jsx)(n.td,{})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"options.eventSource"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"boolean"})}),(0,i.jsxs)(n.td,{children:["If set to true, the commandFn will be called with the first argument ",(0,i.jsx)(n.code,{children:"event"})," with details about the source(invoker) as event.eventSource(one of the ",(0,i.jsx)(n.code,{children:"CommandManager.SOURCE_*"}),") and event.sourceType(Eg. Ctrl-K) parameter."]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"options.htmlName"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsxs)(n.td,{children:["If set, this will be displayed in ui menus instead of the name given. Example: ",(0,i.jsx)(n.code,{children:"\"Phoenix menu\""})]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"options.supportsDesignMode"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"boolean"})}),(0,i.jsx)(n.td,{children:"If true, this command's keyboard shortcut will still fire when the workspace is in design mode. Commands that don't opt in are swallowed in design mode because the editor area is collapsed and most shortcuts are nonsensical there. Reserve this flag for commands that remain useful with no editor visible (file open/save/close, Quick Open, Find in Files, etc.)."})]})]})]}),"\n",(0,i.jsx)("a",{name:"registerInternal"}),"\n",(0,i.jsxs)(n.h2,{id:"registerinternalid-commandfn--command",children:["registerInternal(id, commandFn) \u21d2 ",(0,i.jsx)(n.a,{href:"#Command",children:(0,i.jsx)("code",{children:"Command"})})]}),"\n",(0,i.jsx)(n.p,{children:"Registers a global internal only command."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"id"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(n.td,{children:'unique identifier for command. Core commands in Brackets use a simple command title as an id, for example "app.abort_quit". Extensions should use the following format: "author.myextension.mycommandname". For example, "lschmitt.csswizard.format.css".'})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"commandFn"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"function"})}),(0,i.jsx)(n.td,{children:"the function to call when the command is executed. Any arguments passed to execute() (after the id) are passed as arguments to the function. If the function is asynchronous, it must return a jQuery promise that is resolved when the command completes. Otherwise, the CommandManager will assume it is synchronous, and return a promise that is already resolved."})]})]})]}),"\n",(0,i.jsx)("a",{name:"get"}),"\n",(0,i.jsxs)(n.h2,{id:"getid--command",children:["get(id) \u21d2 ",(0,i.jsx)(n.a,{href:"#Command",children:(0,i.jsx)("code",{children:"Command"})})]}),"\n",(0,i.jsx)(n.p,{children:"Retrieves a Command object by id"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"})]})}),(0,i.jsx)(n.tbody,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"id"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})})]})})]}),"\n",(0,i.jsx)("a",{name:"getAll"}),"\n",(0,i.jsxs)(n.h2,{id:"getall--arraystring",children:["getAll() \u21d2 ",(0,i.jsx)("code",{children:"Array."})]}),"\n",(0,i.jsx)(n.p,{children:"Returns the ids of all registered commands"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,i.jsx)("a",{name:"execute"}),"\n",(0,i.jsxs)(n.h2,{id:"executeid--promise",children:["execute(id) \u21d2 ",(0,i.jsx)("code",{children:"$.Promise"})]}),"\n",(0,i.jsx)(n.p,{children:"Looks up and runs a global command. Additional arguments are passed to the command."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function",(0,i.jsx)(n.br,{}),"\n",(0,i.jsx)(n.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"$.Promise"})," - a jQuery promise that will be resolved when the command completes."]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsx)(n.tbody,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"id"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(n.td,{children:"The ID of the command to run."})]})})]})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(l,{...e})}):l(e)}},28453:(e,n,d)=>{d.d(n,{R:()=>c,x:()=>r});var s=d(96540);const i={},t=s.createContext(i);function c(e){const n=s.useContext(t);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),s.createElement(t.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/73d17b39.eb8f7770.js b/assets/js/73d17b39.eb8f7770.js new file mode 100644 index 00000000..a48d2f90 --- /dev/null +++ b/assets/js/73d17b39.eb8f7770.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[339],{73413:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>l,default:()=>h,frontMatter:()=>c,metadata:()=>i,toc:()=>d});const i=JSON.parse('{"id":"API-Reference/language/JSUtils","title":"JSUtils","description":"Import :","source":"@site/api/API-Reference/language/JSUtils.md","sourceDirName":"API-Reference/language","slug":"/API-Reference/language/JSUtils","permalink":"/api/API-Reference/language/JSUtils","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"JSONUtils","permalink":"/api/API-Reference/language/JSONUtils"},"next":{"title":"LanguageManager","permalink":"/api/API-Reference/language/LanguageManager"}}');var s=t(74848),r=t(28453);const c={},l=void 0,a={},d=[{value:"Import :",id:"import-",level:3},{value:"_",id:"_",level:2},{value:"findMatchingFunctions(functionName, fileInfos, [keepAllFiles]) \u21d2 $.Promise",id:"findmatchingfunctionsfunctionname-fileinfos-keepallfiles--promise",level:2},{value:"findAllMatchingFunctionsInText(text, searchName) \u21d2 Object",id:"findallmatchingfunctionsintexttext-searchname--object",level:2}];function o(e){const n={br:"br",code:"code",h2:"h2",h3:"h3",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,r.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h3,{id:"import-",children:"Import :"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-js",children:'const JSUtils = brackets.getModule("language/JSUtils")\n'})}),"\n",(0,s.jsx)("a",{name:"_"}),"\n",(0,s.jsx)(n.h2,{id:"_",children:"_"}),"\n",(0,s.jsx)(n.p,{children:"Set of utilities for simple parsing of JS text."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,s.jsx)("a",{name:"findMatchingFunctions"}),"\n",(0,s.jsxs)(n.h2,{id:"findmatchingfunctionsfunctionname-fileinfos-keepallfiles--promise",children:["findMatchingFunctions(functionName, fileInfos, [keepAllFiles]) \u21d2 ",(0,s.jsx)("code",{children:"$.Promise"})]}),"\n",(0,s.jsx)(n.p,{children:"Return all functions that have the specified name, searching across all the given files."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"$.Promise"})," - that will be resolved with an Array of objects containing the\nsource document, start line, and end line (0-based, inclusive range) for each matching function list.\nDoes not addRef() the documents returned in the array."]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"functionName"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"String"})}),(0,s.jsx)(n.td,{children:"The name to match."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"fileInfos"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"Array."})}),(0,s.jsx)(n.td,{children:"The array of files to search."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"[keepAllFiles]"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"boolean"})}),(0,s.jsx)(n.td,{children:"If true, don't ignore non-javascript files."})]})]})]}),"\n",(0,s.jsx)("a",{name:"findAllMatchingFunctionsInText"}),"\n",(0,s.jsxs)(n.h2,{id:"findallmatchingfunctionsintexttext-searchname--object",children:["findAllMatchingFunctionsInText(text, searchName) \u21d2 ",(0,s.jsx)("code",{children:"Object"})]}),"\n",(0,s.jsx)(n.p,{children:'Finds all instances of the specified searchName in "text".\nReturns an Array of Objects with start and end properties.'}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"Object"})," - Array of objects containing the start offset for each matched function name."]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"text"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"String"})}),(0,s.jsx)(n.td,{children:"JS text to search"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"searchName"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"String"})}),(0,s.jsx)(n.td,{children:"function name to search for"})]})]})]})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(o,{...e})}):o(e)}},28453:(e,n,t)=>{t.d(n,{R:()=>c,x:()=>l});var i=t(96540);const s={},r=i.createContext(s);function c(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:c(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/754ef6f4.39eb8f25.js b/assets/js/754ef6f4.39eb8f25.js new file mode 100644 index 00000000..49c865da --- /dev/null +++ b/assets/js/754ef6f4.39eb8f25.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2376],{91699:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>o,contentTitle:()=>d,default:()=>h,frontMatter:()=>c,metadata:()=>r,toc:()=>l});const r=JSON.parse('{"id":"API-Reference/language/XMLUtils","title":"XMLUtils","description":"Import :","source":"@site/api/API-Reference/language/XMLUtils.md","sourceDirName":"API-Reference/language","slug":"/API-Reference/language/XMLUtils","permalink":"/api/API-Reference/language/XMLUtils","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"LanguageManager","permalink":"/api/API-Reference/language/LanguageManager"},"next":{"title":"PreferencesManager","permalink":"/api/API-Reference/preferences/PreferencesManager"}}');var s=t(74848),i=t(28453);const c={},d=void 0,o={},l=[{value:"Import :",id:"import-",level:3},{value:"regexWhitespace : RegExp",id:"regexwhitespace--regexp",level:2},{value:"TOKEN_TAG : number",id:"token_tag--number",level:2},{value:"TOKEN_ATTR : number",id:"token_attr--number",level:2},{value:"TOKEN_VALUE : number",id:"token_value--number",level:2},{value:"getTagInfo(editor, pos) \u21d2 Object",id:"gettaginfoeditor-pos--object",level:2},{value:"getValueQuery(tagInfo) \u21d2 string",id:"getvaluequerytaginfo--string",level:2}];function a(e){const n={br:"br",code:"code",h2:"h2",h3:"h3",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h3,{id:"import-",children:"Import :"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-js",children:'const XMLUtils = brackets.getModule("language/XMLUtils")\n'})}),"\n",(0,s.jsx)("a",{name:"regexWhitespace"}),"\n",(0,s.jsxs)(n.h2,{id:"regexwhitespace--regexp",children:["regexWhitespace : ",(0,s.jsx)("code",{children:"RegExp"})]}),"\n",(0,s.jsx)(n.p,{children:"Regex to find whitespace"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,s.jsx)("a",{name:"TOKEN_TAG"}),"\n",(0,s.jsxs)(n.h2,{id:"token_tag--number",children:["TOKEN_TAG : ",(0,s.jsx)("code",{children:"number"})]}),"\n",(0,s.jsx)(n.p,{children:"Enum token tag"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,s.jsx)("a",{name:"TOKEN_ATTR"}),"\n",(0,s.jsxs)(n.h2,{id:"token_attr--number",children:["TOKEN_ATTR : ",(0,s.jsx)("code",{children:"number"})]}),"\n",(0,s.jsx)(n.p,{children:"Enum token attribute"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,s.jsx)("a",{name:"TOKEN_VALUE"}),"\n",(0,s.jsxs)(n.h2,{id:"token_value--number",children:["TOKEN_VALUE : ",(0,s.jsx)("code",{children:"number"})]}),"\n",(0,s.jsx)(n.p,{children:"Enum token value"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,s.jsx)("a",{name:"getTagInfo"}),"\n",(0,s.jsxs)(n.h2,{id:"gettaginfoeditor-pos--object",children:["getTagInfo(editor, pos) \u21d2 ",(0,s.jsx)("code",{children:"Object"})]}),"\n",(0,s.jsx)(n.p,{children:"Return the tag info at a given position in the active editor"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"editor"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"Editor"})}),(0,s.jsx)(n.td,{children:"Instance of active editor"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"pos"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"Object"})}),(0,s.jsx)(n.td,{children:"Position of cursor in the editor"})]})]})]}),"\n",(0,s.jsx)("a",{name:"getValueQuery"}),"\n",(0,s.jsxs)(n.h2,{id:"getvaluequerytaginfo--string",children:["getValueQuery(tagInfo) \u21d2 ",(0,s.jsx)("code",{children:"string"})]}),"\n",(0,s.jsx)(n.p,{children:"Return the query text of a value."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"string"})," - The query to use to matching hints."]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"tagInfo"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"Object"})})]})})]})]})}function h(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(a,{...e})}):a(e)}},28453:(e,n,t)=>{t.d(n,{R:()=>c,x:()=>d});var r=t(96540);const s={},i=r.createContext(s);function c(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:c(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/7592.f0bc66e1.js b/assets/js/7592.f0bc66e1.js new file mode 100644 index 00000000..86b86232 --- /dev/null +++ b/assets/js/7592.f0bc66e1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7592],{72938:(t,e,a)=>{a.d(e,{m:()=>s});var r=a(40797),s=class{constructor(t){this.init=t,this.records=this.init()}static{(0,r.K2)(this,"ImperativeState")}reset(){this.records=this.init()}}},92875:(t,e,a)=>{a.d(e,{CP:()=>h,HT:()=>p,PB:()=>d,aC:()=>l,lC:()=>o,m:()=>c,tk:()=>n});var r=a(67633),s=a(40797),i=a(16750),n=(0,s.K2)(((t,e)=>{const a=t.append("rect");if(a.attr("x",e.x),a.attr("y",e.y),a.attr("fill",e.fill),a.attr("stroke",e.stroke),a.attr("width",e.width),a.attr("height",e.height),e.name&&a.attr("name",e.name),e.rx&&a.attr("rx",e.rx),e.ry&&a.attr("ry",e.ry),void 0!==e.attrs)for(const r in e.attrs)a.attr(r,e.attrs[r]);return e.class&&a.attr("class",e.class),a}),"drawRect"),o=(0,s.K2)(((t,e)=>{const a={x:e.startx,y:e.starty,width:e.stopx-e.startx,height:e.stopy-e.starty,fill:e.fill,stroke:e.stroke,class:"rect"};n(t,a).lower()}),"drawBackgroundRect"),c=(0,s.K2)(((t,e)=>{const a=e.text.replace(r.H1," "),s=t.append("text");s.attr("x",e.x),s.attr("y",e.y),s.attr("class","legend"),s.style("text-anchor",e.anchor),e.class&&s.attr("class",e.class);const i=s.append("tspan");return i.attr("x",e.x+2*e.textMargin),i.text(a),s}),"drawText"),l=(0,s.K2)(((t,e,a,r)=>{const s=t.append("image");s.attr("x",e),s.attr("y",a);const n=(0,i.J)(r);s.attr("xlink:href",n)}),"drawImage"),h=(0,s.K2)(((t,e,a,r)=>{const s=t.append("use");s.attr("x",e),s.attr("y",a);const n=(0,i.J)(r);s.attr("xlink:href",`#${n}`)}),"drawEmbeddedImage"),d=(0,s.K2)((()=>({x:0,y:0,width:100,height:100,fill:"#EDF2AE",stroke:"#666",anchor:"start",rx:0,ry:0})),"getNoteRect"),p=(0,s.K2)((()=>({x:0,y:0,width:100,height:100,"text-anchor":"start",style:"#666",textMargin:0,rx:0,ry:0,tspan:!0})),"getTextObj")},17592:(t,e,a)=>{a.d(e,{diagram:()=>At});var r=a(92875),s=a(73981),i=a(72938),n=a(13226),o=a(67633),c=a(40797),l=a(70451),h=a(16750),d=function(){var t=(0,c.K2)((function(t,e,a,r){for(a=a||{},r=t.length;r--;a[t[r]]=e);return a}),"o"),e=[1,2],a=[1,3],r=[1,4],s=[2,4],i=[1,9],n=[1,11],o=[1,13],l=[1,14],h=[1,16],d=[1,17],p=[1,18],g=[1,24],u=[1,25],x=[1,26],y=[1,27],m=[1,28],b=[1,29],T=[1,30],f=[1,31],E=[1,32],w=[1,33],I=[1,34],L=[1,35],_=[1,36],P=[1,37],k=[1,38],N=[1,39],A=[1,41],v=[1,42],M=[1,43],O=[1,44],D=[1,45],S=[1,46],R=[1,4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,47,48,49,50,52,53,55,60,61,62,63,71],$=[2,71],C=[4,5,16,50,52,53],Y=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,50,52,53,55,60,61,62,63,71],K=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,49,50,52,53,55,60,61,62,63,71],B=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,48,50,52,53,55,60,61,62,63,71],V=[4,5,13,14,16,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,47,50,52,53,55,60,61,62,63,71],F=[69,70,71],W=[1,127],q={trace:(0,c.K2)((function(){}),"trace"),yy:{},symbols_:{error:2,start:3,SPACE:4,NEWLINE:5,SD:6,document:7,line:8,statement:9,box_section:10,box_line:11,participant_statement:12,create:13,box:14,restOfLine:15,end:16,signal:17,autonumber:18,NUM:19,off:20,activate:21,actor:22,deactivate:23,note_statement:24,links_statement:25,link_statement:26,properties_statement:27,details_statement:28,title:29,legacy_title:30,acc_title:31,acc_title_value:32,acc_descr:33,acc_descr_value:34,acc_descr_multiline_value:35,loop:36,rect:37,opt:38,alt:39,else_sections:40,par:41,par_sections:42,par_over:43,critical:44,option_sections:45,break:46,option:47,and:48,else:49,participant:50,AS:51,participant_actor:52,destroy:53,actor_with_config:54,note:55,placement:56,text2:57,over:58,actor_pair:59,links:60,link:61,properties:62,details:63,spaceList:64,",":65,left_of:66,right_of:67,signaltype:68,"+":69,"-":70,ACTOR:71,config_object:72,CONFIG_START:73,CONFIG_CONTENT:74,CONFIG_END:75,SOLID_OPEN_ARROW:76,DOTTED_OPEN_ARROW:77,SOLID_ARROW:78,BIDIRECTIONAL_SOLID_ARROW:79,DOTTED_ARROW:80,BIDIRECTIONAL_DOTTED_ARROW:81,SOLID_CROSS:82,DOTTED_CROSS:83,SOLID_POINT:84,DOTTED_POINT:85,TXT:86,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NEWLINE",6:"SD",13:"create",14:"box",15:"restOfLine",16:"end",18:"autonumber",19:"NUM",20:"off",21:"activate",23:"deactivate",29:"title",30:"legacy_title",31:"acc_title",32:"acc_title_value",33:"acc_descr",34:"acc_descr_value",35:"acc_descr_multiline_value",36:"loop",37:"rect",38:"opt",39:"alt",41:"par",43:"par_over",44:"critical",46:"break",47:"option",48:"and",49:"else",50:"participant",51:"AS",52:"participant_actor",53:"destroy",55:"note",58:"over",60:"links",61:"link",62:"properties",63:"details",65:",",66:"left_of",67:"right_of",69:"+",70:"-",71:"ACTOR",73:"CONFIG_START",74:"CONFIG_CONTENT",75:"CONFIG_END",76:"SOLID_OPEN_ARROW",77:"DOTTED_OPEN_ARROW",78:"SOLID_ARROW",79:"BIDIRECTIONAL_SOLID_ARROW",80:"DOTTED_ARROW",81:"BIDIRECTIONAL_DOTTED_ARROW",82:"SOLID_CROSS",83:"DOTTED_CROSS",84:"SOLID_POINT",85:"DOTTED_POINT",86:"TXT"},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[10,0],[10,2],[11,2],[11,1],[11,1],[9,1],[9,2],[9,4],[9,2],[9,4],[9,3],[9,3],[9,2],[9,3],[9,3],[9,2],[9,2],[9,2],[9,2],[9,2],[9,1],[9,1],[9,2],[9,2],[9,1],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[9,4],[45,1],[45,4],[42,1],[42,4],[40,1],[40,4],[12,5],[12,3],[12,5],[12,3],[12,3],[12,3],[24,4],[24,4],[25,3],[26,3],[27,3],[28,3],[64,2],[64,1],[59,3],[59,1],[56,1],[56,1],[17,5],[17,5],[17,4],[54,2],[72,3],[22,1],[68,1],[68,1],[68,1],[68,1],[68,1],[68,1],[68,1],[68,1],[68,1],[68,1],[57,1]],performAction:(0,c.K2)((function(t,e,a,r,s,i,n){var o=i.length-1;switch(s){case 3:return r.apply(i[o]),i[o];case 4:case 9:case 8:case 13:this.$=[];break;case 5:case 10:i[o-1].push(i[o]),this.$=i[o-1];break;case 6:case 7:case 11:case 12:case 63:this.$=i[o];break;case 15:i[o].type="createParticipant",this.$=i[o];break;case 16:i[o-1].unshift({type:"boxStart",boxData:r.parseBoxData(i[o-2])}),i[o-1].push({type:"boxEnd",boxText:i[o-2]}),this.$=i[o-1];break;case 18:this.$={type:"sequenceIndex",sequenceIndex:Number(i[o-2]),sequenceIndexStep:Number(i[o-1]),sequenceVisible:!0,signalType:r.LINETYPE.AUTONUMBER};break;case 19:this.$={type:"sequenceIndex",sequenceIndex:Number(i[o-1]),sequenceIndexStep:1,sequenceVisible:!0,signalType:r.LINETYPE.AUTONUMBER};break;case 20:this.$={type:"sequenceIndex",sequenceVisible:!1,signalType:r.LINETYPE.AUTONUMBER};break;case 21:this.$={type:"sequenceIndex",sequenceVisible:!0,signalType:r.LINETYPE.AUTONUMBER};break;case 22:this.$={type:"activeStart",signalType:r.LINETYPE.ACTIVE_START,actor:i[o-1].actor};break;case 23:this.$={type:"activeEnd",signalType:r.LINETYPE.ACTIVE_END,actor:i[o-1].actor};break;case 29:r.setDiagramTitle(i[o].substring(6)),this.$=i[o].substring(6);break;case 30:r.setDiagramTitle(i[o].substring(7)),this.$=i[o].substring(7);break;case 31:this.$=i[o].trim(),r.setAccTitle(this.$);break;case 32:case 33:this.$=i[o].trim(),r.setAccDescription(this.$);break;case 34:i[o-1].unshift({type:"loopStart",loopText:r.parseMessage(i[o-2]),signalType:r.LINETYPE.LOOP_START}),i[o-1].push({type:"loopEnd",loopText:i[o-2],signalType:r.LINETYPE.LOOP_END}),this.$=i[o-1];break;case 35:i[o-1].unshift({type:"rectStart",color:r.parseMessage(i[o-2]),signalType:r.LINETYPE.RECT_START}),i[o-1].push({type:"rectEnd",color:r.parseMessage(i[o-2]),signalType:r.LINETYPE.RECT_END}),this.$=i[o-1];break;case 36:i[o-1].unshift({type:"optStart",optText:r.parseMessage(i[o-2]),signalType:r.LINETYPE.OPT_START}),i[o-1].push({type:"optEnd",optText:r.parseMessage(i[o-2]),signalType:r.LINETYPE.OPT_END}),this.$=i[o-1];break;case 37:i[o-1].unshift({type:"altStart",altText:r.parseMessage(i[o-2]),signalType:r.LINETYPE.ALT_START}),i[o-1].push({type:"altEnd",signalType:r.LINETYPE.ALT_END}),this.$=i[o-1];break;case 38:i[o-1].unshift({type:"parStart",parText:r.parseMessage(i[o-2]),signalType:r.LINETYPE.PAR_START}),i[o-1].push({type:"parEnd",signalType:r.LINETYPE.PAR_END}),this.$=i[o-1];break;case 39:i[o-1].unshift({type:"parStart",parText:r.parseMessage(i[o-2]),signalType:r.LINETYPE.PAR_OVER_START}),i[o-1].push({type:"parEnd",signalType:r.LINETYPE.PAR_END}),this.$=i[o-1];break;case 40:i[o-1].unshift({type:"criticalStart",criticalText:r.parseMessage(i[o-2]),signalType:r.LINETYPE.CRITICAL_START}),i[o-1].push({type:"criticalEnd",signalType:r.LINETYPE.CRITICAL_END}),this.$=i[o-1];break;case 41:i[o-1].unshift({type:"breakStart",breakText:r.parseMessage(i[o-2]),signalType:r.LINETYPE.BREAK_START}),i[o-1].push({type:"breakEnd",optText:r.parseMessage(i[o-2]),signalType:r.LINETYPE.BREAK_END}),this.$=i[o-1];break;case 43:this.$=i[o-3].concat([{type:"option",optionText:r.parseMessage(i[o-1]),signalType:r.LINETYPE.CRITICAL_OPTION},i[o]]);break;case 45:this.$=i[o-3].concat([{type:"and",parText:r.parseMessage(i[o-1]),signalType:r.LINETYPE.PAR_AND},i[o]]);break;case 47:this.$=i[o-3].concat([{type:"else",altText:r.parseMessage(i[o-1]),signalType:r.LINETYPE.ALT_ELSE},i[o]]);break;case 48:i[o-3].draw="participant",i[o-3].type="addParticipant",i[o-3].description=r.parseMessage(i[o-1]),this.$=i[o-3];break;case 49:case 53:i[o-1].draw="participant",i[o-1].type="addParticipant",this.$=i[o-1];break;case 50:i[o-3].draw="actor",i[o-3].type="addParticipant",i[o-3].description=r.parseMessage(i[o-1]),this.$=i[o-3];break;case 51:i[o-1].draw="actor",i[o-1].type="addParticipant",this.$=i[o-1];break;case 52:i[o-1].type="destroyParticipant",this.$=i[o-1];break;case 54:this.$=[i[o-1],{type:"addNote",placement:i[o-2],actor:i[o-1].actor,text:i[o]}];break;case 55:i[o-2]=[].concat(i[o-1],i[o-1]).slice(0,2),i[o-2][0]=i[o-2][0].actor,i[o-2][1]=i[o-2][1].actor,this.$=[i[o-1],{type:"addNote",placement:r.PLACEMENT.OVER,actor:i[o-2].slice(0,2),text:i[o]}];break;case 56:this.$=[i[o-1],{type:"addLinks",actor:i[o-1].actor,text:i[o]}];break;case 57:this.$=[i[o-1],{type:"addALink",actor:i[o-1].actor,text:i[o]}];break;case 58:this.$=[i[o-1],{type:"addProperties",actor:i[o-1].actor,text:i[o]}];break;case 59:this.$=[i[o-1],{type:"addDetails",actor:i[o-1].actor,text:i[o]}];break;case 62:this.$=[i[o-2],i[o]];break;case 64:this.$=r.PLACEMENT.LEFTOF;break;case 65:this.$=r.PLACEMENT.RIGHTOF;break;case 66:this.$=[i[o-4],i[o-1],{type:"addMessage",from:i[o-4].actor,to:i[o-1].actor,signalType:i[o-3],msg:i[o],activate:!0},{type:"activeStart",signalType:r.LINETYPE.ACTIVE_START,actor:i[o-1].actor}];break;case 67:this.$=[i[o-4],i[o-1],{type:"addMessage",from:i[o-4].actor,to:i[o-1].actor,signalType:i[o-3],msg:i[o]},{type:"activeEnd",signalType:r.LINETYPE.ACTIVE_END,actor:i[o-4].actor}];break;case 68:this.$=[i[o-3],i[o-1],{type:"addMessage",from:i[o-3].actor,to:i[o-1].actor,signalType:i[o-2],msg:i[o]}];break;case 69:this.$={type:"addParticipant",actor:i[o-1],config:i[o]};break;case 70:this.$=i[o-1].trim();break;case 71:this.$={type:"addParticipant",actor:i[o]};break;case 72:this.$=r.LINETYPE.SOLID_OPEN;break;case 73:this.$=r.LINETYPE.DOTTED_OPEN;break;case 74:this.$=r.LINETYPE.SOLID;break;case 75:this.$=r.LINETYPE.BIDIRECTIONAL_SOLID;break;case 76:this.$=r.LINETYPE.DOTTED;break;case 77:this.$=r.LINETYPE.BIDIRECTIONAL_DOTTED;break;case 78:this.$=r.LINETYPE.SOLID_CROSS;break;case 79:this.$=r.LINETYPE.DOTTED_CROSS;break;case 80:this.$=r.LINETYPE.SOLID_POINT;break;case 81:this.$=r.LINETYPE.DOTTED_POINT;break;case 82:this.$=r.parseMessage(i[o].trim().substring(1))}}),"anonymous"),table:[{3:1,4:e,5:a,6:r},{1:[3]},{3:5,4:e,5:a,6:r},{3:6,4:e,5:a,6:r},t([1,4,5,13,14,18,21,23,29,30,31,33,35,36,37,38,39,41,43,44,46,50,52,53,55,60,61,62,63,71],s,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:i,5:n,8:8,9:10,12:12,13:o,14:l,17:15,18:h,21:d,22:40,23:p,24:19,25:20,26:21,27:22,28:23,29:g,30:u,31:x,33:y,35:m,36:b,37:T,38:f,39:E,41:w,43:I,44:L,46:_,50:P,52:k,53:N,55:A,60:v,61:M,62:O,63:D,71:S},t(R,[2,5]),{9:47,12:12,13:o,14:l,17:15,18:h,21:d,22:40,23:p,24:19,25:20,26:21,27:22,28:23,29:g,30:u,31:x,33:y,35:m,36:b,37:T,38:f,39:E,41:w,43:I,44:L,46:_,50:P,52:k,53:N,55:A,60:v,61:M,62:O,63:D,71:S},t(R,[2,7]),t(R,[2,8]),t(R,[2,14]),{12:48,50:P,52:k,53:N},{15:[1,49]},{5:[1,50]},{5:[1,53],19:[1,51],20:[1,52]},{22:54,71:S},{22:55,71:S},{5:[1,56]},{5:[1,57]},{5:[1,58]},{5:[1,59]},{5:[1,60]},t(R,[2,29]),t(R,[2,30]),{32:[1,61]},{34:[1,62]},t(R,[2,33]),{15:[1,63]},{15:[1,64]},{15:[1,65]},{15:[1,66]},{15:[1,67]},{15:[1,68]},{15:[1,69]},{15:[1,70]},{22:71,54:72,71:[1,73]},{22:74,71:S},{22:75,71:S},{68:76,76:[1,77],77:[1,78],78:[1,79],79:[1,80],80:[1,81],81:[1,82],82:[1,83],83:[1,84],84:[1,85],85:[1,86]},{56:87,58:[1,88],66:[1,89],67:[1,90]},{22:91,71:S},{22:92,71:S},{22:93,71:S},{22:94,71:S},t([5,51,65,76,77,78,79,80,81,82,83,84,85,86],$),t(R,[2,6]),t(R,[2,15]),t(C,[2,9],{10:95}),t(R,[2,17]),{5:[1,97],19:[1,96]},{5:[1,98]},t(R,[2,21]),{5:[1,99]},{5:[1,100]},t(R,[2,24]),t(R,[2,25]),t(R,[2,26]),t(R,[2,27]),t(R,[2,28]),t(R,[2,31]),t(R,[2,32]),t(Y,s,{7:101}),t(Y,s,{7:102}),t(Y,s,{7:103}),t(K,s,{40:104,7:105}),t(B,s,{42:106,7:107}),t(B,s,{7:107,42:108}),t(V,s,{45:109,7:110}),t(Y,s,{7:111}),{5:[1,113],51:[1,112]},{5:[1,114]},t([5,51],$,{72:115,73:[1,116]}),{5:[1,118],51:[1,117]},{5:[1,119]},{22:122,69:[1,120],70:[1,121],71:S},t(F,[2,72]),t(F,[2,73]),t(F,[2,74]),t(F,[2,75]),t(F,[2,76]),t(F,[2,77]),t(F,[2,78]),t(F,[2,79]),t(F,[2,80]),t(F,[2,81]),{22:123,71:S},{22:125,59:124,71:S},{71:[2,64]},{71:[2,65]},{57:126,86:W},{57:128,86:W},{57:129,86:W},{57:130,86:W},{4:[1,133],5:[1,135],11:132,12:134,16:[1,131],50:P,52:k,53:N},{5:[1,136]},t(R,[2,19]),t(R,[2,20]),t(R,[2,22]),t(R,[2,23]),{4:i,5:n,8:8,9:10,12:12,13:o,14:l,16:[1,137],17:15,18:h,21:d,22:40,23:p,24:19,25:20,26:21,27:22,28:23,29:g,30:u,31:x,33:y,35:m,36:b,37:T,38:f,39:E,41:w,43:I,44:L,46:_,50:P,52:k,53:N,55:A,60:v,61:M,62:O,63:D,71:S},{4:i,5:n,8:8,9:10,12:12,13:o,14:l,16:[1,138],17:15,18:h,21:d,22:40,23:p,24:19,25:20,26:21,27:22,28:23,29:g,30:u,31:x,33:y,35:m,36:b,37:T,38:f,39:E,41:w,43:I,44:L,46:_,50:P,52:k,53:N,55:A,60:v,61:M,62:O,63:D,71:S},{4:i,5:n,8:8,9:10,12:12,13:o,14:l,16:[1,139],17:15,18:h,21:d,22:40,23:p,24:19,25:20,26:21,27:22,28:23,29:g,30:u,31:x,33:y,35:m,36:b,37:T,38:f,39:E,41:w,43:I,44:L,46:_,50:P,52:k,53:N,55:A,60:v,61:M,62:O,63:D,71:S},{16:[1,140]},{4:i,5:n,8:8,9:10,12:12,13:o,14:l,16:[2,46],17:15,18:h,21:d,22:40,23:p,24:19,25:20,26:21,27:22,28:23,29:g,30:u,31:x,33:y,35:m,36:b,37:T,38:f,39:E,41:w,43:I,44:L,46:_,49:[1,141],50:P,52:k,53:N,55:A,60:v,61:M,62:O,63:D,71:S},{16:[1,142]},{4:i,5:n,8:8,9:10,12:12,13:o,14:l,16:[2,44],17:15,18:h,21:d,22:40,23:p,24:19,25:20,26:21,27:22,28:23,29:g,30:u,31:x,33:y,35:m,36:b,37:T,38:f,39:E,41:w,43:I,44:L,46:_,48:[1,143],50:P,52:k,53:N,55:A,60:v,61:M,62:O,63:D,71:S},{16:[1,144]},{16:[1,145]},{4:i,5:n,8:8,9:10,12:12,13:o,14:l,16:[2,42],17:15,18:h,21:d,22:40,23:p,24:19,25:20,26:21,27:22,28:23,29:g,30:u,31:x,33:y,35:m,36:b,37:T,38:f,39:E,41:w,43:I,44:L,46:_,47:[1,146],50:P,52:k,53:N,55:A,60:v,61:M,62:O,63:D,71:S},{4:i,5:n,8:8,9:10,12:12,13:o,14:l,16:[1,147],17:15,18:h,21:d,22:40,23:p,24:19,25:20,26:21,27:22,28:23,29:g,30:u,31:x,33:y,35:m,36:b,37:T,38:f,39:E,41:w,43:I,44:L,46:_,50:P,52:k,53:N,55:A,60:v,61:M,62:O,63:D,71:S},{15:[1,148]},t(R,[2,49]),t(R,[2,53]),{5:[2,69]},{74:[1,149]},{15:[1,150]},t(R,[2,51]),t(R,[2,52]),{22:151,71:S},{22:152,71:S},{57:153,86:W},{57:154,86:W},{57:155,86:W},{65:[1,156],86:[2,63]},{5:[2,56]},{5:[2,82]},{5:[2,57]},{5:[2,58]},{5:[2,59]},t(R,[2,16]),t(C,[2,10]),{12:157,50:P,52:k,53:N},t(C,[2,12]),t(C,[2,13]),t(R,[2,18]),t(R,[2,34]),t(R,[2,35]),t(R,[2,36]),t(R,[2,37]),{15:[1,158]},t(R,[2,38]),{15:[1,159]},t(R,[2,39]),t(R,[2,40]),{15:[1,160]},t(R,[2,41]),{5:[1,161]},{75:[1,162]},{5:[1,163]},{57:164,86:W},{57:165,86:W},{5:[2,68]},{5:[2,54]},{5:[2,55]},{22:166,71:S},t(C,[2,11]),t(K,s,{7:105,40:167}),t(B,s,{7:107,42:168}),t(V,s,{7:110,45:169}),t(R,[2,48]),{5:[2,70]},t(R,[2,50]),{5:[2,66]},{5:[2,67]},{86:[2,62]},{16:[2,47]},{16:[2,45]},{16:[2,43]}],defaultActions:{5:[2,1],6:[2,2],89:[2,64],90:[2,65],115:[2,69],126:[2,56],127:[2,82],128:[2,57],129:[2,58],130:[2,59],153:[2,68],154:[2,54],155:[2,55],162:[2,70],164:[2,66],165:[2,67],166:[2,62],167:[2,47],168:[2,45],169:[2,43]},parseError:(0,c.K2)((function(t,e){if(!e.recoverable){var a=new Error(t);throw a.hash=e,a}this.trace(t)}),"parseError"),parse:(0,c.K2)((function(t){var e=this,a=[0],r=[],s=[null],i=[],n=this.table,o="",l=0,h=0,d=0,p=i.slice.call(arguments,1),g=Object.create(this.lexer),u={yy:{}};for(var x in this.yy)Object.prototype.hasOwnProperty.call(this.yy,x)&&(u.yy[x]=this.yy[x]);g.setInput(t,u.yy),u.yy.lexer=g,u.yy.parser=this,void 0===g.yylloc&&(g.yylloc={});var y=g.yylloc;i.push(y);var m=g.options&&g.options.ranges;function b(){var t;return"number"!=typeof(t=r.pop()||g.lex()||1)&&(t instanceof Array&&(t=(r=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof u.yy.parseError?this.parseError=u.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,c.K2)((function(t){a.length=a.length-2*t,s.length=s.length-t,i.length=i.length-t}),"popStack"),(0,c.K2)(b,"lex");for(var T,f,E,w,I,L,_,P,k,N={};;){if(E=a[a.length-1],this.defaultActions[E]?w=this.defaultActions[E]:(null==T&&(T=b()),w=n[E]&&n[E][T]),void 0===w||!w.length||!w[0]){var A="";for(L in k=[],n[E])this.terminals_[L]&&L>2&&k.push("'"+this.terminals_[L]+"'");A=g.showPosition?"Parse error on line "+(l+1)+":\n"+g.showPosition()+"\nExpecting "+k.join(", ")+", got '"+(this.terminals_[T]||T)+"'":"Parse error on line "+(l+1)+": Unexpected "+(1==T?"end of input":"'"+(this.terminals_[T]||T)+"'"),this.parseError(A,{text:g.match,token:this.terminals_[T]||T,line:g.yylineno,loc:y,expected:k})}if(w[0]instanceof Array&&w.length>1)throw new Error("Parse Error: multiple actions possible at state: "+E+", token: "+T);switch(w[0]){case 1:a.push(T),s.push(g.yytext),i.push(g.yylloc),a.push(w[1]),T=null,f?(T=f,f=null):(h=g.yyleng,o=g.yytext,l=g.yylineno,y=g.yylloc,d>0&&d--);break;case 2:if(_=this.productions_[w[1]][1],N.$=s[s.length-_],N._$={first_line:i[i.length-(_||1)].first_line,last_line:i[i.length-1].last_line,first_column:i[i.length-(_||1)].first_column,last_column:i[i.length-1].last_column},m&&(N._$.range=[i[i.length-(_||1)].range[0],i[i.length-1].range[1]]),void 0!==(I=this.performAction.apply(N,[o,h,l,u.yy,w[1],s,i].concat(p))))return I;_&&(a=a.slice(0,-1*_*2),s=s.slice(0,-1*_),i=i.slice(0,-1*_)),a.push(this.productions_[w[1]][0]),s.push(N.$),i.push(N._$),P=n[a[a.length-2]][a[a.length-1]],a.push(P);break;case 3:return!0}}return!0}),"parse")},z=function(){return{EOF:1,parseError:(0,c.K2)((function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)}),"parseError"),setInput:(0,c.K2)((function(t,e){return this.yy=e||this.yy||{},this._input=t,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:(0,c.K2)((function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t}),"input"),unput:(0,c.K2)((function(t){var e=t.length,a=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var r=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),a.length-1&&(this.yylineno-=a.length-1);var s=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:a?(a.length===r.length?this.yylloc.first_column:0)+r[r.length-a.length].length-a[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[s[0],s[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this}),"unput"),more:(0,c.K2)((function(){return this._more=!0,this}),"more"),reject:(0,c.K2)((function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):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).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})}),"reject"),less:(0,c.K2)((function(t){this.unput(this.match.slice(t))}),"less"),pastInput:(0,c.K2)((function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")}),"pastInput"),upcomingInput:(0,c.K2)((function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")}),"upcomingInput"),showPosition:(0,c.K2)((function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"}),"showPosition"),test_match:(0,c.K2)((function(t,e){var a,r,s;if(this.options.backtrack_lexer&&(s={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&&(s.yylloc.range=this.yylloc.range.slice(0))),(r=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,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(t[0].length),this.matched+=t[0],a=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),a)return a;if(this._backtrack){for(var i in s)this[i]=s[i];return!1}return!1}),"test_match"),next:(0,c.K2)((function(){if(this.done)return this.EOF;var t,e,a,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var s=this._currentRules(),i=0;ie[0].length)){if(e=a,r=i,this.options.backtrack_lexer){if(!1!==(t=this.test_match(a,s[i])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,s[r]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})}),"next"),lex:(0,c.K2)((function(){var t=this.next();return t||this.lex()}),"lex"),begin:(0,c.K2)((function(t){this.conditionStack.push(t)}),"begin"),popState:(0,c.K2)((function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]}),"popState"),_currentRules:(0,c.K2)((function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules}),"_currentRules"),topState:(0,c.K2)((function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"}),"topState"),pushState:(0,c.K2)((function(t){this.begin(t)}),"pushState"),stateStackSize:(0,c.K2)((function(){return this.conditionStack.length}),"stateStackSize"),options:{"case-insensitive":!0},performAction:(0,c.K2)((function(t,e,a,r){switch(a){case 0:case 56:case 72:return 5;case 1:case 2:case 3:case 4:case 5:break;case 6:return 19;case 7:return this.begin("CONFIG"),73;case 8:return 74;case 9:return this.popState(),this.popState(),75;case 10:case 57:return e.yytext=e.yytext.trim(),71;case 11:case 17:return e.yytext=e.yytext.trim(),this.begin("ALIAS"),71;case 12:return this.begin("LINE"),14;case 13:return this.begin("ID"),50;case 14:return this.begin("ID"),52;case 15:return 13;case 16:return this.begin("ID"),53;case 18:return this.popState(),this.popState(),this.begin("LINE"),51;case 19:return this.popState(),this.popState(),5;case 20:return this.begin("LINE"),36;case 21:return this.begin("LINE"),37;case 22:return this.begin("LINE"),38;case 23:return this.begin("LINE"),39;case 24:return this.begin("LINE"),49;case 25:return this.begin("LINE"),41;case 26:return this.begin("LINE"),43;case 27:return this.begin("LINE"),48;case 28:return this.begin("LINE"),44;case 29:return this.begin("LINE"),47;case 30:return this.begin("LINE"),46;case 31:return this.popState(),15;case 32:return 16;case 33:return 66;case 34:return 67;case 35:return 60;case 36:return 61;case 37:return 62;case 38:return 63;case 39:return 58;case 40:return 55;case 41:return this.begin("ID"),21;case 42:return this.begin("ID"),23;case 43:return 29;case 44:return 30;case 45:return this.begin("acc_title"),31;case 46:return this.popState(),"acc_title_value";case 47:return this.begin("acc_descr"),33;case 48:return this.popState(),"acc_descr_value";case 49:this.begin("acc_descr_multiline");break;case 50:this.popState();break;case 51:return"acc_descr_multiline_value";case 52:return 6;case 53:return 18;case 54:return 20;case 55:return 65;case 58:return 78;case 59:return 79;case 60:return 80;case 61:return 81;case 62:return 76;case 63:return 77;case 64:return 82;case 65:return 83;case 66:return 84;case 67:return 85;case 68:case 69:return 86;case 70:return 69;case 71:return 70;case 73:return"INVALID"}}),"anonymous"),rules:[/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[0-9]+(?=[ \n]+))/i,/^(?:@\{)/i,/^(?:[^\}]+)/i,/^(?:\})/i,/^(?:[^\<->\->:\n,;@\s]+(?=@\{))/i,/^(?:[^\<->\->:\n,;@]+?([\-]*[^\<->\->:\n,;@]+?)*?(?=((?!\n)\s)+as(?!\n)\s|[#\n;]|$))/i,/^(?:box\b)/i,/^(?:participant\b)/i,/^(?:actor\b)/i,/^(?:create\b)/i,/^(?:destroy\b)/i,/^(?:[^<\->\->:\n,;]+?([\-]*[^<\->\->:\n,;]+?)*?(?=((?!\n)\s)+as(?!\n)\s|[#\n;]|$))/i,/^(?:as\b)/i,/^(?:(?:))/i,/^(?:loop\b)/i,/^(?:rect\b)/i,/^(?:opt\b)/i,/^(?:alt\b)/i,/^(?:else\b)/i,/^(?:par\b)/i,/^(?:par_over\b)/i,/^(?:and\b)/i,/^(?:critical\b)/i,/^(?:option\b)/i,/^(?:break\b)/i,/^(?:(?:[:]?(?:no)?wrap)?[^#\n;]*)/i,/^(?:end\b)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:links\b)/i,/^(?:link\b)/i,/^(?:properties\b)/i,/^(?:details\b)/i,/^(?:over\b)/i,/^(?:note\b)/i,/^(?:activate\b)/i,/^(?:deactivate\b)/i,/^(?:title\s[^#\n;]+)/i,/^(?:title:\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:sequenceDiagram\b)/i,/^(?:autonumber\b)/i,/^(?:off\b)/i,/^(?:,)/i,/^(?:;)/i,/^(?:[^+<\->\->:\n,;]+((?!(-x|--x|-\)|--\)))[\-]*[^\+<\->\->:\n,;]+)*)/i,/^(?:->>)/i,/^(?:<<->>)/i,/^(?:-->>)/i,/^(?:<<-->>)/i,/^(?:->)/i,/^(?:-->)/i,/^(?:-[x])/i,/^(?:--[x])/i,/^(?:-[\)])/i,/^(?:--[\)])/i,/^(?::(?:(?:no)?wrap)?[^#\n;]*)/i,/^(?::)/i,/^(?:\+)/i,/^(?:-)/i,/^(?:$)/i,/^(?:.)/i],conditions:{acc_descr_multiline:{rules:[50,51],inclusive:!1},acc_descr:{rules:[48],inclusive:!1},acc_title:{rules:[46],inclusive:!1},ID:{rules:[2,3,7,10,11,17],inclusive:!1},ALIAS:{rules:[2,3,18,19],inclusive:!1},LINE:{rules:[2,3,31],inclusive:!1},CONFIG:{rules:[8,9],inclusive:!1},CONFIG_DATA:{rules:[],inclusive:!1},INITIAL:{rules:[0,1,3,4,5,6,12,13,14,15,16,20,21,22,23,24,25,26,27,28,29,30,32,33,34,35,36,37,38,39,40,41,42,43,44,45,47,49,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73],inclusive:!0}}}}();function H(){this.yy={}}return q.lexer=z,(0,c.K2)(H,"Parser"),H.prototype=q,q.Parser=H,new H}();d.parser=d;var p=d,g={SOLID:0,DOTTED:1,NOTE:2,SOLID_CROSS:3,DOTTED_CROSS:4,SOLID_OPEN:5,DOTTED_OPEN:6,LOOP_START:10,LOOP_END:11,ALT_START:12,ALT_ELSE:13,ALT_END:14,OPT_START:15,OPT_END:16,ACTIVE_START:17,ACTIVE_END:18,PAR_START:19,PAR_AND:20,PAR_END:21,RECT_START:22,RECT_END:23,SOLID_POINT:24,DOTTED_POINT:25,AUTONUMBER:26,CRITICAL_START:27,CRITICAL_OPTION:28,CRITICAL_END:29,BREAK_START:30,BREAK_END:31,PAR_OVER_START:32,BIDIRECTIONAL_SOLID:33,BIDIRECTIONAL_DOTTED:34},u={FILLED:0,OPEN:1},x={LEFTOF:0,RIGHTOF:1,OVER:2},y="actor",m="control",b="database",T="entity",f=class{constructor(){this.state=new i.m((()=>({prevActor:void 0,actors:new Map,createdActors:new Map,destroyedActors:new Map,boxes:[],messages:[],notes:[],sequenceNumbersEnabled:!1,wrapEnabled:void 0,currentBox:void 0,lastCreated:void 0,lastDestroyed:void 0}))),this.setAccTitle=o.SV,this.setAccDescription=o.EI,this.setDiagramTitle=o.ke,this.getAccTitle=o.iN,this.getAccDescription=o.m7,this.getDiagramTitle=o.ab,this.apply=this.apply.bind(this),this.parseBoxData=this.parseBoxData.bind(this),this.parseMessage=this.parseMessage.bind(this),this.clear(),this.setWrap((0,o.D7)().wrap),this.LINETYPE=g,this.ARROWTYPE=u,this.PLACEMENT=x}static{(0,c.K2)(this,"SequenceDB")}addBox(t){this.state.records.boxes.push({name:t.text,wrap:t.wrap??this.autoWrap(),fill:t.color,actorKeys:[]}),this.state.records.currentBox=this.state.records.boxes.slice(-1)[0]}addActor(t,e,a,r,i){let n,o=this.state.records.currentBox;if(void 0!==i){let t;t=i.includes("\n")?i+"\n":"{\n"+i+"\n}",n=(0,s.H)(t,{schema:s.r})}r=n?.type??r;const c=this.state.records.actors.get(t);if(c){if(this.state.records.currentBox&&c.box&&this.state.records.currentBox!==c.box)throw new Error(`A same participant should only be defined in one Box: ${c.name} can't be in '${c.box.name}' and in '${this.state.records.currentBox.name}' at the same time.`);if(o=c.box?c.box:this.state.records.currentBox,c.box=o,c&&e===c.name&&null==a)return}if(null==a?.text&&(a={text:e,type:r}),null!=r&&null!=a.text||(a={text:e,type:r}),this.state.records.actors.set(t,{box:o,name:e,description:a.text,wrap:a.wrap??this.autoWrap(),prevActor:this.state.records.prevActor,links:{},properties:{},actorCnt:null,rectData:null,type:r??"participant"}),this.state.records.prevActor){const e=this.state.records.actors.get(this.state.records.prevActor);e&&(e.nextActor=t)}this.state.records.currentBox&&this.state.records.currentBox.actorKeys.push(t),this.state.records.prevActor=t}activationCount(t){let e,a=0;if(!t)return 0;for(e=0;e>-",token:"->>-",line:"1",loc:{first_line:1,last_line:1,first_column:1,last_column:1},expected:["'ACTIVE_PARTICIPANT'"]},e}}return this.state.records.messages.push({id:this.state.records.messages.length.toString(),from:t,to:e,message:a?.text??"",wrap:a?.wrap??this.autoWrap(),type:r,activate:s}),!0}hasAtLeastOneBox(){return this.state.records.boxes.length>0}hasAtLeastOneBoxWithTitle(){return this.state.records.boxes.some((t=>t.name))}getMessages(){return this.state.records.messages}getBoxes(){return this.state.records.boxes}getActors(){return this.state.records.actors}getCreatedActors(){return this.state.records.createdActors}getDestroyedActors(){return this.state.records.destroyedActors}getActor(t){return this.state.records.actors.get(t)}getActorKeys(){return[...this.state.records.actors.keys()]}enableSequenceNumbers(){this.state.records.sequenceNumbersEnabled=!0}disableSequenceNumbers(){this.state.records.sequenceNumbersEnabled=!1}showSequenceNumbers(){return this.state.records.sequenceNumbersEnabled}setWrap(t){this.state.records.wrapEnabled=t}extractWrap(t){if(void 0===t)return{};t=t.trim();const e=null!==/^:?wrap:/.exec(t)||null===/^:?nowrap:/.exec(t)&&void 0;return{cleanedText:(void 0===e?t:t.replace(/^:?(?:no)?wrap:/,"")).trim(),wrap:e}}autoWrap(){return void 0!==this.state.records.wrapEnabled?this.state.records.wrapEnabled:(0,o.D7)().sequence?.wrap??!1}clear(){this.state.reset(),(0,o.IU)()}parseMessage(t){const e=t.trim(),{wrap:a,cleanedText:r}=this.extractWrap(e),s={text:r,wrap:a};return c.Rm.debug(`parseMessage: ${JSON.stringify(s)}`),s}parseBoxData(t){const e=/^((?:rgba?|hsla?)\s*\(.*\)|\w*)(.*)$/.exec(t);let a=e?.[1]?e[1].trim():"transparent",r=e?.[2]?e[2].trim():void 0;if(window?.CSS)window.CSS.supports("color",a)||(a="transparent",r=t.trim());else{const e=(new Option).style;e.color=a,e.color!==a&&(a="transparent",r=t.trim())}const{wrap:s,cleanedText:i}=this.extractWrap(r);return{text:i?(0,o.jZ)(i,(0,o.D7)()):void 0,color:a,wrap:s}}addNote(t,e,a){const r={actor:t,placement:e,message:a.text,wrap:a.wrap??this.autoWrap()},s=[].concat(t,t);this.state.records.notes.push(r),this.state.records.messages.push({id:this.state.records.messages.length.toString(),from:s[0],to:s[1],message:a.text,wrap:a.wrap??this.autoWrap(),type:this.LINETYPE.NOTE,placement:e})}addLinks(t,e){const a=this.getActor(t);try{let t=(0,o.jZ)(e.text,(0,o.D7)());t=t.replace(/=/g,"="),t=t.replace(/&/g,"&");const r=JSON.parse(t);this.insertLinks(a,r)}catch(r){c.Rm.error("error while parsing actor link text",r)}}addALink(t,e){const a=this.getActor(t);try{const t={};let r=(0,o.jZ)(e.text,(0,o.D7)());const s=r.indexOf("@");r=r.replace(/=/g,"="),r=r.replace(/&/g,"&");const i=r.slice(0,s-1).trim(),n=r.slice(s+1).trim();t[i]=n,this.insertLinks(a,t)}catch(r){c.Rm.error("error while parsing actor link text",r)}}insertLinks(t,e){if(null==t.links)t.links=e;else for(const a in e)t.links[a]=e[a]}addProperties(t,e){const a=this.getActor(t);try{const t=(0,o.jZ)(e.text,(0,o.D7)()),r=JSON.parse(t);this.insertProperties(a,r)}catch(r){c.Rm.error("error while parsing actor properties text",r)}}insertProperties(t,e){if(null==t.properties)t.properties=e;else for(const a in e)t.properties[a]=e[a]}boxEnd(){this.state.records.currentBox=void 0}addDetails(t,e){const a=this.getActor(t),r=document.getElementById(e.text);try{const t=r.innerHTML,e=JSON.parse(t);e.properties&&this.insertProperties(a,e.properties),e.links&&this.insertLinks(a,e.links)}catch(s){c.Rm.error("error while parsing actor details text",s)}}getActorProperty(t,e){if(void 0!==t?.properties)return t.properties[e]}apply(t){if(Array.isArray(t))t.forEach((t=>{this.apply(t)}));else switch(t.type){case"sequenceIndex":this.state.records.messages.push({id:this.state.records.messages.length.toString(),from:void 0,to:void 0,message:{start:t.sequenceIndex,step:t.sequenceIndexStep,visible:t.sequenceVisible},wrap:!1,type:t.signalType});break;case"addParticipant":this.addActor(t.actor,t.actor,t.description,t.draw,t.config);break;case"createParticipant":if(this.state.records.actors.has(t.actor))throw new Error("It is not possible to have actors with the same id, even if one is destroyed before the next is created. Use 'AS' aliases to simulate the behavior");this.state.records.lastCreated=t.actor,this.addActor(t.actor,t.actor,t.description,t.draw,t.config),this.state.records.createdActors.set(t.actor,this.state.records.messages.length);break;case"destroyParticipant":this.state.records.lastDestroyed=t.actor,this.state.records.destroyedActors.set(t.actor,this.state.records.messages.length);break;case"activeStart":case"activeEnd":this.addSignal(t.actor,void 0,void 0,t.signalType);break;case"addNote":this.addNote(t.actor,t.placement,t.text);break;case"addLinks":this.addLinks(t.actor,t.text);break;case"addALink":this.addALink(t.actor,t.text);break;case"addProperties":this.addProperties(t.actor,t.text);break;case"addDetails":this.addDetails(t.actor,t.text);break;case"addMessage":if(this.state.records.lastCreated){if(t.to!==this.state.records.lastCreated)throw new Error("The created participant "+this.state.records.lastCreated.name+" does not have an associated creating message after its declaration. Please check the sequence diagram.");this.state.records.lastCreated=void 0}else if(this.state.records.lastDestroyed){if(t.to!==this.state.records.lastDestroyed&&t.from!==this.state.records.lastDestroyed)throw new Error("The destroyed participant "+this.state.records.lastDestroyed.name+" does not have an associated destroying message after its declaration. Please check the sequence diagram.");this.state.records.lastDestroyed=void 0}this.addSignal(t.from,t.to,t.msg,t.signalType,t.activate);break;case"boxStart":this.addBox(t.boxData);break;case"boxEnd":this.boxEnd();break;case"loopStart":this.addSignal(void 0,void 0,t.loopText,t.signalType);break;case"loopEnd":case"rectEnd":case"optEnd":case"altEnd":case"parEnd":case"criticalEnd":case"breakEnd":this.addSignal(void 0,void 0,void 0,t.signalType);break;case"rectStart":this.addSignal(void 0,void 0,t.color,t.signalType);break;case"optStart":this.addSignal(void 0,void 0,t.optText,t.signalType);break;case"altStart":case"else":this.addSignal(void 0,void 0,t.altText,t.signalType);break;case"setAccTitle":(0,o.SV)(t.text);break;case"parStart":case"and":this.addSignal(void 0,void 0,t.parText,t.signalType);break;case"criticalStart":this.addSignal(void 0,void 0,t.criticalText,t.signalType);break;case"option":this.addSignal(void 0,void 0,t.optionText,t.signalType);break;case"breakStart":this.addSignal(void 0,void 0,t.breakText,t.signalType)}}getConfig(){return(0,o.D7)().sequence}},E=(0,c.K2)((t=>`.actor {\n stroke: ${t.actorBorder};\n fill: ${t.actorBkg};\n }\n\n text.actor > tspan {\n fill: ${t.actorTextColor};\n stroke: none;\n }\n\n .actor-line {\n stroke: ${t.actorLineColor};\n }\n \n .innerArc {\n stroke-width: 1.5;\n stroke-dasharray: none;\n }\n\n .messageLine0 {\n stroke-width: 1.5;\n stroke-dasharray: none;\n stroke: ${t.signalColor};\n }\n\n .messageLine1 {\n stroke-width: 1.5;\n stroke-dasharray: 2, 2;\n stroke: ${t.signalColor};\n }\n\n #arrowhead path {\n fill: ${t.signalColor};\n stroke: ${t.signalColor};\n }\n\n .sequenceNumber {\n fill: ${t.sequenceNumberColor};\n }\n\n #sequencenumber {\n fill: ${t.signalColor};\n }\n\n #crosshead path {\n fill: ${t.signalColor};\n stroke: ${t.signalColor};\n }\n\n .messageText {\n fill: ${t.signalTextColor};\n stroke: none;\n }\n\n .labelBox {\n stroke: ${t.labelBoxBorderColor};\n fill: ${t.labelBoxBkgColor};\n }\n\n .labelText, .labelText > tspan {\n fill: ${t.labelTextColor};\n stroke: none;\n }\n\n .loopText, .loopText > tspan {\n fill: ${t.loopTextColor};\n stroke: none;\n }\n\n .loopLine {\n stroke-width: 2px;\n stroke-dasharray: 2, 2;\n stroke: ${t.labelBoxBorderColor};\n fill: ${t.labelBoxBorderColor};\n }\n\n .note {\n //stroke: #decc93;\n stroke: ${t.noteBorderColor};\n fill: ${t.noteBkgColor};\n }\n\n .noteText, .noteText > tspan {\n fill: ${t.noteTextColor};\n stroke: none;\n }\n\n .activation0 {\n fill: ${t.activationBkgColor};\n stroke: ${t.activationBorderColor};\n }\n\n .activation1 {\n fill: ${t.activationBkgColor};\n stroke: ${t.activationBorderColor};\n }\n\n .activation2 {\n fill: ${t.activationBkgColor};\n stroke: ${t.activationBorderColor};\n }\n\n .actorPopupMenu {\n position: absolute;\n }\n\n .actorPopupMenuPanel {\n position: absolute;\n fill: ${t.actorBkg};\n box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);\n filter: drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));\n}\n .actor-man line {\n stroke: ${t.actorBorder};\n fill: ${t.actorBkg};\n }\n .actor-man circle, line {\n stroke: ${t.actorBorder};\n fill: ${t.actorBkg};\n stroke-width: 2px;\n }\n\n`),"getStyles"),w="actor-top",I="actor-bottom",L="actor-box",_="actor-man",P=(0,c.K2)((function(t,e){return(0,r.tk)(t,e)}),"drawRect"),k=(0,c.K2)((function(t,e,a,r,s){if(void 0===e.links||null===e.links||0===Object.keys(e.links).length)return{height:0,width:0};const i=e.links,n=e.actorCnt,o=e.rectData;var c="none";s&&(c="block !important");const l=t.append("g");l.attr("id","actor"+n+"_popup"),l.attr("class","actorPopupMenu"),l.attr("display",c);var d="";void 0!==o.class&&(d=" "+o.class);let p=o.width>a?o.width:a;const g=l.append("rect");if(g.attr("class","actorPopupMenuPanel"+d),g.attr("x",o.x),g.attr("y",o.height),g.attr("fill",o.fill),g.attr("stroke",o.stroke),g.attr("width",p),g.attr("height",o.height),g.attr("rx",o.rx),g.attr("ry",o.ry),null!=i){var u=20;for(let t in i){var x=l.append("a"),y=(0,h.J)(i[t]);x.attr("xlink:href",y),x.attr("target","_blank"),st(r)(t,x,o.x+10,o.height+u,p,20,{class:"actor"},r),u+=30}}return g.attr("height",u),{height:o.height+u,width:p}}),"drawPopup"),N=(0,c.K2)((function(t){return"var pu = document.getElementById('"+t+"'); if (pu != null) { pu.style.display = pu.style.display == 'block' ? 'none' : 'block'; }"}),"popupMenuToggle"),A=(0,c.K2)((async function(t,e,a=null){let r=t.append("foreignObject");const s=await(0,o.dj)(e.text,(0,o.zj)()),i=r.append("xhtml:div").attr("style","width: fit-content;").attr("xmlns","http://www.w3.org/1999/xhtml").html(s).node().getBoundingClientRect();if(r.attr("height",Math.round(i.height)).attr("width",Math.round(i.width)),"noteText"===e.class){const a=t.node().firstChild;a.setAttribute("height",i.height+2*e.textMargin);const s=a.getBBox();r.attr("x",Math.round(s.x+s.width/2-i.width/2)).attr("y",Math.round(s.y+s.height/2-i.height/2))}else if(a){let{startx:t,stopx:s,starty:n}=a;if(t>s){const e=t;t=s,s=e}r.attr("x",Math.round(t+Math.abs(t-s)/2-i.width/2)),"loopText"===e.class?r.attr("y",Math.round(n)):r.attr("y",Math.round(n-i.height))}return[r]}),"drawKatex"),v=(0,c.K2)((function(t,e){let a=0,r=0;const s=e.text.split(o.Y2.lineBreakRegex),[i,l]=(0,n.I5)(e.fontSize);let h=[],d=0,p=(0,c.K2)((()=>e.y),"yfunc");if(void 0!==e.valign&&void 0!==e.textMargin&&e.textMargin>0)switch(e.valign){case"top":case"start":p=(0,c.K2)((()=>Math.round(e.y+e.textMargin)),"yfunc");break;case"middle":case"center":p=(0,c.K2)((()=>Math.round(e.y+(a+r+e.textMargin)/2)),"yfunc");break;case"bottom":case"end":p=(0,c.K2)((()=>Math.round(e.y+(a+r+2*e.textMargin)-e.textMargin)),"yfunc")}if(void 0!==e.anchor&&void 0!==e.textMargin&&void 0!==e.width)switch(e.anchor){case"left":case"start":e.x=Math.round(e.x+e.textMargin),e.anchor="start",e.dominantBaseline="middle",e.alignmentBaseline="middle";break;case"middle":case"center":e.x=Math.round(e.x+e.width/2),e.anchor="middle",e.dominantBaseline="middle",e.alignmentBaseline="middle";break;case"right":case"end":e.x=Math.round(e.x+e.width-e.textMargin),e.anchor="end",e.dominantBaseline="middle",e.alignmentBaseline="middle"}for(let[o,c]of s.entries()){void 0!==e.textMargin&&0===e.textMargin&&void 0!==i&&(d=o*i);const s=t.append("text");s.attr("x",e.x),s.attr("y",p()),void 0!==e.anchor&&s.attr("text-anchor",e.anchor).attr("dominant-baseline",e.dominantBaseline).attr("alignment-baseline",e.alignmentBaseline),void 0!==e.fontFamily&&s.style("font-family",e.fontFamily),void 0!==l&&s.style("font-size",l),void 0!==e.fontWeight&&s.style("font-weight",e.fontWeight),void 0!==e.fill&&s.attr("fill",e.fill),void 0!==e.class&&s.attr("class",e.class),void 0!==e.dy?s.attr("dy",e.dy):0!==d&&s.attr("dy",d);const g=c||n.pe;if(e.tspan){const t=s.append("tspan");t.attr("x",e.x),void 0!==e.fill&&t.attr("fill",e.fill),t.text(g)}else s.text(g);void 0!==e.valign&&void 0!==e.textMargin&&e.textMargin>0&&(r+=(s._groups||s)[0][0].getBBox().height,a=r),h.push(s)}return h}),"drawText"),M=(0,c.K2)((function(t,e){function a(t,e,a,r,s){return t+","+e+" "+(t+a)+","+e+" "+(t+a)+","+(e+r-s)+" "+(t+a-1.2*s)+","+(e+r)+" "+t+","+(e+r)}(0,c.K2)(a,"genPoints");const r=t.append("polygon");return r.attr("points",a(e.x,e.y,e.width,e.height,7)),r.attr("class","labelBox"),e.y=e.y+e.height/2,v(t,e),r}),"drawLabel"),O=-1,D=(0,c.K2)(((t,e,a,r)=>{t.select&&a.forEach((a=>{const s=e.get(a),i=t.select("#actor"+s.actorCnt);!r.mirrorActors&&s.stopy?i.attr("y2",s.stopy+s.height/2):r.mirrorActors&&i.attr("y2",s.stopy)}))}),"fixLifeLineHeights"),S=(0,c.K2)((function(t,e,a,s){const i=s?e.stopy:e.starty,n=e.x+e.width/2,c=i+e.height,l=t.append("g").lower();var h=l;s||(O++,Object.keys(e.links||{}).length&&!a.forceMenus&&h.attr("onclick",N(`actor${O}_popup`)).attr("cursor","pointer"),h.append("line").attr("id","actor"+O).attr("x1",n).attr("y1",c).attr("x2",n).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",e.name),h=l.append("g"),e.actorCnt=O,null!=e.links&&h.attr("id","root-"+O));const d=(0,r.PB)();var p="actor";e.properties?.class?p=e.properties.class:d.fill="#eaeaea",p+=s?` ${I}`:` ${w}`,d.x=e.x,d.y=i,d.width=e.width,d.height=e.height,d.class=p,d.rx=3,d.ry=3,d.name=e.name;const g=P(h,d);if(e.rectData=d,e.properties?.icon){const t=e.properties.icon.trim();"@"===t.charAt(0)?(0,r.CP)(h,d.x+d.width-20,d.y+10,t.substr(1)):(0,r.aC)(h,d.x+d.width-20,d.y+10,t)}rt(a,(0,o.Wi)(e.description))(e.description,h,d.x,d.y,d.width,d.height,{class:`actor ${L}`},a);let u=e.height;if(g.node){const t=g.node().getBBox();e.height=t.height,u=t.height}return u}),"drawActorTypeParticipant"),R=(0,c.K2)((function(t,e,a,s){const i=s?e.stopy:e.starty,n=e.x+e.width/2,c=i+e.height,l=t.append("g").lower();var h=l;s||(O++,Object.keys(e.links||{}).length&&!a.forceMenus&&h.attr("onclick",N(`actor${O}_popup`)).attr("cursor","pointer"),h.append("line").attr("id","actor"+O).attr("x1",n).attr("y1",c).attr("x2",n).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",e.name),h=l.append("g"),e.actorCnt=O,null!=e.links&&h.attr("id","root-"+O));const d=(0,r.PB)();var p="actor";e.properties?.class?p=e.properties.class:d.fill="#eaeaea",p+=s?` ${I}`:` ${w}`,d.x=e.x,d.y=i,d.width=e.width,d.height=e.height,d.class=p,d.name=e.name;const g={...d,x:d.x+-6,y:d.y+6,class:"actor"},u=P(h,d);if(P(h,g),e.rectData=d,e.properties?.icon){const t=e.properties.icon.trim();"@"===t.charAt(0)?(0,r.CP)(h,d.x+d.width-20,d.y+10,t.substr(1)):(0,r.aC)(h,d.x+d.width-20,d.y+10,t)}rt(a,(0,o.Wi)(e.description))(e.description,h,d.x-6,d.y+6,d.width,d.height,{class:`actor ${L}`},a);let x=e.height;if(u.node){const t=u.node().getBBox();e.height=t.height,x=t.height}return x}),"drawActorTypeCollections"),$=(0,c.K2)((function(t,e,a,s){const i=s?e.stopy:e.starty,n=e.x+e.width/2,c=i+e.height,l=t.append("g").lower();let h=l;s||(O++,Object.keys(e.links||{}).length&&!a.forceMenus&&h.attr("onclick",N(`actor${O}_popup`)).attr("cursor","pointer"),h.append("line").attr("id","actor"+O).attr("x1",n).attr("y1",c).attr("x2",n).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",e.name),h=l.append("g"),e.actorCnt=O,null!=e.links&&h.attr("id","root-"+O));const d=(0,r.PB)();let p="actor";e.properties?.class?p=e.properties.class:d.fill="#eaeaea",p+=s?` ${I}`:` ${w}`,d.x=e.x,d.y=i,d.width=e.width,d.height=e.height,d.class=p,d.name=e.name;const g=d.height/2,u=g/(2.5+d.height/50),x=h.append("g"),y=h.append("g");if(x.append("path").attr("d",`M ${d.x},${d.y+g}\n a ${u},${g} 0 0 0 0,${d.height}\n h ${d.width-2*u}\n a ${u},${g} 0 0 0 0,-${d.height}\n Z\n `).attr("class",p),y.append("path").attr("d",`M ${d.x},${d.y+g}\n a ${u},${g} 0 0 0 0,${d.height}`).attr("stroke","#666").attr("stroke-width","1px").attr("class",p),x.attr("transform",`translate(${u}, ${-d.height/2})`),y.attr("transform",`translate(${d.width-u}, ${-d.height/2})`),e.rectData=d,e.properties?.icon){const t=e.properties.icon.trim(),a=d.x+d.width-20,s=d.y+10;"@"===t.charAt(0)?(0,r.CP)(h,a,s,t.substr(1)):(0,r.aC)(h,a,s,t)}rt(a,(0,o.Wi)(e.description))(e.description,h,d.x,d.y,d.width,d.height,{class:`actor ${L}`},a);let m=e.height;const b=x.select("path:last-child");if(b.node()){const t=b.node().getBBox();e.height=t.height,m=t.height}return m}),"drawActorTypeQueue"),C=(0,c.K2)((function(t,e,a,s){const i=s?e.stopy:e.starty,n=e.x+e.width/2,c=i+75,l=t.append("g").lower();s||(O++,l.append("line").attr("id","actor"+O).attr("x1",n).attr("y1",c).attr("x2",n).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",e.name),e.actorCnt=O);const h=t.append("g");let d=_;d+=s?` ${I}`:` ${w}`,h.attr("class",d),h.attr("name",e.name);const p=(0,r.PB)();p.x=e.x,p.y=i,p.fill="#eaeaea",p.width=e.width,p.height=e.height,p.class="actor";const g=e.x+e.width/2,u=i+30;h.append("defs").append("marker").attr("id","filled-head-control").attr("refX",11).attr("refY",5.8).attr("markerWidth",20).attr("markerHeight",28).attr("orient","172.5").append("path").attr("d","M 14.4 5.6 L 7.2 10.4 L 8.8 5.6 L 7.2 0.8 Z"),h.append("circle").attr("cx",g).attr("cy",u).attr("r",18).attr("fill","#eaeaf7").attr("stroke","#666").attr("stroke-width",1.2),h.append("line").attr("marker-end","url(#filled-head-control)").attr("transform",`translate(${g}, ${u-18})`);const x=h.node().getBBox();return e.height=x.height+2*(a?.sequence?.labelBoxHeight??0),rt(a,(0,o.Wi)(e.description))(e.description,h,p.x,p.y+18+(s?5:10),p.width,p.height,{class:`actor ${_}`},a),e.height}),"drawActorTypeControl"),Y=(0,c.K2)((function(t,e,a,s){const i=s?e.stopy:e.starty,n=e.x+e.width/2,c=i+75,l=t.append("g").lower(),h=t.append("g");let d=_;d+=s?` ${I}`:` ${w}`,h.attr("class",d),h.attr("name",e.name);const p=(0,r.PB)();p.x=e.x,p.y=i,p.fill="#eaeaea",p.width=e.width,p.height=e.height,p.class="actor";const g=e.x+e.width/2,u=i+(s?10:25),x=18;h.append("circle").attr("cx",g).attr("cy",u).attr("r",x).attr("width",e.width).attr("height",e.height),h.append("line").attr("x1",g-x).attr("x2",g+x).attr("y1",u+x).attr("y2",u+x).attr("stroke","#333").attr("stroke-width",2);const y=h.node().getBBox();return e.height=y.height+(a?.sequence?.labelBoxHeight??0),s||(O++,l.append("line").attr("id","actor"+O).attr("x1",n).attr("y1",c).attr("x2",n).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",e.name),e.actorCnt=O),rt(a,(0,o.Wi)(e.description))(e.description,h,p.x,p.y+(s?(u-i+x-5)/2:(u+x-i)/2),p.width,p.height,{class:`actor ${_}`},a),h.attr("transform","translate(0, 9)"),e.height}),"drawActorTypeEntity"),K=(0,c.K2)((function(t,e,a,s){const i=s?e.stopy:e.starty,n=e.x+e.width/2,c=i+e.height+2*a.boxTextMargin,l=t.append("g").lower();let h=l;s||(O++,Object.keys(e.links||{}).length&&!a.forceMenus&&h.attr("onclick",N(`actor${O}_popup`)).attr("cursor","pointer"),h.append("line").attr("id","actor"+O).attr("x1",n).attr("y1",c).attr("x2",n).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",e.name),h=l.append("g"),e.actorCnt=O,null!=e.links&&h.attr("id","root-"+O));const d=(0,r.PB)();let p="actor";e.properties?.class?p=e.properties.class:d.fill="#eaeaea",p+=s?` ${I}`:` ${w}`,d.x=e.x,d.y=i,d.width=e.width,d.height=e.height,d.class=p,d.name=e.name,d.x=e.x,d.y=i;const g=d.width/4,u=d.width/4,x=g/2,y=x/(2.5+g/50),m=h.append("g"),b=`\n M ${d.x},${d.y+y}\n a ${x},${y} 0 0 0 ${g},0\n a ${x},${y} 0 0 0 -${g},0\n l 0,${u-2*y}\n a ${x},${y} 0 0 0 ${g},0\n l 0,-${u-2*y}\n`;m.append("path").attr("d",b).attr("fill","#eaeaea").attr("stroke","#000").attr("stroke-width",1).attr("class",p),s?m.attr("transform",`translate(${1.5*g}, ${d.height/4-2*y})`):m.attr("transform",`translate(${1.5*g}, ${(d.height+y)/4})`),e.rectData=d,rt(a,(0,o.Wi)(e.description))(e.description,h,d.x,d.y+(s?(d.height+u)/4:(d.height+y)/2),d.width,d.height,{class:`actor ${L}`},a);const T=m.select("path:last-child");if(T.node()){const t=T.node().getBBox();e.height=t.height+(a.sequence.labelBoxHeight??0)}return e.height}),"drawActorTypeDatabase"),B=(0,c.K2)((function(t,e,a,s){const i=s?e.stopy:e.starty,n=e.x+e.width/2,c=i+80,l=30,h=t.append("g").lower();s||(O++,h.append("line").attr("id","actor"+O).attr("x1",n).attr("y1",c).attr("x2",n).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",e.name),e.actorCnt=O);const d=t.append("g");let p=_;p+=s?` ${I}`:` ${w}`,d.attr("class",p),d.attr("name",e.name);const g=(0,r.PB)();g.x=e.x,g.y=i,g.fill="#eaeaea",g.width=e.width,g.height=e.height,g.class="actor",d.append("line").attr("id","actor-man-torso"+O).attr("x1",e.x+e.width/2-75).attr("y1",i+10).attr("x2",e.x+e.width/2-15).attr("y2",i+10),d.append("line").attr("id","actor-man-arms"+O).attr("x1",e.x+e.width/2-75).attr("y1",i+0).attr("x2",e.x+e.width/2-75).attr("y2",i+20),d.append("circle").attr("cx",e.x+e.width/2).attr("cy",i+10).attr("r",l);const u=d.node().getBBox();return e.height=u.height+(a.sequence.labelBoxHeight??0),rt(a,(0,o.Wi)(e.description))(e.description,d,g.x,g.y+(s?11:18),g.width,g.height,{class:`actor ${_}`},a),d.attr("transform","translate(0,22)"),e.height}),"drawActorTypeBoundary"),V=(0,c.K2)((function(t,e,a,s){const i=s?e.stopy:e.starty,n=e.x+e.width/2,c=i+80,l=t.append("g").lower();s||(O++,l.append("line").attr("id","actor"+O).attr("x1",n).attr("y1",c).attr("x2",n).attr("y2",2e3).attr("class","actor-line 200").attr("stroke-width","0.5px").attr("stroke","#999").attr("name",e.name),e.actorCnt=O);const h=t.append("g");let d=_;d+=s?` ${I}`:` ${w}`,h.attr("class",d),h.attr("name",e.name);const p=(0,r.PB)();p.x=e.x,p.y=i,p.fill="#eaeaea",p.width=e.width,p.height=e.height,p.class="actor",p.rx=3,p.ry=3,h.append("line").attr("id","actor-man-torso"+O).attr("x1",n).attr("y1",i+25).attr("x2",n).attr("y2",i+45),h.append("line").attr("id","actor-man-arms"+O).attr("x1",n-18).attr("y1",i+33).attr("x2",n+18).attr("y2",i+33),h.append("line").attr("x1",n-18).attr("y1",i+60).attr("x2",n).attr("y2",i+45),h.append("line").attr("x1",n).attr("y1",i+45).attr("x2",n+18-2).attr("y2",i+60);const g=h.append("circle");g.attr("cx",e.x+e.width/2),g.attr("cy",i+10),g.attr("r",15),g.attr("width",e.width),g.attr("height",e.height);const u=h.node().getBBox();return e.height=u.height,rt(a,(0,o.Wi)(e.description))(e.description,h,p.x,p.y+35,p.width,p.height,{class:`actor ${_}`},a),e.height}),"drawActorTypeActor"),F=(0,c.K2)((async function(t,e,a,r){switch(e.type){case"actor":return await V(t,e,a,r);case"participant":return await S(t,e,a,r);case"boundary":return await B(t,e,a,r);case"control":return await C(t,e,a,r);case"entity":return await Y(t,e,a,r);case"database":return await K(t,e,a,r);case"collections":return await R(t,e,a,r);case"queue":return await $(t,e,a,r)}}),"drawActor"),W=(0,c.K2)((function(t,e,a){const r=t.append("g");j(r,e),e.name&&rt(a)(e.name,r,e.x,e.y+a.boxTextMargin+(e.textMaxHeight||0)/2,e.width,0,{class:"text"},a),r.lower()}),"drawBox"),q=(0,c.K2)((function(t){return t.append("g")}),"anchorElement"),z=(0,c.K2)((function(t,e,a,s,i){const n=(0,r.PB)(),o=e.anchored;n.x=e.startx,n.y=e.starty,n.class="activation"+i%3,n.width=e.stopx-e.startx,n.height=a-e.starty,P(o,n)}),"drawActivation"),H=(0,c.K2)((async function(t,e,a,s){const{boxMargin:i,boxTextMargin:n,labelBoxHeight:l,labelBoxWidth:h,messageFontFamily:d,messageFontSize:p,messageFontWeight:g}=s,u=t.append("g"),x=(0,c.K2)((function(t,e,a,r){return u.append("line").attr("x1",t).attr("y1",e).attr("x2",a).attr("y2",r).attr("class","loopLine")}),"drawLoopLine");x(e.startx,e.starty,e.stopx,e.starty),x(e.stopx,e.starty,e.stopx,e.stopy),x(e.startx,e.stopy,e.stopx,e.stopy),x(e.startx,e.starty,e.startx,e.stopy),void 0!==e.sections&&e.sections.forEach((function(t){x(e.startx,t.y,e.stopx,t.y).style("stroke-dasharray","3, 3")}));let y=(0,r.HT)();y.text=a,y.x=e.startx,y.y=e.starty,y.fontFamily=d,y.fontSize=p,y.fontWeight=g,y.anchor="middle",y.valign="middle",y.tspan=!1,y.width=h||50,y.height=l||20,y.textMargin=n,y.class="labelText",M(u,y),y=et(),y.text=e.title,y.x=e.startx+h/2+(e.stopx-e.startx)/2,y.y=e.starty+i+n,y.anchor="middle",y.valign="middle",y.textMargin=n,y.class="loopText",y.fontFamily=d,y.fontSize=p,y.fontWeight=g,y.wrap=!0;let m=(0,o.Wi)(y.text)?await A(u,y,e):v(u,y);if(void 0!==e.sectionTitles)for(const[r,c]of Object.entries(e.sectionTitles))if(c.message){y.text=c.message,y.x=e.startx+(e.stopx-e.startx)/2,y.y=e.sections[r].y+i+n,y.class="loopText",y.anchor="middle",y.valign="middle",y.tspan=!1,y.fontFamily=d,y.fontSize=p,y.fontWeight=g,y.wrap=e.wrap,(0,o.Wi)(y.text)?(e.starty=e.sections[r].y,await A(u,y,e)):v(u,y);let t=Math.round(m.map((t=>(t._groups||t)[0][0].getBBox().height)).reduce(((t,e)=>t+e)));e.sections[r].height+=t-(i+n)}return e.height=Math.round(e.stopy-e.starty),u}),"drawLoop"),j=(0,c.K2)((function(t,e){(0,r.lC)(t,e)}),"drawBackgroundRect"),U=(0,c.K2)((function(t){t.append("defs").append("symbol").attr("id","database").attr("fill-rule","evenodd").attr("clip-rule","evenodd").append("path").attr("transform","scale(.5)").attr("d","M12.258.001l.256.004.255.005.253.008.251.01.249.012.247.015.246.016.242.019.241.02.239.023.236.024.233.027.231.028.229.031.225.032.223.034.22.036.217.038.214.04.211.041.208.043.205.045.201.046.198.048.194.05.191.051.187.053.183.054.18.056.175.057.172.059.168.06.163.061.16.063.155.064.15.066.074.033.073.033.071.034.07.034.069.035.068.035.067.035.066.035.064.036.064.036.062.036.06.036.06.037.058.037.058.037.055.038.055.038.053.038.052.038.051.039.05.039.048.039.047.039.045.04.044.04.043.04.041.04.04.041.039.041.037.041.036.041.034.041.033.042.032.042.03.042.029.042.027.042.026.043.024.043.023.043.021.043.02.043.018.044.017.043.015.044.013.044.012.044.011.045.009.044.007.045.006.045.004.045.002.045.001.045v17l-.001.045-.002.045-.004.045-.006.045-.007.045-.009.044-.011.045-.012.044-.013.044-.015.044-.017.043-.018.044-.02.043-.021.043-.023.043-.024.043-.026.043-.027.042-.029.042-.03.042-.032.042-.033.042-.034.041-.036.041-.037.041-.039.041-.04.041-.041.04-.043.04-.044.04-.045.04-.047.039-.048.039-.05.039-.051.039-.052.038-.053.038-.055.038-.055.038-.058.037-.058.037-.06.037-.06.036-.062.036-.064.036-.064.036-.066.035-.067.035-.068.035-.069.035-.07.034-.071.034-.073.033-.074.033-.15.066-.155.064-.16.063-.163.061-.168.06-.172.059-.175.057-.18.056-.183.054-.187.053-.191.051-.194.05-.198.048-.201.046-.205.045-.208.043-.211.041-.214.04-.217.038-.22.036-.223.034-.225.032-.229.031-.231.028-.233.027-.236.024-.239.023-.241.02-.242.019-.246.016-.247.015-.249.012-.251.01-.253.008-.255.005-.256.004-.258.001-.258-.001-.256-.004-.255-.005-.253-.008-.251-.01-.249-.012-.247-.015-.245-.016-.243-.019-.241-.02-.238-.023-.236-.024-.234-.027-.231-.028-.228-.031-.226-.032-.223-.034-.22-.036-.217-.038-.214-.04-.211-.041-.208-.043-.204-.045-.201-.046-.198-.048-.195-.05-.19-.051-.187-.053-.184-.054-.179-.056-.176-.057-.172-.059-.167-.06-.164-.061-.159-.063-.155-.064-.151-.066-.074-.033-.072-.033-.072-.034-.07-.034-.069-.035-.068-.035-.067-.035-.066-.035-.064-.036-.063-.036-.062-.036-.061-.036-.06-.037-.058-.037-.057-.037-.056-.038-.055-.038-.053-.038-.052-.038-.051-.039-.049-.039-.049-.039-.046-.039-.046-.04-.044-.04-.043-.04-.041-.04-.04-.041-.039-.041-.037-.041-.036-.041-.034-.041-.033-.042-.032-.042-.03-.042-.029-.042-.027-.042-.026-.043-.024-.043-.023-.043-.021-.043-.02-.043-.018-.044-.017-.043-.015-.044-.013-.044-.012-.044-.011-.045-.009-.044-.007-.045-.006-.045-.004-.045-.002-.045-.001-.045v-17l.001-.045.002-.045.004-.045.006-.045.007-.045.009-.044.011-.045.012-.044.013-.044.015-.044.017-.043.018-.044.02-.043.021-.043.023-.043.024-.043.026-.043.027-.042.029-.042.03-.042.032-.042.033-.042.034-.041.036-.041.037-.041.039-.041.04-.041.041-.04.043-.04.044-.04.046-.04.046-.039.049-.039.049-.039.051-.039.052-.038.053-.038.055-.038.056-.038.057-.037.058-.037.06-.037.061-.036.062-.036.063-.036.064-.036.066-.035.067-.035.068-.035.069-.035.07-.034.072-.034.072-.033.074-.033.151-.066.155-.064.159-.063.164-.061.167-.06.172-.059.176-.057.179-.056.184-.054.187-.053.19-.051.195-.05.198-.048.201-.046.204-.045.208-.043.211-.041.214-.04.217-.038.22-.036.223-.034.226-.032.228-.031.231-.028.234-.027.236-.024.238-.023.241-.02.243-.019.245-.016.247-.015.249-.012.251-.01.253-.008.255-.005.256-.004.258-.001.258.001zm-9.258 20.499v.01l.001.021.003.021.004.022.005.021.006.022.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.023.018.024.019.024.021.024.022.025.023.024.024.025.052.049.056.05.061.051.066.051.07.051.075.051.079.052.084.052.088.052.092.052.097.052.102.051.105.052.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.048.144.049.147.047.152.047.155.047.16.045.163.045.167.043.171.043.176.041.178.041.183.039.187.039.19.037.194.035.197.035.202.033.204.031.209.03.212.029.216.027.219.025.222.024.226.021.23.02.233.018.236.016.24.015.243.012.246.01.249.008.253.005.256.004.259.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.021.224-.024.22-.026.216-.027.212-.028.21-.031.205-.031.202-.034.198-.034.194-.036.191-.037.187-.039.183-.04.179-.04.175-.042.172-.043.168-.044.163-.045.16-.046.155-.046.152-.047.148-.048.143-.049.139-.049.136-.05.131-.05.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.053.083-.051.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.05.023-.024.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.023.01-.022.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.127l-.077.055-.08.053-.083.054-.085.053-.087.052-.09.052-.093.051-.095.05-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.045-.118.044-.12.043-.122.042-.124.042-.126.041-.128.04-.13.04-.132.038-.134.038-.135.037-.138.037-.139.035-.142.035-.143.034-.144.033-.147.032-.148.031-.15.03-.151.03-.153.029-.154.027-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.01-.179.008-.179.008-.181.006-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.006-.179-.008-.179-.008-.178-.01-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.027-.153-.029-.151-.03-.15-.03-.148-.031-.146-.032-.145-.033-.143-.034-.141-.035-.14-.035-.137-.037-.136-.037-.134-.038-.132-.038-.13-.04-.128-.04-.126-.041-.124-.042-.122-.042-.12-.044-.117-.043-.116-.045-.113-.045-.112-.046-.109-.047-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.05-.093-.052-.09-.051-.087-.052-.085-.053-.083-.054-.08-.054-.077-.054v4.127zm0-5.654v.011l.001.021.003.021.004.021.005.022.006.022.007.022.009.022.01.022.011.023.012.023.013.023.015.024.016.023.017.024.018.024.019.024.021.024.022.024.023.025.024.024.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.052.11.051.114.051.119.052.123.05.127.051.131.05.135.049.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.044.171.042.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.022.23.02.233.018.236.016.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.012.241-.015.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.048.139-.05.136-.049.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.051.051-.049.023-.025.023-.024.021-.025.02-.024.019-.024.018-.024.017-.024.015-.023.014-.023.013-.024.012-.022.01-.023.01-.023.008-.022.006-.022.006-.022.004-.021.004-.022.001-.021.001-.021v-4.139l-.077.054-.08.054-.083.054-.085.052-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.049-.105.048-.106.047-.109.047-.111.046-.114.045-.115.044-.118.044-.12.044-.122.042-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.035-.143.033-.144.033-.147.033-.148.031-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.025-.161.024-.162.023-.163.022-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.011-.178.009-.179.009-.179.007-.181.007-.182.005-.182.004-.184.003-.184.002h-.37l-.184-.002-.184-.003-.182-.004-.182-.005-.181-.007-.179-.007-.179-.009-.178-.009-.176-.011-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.022-.162-.023-.161-.024-.159-.025-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.031-.146-.033-.145-.033-.143-.033-.141-.035-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.04-.126-.041-.124-.042-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.047-.105-.048-.102-.049-.1-.049-.097-.05-.095-.051-.093-.051-.09-.051-.087-.053-.085-.052-.083-.054-.08-.054-.077-.054v4.139zm0-5.666v.011l.001.02.003.022.004.021.005.022.006.021.007.022.009.023.01.022.011.023.012.023.013.023.015.023.016.024.017.024.018.023.019.024.021.025.022.024.023.024.024.025.052.05.056.05.061.05.066.051.07.051.075.052.079.051.084.052.088.052.092.052.097.052.102.052.105.051.11.052.114.051.119.051.123.051.127.05.131.05.135.05.139.049.144.048.147.048.152.047.155.046.16.045.163.045.167.043.171.043.176.042.178.04.183.04.187.038.19.037.194.036.197.034.202.033.204.032.209.03.212.028.216.027.219.025.222.024.226.021.23.02.233.018.236.017.24.014.243.012.246.01.249.008.253.006.256.003.259.001.26-.001.257-.003.254-.006.25-.008.247-.01.244-.013.241-.014.237-.016.233-.018.231-.02.226-.022.224-.024.22-.025.216-.027.212-.029.21-.03.205-.032.202-.033.198-.035.194-.036.191-.037.187-.039.183-.039.179-.041.175-.042.172-.043.168-.044.163-.045.16-.045.155-.047.152-.047.148-.048.143-.049.139-.049.136-.049.131-.051.126-.05.123-.051.118-.052.114-.051.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.052.07-.051.065-.051.06-.051.056-.05.051-.049.023-.025.023-.025.021-.024.02-.024.019-.024.018-.024.017-.024.015-.023.014-.024.013-.023.012-.023.01-.022.01-.023.008-.022.006-.022.006-.022.004-.022.004-.021.001-.021.001-.021v-4.153l-.077.054-.08.054-.083.053-.085.053-.087.053-.09.051-.093.051-.095.051-.097.05-.1.049-.102.048-.105.048-.106.048-.109.046-.111.046-.114.046-.115.044-.118.044-.12.043-.122.043-.124.042-.126.041-.128.04-.13.039-.132.039-.134.038-.135.037-.138.036-.139.036-.142.034-.143.034-.144.033-.147.032-.148.032-.15.03-.151.03-.153.028-.154.028-.156.027-.158.026-.159.024-.161.024-.162.023-.163.023-.165.021-.166.02-.167.019-.169.018-.169.017-.171.016-.173.015-.173.014-.175.013-.175.012-.177.01-.178.01-.179.009-.179.007-.181.006-.182.006-.182.004-.184.003-.184.001-.185.001-.185-.001-.184-.001-.184-.003-.182-.004-.182-.006-.181-.006-.179-.007-.179-.009-.178-.01-.176-.01-.176-.012-.175-.013-.173-.014-.172-.015-.171-.016-.17-.017-.169-.018-.167-.019-.166-.02-.165-.021-.163-.023-.162-.023-.161-.024-.159-.024-.157-.026-.156-.027-.155-.028-.153-.028-.151-.03-.15-.03-.148-.032-.146-.032-.145-.033-.143-.034-.141-.034-.14-.036-.137-.036-.136-.037-.134-.038-.132-.039-.13-.039-.128-.041-.126-.041-.124-.041-.122-.043-.12-.043-.117-.044-.116-.044-.113-.046-.112-.046-.109-.046-.106-.048-.105-.048-.102-.048-.1-.05-.097-.049-.095-.051-.093-.051-.09-.052-.087-.052-.085-.053-.083-.053-.08-.054-.077-.054v4.153zm8.74-8.179l-.257.004-.254.005-.25.008-.247.011-.244.012-.241.014-.237.016-.233.018-.231.021-.226.022-.224.023-.22.026-.216.027-.212.028-.21.031-.205.032-.202.033-.198.034-.194.036-.191.038-.187.038-.183.04-.179.041-.175.042-.172.043-.168.043-.163.045-.16.046-.155.046-.152.048-.148.048-.143.048-.139.049-.136.05-.131.05-.126.051-.123.051-.118.051-.114.052-.11.052-.106.052-.101.052-.096.052-.092.052-.088.052-.083.052-.079.052-.074.051-.07.052-.065.051-.06.05-.056.05-.051.05-.023.025-.023.024-.021.024-.02.025-.019.024-.018.024-.017.023-.015.024-.014.023-.013.023-.012.023-.01.023-.01.022-.008.022-.006.023-.006.021-.004.022-.004.021-.001.021-.001.021.001.021.001.021.004.021.004.022.006.021.006.023.008.022.01.022.01.023.012.023.013.023.014.023.015.024.017.023.018.024.019.024.02.025.021.024.023.024.023.025.051.05.056.05.06.05.065.051.07.052.074.051.079.052.083.052.088.052.092.052.096.052.101.052.106.052.11.052.114.052.118.051.123.051.126.051.131.05.136.05.139.049.143.048.148.048.152.048.155.046.16.046.163.045.168.043.172.043.175.042.179.041.183.04.187.038.191.038.194.036.198.034.202.033.205.032.21.031.212.028.216.027.22.026.224.023.226.022.231.021.233.018.237.016.241.014.244.012.247.011.25.008.254.005.257.004.26.001.26-.001.257-.004.254-.005.25-.008.247-.011.244-.012.241-.014.237-.016.233-.018.231-.021.226-.022.224-.023.22-.026.216-.027.212-.028.21-.031.205-.032.202-.033.198-.034.194-.036.191-.038.187-.038.183-.04.179-.041.175-.042.172-.043.168-.043.163-.045.16-.046.155-.046.152-.048.148-.048.143-.048.139-.049.136-.05.131-.05.126-.051.123-.051.118-.051.114-.052.11-.052.106-.052.101-.052.096-.052.092-.052.088-.052.083-.052.079-.052.074-.051.07-.052.065-.051.06-.05.056-.05.051-.05.023-.025.023-.024.021-.024.02-.025.019-.024.018-.024.017-.023.015-.024.014-.023.013-.023.012-.023.01-.023.01-.022.008-.022.006-.023.006-.021.004-.022.004-.021.001-.021.001-.021-.001-.021-.001-.021-.004-.021-.004-.022-.006-.021-.006-.023-.008-.022-.01-.022-.01-.023-.012-.023-.013-.023-.014-.023-.015-.024-.017-.023-.018-.024-.019-.024-.02-.025-.021-.024-.023-.024-.023-.025-.051-.05-.056-.05-.06-.05-.065-.051-.07-.052-.074-.051-.079-.052-.083-.052-.088-.052-.092-.052-.096-.052-.101-.052-.106-.052-.11-.052-.114-.052-.118-.051-.123-.051-.126-.051-.131-.05-.136-.05-.139-.049-.143-.048-.148-.048-.152-.048-.155-.046-.16-.046-.163-.045-.168-.043-.172-.043-.175-.042-.179-.041-.183-.04-.187-.038-.191-.038-.194-.036-.198-.034-.202-.033-.205-.032-.21-.031-.212-.028-.216-.027-.22-.026-.224-.023-.226-.022-.231-.021-.233-.018-.237-.016-.241-.014-.244-.012-.247-.011-.25-.008-.254-.005-.257-.004-.26-.001-.26.001z")}),"insertDatabaseIcon"),G=(0,c.K2)((function(t){t.append("defs").append("symbol").attr("id","computer").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M2 2v13h20v-13h-20zm18 11h-16v-9h16v9zm-10.228 6l.466-1h3.524l.467 1h-4.457zm14.228 3h-24l2-6h2.104l-1.33 4h18.45l-1.297-4h2.073l2 6zm-5-10h-14v-7h14v7z")}),"insertComputerIcon"),X=(0,c.K2)((function(t){t.append("defs").append("symbol").attr("id","clock").attr("width","24").attr("height","24").append("path").attr("transform","scale(.5)").attr("d","M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm5.848 12.459c.202.038.202.333.001.372-1.907.361-6.045 1.111-6.547 1.111-.719 0-1.301-.582-1.301-1.301 0-.512.77-5.447 1.125-7.445.034-.192.312-.181.343.014l.985 6.238 5.394 1.011z")}),"insertClockIcon"),J=(0,c.K2)((function(t){t.append("defs").append("marker").attr("id","arrowhead").attr("refX",7.9).attr("refY",5).attr("markerUnits","userSpaceOnUse").attr("markerWidth",12).attr("markerHeight",12).attr("orient","auto-start-reverse").append("path").attr("d","M -1 0 L 10 5 L 0 10 z")}),"insertArrowHead"),Z=(0,c.K2)((function(t){t.append("defs").append("marker").attr("id","filled-head").attr("refX",15.5).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 18,7 L9,13 L14,7 L9,1 Z")}),"insertArrowFilledHead"),Q=(0,c.K2)((function(t){t.append("defs").append("marker").attr("id","sequencenumber").attr("refX",15).attr("refY",15).attr("markerWidth",60).attr("markerHeight",40).attr("orient","auto").append("circle").attr("cx",15).attr("cy",15).attr("r",6)}),"insertSequenceNumber"),tt=(0,c.K2)((function(t){t.append("defs").append("marker").attr("id","crosshead").attr("markerWidth",15).attr("markerHeight",8).attr("orient","auto").attr("refX",4).attr("refY",4.5).append("path").attr("fill","none").attr("stroke","#000000").style("stroke-dasharray","0, 0").attr("stroke-width","1pt").attr("d","M 1,2 L 6,7 M 6,2 L 1,7")}),"insertArrowCrossHead"),et=(0,c.K2)((function(){return{x:0,y:0,fill:void 0,anchor:void 0,style:"#666",width:void 0,height:void 0,textMargin:0,rx:0,ry:0,tspan:!0,valign:void 0}}),"getTextObj"),at=(0,c.K2)((function(){return{x:0,y:0,fill:"#EDF2AE",stroke:"#666",width:100,anchor:"start",height:100,rx:0,ry:0}}),"getNoteRect"),rt=function(){function t(t,e,a,r,i,n,o){s(e.append("text").attr("x",a+i/2).attr("y",r+n/2+5).style("text-anchor","middle").text(t),o)}function e(t,e,a,r,i,c,l,h){const{actorFontSize:d,actorFontFamily:p,actorFontWeight:g}=h,[u,x]=(0,n.I5)(d),y=t.split(o.Y2.lineBreakRegex);for(let n=0;nt.height||0)))+(0===this.loops.length?0:this.loops.map((t=>t.height||0)).reduce(((t,e)=>t+e)))+(0===this.messages.length?0:this.messages.map((t=>t.height||0)).reduce(((t,e)=>t+e)))+(0===this.notes.length?0:this.notes.map((t=>t.height||0)).reduce(((t,e)=>t+e)))}),"getHeight"),clear:(0,c.K2)((function(){this.actors=[],this.boxes=[],this.loops=[],this.messages=[],this.notes=[]}),"clear"),addBox:(0,c.K2)((function(t){this.boxes.push(t)}),"addBox"),addActor:(0,c.K2)((function(t){this.actors.push(t)}),"addActor"),addLoop:(0,c.K2)((function(t){this.loops.push(t)}),"addLoop"),addMessage:(0,c.K2)((function(t){this.messages.push(t)}),"addMessage"),addNote:(0,c.K2)((function(t){this.notes.push(t)}),"addNote"),lastActor:(0,c.K2)((function(){return this.actors[this.actors.length-1]}),"lastActor"),lastLoop:(0,c.K2)((function(){return this.loops[this.loops.length-1]}),"lastLoop"),lastMessage:(0,c.K2)((function(){return this.messages[this.messages.length-1]}),"lastMessage"),lastNote:(0,c.K2)((function(){return this.notes[this.notes.length-1]}),"lastNote"),actors:[],boxes:[],loops:[],messages:[],notes:[]},init:(0,c.K2)((function(){this.sequenceItems=[],this.activations=[],this.models.clear(),this.data={startx:void 0,stopx:void 0,starty:void 0,stopy:void 0},this.verticalPos=0,mt((0,o.D7)())}),"init"),updateVal:(0,c.K2)((function(t,e,a,r){void 0===t[e]?t[e]=a:t[e]=r(a,t[e])}),"updateVal"),updateBounds:(0,c.K2)((function(t,e,a,r){const s=this;let i=0;function n(n){return(0,c.K2)((function(o){i++;const c=s.sequenceItems.length-i+1;s.updateVal(o,"starty",e-c*nt.boxMargin,Math.min),s.updateVal(o,"stopy",r+c*nt.boxMargin,Math.max),s.updateVal(ot.data,"startx",t-c*nt.boxMargin,Math.min),s.updateVal(ot.data,"stopx",a+c*nt.boxMargin,Math.max),"activation"!==n&&(s.updateVal(o,"startx",t-c*nt.boxMargin,Math.min),s.updateVal(o,"stopx",a+c*nt.boxMargin,Math.max),s.updateVal(ot.data,"starty",e-c*nt.boxMargin,Math.min),s.updateVal(ot.data,"stopy",r+c*nt.boxMargin,Math.max))}),"updateItemBounds")}(0,c.K2)(n,"updateFn"),this.sequenceItems.forEach(n()),this.activations.forEach(n("activation"))}),"updateBounds"),insert:(0,c.K2)((function(t,e,a,r){const s=o.Y2.getMin(t,a),i=o.Y2.getMax(t,a),n=o.Y2.getMin(e,r),c=o.Y2.getMax(e,r);this.updateVal(ot.data,"startx",s,Math.min),this.updateVal(ot.data,"starty",n,Math.min),this.updateVal(ot.data,"stopx",i,Math.max),this.updateVal(ot.data,"stopy",c,Math.max),this.updateBounds(s,n,i,c)}),"insert"),newActivation:(0,c.K2)((function(t,e,a){const r=a.get(t.from),s=bt(t.from).length||0,i=r.x+r.width/2+(s-1)*nt.activationWidth/2;this.activations.push({startx:i,starty:this.verticalPos+2,stopx:i+nt.activationWidth,stopy:void 0,actor:t.from,anchored:it.anchorElement(e)})}),"newActivation"),endActivation:(0,c.K2)((function(t){const e=this.activations.map((function(t){return t.actor})).lastIndexOf(t.from);return this.activations.splice(e,1)[0]}),"endActivation"),createLoop:(0,c.K2)((function(t={message:void 0,wrap:!1,width:void 0},e){return{startx:void 0,starty:this.verticalPos,stopx:void 0,stopy:void 0,title:t.message,wrap:t.wrap,width:t.width,height:0,fill:e}}),"createLoop"),newLoop:(0,c.K2)((function(t={message:void 0,wrap:!1,width:void 0},e){this.sequenceItems.push(this.createLoop(t,e))}),"newLoop"),endLoop:(0,c.K2)((function(){return this.sequenceItems.pop()}),"endLoop"),isLoopOverlap:(0,c.K2)((function(){return!!this.sequenceItems.length&&this.sequenceItems[this.sequenceItems.length-1].overlap}),"isLoopOverlap"),addSectionToLoop:(0,c.K2)((function(t){const e=this.sequenceItems.pop();e.sections=e.sections||[],e.sectionTitles=e.sectionTitles||[],e.sections.push({y:ot.getVerticalPos(),height:0}),e.sectionTitles.push(t),this.sequenceItems.push(e)}),"addSectionToLoop"),saveVerticalPos:(0,c.K2)((function(){this.isLoopOverlap()&&(this.savedVerticalPos=this.verticalPos)}),"saveVerticalPos"),resetVerticalPos:(0,c.K2)((function(){this.isLoopOverlap()&&(this.verticalPos=this.savedVerticalPos)}),"resetVerticalPos"),bumpVerticalPos:(0,c.K2)((function(t){this.verticalPos=this.verticalPos+t,this.data.stopy=o.Y2.getMax(this.data.stopy,this.verticalPos)}),"bumpVerticalPos"),getVerticalPos:(0,c.K2)((function(){return this.verticalPos}),"getVerticalPos"),getBounds:(0,c.K2)((function(){return{bounds:this.data,models:this.models}}),"getBounds")},ct=(0,c.K2)((async function(t,e){ot.bumpVerticalPos(nt.boxMargin),e.height=nt.boxMargin,e.starty=ot.getVerticalPos();const a=(0,r.PB)();a.x=e.startx,a.y=e.starty,a.width=e.width||nt.width,a.class="note";const s=t.append("g"),i=it.drawRect(s,a),n=(0,r.HT)();n.x=e.startx,n.y=e.starty,n.width=a.width,n.dy="1em",n.text=e.message,n.class="noteText",n.fontFamily=nt.noteFontFamily,n.fontSize=nt.noteFontSize,n.fontWeight=nt.noteFontWeight,n.anchor=nt.noteAlign,n.textMargin=nt.noteMargin,n.valign="center";const c=(0,o.Wi)(n.text)?await A(s,n):v(s,n),l=Math.round(c.map((t=>(t._groups||t)[0][0].getBBox().height)).reduce(((t,e)=>t+e)));i.attr("height",l+2*nt.noteMargin),e.height+=l+2*nt.noteMargin,ot.bumpVerticalPos(l+2*nt.noteMargin),e.stopy=e.starty+l+2*nt.noteMargin,e.stopx=e.startx+a.width,ot.insert(e.startx,e.starty,e.stopx,e.stopy),ot.models.addNote(e)}),"drawNote"),lt=(0,c.K2)((t=>({fontFamily:t.messageFontFamily,fontSize:t.messageFontSize,fontWeight:t.messageFontWeight})),"messageFont"),ht=(0,c.K2)((t=>({fontFamily:t.noteFontFamily,fontSize:t.noteFontSize,fontWeight:t.noteFontWeight})),"noteFont"),dt=(0,c.K2)((t=>({fontFamily:t.actorFontFamily,fontSize:t.actorFontSize,fontWeight:t.actorFontWeight})),"actorFont");async function pt(t,e){ot.bumpVerticalPos(10);const{startx:a,stopx:r,message:s}=e,i=o.Y2.splitBreaks(s).length,c=(0,o.Wi)(s),l=c?await(0,o.Dl)(s,(0,o.D7)()):n._K.calculateTextDimensions(s,lt(nt));if(!c){const t=l.height/i;e.height+=t,ot.bumpVerticalPos(t)}let h,d=l.height-10;const p=l.width;if(a===r){h=ot.getVerticalPos()+d,nt.rightAngles||(d+=nt.boxMargin,h=ot.getVerticalPos()+d),d+=30;const t=o.Y2.getMax(p/2,nt.width/2);ot.insert(a-t,ot.getVerticalPos()-10+d,r+t,ot.getVerticalPos()+30+d)}else d+=nt.boxMargin,h=ot.getVerticalPos()+d,ot.insert(a,h-10,r,h);return ot.bumpVerticalPos(d),e.height+=d,e.stopy=e.starty+e.height,ot.insert(e.fromBounds,e.starty,e.toBounds,e.stopy),h}(0,c.K2)(pt,"boundMessage");var gt=(0,c.K2)((async function(t,e,a,s){const{startx:i,stopx:c,starty:l,message:h,type:d,sequenceIndex:p,sequenceVisible:g}=e,u=n._K.calculateTextDimensions(h,lt(nt)),x=(0,r.HT)();x.x=i,x.y=l+10,x.width=c-i,x.class="messageText",x.dy="1em",x.text=h,x.fontFamily=nt.messageFontFamily,x.fontSize=nt.messageFontSize,x.fontWeight=nt.messageFontWeight,x.anchor=nt.messageAlign,x.valign="center",x.textMargin=nt.wrapPadding,x.tspan=!1,(0,o.Wi)(x.text)?await A(t,x,{startx:i,stopx:c,starty:a}):v(t,x);const y=u.width;let m;i===c?m=nt.rightAngles?t.append("path").attr("d",`M ${i},${a} H ${i+o.Y2.getMax(nt.width/2,y/2)} V ${a+25} H ${i}`):t.append("path").attr("d","M "+i+","+a+" C "+(i+60)+","+(a-10)+" "+(i+60)+","+(a+30)+" "+i+","+(a+20)):(m=t.append("line"),m.attr("x1",i),m.attr("y1",a),m.attr("x2",c),m.attr("y2",a)),d===s.db.LINETYPE.DOTTED||d===s.db.LINETYPE.DOTTED_CROSS||d===s.db.LINETYPE.DOTTED_POINT||d===s.db.LINETYPE.DOTTED_OPEN||d===s.db.LINETYPE.BIDIRECTIONAL_DOTTED?(m.style("stroke-dasharray","3, 3"),m.attr("class","messageLine1")):m.attr("class","messageLine0");let b="";if(nt.arrowMarkerAbsolute&&(b=(0,o.ID)(!0)),m.attr("stroke-width",2),m.attr("stroke","none"),m.style("fill","none"),d!==s.db.LINETYPE.SOLID&&d!==s.db.LINETYPE.DOTTED||m.attr("marker-end","url("+b+"#arrowhead)"),d!==s.db.LINETYPE.BIDIRECTIONAL_SOLID&&d!==s.db.LINETYPE.BIDIRECTIONAL_DOTTED||(m.attr("marker-start","url("+b+"#arrowhead)"),m.attr("marker-end","url("+b+"#arrowhead)")),d!==s.db.LINETYPE.SOLID_POINT&&d!==s.db.LINETYPE.DOTTED_POINT||m.attr("marker-end","url("+b+"#filled-head)"),d!==s.db.LINETYPE.SOLID_CROSS&&d!==s.db.LINETYPE.DOTTED_CROSS||m.attr("marker-end","url("+b+"#crosshead)"),g||nt.showSequenceNumbers){if(d===s.db.LINETYPE.BIDIRECTIONAL_SOLID||d===s.db.LINETYPE.BIDIRECTIONAL_DOTTED){const t=6;is&&(s=c.height),c.width+a.x>i&&(i=c.width+a.x)}return{maxHeight:s,maxWidth:i}}),"drawActorsPopup"),mt=(0,c.K2)((function(t){(0,o.hH)(nt,t),t.fontFamily&&(nt.actorFontFamily=nt.noteFontFamily=nt.messageFontFamily=t.fontFamily),t.fontSize&&(nt.actorFontSize=nt.noteFontSize=nt.messageFontSize=t.fontSize),t.fontWeight&&(nt.actorFontWeight=nt.noteFontWeight=nt.messageFontWeight=t.fontWeight)}),"setConf"),bt=(0,c.K2)((function(t){return ot.activations.filter((function(e){return e.actor===t}))}),"actorActivations"),Tt=(0,c.K2)((function(t,e){const a=e.get(t),r=bt(t);return[r.reduce((function(t,e){return o.Y2.getMin(t,e.startx)}),a.x+a.width/2-1),r.reduce((function(t,e){return o.Y2.getMax(t,e.stopx)}),a.x+a.width/2+1)]}),"activationBounds");function ft(t,e,a,r,s){ot.bumpVerticalPos(a);let i=r;if(e.id&&e.message&&t[e.id]){const a=t[e.id].width,s=lt(nt);e.message=n._K.wrapLabel(`[${e.message}]`,a-2*nt.wrapPadding,s),e.width=a,e.wrap=!0;const l=n._K.calculateTextDimensions(e.message,s),h=o.Y2.getMax(l.height,nt.labelBoxHeight);i=r+h,c.Rm.debug(`${h} - ${e.message}`)}s(e),ot.bumpVerticalPos(i)}function Et(t,e,a,r,s,i,n){function o(a,r){a.x{t.add(e.from),t.add(e.to)})),m=m.filter((e=>t.has(e)))}ut(p,g,u,m,0,b,!1);const I=await Nt(b,g,w,r);function L(t,e){const a=ot.endActivation(t);a.starty+18>e&&(a.starty=e-6,e+=12),it.drawActivation(p,a,e,nt,bt(t.from).length),ot.insert(a.startx,e-10,a.stopx,e)}it.insertArrowHead(p),it.insertArrowCrossHead(p),it.insertArrowFilledHead(p),it.insertSequenceNumber(p),(0,c.K2)(L,"activeEnd");let _=1,P=1;const k=[],N=[];let A=0;for(const o of b){let t,e,a;switch(o.type){case r.db.LINETYPE.NOTE:ot.resetVerticalPos(),e=o.noteModel,await ct(p,e);break;case r.db.LINETYPE.ACTIVE_START:ot.newActivation(o,p,g);break;case r.db.LINETYPE.ACTIVE_END:L(o,ot.getVerticalPos());break;case r.db.LINETYPE.LOOP_START:ft(I,o,nt.boxMargin,nt.boxMargin+nt.boxTextMargin,(t=>ot.newLoop(t)));break;case r.db.LINETYPE.LOOP_END:t=ot.endLoop(),await it.drawLoop(p,t,"loop",nt),ot.bumpVerticalPos(t.stopy-ot.getVerticalPos()),ot.models.addLoop(t);break;case r.db.LINETYPE.RECT_START:ft(I,o,nt.boxMargin,nt.boxMargin,(t=>ot.newLoop(void 0,t.message)));break;case r.db.LINETYPE.RECT_END:t=ot.endLoop(),N.push(t),ot.models.addLoop(t),ot.bumpVerticalPos(t.stopy-ot.getVerticalPos());break;case r.db.LINETYPE.OPT_START:ft(I,o,nt.boxMargin,nt.boxMargin+nt.boxTextMargin,(t=>ot.newLoop(t)));break;case r.db.LINETYPE.OPT_END:t=ot.endLoop(),await it.drawLoop(p,t,"opt",nt),ot.bumpVerticalPos(t.stopy-ot.getVerticalPos()),ot.models.addLoop(t);break;case r.db.LINETYPE.ALT_START:ft(I,o,nt.boxMargin,nt.boxMargin+nt.boxTextMargin,(t=>ot.newLoop(t)));break;case r.db.LINETYPE.ALT_ELSE:ft(I,o,nt.boxMargin+nt.boxTextMargin,nt.boxMargin,(t=>ot.addSectionToLoop(t)));break;case r.db.LINETYPE.ALT_END:t=ot.endLoop(),await it.drawLoop(p,t,"alt",nt),ot.bumpVerticalPos(t.stopy-ot.getVerticalPos()),ot.models.addLoop(t);break;case r.db.LINETYPE.PAR_START:case r.db.LINETYPE.PAR_OVER_START:ft(I,o,nt.boxMargin,nt.boxMargin+nt.boxTextMargin,(t=>ot.newLoop(t))),ot.saveVerticalPos();break;case r.db.LINETYPE.PAR_AND:ft(I,o,nt.boxMargin+nt.boxTextMargin,nt.boxMargin,(t=>ot.addSectionToLoop(t)));break;case r.db.LINETYPE.PAR_END:t=ot.endLoop(),await it.drawLoop(p,t,"par",nt),ot.bumpVerticalPos(t.stopy-ot.getVerticalPos()),ot.models.addLoop(t);break;case r.db.LINETYPE.AUTONUMBER:_=o.message.start||_,P=o.message.step||P,o.message.visible?r.db.enableSequenceNumbers():r.db.disableSequenceNumbers();break;case r.db.LINETYPE.CRITICAL_START:ft(I,o,nt.boxMargin,nt.boxMargin+nt.boxTextMargin,(t=>ot.newLoop(t)));break;case r.db.LINETYPE.CRITICAL_OPTION:ft(I,o,nt.boxMargin+nt.boxTextMargin,nt.boxMargin,(t=>ot.addSectionToLoop(t)));break;case r.db.LINETYPE.CRITICAL_END:t=ot.endLoop(),await it.drawLoop(p,t,"critical",nt),ot.bumpVerticalPos(t.stopy-ot.getVerticalPos()),ot.models.addLoop(t);break;case r.db.LINETYPE.BREAK_START:ft(I,o,nt.boxMargin,nt.boxMargin+nt.boxTextMargin,(t=>ot.newLoop(t)));break;case r.db.LINETYPE.BREAK_END:t=ot.endLoop(),await it.drawLoop(p,t,"break",nt),ot.bumpVerticalPos(t.stopy-ot.getVerticalPos()),ot.models.addLoop(t);break;default:try{a=o.msgModel,a.starty=ot.getVerticalPos(),a.sequenceIndex=_,a.sequenceVisible=r.db.showSequenceNumbers();const t=await pt(0,a);Et(o,a,t,A,g,u,x),k.push({messageModel:a,lineStartY:t}),ot.models.addMessage(a)}catch(Y){c.Rm.error("error while drawing message",Y)}}[r.db.LINETYPE.SOLID_OPEN,r.db.LINETYPE.DOTTED_OPEN,r.db.LINETYPE.SOLID,r.db.LINETYPE.DOTTED,r.db.LINETYPE.SOLID_CROSS,r.db.LINETYPE.DOTTED_CROSS,r.db.LINETYPE.SOLID_POINT,r.db.LINETYPE.DOTTED_POINT,r.db.LINETYPE.BIDIRECTIONAL_SOLID,r.db.LINETYPE.BIDIRECTIONAL_DOTTED].includes(o.type)&&(_+=P),A++}c.Rm.debug("createdActors",u),c.Rm.debug("destroyedActors",x),await xt(p,g,m,!1);for(const o of k)await gt(p,o.messageModel,o.lineStartY,r);nt.mirrorActors&&await xt(p,g,m,!0),N.forEach((t=>it.drawBackgroundRect(p,t))),D(p,g,m,nt);for(const o of ot.models.boxes){o.height=ot.getVerticalPos()-o.y,ot.insert(o.x,o.y,o.x+o.width,o.height);const t=2*nt.boxMargin;o.startx=o.x-t,o.starty=o.y-.25*t,o.stopx=o.startx+o.width+2*t,o.stopy=o.starty+o.height+.75*t,o.stroke="rgb(0,0,0, 0.5)",it.drawBox(p,o,nt)}f&&ot.bumpVerticalPos(nt.boxMargin);const v=yt(p,g,m,d),{bounds:M}=ot.getBounds();void 0===M.startx&&(M.startx=0),void 0===M.starty&&(M.starty=0),void 0===M.stopx&&(M.stopx=0),void 0===M.stopy&&(M.stopy=0);let O=M.stopy-M.starty;O{const a=lt(nt);let r=e.actorKeys.reduce(((e,a)=>e+(t.get(a).width+(t.get(a).margin||0))),0);r+=8*nt.boxMargin,r-=2*nt.boxTextMargin,e.wrap&&(e.name=n._K.wrapLabel(e.name,r-2*nt.wrapPadding,a));const i=n._K.calculateTextDimensions(e.name,a);s=o.Y2.getMax(i.height,s);const c=o.Y2.getMax(r,i.width+2*nt.wrapPadding);if(e.margin=nt.boxTextMargin,rt.textMaxHeight=s)),o.Y2.getMax(r,nt.height)}(0,c.K2)(_t,"calculateActorMargins");var Pt=(0,c.K2)((async function(t,e,a){const r=e.get(t.from),s=e.get(t.to),i=r.x,l=s.x,h=t.wrap&&t.message;let d=(0,o.Wi)(t.message)?await(0,o.Dl)(t.message,(0,o.D7)()):n._K.calculateTextDimensions(h?n._K.wrapLabel(t.message,nt.width,ht(nt)):t.message,ht(nt));const p={width:h?nt.width:o.Y2.getMax(nt.width,d.width+2*nt.noteMargin),height:0,startx:r.x,stopx:0,starty:0,stopy:0,message:t.message};return t.placement===a.db.PLACEMENT.RIGHTOF?(p.width=h?o.Y2.getMax(nt.width,d.width):o.Y2.getMax(r.width/2+s.width/2,d.width+2*nt.noteMargin),p.startx=i+(r.width+nt.actorMargin)/2):t.placement===a.db.PLACEMENT.LEFTOF?(p.width=h?o.Y2.getMax(nt.width,d.width+2*nt.noteMargin):o.Y2.getMax(r.width/2+s.width/2,d.width+2*nt.noteMargin),p.startx=i-p.width+(r.width-nt.actorMargin)/2):t.to===t.from?(d=n._K.calculateTextDimensions(h?n._K.wrapLabel(t.message,o.Y2.getMax(nt.width,r.width),ht(nt)):t.message,ht(nt)),p.width=h?o.Y2.getMax(nt.width,r.width):o.Y2.getMax(r.width,nt.width,d.width+2*nt.noteMargin),p.startx=i+(r.width-p.width)/2):(p.width=Math.abs(i+r.width/2-(l+s.width/2))+nt.actorMargin,p.startx=i2,u=(0,c.K2)((t=>h?-t:t),"adjustValue");t.from===t.to?p=d:(t.activate&&!g&&(p+=u(nt.activationWidth/2-1)),[a.db.LINETYPE.SOLID_OPEN,a.db.LINETYPE.DOTTED_OPEN].includes(t.type)||(p+=u(3)),[a.db.LINETYPE.BIDIRECTIONAL_SOLID,a.db.LINETYPE.BIDIRECTIONAL_DOTTED].includes(t.type)&&(d-=u(3)));const x=[r,s,i,l],y=Math.abs(d-p);t.wrap&&t.message&&(t.message=n._K.wrapLabel(t.message,o.Y2.getMax(y+2*nt.wrapPadding,nt.width),lt(nt)));const m=n._K.calculateTextDimensions(t.message,lt(nt));return{width:o.Y2.getMax(t.wrap?0:m.width+2*nt.wrapPadding,y+2*nt.wrapPadding,nt.width),height:0,startx:d,stopx:p,starty:0,stopy:0,message:t.message,type:t.type,wrap:t.wrap,fromBounds:Math.min.apply(null,x),toBounds:Math.max.apply(null,x)}}),"buildMessageModel"),Nt=(0,c.K2)((async function(t,e,a,r){const s={},i=[];let n,l,h;for(const c of t){switch(c.type){case r.db.LINETYPE.LOOP_START:case r.db.LINETYPE.ALT_START:case r.db.LINETYPE.OPT_START:case r.db.LINETYPE.PAR_START:case r.db.LINETYPE.PAR_OVER_START:case r.db.LINETYPE.CRITICAL_START:case r.db.LINETYPE.BREAK_START:i.push({id:c.id,msg:c.message,from:Number.MAX_SAFE_INTEGER,to:Number.MIN_SAFE_INTEGER,width:0});break;case r.db.LINETYPE.ALT_ELSE:case r.db.LINETYPE.PAR_AND:case r.db.LINETYPE.CRITICAL_OPTION:c.message&&(n=i.pop(),s[n.id]=n,s[c.id]=n,i.push(n));break;case r.db.LINETYPE.LOOP_END:case r.db.LINETYPE.ALT_END:case r.db.LINETYPE.OPT_END:case r.db.LINETYPE.PAR_END:case r.db.LINETYPE.CRITICAL_END:case r.db.LINETYPE.BREAK_END:n=i.pop(),s[n.id]=n;break;case r.db.LINETYPE.ACTIVE_START:{const t=e.get(c.from?c.from:c.to.actor),a=bt(c.from?c.from:c.to.actor).length,r=t.x+t.width/2+(a-1)*nt.activationWidth/2,s={startx:r,stopx:r+nt.activationWidth,actor:c.from,enabled:!0};ot.activations.push(s)}break;case r.db.LINETYPE.ACTIVE_END:{const t=ot.activations.map((t=>t.actor)).lastIndexOf(c.from);ot.activations.splice(t,1).splice(0,1)}}void 0!==c.placement?(l=await Pt(c,e,r),c.noteModel=l,i.forEach((t=>{n=t,n.from=o.Y2.getMin(n.from,l.startx),n.to=o.Y2.getMax(n.to,l.startx+l.width),n.width=o.Y2.getMax(n.width,Math.abs(n.from-n.to))-nt.labelBoxWidth}))):(h=kt(c,e,r),c.msgModel=h,h.startx&&h.stopx&&i.length>0&&i.forEach((t=>{if(n=t,h.startx===h.stopx){const t=e.get(c.from),a=e.get(c.to);n.from=o.Y2.getMin(t.x-h.width/2,t.x-t.width/2,n.from),n.to=o.Y2.getMax(a.x+h.width/2,a.x+t.width/2,n.to),n.width=o.Y2.getMax(n.width,Math.abs(n.to-n.from))-nt.labelBoxWidth}else n.from=o.Y2.getMin(h.startx,n.from),n.to=o.Y2.getMax(h.stopx,n.to),n.width=o.Y2.getMax(n.width,h.width)-nt.labelBoxWidth})))}return ot.activations=[],c.Rm.debug("Loop type widths:",s),s}),"calculateLoopBounds"),At={parser:p,get db(){return new f},renderer:{bounds:ot,drawActors:xt,drawActorsPopup:yt,setConf:mt,draw:wt},styles:E,init:(0,c.K2)((t=>{t.sequence||(t.sequence={}),t.wrap&&(t.sequence.wrap=t.wrap,(0,o.XV)({sequence:{wrap:t.wrap}}))}),"init")}}}]); \ No newline at end of file diff --git a/assets/js/75eeffd2.494a46fd.js b/assets/js/75eeffd2.494a46fd.js new file mode 100644 index 00000000..f8247d0a --- /dev/null +++ b/assets/js/75eeffd2.494a46fd.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5303],{73500:(e,i,n)=>{n.r(i),n.d(i,{assets:()=>a,contentTitle:()=>c,default:()=>u,frontMatter:()=>s,metadata:()=>r,toc:()=>l});const r=JSON.parse('{"id":"API-Reference/features/QuickViewManager","title":"QuickViewManager","description":"Import :","source":"@site/api/API-Reference/features/QuickViewManager.md","sourceDirName":"API-Reference/features","slug":"/API-Reference/features/QuickViewManager","permalink":"/api/API-Reference/features/QuickViewManager","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"PriorityBasedRegistration","permalink":"/api/API-Reference/features/PriorityBasedRegistration"},"next":{"title":"SelectionViewManager","permalink":"/api/API-Reference/features/SelectionViewManager"}}');var o=n(74848),t=n(28453);const s={},c=void 0,a={},l=[{value:"Import :",id:"import-",level:3},{value:"features/QuickViewManager",id:"featuresquickviewmanager",level:2},{value:"See Related: SelectionViewManager",id:"see-related-selectionviewmanager",level:3},{value:"Usage",id:"usage",level:2},{value:"How it works",id:"how-it-works",level:3},{value:"API",id:"api",level:2},{value:"registerQuickViewProvider",id:"registerquickviewprovider",level:3},{value:"removeQuickViewProvider",id:"removequickviewprovider",level:3},{value:"getQuickView",id:"getquickview",level:3},{value:"parameters",id:"parameters",level:4},{value:"return types",id:"return-types",level:4},{value:"Modifying the QuickView content after resolving getQuickView promise",id:"modifying-the-quickview-content-after-resolving-getquickview-promise",level:4},{value:"Considerations",id:"considerations",level:4},{value:"filterQuickView",id:"filterquickview",level:3},{value:"parameter",id:"parameter",level:4},{value:"return",id:"return",level:4},{value:"features/QuickViewManager.isQuickViewShown() \u21d2 boolean",id:"featuresquickviewmanagerisquickviewshown--boolean",level:3},{value:"features/QuickViewManager.lockQuickView() : function",id:"featuresquickviewmanagerlockquickview--function",level:3},{value:"features/QuickViewManager.unlockQuickView() : function",id:"featuresquickviewmanagerunlockquickview--function",level:3}];function d(e){const i={a:"a",code:"code",h2:"h2",h3:"h3",h4:"h4",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,t.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(i.h3,{id:"import-",children:"Import :"}),"\n",(0,o.jsx)(i.pre,{children:(0,o.jsx)(i.code,{className:"language-js",children:'const QuickViewManager = brackets.getModule("features/QuickViewManager")\n'})}),"\n",(0,o.jsx)("a",{name:"module_features/QuickViewManager"}),"\n",(0,o.jsx)(i.h2,{id:"featuresquickviewmanager",children:"features/QuickViewManager"}),"\n",(0,o.jsxs)(i.p,{children:["QuickViewManager provides support to add interactive preview popups on hover over the main editors.\nExtensions can register to provide previews with ",(0,o.jsx)(i.code,{children:"QuickViewManager.registerQuickViewProvider"})," API."]}),"\n",(0,o.jsx)("img",{src:"https://docs-images.phcode.dev/phcode-sdk/quick-view-image.png",alt:"Phoenix code quick view"}),"\n",(0,o.jsx)("img",{src:"https://docs-images.phcode.dev/phcode-sdk/quick-view-youtube.png",alt:"Phoenix code quick view Youtube"}),"\n",(0,o.jsx)(i.h3,{id:"see-related-selectionviewmanager",children:"See Related: SelectionViewManager"}),"\n",(0,o.jsxs)(i.p,{children:[(0,o.jsx)(i.a,{href:"https://github.com/phcode-dev/phoenix/wiki/SelectionViewManager-API",children:"features/SelectionViewManager"})," is similar to\nQuickViewManager API."]}),"\n",(0,o.jsxs)(i.ul,{children:["\n",(0,o.jsx)(i.li,{children:"SelectionViews popup only once user selects a text by mouse or hover over a region with text selection."}),"\n",(0,o.jsx)(i.li,{children:"Quickviews popup on mouse hover."}),"\n"]}),"\n",(0,o.jsx)("img",{src:"https://user-images.githubusercontent.com/5336369/186434397-3db55789-6077-4d02-b4e2-78ef3f663399.png",alt:"quick view pops on mouse hover"}),"\n",(0,o.jsx)(i.h2,{id:"usage",children:"Usage"}),"\n",(0,o.jsx)(i.p,{children:'Lets build a "hello world" extension that displays "hello world" on hover over a text in the editor.\nIn your extension file, add the following code:'}),"\n",(0,o.jsx)(i.p,{children:(0,o.jsx)(i.strong,{children:"Example"})}),"\n",(0,o.jsx)(i.pre,{children:(0,o.jsx)(i.code,{className:"language-js",children:'const QuickViewManager = brackets.getModule("features/QuickViewManager");\n// replace `all` with language ID(Eg. javascript) if you want to restrict the preview to js files only.\nQuickViewManager.registerQuickViewProvider(exports, ["all"]);\n\n// provide a helpful name for the QuickView. This will be useful if you implement `filterQuickView` function or\n// have to debug the quick view.\nexports.QUICK_VIEW_NAME = "extension.someName";\n// now implement the getQuickView function that will be invoked when ever user hovers over a text in the editor.\nexports.getQuickView = function(editor, pos, token, line) {\n return new Promise((resolve, reject)=>{\n resolve({\n start: {line: pos.line, ch:token.start},\n end: {line: pos.line, ch:token.end},\n content: "
    hello world
    "\n });\n });\n };\n// optional filter quick view function to handle multiple quick views\nexports.filterQuickView = function(popovers){\n // popovers will be an array of all popovers rendered by providers\n return popovers; // dont filter show everything in this case\n}\n'})}),"\n",(0,o.jsx)(i.h3,{id:"how-it-works",children:"How it works"}),"\n",(0,o.jsxs)(i.p,{children:["When QuickViewManager determines that the user intents to see QuickView on hover, ",(0,o.jsx)(i.code,{children:"getQuickView"})," function on all\nregistered QuickView providers are invoked to get the quick view popup. ",(0,o.jsx)(i.code,{children:"getQuickView"})," should return a promise\nthat resolves to the popup contents if the provider has a quick view. Else just reject the promise. If multiple\nproviders returns QuickView, all of them are displayed stacked one by one. You can alter this behavior by\nproviding a ",(0,o.jsx)(i.code,{children:"filterQuickView"})," function in the provider where you can modify what previews will be shown.\nSee detailed API docs for implementation details below:"]}),"\n",(0,o.jsx)(i.h2,{id:"api",children:"API"}),"\n",(0,o.jsx)(i.h3,{id:"registerquickviewprovider",children:"registerQuickViewProvider"}),"\n",(0,o.jsxs)(i.p,{children:["Register a QuickView provider with this api.\n",(0,o.jsx)(i.strong,{children:"Example"})]}),"\n",(0,o.jsx)(i.pre,{children:(0,o.jsx)(i.code,{className:"language-js",children:"// syntax\nQuickViewManager.registerQuickViewProvider(provider, supportedLanguages);\n"})}),"\n",(0,o.jsx)(i.p,{children:"The API requires two parameters:"}),"\n",(0,o.jsxs)(i.ol,{children:["\n",(0,o.jsxs)(i.li,{children:[(0,o.jsx)(i.code,{children:"provider"}),": must implement a ",(0,o.jsx)(i.code,{children:"getQuickView"})," function which will be invoked to get the preview. See API doc below."]}),"\n",(0,o.jsxs)(i.li,{children:[(0,o.jsx)(i.code,{children:"supportedLanguages"}),": An array of languages that the QuickView supports. If ",(0,o.jsx)(i.code,{children:'["all"]'})," is supplied, then the\nQuickView will be invoked for all languages. Restrict to specific languages: Eg: ",(0,o.jsx)(i.code,{children:'["javascript", "html", "php"]'}),"\n",(0,o.jsx)(i.strong,{children:"Example"})]}),"\n"]}),"\n",(0,o.jsx)(i.pre,{children:(0,o.jsx)(i.code,{className:"language-js",children:'// to register a provider that will be invoked for all languages. where provider is any object that implements\n// a getQuickView function\nQuickViewManager.registerQuickViewProvider(provider, ["all"]);\n\n// to register a provider that will be invoked for specific languages\nQuickViewManager.registerQuickViewProvider(provider, ["javascript", "html", "php"]);\n'})}),"\n",(0,o.jsx)(i.h3,{id:"removequickviewprovider",children:"removeQuickViewProvider"}),"\n",(0,o.jsxs)(i.p,{children:["Removes a registered QuickView provider. The API takes the same arguments as ",(0,o.jsx)(i.code,{children:"registerQuickViewProvider"}),".\n",(0,o.jsx)(i.strong,{children:"Example"})]}),"\n",(0,o.jsx)(i.pre,{children:(0,o.jsx)(i.code,{className:"language-js",children:'// syntax\nQuickViewManager.removeQuickViewProvider(provider, supportedLanguages);\n// Example\nQuickViewManager.removeQuickViewProvider(provider, ["javascript", "html"]);\n'})}),"\n",(0,o.jsx)(i.h3,{id:"getquickview",children:"getQuickView"}),"\n",(0,o.jsxs)(i.p,{children:["Each provider must implement the ",(0,o.jsx)(i.code,{children:"getQuickView"})," function that returns a promise. The promise either resolves with\nthe quick view details object(described below) or rejects if there is no preview for the position.\n",(0,o.jsx)(i.strong,{children:"Example"})]}),"\n",(0,o.jsx)(i.pre,{children:(0,o.jsx)(i.code,{className:"language-js",children:'// function signature\nprovider.getQuickView = function(editor, pos, token, line) {\n return new Promise((resolve, reject)=>{\n resolve({\n start: {line: pos.line, ch:token.start},\n end: {line: pos.line, ch:token.end},\n content: "
    hello world
    ",\n editsDoc: false // this is optional if the quick view edits the current doc\n });\n });\n };\n'})}),"\n",(0,o.jsx)(i.h4,{id:"parameters",children:"parameters"}),"\n",(0,o.jsx)(i.p,{children:"The function will be called with the following arguments:"}),"\n",(0,o.jsxs)(i.ol,{children:["\n",(0,o.jsxs)(i.li,{children:[(0,o.jsx)(i.code,{children:"editor"})," - The editor over which the user hovers the mouse cursor."]}),"\n",(0,o.jsxs)(i.li,{children:[(0,o.jsx)(i.code,{children:"pos"})," - the cursor position over which the user hovers."]}),"\n",(0,o.jsxs)(i.li,{children:[(0,o.jsx)(i.code,{children:"token"})," - hovered token details"]}),"\n",(0,o.jsxs)(i.li,{children:[(0,o.jsx)(i.code,{children:"line"})," - the full line text as string."]}),"\n"]}),"\n",(0,o.jsx)(i.h4,{id:"return-types",children:"return types"}),"\n",(0,o.jsx)(i.p,{children:"The promise returned should resolve to an object with the following contents:"}),"\n",(0,o.jsxs)(i.ol,{children:["\n",(0,o.jsxs)(i.li,{children:[(0,o.jsx)(i.code,{children:"start"})," : Indicates the start cursor position from which the quick view is valid."]}),"\n",(0,o.jsxs)(i.li,{children:[(0,o.jsx)(i.code,{children:"end"})," : Indicates the end cursor position to which the quick view is valid. These are generally used to highlight\nthe hovered section of the text in the editor."]}),"\n",(0,o.jsxs)(i.li,{children:[(0,o.jsx)(i.code,{children:"content"}),": Either ",(0,o.jsx)(i.code,{children:"HTML"})," as text, a ",(0,o.jsx)(i.code,{children:"DOM Node"})," or a ",(0,o.jsx)(i.code,{children:"Jquery Element"}),"."]}),"\n",(0,o.jsxs)(i.li,{children:[(0,o.jsx)(i.code,{children:"editsDoc"}),": Optional, set to true if the quick view can edit the active document."]}),"\n"]}),"\n",(0,o.jsxs)(i.h4,{id:"modifying-the-quickview-content-after-resolving-getquickview-promise",children:["Modifying the QuickView content after resolving ",(0,o.jsx)(i.code,{children:"getQuickView"})," promise"]}),"\n",(0,o.jsxs)(i.p,{children:["Some advanced/interactive extensions may need to do dom operations on the quick view content.\nIn such cases, it is advised to return a domNode/Jquery element as content in ",(0,o.jsx)(i.code,{children:"getQuickView"}),". Event Handlers\nor further dom manipulations can be done on the returned content element.\nThe Quick view may be dismissed at any time, so be sure to check if the DOM Node is visible in the editor before\nperforming any operations."]}),"\n",(0,o.jsx)(i.h4,{id:"considerations",children:"Considerations"}),"\n",(0,o.jsxs)(i.ol,{children:["\n",(0,o.jsx)(i.li,{children:"QuickView won't be displayed till all provider promises are settled. To improve performance, if your QuickView\nhandler takes time to resolve the QuickView, resolve a dummy quick once you are sure that a QuickView needs\nto be shown to the user. The div contents can be later updated as and when more details are available."}),"\n",(0,o.jsx)(i.li,{children:"Note that the QuickView could be hidden/removed any time by the QuickViewManager."}),"\n",(0,o.jsxs)(i.li,{children:["If multiple providers returns a valid popup, all of them are displayed except if the ",(0,o.jsx)(i.code,{children:"filterQuickView"})," modifies\nthe quick view render list. Note that ",(0,o.jsx)(i.code,{children:"filterQuickView"})," is called only for those providers that\nprovided a quick view."]}),"\n"]}),"\n",(0,o.jsx)(i.h3,{id:"filterquickview",children:"filterQuickView"}),"\n",(0,o.jsxs)(i.p,{children:["Each provider can optionally implement the ",(0,o.jsx)(i.code,{children:"filterQuickView"})," function to control what among the available\nquick views should be rendered if multiple providers responded with a QuickView. The function will be called\nonce all ",(0,o.jsx)(i.code,{children:"getQuickView"})," providers provided a valid preview object.\n",(0,o.jsx)(i.strong,{children:"Example"})]}),"\n",(0,o.jsx)(i.pre,{children:(0,o.jsx)(i.code,{className:"language-js",children:'// function signature\nprovider.filterQuickView = function(popovers) {\n for(let popover of popovers){\n // here if we see that a quick view with name `exclusiveQuickView` is present, then we only show that\n // QuickView. popover.providerInfo object holds details of what provider provided the quick view.\n if(popover.providerInfo.provider.QUICK_VIEW_NAME === "exclusiveQuickView"){\n return [popover]\n }\n }\n // if nothing is returned, then the `popovers` param will be used to show popover\n };\n'})}),"\n",(0,o.jsx)(i.h4,{id:"parameter",children:"parameter"}),"\n",(0,o.jsxs)(i.p,{children:["The function will be called with the ",(0,o.jsx)(i.code,{children:"popovers"})," parameter which is an array of popover objects that was returned\nby ",(0,o.jsx)(i.code,{children:"getQuickView"})," function of all succeeded providers. Details of each provider that created a popover\nwill be present in ",(0,o.jsx)(i.code,{children:"popovers[i].providerInfo"})," object."]}),"\n",(0,o.jsx)(i.h4,{id:"return",children:"return"}),"\n",(0,o.jsx)(i.p,{children:"An array of popovers that needs to be rendered, or nothing(to render the original popover parameter as is)."}),"\n",(0,o.jsxs)(i.ul,{children:["\n",(0,o.jsxs)(i.li,{children:[(0,o.jsx)(i.a,{href:"#module_features/QuickViewManager",children:"features/QuickViewManager"}),"\n",(0,o.jsxs)(i.ul,{children:["\n",(0,o.jsxs)(i.li,{children:[(0,o.jsx)(i.a,{href:"#module_features/QuickViewManager..isQuickViewShown",children:".isQuickViewShown()"})," \u21d2 ",(0,o.jsx)("code",{children:"boolean"})]}),"\n",(0,o.jsxs)(i.li,{children:[(0,o.jsx)(i.a,{href:"#module_features/QuickViewManager..lockQuickView",children:".lockQuickView()"})," : ",(0,o.jsx)("code",{children:"function"})]}),"\n",(0,o.jsxs)(i.li,{children:[(0,o.jsx)(i.a,{href:"#module_features/QuickViewManager..unlockQuickView",children:".unlockQuickView()"})," : ",(0,o.jsx)("code",{children:"function"})]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,o.jsx)("a",{name:"module_features/QuickViewManager..isQuickViewShown"}),"\n",(0,o.jsxs)(i.h3,{id:"featuresquickviewmanagerisquickviewshown--boolean",children:["features/QuickViewManager.isQuickViewShown() \u21d2 ",(0,o.jsx)("code",{children:"boolean"})]}),"\n",(0,o.jsx)(i.p,{children:"If quickview is displayed and visible on screen"}),"\n",(0,o.jsxs)(i.p,{children:[(0,o.jsx)(i.strong,{children:"Kind"}),": inner method of ",(0,o.jsx)(i.a,{href:"#module_features/QuickViewManager",children:(0,o.jsx)("code",{children:"features/QuickViewManager"})})]}),"\n",(0,o.jsx)("a",{name:"module_features/QuickViewManager..lockQuickView"}),"\n",(0,o.jsxs)(i.h3,{id:"featuresquickviewmanagerlockquickview--function",children:["features/QuickViewManager.lockQuickView() : ",(0,o.jsx)("code",{children:"function"})]}),"\n",(0,o.jsxs)(i.p,{children:["locks the current QuickView if shown to be permanently displayed on screen till the ",(0,o.jsx)(i.code,{children:"unlockQuickView"})," function\nis called or document changes."]}),"\n",(0,o.jsxs)(i.p,{children:[(0,o.jsx)(i.strong,{children:"Kind"}),": inner method of ",(0,o.jsx)(i.a,{href:"#module_features/QuickViewManager",children:(0,o.jsx)("code",{children:"features/QuickViewManager"})})]}),"\n",(0,o.jsx)("a",{name:"module_features/QuickViewManager..unlockQuickView"}),"\n",(0,o.jsxs)(i.h3,{id:"featuresquickviewmanagerunlockquickview--function",children:["features/QuickViewManager.unlockQuickView() : ",(0,o.jsx)("code",{children:"function"})]}),"\n",(0,o.jsxs)(i.p,{children:["unlocks the current QuickView locked by ",(0,o.jsx)(i.code,{children:"lockQuickView"})," fucntion."]}),"\n",(0,o.jsxs)(i.p,{children:[(0,o.jsx)(i.strong,{children:"Kind"}),": inner method of ",(0,o.jsx)(i.a,{href:"#module_features/QuickViewManager",children:(0,o.jsx)("code",{children:"features/QuickViewManager"})})]})]})}function u(e={}){const{wrapper:i}={...(0,t.R)(),...e.components};return i?(0,o.jsx)(i,{...e,children:(0,o.jsx)(d,{...e})}):d(e)}},28453:(e,i,n)=>{n.d(i,{R:()=>s,x:()=>c});var r=n(96540);const o={},t=r.createContext(o);function s(e){const i=r.useContext(t);return r.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function c(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:s(e.components),r.createElement(t.Provider,{value:i},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/76fa9b73.6fe2cf12.js b/assets/js/76fa9b73.6fe2cf12.js new file mode 100644 index 00000000..5bcc6dd0 --- /dev/null +++ b/assets/js/76fa9b73.6fe2cf12.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[48],{79780:(e,s,n)=>{n.r(s),n.d(s,{assets:()=>a,contentTitle:()=>o,default:()=>h,frontMatter:()=>t,metadata:()=>i,toc:()=>r});const i=JSON.parse('{"id":"API-Reference/widgets/Dialogs","title":"Dialogs","description":"Import :","source":"@site/api/API-Reference/widgets/Dialogs.md","sourceDirName":"API-Reference/widgets","slug":"/API-Reference/widgets/Dialogs","permalink":"/api/API-Reference/widgets/Dialogs","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"DefaultDialogs","permalink":"/api/API-Reference/widgets/DefaultDialogs"},"next":{"title":"DropdownButton","permalink":"/api/API-Reference/widgets/DropdownButton"}}');var l=n(74848),d=n(28453);const t={},o=void 0,a={},r=[{value:"Import :",id:"import-",level:3},{value:"DIALOG_BTN_CANCEL : string",id:"dialog_btn_cancel--string",level:2},{value:"DIALOG_BTN_OK : string",id:"dialog_btn_ok--string",level:2},{value:"DIALOG_BTN_DONTSAVE : string",id:"dialog_btn_dontsave--string",level:2},{value:"DIALOG_BTN_SAVE_AS : string",id:"dialog_btn_save_as--string",level:2},{value:"DIALOG_CANCELED : string",id:"dialog_canceled--string",level:2},{value:"DIALOG_BTN_DOWNLOAD : string",id:"dialog_btn_download--string",level:2},{value:"DIALOG_BTN_CLASS_PRIMARY : string",id:"dialog_btn_class_primary--string",level:2},{value:"DIALOG_BTN_CLASS_NORMAL : string",id:"dialog_btn_class_normal--string",level:2},{value:"DIALOG_BTN_CLASS_LEFT : string",id:"dialog_btn_class_left--string",level:2},{value:"showModalDialogUsingTemplate(template, [autoDismiss], [closeToElement]) \u21d2 Dialog",id:"showmodaldialogusingtemplatetemplate-autodismiss-closetoelement--dialog",level:2},{value:"showModalDialog(dlgClass, [title], [message], buttons, [autoDismiss]) \u21d2 Dialog",id:"showmodaldialogdlgclass-title-message-buttons-autodismiss--dialog",level:2},{value:"showConfirmDialog(title, message, [autoDismiss]) \u21d2 Dialog",id:"showconfirmdialogtitle-message-autodismiss--dialog",level:2},{value:"showInfoDialog(title, message, [autoDismiss]) \u21d2 Dialog",id:"showinfodialogtitle-message-autodismiss--dialog",level:2},{value:"showErrorDialog(title, message, [autoDismiss]) \u21d2 Dialog",id:"showerrordialogtitle-message-autodismiss--dialog",level:2},{value:"cancelModalDialogIfOpen(dlgClass, [buttonId])",id:"cancelmodaldialogifopendlgclass-buttonid",level:2},{value:"addLinkTooltips(elementOrDialog)",id:"addlinktooltipselementordialog",level:2}];function c(e){const s={a:"a",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,d.R)(),...e.components};return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.h3,{id:"import-",children:"Import :"}),"\n",(0,l.jsx)(s.pre,{children:(0,l.jsx)(s.code,{className:"language-js",children:'const Dialogs = brackets.getModule("widgets/Dialogs")\n'})}),"\n",(0,l.jsx)("a",{name:"DIALOG_BTN_CANCEL"}),"\n",(0,l.jsxs)(s.h2,{id:"dialog_btn_cancel--string",children:["DIALOG_BTN_CANCEL : ",(0,l.jsx)("code",{children:"string"})]}),"\n",(0,l.jsxs)(s.p,{children:[(0,l.jsx)(s.code,{children:"CANCEL"})," dialog button ID"]}),"\n",(0,l.jsxs)(s.p,{children:[(0,l.jsx)(s.strong,{children:"Kind"}),": global constant"]}),"\n",(0,l.jsx)("a",{name:"DIALOG_BTN_OK"}),"\n",(0,l.jsxs)(s.h2,{id:"dialog_btn_ok--string",children:["DIALOG_BTN_OK : ",(0,l.jsx)("code",{children:"string"})]}),"\n",(0,l.jsxs)(s.p,{children:[(0,l.jsx)(s.code,{children:"OK"})," dialog button ID"]}),"\n",(0,l.jsxs)(s.p,{children:[(0,l.jsx)(s.strong,{children:"Kind"}),": global constant"]}),"\n",(0,l.jsx)("a",{name:"DIALOG_BTN_DONTSAVE"}),"\n",(0,l.jsxs)(s.h2,{id:"dialog_btn_dontsave--string",children:["DIALOG_BTN_DONTSAVE : ",(0,l.jsx)("code",{children:"string"})]}),"\n",(0,l.jsxs)(s.p,{children:[(0,l.jsx)(s.code,{children:"DONT SAVE"})," dialog button ID"]}),"\n",(0,l.jsxs)(s.p,{children:[(0,l.jsx)(s.strong,{children:"Kind"}),": global constant"]}),"\n",(0,l.jsx)("a",{name:"DIALOG_BTN_SAVE_AS"}),"\n",(0,l.jsxs)(s.h2,{id:"dialog_btn_save_as--string",children:["DIALOG_BTN_SAVE_AS : ",(0,l.jsx)("code",{children:"string"})]}),"\n",(0,l.jsxs)(s.p,{children:[(0,l.jsx)(s.code,{children:"SAVE AS"})," dialog button ID"]}),"\n",(0,l.jsxs)(s.p,{children:[(0,l.jsx)(s.strong,{children:"Kind"}),": global constant"]}),"\n",(0,l.jsx)("a",{name:"DIALOG_CANCELED"}),"\n",(0,l.jsxs)(s.h2,{id:"dialog_canceled--string",children:["DIALOG_CANCELED : ",(0,l.jsx)("code",{children:"string"})]}),"\n",(0,l.jsxs)(s.p,{children:[(0,l.jsx)(s.code,{children:"CANCELED"})," dialog button ID"]}),"\n",(0,l.jsxs)(s.p,{children:[(0,l.jsx)(s.strong,{children:"Kind"}),": global constant"]}),"\n",(0,l.jsx)("a",{name:"DIALOG_BTN_DOWNLOAD"}),"\n",(0,l.jsxs)(s.h2,{id:"dialog_btn_download--string",children:["DIALOG_BTN_DOWNLOAD : ",(0,l.jsx)("code",{children:"string"})]}),"\n",(0,l.jsxs)(s.p,{children:[(0,l.jsx)(s.code,{children:"DOWNLOAD"})," dialog button ID"]}),"\n",(0,l.jsxs)(s.p,{children:[(0,l.jsx)(s.strong,{children:"Kind"}),": global constant"]}),"\n",(0,l.jsx)("a",{name:"DIALOG_BTN_CLASS_PRIMARY"}),"\n",(0,l.jsxs)(s.h2,{id:"dialog_btn_class_primary--string",children:["DIALOG_BTN_CLASS_PRIMARY : ",(0,l.jsx)("code",{children:"string"})]}),"\n",(0,l.jsx)(s.p,{children:"Primary button class name"}),"\n",(0,l.jsxs)(s.p,{children:[(0,l.jsx)(s.strong,{children:"Kind"}),": global constant"]}),"\n",(0,l.jsx)("a",{name:"DIALOG_BTN_CLASS_NORMAL"}),"\n",(0,l.jsxs)(s.h2,{id:"dialog_btn_class_normal--string",children:["DIALOG_BTN_CLASS_NORMAL : ",(0,l.jsx)("code",{children:"string"})]}),"\n",(0,l.jsx)(s.p,{children:"Normal button class name"}),"\n",(0,l.jsxs)(s.p,{children:[(0,l.jsx)(s.strong,{children:"Kind"}),": global constant"]}),"\n",(0,l.jsx)("a",{name:"DIALOG_BTN_CLASS_LEFT"}),"\n",(0,l.jsxs)(s.h2,{id:"dialog_btn_class_left--string",children:["DIALOG_BTN_CLASS_LEFT : ",(0,l.jsx)("code",{children:"string"})]}),"\n",(0,l.jsx)(s.p,{children:"Left-aligned button class name"}),"\n",(0,l.jsxs)(s.p,{children:[(0,l.jsx)(s.strong,{children:"Kind"}),": global constant"]}),"\n",(0,l.jsx)("a",{name:"showModalDialogUsingTemplate"}),"\n",(0,l.jsxs)(s.h2,{id:"showmodaldialogusingtemplatetemplate-autodismiss-closetoelement--dialog",children:["showModalDialogUsingTemplate(template, [autoDismiss], [closeToElement]) \u21d2 ",(0,l.jsx)(s.a,{href:"#new_Dialog_new",children:(0,l.jsx)("code",{children:"Dialog"})})]}),"\n",(0,l.jsxs)(s.p,{children:["Creates a new modal dialog from a given template.\nThe template can either be a string or a jQuery object representing a DOM node that is ",(0,l.jsx)(s.em,{children:"not"})," in the current DOM."]}),"\n",(0,l.jsxs)(s.p,{children:[(0,l.jsx)(s.strong,{children:"Kind"}),": global function"]}),"\n",(0,l.jsxs)(s.table,{children:[(0,l.jsx)(s.thead,{children:(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.th,{children:"Param"}),(0,l.jsx)(s.th,{children:"Type"}),(0,l.jsx)(s.th,{children:"Description"})]})}),(0,l.jsxs)(s.tbody,{children:[(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.td,{children:"template"}),(0,l.jsx)(s.td,{children:(0,l.jsx)("code",{children:"string"})}),(0,l.jsx)(s.td,{children:"A string template or jQuery object to use as the dialog HTML."})]}),(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.td,{children:"[autoDismiss]"}),(0,l.jsx)(s.td,{children:(0,l.jsx)("code",{children:"boolean"})}),(0,l.jsxs)(s.td,{children:["Whether to automatically dismiss the dialog when one of the buttons is clicked. Default true. If false, you'll need to manually handle button clicks and the Esc key, and dismiss the dialog yourself when ready by calling ",(0,l.jsx)(s.code,{children:"close()"})," on the returned dialog."]})]}),(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.td,{children:"[closeToElement]"}),(0,l.jsx)(s.td,{children:(0,l.jsx)("code",{children:"string"})}),(0,l.jsx)(s.td,{children:'A CSS selector for a target element. If specified, the dialog will animate open from and close toward the target element (a "woosh" effect). If the target is not found or not visible, the dialog opens/closes normally.'})]})]})]}),"\n",(0,l.jsx)("a",{name:"showModalDialog"}),"\n",(0,l.jsxs)(s.h2,{id:"showmodaldialogdlgclass-title-message-buttons-autodismiss--dialog",children:["showModalDialog(dlgClass, [title], [message], buttons, [autoDismiss]) \u21d2 ",(0,l.jsx)(s.a,{href:"#new_Dialog_new",children:(0,l.jsx)("code",{children:"Dialog"})})]}),"\n",(0,l.jsx)(s.p,{children:"Creates a new general purpose modal dialog using the default template and the template variables given\nas parameters as described."}),"\n",(0,l.jsxs)(s.p,{children:[(0,l.jsx)(s.strong,{children:"Kind"}),": global function"]}),"\n",(0,l.jsxs)(s.table,{children:[(0,l.jsx)(s.thead,{children:(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.th,{children:"Param"}),(0,l.jsx)(s.th,{children:"Type"}),(0,l.jsx)(s.th,{children:"Description"})]})}),(0,l.jsxs)(s.tbody,{children:[(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.td,{children:"dlgClass"}),(0,l.jsx)(s.td,{children:(0,l.jsx)("code",{children:"string"})}),(0,l.jsx)(s.td,{children:"A class name identifier for the dialog. Typically one of DefaultDialogs.*"})]}),(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.td,{children:"[title]"}),(0,l.jsx)(s.td,{children:(0,l.jsx)("code",{children:"string"})}),(0,l.jsx)(s.td,{children:'The title of the dialog. Can contain HTML markup. Defaults to "".'})]}),(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.td,{children:"[message]"}),(0,l.jsx)(s.td,{children:(0,l.jsx)("code",{children:"string"})}),(0,l.jsx)(s.td,{children:'The message to display in the dialog. Can contain HTML markup. Defaults to "".'})]}),(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.td,{children:"buttons"}),(0,l.jsx)(s.td,{children:(0,l.jsx)("code",{children:"Array."})}),(0,l.jsxs)(s.td,{children:['An array of buttons where each button has a class, id tooltip, and text property. The id is used in "data-button-id". Defaults to a single Ok button. Typically className is one of DIALOG_BTN_CLASS_',(0,l.jsx)(s.em,{children:", id is one of DIALOG_BTN_"})]})]}),(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.td,{children:"[autoDismiss]"}),(0,l.jsx)(s.td,{children:(0,l.jsx)("code",{children:"boolean"})}),(0,l.jsxs)(s.td,{children:["Whether to automatically dismiss the dialog when one of the buttons is clicked. Default true. If false, you'll need to manually handle button clicks and the Esc key, and dismiss the dialog yourself when ready by calling ",(0,l.jsx)(s.code,{children:"close()"})," on the returned dialog."]})]})]})]}),"\n",(0,l.jsx)("a",{name:"showConfirmDialog"}),"\n",(0,l.jsxs)(s.h2,{id:"showconfirmdialogtitle-message-autodismiss--dialog",children:["showConfirmDialog(title, message, [autoDismiss]) \u21d2 ",(0,l.jsx)(s.a,{href:"#new_Dialog_new",children:(0,l.jsx)("code",{children:"Dialog"})})]}),"\n",(0,l.jsxs)(s.p,{children:["Display a confirmation dialog with ",(0,l.jsx)(s.code,{children:"OK"})," and ",(0,l.jsx)(s.code,{children:"CANCEL"})," button"]}),"\n",(0,l.jsxs)(s.p,{children:[(0,l.jsx)(s.strong,{children:"Kind"}),": global function",(0,l.jsx)(s.br,{}),"\n",(0,l.jsx)(s.strong,{children:"Returns"}),": ",(0,l.jsx)(s.a,{href:"#new_Dialog_new",children:(0,l.jsx)("code",{children:"Dialog"})})," - the created dialog instance"]}),"\n",(0,l.jsxs)(s.table,{children:[(0,l.jsx)(s.thead,{children:(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.th,{children:"Param"}),(0,l.jsx)(s.th,{children:"Type"}),(0,l.jsx)(s.th,{children:"Description"})]})}),(0,l.jsxs)(s.tbody,{children:[(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.td,{children:"title"}),(0,l.jsx)(s.td,{children:(0,l.jsx)("code",{children:"string"})}),(0,l.jsx)(s.td,{children:"dialog title"})]}),(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.td,{children:"message"}),(0,l.jsx)(s.td,{children:(0,l.jsx)("code",{children:"string"})}),(0,l.jsx)(s.td,{children:"message to display in the dialog"})]}),(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.td,{children:"[autoDismiss]"}),(0,l.jsx)(s.td,{children:(0,l.jsx)("code",{children:"boolean"})}),(0,l.jsx)(s.td,{children:"whether to automatically dismiss the dialog or not"})]})]})]}),"\n",(0,l.jsx)("a",{name:"showInfoDialog"}),"\n",(0,l.jsxs)(s.h2,{id:"showinfodialogtitle-message-autodismiss--dialog",children:["showInfoDialog(title, message, [autoDismiss]) \u21d2 ",(0,l.jsx)(s.a,{href:"#new_Dialog_new",children:(0,l.jsx)("code",{children:"Dialog"})})]}),"\n",(0,l.jsx)(s.p,{children:"Display information dialog"}),"\n",(0,l.jsxs)(s.p,{children:[(0,l.jsx)(s.strong,{children:"Kind"}),": global function",(0,l.jsx)(s.br,{}),"\n",(0,l.jsx)(s.strong,{children:"Returns"}),": ",(0,l.jsx)(s.a,{href:"#new_Dialog_new",children:(0,l.jsx)("code",{children:"Dialog"})})," - the created dialog instance"]}),"\n",(0,l.jsxs)(s.table,{children:[(0,l.jsx)(s.thead,{children:(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.th,{children:"Param"}),(0,l.jsx)(s.th,{children:"Type"}),(0,l.jsx)(s.th,{children:"Description"})]})}),(0,l.jsxs)(s.tbody,{children:[(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.td,{children:"title"}),(0,l.jsx)(s.td,{children:(0,l.jsx)("code",{children:"string"})}),(0,l.jsx)(s.td,{children:"dialog title"})]}),(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.td,{children:"message"}),(0,l.jsx)(s.td,{children:(0,l.jsx)("code",{children:"string"})}),(0,l.jsx)(s.td,{children:"message to display in the dialog"})]}),(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.td,{children:"[autoDismiss]"}),(0,l.jsx)(s.td,{children:(0,l.jsx)("code",{children:"boolean"})}),(0,l.jsx)(s.td,{children:"whether to automatically dismiss the dialog or not"})]})]})]}),"\n",(0,l.jsx)("a",{name:"showErrorDialog"}),"\n",(0,l.jsxs)(s.h2,{id:"showerrordialogtitle-message-autodismiss--dialog",children:["showErrorDialog(title, message, [autoDismiss]) \u21d2 ",(0,l.jsx)(s.a,{href:"#new_Dialog_new",children:(0,l.jsx)("code",{children:"Dialog"})})]}),"\n",(0,l.jsx)(s.p,{children:"Display error dialog"}),"\n",(0,l.jsxs)(s.p,{children:[(0,l.jsx)(s.strong,{children:"Kind"}),": global function",(0,l.jsx)(s.br,{}),"\n",(0,l.jsx)(s.strong,{children:"Returns"}),": ",(0,l.jsx)(s.a,{href:"#new_Dialog_new",children:(0,l.jsx)("code",{children:"Dialog"})})," - the created dialog instance"]}),"\n",(0,l.jsxs)(s.table,{children:[(0,l.jsx)(s.thead,{children:(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.th,{children:"Param"}),(0,l.jsx)(s.th,{children:"Type"}),(0,l.jsx)(s.th,{children:"Description"})]})}),(0,l.jsxs)(s.tbody,{children:[(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.td,{children:"title"}),(0,l.jsx)(s.td,{children:(0,l.jsx)("code",{children:"string"})}),(0,l.jsx)(s.td,{children:"dialog title"})]}),(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.td,{children:"message"}),(0,l.jsx)(s.td,{children:(0,l.jsx)("code",{children:"string"})}),(0,l.jsx)(s.td,{children:"message to display in the dialog"})]}),(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.td,{children:"[autoDismiss]"}),(0,l.jsx)(s.td,{children:(0,l.jsx)("code",{children:"boolean"})}),(0,l.jsx)(s.td,{children:"whether to automatically dismiss the dialog or not"})]})]})]}),"\n",(0,l.jsx)("a",{name:"cancelModalDialogIfOpen"}),"\n",(0,l.jsx)(s.h2,{id:"cancelmodaldialogifopendlgclass-buttonid",children:"cancelModalDialogIfOpen(dlgClass, [buttonId])"}),"\n",(0,l.jsx)(s.p,{children:"Immediately closes any dialog instances with the given class. The dialog callback for each instance will\nbe called with the special buttonId DIALOG_CANCELED (note: callback is run asynchronously)."}),"\n",(0,l.jsxs)(s.p,{children:[(0,l.jsx)(s.strong,{children:"Kind"}),": global function"]}),"\n",(0,l.jsxs)(s.table,{children:[(0,l.jsx)(s.thead,{children:(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.th,{children:"Param"}),(0,l.jsx)(s.th,{children:"Type"}),(0,l.jsx)(s.th,{children:"Description"})]})}),(0,l.jsxs)(s.tbody,{children:[(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.td,{children:"dlgClass"}),(0,l.jsx)(s.td,{children:(0,l.jsx)("code",{children:"string"})}),(0,l.jsx)(s.td,{children:"The class name identifier for the dialog."})]}),(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.td,{children:"[buttonId]"}),(0,l.jsx)(s.td,{children:(0,l.jsx)("code",{children:"string"})}),(0,l.jsx)(s.td,{children:"The button id to use when closing the dialog. Defaults to DIALOG_CANCELED"})]})]})]}),"\n",(0,l.jsx)("a",{name:"addLinkTooltips"}),"\n",(0,l.jsx)(s.h2,{id:"addlinktooltipselementordialog",children:"addLinkTooltips(elementOrDialog)"}),"\n",(0,l.jsx)(s.p,{children:"Ensures that all anchor tags with a URL have a tooltip showing the same URL"}),"\n",(0,l.jsxs)(s.p,{children:[(0,l.jsx)(s.strong,{children:"Kind"}),": global function"]}),"\n",(0,l.jsxs)(s.table,{children:[(0,l.jsx)(s.thead,{children:(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.th,{children:"Param"}),(0,l.jsx)(s.th,{children:"Type"}),(0,l.jsx)(s.th,{children:"Description"})]})}),(0,l.jsx)(s.tbody,{children:(0,l.jsxs)(s.tr,{children:[(0,l.jsx)(s.td,{children:"elementOrDialog"}),(0,l.jsxs)(s.td,{children:[(0,l.jsx)("code",{children:"jQueryObject"})," | ",(0,l.jsx)(s.a,{href:"#new_Dialog_new",children:(0,l.jsx)("code",{children:"Dialog"})})]}),(0,l.jsx)(s.td,{children:"Dialog intance, or root of other DOM tree to add tooltips to"})]})})]})]})}function h(e={}){const{wrapper:s}={...(0,d.R)(),...e.components};return s?(0,l.jsx)(s,{...e,children:(0,l.jsx)(c,{...e})}):c(e)}},28453:(e,s,n)=>{n.d(s,{R:()=>t,x:()=>o});var i=n(96540);const l={},d=i.createContext(l);function t(e){const s=i.useContext(d);return i.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function o(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:t(e.components),i.createElement(d.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/7755cc47.19e90aa3.js b/assets/js/7755cc47.19e90aa3.js new file mode 100644 index 00000000..d77af93a --- /dev/null +++ b/assets/js/7755cc47.19e90aa3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6834],{5298:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>o,contentTitle:()=>t,default:()=>h,frontMatter:()=>l,metadata:()=>s,toc:()=>c});const s=JSON.parse('{"id":"API-Reference/project/ProjectModel","title":"ProjectModel","description":"Import :","source":"@site/api/API-Reference/project/ProjectModel.md","sourceDirName":"API-Reference/project","slug":"/API-Reference/project/ProjectModel","permalink":"/api/API-Reference/project/ProjectModel","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"ProjectManager","permalink":"/api/API-Reference/project/ProjectManager"},"next":{"title":"SidebarView","permalink":"/api/API-Reference/project/SidebarView"}}');var i=r(74848),d=r(28453);const l={},t=void 0,o={},c=[{value:"Import :",id:"import-",level:3},{value:"The ProjectModel provides methods for accessing information about the current open project.",id:"the-projectmodel-provides-methods-for-accessing-information-about-the-current-open-project",level:2},{value:"InMemoryFile",id:"inmemoryfile",level:2},{value:"EVENT_CHANGE : string",id:"event_change--string",level:2},{value:"EVENT_SHOULD_SELECT : string",id:"event_should_select--string",level:2},{value:"EVENT_SHOULD_FOCUS : string",id:"event_should_focus--string",level:2},{value:"EVENT_FS_RENAME_STARTED : string",id:"event_fs_rename_started--string",level:2},{value:"EVENT_FS_RENAME_END : string",id:"event_fs_rename_end--string",level:2},{value:"ERROR_CREATION : string",id:"error_creation--string",level:2},{value:"ERROR_INVALID_FILENAME : string",id:"error_invalid_filename--string",level:2},{value:"ERROR_NOT_IN_PROJECT : string",id:"error_not_in_project--string",level:2},{value:"defaultIgnoreGlobs",id:"defaultignoreglobs",level:2},{value:"FILE_RENAMING : number",id:"file_renaming--number",level:2},{value:"FILE_CREATING : number",id:"file_creating--number",level:2},{value:"RENAME_CANCELLED : number",id:"rename_cancelled--number",level:2},{value:"isValidFilename(filename) \u21d2 boolean",id:"isvalidfilenamefilename--boolean",level:2},{value:"isValidPath(path) \u21d2 boolean",id:"isvalidpathpath--boolean",level:2},{value:"shouldShow(entry) \u21d2 boolean",id:"shouldshowentry--boolean",level:2},{value:"shouldIndex(entry) \u21d2 boolean",id:"shouldindexentry--boolean",level:2},{value:"doCreate(path, isFolder) \u21d2 $.Promise",id:"docreatepath-isfolder--promise",level:2}];function a(e){const n={a:"a",br:"br",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,d.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h3,{id:"import-",children:"Import :"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-js",children:'const ProjectModel = brackets.getModule("project/ProjectModel")\n'})}),"\n",(0,i.jsx)("a",{name:"The ProjectModel provides methods for accessing information about the current open project.\nIt also manages the view model to display a FileTreeView of the project.\n\nEvents_\n- EVENT_CHANGE (`change`) - Fired when theres a change that should refresh the UI\n- EVENT_SHOULD_SELECT (`select`) - Fired when a selection has been made in the file tree and the file tree should be selected\n- EVENT_SHOULD_FOCUS (`focus`)\n- ERROR_CREATION (`creationError`) - Triggered when theres a problem creating a file"}),"\n",(0,i.jsx)(n.h2,{id:"the-projectmodel-provides-methods-for-accessing-information-about-the-current-open-project",children:"The ProjectModel provides methods for accessing information about the current open project."}),"\n",(0,i.jsx)(n.p,{children:"It also manages the view model to display a FileTreeView of the project."}),"\n",(0,i.jsx)(n.p,{children:"Events:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["EVENT_CHANGE (",(0,i.jsx)(n.code,{children:"change"}),") - Fired when theres a change that should refresh the UI"]}),"\n",(0,i.jsxs)(n.li,{children:["EVENT_SHOULD_SELECT (",(0,i.jsx)(n.code,{children:"select"}),") - Fired when a selection has been made in the file tree and the file tree should be selected"]}),"\n",(0,i.jsxs)(n.li,{children:["EVENT_SHOULD_FOCUS (",(0,i.jsx)(n.code,{children:"focus"}),")"]}),"\n",(0,i.jsxs)(n.li,{children:["ERROR_CREATION (",(0,i.jsx)(n.code,{children:"creationError"}),") - Triggered when theres a problem creating a file\n",(0,i.jsx)(n.strong,{children:"Kind"}),": global class"]}),"\n"]}),"\n",(0,i.jsx)("a",{name:"InMemoryFile"}),"\n",(0,i.jsx)(n.h2,{id:"inmemoryfile",children:"InMemoryFile"}),"\n",(0,i.jsx)(n.p,{children:"Provides the data source for a project and manages the view model for the FileTreeView."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,i.jsx)("a",{name:"EVENT_CHANGE"}),"\n",(0,i.jsxs)(n.h2,{id:"event_change--string",children:["EVENT_CHANGE : ",(0,i.jsx)("code",{children:"string"})]}),"\n",(0,i.jsx)(n.p,{children:"Triggered when change occurs."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,i.jsx)("a",{name:"EVENT_SHOULD_SELECT"}),"\n",(0,i.jsxs)(n.h2,{id:"event_should_select--string",children:["EVENT_SHOULD_SELECT : ",(0,i.jsx)("code",{children:"string"})]}),"\n",(0,i.jsx)(n.p,{children:"Triggered when item should be selected."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,i.jsx)("a",{name:"EVENT_SHOULD_FOCUS"}),"\n",(0,i.jsxs)(n.h2,{id:"event_should_focus--string",children:["EVENT_SHOULD_FOCUS : ",(0,i.jsx)("code",{children:"string"})]}),"\n",(0,i.jsx)(n.p,{children:"Triggered when item should receive focus."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,i.jsx)("a",{name:"EVENT_FS_RENAME_STARTED"}),"\n",(0,i.jsxs)(n.h2,{id:"event_fs_rename_started--string",children:["EVENT_FS_RENAME_STARTED : ",(0,i.jsx)("code",{children:"string"})]}),"\n",(0,i.jsx)(n.p,{children:"Triggered when file system rename operation starts."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,i.jsx)("a",{name:"EVENT_FS_RENAME_END"}),"\n",(0,i.jsxs)(n.h2,{id:"event_fs_rename_end--string",children:["EVENT_FS_RENAME_END : ",(0,i.jsx)("code",{children:"string"})]}),"\n",(0,i.jsx)(n.p,{children:"Triggered when file system rename operation ends."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,i.jsx)("a",{name:"ERROR_CREATION"}),"\n",(0,i.jsxs)(n.h2,{id:"error_creation--string",children:["ERROR_CREATION : ",(0,i.jsx)("code",{children:"string"})]}),"\n",(0,i.jsx)(n.p,{children:"Error during creation."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,i.jsx)("a",{name:"ERROR_INVALID_FILENAME"}),"\n",(0,i.jsxs)(n.h2,{id:"error_invalid_filename--string",children:["ERROR_INVALID_FILENAME : ",(0,i.jsx)("code",{children:"string"})]}),"\n",(0,i.jsx)(n.p,{children:"Error because of Invalid filename"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,i.jsx)("a",{name:"ERROR_NOT_IN_PROJECT"}),"\n",(0,i.jsxs)(n.h2,{id:"error_not_in_project--string",children:["ERROR_NOT_IN_PROJECT : ",(0,i.jsx)("code",{children:"string"})]}),"\n",(0,i.jsx)(n.p,{children:"Error when an item is not in a project"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,i.jsx)("a",{name:"defaultIgnoreGlobs"}),"\n",(0,i.jsx)(n.h2,{id:"defaultignoreglobs",children:"defaultIgnoreGlobs"}),"\n",(0,i.jsx)(n.p,{children:"Glob definition of files and folders that should be excluded directly\ninside node domain watching with chokidar"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,i.jsx)("a",{name:"FILE_RENAMING"}),"\n",(0,i.jsxs)(n.h2,{id:"file_renaming--number",children:["FILE_RENAMING : ",(0,i.jsx)("code",{children:"number"})]}),"\n",(0,i.jsx)(n.p,{children:"File renaming"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,i.jsx)("a",{name:"FILE_CREATING"}),"\n",(0,i.jsxs)(n.h2,{id:"file_creating--number",children:["FILE_CREATING : ",(0,i.jsx)("code",{children:"number"})]}),"\n",(0,i.jsx)(n.p,{children:"File creating"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,i.jsx)("a",{name:"RENAME_CANCELLED"}),"\n",(0,i.jsxs)(n.h2,{id:"rename_cancelled--number",children:["RENAME_CANCELLED : ",(0,i.jsx)("code",{children:"number"})]}),"\n",(0,i.jsx)(n.p,{children:"Rename cancelled"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,i.jsx)("a",{name:"isValidFilename"}),"\n",(0,i.jsxs)(n.h2,{id:"isvalidfilenamefilename--boolean",children:["isValidFilename(filename) \u21d2 ",(0,i.jsx)("code",{children:"boolean"})]}),"\n",(0,i.jsxs)(n.p,{children:["Returns true if this matches valid filename specifications.\nSee ",(0,i.jsx)(n.a,{href:"http://msdn.microsoft.com/en-us/library/windows/desktop/aa365247(v=vs.85).aspx",children:"http://msdn.microsoft.com/en-us/library/windows/desktop/aa365247(v=vs.85).aspx"})]}),"\n",(0,i.jsx)(n.p,{children:"TODO: This likely belongs in FileUtils."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function",(0,i.jsx)(n.br,{}),"\n",(0,i.jsx)(n.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"boolean"})," - true if the filename is valid"]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsx)(n.tbody,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"filename"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(n.td,{children:"to check"})]})})]}),"\n",(0,i.jsx)("a",{name:"isValidPath"}),"\n",(0,i.jsxs)(n.h2,{id:"isvalidpathpath--boolean",children:["isValidPath(path) \u21d2 ",(0,i.jsx)("code",{children:"boolean"})]}),"\n",(0,i.jsx)(n.p,{children:"Returns true if given path is valid."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function",(0,i.jsx)(n.br,{}),"\n",(0,i.jsx)(n.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"boolean"})," - true if the filename is valid"]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsx)(n.tbody,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"path"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(n.td,{children:"to check"})]})})]}),"\n",(0,i.jsx)("a",{name:"shouldShow"}),"\n",(0,i.jsxs)(n.h2,{id:"shouldshowentry--boolean",children:["shouldShow(entry) \u21d2 ",(0,i.jsx)("code",{children:"boolean"})]}),"\n",(0,i.jsx)(n.p,{children:"Returns false for files and directories that are not commonly useful to display."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function",(0,i.jsx)(n.br,{}),"\n",(0,i.jsx)(n.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"boolean"})," - true if the file should be displayed"]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsx)(n.tbody,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"entry"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"FileSystemEntry"})}),(0,i.jsx)(n.td,{children:"File or directory to filter"})]})})]}),"\n",(0,i.jsx)("a",{name:"shouldIndex"}),"\n",(0,i.jsxs)(n.h2,{id:"shouldindexentry--boolean",children:["shouldIndex(entry) \u21d2 ",(0,i.jsx)("code",{children:"boolean"})]}),"\n",(0,i.jsx)(n.p,{children:"Returns false for files and directories that should not be indexed for search or code hints.\nIf the entry is a directory, its children should be indexed too."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function",(0,i.jsx)(n.br,{}),"\n",(0,i.jsx)(n.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"boolean"})," - true if the file should be displayed"]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsx)(n.tbody,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"entry"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"FileSystemEntry"})}),(0,i.jsx)(n.td,{children:"File or directory to filter"})]})})]}),"\n",(0,i.jsx)("a",{name:"doCreate"}),"\n",(0,i.jsxs)(n.h2,{id:"docreatepath-isfolder--promise",children:["doCreate(path, isFolder) \u21d2 ",(0,i.jsx)("code",{children:"$.Promise"})]}),"\n",(0,i.jsx)(n.p,{children:"Creates a new file or folder at the given path. The returned promise is rejected if the filename\nis invalid, the new path already exists or some other filesystem error comes up."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function",(0,i.jsx)(n.br,{}),"\n",(0,i.jsx)(n.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"$.Promise"})," - resolved when the file or directory has been created."]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"path"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(n.td,{children:"path to create"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"isFolder"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"boolean"})}),(0,i.jsx)(n.td,{children:"true if the new entry is a folder"})]})]})]})]})}function h(e={}){const{wrapper:n}={...(0,d.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(a,{...e})}):a(e)}},28453:(e,n,r)=>{r.d(n,{R:()=>l,x:()=>t});var s=r(96540);const i={},d=s.createContext(i);function l(e){const n=s.useContext(d);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:l(e.components),s.createElement(d.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/7873.88ce2c72.js b/assets/js/7873.88ce2c72.js new file mode 100644 index 00000000..7e109bee --- /dev/null +++ b/assets/js/7873.88ce2c72.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7873],{50053:(e,n,t)=>{t.d(n,{A:()=>i});var r=t(68675);const i=function(e){return(0,r.A)(e,4)}},57873:(e,n,t)=>{t.r(n),t.d(n,{render:()=>k});var r=t(5164),i=(t(28698),t(5894)),a=t(63245),o=(t(32387),t(30092),t(13226),t(67633)),d=t(40797),s=t(62334),c=t(69592),g=t(50053),l=t(74722);t(37981);function f(e){var n={options:{directed:e.isDirected(),multigraph:e.isMultigraph(),compound:e.isCompound()},nodes:h(e),edges:p(e)};return c.A(e.graph())||(n.value=g.A(e.graph())),n}function h(e){return l.A(e.nodes(),(function(n){var t=e.node(n),r=e.parent(n),i={v:n};return c.A(t)||(i.value=t),c.A(r)||(i.parent=r),i}))}function p(e){return l.A(e.edges(),(function(n){var t=e.edge(n),r={v:n.v,w:n.w};return c.A(n.name)||(r.name=n.name),c.A(t)||(r.value=t),r}))}var u=t(697),m=new Map,w=new Map,R=new Map,v=(0,d.K2)((()=>{w.clear(),R.clear(),m.clear()}),"clear"),y=(0,d.K2)(((e,n)=>{const t=w.get(n)||[];return d.Rm.trace("In isDescendant",n," ",e," = ",t.includes(e)),t.includes(e)}),"isDescendant"),X=(0,d.K2)(((e,n)=>{const t=w.get(n)||[];return d.Rm.info("Descendants of ",n," is ",t),d.Rm.info("Edge is ",e),e.v!==n&&e.w!==n&&(t?t.includes(e.v)||y(e.v,n)||y(e.w,n)||t.includes(e.w):(d.Rm.debug("Tilt, ",n,",not in descendants"),!1))}),"edgeInCluster"),b=(0,d.K2)(((e,n,t,r)=>{d.Rm.warn("Copying children of ",e,"root",r,"data",n.node(e),r);const i=n.children(e)||[];e!==r&&i.push(e),d.Rm.warn("Copying (nodes) clusterId",e,"nodes",i),i.forEach((i=>{if(n.children(i).length>0)b(i,n,t,r);else{const a=n.node(i);d.Rm.info("cp ",i," to ",r," with parent ",e),t.setNode(i,a),r!==n.parent(i)&&(d.Rm.warn("Setting parent",i,n.parent(i)),t.setParent(i,n.parent(i))),e!==r&&i!==e?(d.Rm.debug("Setting parent",i,e),t.setParent(i,e)):(d.Rm.info("In copy ",e,"root",r,"data",n.node(e),r),d.Rm.debug("Not Setting parent for node=",i,"cluster!==rootId",e!==r,"node!==clusterId",i!==e));const o=n.edges(i);d.Rm.debug("Copying Edges",o),o.forEach((i=>{d.Rm.info("Edge",i);const a=n.edge(i.v,i.w,i.name);d.Rm.info("Edge data",a,r);try{X(i,r)?(d.Rm.info("Copying as ",i.v,i.w,a,i.name),t.setEdge(i.v,i.w,a,i.name),d.Rm.info("newGraph edges ",t.edges(),t.edge(t.edges()[0]))):d.Rm.info("Skipping copy of edge ",i.v,"--\x3e",i.w," rootId: ",r," clusterId:",e)}catch(o){d.Rm.error(o)}}))}d.Rm.debug("Removing node",i),n.removeNode(i)}))}),"copy"),E=(0,d.K2)(((e,n)=>{const t=n.children(e);let r=[...t];for(const i of t)R.set(i,e),r=[...r,...E(i,n)];return r}),"extractDescendants"),N=(0,d.K2)(((e,n,t)=>{const r=e.edges().filter((e=>e.v===n||e.w===n)),i=e.edges().filter((e=>e.v===t||e.w===t)),a=r.map((e=>({v:e.v===n?t:e.v,w:e.w===n?n:e.w}))),o=i.map((e=>({v:e.v,w:e.w})));return a.filter((e=>o.some((n=>e.v===n.v&&e.w===n.w))))}),"findCommonEdges"),C=(0,d.K2)(((e,n,t)=>{const r=n.children(e);if(d.Rm.trace("Searching children of id ",e,r),r.length<1)return e;let i;for(const a of r){const e=C(a,n,t),r=N(n,t,e);if(e){if(!(r.length>0))return e;i=e}}return i}),"findNonClusterChild"),S=(0,d.K2)((e=>m.has(e)&&m.get(e).externalConnections&&m.has(e)?m.get(e).id:e),"getAnchorId"),x=(0,d.K2)(((e,n)=>{if(!e||n>10)d.Rm.debug("Opting out, no graph ");else{d.Rm.debug("Opting in, graph "),e.nodes().forEach((function(n){e.children(n).length>0&&(d.Rm.warn("Cluster identified",n," Replacement id in edges: ",C(n,e,n)),w.set(n,E(n,e)),m.set(n,{id:C(n,e,n),clusterData:e.node(n)}))})),e.nodes().forEach((function(n){const t=e.children(n),r=e.edges();t.length>0?(d.Rm.debug("Cluster identified",n,w),r.forEach((e=>{y(e.v,n)^y(e.w,n)&&(d.Rm.warn("Edge: ",e," leaves cluster ",n),d.Rm.warn("Descendants of XXX ",n,": ",w.get(n)),m.get(n).externalConnections=!0)}))):d.Rm.debug("Not a cluster ",n,w)}));for(let n of m.keys()){const t=m.get(n).id,r=e.parent(t);r!==n&&m.has(r)&&!m.get(r).externalConnections&&(m.get(n).id=r)}e.edges().forEach((function(n){const t=e.edge(n);d.Rm.warn("Edge "+n.v+" -> "+n.w+": "+JSON.stringify(n)),d.Rm.warn("Edge "+n.v+" -> "+n.w+": "+JSON.stringify(e.edge(n)));let r=n.v,i=n.w;if(d.Rm.warn("Fix XXX",m,"ids:",n.v,n.w,"Translating: ",m.get(n.v)," --- ",m.get(n.w)),m.get(n.v)||m.get(n.w)){if(d.Rm.warn("Fixing and trying - removing XXX",n.v,n.w,n.name),r=S(n.v),i=S(n.w),e.removeEdge(n.v,n.w,n.name),r!==n.v){const i=e.parent(r);m.get(i).externalConnections=!0,t.fromCluster=n.v}if(i!==n.w){const r=e.parent(i);m.get(r).externalConnections=!0,t.toCluster=n.w}d.Rm.warn("Fix Replacing with XXX",r,i,n.name),e.setEdge(r,i,t,n.name)}})),d.Rm.warn("Adjusted Graph",f(e)),I(e,0),d.Rm.trace(m)}}),"adjustClustersAndEdges"),I=(0,d.K2)(((e,n)=>{if(d.Rm.warn("extractor - ",n,f(e),e.children("D")),n>10)return void d.Rm.error("Bailing out");let t=e.nodes(),r=!1;for(const i of t){const n=e.children(i);r=r||n.length>0}if(r){d.Rm.debug("Nodes = ",t,n);for(const r of t)if(d.Rm.debug("Extracting node",r,m,m.has(r)&&!m.get(r).externalConnections,!e.parent(r),e.node(r),e.children("D")," Depth ",n),m.has(r))if(!m.get(r).externalConnections&&e.children(r)&&e.children(r).length>0){d.Rm.warn("Cluster without external connections, without a parent and with children",r,n);let t="TB"===e.graph().rankdir?"LR":"TB";m.get(r)?.clusterData?.dir&&(t=m.get(r).clusterData.dir,d.Rm.warn("Fixing dir",m.get(r).clusterData.dir,t));const i=new u.T({multigraph:!0,compound:!0}).setGraph({rankdir:t,nodesep:50,ranksep:50,marginx:8,marginy:8}).setDefaultEdgeLabel((function(){return{}}));d.Rm.warn("Old graph before copy",f(e)),b(r,e,i,r),e.setNode(r,{clusterNode:!0,id:r,clusterData:m.get(r).clusterData,label:m.get(r).label,graph:i}),d.Rm.warn("New graph after copy node: (",r,")",f(i)),d.Rm.debug("Old graph after copy",f(e))}else d.Rm.warn("Cluster ** ",r," **not meeting the criteria !externalConnections:",!m.get(r).externalConnections," no parent: ",!e.parent(r)," children ",e.children(r)&&e.children(r).length>0,e.children("D"),n),d.Rm.debug(m);else d.Rm.debug("Not a cluster",r,n);t=e.nodes(),d.Rm.warn("New list of nodes",t);for(const r of t){const t=e.node(r);d.Rm.warn(" Now next level",r,t),t?.clusterNode&&I(t.graph,n+1)}}else d.Rm.debug("Done, no node has children",e.nodes())}),"extractor"),D=(0,d.K2)(((e,n)=>{if(0===n.length)return[];let t=Object.assign([],n);return n.forEach((n=>{const r=e.children(n),i=D(e,r);t=[...t,...i]})),t}),"sorter"),A=(0,d.K2)((e=>D(e,e.children())),"sortNodesByHierarchy"),O=(0,d.K2)((async(e,n,t,o,c,g)=>{d.Rm.warn("Graph in recursive render:XAX",f(n),c);const l=n.graph().rankdir;d.Rm.trace("Dir in recursive render - dir:",l);const h=e.insert("g").attr("class","root");n.nodes()?d.Rm.info("Recursive render XXX",n.nodes()):d.Rm.info("No nodes found for",n),n.edges().length>0&&d.Rm.info("Recursive edges",n.edge(n.edges()[0]));const p=h.insert("g").attr("class","clusters"),u=h.insert("g").attr("class","edgePaths"),w=h.insert("g").attr("class","edgeLabels"),R=h.insert("g").attr("class","nodes");await Promise.all(n.nodes().map((async function(e){const r=n.node(e);if(void 0!==c){const t=JSON.parse(JSON.stringify(c.clusterData));d.Rm.trace("Setting data for parent cluster XXX\n Node.id = ",e,"\n data=",t.height,"\nParent cluster",c.height),n.setNode(c.id,t),n.parent(e)||(d.Rm.trace("Setting parent",e,c.id),n.setParent(e,c.id,t))}if(d.Rm.info("(Insert) Node XXX"+e+": "+JSON.stringify(n.node(e))),r?.clusterNode){d.Rm.info("Cluster identified XBX",e,r.width,n.node(e));const{ranksep:a,nodesep:s}=n.graph();r.graph.setGraph({...r.graph.graph(),ranksep:a+25,nodesep:s});const c=await O(R,r.graph,t,o,n.node(e),g),l=c.elem;(0,i.lC)(r,l),r.diff=c.diff||0,d.Rm.info("New compound node after recursive render XAX",e,"width",r.width,"height",r.height),(0,i.U7)(l,r)}else n.children(e).length>0?(d.Rm.trace("Cluster - the non recursive path XBX",e,r.id,r,r.width,"Graph:",n),d.Rm.trace(C(r.id,n)),m.set(r.id,{id:C(r.id,n),node:r})):(d.Rm.trace("Node - the non recursive path XAX",e,R,n.node(e),l),await(0,i.on)(R,n.node(e),{config:g,dir:l}))})));const v=(0,d.K2)((async()=>{const e=n.edges().map((async function(e){const t=n.edge(e.v,e.w,e.name);d.Rm.info("Edge "+e.v+" -> "+e.w+": "+JSON.stringify(e)),d.Rm.info("Edge "+e.v+" -> "+e.w+": ",e," ",JSON.stringify(n.edge(e))),d.Rm.info("Fix",m,"ids:",e.v,e.w,"Translating: ",m.get(e.v),m.get(e.w)),await(0,r.jP)(w,t)}));await Promise.all(e)}),"processEdges");await v(),d.Rm.info("Graph before layout:",JSON.stringify(f(n))),d.Rm.info("############################################# XXX"),d.Rm.info("### Layout ### XXX"),d.Rm.info("############################################# XXX"),(0,s.Zp)(n),d.Rm.info("Graph after layout:",JSON.stringify(f(n)));let y=0,{subGraphTitleTotalMargin:X}=(0,a.O)(g);return await Promise.all(A(n).map((async function(e){const t=n.node(e);if(d.Rm.info("Position XBX => "+e+": ("+t.x,","+t.y,") width: ",t.width," height: ",t.height),t?.clusterNode)t.y+=X,d.Rm.info("A tainted cluster node XBX1",e,t.id,t.width,t.height,t.x,t.y,n.parent(e)),m.get(t.id).node=t,(0,i.U_)(t);else if(n.children(e).length>0){d.Rm.info("A pure cluster node XBX1",e,t.id,t.x,t.y,t.width,t.height,n.parent(e)),t.height+=X,n.node(t.parentId);const r=t?.padding/2||0,a=t?.labelBBox?.height||0,o=a-r||0;d.Rm.debug("OffsetY",o,"labelHeight",a,"halfPadding",r),await(0,i.U)(p,t),m.get(t.id).node=t}else{const e=n.node(t.parentId);t.y+=X/2,d.Rm.info("A regular node XBX1 - using the padding",t.id,"parent",t.parentId,t.width,t.height,t.x,t.y,"offsetY",t.offsetY,"parent",e,e?.offsetY,t),(0,i.U_)(t)}}))),n.edges().forEach((function(e){const i=n.edge(e);d.Rm.info("Edge "+e.v+" -> "+e.w+": "+JSON.stringify(i),i),i.points.forEach((e=>e.y+=X/2));const a=n.node(e.v);var s=n.node(e.w);const c=(0,r.Jo)(u,i,m,t,a,s,o);(0,r.T_)(i,c)})),n.nodes().forEach((function(e){const t=n.node(e);d.Rm.info(e,t.type,t.diff),t.isGroup&&(y=t.diff)})),d.Rm.warn("Returning from recursive render XAX",h,y),{elem:h,diff:y}}),"recursiveRender"),k=(0,d.K2)((async(e,n)=>{const t=new u.T({multigraph:!0,compound:!0}).setGraph({rankdir:e.direction,nodesep:e.config?.nodeSpacing||e.config?.flowchart?.nodeSpacing||e.nodeSpacing,ranksep:e.config?.rankSpacing||e.config?.flowchart?.rankSpacing||e.rankSpacing,marginx:8,marginy:8}).setDefaultEdgeLabel((function(){return{}})),a=n.select("g");(0,r.g0)(a,e.markers,e.type,e.diagramId),(0,i.gh)(),(0,r.IU)(),(0,i.IU)(),v(),e.nodes.forEach((e=>{t.setNode(e.id,{...e}),e.parentId&&t.setParent(e.id,e.parentId)})),d.Rm.debug("Edges:",e.edges),e.edges.forEach((e=>{if(e.start===e.end){const n=e.start,r=n+"---"+n+"---1",i=n+"---"+n+"---2",a=t.node(n);t.setNode(r,{domId:r,id:r,parentId:a.parentId,labelStyle:"",label:"",padding:0,shape:"labelRect",style:"",width:10,height:10}),t.setParent(r,a.parentId),t.setNode(i,{domId:i,id:i,parentId:a.parentId,labelStyle:"",padding:0,shape:"labelRect",label:"",style:"",width:10,height:10}),t.setParent(i,a.parentId);const o=structuredClone(e),d=structuredClone(e),s=structuredClone(e);o.label="",o.arrowTypeEnd="none",o.id=n+"-cyclic-special-1",d.arrowTypeStart="none",d.arrowTypeEnd="none",d.id=n+"-cyclic-special-mid",s.label="",a.isGroup&&(o.fromCluster=n,s.toCluster=n),s.id=n+"-cyclic-special-2",s.arrowTypeStart="none",t.setEdge(n,r,o,n+"-cyclic-special-0"),t.setEdge(r,i,d,n+"-cyclic-special-1"),t.setEdge(i,n,s,n+"-cyct.coolingFactor*t.maxNodeDisplacement&&(this.displacementX=t.coolingFactor*t.maxNodeDisplacement*n.sign(this.displacementX)),Math.abs(this.displacementY)>t.coolingFactor*t.maxNodeDisplacement&&(this.displacementY=t.coolingFactor*t.maxNodeDisplacement*n.sign(this.displacementY)),null==this.child||0==this.child.getNodes().length?this.moveBy(this.displacementX,this.displacementY):this.propogateDisplacementToChildren(this.displacementX,this.displacementY),t.totalDisplacement+=Math.abs(this.displacementX)+Math.abs(this.displacementY),this.springForceX=0,this.springForceY=0,this.repulsionForceX=0,this.repulsionForceY=0,this.gravitationForceX=0,this.gravitationForceY=0,this.displacementX=0,this.displacementY=0},o.prototype.propogateDisplacementToChildren=function(t,e){for(var i,r=this.getChild().getNodes(),n=0;n0)this.positionNodesRadially(t);else{this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var e=new Set(this.getAllNodes()),i=this.nodesWithGravity.filter((function(t){return e.has(t)}));this.graphManager.setAllNodesToApplyGravitation(i),this.positionNodesRandomly()}}return this.initSpringEmbedder(),this.runSpringEmbedder(),!0},v.prototype.tick=function(){if(this.totalIterations++,this.totalIterations===this.maxIterations&&!this.isTreeGrowing&&!this.isGrowthFinished){if(!(this.prunedNodesAll.length>0))return!0;this.isTreeGrowing=!0}if(this.totalIterations%l.CONVERGENCE_CHECK_PERIOD==0&&!this.isTreeGrowing&&!this.isGrowthFinished){if(this.isConverged()){if(!(this.prunedNodesAll.length>0))return!0;this.isTreeGrowing=!0}this.coolingCycle++,0==this.layoutQuality?this.coolingAdjuster=this.coolingCycle:1==this.layoutQuality&&(this.coolingAdjuster=this.coolingCycle/3),this.coolingFactor=Math.max(this.initialCoolingFactor-Math.pow(this.coolingCycle,Math.log(100*(this.initialCoolingFactor-this.finalTemperature))/Math.log(this.maxCoolingCycle))/100*this.coolingAdjuster,this.finalTemperature),this.animationPeriod=Math.ceil(this.initialAnimationPeriod*Math.sqrt(this.coolingFactor))}if(this.isTreeGrowing){if(this.growTreeIterations%10==0)if(this.prunedNodesAll.length>0){this.graphManager.updateBounds(),this.updateGrid(),this.growTree(this.prunedNodesAll),this.graphManager.resetAllNodesToApplyGravitation();var t=new Set(this.getAllNodes()),e=this.nodesWithGravity.filter((function(e){return t.has(e)}));this.graphManager.setAllNodesToApplyGravitation(e),this.graphManager.updateBounds(),this.updateGrid(),this.coolingFactor=l.DEFAULT_COOLING_FACTOR_INCREMENTAL}else this.isTreeGrowing=!1,this.isGrowthFinished=!0;this.growTreeIterations++}if(this.isGrowthFinished){if(this.isConverged())return!0;this.afterGrowthIterations%10==0&&(this.graphManager.updateBounds(),this.updateGrid()),this.coolingFactor=l.DEFAULT_COOLING_FACTOR_INCREMENTAL*((100-this.afterGrowthIterations)/100),this.afterGrowthIterations++}var i=!this.isTreeGrowing&&!this.isGrowthFinished,r=this.growTreeIterations%10==1&&this.isTreeGrowing||this.afterGrowthIterations%10==1&&this.isGrowthFinished;return this.totalDisplacement=0,this.graphManager.updateBounds(),this.calcSpringForces(),this.calcRepulsionForces(i,r),this.calcGravitationalForces(),this.moveNodes(),this.animate(),!1},v.prototype.getPositionsData=function(){for(var t=this.graphManager.getAllNodes(),e={},i=0;i1)for(a=0;ar&&(r=Math.floor(s.y)),o=Math.floor(s.x+h.DEFAULT_COMPONENT_SEPERATION)}this.transform(new c(g.WORLD_CENTER_X-s.x/2,g.WORLD_CENTER_Y-s.y/2))},v.radialLayout=function(t,e,i){var r=Math.max(this.maxDiagonalInTree(t),h.DEFAULT_RADIAL_SEPARATION);v.branchRadialLayout(e,null,0,359,0,r);var n=y.calculateBounds(t),o=new E;o.setDeviceOrgX(n.getMinX()),o.setDeviceOrgY(n.getMinY()),o.setWorldOrgX(i.x),o.setWorldOrgY(i.y);for(var s=0;s1;){var E=y[0];y.splice(0,1);var A=g.indexOf(E);A>=0&&g.splice(A,1),p--,u--}c=null!=e?(g.indexOf(y[0])+1)%p:0;for(var N=Math.abs(r-i)/u,T=c;d!=u;T=++T%p){var L=g[T].getOtherEnd(t);if(L!=e){var _=(i+d*N)%360,m=(_+N)%360;v.branchRadialLayout(L,t,_,m,n+o,o),d++}}},v.maxDiagonalInTree=function(t){for(var e=p.MIN_VALUE,i=0;ie&&(e=r)}return e},v.prototype.calcRepulsionRange=function(){return 2*(this.level+1)*this.idealEdgeLength},v.prototype.groupZeroDegreeMembers=function(){var t=this,e={};this.memberGroups={},this.idToDummyNode={};for(var i=[],r=this.graphManager.getAllNodes(),n=0;n1){var r="DummyCompound_"+i;t.memberGroups[r]=e[i];var n=e[i][0].getParent(),o=new s(t.graphManager);o.id=r,o.paddingLeft=n.paddingLeft||0,o.paddingRight=n.paddingRight||0,o.paddingBottom=n.paddingBottom||0,o.paddingTop=n.paddingTop||0,t.idToDummyNode[r]=o;var a=t.getGraphManager().add(t.newGraph(),o),h=n.getChild();h.add(o);for(var l=0;l=0;t--){var e=this.compoundOrder[t],i=e.id,r=e.paddingLeft,n=e.paddingTop;this.adjustLocations(this.tiledMemberPack[i],e.rect.x,e.rect.y,r,n)}},v.prototype.repopulateZeroDegreeMembers=function(){var t=this,e=this.tiledZeroDegreePack;Object.keys(e).forEach((function(i){var r=t.idToDummyNode[i],n=r.paddingLeft,o=r.paddingTop;t.adjustLocations(e[i],r.rect.x,r.rect.y,n,o)}))},v.prototype.getToBeTiled=function(t){var e=t.id;if(null!=this.toBeTiled[e])return this.toBeTiled[e];var i=t.getChild();if(null==i)return this.toBeTiled[e]=!1,!1;for(var r=i.getNodes(),n=0;n0)return this.toBeTiled[e]=!1,!1;if(null!=o.getChild()){if(!this.getToBeTiled(o))return this.toBeTiled[e]=!1,!1}else this.toBeTiled[o.id]=!1}return this.toBeTiled[e]=!0,!0},v.prototype.getNodeDegree=function(t){t.id;for(var e=t.getEdges(),i=0,r=0;rh&&(h=g.rect.height)}i+=h+t.verticalPadding}},v.prototype.tileCompoundMembers=function(t,e){var i=this;this.tiledMemberPack=[],Object.keys(t).forEach((function(r){var n=e[r];i.tiledMemberPack[r]=i.tileNodes(t[r],n.paddingLeft+n.paddingRight),n.rect.width=i.tiledMemberPack[r].width,n.rect.height=i.tiledMemberPack[r].height}))},v.prototype.tileNodes=function(t,e){var i={rows:[],rowWidth:[],rowHeight:[],width:0,height:e,verticalPadding:h.TILING_PADDING_VERTICAL,horizontalPadding:h.TILING_PADDING_HORIZONTAL};t.sort((function(t,e){return t.rect.width*t.rect.height>e.rect.width*e.rect.height?-1:t.rect.width*t.rect.height0&&(o+=t.horizontalPadding),t.rowWidth[i]=o,t.width0&&(s+=t.verticalPadding);var a=0;s>t.rowHeight[i]&&(a=t.rowHeight[i],t.rowHeight[i]=s,a=t.rowHeight[i]-a),t.height+=a,t.rows[i].push(e)},v.prototype.getShortestRowIndex=function(t){for(var e=-1,i=Number.MAX_VALUE,r=0;ri&&(e=r,i=t.rowWidth[r]);return e},v.prototype.canAddHorizontal=function(t,e,i){var r=this.getShortestRowIndex(t);if(r<0)return!0;var n=t.rowWidth[r];if(n+t.horizontalPadding+e<=t.width)return!0;var o,s,a=0;return t.rowHeight[r]0&&(a=i+t.verticalPadding-t.rowHeight[r]),o=t.width-n>=e+t.horizontalPadding?(t.height+a)/(n+e+t.horizontalPadding):(t.height+a)/t.width,a=i+t.verticalPadding,(s=t.widtho&&e!=i){r.splice(-1,1),t.rows[i].push(n),t.rowWidth[e]=t.rowWidth[e]-o,t.rowWidth[i]=t.rowWidth[i]+o,t.width=t.rowWidth[instance.getLongestRowIndex(t)];for(var s=Number.MIN_VALUE,a=0;as&&(s=r[a].height);e>0&&(s+=t.verticalPadding);var h=t.rowHeight[e]+t.rowHeight[i];t.rowHeight[e]=s,t.rowHeight[i]0)for(var g=n;g<=o;g++)h[0]+=this.grid[g][s-1].length+this.grid[g][s].length-1;if(o0)for(g=s;g<=a;g++)h[3]+=this.grid[n-1][g].length+this.grid[n][g].length-1;for(var u,c,d=p.MAX_VALUE,f=0;f0&&(s=i.getGraphManager().add(i.newGraph(),o),this.processChildrenList(s,u,i))}},u.prototype.stop=function(){return this.stopped=!0,this};var d=function(t){t("layout","cose-bilkent",u)};"undefined"!=typeof cytoscape&&d(cytoscape),t.exports=d}])},t.exports=r(i(87799))},23143:function(t){var e;e=function(){return function(t){var e={};function i(r){if(e[r])return e[r].exports;var n=e[r]={i:r,l:!1,exports:{}};return t[r].call(n.exports,n,n.exports,i),n.l=!0,n.exports}return i.m=t,i.c=e,i.i=function(t){return t},i.d=function(t,e,r){i.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:r})},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,"a",e),e},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.p="",i(i.s=26)}([function(t,e,i){"use strict";function r(){}r.QUALITY=1,r.DEFAULT_CREATE_BENDS_AS_NEEDED=!1,r.DEFAULT_INCREMENTAL=!1,r.DEFAULT_ANIMATION_ON_LAYOUT=!0,r.DEFAULT_ANIMATION_DURING_LAYOUT=!1,r.DEFAULT_ANIMATION_PERIOD=50,r.DEFAULT_UNIFORM_LEAF_NODE_SIZES=!1,r.DEFAULT_GRAPH_MARGIN=15,r.NODE_DIMENSIONS_INCLUDE_LABELS=!1,r.SIMPLE_NODE_SIZE=40,r.SIMPLE_NODE_HALF_SIZE=r.SIMPLE_NODE_SIZE/2,r.EMPTY_COMPOUND_NODE_SIZE=40,r.MIN_EDGE_LENGTH=1,r.WORLD_BOUNDARY=1e6,r.INITIAL_WORLD_BOUNDARY=r.WORLD_BOUNDARY/1e3,r.WORLD_CENTER_X=1200,r.WORLD_CENTER_Y=900,t.exports=r},function(t,e,i){"use strict";var r=i(2),n=i(8),o=i(9);function s(t,e,i){r.call(this,i),this.isOverlapingSourceAndTarget=!1,this.vGraphObject=i,this.bendpoints=[],this.source=t,this.target=e}for(var a in s.prototype=Object.create(r.prototype),r)s[a]=r[a];s.prototype.getSource=function(){return this.source},s.prototype.getTarget=function(){return this.target},s.prototype.isInterGraph=function(){return this.isInterGraph},s.prototype.getLength=function(){return this.length},s.prototype.isOverlapingSourceAndTarget=function(){return this.isOverlapingSourceAndTarget},s.prototype.getBendpoints=function(){return this.bendpoints},s.prototype.getLca=function(){return this.lca},s.prototype.getSourceInLca=function(){return this.sourceInLca},s.prototype.getTargetInLca=function(){return this.targetInLca},s.prototype.getOtherEnd=function(t){if(this.source===t)return this.target;if(this.target===t)return this.source;throw"Node is not incident with this edge"},s.prototype.getOtherEndInGraph=function(t,e){for(var i=this.getOtherEnd(t),r=e.getGraphManager().getRoot();;){if(i.getOwner()==e)return i;if(i.getOwner()==r)break;i=i.getOwner().getParent()}return null},s.prototype.updateLength=function(){var t=new Array(4);this.isOverlapingSourceAndTarget=n.getIntersection(this.target.getRect(),this.source.getRect(),t),this.isOverlapingSourceAndTarget||(this.lengthX=t[0]-t[2],this.lengthY=t[1]-t[3],Math.abs(this.lengthX)<1&&(this.lengthX=o.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=o.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY))},s.prototype.updateLengthSimple=function(){this.lengthX=this.target.getCenterX()-this.source.getCenterX(),this.lengthY=this.target.getCenterY()-this.source.getCenterY(),Math.abs(this.lengthX)<1&&(this.lengthX=o.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=o.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY)},t.exports=s},function(t,e,i){"use strict";t.exports=function(t){this.vGraphObject=t}},function(t,e,i){"use strict";var r=i(2),n=i(10),o=i(13),s=i(0),a=i(16),h=i(4);function l(t,e,i,s){null==i&&null==s&&(s=e),r.call(this,s),null!=t.graphManager&&(t=t.graphManager),this.estimatedSize=n.MIN_VALUE,this.inclusionTreeDepth=n.MAX_VALUE,this.vGraphObject=s,this.edges=[],this.graphManager=t,this.rect=null!=i&&null!=e?new o(e.x,e.y,i.width,i.height):new o}for(var g in l.prototype=Object.create(r.prototype),r)l[g]=r[g];l.prototype.getEdges=function(){return this.edges},l.prototype.getChild=function(){return this.child},l.prototype.getOwner=function(){return this.owner},l.prototype.getWidth=function(){return this.rect.width},l.prototype.setWidth=function(t){this.rect.width=t},l.prototype.getHeight=function(){return this.rect.height},l.prototype.setHeight=function(t){this.rect.height=t},l.prototype.getCenterX=function(){return this.rect.x+this.rect.width/2},l.prototype.getCenterY=function(){return this.rect.y+this.rect.height/2},l.prototype.getCenter=function(){return new h(this.rect.x+this.rect.width/2,this.rect.y+this.rect.height/2)},l.prototype.getLocation=function(){return new h(this.rect.x,this.rect.y)},l.prototype.getRect=function(){return this.rect},l.prototype.getDiagonal=function(){return Math.sqrt(this.rect.width*this.rect.width+this.rect.height*this.rect.height)},l.prototype.getHalfTheDiagonal=function(){return Math.sqrt(this.rect.height*this.rect.height+this.rect.width*this.rect.width)/2},l.prototype.setRect=function(t,e){this.rect.x=t.x,this.rect.y=t.y,this.rect.width=e.width,this.rect.height=e.height},l.prototype.setCenter=function(t,e){this.rect.x=t-this.rect.width/2,this.rect.y=e-this.rect.height/2},l.prototype.setLocation=function(t,e){this.rect.x=t,this.rect.y=e},l.prototype.moveBy=function(t,e){this.rect.x+=t,this.rect.y+=e},l.prototype.getEdgeListToNode=function(t){var e=[],i=this;return i.edges.forEach((function(r){if(r.target==t){if(r.source!=i)throw"Incorrect edge source!";e.push(r)}})),e},l.prototype.getEdgesBetween=function(t){var e=[],i=this;return i.edges.forEach((function(r){if(r.source!=i&&r.target!=i)throw"Incorrect edge source and/or target";r.target!=t&&r.source!=t||e.push(r)})),e},l.prototype.getNeighborsList=function(){var t=new Set,e=this;return e.edges.forEach((function(i){if(i.source==e)t.add(i.target);else{if(i.target!=e)throw"Incorrect incidency!";t.add(i.source)}})),t},l.prototype.withChildren=function(){var t=new Set;if(t.add(this),null!=this.child)for(var e=this.child.getNodes(),i=0;ie&&(this.rect.x-=(this.labelWidth-e)/2,this.setWidth(this.labelWidth)),this.labelHeight>i&&("center"==this.labelPos?this.rect.y-=(this.labelHeight-i)/2:"top"==this.labelPos&&(this.rect.y-=this.labelHeight-i),this.setHeight(this.labelHeight))}}},l.prototype.getInclusionTreeDepth=function(){if(this.inclusionTreeDepth==n.MAX_VALUE)throw"assert failed";return this.inclusionTreeDepth},l.prototype.transform=function(t){var e=this.rect.x;e>s.WORLD_BOUNDARY?e=s.WORLD_BOUNDARY:e<-s.WORLD_BOUNDARY&&(e=-s.WORLD_BOUNDARY);var i=this.rect.y;i>s.WORLD_BOUNDARY?i=s.WORLD_BOUNDARY:i<-s.WORLD_BOUNDARY&&(i=-s.WORLD_BOUNDARY);var r=new h(e,i),n=t.inverseTransformPoint(r);this.setLocation(n.x,n.y)},l.prototype.getLeft=function(){return this.rect.x},l.prototype.getRight=function(){return this.rect.x+this.rect.width},l.prototype.getTop=function(){return this.rect.y},l.prototype.getBottom=function(){return this.rect.y+this.rect.height},l.prototype.getParent=function(){return null==this.owner?null:this.owner.getParent()},t.exports=l},function(t,e,i){"use strict";function r(t,e){null==t&&null==e?(this.x=0,this.y=0):(this.x=t,this.y=e)}r.prototype.getX=function(){return this.x},r.prototype.getY=function(){return this.y},r.prototype.setX=function(t){this.x=t},r.prototype.setY=function(t){this.y=t},r.prototype.getDifference=function(t){return new DimensionD(this.x-t.x,this.y-t.y)},r.prototype.getCopy=function(){return new r(this.x,this.y)},r.prototype.translate=function(t){return this.x+=t.width,this.y+=t.height,this},t.exports=r},function(t,e,i){"use strict";var r=i(2),n=i(10),o=i(0),s=i(6),a=i(3),h=i(1),l=i(13),g=i(12),u=i(11);function c(t,e,i){r.call(this,i),this.estimatedSize=n.MIN_VALUE,this.margin=o.DEFAULT_GRAPH_MARGIN,this.edges=[],this.nodes=[],this.isConnected=!1,this.parent=t,null!=e&&e instanceof s?this.graphManager=e:null!=e&&e instanceof Layout&&(this.graphManager=e.graphManager)}for(var d in c.prototype=Object.create(r.prototype),r)c[d]=r[d];c.prototype.getNodes=function(){return this.nodes},c.prototype.getEdges=function(){return this.edges},c.prototype.getGraphManager=function(){return this.graphManager},c.prototype.getParent=function(){return this.parent},c.prototype.getLeft=function(){return this.left},c.prototype.getRight=function(){return this.right},c.prototype.getTop=function(){return this.top},c.prototype.getBottom=function(){return this.bottom},c.prototype.isConnected=function(){return this.isConnected},c.prototype.add=function(t,e,i){if(null==e&&null==i){var r=t;if(null==this.graphManager)throw"Graph has no graph mgr!";if(this.getNodes().indexOf(r)>-1)throw"Node already in graph!";return r.owner=this,this.getNodes().push(r),r}var n=t;if(!(this.getNodes().indexOf(e)>-1&&this.getNodes().indexOf(i)>-1))throw"Source or target not in graph!";if(e.owner!=i.owner||e.owner!=this)throw"Both owners must be this graph!";return e.owner!=i.owner?null:(n.source=e,n.target=i,n.isInterGraph=!1,this.getEdges().push(n),e.edges.push(n),i!=e&&i.edges.push(n),n)},c.prototype.remove=function(t){var e=t;if(t instanceof a){if(null==e)throw"Node is null!";if(null==e.owner||e.owner!=this)throw"Owner graph is invalid!";if(null==this.graphManager)throw"Owner graph manager is invalid!";for(var i=e.edges.slice(),r=i.length,n=0;n-1&&g>-1))throw"Source and/or target doesn't know this edge!";if(o.source.edges.splice(l,1),o.target!=o.source&&o.target.edges.splice(g,1),-1==(s=o.source.owner.getEdges().indexOf(o)))throw"Not in owner's edge list!";o.source.owner.getEdges().splice(s,1)}},c.prototype.updateLeftTop=function(){for(var t,e,i,r=n.MAX_VALUE,o=n.MAX_VALUE,s=this.getNodes(),a=s.length,h=0;h(t=l.getTop())&&(r=t),o>(e=l.getLeft())&&(o=e)}return r==n.MAX_VALUE?null:(i=null!=s[0].getParent().paddingLeft?s[0].getParent().paddingLeft:this.margin,this.left=o-i,this.top=r-i,new g(this.left,this.top))},c.prototype.updateBounds=function(t){for(var e,i,r,o,s,a=n.MAX_VALUE,h=-n.MAX_VALUE,g=n.MAX_VALUE,u=-n.MAX_VALUE,c=this.nodes,d=c.length,p=0;p(e=f.getLeft())&&(a=e),h<(i=f.getRight())&&(h=i),g>(r=f.getTop())&&(g=r),u<(o=f.getBottom())&&(u=o)}var y=new l(a,g,h-a,u-g);a==n.MAX_VALUE&&(this.left=this.parent.getLeft(),this.right=this.parent.getRight(),this.top=this.parent.getTop(),this.bottom=this.parent.getBottom()),s=null!=c[0].getParent().paddingLeft?c[0].getParent().paddingLeft:this.margin,this.left=y.x-s,this.right=y.x+y.width+s,this.top=y.y-s,this.bottom=y.y+y.height+s},c.calculateBounds=function(t){for(var e,i,r,o,s=n.MAX_VALUE,a=-n.MAX_VALUE,h=n.MAX_VALUE,g=-n.MAX_VALUE,u=t.length,c=0;c(e=d.getLeft())&&(s=e),a<(i=d.getRight())&&(a=i),h>(r=d.getTop())&&(h=r),g<(o=d.getBottom())&&(g=o)}return new l(s,h,a-s,g-h)},c.prototype.getInclusionTreeDepth=function(){return this==this.graphManager.getRoot()?1:this.parent.getInclusionTreeDepth()},c.prototype.getEstimatedSize=function(){if(this.estimatedSize==n.MIN_VALUE)throw"assert failed";return this.estimatedSize},c.prototype.calcEstimatedSize=function(){for(var t=0,e=this.nodes,i=e.length,r=0;r=this.nodes.length){var h=0;n.forEach((function(e){e.owner==t&&h++})),h==this.nodes.length&&(this.isConnected=!0)}}else this.isConnected=!0},t.exports=c},function(t,e,i){"use strict";var r,n=i(1);function o(t){r=i(5),this.layout=t,this.graphs=[],this.edges=[]}o.prototype.addRoot=function(){var t=this.layout.newGraph(),e=this.layout.newNode(null),i=this.add(t,e);return this.setRootGraph(i),this.rootGraph},o.prototype.add=function(t,e,i,r,n){if(null==i&&null==r&&null==n){if(null==t)throw"Graph is null!";if(null==e)throw"Parent node is null!";if(this.graphs.indexOf(t)>-1)throw"Graph already in this graph mgr!";if(this.graphs.push(t),null!=t.parent)throw"Already has a parent!";if(null!=e.child)throw"Already has a child!";return t.parent=e,e.child=t,t}n=i,i=t;var o=(r=e).getOwner(),s=n.getOwner();if(null==o||o.getGraphManager()!=this)throw"Source not in this graph mgr!";if(null==s||s.getGraphManager()!=this)throw"Target not in this graph mgr!";if(o==s)return i.isInterGraph=!1,o.add(i,r,n);if(i.isInterGraph=!0,i.source=r,i.target=n,this.edges.indexOf(i)>-1)throw"Edge already in inter-graph edge list!";if(this.edges.push(i),null==i.source||null==i.target)throw"Edge source and/or target is null!";if(-1!=i.source.edges.indexOf(i)||-1!=i.target.edges.indexOf(i))throw"Edge already in source and/or target incidency list!";return i.source.edges.push(i),i.target.edges.push(i),i},o.prototype.remove=function(t){if(t instanceof r){var e=t;if(e.getGraphManager()!=this)throw"Graph not in this graph mgr";if(e!=this.rootGraph&&(null==e.parent||e.parent.graphManager!=this))throw"Invalid parent node!";for(var i,o=[],s=(o=o.concat(e.getEdges())).length,a=0;a=e.getRight()?i[0]+=Math.min(e.getX()-t.getX(),t.getRight()-e.getRight()):e.getX()<=t.getX()&&e.getRight()>=t.getRight()&&(i[0]+=Math.min(t.getX()-e.getX(),e.getRight()-t.getRight())),t.getY()<=e.getY()&&t.getBottom()>=e.getBottom()?i[1]+=Math.min(e.getY()-t.getY(),t.getBottom()-e.getBottom()):e.getY()<=t.getY()&&e.getBottom()>=t.getBottom()&&(i[1]+=Math.min(t.getY()-e.getY(),e.getBottom()-t.getBottom()));var o=Math.abs((e.getCenterY()-t.getCenterY())/(e.getCenterX()-t.getCenterX()));e.getCenterY()===t.getCenterY()&&e.getCenterX()===t.getCenterX()&&(o=1);var s=o*i[0],a=i[1]/o;i[0]s)return i[0]=r,i[1]=h,i[2]=o,i[3]=A,!1;if(no)return i[0]=a,i[1]=n,i[2]=E,i[3]=s,!1;if(ro?(i[0]=g,i[1]=u,_=!0):(i[0]=l,i[1]=h,_=!0):O===D&&(r>o?(i[0]=a,i[1]=h,_=!0):(i[0]=c,i[1]=u,_=!0)),-I===D?o>r?(i[2]=v,i[3]=A,m=!0):(i[2]=E,i[3]=y,m=!0):I===D&&(o>r?(i[2]=f,i[3]=y,m=!0):(i[2]=N,i[3]=A,m=!0)),_&&m)return!1;if(r>o?n>s?(w=this.getCardinalDirection(O,D,4),R=this.getCardinalDirection(I,D,2)):(w=this.getCardinalDirection(-O,D,3),R=this.getCardinalDirection(-I,D,1)):n>s?(w=this.getCardinalDirection(-O,D,1),R=this.getCardinalDirection(-I,D,3)):(w=this.getCardinalDirection(O,D,2),R=this.getCardinalDirection(I,D,4)),!_)switch(w){case 1:M=h,C=r+-p/D,i[0]=C,i[1]=M;break;case 2:C=c,M=n+d*D,i[0]=C,i[1]=M;break;case 3:M=u,C=r+p/D,i[0]=C,i[1]=M;break;case 4:C=g,M=n+-d*D,i[0]=C,i[1]=M}if(!m)switch(R){case 1:x=y,G=o+-L/D,i[2]=G,i[3]=x;break;case 2:G=N,x=s+T*D,i[2]=G,i[3]=x;break;case 3:x=A,G=o+L/D,i[2]=G,i[3]=x;break;case 4:G=v,x=s+-T*D,i[2]=G,i[3]=x}}return!1},n.getCardinalDirection=function(t,e,i){return t>e?i:1+i%4},n.getIntersection=function(t,e,i,n){if(null==n)return this.getIntersection2(t,e,i);var o,s,a,h,l,g,u,c=t.x,d=t.y,p=e.x,f=e.y,y=i.x,E=i.y,v=n.x,A=n.y;return 0==(u=(o=f-d)*(h=y-v)-(s=A-E)*(a=c-p))?null:new r((a*(g=v*E-y*A)-h*(l=p*d-c*f))/u,(s*l-o*g)/u)},n.angleOfVector=function(t,e,i,r){var n=void 0;return t!==i?(n=Math.atan((r-e)/(i-t)),i0?1:t<0?-1:0},r.floor=function(t){return t<0?Math.ceil(t):Math.floor(t)},r.ceil=function(t){return t<0?Math.floor(t):Math.ceil(t)},t.exports=r},function(t,e,i){"use strict";function r(){}r.MAX_VALUE=2147483647,r.MIN_VALUE=-2147483648,t.exports=r},function(t,e,i){"use strict";var r=function(){function t(t,e){for(var i=0;i0&&e;){for(a.push(l[0]);a.length>0&&e;){var g=a[0];a.splice(0,1),s.add(g);var u=g.getEdges();for(o=0;o-1&&l.splice(f,1)}s=new Set,h=new Map}else t=[]}return t},c.prototype.createDummyNodesForBendpoints=function(t){for(var e=[],i=t.source,r=this.graphManager.calcLowestCommonAncestor(t.source,t.target),n=0;n0){for(var n=this.edgeToDummyNodes.get(i),o=0;o=0&&e.splice(u,1),g.getNeighborsList().forEach((function(t){if(i.indexOf(t)<0){var e=r.get(t)-1;1==e&&h.push(t),r.set(t,e)}}))}i=i.concat(h),1!=e.length&&2!=e.length||(n=!0,o=e[0])}return o},c.prototype.setGraphManager=function(t){this.graphManager=t},t.exports=c},function(t,e,i){"use strict";function r(){}r.seed=1,r.x=0,r.nextDouble=function(){return r.x=1e4*Math.sin(r.seed++),r.x-Math.floor(r.x)},t.exports=r},function(t,e,i){"use strict";var r=i(4);function n(t,e){this.lworldOrgX=0,this.lworldOrgY=0,this.ldeviceOrgX=0,this.ldeviceOrgY=0,this.lworldExtX=1,this.lworldExtY=1,this.ldeviceExtX=1,this.ldeviceExtY=1}n.prototype.getWorldOrgX=function(){return this.lworldOrgX},n.prototype.setWorldOrgX=function(t){this.lworldOrgX=t},n.prototype.getWorldOrgY=function(){return this.lworldOrgY},n.prototype.setWorldOrgY=function(t){this.lworldOrgY=t},n.prototype.getWorldExtX=function(){return this.lworldExtX},n.prototype.setWorldExtX=function(t){this.lworldExtX=t},n.prototype.getWorldExtY=function(){return this.lworldExtY},n.prototype.setWorldExtY=function(t){this.lworldExtY=t},n.prototype.getDeviceOrgX=function(){return this.ldeviceOrgX},n.prototype.setDeviceOrgX=function(t){this.ldeviceOrgX=t},n.prototype.getDeviceOrgY=function(){return this.ldeviceOrgY},n.prototype.setDeviceOrgY=function(t){this.ldeviceOrgY=t},n.prototype.getDeviceExtX=function(){return this.ldeviceExtX},n.prototype.setDeviceExtX=function(t){this.ldeviceExtX=t},n.prototype.getDeviceExtY=function(){return this.ldeviceExtY},n.prototype.setDeviceExtY=function(t){this.ldeviceExtY=t},n.prototype.transformX=function(t){var e=0,i=this.lworldExtX;return 0!=i&&(e=this.ldeviceOrgX+(t-this.lworldOrgX)*this.ldeviceExtX/i),e},n.prototype.transformY=function(t){var e=0,i=this.lworldExtY;return 0!=i&&(e=this.ldeviceOrgY+(t-this.lworldOrgY)*this.ldeviceExtY/i),e},n.prototype.inverseTransformX=function(t){var e=0,i=this.ldeviceExtX;return 0!=i&&(e=this.lworldOrgX+(t-this.ldeviceOrgX)*this.lworldExtX/i),e},n.prototype.inverseTransformY=function(t){var e=0,i=this.ldeviceExtY;return 0!=i&&(e=this.lworldOrgY+(t-this.ldeviceOrgY)*this.lworldExtY/i),e},n.prototype.inverseTransformPoint=function(t){return new r(this.inverseTransformX(t.x),this.inverseTransformY(t.y))},t.exports=n},function(t,e,i){"use strict";var r=i(15),n=i(7),o=i(0),s=i(8),a=i(9);function h(){r.call(this),this.useSmartIdealEdgeLengthCalculation=n.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION,this.idealEdgeLength=n.DEFAULT_EDGE_LENGTH,this.springConstant=n.DEFAULT_SPRING_STRENGTH,this.repulsionConstant=n.DEFAULT_REPULSION_STRENGTH,this.gravityConstant=n.DEFAULT_GRAVITY_STRENGTH,this.compoundGravityConstant=n.DEFAULT_COMPOUND_GRAVITY_STRENGTH,this.gravityRangeFactor=n.DEFAULT_GRAVITY_RANGE_FACTOR,this.compoundGravityRangeFactor=n.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR,this.displacementThresholdPerNode=3*n.DEFAULT_EDGE_LENGTH/100,this.coolingFactor=n.DEFAULT_COOLING_FACTOR_INCREMENTAL,this.initialCoolingFactor=n.DEFAULT_COOLING_FACTOR_INCREMENTAL,this.totalDisplacement=0,this.oldTotalDisplacement=0,this.maxIterations=n.MAX_ITERATIONS}for(var l in h.prototype=Object.create(r.prototype),r)h[l]=r[l];h.prototype.initParameters=function(){r.prototype.initParameters.call(this,arguments),this.totalIterations=0,this.notAnimatedIterations=0,this.useFRGridVariant=n.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION,this.grid=[]},h.prototype.calcIdealEdgeLengths=function(){for(var t,e,i,r,s,a,h=this.getGraphManager().getAllEdges(),l=0;ln.ADAPTATION_LOWER_NODE_LIMIT&&(this.coolingFactor=Math.max(this.coolingFactor*n.COOLING_ADAPTATION_FACTOR,this.coolingFactor-(t-n.ADAPTATION_LOWER_NODE_LIMIT)/(n.ADAPTATION_UPPER_NODE_LIMIT-n.ADAPTATION_LOWER_NODE_LIMIT)*this.coolingFactor*(1-n.COOLING_ADAPTATION_FACTOR))),this.maxNodeDisplacement=n.MAX_NODE_DISPLACEMENT_INCREMENTAL):(t>n.ADAPTATION_LOWER_NODE_LIMIT?this.coolingFactor=Math.max(n.COOLING_ADAPTATION_FACTOR,1-(t-n.ADAPTATION_LOWER_NODE_LIMIT)/(n.ADAPTATION_UPPER_NODE_LIMIT-n.ADAPTATION_LOWER_NODE_LIMIT)*(1-n.COOLING_ADAPTATION_FACTOR)):this.coolingFactor=1,this.initialCoolingFactor=this.coolingFactor,this.maxNodeDisplacement=n.MAX_NODE_DISPLACEMENT),this.maxIterations=Math.max(5*this.getAllNodes().length,this.maxIterations),this.totalDisplacementThreshold=this.displacementThresholdPerNode*this.getAllNodes().length,this.repulsionRange=this.calcRepulsionRange()},h.prototype.calcSpringForces=function(){for(var t,e=this.getAllEdges(),i=0;i0&&void 0!==arguments[0])||arguments[0],a=arguments.length>1&&void 0!==arguments[1]&&arguments[1],h=this.getAllNodes();if(this.useFRGridVariant)for(this.totalIterations%n.GRID_CALCULATION_CHECK_PERIOD==1&&s&&this.updateGrid(),o=new Set,t=0;t(h=e.getEstimatedSize()*this.gravityRangeFactor)||a>h)&&(t.gravitationForceX=-this.gravityConstant*n,t.gravitationForceY=-this.gravityConstant*o):(s>(h=e.getEstimatedSize()*this.compoundGravityRangeFactor)||a>h)&&(t.gravitationForceX=-this.gravityConstant*n*this.compoundGravityConstant,t.gravitationForceY=-this.gravityConstant*o*this.compoundGravityConstant)},h.prototype.isConverged=function(){var t,e=!1;return this.totalIterations>this.maxIterations/3&&(e=Math.abs(this.totalDisplacement-this.oldTotalDisplacement)<2),t=this.totalDisplacement=a.length||l>=a[0].length))for(var g=0;gt}}]),t}();t.exports=o},function(t,e,i){"use strict";var r=function(){function t(t,e){for(var i=0;i2&&void 0!==arguments[2]?arguments[2]:1,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:-1,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:-1;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.sequence1=e,this.sequence2=i,this.match_score=r,this.mismatch_penalty=n,this.gap_penalty=o,this.iMax=e.length+1,this.jMax=i.length+1,this.grid=new Array(this.iMax);for(var s=0;s=0;i--){var r=this.listeners[i];r.event===t&&r.callback===e&&this.listeners.splice(i,1)}},n.emit=function(t,e){for(var i=0;i{"use strict";i.r(e),i.d(e,{render:()=>p});var r=i(40797),n=i(90165),o=i(43457),s=i(70451);function a(t,e){t.forEach((t=>{const i={id:t.id,labelText:t.label,height:t.height,width:t.width,padding:t.padding??0};Object.keys(t).forEach((e=>{["id","label","height","width","padding","x","y"].includes(e)||(i[e]=t[e])})),e.add({group:"nodes",data:i,position:{x:t.x??0,y:t.y??0}})}))}function h(t,e){t.forEach((t=>{const i={id:t.id,source:t.start,target:t.end};Object.keys(t).forEach((e=>{["id","start","end"].includes(e)||(i[e]=t[e])})),e.add({group:"edges",data:i})}))}function l(t){return new Promise((e=>{const i=(0,s.Ltv)("body").append("div").attr("id","cy").attr("style","display:none"),o=(0,n.A)({container:document.getElementById("cy"),style:[{selector:"edge",style:{"curve-style":"bezier"}}]});i.remove(),a(t.nodes,o),h(t.edges,o),o.nodes().forEach((function(t){t.layoutDimensions=()=>{const e=t.data();return{w:e.width,h:e.height}}}));o.layout({name:"cose-bilkent",quality:"proof",styleEnabled:!1,animate:!1}).run(),o.ready((t=>{r.Rm.info("Cytoscape ready",t),e(o)}))}))}function g(t){return t.nodes().map((t=>{const e=t.data(),i=t.position(),r={id:e.id,x:i.x,y:i.y};return Object.keys(e).forEach((t=>{"id"!==t&&(r[t]=e[t])})),r}))}function u(t){return t.edges().map((t=>{const e=t.data(),i=t._private.rscratch,r={id:e.id,source:e.source,target:e.target,startX:i.startX,startY:i.startY,midX:i.midX,midY:i.midY,endX:i.endX,endY:i.endY};return Object.keys(e).forEach((t=>{["id","source","target"].includes(t)||(r[t]=e[t])})),r}))}async function c(t,e){r.Rm.debug("Starting cose-bilkent layout algorithm");try{d(t);const e=await l(t),i=g(e),n=u(e);return r.Rm.debug(`Layout completed: ${i.length} nodes, ${n.length} edges`),{nodes:i,edges:n}}catch(i){throw r.Rm.error("Error in cose-bilkent layout algorithm:",i),i}}function d(t){if(!t)throw new Error("Layout data is required");if(!t.config)throw new Error("Configuration is required in layout data");if(!t.rootNode)throw new Error("Root node is required");if(!t.nodes||!Array.isArray(t.nodes))throw new Error("No nodes found in layout data");if(!Array.isArray(t.edges))throw new Error("Edges array is required in layout data");return!0}n.A.use(o),(0,r.K2)(a,"addNodes"),(0,r.K2)(h,"addEdges"),(0,r.K2)(l,"createCytoscapeInstance"),(0,r.K2)(g,"extractPositionedNodes"),(0,r.K2)(u,"extractPositionedEdges"),(0,r.K2)(c,"executeCoseBilkentLayout"),(0,r.K2)(d,"validateLayoutData");var p=(0,r.K2)((async(t,e,{insertCluster:i,insertEdge:r,insertEdgeLabel:n,insertMarkers:o,insertNode:s,log:a,positionEdgeLabel:h},{algorithm:l})=>{const g={},u={},d=e.select("g");o(d,t.markers,t.type,t.diagramId);const p=d.insert("g").attr("class","subgraphs"),f=d.insert("g").attr("class","edgePaths"),y=d.insert("g").attr("class","edgeLabels"),E=d.insert("g").attr("class","nodes");a.debug("Inserting nodes into DOM for dimension calculation"),await Promise.all(t.nodes.map((async e=>{if(e.isGroup){const t={...e};u[e.id]=t,g[e.id]=t,await i(p,e)}else{const i={...e};g[e.id]=i;const r=await s(E,e,{config:t.config,dir:t.direction||"TB"}),n=r.node().getBBox();i.width=n.width,i.height=n.height,i.domId=r,a.debug(`Node ${e.id} dimensions: ${n.width}x${n.height}`)}}))),a.debug("Running cose-bilkent layout algorithm");const v={...t,nodes:t.nodes.map((t=>{const e=g[t.id];return{...t,width:e.width,height:e.height}}))},A=await c(v,t.config);a.debug("Positioning nodes based on layout results"),A.nodes.forEach((t=>{const e=g[t.id];e?.domId&&(e.domId.attr("transform",`translate(${t.x}, ${t.y})`),e.x=t.x,e.y=t.y,a.debug(`Positioned node ${e.id} at center (${t.x}, ${t.y})`))})),A.edges.forEach((e=>{const i=t.edges.find((t=>t.id===e.id));i&&(i.points=[{x:e.startX,y:e.startY},{x:e.midX,y:e.midY},{x:e.endX,y:e.endY}])})),a.debug("Inserting and positioning edges"),await Promise.all(t.edges.map((async e=>{await n(y,e);const i=g[e.start??""],o=g[e.end??""];if(i&&o){const n=A.edges.find((t=>t.id===e.id));if(n){a.debug("APA01 positionedEdge",n);const s={...e},l=r(f,s,u,t.type,i,o,t.diagramId);h(s,l)}else{const n={...e,points:[{x:i.x||0,y:i.y||0},{x:o.x||0,y:o.y||0}]},s=r(f,n,u,t.type,i,o,t.diagramId);h(n,s)}}}))),a.debug("Cose-bilkent rendering completed")}),"render")}}]); \ No newline at end of file diff --git a/assets/js/79ab7a8b.bad9e664.js b/assets/js/79ab7a8b.bad9e664.js new file mode 100644 index 00000000..4b32002e --- /dev/null +++ b/assets/js/79ab7a8b.bad9e664.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7684],{35471:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>a,contentTitle:()=>o,default:()=>h,frontMatter:()=>d,metadata:()=>r,toc:()=>c});const r=JSON.parse('{"id":"How-To/StatusBar","title":"Add an indicator icon on the status bar","description":"This document outlines the basic features of working with Status Bar, including:","source":"@site/api/08-How-To/StatusBar.md","sourceDirName":"08-How-To","slug":"/How-To/StatusBar","permalink":"/api/How-To/StatusBar","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Add an indicator icon on the status bar"},"sidebar":"tutorialSidebar","previous":{"title":"How to create Panels","permalink":"/api/How-To/Panels"},"next":{"title":"Preferences","permalink":"/api/API-Reference/JSUtils/Preferences"}}');var s=n(74848),i=n(28453);const d={title:"Add an indicator icon on the status bar"},o=void 0,a={},c=[{value:"Adding a button on Status Bar",id:"adding-a-button-on-status-bar",level:2}];function l(e){const t={a:"a",blockquote:"blockquote",code:"code",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.p,{children:"This document outlines the basic features of working with Status Bar, including:"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"#adding-a-button-on-status-bar",children:"How to add a button on Status Bar"})}),"\n"]}),"\n",(0,s.jsx)(t.h2,{id:"adding-a-button-on-status-bar",children:"Adding a button on Status Bar"}),"\n",(0,s.jsxs)(t.ol,{children:["\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:["Import the ",(0,s.jsx)(t.code,{children:"StatusBar"})," module."]}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-jsx",children:'const StatusBar = brackets.getModule("widgets/StatusBar");\n'})}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsx)(t.p,{children:"Register the command."}),"\n",(0,s.jsx)(t.p,{children:"Register the command that will trigger the clicking."}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-jsx",children:'var MY_COMMAND_ID = "helloworld_sayhello";\nCommandManager.register("Hello World", MY_COMMAND_ID, handleHelloWorld);\n'})}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsx)(t.p,{children:"Add the button to the StatusBar."}),"\n",(0,s.jsxs)(t.p,{children:["To add the button to StatusBar, use ",(0,s.jsx)(t.code,{children:"addIndicator()"})," :-"]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-jsx",children:'StatusBar.addIndicator(\n MY_COMMAND_ID, // unique ID for this indicator\n $("
    Test
    ").click(handleHelloWorld), // Optional DOMNode for the indicator\n true, // show the indicator\n "hello-world-status", // CSS class\n "tooltip", // tooltip text\n);\n'})}),"\n",(0,s.jsxs)(t.p,{children:["\u2192 The parameters of the ",(0,s.jsx)(t.code,{children:"addIndicator()"})," method :-"]}),"\n",(0,s.jsxs)(t.table,{children:[(0,s.jsx)(t.thead,{children:(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.th,{children:"Param"}),(0,s.jsx)(t.th,{children:"Type"}),(0,s.jsx)(t.th,{children:"Description"})]})}),(0,s.jsxs)(t.tbody,{children:[(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"id"}),(0,s.jsx)(t.td,{children:(0,s.jsx)(t.code,{children:"string"})}),(0,s.jsx)(t.td,{children:"Registration id of the indicator to be updated."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"[indicator]"}),(0,s.jsxs)(t.td,{children:[(0,s.jsx)(t.code,{children:"DOMNode"})," or ",(0,s.jsx)(t.code,{children:"jQueryObject"})]}),(0,s.jsx)(t.td,{children:"Optional DOMNode for the indicator"})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"[visible]"}),(0,s.jsx)(t.td,{children:(0,s.jsx)(t.code,{children:"boolean"})}),(0,s.jsx)(t.td,{children:"Shows or hides the indicator over the statusbar."})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"[style]"}),(0,s.jsx)(t.td,{children:(0,s.jsx)(t.code,{children:"string"})}),(0,s.jsx)(t.td,{children:'Sets the attribute "class" of the indicator.'})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"[tooltip]"}),(0,s.jsx)(t.td,{children:(0,s.jsx)(t.code,{children:"string"})}),(0,s.jsx)(t.td,{children:'Sets the attribute "title" of the indicator.'})]}),(0,s.jsxs)(t.tr,{children:[(0,s.jsx)(t.td,{children:"[insertBefore]"}),(0,s.jsx)(t.td,{children:(0,s.jsx)(t.code,{children:"string"})}),(0,s.jsx)(t.td,{children:"An id of an existing status bar indicator. The new indicator will be inserted before (i.e. to the left of) the indicator specified by this parameter."})]})]})]}),"\n",(0,s.jsxs)(t.blockquote,{children:["\n",(0,s.jsxs)(t.p,{children:["For a detailed description, refer to ",(0,s.jsx)(t.a,{href:"https://docs.phcode.dev/api/API-Reference/widgets/StatusBar",children:"this link"}),"."]}),"\n"]})]})}function h(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(l,{...e})}):l(e)}},28453:(e,t,n)=>{n.d(t,{R:()=>d,x:()=>o});var r=n(96540);const s={},i=r.createContext(s);function d(e){const t=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:d(e.components),r.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/7afe9146.6b1ef5d8.js b/assets/js/7afe9146.6b1ef5d8.js new file mode 100644 index 00000000..854e2cc9 --- /dev/null +++ b/assets/js/7afe9146.6b1ef5d8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[292],{77898:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>d,default:()=>x,frontMatter:()=>t,metadata:()=>i,toc:()=>h});const i=JSON.parse('{"id":"Schools & Workplaces/ai-control","title":"AI Control For School And Work","description":"\ud83d\udd10 Disable or manage AI features in Phoenix Code for educational and enterprise environments.","source":"@site/docs/09-Schools & Workplaces/02-ai-control.md","sourceDirName":"09-Schools & Workplaces","slug":"/control-ai","permalink":"/docs/control-ai","draft":false,"unlisted":false,"editUrl":"https://github.com/phcode-dev/docs/blob/main/docs/09-Schools & Workplaces/02-ai-control.md","tags":[],"version":"current","sidebarPosition":2,"frontMatter":{"title":"AI Control For School And Work","slug":"/control-ai"},"sidebar":"tutorialSidebar","previous":{"title":"Phoenix Pro for Education (Free)","permalink":"/docs/phoenix-pro-school"}}');var l=s(74848),a=s(28453),o=s(11470),r=s(19365);const t={title:"AI Control For School And Work",slug:"/control-ai"},d="AI Control For School And Work",c={},h=[{value:"Overview",id:"overview",level:2},{value:"Installation",id:"installation",level:2},{value:"System Requirements",id:"system-requirements",level:3},{value:"Installing Configuration Scripts",id:"installing-configuration-scripts",level:3},{value:"Windows Installation",id:"windows-installation",level:4},{value:"macOS Installation",id:"macos-installation",level:4},{value:"Linux Installation",id:"linux-installation",level:4},{value:"Script Command-Line Options",id:"script-command-line-options",level:2},{value:"Common Configuration Examples",id:"common-configuration-examples",level:2},{value:"Disabling AI for All Users",id:"disabling-ai-for-all-users",level:3},{value:"Enabling AI for All Users",id:"enabling-ai-for-all-users",level:3},{value:"Enabling AI for Specific Users Only",id:"enabling-ai-for-specific-users-only",level:3},{value:"Verifying AI Control Status",id:"verifying-ai-control-status",level:2},{value:"Installing the Extension",id:"installing-the-extension",level:3},{value:"Checking Status",id:"checking-status",level:3},{value:"Desktop App Status Check",id:"desktop-app-status-check",level:4},{value:"Example: When AI is disabled",id:"example-when-ai-is-disabled",level:5},{value:"Example: AI enabled for selected users only",id:"example-ai-enabled-for-selected-users-only",level:5},{value:"Browser Version Status Check",id:"browser-version-status-check",level:4},{value:"Example: AI enabled/not firewalled",id:"example-ai-enablednot-firewalled",level:5},{value:"Configuration Options",id:"configuration-options",level:2},{value:"Desktop Applications (Recommended Method)",id:"desktop-applications-recommended-method",level:3},{value:"Network Blocking (For Browser Version)",id:"network-blocking-for-browser-version",level:3},{value:"FAQ",id:"faq",level:2},{value:"Additional Resources",id:"additional-resources",level:2}];function u(e){const n={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",header:"header",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,a.R)(),...e.components};return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(n.header,{children:(0,l.jsx)(n.h1,{id:"ai-control-for-school-and-work",children:"AI Control For School And Work"})}),"\n",(0,l.jsx)(n.p,{children:"\ud83d\udd10 Disable or manage AI features in Phoenix Code for educational and enterprise environments."}),"\n",(0,l.jsx)(n.h2,{id:"overview",children:"Overview"}),"\n",(0,l.jsx)(n.p,{children:"Phoenix Code AI Control provides system administrators with tools to manage AI functionality in educational and enterprise settings. This feature helps schools and organizations to:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:"Disable AI features system-wide"}),"\n",(0,l.jsx)(n.li,{children:"Enable AI selectively for specific users"}),"\n",(0,l.jsx)(n.li,{children:"Configure administrative contacts for AI management"}),"\n",(0,l.jsx)(n.li,{children:"Verify AI control status on end-user devices"}),"\n"]}),"\n",(0,l.jsx)(n.h2,{id:"installation",children:"Installation"}),"\n",(0,l.jsx)(n.h3,{id:"system-requirements",children:"System Requirements"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:"Windows 10/11, macOS 10.15+, or Ubuntu/Debian-based Linux"}),"\n",(0,l.jsx)(n.li,{children:"Administrative access for system-wide installation"}),"\n",(0,l.jsx)(n.li,{children:"Phoenix Code Desktop or Browser version"}),"\n"]}),"\n",(0,l.jsx)(n.h3,{id:"installing-configuration-scripts",children:"Installing Configuration Scripts"}),"\n",(0,l.jsxs)(n.p,{children:["Download the appropriate script for your platform from ",(0,l.jsx)(n.a,{href:"https://github.com/phcode-dev/phoenix-code-ai-control/releases/latest/",children:"this link"}),"."]}),"\n",(0,l.jsxs)(o.A,{defaultValue:"windows",values:[{label:"Windows",value:"windows"},{label:"macOS",value:"macos"},{label:"Linux",value:"linux"}],children:[(0,l.jsxs)(r.A,{value:"windows",children:[(0,l.jsx)(n.h4,{id:"windows-installation",children:"Windows Installation"}),(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:"Download the Windows Batch script:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.a,{href:"https://github.com/phcode-dev/phoenix-code-ai-control/releases/latest/",children:"setup_phoenix_ai_control_win.bat"})}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:"Open Command Prompt as Administrator:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:'Press Win+X and select "Command Prompt (Admin)"'}),"\n",(0,l.jsxs)(n.li,{children:["Navigate to the download location using ",(0,l.jsx)(n.code,{children:"cd"})," command"]}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:"Execute with parameters, for example:"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-batch",children:"setup_phoenix_ai_control_win.bat --managedByEmail school.admin@example.edu --disableAI\n"})}),"\n"]}),"\n"]}),(0,l.jsx)(n.admonition,{type:"note",children:(0,l.jsxs)(n.p,{children:["The ",(0,l.jsx)(n.code,{children:"--managedByEmail"})," parameter is optional but recommended. It provides an administrative contact for managing access to AI and educational features in the future. This email will be linked to your institution's AI management if given."]})})]}),(0,l.jsxs)(r.A,{value:"macos",children:[(0,l.jsx)(n.h4,{id:"macos-installation",children:"macOS Installation"}),(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:"Download the macOS script:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.a,{href:"https://github.com/phcode-dev/phoenix-code-ai-control/releases/latest/",children:"setup_phoenix_ai_control_mac.sh"})}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:"Open Terminal and navigate to your download location"}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:"Make the script executable:"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:"chmod +x setup_phoenix_ai_control_mac.sh\n"})}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:"Execute with parameters:"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:"sudo ./setup_phoenix_ai_control_mac.sh --managedByEmail school.admin@example.edu --disableAI\n"})}),"\n"]}),"\n"]}),(0,l.jsx)(n.admonition,{type:"note",children:(0,l.jsxs)(n.p,{children:["The ",(0,l.jsx)(n.code,{children:"--managedByEmail"})," parameter is optional but recommended. It provides an administrative contact for managing access to AI and educational features in the future. This email will be linked to your institution's AI management if given."]})})]}),(0,l.jsxs)(r.A,{value:"linux",children:[(0,l.jsx)(n.h4,{id:"linux-installation",children:"Linux Installation"}),(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:"Download the Linux script:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.a,{href:"https://github.com/phcode-dev/phoenix-code-ai-control/releases/latest/",children:"setup_phoenix_ai_control_linux.sh"})}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:"Open Terminal and navigate to your download location"}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:"Make the script executable:"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:"chmod +x setup_phoenix_ai_control_linux.sh\n"})}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["\n",(0,l.jsx)(n.p,{children:"Execute with parameters:"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:"sudo ./setup_phoenix_ai_control_linux.sh --managedByEmail school.admin@example.edu --disableAI\n"})}),"\n"]}),"\n"]}),(0,l.jsx)(n.admonition,{type:"note",children:(0,l.jsxs)(n.p,{children:["The ",(0,l.jsx)(n.code,{children:"--managedByEmail"})," parameter is optional but recommended. It provides an administrative contact for managing access to AI and educational features in the future. This email will be linked to your institution's AI management if given."]})})]})]}),"\n",(0,l.jsx)(n.h2,{id:"script-command-line-options",children:"Script Command-Line Options"}),"\n",(0,l.jsx)(n.p,{children:"All installation scripts support the same command-line options:"}),"\n",(0,l.jsxs)(n.table,{children:[(0,l.jsx)(n.thead,{children:(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.th,{children:"Option"}),(0,l.jsx)(n.th,{children:"Description"})]})}),(0,l.jsxs)(n.tbody,{children:[(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.td,{children:(0,l.jsx)(n.code,{children:"--help"})}),(0,l.jsx)(n.td,{children:"Display help"})]}),(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.td,{children:(0,l.jsx)(n.code,{children:"--managedByEmail "})}),(0,l.jsx)(n.td,{children:"Optional but recommended. Admin email who manages AI policy. Can be used in your Phoenix managed AI dashboard to selectively enable features and manage usage quotas in the future."})]}),(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.td,{children:(0,l.jsx)(n.code,{children:'--allowedUsers ""'})}),(0,l.jsx)(n.td,{children:"Comma-separated list of usernames allowed to use AI even when disabled for others"})]}),(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.td,{children:(0,l.jsx)(n.code,{children:"--disableAI"})}),(0,l.jsxs)(n.td,{children:["If present, AI will be disabled by default for all users except those specified in ",(0,l.jsx)(n.code,{children:"allowedUsers"})]})]})]})]}),"\n",(0,l.jsx)(n.admonition,{type:"important",children:(0,l.jsxs)(n.p,{children:["Always enclose the ",(0,l.jsx)(n.code,{children:"--allowedUsers"})," list in quotes to prevent parsing errors (e.g., ",(0,l.jsx)(n.code,{children:'--allowedUsers "alice,bob"'}),")"]})}),"\n",(0,l.jsx)(n.h2,{id:"common-configuration-examples",children:"Common Configuration Examples"}),"\n",(0,l.jsx)(n.h3,{id:"disabling-ai-for-all-users",children:"Disabling AI for All Users"}),"\n",(0,l.jsx)(n.p,{children:"To disable AI features system-wide:"}),"\n",(0,l.jsxs)(o.A,{defaultValue:"windows",values:[{label:"Windows",value:"windows"},{label:"macOS",value:"macos"},{label:"Linux",value:"linux"}],children:[(0,l.jsx)(r.A,{value:"windows",children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-batch",children:"setup_phoenix_ai_control_win.bat --disableAI --managedByEmail school.admin@example.edu\n"})})}),(0,l.jsx)(r.A,{value:"macos",children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:"sudo ./setup_phoenix_ai_control_mac.sh --disableAI --managedByEmail school.admin@example.edu\n"})})}),(0,l.jsx)(r.A,{value:"linux",children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:"sudo ./setup_phoenix_ai_control_linux.sh --disableAI --managedByEmail school.admin@example.edu\n"})})})]}),"\n",(0,l.jsx)(n.h3,{id:"enabling-ai-for-all-users",children:"Enabling AI for All Users"}),"\n",(0,l.jsx)(n.p,{children:"To enable AI features system-wide:"}),"\n",(0,l.jsxs)(o.A,{defaultValue:"windows",values:[{label:"Windows",value:"windows"},{label:"macOS",value:"macos"},{label:"Linux",value:"linux"}],children:[(0,l.jsx)(r.A,{value:"windows",children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-batch",children:"setup_phoenix_ai_control_win.bat --managedByEmail school.admin@example.edu\n"})})}),(0,l.jsx)(r.A,{value:"macos",children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:"sudo ./setup_phoenix_ai_control_mac.sh --managedByEmail school.admin@example.edu\n"})})}),(0,l.jsx)(r.A,{value:"linux",children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:"sudo ./setup_phoenix_ai_control_linux.sh --managedByEmail school.admin@example.edu\n"})})})]}),"\n",(0,l.jsx)(n.h3,{id:"enabling-ai-for-specific-users-only",children:"Enabling AI for Specific Users Only"}),"\n",(0,l.jsx)(n.p,{children:"To disable AI globally but allow specific users to access it:"}),"\n",(0,l.jsxs)(o.A,{defaultValue:"windows",values:[{label:"Windows",value:"windows"},{label:"macOS",value:"macos"},{label:"Linux",value:"linux"}],children:[(0,l.jsx)(r.A,{value:"windows",children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-batch",children:'setup_phoenix_ai_control_win.bat --disableAI --allowedUsers "teacher1,admin2" --managedByEmail school.admin@example.edu\n'})})}),(0,l.jsx)(r.A,{value:"macos",children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'sudo ./setup_phoenix_ai_control_mac.sh --disableAI --allowedUsers "teacher1,admin2" --managedByEmail school.admin@example.edu\n'})})}),(0,l.jsx)(r.A,{value:"linux",children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'sudo ./setup_phoenix_ai_control_linux.sh --disableAI --allowedUsers "teacher1,admin2" --managedByEmail school.admin@example.edu\n'})})})]}),"\n",(0,l.jsx)(n.admonition,{type:"important",children:(0,l.jsx)(n.p,{children:"Always enclose the list of users in quotes to prevent parsing errors"})}),"\n",(0,l.jsx)(n.h2,{id:"verifying-ai-control-status",children:"Verifying AI Control Status"}),"\n",(0,l.jsx)(n.p,{children:"The Phoenix Code AI Control extension provides a visual interface to verify the current status of AI controls on end-user machines."}),"\n",(0,l.jsx)(n.h3,{id:"installing-the-extension",children:"Installing the Extension"}),"\n",(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsx)(n.li,{children:"Open Phoenix Code"}),"\n",(0,l.jsx)(n.li,{children:"Navigate to File \u2192 Extension Manager"}),"\n",(0,l.jsx)(n.li,{children:'Search for "Phoenix Code AI Control"'}),"\n",(0,l.jsx)(n.li,{children:"Click the Install button"}),"\n",(0,l.jsx)(n.li,{children:"Restart Phoenix Code when prompted"}),"\n"]}),"\n",(0,l.jsx)(n.h3,{id:"checking-status",children:"Checking Status"}),"\n",(0,l.jsxs)(o.A,{defaultValue:"desktop",values:[{label:"Desktop App",value:"desktop"},{label:"Browser Version",value:"browser"}],children:[(0,l.jsxs)(r.A,{value:"desktop",children:[(0,l.jsx)(n.h4,{id:"desktop-app-status-check",children:"Desktop App Status Check"}),(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsx)(n.li,{children:"Open Phoenix Code"}),"\n",(0,l.jsxs)(n.li,{children:['Install the extension (File \u2192 Extension Manager \u2192 "Phoenix Code AI Control")',"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.img,{src:"https://github.com/user-attachments/assets/ff282d9d-19dc-4fa2-9d39-a81eb2c59a62",alt:"Image"})}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["Navigate to View \u2192 AI Control Status.","\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.img,{src:"https://github.com/user-attachments/assets/afa63f23-adc1-4f07-bdeb-70883c3abbd9",alt:"Image"})}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["A dialog will appear showing your current configuration:","\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:"AI Status (Enabled/Disabled)"}),"\n",(0,l.jsx)(n.li,{children:"Platform information"}),"\n",(0,l.jsx)(n.li,{children:"Current user"}),"\n",(0,l.jsx)(n.li,{children:"Managed by (administrative contact)"}),"\n",(0,l.jsx)(n.li,{children:"List of allowed users (if configured)"}),"\n"]}),"\n"]}),"\n"]}),(0,l.jsx)(n.h5,{id:"example-when-ai-is-disabled",children:"Example: When AI is disabled"}),(0,l.jsx)(n.p,{children:(0,l.jsx)(n.img,{src:"https://github.com/user-attachments/assets/6a066f62-a079-4ec9-bb93-9165fbf9bc99",alt:"AI Disabled"})}),(0,l.jsx)(n.h5,{id:"example-ai-enabled-for-selected-users-only",children:"Example: AI enabled for selected users only"}),(0,l.jsx)(n.p,{children:(0,l.jsx)(n.img,{src:"https://github.com/user-attachments/assets/5f230107-854a-437f-952c-2712188f8ef2",alt:"AI Selective Access"})})]}),(0,l.jsxs)(r.A,{value:"browser",children:[(0,l.jsx)(n.h4,{id:"browser-version-status-check",children:"Browser Version Status Check"}),(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["Open ",(0,l.jsx)(n.a,{href:"https://phcode.dev",children:"https://phcode.dev"})," in your web browser"]}),"\n",(0,l.jsxs)(n.li,{children:['Install the extension (File \u2192 Extension Manager \u2192 "Phoenix Code AI Control")',"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.img,{src:"https://github.com/user-attachments/assets/ff282d9d-19dc-4fa2-9d39-a81eb2c59a62",alt:"Image"})}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["Navigate to View \u2192 AI Control Status","\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.img,{src:"https://github.com/user-attachments/assets/afa63f23-adc1-4f07-bdeb-70883c3abbd9",alt:"Image"})}),"\n"]}),"\n"]}),"\n",(0,l.jsxs)(n.li,{children:["The browser will check if ",(0,l.jsx)(n.code,{children:"ai.phcode.dev"})," is accessible:","\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:'First shows "Checking if AI is disabled..."'}),"\n",(0,l.jsx)(n.li,{children:"Then displays whether AI is available or blocked"}),"\n"]}),"\n"]}),"\n"]}),(0,l.jsx)(n.h5,{id:"example-ai-enablednot-firewalled",children:"Example: AI enabled/not firewalled"}),(0,l.jsx)(n.p,{children:(0,l.jsx)(n.img,{src:"https://github.com/user-attachments/assets/2aeae802-ca91-48e1-96ac-7506fa13e47e",alt:"Image"})})]})]}),"\n",(0,l.jsx)(n.h2,{id:"configuration-options",children:"Configuration Options"}),"\n",(0,l.jsx)(n.h3,{id:"desktop-applications-recommended-method",children:"Desktop Applications (Recommended Method)"}),"\n",(0,l.jsx)(n.p,{children:"For desktop installations of Phoenix Code, we strongly recommend using the installation scripts described above. This approach provides:"}),"\n",(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsx)(n.li,{children:"System-wide configuration via protected config files"}),"\n",(0,l.jsx)(n.li,{children:"Granular control with user-level permissions"}),"\n",(0,l.jsx)(n.li,{children:"Ability to selectively enable AI for specific users"}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:"Only administrative users can modify this configuration."}),"\n",(0,l.jsx)(n.h3,{id:"network-blocking-for-browser-version",children:"Network Blocking (For Browser Version)"}),"\n",(0,l.jsxs)(n.p,{children:["For schools using the browser version of Phoenix Code at ",(0,l.jsx)(n.a,{href:"https://phcode.dev",children:"https://phcode.dev"}),", network-level blocking is the recommended approach:"]}),"\n",(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["Block access to: ",(0,l.jsx)(n.code,{children:"ai.phcode.dev"})]}),"\n",(0,l.jsx)(n.li,{children:"Add this domain to your firewall or content filtering system"}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:"The browser version of Phoenix Code will automatically detect if the domain is unreachable and display appropriate status messages."}),"\n",(0,l.jsx)(n.h2,{id:"faq",children:"FAQ"}),"\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:"Q: When will AI be enabled in Phoenix Code?"})}),"\n",(0,l.jsxs)(n.p,{children:["Phoenix Code AI will be rolled out after ",(0,l.jsx)(n.strong,{children:(0,l.jsx)(n.code,{children:"May 20, 2025"})}),". Educational institutions should configure AI controls campus-wide before this date."]}),"\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:"Q: How do I know if AI control is working?"})}),"\n",(0,l.jsx)(n.p,{children:'In both the desktop and browser versions, install "Phoenix Code AI Control" extension.\nThen, go to View \u2192 AI Control Status to see a detailed report.'}),"\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:"Q: Can I disable AI for some users but enable it for others?"})}),"\n",(0,l.jsxs)(n.p,{children:["Yes, use the ",(0,l.jsx)(n.code,{children:"--disableAI"})," flag to disable AI globally, then use the ",(0,l.jsx)(n.code,{children:"--allowedUsers"})," parameter to specify which users should still have access. Example:"]}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:'sudo ./setup_phoenix_ai_control_linux.sh --disableAI --allowedUsers "teacher1,admin2"\n'})}),"\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:"Q: Is AI control mandatory?"})}),"\n",(0,l.jsx)(n.p,{children:"No, AI control is optional and meant for educational institutions or enterprises that need to regulate AI usage. By default, all users have access to AI features."}),"\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:"Q: Will blocking AI affect other Phoenix Code features?"})}),"\n",(0,l.jsx)(n.p,{children:"No, all other features of Phoenix Code will continue to work normally. Only the AI-powered features like code generation and explanations will be affected."}),"\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:"Q: How can I update the AI control configuration?"})}),"\n",(0,l.jsx)(n.p,{children:"Simply run the installation script again with the new parameters. The script will overwrite the existing configuration file with your new settings."}),"\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:"Q: How do I re-enable AI after it has been disabled?"})}),"\n",(0,l.jsx)(n.p,{children:"To re-enable AI that was previously disabled:"}),"\n",(0,l.jsxs)(n.ol,{children:["\n",(0,l.jsxs)(n.li,{children:["Run the installation script again without the ",(0,l.jsx)(n.code,{children:"--disableAI"})," flag:"]}),"\n"]}),"\n",(0,l.jsxs)(o.A,{defaultValue:"windows",values:[{label:"Windows",value:"windows"},{label:"macOS",value:"macos"},{label:"Linux",value:"linux"}],children:[(0,l.jsx)(r.A,{value:"windows",children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-batch",children:"setup_phoenix_ai_control_win.bat --managedByEmail school.admin@example.edu\n"})})}),(0,l.jsx)(r.A,{value:"macos",children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:"sudo ./setup_phoenix_ai_control_mac.sh --managedByEmail school.admin@example.edu\n"})})}),(0,l.jsx)(r.A,{value:"linux",children:(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-bash",children:"sudo ./setup_phoenix_ai_control_linux.sh --managedByEmail school.admin@example.edu\n"})})})]}),"\n",(0,l.jsxs)(n.ol,{start:"2",children:["\n",(0,l.jsxs)(n.li,{children:["For browser version, remove any firewall rules blocking ",(0,l.jsx)(n.code,{children:"ai.phcode.dev"})]}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:"Q: What's the difference between browser and desktop control?"})}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.strong,{children:"Browser Version"}),": Only supports network-level blocking of ",(0,l.jsx)(n.code,{children:"ai.phcode.dev"})," through your firewall"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.strong,{children:"Desktop Version"}),": Provides comprehensive control with user-specific permissions"]}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:"Q: Does this completely prevent AI usage?"})}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.strong,{children:"Desktop Version"}),": Yes, the control is comprehensive when properly configured using the installation scripts"]}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.strong,{children:"Browser Version"}),": Only if you implement network-level blocking of the ",(0,l.jsx)(n.code,{children:"ai.phcode.dev"})," domain"]}),"\n"]}),"\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:"Q: How can I verify that the firewall is properly blocking AI access?"})}),"\n",(0,l.jsxs)(n.p,{children:["In the browser app at ",(0,l.jsx)(n.a,{href:"https://phcode.dev",children:"https://phcode.dev"}),", install the ",(0,l.jsx)(n.code,{children:"Phoenix Code AI Control"}),"extension. Use the ",(0,l.jsx)(n.code,{children:"View \u2192 AI Control Status"})," option. It will report whether AI is accessible or blocked."]}),"\n",(0,l.jsx)(n.p,{children:(0,l.jsx)(n.strong,{children:"Q: Is there a way to monitor AI usage in my organization?"})}),"\n",(0,l.jsxs)(n.p,{children:["When you set the ",(0,l.jsx)(n.code,{children:"--managedByEmail"})," parameter, this information is used for administration purposes. Future versions will provide a dashboard for administrators to monitor and manage AI usage across their organization.\nHowever, this is currently not implemented."]}),"\n",(0,l.jsx)(n.h2,{id:"additional-resources",children:"Additional Resources"}),"\n",(0,l.jsxs)(n.p,{children:["For any special requests or technical issues, please reach out through our discussions forum at ",(0,l.jsx)(n.a,{href:"https://github.com/orgs/phcode-dev/discussions/new/choose",children:"https://github.com/orgs/phcode-dev/discussions/new/choose"}),".\nWe're committed to supporting a smooth rollout of AI controls for educational or organizational needs."]})]})}function x(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,l.jsx)(n,{...e,children:(0,l.jsx)(u,{...e})}):u(e)}},19365:(e,n,s)=>{s.d(n,{A:()=>o});s(96540);var i=s(34164);const l={tabItem:"tabItem_Ymn6"};var a=s(74848);function o({children:e,hidden:n,className:s}){return(0,a.jsx)("div",{role:"tabpanel",className:(0,i.A)(l.tabItem,s),hidden:n,children:e})}},11470:(e,n,s)=>{s.d(n,{A:()=>I});var i=s(96540),l=s(34164),a=s(17559),o=s(23104),r=s(56347),t=s(205),d=s(57485),c=s(31682),h=s(70679);function u(e){return i.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,i.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function x(e){const{values:n,children:s}=e;return(0,i.useMemo)((()=>{const e=n??function(e){return u(e).map((({props:{value:e,label:n,attributes:s,default:i}})=>({value:e,label:n,attributes:s,default:i})))}(s);return function(e){const n=(0,c.XI)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,s])}function p({value:e,tabValues:n}){return n.some((n=>n.value===e))}function m({queryString:e=!1,groupId:n}){const s=(0,r.W6)(),l=function({queryString:e=!1,groupId:n}){if("string"==typeof e)return e;if(!1===e)return null;if(!0===e&&!n)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return n??null}({queryString:e,groupId:n});return[(0,d.aZ)(l),(0,i.useCallback)((e=>{if(!l)return;const n=new URLSearchParams(s.location.search);n.set(l,e),s.replace({...s.location,search:n.toString()})}),[l,s])]}function j(e){const{defaultValue:n,queryString:s=!1,groupId:l}=e,a=x(e),[o,r]=(0,i.useState)((()=>function({defaultValue:e,tabValues:n}){if(0===n.length)throw new Error("Docusaurus error: the component requires at least one children component");if(e){if(!p({value:e,tabValues:n}))throw new Error(`Docusaurus error: The has a defaultValue "${e}" but none of its children has the corresponding value. Available values are: ${n.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return e}const s=n.find((e=>e.default))??n[0];if(!s)throw new Error("Unexpected error: 0 tabValues");return s.value}({defaultValue:n,tabValues:a}))),[d,c]=m({queryString:s,groupId:l}),[u,j]=function({groupId:e}){const n=function(e){return e?`docusaurus.tab.${e}`:null}(e),[s,l]=(0,h.Dv)(n);return[s,(0,i.useCallback)((e=>{n&&l.set(e)}),[n,l])]}({groupId:l}),b=(()=>{const e=d??u;return p({value:e,tabValues:a})?e:null})();(0,t.A)((()=>{b&&r(b)}),[b]);return{selectedValue:o,selectValue:(0,i.useCallback)((e=>{if(!p({value:e,tabValues:a}))throw new Error(`Can't select invalid tab value=${e}`);r(e),c(e),j(e)}),[c,j,a]),tabValues:a}}var b=s(92303);const g={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var f=s(74848);function v({className:e,block:n,selectedValue:s,selectValue:i,tabValues:a}){const r=[],{blockElementScrollPositionUntilNextRender:t}=(0,o.a_)(),d=e=>{const n=e.currentTarget,l=r.indexOf(n),o=a[l].value;o!==s&&(t(n),i(o))},c=e=>{let n=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const s=r.indexOf(e.currentTarget)+1;n=r[s]??r[0];break}case"ArrowLeft":{const s=r.indexOf(e.currentTarget)-1;n=r[s]??r[r.length-1];break}}n?.focus()};return(0,f.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.A)("tabs",{"tabs--block":n},e),children:a.map((({value:e,label:n,attributes:i})=>(0,f.jsx)("li",{role:"tab",tabIndex:s===e?0:-1,"aria-selected":s===e,ref:e=>{r.push(e)},onKeyDown:c,onClick:d,...i,className:(0,l.A)("tabs__item",g.tabItem,i?.className,{"tabs__item--active":s===e}),children:n??e},e)))})}function w({lazy:e,children:n,selectedValue:s}){const a=(Array.isArray(n)?n:[n]).filter(Boolean);if(e){const e=a.find((e=>e.props.value===s));return e?(0,i.cloneElement)(e,{className:(0,l.A)("margin-top--md",e.props.className)}):null}return(0,f.jsx)("div",{className:"margin-top--md",children:a.map(((e,n)=>(0,i.cloneElement)(e,{key:n,hidden:e.props.value!==s})))})}function A(e){const n=j(e);return(0,f.jsxs)("div",{className:(0,l.A)(a.G.tabs.container,"tabs-container",g.tabList),children:[(0,f.jsx)(v,{...n,...e}),(0,f.jsx)(w,{...n,...e})]})}function I(e){const n=(0,b.A)();return(0,f.jsx)(A,{...e,children:u(e.children)},String(n))}},28453:(e,n,s)=>{s.d(n,{R:()=>o,x:()=>r});var i=s(96540);const l={},a=i.createContext(l);function o(e){const n=i.useContext(a);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:o(e.components),i.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/7ca099b0.2f5a0ee1.js b/assets/js/7ca099b0.2f5a0ee1.js new file mode 100644 index 00000000..49cc38f2 --- /dev/null +++ b/assets/js/7ca099b0.2f5a0ee1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5186],{29054:(e,d,n)=>{n.r(d),n.d(d,{assets:()=>o,contentTitle:()=>l,default:()=>h,frontMatter:()=>s,metadata:()=>t,toc:()=>c});const t=JSON.parse('{"id":"API-Reference/language/HTMLDOMDiff","title":"HTMLDOMDiff","description":"Import :","source":"@site/api/API-Reference/language/HTMLDOMDiff.md","sourceDirName":"API-Reference/language","slug":"/API-Reference/language/HTMLDOMDiff","permalink":"/api/API-Reference/language/HTMLDOMDiff","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"CodeInspection","permalink":"/api/API-Reference/language/CodeInspection"},"next":{"title":"HTMLSimpleDOM","permalink":"/api/API-Reference/language/HTMLSimpleDOM"}}');var i=n(74848),r=n(28453);const s={},l=void 0,o={},c=[{value:"Import :",id:"import-",level:3},{value:"domdiff(oldNode, newNode) \u21d2 Array.<Object>",id:"domdiffoldnode-newnode--arrayobject",level:2},{value:"domdiff.queuePush()",id:"domdiffqueuepush",level:3},{value:"domdiff.addEdits(delta)",id:"domdiffaddeditsdelta",level:3}];function a(e){const d={a:"a",br:"br",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(d.h3,{id:"import-",children:"Import :"}),"\n",(0,i.jsx)(d.pre,{children:(0,i.jsx)(d.code,{className:"language-js",children:'const HTMLDOMDiff = brackets.getModule("language/HTMLDOMDiff")\n'})}),"\n",(0,i.jsx)("a",{name:"domdiff"}),"\n",(0,i.jsxs)(d.h2,{id:"domdiffoldnode-newnode--arrayobject",children:["domdiff(oldNode, newNode) \u21d2 ",(0,i.jsx)("code",{children:"Array."})]}),"\n",(0,i.jsx)(d.p,{children:"Generate a list of edits that will mutate oldNode to look like newNode.\nCurrently, there are the following possible edit operations:"}),"\n",(0,i.jsxs)(d.ul,{children:["\n",(0,i.jsx)(d.li,{children:"elementInsert"}),"\n",(0,i.jsx)(d.li,{children:"elementDelete"}),"\n",(0,i.jsx)(d.li,{children:"elementMove"}),"\n",(0,i.jsx)(d.li,{children:"textInsert"}),"\n",(0,i.jsx)(d.li,{children:"textDelete"}),"\n",(0,i.jsx)(d.li,{children:"textReplace"}),"\n",(0,i.jsx)(d.li,{children:"attrDelete"}),"\n",(0,i.jsx)(d.li,{children:"attrChange"}),"\n",(0,i.jsx)(d.li,{children:"attrAdd"}),"\n",(0,i.jsx)(d.li,{children:"rememberNodes (a special instruction that reflects the need to hang on to moved nodes)"}),"\n"]}),"\n",(0,i.jsxs)(d.p,{children:[(0,i.jsx)(d.strong,{children:"Kind"}),": global function",(0,i.jsx)(d.br,{}),"\n",(0,i.jsx)(d.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"Array."})," - - List of edit operations."]}),"\n",(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{children:"Param"}),(0,i.jsx)(d.th,{children:"Type"}),(0,i.jsx)(d.th,{children:"Description"})]})}),(0,i.jsxs)(d.tbody,{children:[(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:"oldNode"}),(0,i.jsx)(d.td,{children:(0,i.jsx)("code",{children:"Object"})}),(0,i.jsx)(d.td,{children:"SimpleDOM node with the original content."})]}),(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:"newNode"}),(0,i.jsx)(d.td,{children:(0,i.jsx)("code",{children:"Object"})}),(0,i.jsx)(d.td,{children:"SimpleDOM node with the new content."})]})]})]}),"\n",(0,i.jsxs)(d.ul,{children:["\n",(0,i.jsxs)(d.li,{children:[(0,i.jsx)(d.a,{href:"#domdiff",children:"domdiff(oldNode, newNode)"})," \u21d2 ",(0,i.jsx)("code",{children:"Array."}),"\n",(0,i.jsxs)(d.ul,{children:["\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.a,{href:"#domdiff..queuePush",children:".queuePush()"})}),"\n",(0,i.jsx)(d.li,{children:(0,i.jsx)(d.a,{href:"#domdiff..addEdits",children:".addEdits(delta)"})}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)("a",{name:"domdiff..queuePush"}),"\n",(0,i.jsx)(d.h3,{id:"domdiffqueuepush",children:"domdiff.queuePush()"}),"\n",(0,i.jsx)(d.p,{children:"Adds elements to the queue for generateChildEdits.\nOnly elements (and not text nodes) are added. New nodes (ones that aren't in the\nold nodeMap), are not added here because they will be added when generateChildEdits\ncreates the elementInsert edit."}),"\n",(0,i.jsxs)(d.p,{children:[(0,i.jsx)(d.strong,{children:"Kind"}),": inner method of ",(0,i.jsx)(d.a,{href:"#domdiff",children:(0,i.jsx)("code",{children:"domdiff"})})]}),"\n",(0,i.jsx)("a",{name:"domdiff..addEdits"}),"\n",(0,i.jsx)(d.h3,{id:"domdiffaddeditsdelta",children:"domdiff.addEdits(delta)"}),"\n",(0,i.jsx)(d.p,{children:"Aggregates the child edits in the proper data structures."}),"\n",(0,i.jsxs)(d.p,{children:[(0,i.jsx)(d.strong,{children:"Kind"}),": inner method of ",(0,i.jsx)(d.a,{href:"#domdiff",children:(0,i.jsx)("code",{children:"domdiff"})})]}),"\n",(0,i.jsxs)(d.table,{children:[(0,i.jsx)(d.thead,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.th,{children:"Param"}),(0,i.jsx)(d.th,{children:"Type"}),(0,i.jsx)(d.th,{children:"Description"})]})}),(0,i.jsx)(d.tbody,{children:(0,i.jsxs)(d.tr,{children:[(0,i.jsx)(d.td,{children:"delta"}),(0,i.jsx)(d.td,{children:(0,i.jsx)("code",{children:"Object"})}),(0,i.jsx)(d.td,{children:"edits, moves and newElements to add"})]})})]})]})}function h(e={}){const{wrapper:d}={...(0,r.R)(),...e.components};return d?(0,i.jsx)(d,{...e,children:(0,i.jsx)(a,{...e})}):a(e)}},28453:(e,d,n)=>{n.d(d,{R:()=>s,x:()=>l});var t=n(96540);const i={},r=t.createContext(i);function s(e){const d=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(d):{...d,...e}}),[d,e])}function l(e){let d;return d=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:s(e.components),t.createElement(r.Provider,{value:d},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/7dfc8d3f.724f63de.js b/assets/js/7dfc8d3f.724f63de.js new file mode 100644 index 00000000..7be0760b --- /dev/null +++ b/assets/js/7dfc8d3f.724f63de.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7332],{37089:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>a,contentTitle:()=>r,default:()=>c,frontMatter:()=>l,metadata:()=>s,toc:()=>d});var s=i(70521),t=i(74848),o=i(28453);const l={slug:"release-3.7",title:"Little Things Release (May-2024, V-3.7) is now Live",description:"Phoenix Code 3.7 focuses on live preview improvements, CSS class and style code hints, and small UX refinements.",authors:["arun","charly","phoenixBot"],tags:["Live Preview","Live Code Hints","Windows","Linux","Mac","Release"]},r=void 0,a={authorsImageUrls:[void 0,void 0,void 0]},d=[{value:"Live CSS Class and Style Code Hints",id:"live-css-class-and-style-code-hints",level:4},{value:"CSS/HTML Code Hints improvements",id:"csshtml-code-hints-improvements",level:4},{value:"Move to trash/bin when deleting files",id:"move-to-trashbin-when-deleting-files",level:4},{value:"UX Improvements",id:"ux-improvements",level:4},{value:"A Request from the Phoenix Team:",id:"a-request-from-the-phoenix-team",level:2}];function h(e){const n={a:"a",code:"code",h2:"h2",h4:"h4",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,o.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(n.p,{children:["May release(3.7) of Phoenix Code is now available for download at\n",(0,t.jsx)(n.a,{href:"https://phcode.io",children:"phcode.io"}),"."]}),"\n",(0,t.jsx)(n.p,{children:"This month's release is all about Live previews and the little things that make\nyour work just a bit easier. We've also addressed numerous feature requests and\nUX bug reports, along with improving app UX and stability."}),"\n",(0,t.jsx)(n.h4,{id:"live-css-class-and-style-code-hints",children:"Live CSS Class and Style Code Hints"}),"\n",(0,t.jsx)(n.p,{children:"Interactively edit CSS styles and classes using the up/down arrow keys in code\nhints. This is available in CSS files and inline CSS styles/class names in HTML\nfiles. This provides an instant boost to your HTML and CSS workflows."}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{src:"https://github.com/phcode-dev/phoenix/assets/5336369/502c8751-5269-4c34-9178-5ad08f8ad837",alt:"classLiveHints"})}),"\n",(0,t.jsx)(n.h4,{id:"csshtml-code-hints-improvements",children:"CSS/HTML Code Hints improvements"}),"\n",(0,t.jsxs)(n.p,{children:["Improved relevance of suggestions in CSS and HTML code hints. For E.g.,\ntyping ",(0,t.jsx)(n.code,{children:"b"})," in a CSS file will prioritize ",(0,t.jsx)(n.code,{children:"background-color"}),". Typing ",(0,t.jsx)(n.code,{children:"between"}),"\nwill bring up relevant CSS property-value combinations like ",(0,t.jsx)(n.code,{children:"align-content: space-between;"}),"\n(see image below), so you don't have to remember which value is under which CSS property."]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{src:"https://github.com/phcode-dev/phoenix/assets/5336369/2a9f8809-de19-43cf-bdcd-d1a5def2e080",alt:"image"})}),"\n",(0,t.jsx)(n.h4,{id:"move-to-trashbin-when-deleting-files",children:"Move to trash/bin when deleting files"}),"\n",(0,t.jsx)(n.p,{children:"Deleting files from the files panel in desktop apps will move the file/folder to\ntrash/recycle bin instead of permanently deleting it."}),"\n",(0,t.jsx)(n.h4,{id:"ux-improvements",children:"UX Improvements"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["Deleting the ",(0,t.jsx)(n.code,{children:"Phoenix Code"})," folder in user ",(0,t.jsx)(n.code,{children:"Documents"})," directory is now supported."]}),"\n",(0,t.jsx)(n.li,{children:"Increased stability and app startup experience."}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"Copy Error Message"})," button is now available in the problems panel."]}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{src:"https://github.com/phcode-dev/phoenix/assets/5336369/95c59e71-5ce8-4697-963e-0fa567062ab0",alt:"image"})}),"\n",(0,t.jsx)(n.h2,{id:"a-request-from-the-phoenix-team",children:"A Request from the Phoenix Team:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Share your feedback:"})," ",(0,t.jsx)(n.a,{href:"https://github.com/orgs/phcode-dev/discussions",children:"https://github.com/orgs/phcode-dev/discussions"})]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Spread the word"})," about Phoenix to friends and colleagues."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsxs)(n.a,{href:"https://github.com/sponsors/phcode-dev",children:[(0,t.jsx)(n.strong,{children:"Consider supporting us"})," on GitHub Sponsors"]}),".\nEvery contribution helps us to keep improving Phoenix Code."]}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:"With gratitude,"}),"\n",(0,t.jsx)(n.p,{children:"The Phoenix Team"})]})}function c(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(h,{...e})}):h(e)}},28453:(e,n,i)=>{i.d(n,{R:()=>l,x:()=>r});var s=i(96540);const t={},o=s.createContext(t);function l(e){const n=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:l(e.components),s.createElement(o.Provider,{value:n},e.children)}},70521:e=>{e.exports=JSON.parse('{"permalink":"/blog/release-3.7","editUrl":"https://github.com/phcode-dev/docs/blob/main/blog/2024-05-26-Release-3.7/index.md","source":"@site/blog/2024-05-26-Release-3.7/index.md","title":"Little Things Release (May-2024, V-3.7) is now Live","description":"Phoenix Code 3.7 focuses on live preview improvements, CSS class and style code hints, and small UX refinements.","date":"2024-05-26T00:00:00.000Z","tags":[{"inline":true,"label":"Live Preview","permalink":"/blog/tags/live-preview"},{"inline":true,"label":"Live Code Hints","permalink":"/blog/tags/live-code-hints"},{"inline":true,"label":"Windows","permalink":"/blog/tags/windows"},{"inline":true,"label":"Linux","permalink":"/blog/tags/linux"},{"inline":true,"label":"Mac","permalink":"/blog/tags/mac"},{"inline":true,"label":"Release","permalink":"/blog/tags/release"}],"readingTime":1.54,"hasTruncateMarker":false,"authors":[{"name":"Arun Bose","title":"Co-Founder, Phoenix Code","url":"https://github.com/abose","imageURL":"https://github.com/abose.png","key":"arun","page":null},{"name":"Charly P Abraham","title":"Co-Founder, Phoenix Code","url":"https://github.com/charlypa","imageURL":"https://github.com/charlypa.png","key":"charly","page":null},{"name":"Phoenix Code Bot","title":"Our little elf who keeps the whole place together","url":"https://github.com/phoenixide","imageURL":"https://github.com/phoenixide.png","key":"phoenixBot","page":null}],"frontMatter":{"slug":"release-3.7","title":"Little Things Release (May-2024, V-3.7) is now Live","description":"Phoenix Code 3.7 focuses on live preview improvements, CSS class and style code hints, and small UX refinements.","authors":["arun","charly","phoenixBot"],"tags":["Live Preview","Live Code Hints","Windows","Linux","Mac","Release"]},"unlisted":false,"prevItem":{"title":"Critical Update + HTML Helpers Release (June-2024, V-3.8) is now Live","permalink":"/blog/release-3.8"},"nextItem":{"title":"April-2024 Release (V-3.6) is now Live","permalink":"/blog/release-3.6"}}')}}]); \ No newline at end of file diff --git a/assets/js/7e27d2a7.91d57f68.js b/assets/js/7e27d2a7.91d57f68.js new file mode 100644 index 00000000..7494643f --- /dev/null +++ b/assets/js/7e27d2a7.91d57f68.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9748],{56234:(e,i,o)=>{o.r(i),o.d(i,{assets:()=>d,contentTitle:()=>c,default:()=>g,frontMatter:()=>l,metadata:()=>n,toc:()=>h});const n=JSON.parse('{"id":"Editing & Code/editing-colors","title":"Editing Colors","description":"This section provides an overview of the core color editing features in Phoenix Code.","source":"@site/docs/04-Editing & Code/02-editing-colors.md","sourceDirName":"04-Editing & Code","slug":"/editing-colors","permalink":"/docs/editing-colors","draft":false,"unlisted":false,"editUrl":"https://github.com/phcode-dev/docs/blob/main/docs/04-Editing & Code/02-editing-colors.md","tags":[],"version":"current","sidebarPosition":2,"frontMatter":{"title":"Editing Colors","slug":"/editing-colors"},"sidebar":"tutorialSidebar","previous":{"title":"Editing Text","permalink":"/docs/editing-text"},"next":{"title":"Quick Edit","permalink":"/docs/Features/quick-edit"}}');var r=o(74848),s=o(28453),t=(o(96540),o(56399));const l={title:"Editing Colors",slug:"/editing-colors"},c=void 0,d={},h=[{value:"Inline Color Editor",id:"inline-color-editor",level:2},{value:"Accessing the Inline Color Editor",id:"accessing-the-inline-color-editor",level:3},{value:"Understanding the Color Picker Dialog",id:"understanding-the-color-picker-dialog",level:3},{value:"Visual Reference",id:"visual-reference",level:3},{value:"Color Preview",id:"color-preview",level:2},{value:"Hover Interaction",id:"hover-interaction",level:3},{value:"Click Behavior",id:"click-behavior",level:3},{value:"Enabling/Disabling Color Preview",id:"enablingdisabling-color-preview",level:3},{value:"Color Hints",id:"color-hints",level:2},{value:"Previously Used Color Suggestions",id:"previously-used-color-suggestions",level:3}];function a(e){const i={a:"a",blockquote:"blockquote",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",hr:"hr",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsxs)(i.p,{children:["This section provides an overview of the core color editing features in ",(0,r.jsx)(i.strong,{children:"Phoenix Code"}),"."]}),"\n",(0,r.jsx)(i.h2,{id:"inline-color-editor",children:"Inline Color Editor"}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Inline Color Editor"})," lets you edit colors directly inside ",(0,r.jsx)(i.strong,{children:"Phoenix Code"})," using a color picker."]}),"\n",(0,r.jsx)(i.h3,{id:"accessing-the-inline-color-editor",children:"Accessing the Inline Color Editor"}),"\n",(0,r.jsxs)(i.p,{children:["To open the ",(0,r.jsx)(i.strong,{children:"Inline Color Editor"})," just hover over the color you want to edit.\n",(0,r.jsx)(i.img,{alt:"Inline Color Editor",src:o(30865).A+"",title:"Inline Color Editor",width:"1558",height:"393"})]}),"\n",(0,r.jsxs)(i.p,{children:["The ",(0,r.jsx)(i.strong,{children:"Inline Color Editor"})," provides you an ",(0,r.jsx)(i.code,{children:"Edit"})," button, click on it to open the color picker.\n",(0,r.jsx)(i.img,{alt:"Color Picker",src:o(58325).A+"",title:"Color Picker",width:"1366",height:"403"})]}),"\n",(0,r.jsx)(i.h3,{id:"understanding-the-color-picker-dialog",children:"Understanding the Color Picker Dialog"}),"\n",(0,r.jsxs)(i.p,{children:["The ",(0,r.jsx)(i.strong,{children:"Color Picker"})," dialog lets you edit the colors visually. Here are the key components:"]}),"\n",(0,r.jsxs)(i.ul,{children:["\n",(0,r.jsxs)(i.li,{children:["\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Color Spectrum"}),": The square on the left adjusts the brightness and intensity of the color. Drag the circle to select a specific shade."]}),"\n"]}),"\n",(0,r.jsxs)(i.li,{children:["\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Hue Slider"}),": The vertical slider adjusts the main color (hue). Move it up or down to switch between colors like red, green, or blue."]}),"\n"]}),"\n",(0,r.jsxs)(i.li,{children:["\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Transparency Slider"}),": The checkered slider adjusts the Alpha(transparency) of the color. Move it to set the color between fully solid and fully transparent."]}),"\n"]}),"\n",(0,r.jsxs)(i.li,{children:["\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Color Preview"}),": On the top right, you\u2019ll see a Color Preview. The preview is divided into two parts:"]}),"\n",(0,r.jsxs)(i.ul,{children:["\n",(0,r.jsx)(i.li,{children:(0,r.jsx)(i.em,{children:"Right Side: Displays the new color being selected. It dynamically updates as you adjust the controls."})}),"\n",(0,r.jsx)(i.li,{children:(0,r.jsx)(i.em,{children:"Left Side: Displays the original color before editing."})}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(i.li,{children:["\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Color Suggestions"}),": On the right, a list of already used colors in the file are displayed. Hovering over a color shows how many times it has been used in the file. This helps you pick consistent colors without needing to remember their codes."]}),"\n"]}),"\n",(0,r.jsxs)(i.li,{children:["\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Code Format Selection"}),": Below the Color Spectrum we have the option to switch between different formats:"]}),"\n",(0,r.jsxs)(i.ul,{children:["\n",(0,r.jsx)(i.li,{children:(0,r.jsx)(i.em,{children:"RGBA: Red, Green, Blue, and Alpha(transparency)."})}),"\n",(0,r.jsx)(i.li,{children:(0,r.jsx)(i.em,{children:"Hex: Standard hexadecimal color code."})}),"\n",(0,r.jsx)(i.li,{children:(0,r.jsx)(i.em,{children:"HSLa: Hue, Saturation, Lightness, and Alpha."})}),"\n",(0,r.jsx)(i.li,{children:(0,r.jsx)(i.em,{children:"Hex 0x: Hexadecimal format with a 0x prefix, such as 0xFF5733."})}),"\n"]}),"\n"]}),"\n",(0,r.jsxs)(i.li,{children:["\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Input Field"}),": At the bottom of the dialog, you can type in specific color values directly (e.g., #FF5733, rgb(255, 87, 51, 1), orange)."]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(i.h3,{id:"visual-reference",children:"Visual Reference"}),"\n",(0,r.jsx)(t.A,{src:"https://docs-images.phcode.dev/videos/editing-colors/inlineColorEditor.mp4"}),"\n",(0,r.jsx)(i.hr,{}),"\n",(0,r.jsx)(i.h2,{id:"color-preview",children:"Color Preview"}),"\n",(0,r.jsxs)(i.p,{children:["The ",(0,r.jsx)(i.strong,{children:"Color Preview"})," feature displays the color(s) used in the current line in the gutter area.\n",(0,r.jsx)(i.img,{alt:"Color Preview",src:o(93935).A+"",title:"Color Preview",width:"1513",height:"465"})]}),"\n",(0,r.jsxs)(i.blockquote,{children:["\n",(0,r.jsx)(i.p,{children:"A maximum of four colors can be displayed for a single line."}),"\n"]}),"\n",(0,r.jsx)(i.h3,{id:"hover-interaction",children:"Hover Interaction"}),"\n",(0,r.jsxs)(i.ul,{children:["\n",(0,r.jsx)(i.li,{children:"Hovering over a color box highlights the corresponding color text in the editor with a background of the same color."}),"\n",(0,r.jsxs)(i.li,{children:["If a container has multiple colors, the hovered color box enlarges for easier accessibility, and its color text gets highlighted with the same color.\n",(0,r.jsx)(i.img,{alt:"Color Preview Hover",src:o(12921).A+"",title:"Color Preview Hover",width:"1448",height:"451"})]}),"\n"]}),"\n",(0,r.jsx)(i.h3,{id:"click-behavior",children:"Click Behavior"}),"\n",(0,r.jsx)(i.p,{children:"Clicking a color in the gutter moves the cursor to its position in the editor and opens the Color Picker for editing."}),"\n",(0,r.jsx)(i.h3,{id:"enablingdisabling-color-preview",children:"Enabling/Disabling Color Preview"}),"\n",(0,r.jsxs)(i.p,{children:["You can enable/disable the feature by updating the ",(0,r.jsx)(i.code,{children:"colorPreview"})," property in the preferences file. ",(0,r.jsx)(i.a,{href:"./editing-text#editing-preferences",children:"Click Here"})," to read on how to edit the preferences."]}),"\n",(0,r.jsx)(i.h2,{id:"color-hints",children:"Color Hints"}),"\n",(0,r.jsxs)(i.p,{children:["After typing a color related property, ",(0,r.jsx)(i.strong,{children:"Phoenix Code"})," displays a list of color suggestions.",(0,r.jsx)(i.br,{}),"\n",(0,r.jsx)(i.img,{alt:"Color Hints",src:o(21857).A+"",title:"Color Hints",width:"1059",height:"677"})]}),"\n",(0,r.jsx)(i.h3,{id:"previously-used-color-suggestions",children:"Previously Used Color Suggestions"}),"\n",(0,r.jsxs)(i.p,{children:["If a file already contains colors, ",(0,r.jsx)(i.strong,{children:"Phoenix Code"})," prioritizes those colors in the color hint list. Colors are sorted in ",(0,r.jsx)(i.em,{children:"descending order"})," based on their usage count in the file."]}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.img,{alt:"Previously Used Colors",src:o(21817).A+"",title:"Previously Used Colors",width:"924",height:"839"})}),"\n",(0,r.jsxs)(i.blockquote,{children:["\n",(0,r.jsx)(i.p,{children:"This helps in reusing frequently used colors without manually searching for them."}),"\n"]})]})}function g(e={}){const{wrapper:i}={...(0,s.R)(),...e.components};return i?(0,r.jsx)(i,{...e,children:(0,r.jsx)(a,{...e})}):a(e)}},56399:(e,i,o)=>{o.d(i,{A:()=>s});var n=o(96540),r=o(74848);const s=({src:e,winLinuxTitle:i,macTitle:o})=>{const[s,t]=(0,n.useState)("");(0,n.useEffect)((()=>{navigator.platform.toLowerCase().includes("mac")?t(o):t(i)}),[i,o]);return(0,r.jsxs)("div",{style:{maxHeight:"68vh",width:"100%",display:"flex",justifyContent:"center",alignItems:"center",flexDirection:"column"},children:[(0,r.jsxs)("video",{style:{height:"90%",width:"100%"},controls:!0,autoPlay:!0,muted:!0,loop:!0,children:[(0,r.jsx)("source",{src:e,type:"video/mp4"}),"Your browser does not support the video tag."]}),(0,r.jsx)("div",{style:{width:"100%",textAlign:"center",fontSize:"1em",marginTop:"10px"},children:s})]})}},21857:(e,i,o)=>{o.d(i,{A:()=>n});const n=o.p+"assets/images/colorHints-2b430e5fb6f41382012636317a7fe8ca.png"},58325:(e,i,o)=>{o.d(i,{A:()=>n});const n=o.p+"assets/images/colorPicker-5fb509811cd885dc6bad0b903c558e95.png"},93935:(e,i,o)=>{o.d(i,{A:()=>n});const n=o.p+"assets/images/colorPreview-0c906adc6f19225724362382e11afd2a.png"},12921:(e,i,o)=>{o.d(i,{A:()=>n});const n=o.p+"assets/images/colorPreviewHover-c67ffee8b9c6e6de0eaeef2e43102438.png"},30865:(e,i,o)=>{o.d(i,{A:()=>n});const n=o.p+"assets/images/inlineColorEditor-610c5be7bc6c236829f5a4a800883ceb.png"},21817:(e,i,o)=>{o.d(i,{A:()=>n});const n=o.p+"assets/images/previously-used-colors-abb1767404546f7b8c3b552a626efbee.png"},28453:(e,i,o)=>{o.d(i,{R:()=>t,x:()=>l});var n=o(96540);const r={},s=n.createContext(r);function t(e){const i=n.useContext(s);return n.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function l(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:t(e.components),n.createElement(s.Provider,{value:i},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/7e316a70.9ed5ca3a.js b/assets/js/7e316a70.9ed5ca3a.js new file mode 100644 index 00000000..877f13dd --- /dev/null +++ b/assets/js/7e316a70.9ed5ca3a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3805],{48274:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>a,default:()=>l,frontMatter:()=>r,metadata:()=>s,toc:()=>h});const s=JSON.parse('{"id":"Workspace/keyboard-shortcuts","title":"Keyboard Shortcuts","description":"Now you can make your own shortcuts for any menu, so you don\'t have to memorize a bunch of different ones for every app. It\'s like customizing your game controls to play your way!","source":"@site/docs/05-Workspace/04-keyboard-shortcuts.md","sourceDirName":"05-Workspace","slug":"/Features/keyboard-shortcuts","permalink":"/docs/Features/keyboard-shortcuts","draft":false,"unlisted":false,"editUrl":"https://github.com/phcode-dev/docs/blob/main/docs/05-Workspace/04-keyboard-shortcuts.md","tags":[],"version":"current","sidebarPosition":4,"frontMatter":{"slug":"/Features/keyboard-shortcuts"},"sidebar":"tutorialSidebar","previous":{"title":"Customizing the Editor","permalink":"/docs/customizing-editor"},"next":{"title":"Terminal","permalink":"/docs/Features/terminal"}}');var o=n(74848),i=n(28453);const r={slug:"/Features/keyboard-shortcuts"},a="Keyboard Shortcuts",c={},h=[{value:"Accessing Change Keyboard Shortcut Feature",id:"accessing-change-keyboard-shortcut-feature",level:2},{value:"Via Menu Items",id:"via-menu-items",level:3},{value:"Via Keyboard Shortcuts Panel",id:"via-keyboard-shortcuts-panel",level:3},{value:"Changing a Keyboard Shortcut",id:"changing-a-keyboard-shortcut",level:2},{value:"Resetting Shortcuts",id:"resetting-shortcuts",level:2},{value:"Additional Notes",id:"additional-notes",level:2}];function d(e){const t={code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,i.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(t.header,{children:(0,o.jsx)(t.h1,{id:"keyboard-shortcuts",children:"Keyboard Shortcuts"})}),"\n",(0,o.jsx)(t.p,{children:"Now you can make your own shortcuts for any menu, so you don't have to memorize a bunch of different ones for every app. It's like customizing your game controls to play your way!\nThis feature is accessible in two ways: via the menu items or through the Keyboard Shortcuts panel."}),"\n",(0,o.jsx)(t.h2,{id:"accessing-change-keyboard-shortcut-feature",children:"Accessing Change Keyboard Shortcut Feature"}),"\n",(0,o.jsx)(t.h3,{id:"via-menu-items",children:"Via Menu Items"}),"\n",(0,o.jsx)(t.p,{children:(0,o.jsx)(t.img,{src:"https://github.com/phcode-dev/phoenix/assets/5336369/2562d248-2fd5-4a92-97a8-cdd708c78c7f",alt:"Screenshot from 2024-02-08 11-04-46"})}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsx)(t.li,{children:"Navigate to any main menu (e.g., File, Edit, View)."}),"\n",(0,o.jsx)(t.li,{children:"Hover over the menu item for which you want to change the shortcut."}),"\n",(0,o.jsx)(t.li,{children:"An icon resembling a keyboard will appear to the right of the menu item."}),"\n",(0,o.jsx)(t.li,{children:"Click this icon to open the Change Keyboard Shortcut dialog."}),"\n"]}),"\n",(0,o.jsx)(t.h3,{id:"via-keyboard-shortcuts-panel",children:"Via Keyboard Shortcuts Panel"}),"\n",(0,o.jsx)(t.p,{children:(0,o.jsx)(t.img,{alt:"Keyboard shortcuts panel",src:n(832).A+"",width:"314",height:"419"})}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsxs)(t.li,{children:["Open the Keyboard Shortcuts panel by selecting ",(0,o.jsx)(t.code,{children:"Keyboard Shortcuts..."})," from the ",(0,o.jsx)(t.code,{children:"File"})," menu."]}),"\n",(0,o.jsx)(t.li,{children:"The panel displays a list of all available commands with their associated shortcuts."}),"\n",(0,o.jsx)(t.li,{children:"Locate the command for which you want to change the shortcut."}),"\n",(0,o.jsxs)(t.li,{children:["Double-click on the shortcut, or click the command and then the ",(0,o.jsx)(t.code,{children:"Change Keyboard Shortcut"})," button that appears."]}),"\n"]}),"\n",(0,o.jsx)(t.p,{children:(0,o.jsx)(t.img,{alt:"alt text",src:n(55199).A+"",width:"774",height:"363"})}),"\n",(0,o.jsx)(t.h2,{id:"changing-a-keyboard-shortcut",children:"Changing a Keyboard Shortcut"}),"\n",(0,o.jsx)(t.p,{children:(0,o.jsx)(t.img,{src:"https://github.com/phcode-dev/phoenix/assets/5336369/2028e67f-bdc9-41f2-877c-bef08f8e7743",alt:"image"})}),"\n",(0,o.jsxs)(t.ol,{children:["\n",(0,o.jsxs)(t.li,{children:["\n",(0,o.jsxs)(t.p,{children:[(0,o.jsx)(t.strong,{children:"Initiating the Change"}),":"]}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsx)(t.li,{children:"When you initiate a change through either method mentioned above, a dialog box will appear prompting you to press the new key combination for the command."}),"\n"]}),"\n"]}),"\n",(0,o.jsxs)(t.li,{children:["\n",(0,o.jsxs)(t.p,{children:[(0,o.jsx)(t.strong,{children:"Pressing the New Combination"}),":"]}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsx)(t.li,{children:"Press the keys for your new desired shortcut."}),"\n",(0,o.jsxs)(t.li,{children:["If the combination is already assigned to another command, you will be notified and given the option to choose another combination or to overwrite the existing one by pressing ",(0,o.jsx)(t.code,{children:"Assign"}),"."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,o.jsx)(t.p,{children:(0,o.jsx)(t.img,{alt:"assign shortcut",src:n(46622).A+"",width:"639",height:"209"})}),"\n",(0,o.jsxs)(t.ol,{start:"3",children:["\n",(0,o.jsxs)(t.li,{children:["\n",(0,o.jsxs)(t.p,{children:[(0,o.jsx)(t.strong,{children:"Confirmation"}),":"]}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsx)(t.li,{children:"After pressing the desired combination, if it is free, it will be set immediately."}),"\n"]}),"\n"]}),"\n",(0,o.jsxs)(t.li,{children:["\n",(0,o.jsxs)(t.p,{children:[(0,o.jsx)(t.strong,{children:"Removing a Shortcut"}),":"]}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsx)(t.li,{children:"If you wish to remove a shortcut altogether, you may have the option to click a 'Remove' button in the Change Keyboard Shortcut dialog, which unbinds the current shortcut from the command."}),"\n"]}),"\n"]}),"\n",(0,o.jsxs)(t.li,{children:["\n",(0,o.jsxs)(t.p,{children:[(0,o.jsx)(t.strong,{children:"Cancellation"}),":"]}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsx)(t.li,{children:"If you change your mind, you can cancel the operation by clicking the 'Cancel' button, closing the dialog, or pressing the 'Escape' key."}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,o.jsx)(t.h2,{id:"resetting-shortcuts",children:"Resetting Shortcuts"}),"\n",(0,o.jsxs)(t.p,{children:[(0,o.jsx)(t.img,{alt:"reset",src:n(21200).A+"",width:"789",height:"141"}),"\nUsers can reset all shortcuts to factory defaults using the 'Reset' button in the Keyboard Shortcuts panel."]}),"\n",(0,o.jsx)(t.h2,{id:"additional-notes",children:"Additional Notes"}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.strong,{children:"Persistence"}),": Changes to keyboard shortcuts are saved automatically and will persist across sessions."]}),"\n"]})]})}function l(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(d,{...e})}):d(e)}},46622:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/assign-f7883c143ca6438f8c7afc27beae385c.png"},832:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/menu-28052aafcbb7fd7dffdde7e3d78a5a7b.png"},55199:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/panel-3e18440614aedd37e8697bfb6f7b8ff5.png"},21200:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/reset-474204405c457189d9fcacffde8b7cc7.png"},28453:(e,t,n)=>{n.d(t,{R:()=>r,x:()=>a});var s=n(96540);const o={},i=s.createContext(o);function r(e){const t=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),s.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/7ef0d7f1.8c89be36.js b/assets/js/7ef0d7f1.8c89be36.js new file mode 100644 index 00000000..a518ca3d --- /dev/null +++ b/assets/js/7ef0d7f1.8c89be36.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3533],{62860:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>c,contentTitle:()=>s,default:()=>a,frontMatter:()=>t,metadata:()=>d,toc:()=>h});const d=JSON.parse('{"id":"API-Reference/filesystem/FileIndex","title":"FileIndex","description":"Import :","source":"@site/api/API-Reference/filesystem/FileIndex.md","sourceDirName":"API-Reference/filesystem","slug":"/API-Reference/filesystem/FileIndex","permalink":"/api/API-Reference/filesystem/FileIndex","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"File","permalink":"/api/API-Reference/filesystem/File"},"next":{"title":"FileSystemEntry","permalink":"/api/API-Reference/filesystem/FileSystemEntry"}}');var l=i(74848),r=i(28453);const t={},s=void 0,c={},h=[{value:"Import :",id:"import-",level:3},{value:"FileIndex",id:"fileindex",level:2},{value:"fileIndex.clear()",id:"fileindexclear",level:3},{value:"fileIndex.doNotRemoveFromIndex()",id:"fileindexdonotremovefromindex",level:3},{value:"fileIndex.visitAll(Called)",id:"fileindexvisitallcalled",level:3},{value:"fileIndex.addEntry(entry)",id:"fileindexaddentryentry",level:3},{value:"fileIndex.removeEntry(entry)",id:"fileindexremoveentryentry",level:3},{value:"fileIndex.entryRenamed(oldPath, newPath, isDirectory)",id:"fileindexentryrenamedoldpath-newpath-isdirectory",level:3},{value:"fileIndex.getEntry(path) \u21d2 File | Directory",id:"fileindexgetentrypath--file--directory",level:3},{value:"FileUtils",id:"fileutils",level:2}];function x(e){const n={a:"a",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,r.R)(),...e.components};return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(n.h3,{id:"import-",children:"Import :"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-js",children:'const FileIndex = brackets.getModule("filesystem/FileIndex")\n'})}),"\n",(0,l.jsx)("a",{name:"FileIndex"}),"\n",(0,l.jsx)(n.h2,{id:"fileindex",children:"FileIndex"}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"Kind"}),": global class"]}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.a,{href:"#FileIndex",children:"FileIndex"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.a,{href:"#FileIndex+clear",children:".clear()"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.a,{href:"#FileIndex+doNotRemoveFromIndex",children:".doNotRemoveFromIndex()"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.a,{href:"#FileIndex+visitAll",children:".visitAll(Called)"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.a,{href:"#FileIndex+addEntry",children:".addEntry(entry)"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.a,{href:"#FileIndex+removeEntry",children:".removeEntry(entry)"})}),"\n",(0,l.jsx)(n.li,{children:(0,l.jsx)(n.a,{href:"#FileIndex+entryRenamed",children:".entryRenamed(oldPath, newPath, isDirectory)"})}),"\n",(0,l.jsxs)(n.li,{children:[(0,l.jsx)(n.a,{href:"#FileIndex+getEntry",children:".getEntry(path)"})," \u21d2 ",(0,l.jsx)("code",{children:"File"})," | ",(0,l.jsx)("code",{children:"Directory"})]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,l.jsx)("a",{name:"FileIndex+clear"}),"\n",(0,l.jsx)(n.h3,{id:"fileindexclear",children:"fileIndex.clear()"}),"\n",(0,l.jsx)(n.p,{children:"Clear the file index cache."}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,l.jsx)(n.a,{href:"#FileIndex",children:(0,l.jsx)("code",{children:"FileIndex"})})]}),"\n",(0,l.jsx)("a",{name:"FileIndex+doNotRemoveFromIndex"}),"\n",(0,l.jsx)(n.h3,{id:"fileindexdonotremovefromindex",children:"fileIndex.doNotRemoveFromIndex()"}),"\n",(0,l.jsx)(n.p,{children:"Will prevent the file from being removed from index. However, it is reset when index is cleared."}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,l.jsx)(n.a,{href:"#FileIndex",children:(0,l.jsx)("code",{children:"FileIndex"})})]}),"\n",(0,l.jsx)("a",{name:"FileIndex+visitAll"}),"\n",(0,l.jsx)(n.h3,{id:"fileindexvisitallcalled",children:"fileIndex.visitAll(Called)"}),"\n",(0,l.jsx)(n.p,{children:"Visits every entry in the entire index; no stopping condition."}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,l.jsx)(n.a,{href:"#FileIndex",children:(0,l.jsx)("code",{children:"FileIndex"})})]}),"\n",(0,l.jsxs)(n.table,{children:[(0,l.jsx)(n.thead,{children:(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.th,{children:"Param"}),(0,l.jsx)(n.th,{children:"Type"}),(0,l.jsx)(n.th,{children:"Description"})]})}),(0,l.jsx)(n.tbody,{children:(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.td,{children:"Called"}),(0,l.jsx)(n.td,{children:(0,l.jsx)("code",{children:"function"})}),(0,l.jsx)(n.td,{children:"with an entry and its fullPath"})]})})]}),"\n",(0,l.jsx)("a",{name:"FileIndex+addEntry"}),"\n",(0,l.jsx)(n.h3,{id:"fileindexaddentryentry",children:"fileIndex.addEntry(entry)"}),"\n",(0,l.jsx)(n.p,{children:"Add an entry."}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,l.jsx)(n.a,{href:"#FileIndex",children:(0,l.jsx)("code",{children:"FileIndex"})})]}),"\n",(0,l.jsxs)(n.table,{children:[(0,l.jsx)(n.thead,{children:(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.th,{children:"Param"}),(0,l.jsx)(n.th,{children:"Type"}),(0,l.jsx)(n.th,{children:"Description"})]})}),(0,l.jsx)(n.tbody,{children:(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.td,{children:"entry"}),(0,l.jsx)(n.td,{children:(0,l.jsx)("code",{children:"FileSystemEntry"})}),(0,l.jsx)(n.td,{children:"The entry to add."})]})})]}),"\n",(0,l.jsx)("a",{name:"FileIndex+removeEntry"}),"\n",(0,l.jsx)(n.h3,{id:"fileindexremoveentryentry",children:"fileIndex.removeEntry(entry)"}),"\n",(0,l.jsx)(n.p,{children:"Remove an entry."}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,l.jsx)(n.a,{href:"#FileIndex",children:(0,l.jsx)("code",{children:"FileIndex"})})]}),"\n",(0,l.jsxs)(n.table,{children:[(0,l.jsx)(n.thead,{children:(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.th,{children:"Param"}),(0,l.jsx)(n.th,{children:"Type"}),(0,l.jsx)(n.th,{children:"Description"})]})}),(0,l.jsx)(n.tbody,{children:(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.td,{children:"entry"}),(0,l.jsx)(n.td,{children:(0,l.jsx)("code",{children:"FileSystemEntry"})}),(0,l.jsx)(n.td,{children:"The entry to remove."})]})})]}),"\n",(0,l.jsx)("a",{name:"FileIndex+entryRenamed"}),"\n",(0,l.jsx)(n.h3,{id:"fileindexentryrenamedoldpath-newpath-isdirectory",children:"fileIndex.entryRenamed(oldPath, newPath, isDirectory)"}),"\n",(0,l.jsx)(n.p,{children:"Notify the index that an entry has been renamed. This updates\nall affected entries in the index."}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,l.jsx)(n.a,{href:"#FileIndex",children:(0,l.jsx)("code",{children:"FileIndex"})})]}),"\n",(0,l.jsxs)(n.table,{children:[(0,l.jsx)(n.thead,{children:(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.th,{children:"Param"}),(0,l.jsx)(n.th,{children:"Type"})]})}),(0,l.jsxs)(n.tbody,{children:[(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.td,{children:"oldPath"}),(0,l.jsx)(n.td,{children:(0,l.jsx)("code",{children:"string"})})]}),(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.td,{children:"newPath"}),(0,l.jsx)(n.td,{children:(0,l.jsx)("code",{children:"string"})})]}),(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.td,{children:"isDirectory"}),(0,l.jsx)(n.td,{children:(0,l.jsx)("code",{children:"boolean"})})]})]})]}),"\n",(0,l.jsx)("a",{name:"FileIndex+getEntry"}),"\n",(0,l.jsxs)(n.h3,{id:"fileindexgetentrypath--file--directory",children:["fileIndex.getEntry(path) \u21d2 ",(0,l.jsx)("code",{children:"File"})," | ",(0,l.jsx)("code",{children:"Directory"})]}),"\n",(0,l.jsx)(n.p,{children:"Returns the cached entry for the specified path, or undefined\nif the path has not been cached."}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,l.jsx)(n.a,{href:"#FileIndex",children:(0,l.jsx)("code",{children:"FileIndex"})}),(0,l.jsx)(n.br,{}),"\n",(0,l.jsx)(n.strong,{children:"Returns"}),": ",(0,l.jsx)("code",{children:"File"})," | ",(0,l.jsx)("code",{children:"Directory"})," - The entry for the path, or undefined if it hasn't\nbeen cached yet."]}),"\n",(0,l.jsxs)(n.table,{children:[(0,l.jsx)(n.thead,{children:(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.th,{children:"Param"}),(0,l.jsx)(n.th,{children:"Type"}),(0,l.jsx)(n.th,{children:"Description"})]})}),(0,l.jsx)(n.tbody,{children:(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.td,{children:"path"}),(0,l.jsx)(n.td,{children:(0,l.jsx)("code",{children:"string"})}),(0,l.jsx)(n.td,{children:"The path of the entry to return."})]})})]}),"\n",(0,l.jsx)("a",{name:"FileUtils"}),"\n",(0,l.jsx)(n.h2,{id:"fileutils",children:"FileUtils"}),"\n",(0,l.jsx)(n.p,{children:"FileIndex is an internal module used by FileSystem to maintain an index of all files and directories."}),"\n",(0,l.jsxs)(n.p,{children:["This module is ",(0,l.jsx)(n.em,{children:"only"})," used by FileSystem, and should not be called directly."]}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"Kind"}),": global variable"]})]})}function a(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,l.jsx)(n,{...e,children:(0,l.jsx)(x,{...e})}):x(e)}},28453:(e,n,i)=>{i.d(n,{R:()=>t,x:()=>s});var d=i(96540);const l={},r=d.createContext(l);function t(e){const n=d.useContext(r);return d.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:t(e.components),d.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/8125561d.e0df3f46.js b/assets/js/8125561d.e0df3f46.js new file mode 100644 index 00000000..fe4d7df3 --- /dev/null +++ b/assets/js/8125561d.e0df3f46.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[935],{39334:(e,i,n)=>{n.r(i),n.d(i,{assets:()=>l,contentTitle:()=>a,default:()=>c,frontMatter:()=>r,metadata:()=>t,toc:()=>d});var t=n(71949),s=n(74848),o=n(28453);const r={slug:"release-3.6",title:"April-2024 Release (V-3.6) is now Live",description:"Phoenix Code 3.6 adds PHP and custom live preview servers, advanced CSS/LESS/SCSS code intelligence, and UX improvements.",authors:["arun","charly","andrew","faizan","phoenixBot"],tags:["Native Apps","Windows","Linux","Mac","Release"]},a=void 0,l={authorsImageUrls:[void 0,void 0,void 0,void 0,void 0]},d=[{value:"Custom Live Preview Servers",id:"custom-live-preview-servers",level:4},{value:"HTML Code Intelligence",id:"html-code-intelligence",level:4},{value:"Advanced CSS Tooling",id:"advanced-css-tooling",level:4},{value:"Reverse CSS Highlighting",id:"reverse-css-highlighting",level:4},{value:"Editor Rulers",id:"editor-rulers",level:4},{value:"Open Live Preview in any Browser",id:"open-live-preview-in-any-browser",level:4},{value:"Docusaurus Support",id:"docusaurus-support",level:4},{value:"UX Improvements",id:"ux-improvements",level:4},{value:"Community Contributions",id:"community-contributions",level:4},{value:"A Request from the Phoenix Team:",id:"a-request-from-the-phoenix-team",level:2}];function h(e){const i={a:"a",h2:"h2",h4:"h4",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(i.p,{children:["April release(3.6) of Phoenix Code is now available for download at\n",(0,s.jsx)(i.a,{href:"https://phcode.io",children:"phcode.io"}),"."]}),"\n",(0,s.jsx)(i.p,{children:"This month's upgrade is big! with a lot of features you asked for - PHP/Custom\nlive preview servers, advanced CSS/LESS/SCSS/HTML code intelligence and tooling,\nUX and app stability improvements."}),"\n",(0,s.jsx)(i.h4,{id:"custom-live-preview-servers",children:"Custom Live Preview Servers"}),"\n",(0,s.jsxs)(i.p,{children:["Preview PHP, React, and other dynamically rendered files with the\nnew server settings dialog. Read more at\n",(0,s.jsx)(i.a,{href:"https://docs.phcode.dev/docs/Features/live-preview-settings/",children:"Live Preview Settings Docs"}),"."]}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.img,{src:"https://github.com/phcode-dev/phoenix/assets/5336369/69fa0ee4-7262-42af-97d2-26154ec4a3b9",alt:"Screenshot from 2024-04-12 13-08-34"})}),"\n",(0,s.jsx)(i.h4,{id:"html-code-intelligence",children:"HTML Code Intelligence"}),"\n",(0,s.jsx)(i.p,{children:"CSS class hints are now shown within the HTML file's class attribute."}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.img,{src:"https://github.com/phcode-dev/phoenix/assets/5336369/112ad909-8fd0-4fc4-8042-041ecade9481",alt:"image"})}),"\n",(0,s.jsx)(i.h4,{id:"advanced-css-tooling",children:"Advanced CSS Tooling"}),"\n",(0,s.jsx)(i.p,{children:"Support for the latest CSS/LESS/SCSS syntax. Code intelligence and error\ndetection for CSS, SCSS, and LESS files."}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.img,{src:"https://github.com/phcode-dev/phoenix/assets/5336369/9c083bd3-9e34-418d-a1c8-c152393c37b2",alt:"image"})}),"\n",(0,s.jsx)(i.h4,{id:"reverse-css-highlighting",children:"Reverse CSS Highlighting"}),"\n",(0,s.jsx)(i.p,{children:"Clicking an element in the live preview now highlights its selector in the\nsource CSS file editor."}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.img,{src:"https://github.com/phcode-dev/phoenix/assets/5336369/dcb9a111-60fa-479b-8766-dd3109b2134f",alt:"Reverse CSS Highlighting gif"})}),"\n",(0,s.jsx)(i.h4,{id:"editor-rulers",children:"Editor Rulers"}),"\n",(0,s.jsxs)(i.p,{children:["Add multiple, color-customizable rulers in the editor to better visualize line\nlengths. ",(0,s.jsx)(i.a,{href:"https://docs.phcode.dev/docs/Features/editor-rulers/",children:"Read more..."})]}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.img,{src:"https://github.com/phcode-dev/phoenix/assets/5336369/71b8b04c-d2ca-47b8-84bb-53cd0fb4593c",alt:"image"})}),"\n",(0,s.jsx)(i.h4,{id:"open-live-preview-in-any-browser",children:"Open Live Preview in any Browser"}),"\n",(0,s.jsx)(i.p,{children:"Direct buttons to open live previews in Chrome, Edge, Safari, and Firefox."}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.img,{src:"https://github.com/phcode-dev/phoenix/assets/5336369/05f92c99-8a35-45a5-a8ee-75d581e6e96a",alt:"image"})}),"\n",(0,s.jsx)(i.h4,{id:"docusaurus-support",children:"Docusaurus Support"}),"\n",(0,s.jsxs)(i.p,{children:["Live preview ",(0,s.jsx)(i.a,{href:"https://docusaurus.io/",children:"docusaurus.io"})," based markdown\ndocumentation server."]}),"\n",(0,s.jsx)(i.h4,{id:"ux-improvements",children:"UX Improvements"}),"\n",(0,s.jsx)(i.p,{children:"Increased stability and more predictable live preview behavior."}),"\n",(0,s.jsx)(i.h4,{id:"community-contributions",children:"Community Contributions"}),"\n",(0,s.jsxs)(i.ol,{children:["\n",(0,s.jsxs)(i.li,{children:["Changes to files and folders made externally are now automatically synced in\nthe Browser version of Phoenix Code.\n(",(0,s.jsx)(i.a,{href:"https://github.com/phcode-dev/phoenix/pull/1566",children:"view change"}),") - By\n",(0,s.jsx)(i.a,{href:"https://github.com/ayoung5555",children:"Andrew Young"}),",\n",(0,s.jsx)(i.a,{href:"https://github.com/faizanbhagat",children:"Faizan Bhagat"})]}),"\n"]}),"\n",(0,s.jsx)(i.h2,{id:"a-request-from-the-phoenix-team",children:"A Request from the Phoenix Team:"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"Share your feedback:"})," ",(0,s.jsx)(i.a,{href:"https://github.com/orgs/phcode-dev/discussions",children:"https://github.com/orgs/phcode-dev/discussions"})]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"Spread the word"})," about Phoenix to friends and colleagues."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsxs)(i.a,{href:"https://github.com/sponsors/phcode-dev",children:[(0,s.jsx)(i.strong,{children:"Consider supporting us"})," on GitHub Sponsors"]}),".\nEvery contribution helps us to keep improving Phoenix Code."]}),"\n"]}),"\n",(0,s.jsx)(i.p,{children:"With gratitude,"}),"\n",(0,s.jsx)(i.p,{children:"The Phoenix Team"})]})}function c(e={}){const{wrapper:i}={...(0,o.R)(),...e.components};return i?(0,s.jsx)(i,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},28453:(e,i,n)=>{n.d(i,{R:()=>r,x:()=>a});var t=n(96540);const s={},o=t.createContext(s);function r(e){const i=t.useContext(o);return t.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function a(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),t.createElement(o.Provider,{value:i},e.children)}},71949:e=>{e.exports=JSON.parse('{"permalink":"/blog/release-3.6","editUrl":"https://github.com/phcode-dev/docs/blob/main/blog/2024-04-27-Release-3.6/index.md","source":"@site/blog/2024-04-27-Release-3.6/index.md","title":"April-2024 Release (V-3.6) is now Live","description":"Phoenix Code 3.6 adds PHP and custom live preview servers, advanced CSS/LESS/SCSS code intelligence, and UX improvements.","date":"2024-04-27T00:00:00.000Z","tags":[{"inline":true,"label":"Native Apps","permalink":"/blog/tags/native-apps"},{"inline":true,"label":"Windows","permalink":"/blog/tags/windows"},{"inline":true,"label":"Linux","permalink":"/blog/tags/linux"},{"inline":true,"label":"Mac","permalink":"/blog/tags/mac"},{"inline":true,"label":"Release","permalink":"/blog/tags/release"}],"readingTime":1.88,"hasTruncateMarker":false,"authors":[{"name":"Arun Bose","title":"Co-Founder, Phoenix Code","url":"https://github.com/abose","imageURL":"https://github.com/abose.png","key":"arun","page":null},{"name":"Charly P Abraham","title":"Co-Founder, Phoenix Code","url":"https://github.com/charlypa","imageURL":"https://github.com/charlypa.png","key":"charly","page":null},{"name":"Andrew Young","title":"Community Contributor","url":"https://github.com/ayoung5555","imageURL":"https://github.com/ayoung5555.png","key":"andrew","page":null},{"name":"Faizan Bhagat","title":"Community Contributor","url":"https://github.com/faizanbhagat","imageURL":"https://github.com/faizanbhagat.png","key":"faizan","page":null},{"name":"Phoenix Code Bot","title":"Our little elf who keeps the whole place together","url":"https://github.com/phoenixide","imageURL":"https://github.com/phoenixide.png","key":"phoenixBot","page":null}],"frontMatter":{"slug":"release-3.6","title":"April-2024 Release (V-3.6) is now Live","description":"Phoenix Code 3.6 adds PHP and custom live preview servers, advanced CSS/LESS/SCSS code intelligence, and UX improvements.","authors":["arun","charly","andrew","faizan","phoenixBot"],"tags":["Native Apps","Windows","Linux","Mac","Release"]},"unlisted":false,"prevItem":{"title":"Little Things Release (May-2024, V-3.7) is now Live","permalink":"/blog/release-3.7"},"nextItem":{"title":"March-2024 Release (V-3.5) is now Live","permalink":"/blog/release-3.5"}}')}}]); \ No newline at end of file diff --git a/assets/js/8142.6bed2216.js b/assets/js/8142.6bed2216.js new file mode 100644 index 00000000..5379a784 --- /dev/null +++ b/assets/js/8142.6bed2216.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8142],{88142:(t,e,a)=>{a.d(e,{diagram:()=>R});var i,n=a(54616),r=(a(89625),a(21152),a(10045),a(5164),a(28698),a(5894),a(63245),a(32387),a(30092),a(13226)),d=a(67633),s=a(40797),o=a(70451),g=a(62334),p=a(697),h=(0,s.K2)((t=>t.append("circle").attr("class","start-state").attr("r",(0,d.D7)().state.sizeUnit).attr("cx",(0,d.D7)().state.padding+(0,d.D7)().state.sizeUnit).attr("cy",(0,d.D7)().state.padding+(0,d.D7)().state.sizeUnit)),"drawStartState"),c=(0,s.K2)((t=>t.append("line").style("stroke","grey").style("stroke-dasharray","3").attr("x1",(0,d.D7)().state.textHeight).attr("class","divider").attr("x2",2*(0,d.D7)().state.textHeight).attr("y1",0).attr("y2",0)),"drawDivider"),l=(0,s.K2)(((t,e)=>{const a=t.append("text").attr("x",2*(0,d.D7)().state.padding).attr("y",(0,d.D7)().state.textHeight+2*(0,d.D7)().state.padding).attr("font-size",(0,d.D7)().state.fontSize).attr("class","state-title").text(e.id),i=a.node().getBBox();return t.insert("rect",":first-child").attr("x",(0,d.D7)().state.padding).attr("y",(0,d.D7)().state.padding).attr("width",i.width+2*(0,d.D7)().state.padding).attr("height",i.height+2*(0,d.D7)().state.padding).attr("rx",(0,d.D7)().state.radius),a}),"drawSimpleState"),x=(0,s.K2)(((t,e)=>{const a=(0,s.K2)((function(t,e,a){const i=t.append("tspan").attr("x",2*(0,d.D7)().state.padding).text(e);a||i.attr("dy",(0,d.D7)().state.textHeight)}),"addTspan"),i=t.append("text").attr("x",2*(0,d.D7)().state.padding).attr("y",(0,d.D7)().state.textHeight+1.3*(0,d.D7)().state.padding).attr("font-size",(0,d.D7)().state.fontSize).attr("class","state-title").text(e.descriptions[0]).node().getBBox(),n=i.height,r=t.append("text").attr("x",(0,d.D7)().state.padding).attr("y",n+.4*(0,d.D7)().state.padding+(0,d.D7)().state.dividerMargin+(0,d.D7)().state.textHeight).attr("class","state-description");let o=!0,g=!0;e.descriptions.forEach((function(t){o||(a(r,t,g),g=!1),o=!1}));const p=t.append("line").attr("x1",(0,d.D7)().state.padding).attr("y1",(0,d.D7)().state.padding+n+(0,d.D7)().state.dividerMargin/2).attr("y2",(0,d.D7)().state.padding+n+(0,d.D7)().state.dividerMargin/2).attr("class","descr-divider"),h=r.node().getBBox(),c=Math.max(h.width,i.width);return p.attr("x2",c+3*(0,d.D7)().state.padding),t.insert("rect",":first-child").attr("x",(0,d.D7)().state.padding).attr("y",(0,d.D7)().state.padding).attr("width",c+2*(0,d.D7)().state.padding).attr("height",h.height+n+2*(0,d.D7)().state.padding).attr("rx",(0,d.D7)().state.radius),t}),"drawDescrState"),D=(0,s.K2)(((t,e,a)=>{const i=(0,d.D7)().state.padding,n=2*(0,d.D7)().state.padding,r=t.node().getBBox(),s=r.width,o=r.x,g=t.append("text").attr("x",0).attr("y",(0,d.D7)().state.titleShift).attr("font-size",(0,d.D7)().state.fontSize).attr("class","state-title").text(e.id),p=g.node().getBBox().width+n;let h,c=Math.max(p,s);c===s&&(c+=n);const l=t.node().getBBox();e.doc,h=o-i,p>s&&(h=(s-c)/2+i),Math.abs(o-l.x)s&&(h=o-(p-s)/2);const x=1-(0,d.D7)().state.textHeight;return t.insert("rect",":first-child").attr("x",h).attr("y",x).attr("class",a?"alt-composit":"composit").attr("width",c).attr("height",l.height+(0,d.D7)().state.textHeight+(0,d.D7)().state.titleShift+1).attr("rx","0"),g.attr("x",h+i),p<=s&&g.attr("x",o+(c-n)/2-p/2+i),t.insert("rect",":first-child").attr("x",h).attr("y",(0,d.D7)().state.titleShift-(0,d.D7)().state.textHeight-(0,d.D7)().state.padding).attr("width",c).attr("height",3*(0,d.D7)().state.textHeight).attr("rx",(0,d.D7)().state.radius),t.insert("rect",":first-child").attr("x",h).attr("y",(0,d.D7)().state.titleShift-(0,d.D7)().state.textHeight-(0,d.D7)().state.padding).attr("width",c).attr("height",l.height+3+2*(0,d.D7)().state.textHeight).attr("rx",(0,d.D7)().state.radius),t}),"addTitleAndBox"),u=(0,s.K2)((t=>(t.append("circle").attr("class","end-state-outer").attr("r",(0,d.D7)().state.sizeUnit+(0,d.D7)().state.miniPadding).attr("cx",(0,d.D7)().state.padding+(0,d.D7)().state.sizeUnit+(0,d.D7)().state.miniPadding).attr("cy",(0,d.D7)().state.padding+(0,d.D7)().state.sizeUnit+(0,d.D7)().state.miniPadding),t.append("circle").attr("class","end-state-inner").attr("r",(0,d.D7)().state.sizeUnit).attr("cx",(0,d.D7)().state.padding+(0,d.D7)().state.sizeUnit+2).attr("cy",(0,d.D7)().state.padding+(0,d.D7)().state.sizeUnit+2))),"drawEndState"),f=(0,s.K2)(((t,e)=>{let a=(0,d.D7)().state.forkWidth,i=(0,d.D7)().state.forkHeight;if(e.parentId){let t=a;a=i,i=t}return t.append("rect").style("stroke","black").style("fill","black").attr("width",a).attr("height",i).attr("x",(0,d.D7)().state.padding).attr("y",(0,d.D7)().state.padding)}),"drawForkJoinState"),y=(0,s.K2)(((t,e,a,i)=>{let n=0;const r=i.append("text");r.style("text-anchor","start"),r.attr("class","noteText");let s=t.replace(/\r\n/g,"
    ");s=s.replace(/\n/g,"
    ");const o=s.split(d.Y2.lineBreakRegex);let g=1.25*(0,d.D7)().state.noteMargin;for(const p of o){const t=p.trim();if(t.length>0){const i=r.append("tspan");if(i.text(t),0===g){g+=i.node().getBBox().height}n+=g,i.attr("x",e+(0,d.D7)().state.noteMargin),i.attr("y",a+n+1.25*(0,d.D7)().state.noteMargin)}}return{textWidth:r.node().getBBox().width,textHeight:n}}),"_drawLongText"),w=(0,s.K2)(((t,e)=>{e.attr("class","state-note");const a=e.append("rect").attr("x",0).attr("y",(0,d.D7)().state.padding),i=e.append("g"),{textWidth:n,textHeight:r}=y(t,0,0,i);return a.attr("height",r+2*(0,d.D7)().state.noteMargin),a.attr("width",n+2*(0,d.D7)().state.noteMargin),a}),"drawNote"),m=(0,s.K2)((function(t,e){const a=e.id,i={id:a,label:e.id,width:0,height:0},n=t.append("g").attr("id",a).attr("class","stateGroup");"start"===e.type&&h(n),"end"===e.type&&u(n),"fork"!==e.type&&"join"!==e.type||f(n,e),"note"===e.type&&w(e.note.text,n),"divider"===e.type&&c(n),"default"===e.type&&0===e.descriptions.length&&l(n,e),"default"===e.type&&e.descriptions.length>0&&x(n,e);const r=n.node().getBBox();return i.width=r.width+2*(0,d.D7)().state.padding,i.height=r.height+2*(0,d.D7)().state.padding,i}),"drawState"),b=0,B=(0,s.K2)((function(t,e,a){const i=(0,s.K2)((function(t){switch(t){case n.u4.relationType.AGGREGATION:return"aggregation";case n.u4.relationType.EXTENSION:return"extension";case n.u4.relationType.COMPOSITION:return"composition";case n.u4.relationType.DEPENDENCY:return"dependency"}}),"getRelationType");e.points=e.points.filter((t=>!Number.isNaN(t.y)));const g=e.points,p=(0,o.n8j)().x((function(t){return t.x})).y((function(t){return t.y})).curve(o.qrM),h=t.append("path").attr("d",p(g)).attr("id","edge"+b).attr("class","transition");let c="";if((0,d.D7)().state.arrowMarkerAbsolute&&(c=(0,d.ID)(!0)),h.attr("marker-end","url("+c+"#"+i(n.u4.relationType.DEPENDENCY)+"End)"),void 0!==a.title){const i=t.append("g").attr("class","stateLabel"),{x:n,y:o}=r._K.calcLabelPosition(e.points),g=d.Y2.getRows(a.title);let p=0;const h=[];let c=0,l=0;for(let t=0;t<=g.length;t++){const e=i.append("text").attr("text-anchor","middle").text(g[t]).attr("x",n).attr("y",o+p),a=e.node().getBBox();if(c=Math.max(c,a.width),l=Math.min(l,a.x),s.Rm.info(a.x,n,o+p),0===p){const t=e.node().getBBox();p=t.height,s.Rm.info("Title height",p,o)}h.push(e)}let x=p*g.length;if(g.length>1){const t=(g.length-1)*p*.5;h.forEach(((e,a)=>e.attr("y",o+a*p-t))),x=p*g.length}const D=i.node().getBBox();i.insert("rect",":first-child").attr("class","box").attr("x",n-c/2-(0,d.D7)().state.padding/2).attr("y",o-x/2-(0,d.D7)().state.padding/2-3.5).attr("width",c+(0,d.D7)().state.padding).attr("height",x+(0,d.D7)().state.padding),s.Rm.info(D)}b++}),"drawEdge"),k={},S=(0,s.K2)((function(){}),"setConf"),N=(0,s.K2)((function(t){t.append("defs").append("marker").attr("id","dependencyEnd").attr("refX",19).attr("refY",7).attr("markerWidth",20).attr("markerHeight",28).attr("orient","auto").append("path").attr("d","M 19,7 L9,13 L14,7 L9,1 Z")}),"insertMarkers"),E=(0,s.K2)((function(t,e,a,n){i=(0,d.D7)().state;const r=(0,d.D7)().securityLevel;let g;"sandbox"===r&&(g=(0,o.Ltv)("#i"+e));const p="sandbox"===r?(0,o.Ltv)(g.nodes()[0].contentDocument.body):(0,o.Ltv)("body"),h="sandbox"===r?g.nodes()[0].contentDocument:document;s.Rm.debug("Rendering diagram "+t);const c=p.select(`[id='${e}']`);N(c);const l=n.db.getRootDoc();v(l,c,void 0,!1,p,h,n);const x=i.padding,D=c.node().getBBox(),u=D.width+2*x,f=D.height+2*x,y=1.75*u;(0,d.a$)(c,f,y,i.useMaxWidth),c.attr("viewBox",`${D.x-i.padding} ${D.y-i.padding} `+u+" "+f)}),"draw"),M=(0,s.K2)((t=>t?t.length*i.fontSizeFactor:1),"getLabelWidth"),v=(0,s.K2)(((t,e,a,n,r,o,h)=>{const c=new p.T({compound:!0,multigraph:!0});let l,x=!0;for(l=0;l{const e=t.parentElement;let a=0,i=0;e&&(e.parentElement&&(a=e.parentElement.getBBox().width),i=parseInt(e.getAttribute("data-x-shift"),10),Number.isNaN(i)&&(i=0)),t.setAttribute("x1",0-i+8),t.setAttribute("x2",a-i-8)}))}else s.Rm.debug("No Node "+t+": "+JSON.stringify(c.node(t)))}));let S=b.getBBox();c.edges().forEach((function(t){void 0!==t&&void 0!==c.edge(t)&&(s.Rm.debug("Edge "+t.v+" -> "+t.w+": "+JSON.stringify(c.edge(t))),B(e,c.edge(t),c.edge(t).relation))})),S=b.getBBox();const N={id:a||"root",label:a||"root",width:0,height:0};return N.width=S.width+2*i.padding,N.height=S.height+2*i.padding,s.Rm.debug("Doc rendered",N,c),N}),"renderDoc"),K={setConf:S,draw:E},R={parser:n.Zk,get db(){return new n.u4(1)},renderer:K,styles:n.tM,init:(0,s.K2)((t=>{t.state||(t.state={}),t.state.arrowMarkerAbsolute=t.arrowMarkerAbsolute}),"init")}}}]); \ No newline at end of file diff --git a/assets/js/81461e25.1ea4d49f.js b/assets/js/81461e25.1ea4d49f.js new file mode 100644 index 00000000..55564a6a --- /dev/null +++ b/assets/js/81461e25.1ea4d49f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8513],{82886:(e,i,n)=>{n.r(i),n.d(i,{assets:()=>o,contentTitle:()=>l,default:()=>h,frontMatter:()=>r,metadata:()=>t,toc:()=>a});const t=JSON.parse('{"id":"API-Reference/widgets/StatusBar","title":"StatusBar","description":"Import :","source":"@site/api/API-Reference/widgets/StatusBar.md","sourceDirName":"API-Reference/widgets","slug":"/API-Reference/widgets/StatusBar","permalink":"/api/API-Reference/widgets/StatusBar","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"PopUpManager","permalink":"/api/API-Reference/widgets/PopUpManager"},"next":{"title":"IndexingWorker","permalink":"/api/API-Reference/worker/IndexingWorker"}}');var s=n(74848),d=n(28453);const r={},l=void 0,o={},a=[{value:"Import :",id:"import-",level:3},{value:"AppInit",id:"appinit",level:2},{value:"showBusyIndicator(updateCursor)",id:"showbusyindicatorupdatecursor",level:2},{value:"hideBusyIndicator()",id:"hidebusyindicator",level:2},{value:"addIndicator(id, [indicator], [visible], [style], [tooltip], [insertBefore])",id:"addindicatorid-indicator-visible-style-tooltip-insertbefore",level:2},{value:"updateIndicator(id, visible, [style], [tooltip])",id:"updateindicatorid-visible-style-tooltip",level:2},{value:"hideInformation()",id:"hideinformation",level:2},{value:"showInformation()",id:"showinformation",level:2},{value:"hideIndicators()",id:"hideindicators",level:2},{value:"showIndicators()",id:"showindicators",level:2},{value:"hideAllPanes()",id:"hideallpanes",level:2},{value:"showAllPanes()",id:"showallpanes",level:2},{value:"hide()",id:"hide",level:2},{value:"show()",id:"show",level:2}];function c(e){const i={code:"code",h2:"h2",h3:"h3",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,d.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(i.h3,{id:"import-",children:"Import :"}),"\n",(0,s.jsx)(i.pre,{children:(0,s.jsx)(i.code,{className:"language-js",children:'const StatusBar = brackets.getModule("widgets/StatusBar")\n'})}),"\n",(0,s.jsx)("a",{name:"AppInit"}),"\n",(0,s.jsx)(i.h2,{id:"appinit",children:"AppInit"}),"\n",(0,s.jsx)(i.p,{children:"A status bar with support for file information and busy and status indicators. This is a semi-generic\ncontainer; for the code that decides what content appears in the status bar, see client modules like\nEditorStatusBar. (Although in practice StatusBar's HTML structure and initialization\nassume it's only used for this one purpose, and all the APIs are on a singleton)."}),"\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.strong,{children:"Kind"}),": global variable"]}),"\n",(0,s.jsx)("a",{name:"showBusyIndicator"}),"\n",(0,s.jsx)(i.h2,{id:"showbusyindicatorupdatecursor",children:"showBusyIndicator(updateCursor)"}),"\n",(0,s.jsx)(i.p,{children:"Shows the 'busy' indicator"}),"\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsxs)(i.table,{children:[(0,s.jsx)(i.thead,{children:(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.th,{children:"Param"}),(0,s.jsx)(i.th,{children:"Type"}),(0,s.jsx)(i.th,{children:"Description"})]})}),(0,s.jsx)(i.tbody,{children:(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"updateCursor"}),(0,s.jsx)(i.td,{children:(0,s.jsx)("code",{children:"boolean"})}),(0,s.jsx)(i.td,{children:'Sets the cursor to "wait"'})]})})]}),"\n",(0,s.jsx)("a",{name:"hideBusyIndicator"}),"\n",(0,s.jsx)(i.h2,{id:"hidebusyindicator",children:"hideBusyIndicator()"}),"\n",(0,s.jsx)(i.p,{children:"Hides the 'busy' indicator"}),"\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsx)("a",{name:"addIndicator"}),"\n",(0,s.jsx)(i.h2,{id:"addindicatorid-indicator-visible-style-tooltip-insertbefore",children:"addIndicator(id, [indicator], [visible], [style], [tooltip], [insertBefore])"}),"\n",(0,s.jsx)(i.p,{children:"Registers a new status indicator"}),"\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsxs)(i.table,{children:[(0,s.jsx)(i.thead,{children:(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.th,{children:"Param"}),(0,s.jsx)(i.th,{children:"Type"}),(0,s.jsx)(i.th,{children:"Description"})]})}),(0,s.jsxs)(i.tbody,{children:[(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"id"}),(0,s.jsx)(i.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(i.td,{children:"Registration id of the indicator to be updated."})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"[indicator]"}),(0,s.jsxs)(i.td,{children:[(0,s.jsx)("code",{children:"DOMNode"})," | ",(0,s.jsx)("code",{children:"jQueryObject"})]}),(0,s.jsx)(i.td,{children:"Optional DOMNode for the indicator"})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"[visible]"}),(0,s.jsx)(i.td,{children:(0,s.jsx)("code",{children:"boolean"})}),(0,s.jsx)(i.td,{children:"Shows or hides the indicator over the statusbar."})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"[style]"}),(0,s.jsx)(i.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(i.td,{children:'Sets the attribute "class" of the indicator.'})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"[tooltip]"}),(0,s.jsx)(i.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(i.td,{children:'Sets the attribute "title" of the indicator.'})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"[insertBefore]"}),(0,s.jsx)(i.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(i.td,{children:"An id of an existing status bar indicator. The new indicator will be inserted before (i.e. to the left of) the indicator specified by this parameter."})]})]})]}),"\n",(0,s.jsx)("a",{name:"updateIndicator"}),"\n",(0,s.jsx)(i.h2,{id:"updateindicatorid-visible-style-tooltip",children:"updateIndicator(id, visible, [style], [tooltip])"}),"\n",(0,s.jsx)(i.p,{children:"Updates a status indicator"}),"\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsxs)(i.table,{children:[(0,s.jsx)(i.thead,{children:(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.th,{children:"Param"}),(0,s.jsx)(i.th,{children:"Type"}),(0,s.jsx)(i.th,{children:"Description"})]})}),(0,s.jsxs)(i.tbody,{children:[(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"id"}),(0,s.jsx)(i.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(i.td,{children:"Registration id of the indicator to be updated."})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"visible"}),(0,s.jsx)(i.td,{children:(0,s.jsx)("code",{children:"boolean"})}),(0,s.jsx)(i.td,{children:"Shows or hides the indicator over the statusbar."})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"[style]"}),(0,s.jsx)(i.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(i.td,{children:'Sets the attribute "class" of the indicator.'})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"[tooltip]"}),(0,s.jsx)(i.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(i.td,{children:'Sets the attribute "title" of the indicator.'})]})]})]}),"\n",(0,s.jsx)("a",{name:"hideInformation"}),"\n",(0,s.jsx)(i.h2,{id:"hideinformation",children:"hideInformation()"}),"\n",(0,s.jsx)(i.p,{children:"Hide the statusbar Information Panel"}),"\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsx)("a",{name:"showInformation"}),"\n",(0,s.jsx)(i.h2,{id:"showinformation",children:"showInformation()"}),"\n",(0,s.jsx)(i.p,{children:"Show the statusbar Information Panel"}),"\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsx)("a",{name:"hideIndicators"}),"\n",(0,s.jsx)(i.h2,{id:"hideindicators",children:"hideIndicators()"}),"\n",(0,s.jsx)(i.p,{children:"Hide the statusbar Indicators"}),"\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsx)("a",{name:"showIndicators"}),"\n",(0,s.jsx)(i.h2,{id:"showindicators",children:"showIndicators()"}),"\n",(0,s.jsx)(i.p,{children:"Show the statusbar Indicators"}),"\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsx)("a",{name:"hideAllPanes"}),"\n",(0,s.jsx)(i.h2,{id:"hideallpanes",children:"hideAllPanes()"}),"\n",(0,s.jsx)(i.p,{children:"Hides all panels but not the status bar"}),"\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsx)("a",{name:"showAllPanes"}),"\n",(0,s.jsx)(i.h2,{id:"showallpanes",children:"showAllPanes()"}),"\n",(0,s.jsx)(i.p,{children:"Shows all panels (will not show a hidden statusbar)"}),"\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsx)("a",{name:"hide"}),"\n",(0,s.jsx)(i.h2,{id:"hide",children:"hide()"}),"\n",(0,s.jsx)(i.p,{children:"Hide the statusbar"}),"\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsx)("a",{name:"show"}),"\n",(0,s.jsx)(i.h2,{id:"show",children:"show()"}),"\n",(0,s.jsx)(i.p,{children:"Show the statusbar"}),"\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.strong,{children:"Kind"}),": global function"]})]})}function h(e={}){const{wrapper:i}={...(0,d.R)(),...e.components};return i?(0,s.jsx)(i,{...e,children:(0,s.jsx)(c,{...e})}):c(e)}},28453:(e,i,n)=>{n.d(i,{R:()=>r,x:()=>l});var t=n(96540);const s={},d=t.createContext(s);function r(e){const i=t.useContext(d);return t.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function l(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),t.createElement(d.Provider,{value:i},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/814f3328.2a960e04.js b/assets/js/814f3328.2a960e04.js new file mode 100644 index 00000000..23a71d8a --- /dev/null +++ b/assets/js/814f3328.2a960e04.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7472],{55513:e=>{e.exports=JSON.parse('{"title":"Recent posts","items":[{"title":"Phoenix Code 5.1: AI, Design Mode & More","permalink":"/blog/release-5.1","unlisted":false,"date":"2026-05-08T00:00:00.000Z"},{"title":"Brackets Editor in 2026: Phoenix Code Picks Up Where It Left Off","permalink":"/blog/brackets-editor-phoenix-code","unlisted":false,"date":"2026-03-04T00:00:00.000Z"},{"title":"Phoenix Pro Release (January-2026, V-5.0) is now Live","permalink":"/blog/release-5.0","unlisted":false,"date":"2026-01-18T00:00:00.000Z"},{"title":"Git It Release (January-2025, V-4.0) is now Live","permalink":"/blog/release-4.0","unlisted":false,"date":"2025-01-30T00:00:00.000Z"},{"title":"Phoenix Code: The Legacy of Brackets - Continued","permalink":"/blog/Blog-Legacy","unlisted":false,"date":"2025-01-30T00:00:00.000Z"},{"title":"Editor Experience Release (November-2024, V-3.10) is now Live","permalink":"/blog/release-3.10","unlisted":false,"date":"2024-11-24T00:00:00.000Z"},{"title":"HTML Workflows and stability Release (September-2024, V-3.9) is now Live","permalink":"/blog/release-3.9","unlisted":false,"date":"2024-09-02T00:00:00.000Z"},{"title":"Critical Update + HTML Helpers Release (June-2024, V-3.8) is now Live","permalink":"/blog/release-3.8","unlisted":false,"date":"2024-06-27T00:00:00.000Z"},{"title":"Little Things Release (May-2024, V-3.7) is now Live","permalink":"/blog/release-3.7","unlisted":false,"date":"2024-05-26T00:00:00.000Z"},{"title":"April-2024 Release (V-3.6) is now Live","permalink":"/blog/release-3.6","unlisted":false,"date":"2024-04-27T00:00:00.000Z"},{"title":"March-2024 Release (V-3.5) is now Live","permalink":"/blog/release-3.5","unlisted":false,"date":"2024-03-26T00:00:00.000Z"},{"title":"Introducing Phoenix Code Desktop- Now on Windows, Mac & Linux","permalink":"/blog/welcome","unlisted":false,"date":"2024-03-05T00:00:00.000Z"}]}')}}]); \ No newline at end of file diff --git a/assets/js/81f53be3.071fa26e.js b/assets/js/81f53be3.071fa26e.js new file mode 100644 index 00000000..6ed1d959 --- /dev/null +++ b/assets/js/81f53be3.071fa26e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2178],{86656:(e,d,r)=>{r.r(d),r.d(d,{assets:()=>l,contentTitle:()=>t,default:()=>j,frontMatter:()=>i,metadata:()=>n,toc:()=>h});const n=JSON.parse('{"id":"API-Reference/command/Keys","title":"Keys","description":"Import :","source":"@site/api/API-Reference/command/Keys.md","sourceDirName":"API-Reference/command","slug":"/API-Reference/command/Keys","permalink":"/api/API-Reference/command/Keys","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"KeyboardOverlayMode","permalink":"/api/API-Reference/command/KeyboardOverlayMode"},"next":{"title":"Menus","permalink":"/api/API-Reference/command/Menus"}}');var s=r(74848),c=r(28453);const i={},t=void 0,l={},h=[{value:"Import :",id:"import-",level:3},{value:"KEY : enum",id:"key--enum",level:2}];function x(e){const d={br:"br",code:"code",h2:"h2",h3:"h3",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,c.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(d.h3,{id:"import-",children:"Import :"}),"\n",(0,s.jsx)(d.pre,{children:(0,s.jsx)(d.code,{className:"language-js",children:'const Keys = brackets.getModule("command/Keys")\n'})}),"\n",(0,s.jsx)("a",{name:"KEY"}),"\n",(0,s.jsxs)(d.h2,{id:"key--enum",children:["KEY : ",(0,s.jsx)("code",{children:"enum"})]}),"\n",(0,s.jsx)(d.p,{children:"Defines common keyboard key identifiers for use in keyboard event handling."}),"\n",(0,s.jsxs)(d.p,{children:[(0,s.jsx)(d.strong,{children:"Kind"}),": global enum",(0,s.jsx)(d.br,{}),"\n",(0,s.jsx)(d.strong,{children:"Properties"})]}),"\n",(0,s.jsxs)(d.table,{children:[(0,s.jsx)(d.thead,{children:(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.th,{children:"Name"}),(0,s.jsx)(d.th,{children:"Type"}),(0,s.jsx)(d.th,{children:"Default"})]})}),(0,s.jsxs)(d.tbody,{children:[(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:"ENTER"}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:'"Enter"'})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:"RETURN"}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:'"Return"'})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:"ESCAPE"}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:'"Escape"'})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:"ARROW_LEFT"}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:'"ArrowLeft"'})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:"ARROW_RIGHT"}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:'"ArrowRight"'})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:"ARROW_UP"}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:'"ArrowUp"'})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:"ARROW_DOWN"}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:'"ArrowDown"'})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:"SPACE"}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:'" "'})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:"TAB"}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:'"Tab"'})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:"BACKSPACE"}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:'"Backspace"'})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:"DELETE"}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:'"Delete"'})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:"HOME"}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:'"Home"'})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:"END"}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:'"End"'})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:"PAGE_UP"}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:'"PageUp"'})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:"PAGE_DOWN"}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:'"PageDown"'})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:"SHIFT"}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:'"Shift"'})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:"CONTROL"}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:'"Control"'})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:"ALT"}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:'"Alt"'})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:"META"}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:'"Meta"'})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:"F1"}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:'"F1"'})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:"F2"}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:'"F2"'})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:"F3"}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:'"F3"'})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:"F4"}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:'"F4"'})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:"F5"}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:'"F5"'})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:"F6"}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:'"F6"'})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:"F7"}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:'"F7"'})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:"F8"}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:'"F8"'})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:"F9"}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:'"F9"'})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:"F10"}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:'"F10"'})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:"F11"}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:'"F11"'})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:"F12"}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:'"F12"'})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:"INSERT"}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:'"Insert"'})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:"CONTEXT_MENU"}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:'"ContextMenu"'})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:"NUM_LOCK"}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:'"NumLock"'})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:"SCROLL_LOCK"}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:'"ScrollLock"'})})]}),(0,s.jsxs)(d.tr,{children:[(0,s.jsx)(d.td,{children:"CAPS_LOCK"}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(d.td,{children:(0,s.jsx)("code",{children:'"CapsLock"'})})]})]})]})]})}function j(e={}){const{wrapper:d}={...(0,c.R)(),...e.components};return d?(0,s.jsx)(d,{...e,children:(0,s.jsx)(x,{...e})}):x(e)}},28453:(e,d,r)=>{r.d(d,{R:()=>i,x:()=>t});var n=r(96540);const s={},c=n.createContext(s);function i(e){const d=n.useContext(c);return n.useMemo((function(){return"function"==typeof e?e(d):{...d,...e}}),[d,e])}function t(e){let d;return d=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),n.createElement(c.Provider,{value:d},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/8246.aaf48af0.js b/assets/js/8246.aaf48af0.js new file mode 100644 index 00000000..10e30d80 --- /dev/null +++ b/assets/js/8246.aaf48af0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8246],{8246:(e,r,a)=>{a.d(r,{diagram:()=>p});var s=a(98621),t=a(73590),n=a(67633),d=a(40797),i=a(78731),o={parse:(0,d.K2)((async e=>{const r=await(0,i.qg)("info",e);d.Rm.debug(r)}),"parse")},c={version:s.n.version+""},p={parser:o,db:{getVersion:(0,d.K2)((()=>c.version),"getVersion")},renderer:{draw:(0,d.K2)(((e,r,a)=>{d.Rm.debug("rendering info diagram\n"+e);const s=(0,t.D)(r);(0,n.a$)(s,100,400,!0);s.append("g").append("text").attr("x",100).attr("y",40).attr("class","version").attr("font-size",32).style("text-anchor","middle").text(`v${a}`)}),"draw")}}}}]); \ No newline at end of file diff --git a/assets/js/8249.9ee67ad0.js b/assets/js/8249.9ee67ad0.js new file mode 100644 index 00000000..4754c018 --- /dev/null +++ b/assets/js/8249.9ee67ad0.js @@ -0,0 +1 @@ +(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8249],{26527:function(t,e,i){var n;n=function(t){return(()=>{"use strict";var e={658:t=>{t.exports=null!=Object.assign?Object.assign.bind(Object):function(t){for(var e=arguments.length,i=Array(e>1?e-1:0),n=1;n{var n=function(t,e){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return function(t,e){var i=[],n=!0,r=!1,o=void 0;try{for(var s,a=t[Symbol.iterator]();!(n=(s=a.next()).done)&&(i.push(s.value),!e||i.length!==e);n=!0);}catch(h){r=!0,o=h}finally{try{!n&&a.return&&a.return()}finally{if(r)throw o}}return i}(t,e);throw new TypeError("Invalid attempt to destructure non-iterable instance")},r=i(140).layoutBase.LinkedList,o={getTopMostNodes:function(t){for(var e={},i=0;i0&&l.merge(t)}));for(var d=0;d1){l=a[0],d=l.connectedEdges().length,a.forEach((function(t){t.connectedEdges().length0&&n.set("dummy"+(n.size+1),u),f},relocateComponent:function(t,e,i){if(!i.fixedNodeConstraint){var r=Number.POSITIVE_INFINITY,o=Number.NEGATIVE_INFINITY,s=Number.POSITIVE_INFINITY,a=Number.NEGATIVE_INFINITY;if("draft"==i.quality){var h=!0,l=!1,d=void 0;try{for(var c,g=e.nodeIndexes[Symbol.iterator]();!(h=(c=g.next()).done);h=!0){var u=c.value,f=n(u,2),p=f[0],y=f[1],v=i.cy.getElementById(p);if(v){var m=v.boundingBox(),E=e.xCoords[y]-m.w/2,N=e.xCoords[y]+m.w/2,T=e.yCoords[y]-m.h/2,A=e.yCoords[y]+m.h/2;Eo&&(o=N),Ta&&(a=A)}}}catch(_){l=!0,d=_}finally{try{!h&&g.return&&g.return()}finally{if(l)throw d}}var w=t.x-(o+r)/2,L=t.y-(a+s)/2;e.xCoords=e.xCoords.map((function(t){return t+w})),e.yCoords=e.yCoords.map((function(t){return t+L}))}else{Object.keys(e).forEach((function(t){var i=e[t],n=i.getRect().x,h=i.getRect().x+i.getRect().width,l=i.getRect().y,d=i.getRect().y+i.getRect().height;no&&(o=h),la&&(a=d)}));var C=t.x-(o+r)/2,I=t.y-(a+s)/2;Object.keys(e).forEach((function(t){var i=e[t];i.setCenter(i.getCenterX()+C,i.getCenterY()+I)}))}}},calcBoundingBox:function(t,e,i,n){for(var r=Number.MAX_SAFE_INTEGER,o=Number.MIN_SAFE_INTEGER,s=Number.MAX_SAFE_INTEGER,a=Number.MIN_SAFE_INTEGER,h=void 0,l=void 0,d=void 0,c=void 0,g=t.descendants().not(":parent"),u=g.length,f=0;f(h=e[n.get(p.id())]-p.width()/2)&&(r=h),o<(l=e[n.get(p.id())]+p.width()/2)&&(o=l),s>(d=i[n.get(p.id())]-p.height()/2)&&(s=d),a<(c=i[n.get(p.id())]+p.height()/2)&&(a=c)}var y={};return y.topLeftX=r,y.topLeftY=s,y.width=o-r,y.height=a-s,y},calcParentsWithoutChildren:function(t,e){var i=t.collection();return e.nodes(":parent").forEach((function(t){var e=!1;t.children().forEach((function(t){"none"!=t.css("display")&&(e=!0)})),e||i.merge(t)})),i}};t.exports=o},816:(t,e,i)=>{var n=i(548),r=i(140).CoSELayout,o=i(140).CoSENode,s=i(140).layoutBase.PointD,a=i(140).layoutBase.DimensionD,h=i(140).layoutBase.LayoutConstants,l=i(140).layoutBase.FDLayoutConstants,d=i(140).CoSEConstants;t.exports={coseLayout:function(t,e){var i=t.cy,c=t.eles,g=c.nodes(),u=c.edges(),f=void 0,p=void 0,y=void 0,v={};t.randomize&&(f=e.nodeIndexes,p=e.xCoords,y=e.yCoords);var m=function(t){return"function"==typeof t},E=function(t,e){return m(t)?t(e):t},N=n.calcParentsWithoutChildren(i,c);null!=t.nestingFactor&&(d.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=l.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=t.nestingFactor),null!=t.gravity&&(d.DEFAULT_GRAVITY_STRENGTH=l.DEFAULT_GRAVITY_STRENGTH=t.gravity),null!=t.numIter&&(d.MAX_ITERATIONS=l.MAX_ITERATIONS=t.numIter),null!=t.gravityRange&&(d.DEFAULT_GRAVITY_RANGE_FACTOR=l.DEFAULT_GRAVITY_RANGE_FACTOR=t.gravityRange),null!=t.gravityCompound&&(d.DEFAULT_COMPOUND_GRAVITY_STRENGTH=l.DEFAULT_COMPOUND_GRAVITY_STRENGTH=t.gravityCompound),null!=t.gravityRangeCompound&&(d.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=l.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=t.gravityRangeCompound),null!=t.initialEnergyOnIncremental&&(d.DEFAULT_COOLING_FACTOR_INCREMENTAL=l.DEFAULT_COOLING_FACTOR_INCREMENTAL=t.initialEnergyOnIncremental),null!=t.tilingCompareBy&&(d.TILING_COMPARE_BY=t.tilingCompareBy),"proof"==t.quality?h.QUALITY=2:h.QUALITY=0,d.NODE_DIMENSIONS_INCLUDE_LABELS=l.NODE_DIMENSIONS_INCLUDE_LABELS=h.NODE_DIMENSIONS_INCLUDE_LABELS=t.nodeDimensionsIncludeLabels,d.DEFAULT_INCREMENTAL=l.DEFAULT_INCREMENTAL=h.DEFAULT_INCREMENTAL=!t.randomize,d.ANIMATE=l.ANIMATE=h.ANIMATE=t.animate,d.TILE=t.tile,d.TILING_PADDING_VERTICAL="function"==typeof t.tilingPaddingVertical?t.tilingPaddingVertical.call():t.tilingPaddingVertical,d.TILING_PADDING_HORIZONTAL="function"==typeof t.tilingPaddingHorizontal?t.tilingPaddingHorizontal.call():t.tilingPaddingHorizontal,d.DEFAULT_INCREMENTAL=l.DEFAULT_INCREMENTAL=h.DEFAULT_INCREMENTAL=!0,d.PURE_INCREMENTAL=!t.randomize,h.DEFAULT_UNIFORM_LEAF_NODE_SIZES=t.uniformNodeDimensions,"transformed"==t.step&&(d.TRANSFORM_ON_CONSTRAINT_HANDLING=!0,d.ENFORCE_CONSTRAINTS=!1,d.APPLY_LAYOUT=!1),"enforced"==t.step&&(d.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,d.ENFORCE_CONSTRAINTS=!0,d.APPLY_LAYOUT=!1),"cose"==t.step&&(d.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,d.ENFORCE_CONSTRAINTS=!1,d.APPLY_LAYOUT=!0),"all"==t.step&&(t.randomize?d.TRANSFORM_ON_CONSTRAINT_HANDLING=!0:d.TRANSFORM_ON_CONSTRAINT_HANDLING=!1,d.ENFORCE_CONSTRAINTS=!0,d.APPLY_LAYOUT=!0),t.fixedNodeConstraint||t.alignmentConstraint||t.relativePlacementConstraint?d.TREE_REDUCTION_ON_INCREMENTAL=!1:d.TREE_REDUCTION_ON_INCREMENTAL=!0;var T=new r,A=T.newGraphManager();return function t(e,i,r,h){for(var l=i.length,d=0;d0&&t(r.getGraphManager().add(r.newGraph(),u),g,r,h)}}(A.addRoot(),n.getTopMostNodes(g),T,t),function(e,i,n){for(var r=0,o=0,s=0;s0?d.DEFAULT_EDGE_LENGTH=l.DEFAULT_EDGE_LENGTH=r/o:m(t.idealEdgeLength)?d.DEFAULT_EDGE_LENGTH=l.DEFAULT_EDGE_LENGTH=50:d.DEFAULT_EDGE_LENGTH=l.DEFAULT_EDGE_LENGTH=t.idealEdgeLength,d.MIN_REPULSION_DIST=l.MIN_REPULSION_DIST=l.DEFAULT_EDGE_LENGTH/10,d.DEFAULT_RADIAL_SEPARATION=l.DEFAULT_EDGE_LENGTH)}(T,A,u),function(t,e){e.fixedNodeConstraint&&(t.constraints.fixedNodeConstraint=e.fixedNodeConstraint),e.alignmentConstraint&&(t.constraints.alignmentConstraint=e.alignmentConstraint),e.relativePlacementConstraint&&(t.constraints.relativePlacementConstraint=e.relativePlacementConstraint)}(T,t),T.runLayout(),v}}},212:(t,e,i)=>{var n=function(){function t(t,e){for(var i=0;i0)if(c){var g=o.getTopMostNodes(t.eles.nodes());if((h=o.connectComponents(e,t.eles,g)).forEach((function(t){var e=t.boundingBox();l.push({x:e.x1+e.w/2,y:e.y1+e.h/2})})),t.randomize&&h.forEach((function(e){t.eles=e,n.push(s(t))})),"default"==t.quality||"proof"==t.quality){var u=e.collection();if(t.tile){var f=new Map,p=0,y={nodeIndexes:f,xCoords:[],yCoords:[]},v=[];if(h.forEach((function(t,e){0==t.edges().length&&(t.nodes().forEach((function(e,i){u.merge(t.nodes()[i]),e.isParent()||(y.nodeIndexes.set(t.nodes()[i].id(),p++),y.xCoords.push(t.nodes()[0].position().x),y.yCoords.push(t.nodes()[0].position().y))})),v.push(e))})),u.length>1){var m=u.boundingBox();l.push({x:m.x1+m.w/2,y:m.y1+m.h/2}),h.push(u),n.push(y);for(var E=v.length-1;E>=0;E--)h.splice(v[E],1),n.splice(v[E],1),l.splice(v[E],1)}}h.forEach((function(e,i){t.eles=e,r.push(a(t,n[i])),o.relocateComponent(l[i],r[i],t)}))}else h.forEach((function(e,i){o.relocateComponent(l[i],n[i],t)}));var N=new Set;if(h.length>1){var T=[],A=i.filter((function(t){return"none"==t.css("display")}));h.forEach((function(e,i){var s=void 0;if("draft"==t.quality&&(s=n[i].nodeIndexes),e.nodes().not(A).length>0){var a={edges:[],nodes:[]},h=void 0;e.nodes().not(A).forEach((function(e){if("draft"==t.quality)if(e.isParent()){var l=o.calcBoundingBox(e,n[i].xCoords,n[i].yCoords,s);a.nodes.push({x:l.topLeftX,y:l.topLeftY,width:l.width,height:l.height})}else h=s.get(e.id()),a.nodes.push({x:n[i].xCoords[h]-e.boundingbox().w/2,y:n[i].yCoords[h]-e.boundingbox().h/2,width:e.boundingbox().w,height:e.boundingbox().h});else r[i][e.id()]&&a.nodes.push({x:r[i][e.id()].getLeft(),y:r[i][e.id()].getTop(),width:r[i][e.id()].getWidth(),height:r[i][e.id()].getHeight()})})),e.edges().forEach((function(e){var h=e.source(),l=e.target();if("none"!=h.css("display")&&"none"!=l.css("display"))if("draft"==t.quality){var d=s.get(h.id()),c=s.get(l.id()),g=[],u=[];if(h.isParent()){var f=o.calcBoundingBox(h,n[i].xCoords,n[i].yCoords,s);g.push(f.topLeftX+f.width/2),g.push(f.topLeftY+f.height/2)}else g.push(n[i].xCoords[d]),g.push(n[i].yCoords[d]);if(l.isParent()){var p=o.calcBoundingBox(l,n[i].xCoords,n[i].yCoords,s);u.push(p.topLeftX+p.width/2),u.push(p.topLeftY+p.height/2)}else u.push(n[i].xCoords[c]),u.push(n[i].yCoords[c]);a.edges.push({startX:g[0],startY:g[1],endX:u[0],endY:u[1]})}else r[i][h.id()]&&r[i][l.id()]&&a.edges.push({startX:r[i][h.id()].getCenterX(),startY:r[i][h.id()].getCenterY(),endX:r[i][l.id()].getCenterX(),endY:r[i][l.id()].getCenterY()})})),a.nodes.length>0&&(T.push(a),N.add(i))}}));var w=d.packComponents(T,t.randomize).shifts;if("draft"==t.quality)n.forEach((function(t,e){var i=t.xCoords.map((function(t){return t+w[e].dx})),n=t.yCoords.map((function(t){return t+w[e].dy}));t.xCoords=i,t.yCoords=n}));else{var L=0;N.forEach((function(t){Object.keys(r[t]).forEach((function(e){var i=r[t][e];i.setCenter(i.getCenterX()+w[L].dx,i.getCenterY()+w[L].dy)})),L++}))}}}else{var C=t.eles.boundingBox();if(l.push({x:C.x1+C.w/2,y:C.y1+C.h/2}),t.randomize){var I=s(t);n.push(I)}"default"==t.quality||"proof"==t.quality?(r.push(a(t,n[0])),o.relocateComponent(l[0],r[0],t)):o.relocateComponent(l[0],n[0],t)}var _=function(e,i){if("default"==t.quality||"proof"==t.quality){"number"==typeof e&&(e=i);var o=void 0,s=void 0,a=e.data("id");return r.forEach((function(t){a in t&&(o={x:t[a].getRect().getCenterX(),y:t[a].getRect().getCenterY()},s=t[a])})),t.nodeDimensionsIncludeLabels&&(s.labelWidth&&("left"==s.labelPosHorizontal?o.x+=s.labelWidth/2:"right"==s.labelPosHorizontal&&(o.x-=s.labelWidth/2)),s.labelHeight&&("top"==s.labelPosVertical?o.y+=s.labelHeight/2:"bottom"==s.labelPosVertical&&(o.y-=s.labelHeight/2))),null==o&&(o={x:e.position("x"),y:e.position("y")}),{x:o.x,y:o.y}}var h=void 0;return n.forEach((function(t){var i=t.nodeIndexes.get(e.id());null!=i&&(h={x:t.xCoords[i],y:t.yCoords[i]})})),null==h&&(h={x:e.position("x"),y:e.position("y")}),{x:h.x,y:h.y}};if("default"==t.quality||"proof"==t.quality||t.randomize){var M=o.calcParentsWithoutChildren(e,i),x=i.filter((function(t){return"none"==t.css("display")}));t.eles=i.not(x),i.nodes().not(":parent").not(x).layoutPositions(this,t,_),M.length>0&&M.forEach((function(t){t.position(_(t))}))}else console.log("If randomize option is set to false, then quality option must be 'default' or 'proof'.")}}]),t}();t.exports=l},657:(t,e,i)=>{var n=i(548),r=i(140).layoutBase.Matrix,o=i(140).layoutBase.SVD;t.exports={spectralLayout:function(t){var e=t.cy,i=t.eles,s=i.nodes(),a=i.nodes(":parent"),h=new Map,l=new Map,d=new Map,c=[],g=[],u=[],f=[],p=[],y=[],v=[],m=[],E=void 0,N=1e8,T=1e-9,A=t.piTol,w=t.samplingType,L=t.nodeSeparation,C=void 0,I=function(t,e,i){for(var n=[],r=0,o=0,s=0,a=void 0,h=[],d=0,g=1,u=0;u=r;){s=n[r++];for(var f=c[s],v=0;vd&&(d=p[T],g=T)}return g};n.connectComponents(e,i,n.getTopMostNodes(s),h),a.forEach((function(t){n.connectComponents(e,i,n.getTopMostNodes(t.descendants().intersection(i)),h)}));for(var _=0,M=0;M0&&(n.isParent()?c[e].push(d.get(n.id())):c[e].push(n.id()))}))}));var S=function(t){var i=l.get(t),n=void 0;h.get(t).forEach((function(r){n=e.getElementById(r).isParent()?d.get(r):r,c[i].push(n),c[l.get(n)].push(t)}))},P=!0,U=!1,Y=void 0;try{for(var k,H=h.keys()[Symbol.iterator]();!(P=(k=H.next()).done);P=!0)S(k.value)}catch(K){U=!0,Y=K}finally{try{!P&&H.return&&H.return()}finally{if(U)throw Y}}var X=void 0;if((E=l.size)>2){C=E=1)break;l=h}for(var f=0;f=1)break;l=h}for(var v=0;v{var n=i(212),r=function(t){t&&t("layout","fcose",n)};"undefined"!=typeof cytoscape&&r(cytoscape),t.exports=r},140:e=>{e.exports=t}},i={},n=function t(n){var r=i[n];if(void 0!==r)return r.exports;var o=i[n]={exports:{}};return e[n](o,o.exports,t),o.exports}(579);return n})()},t.exports=n(i(41709))},41709:function(t,e,i){var n;n=function(t){return(()=>{"use strict";var e={45:(t,e,i)=>{var n={};n.layoutBase=i(551),n.CoSEConstants=i(806),n.CoSEEdge=i(767),n.CoSEGraph=i(880),n.CoSEGraphManager=i(578),n.CoSELayout=i(765),n.CoSENode=i(991),n.ConstraintHandler=i(902),t.exports=n},806:(t,e,i)=>{var n=i(551).FDLayoutConstants;function r(){}for(var o in n)r[o]=n[o];r.DEFAULT_USE_MULTI_LEVEL_SCALING=!1,r.DEFAULT_RADIAL_SEPARATION=n.DEFAULT_EDGE_LENGTH,r.DEFAULT_COMPONENT_SEPERATION=60,r.TILE=!0,r.TILING_PADDING_VERTICAL=10,r.TILING_PADDING_HORIZONTAL=10,r.TRANSFORM_ON_CONSTRAINT_HANDLING=!0,r.ENFORCE_CONSTRAINTS=!0,r.APPLY_LAYOUT=!0,r.RELAX_MOVEMENT_ON_CONSTRAINTS=!0,r.TREE_REDUCTION_ON_INCREMENTAL=!0,r.PURE_INCREMENTAL=r.DEFAULT_INCREMENTAL,t.exports=r},767:(t,e,i)=>{var n=i(551).FDLayoutEdge;function r(t,e,i){n.call(this,t,e,i)}for(var o in r.prototype=Object.create(n.prototype),n)r[o]=n[o];t.exports=r},880:(t,e,i)=>{var n=i(551).LGraph;function r(t,e,i){n.call(this,t,e,i)}for(var o in r.prototype=Object.create(n.prototype),n)r[o]=n[o];t.exports=r},578:(t,e,i)=>{var n=i(551).LGraphManager;function r(t){n.call(this,t)}for(var o in r.prototype=Object.create(n.prototype),n)r[o]=n[o];t.exports=r},765:(t,e,i)=>{var n=i(551).FDLayout,r=i(578),o=i(880),s=i(991),a=i(767),h=i(806),l=i(902),d=i(551).FDLayoutConstants,c=i(551).LayoutConstants,g=i(551).Point,u=i(551).PointD,f=i(551).DimensionD,p=i(551).Layout,y=i(551).Integer,v=i(551).IGeometry,m=i(551).LGraph,E=i(551).Transform,N=i(551).LinkedList;function T(){n.call(this),this.toBeTiled={},this.constraints={}}for(var A in T.prototype=Object.create(n.prototype),n)T[A]=n[A];T.prototype.newGraphManager=function(){var t=new r(this);return this.graphManager=t,t},T.prototype.newGraph=function(t){return new o(null,this.graphManager,t)},T.prototype.newNode=function(t){return new s(this.graphManager,t)},T.prototype.newEdge=function(t){return new a(null,null,t)},T.prototype.initParameters=function(){n.prototype.initParameters.call(this,arguments),this.isSubLayout||(h.DEFAULT_EDGE_LENGTH<10?this.idealEdgeLength=10:this.idealEdgeLength=h.DEFAULT_EDGE_LENGTH,this.useSmartIdealEdgeLengthCalculation=h.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION,this.gravityConstant=d.DEFAULT_GRAVITY_STRENGTH,this.compoundGravityConstant=d.DEFAULT_COMPOUND_GRAVITY_STRENGTH,this.gravityRangeFactor=d.DEFAULT_GRAVITY_RANGE_FACTOR,this.compoundGravityRangeFactor=d.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR,this.prunedNodesAll=[],this.growTreeIterations=0,this.afterGrowthIterations=0,this.isTreeGrowing=!1,this.isGrowthFinished=!1)},T.prototype.initSpringEmbedder=function(){n.prototype.initSpringEmbedder.call(this),this.coolingCycle=0,this.maxCoolingCycle=this.maxIterations/d.CONVERGENCE_CHECK_PERIOD,this.finalTemperature=.04,this.coolingAdjuster=1},T.prototype.layout=function(){return c.DEFAULT_CREATE_BENDS_AS_NEEDED&&(this.createBendpoints(),this.graphManager.resetAllEdges()),this.level=0,this.classicLayout()},T.prototype.classicLayout=function(){if(this.nodesWithGravity=this.calculateNodesToApplyGravitationTo(),this.graphManager.setAllNodesToApplyGravitation(this.nodesWithGravity),this.calcNoOfChildrenForAllNodes(),this.graphManager.calcLowestCommonAncestors(),this.graphManager.calcInclusionTreeDepths(),this.graphManager.getRoot().calcEstimatedSize(),this.calcIdealEdgeLengths(),this.incremental)h.TREE_REDUCTION_ON_INCREMENTAL&&(this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation(),e=new Set(this.getAllNodes()),i=this.nodesWithGravity.filter((function(t){return e.has(t)})),this.graphManager.setAllNodesToApplyGravitation(i));else{var t=this.getFlatForest();if(t.length>0)this.positionNodesRadially(t);else{this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var e=new Set(this.getAllNodes()),i=this.nodesWithGravity.filter((function(t){return e.has(t)}));this.graphManager.setAllNodesToApplyGravitation(i),this.positionNodesRandomly()}}return Object.keys(this.constraints).length>0&&(l.handleConstraints(this),this.initConstraintVariables()),this.initSpringEmbedder(),h.APPLY_LAYOUT&&this.runSpringEmbedder(),!0},T.prototype.tick=function(){if(this.totalIterations++,this.totalIterations===this.maxIterations&&!this.isTreeGrowing&&!this.isGrowthFinished){if(!(this.prunedNodesAll.length>0))return!0;this.isTreeGrowing=!0}if(this.totalIterations%d.CONVERGENCE_CHECK_PERIOD==0&&!this.isTreeGrowing&&!this.isGrowthFinished){if(this.isConverged()){if(!(this.prunedNodesAll.length>0))return!0;this.isTreeGrowing=!0}this.coolingCycle++,0==this.layoutQuality?this.coolingAdjuster=this.coolingCycle:1==this.layoutQuality&&(this.coolingAdjuster=this.coolingCycle/3),this.coolingFactor=Math.max(this.initialCoolingFactor-Math.pow(this.coolingCycle,Math.log(100*(this.initialCoolingFactor-this.finalTemperature))/Math.log(this.maxCoolingCycle))/100*this.coolingAdjuster,this.finalTemperature),this.animationPeriod=Math.ceil(this.initialAnimationPeriod*Math.sqrt(this.coolingFactor))}if(this.isTreeGrowing){if(this.growTreeIterations%10==0)if(this.prunedNodesAll.length>0){this.graphManager.updateBounds(),this.updateGrid(),this.growTree(this.prunedNodesAll),this.graphManager.resetAllNodesToApplyGravitation();var t=new Set(this.getAllNodes()),e=this.nodesWithGravity.filter((function(e){return t.has(e)}));this.graphManager.setAllNodesToApplyGravitation(e),this.graphManager.updateBounds(),this.updateGrid(),h.PURE_INCREMENTAL?this.coolingFactor=d.DEFAULT_COOLING_FACTOR_INCREMENTAL/2:this.coolingFactor=d.DEFAULT_COOLING_FACTOR_INCREMENTAL}else this.isTreeGrowing=!1,this.isGrowthFinished=!0;this.growTreeIterations++}if(this.isGrowthFinished){if(this.isConverged())return!0;this.afterGrowthIterations%10==0&&(this.graphManager.updateBounds(),this.updateGrid()),h.PURE_INCREMENTAL?this.coolingFactor=d.DEFAULT_COOLING_FACTOR_INCREMENTAL/2*((100-this.afterGrowthIterations)/100):this.coolingFactor=d.DEFAULT_COOLING_FACTOR_INCREMENTAL*((100-this.afterGrowthIterations)/100),this.afterGrowthIterations++}var i=!this.isTreeGrowing&&!this.isGrowthFinished,n=this.growTreeIterations%10==1&&this.isTreeGrowing||this.afterGrowthIterations%10==1&&this.isGrowthFinished;return this.totalDisplacement=0,this.graphManager.updateBounds(),this.calcSpringForces(),this.calcRepulsionForces(i,n),this.calcGravitationalForces(),this.moveNodes(),this.animate(),!1},T.prototype.getPositionsData=function(){for(var t=this.graphManager.getAllNodes(),e={},i=0;i0&&this.updateDisplacements(),e=0;e0&&(n.fixedNodeWeight=o)}if(this.constraints.relativePlacementConstraint){var s=new Map,a=new Map;if(this.dummyToNodeForVerticalAlignment=new Map,this.dummyToNodeForHorizontalAlignment=new Map,this.fixedNodesOnHorizontal=new Set,this.fixedNodesOnVertical=new Set,this.fixedNodeSet.forEach((function(e){t.fixedNodesOnHorizontal.add(e),t.fixedNodesOnVertical.add(e)})),this.constraints.alignmentConstraint){if(this.constraints.alignmentConstraint.vertical){var l=this.constraints.alignmentConstraint.vertical;for(i=0;i=2*t.length/3;n--)e=Math.floor(Math.random()*(n+1)),i=t[n],t[n]=t[e],t[e]=i;return t},this.nodesInRelativeHorizontal=[],this.nodesInRelativeVertical=[],this.nodeToRelativeConstraintMapHorizontal=new Map,this.nodeToRelativeConstraintMapVertical=new Map,this.nodeToTempPositionMapHorizontal=new Map,this.nodeToTempPositionMapVertical=new Map,this.constraints.relativePlacementConstraint.forEach((function(e){if(e.left){var i=s.has(e.left)?s.get(e.left):e.left,n=s.has(e.right)?s.get(e.right):e.right;t.nodesInRelativeHorizontal.includes(i)||(t.nodesInRelativeHorizontal.push(i),t.nodeToRelativeConstraintMapHorizontal.set(i,[]),t.dummyToNodeForVerticalAlignment.has(i)?t.nodeToTempPositionMapHorizontal.set(i,t.idToNodeMap.get(t.dummyToNodeForVerticalAlignment.get(i)[0]).getCenterX()):t.nodeToTempPositionMapHorizontal.set(i,t.idToNodeMap.get(i).getCenterX())),t.nodesInRelativeHorizontal.includes(n)||(t.nodesInRelativeHorizontal.push(n),t.nodeToRelativeConstraintMapHorizontal.set(n,[]),t.dummyToNodeForVerticalAlignment.has(n)?t.nodeToTempPositionMapHorizontal.set(n,t.idToNodeMap.get(t.dummyToNodeForVerticalAlignment.get(n)[0]).getCenterX()):t.nodeToTempPositionMapHorizontal.set(n,t.idToNodeMap.get(n).getCenterX())),t.nodeToRelativeConstraintMapHorizontal.get(i).push({right:n,gap:e.gap}),t.nodeToRelativeConstraintMapHorizontal.get(n).push({left:i,gap:e.gap})}else{var r=a.has(e.top)?a.get(e.top):e.top,o=a.has(e.bottom)?a.get(e.bottom):e.bottom;t.nodesInRelativeVertical.includes(r)||(t.nodesInRelativeVertical.push(r),t.nodeToRelativeConstraintMapVertical.set(r,[]),t.dummyToNodeForHorizontalAlignment.has(r)?t.nodeToTempPositionMapVertical.set(r,t.idToNodeMap.get(t.dummyToNodeForHorizontalAlignment.get(r)[0]).getCenterY()):t.nodeToTempPositionMapVertical.set(r,t.idToNodeMap.get(r).getCenterY())),t.nodesInRelativeVertical.includes(o)||(t.nodesInRelativeVertical.push(o),t.nodeToRelativeConstraintMapVertical.set(o,[]),t.dummyToNodeForHorizontalAlignment.has(o)?t.nodeToTempPositionMapVertical.set(o,t.idToNodeMap.get(t.dummyToNodeForHorizontalAlignment.get(o)[0]).getCenterY()):t.nodeToTempPositionMapVertical.set(o,t.idToNodeMap.get(o).getCenterY())),t.nodeToRelativeConstraintMapVertical.get(r).push({bottom:o,gap:e.gap}),t.nodeToRelativeConstraintMapVertical.get(o).push({top:r,gap:e.gap})}}));else{var c=new Map,g=new Map;this.constraints.relativePlacementConstraint.forEach((function(t){if(t.left){var e=s.has(t.left)?s.get(t.left):t.left,i=s.has(t.right)?s.get(t.right):t.right;c.has(e)?c.get(e).push(i):c.set(e,[i]),c.has(i)?c.get(i).push(e):c.set(i,[e])}else{var n=a.has(t.top)?a.get(t.top):t.top,r=a.has(t.bottom)?a.get(t.bottom):t.bottom;g.has(n)?g.get(n).push(r):g.set(n,[r]),g.has(r)?g.get(r).push(n):g.set(r,[n])}}));var u=function(t,e){var i=[],n=[],r=new N,o=new Set,s=0;return t.forEach((function(a,h){if(!o.has(h)){i[s]=[],n[s]=!1;var l=h;for(r.push(l),o.add(l),i[s].push(l);0!=r.length;)l=r.shift(),e.has(l)&&(n[s]=!0),t.get(l).forEach((function(t){o.has(t)||(r.push(t),o.add(t),i[s].push(t))}));s++}})),{components:i,isFixed:n}},f=u(c,t.fixedNodesOnHorizontal);this.componentsOnHorizontal=f.components,this.fixedComponentsOnHorizontal=f.isFixed;var p=u(g,t.fixedNodesOnVertical);this.componentsOnVertical=p.components,this.fixedComponentsOnVertical=p.isFixed}}},T.prototype.updateDisplacements=function(){var t=this;if(this.constraints.fixedNodeConstraint&&this.constraints.fixedNodeConstraint.forEach((function(e){var i=t.idToNodeMap.get(e.nodeId);i.displacementX=0,i.displacementY=0})),this.constraints.alignmentConstraint){if(this.constraints.alignmentConstraint.vertical)for(var e=this.constraints.alignmentConstraint.vertical,i=0;i1)for(a=0;an&&(n=Math.floor(s.y)),o=Math.floor(s.x+h.DEFAULT_COMPONENT_SEPERATION)}this.transform(new u(c.WORLD_CENTER_X-s.x/2,c.WORLD_CENTER_Y-s.y/2))},T.radialLayout=function(t,e,i){var n=Math.max(this.maxDiagonalInTree(t),h.DEFAULT_RADIAL_SEPARATION);T.branchRadialLayout(e,null,0,359,0,n);var r=m.calculateBounds(t),o=new E;o.setDeviceOrgX(r.getMinX()),o.setDeviceOrgY(r.getMinY()),o.setWorldOrgX(i.x),o.setWorldOrgY(i.y);for(var s=0;s1;){var y=p[0];p.splice(0,1);var m=d.indexOf(y);m>=0&&d.splice(m,1),f--,c--}g=null!=e?(d.indexOf(p[0])+1)%f:0;for(var E=Math.abs(n-i)/c,N=g;u!=c;N=++N%f){var A=d[N].getOtherEnd(t);if(A!=e){var w=(i+u*E)%360,L=(w+E)%360;T.branchRadialLayout(A,t,w,L,r+o,o),u++}}},T.maxDiagonalInTree=function(t){for(var e=y.MIN_VALUE,i=0;ie&&(e=n)}return e},T.prototype.calcRepulsionRange=function(){return 2*(this.level+1)*this.idealEdgeLength},T.prototype.groupZeroDegreeMembers=function(){var t=this,e={};this.memberGroups={},this.idToDummyNode={};for(var i=[],n=this.graphManager.getAllNodes(),r=0;r1){var n="DummyCompound_"+i;t.memberGroups[n]=e[i];var r=e[i][0].getParent(),o=new s(t.graphManager);o.id=n,o.paddingLeft=r.paddingLeft||0,o.paddingRight=r.paddingRight||0,o.paddingBottom=r.paddingBottom||0,o.paddingTop=r.paddingTop||0,t.idToDummyNode[n]=o;var a=t.getGraphManager().add(t.newGraph(),o),h=r.getChild();h.add(o);for(var l=0;lr?(n.rect.x-=(n.labelWidth-r)/2,n.setWidth(n.labelWidth),n.labelMarginLeft=(n.labelWidth-r)/2):"right"==n.labelPosHorizontal&&n.setWidth(r+n.labelWidth)),n.labelHeight&&("top"==n.labelPosVertical?(n.rect.y-=n.labelHeight,n.setHeight(o+n.labelHeight),n.labelMarginTop=n.labelHeight):"center"==n.labelPosVertical&&n.labelHeight>o?(n.rect.y-=(n.labelHeight-o)/2,n.setHeight(n.labelHeight),n.labelMarginTop=(n.labelHeight-o)/2):"bottom"==n.labelPosVertical&&n.setHeight(o+n.labelHeight))}}))},T.prototype.repopulateCompounds=function(){for(var t=this.compoundOrder.length-1;t>=0;t--){var e=this.compoundOrder[t],i=e.id,n=e.paddingLeft,r=e.paddingTop,o=e.labelMarginLeft,s=e.labelMarginTop;this.adjustLocations(this.tiledMemberPack[i],e.rect.x,e.rect.y,n,r,o,s)}},T.prototype.repopulateZeroDegreeMembers=function(){var t=this,e=this.tiledZeroDegreePack;Object.keys(e).forEach((function(i){var n=t.idToDummyNode[i],r=n.paddingLeft,o=n.paddingTop,s=n.labelMarginLeft,a=n.labelMarginTop;t.adjustLocations(e[i],n.rect.x,n.rect.y,r,o,s,a)}))},T.prototype.getToBeTiled=function(t){var e=t.id;if(null!=this.toBeTiled[e])return this.toBeTiled[e];var i=t.getChild();if(null==i)return this.toBeTiled[e]=!1,!1;for(var n=i.getNodes(),r=0;r0)return this.toBeTiled[e]=!1,!1;if(null!=o.getChild()){if(!this.getToBeTiled(o))return this.toBeTiled[e]=!1,!1}else this.toBeTiled[o.id]=!1}return this.toBeTiled[e]=!0,!0},T.prototype.getNodeDegree=function(t){t.id;for(var e=t.getEdges(),i=0,n=0;nd&&(d=g.rect.height)}i+=d+t.verticalPadding}},T.prototype.tileCompoundMembers=function(t,e){var i=this;this.tiledMemberPack=[],Object.keys(t).forEach((function(n){var r=e[n];if(i.tiledMemberPack[n]=i.tileNodes(t[n],r.paddingLeft+r.paddingRight),r.rect.width=i.tiledMemberPack[n].width,r.rect.height=i.tiledMemberPack[n].height,r.setCenter(i.tiledMemberPack[n].centerX,i.tiledMemberPack[n].centerY),r.labelMarginLeft=0,r.labelMarginTop=0,h.NODE_DIMENSIONS_INCLUDE_LABELS){var o=r.rect.width,s=r.rect.height;r.labelWidth&&("left"==r.labelPosHorizontal?(r.rect.x-=r.labelWidth,r.setWidth(o+r.labelWidth),r.labelMarginLeft=r.labelWidth):"center"==r.labelPosHorizontal&&r.labelWidth>o?(r.rect.x-=(r.labelWidth-o)/2,r.setWidth(r.labelWidth),r.labelMarginLeft=(r.labelWidth-o)/2):"right"==r.labelPosHorizontal&&r.setWidth(o+r.labelWidth)),r.labelHeight&&("top"==r.labelPosVertical?(r.rect.y-=r.labelHeight,r.setHeight(s+r.labelHeight),r.labelMarginTop=r.labelHeight):"center"==r.labelPosVertical&&r.labelHeight>s?(r.rect.y-=(r.labelHeight-s)/2,r.setHeight(r.labelHeight),r.labelMarginTop=(r.labelHeight-s)/2):"bottom"==r.labelPosVertical&&r.setHeight(s+r.labelHeight))}}))},T.prototype.tileNodes=function(t,e){var i=this.tileNodesByFavoringDim(t,e,!0),n=this.tileNodesByFavoringDim(t,e,!1),r=this.getOrgRatio(i);return this.getOrgRatio(n)a&&(a=t.getWidth())}));var l,d=o/r,c=s/r,g=Math.pow(i-n,2)+4*(d+n)*(c+i)*r,u=(n-i+Math.sqrt(g))/(2*(d+n));e?(l=Math.ceil(u))==u&&l++:l=Math.floor(u);var f=l*(d+n)-n;return a>f&&(f=a),f+=2*n},T.prototype.tileNodesByFavoringDim=function(t,e,i){var n=h.TILING_PADDING_VERTICAL,r=h.TILING_PADDING_HORIZONTAL,o=h.TILING_COMPARE_BY,s={rows:[],rowWidth:[],rowHeight:[],width:0,height:e,verticalPadding:n,horizontalPadding:r,centerX:0,centerY:0};o&&(s.idealRowWidth=this.calcIdealRowWidth(t,i));var a=function(t){return t.rect.width*t.rect.height},l=function(t,e){return a(e)-a(t)};t.sort((function(t,e){var i=l;return s.idealRowWidth?(i=o)(t.id,e.id):i(t,e)}));for(var d=0,c=0,g=0;g0&&(o+=t.horizontalPadding),t.rowWidth[i]=o,t.width0&&(s+=t.verticalPadding);var a=0;s>t.rowHeight[i]&&(a=t.rowHeight[i],t.rowHeight[i]=s,a=t.rowHeight[i]-a),t.height+=a,t.rows[i].push(e)},T.prototype.getShortestRowIndex=function(t){for(var e=-1,i=Number.MAX_VALUE,n=0;ni&&(e=n,i=t.rowWidth[n]);return e},T.prototype.canAddHorizontal=function(t,e,i){if(t.idealRowWidth){var n=t.rows.length-1;return t.rowWidth[n]+e+t.horizontalPadding<=t.idealRowWidth}var r=this.getShortestRowIndex(t);if(r<0)return!0;var o=t.rowWidth[r];if(o+t.horizontalPadding+e<=t.width)return!0;var s,a,h=0;return t.rowHeight[r]0&&(h=i+t.verticalPadding-t.rowHeight[r]),s=t.width-o>=e+t.horizontalPadding?(t.height+h)/(o+e+t.horizontalPadding):(t.height+h)/t.width,h=i+t.verticalPadding,(a=t.widtho&&e!=i){n.splice(-1,1),t.rows[i].push(r),t.rowWidth[e]=t.rowWidth[e]-o,t.rowWidth[i]=t.rowWidth[i]+o,t.width=t.rowWidth[instance.getLongestRowIndex(t)];for(var s=Number.MIN_VALUE,a=0;as&&(s=n[a].height);e>0&&(s+=t.verticalPadding);var h=t.rowHeight[e]+t.rowHeight[i];t.rowHeight[e]=s,t.rowHeight[i]0)for(var c=r;c<=o;c++)l[0]+=this.grid[c][s-1].length+this.grid[c][s].length-1;if(o0)for(c=s;c<=a;c++)l[3]+=this.grid[r-1][c].length+this.grid[r][c].length-1;for(var g,u,f=y.MAX_VALUE,p=0;p{var n=i(551).FDLayoutNode,r=i(551).IMath;function o(t,e,i,r){n.call(this,t,e,i,r)}for(var s in o.prototype=Object.create(n.prototype),n)o[s]=n[s];o.prototype.calculateDisplacement=function(){var t=this.graphManager.getLayout();null!=this.getChild()&&this.fixedNodeWeight?(this.displacementX+=t.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.fixedNodeWeight,this.displacementY+=t.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.fixedNodeWeight):(this.displacementX+=t.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.noOfChildren,this.displacementY+=t.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.noOfChildren),Math.abs(this.displacementX)>t.coolingFactor*t.maxNodeDisplacement&&(this.displacementX=t.coolingFactor*t.maxNodeDisplacement*r.sign(this.displacementX)),Math.abs(this.displacementY)>t.coolingFactor*t.maxNodeDisplacement&&(this.displacementY=t.coolingFactor*t.maxNodeDisplacement*r.sign(this.displacementY)),this.child&&this.child.getNodes().length>0&&this.propogateDisplacementToChildren(this.displacementX,this.displacementY)},o.prototype.propogateDisplacementToChildren=function(t,e){for(var i,n=this.getChild().getNodes(),r=0;r{function n(t){if(Array.isArray(t)){for(var e=0,i=Array(t.length);e0){var o=0;n.forEach((function(t){"horizontal"==e?(c.set(t,h.has(t)?l[h.get(t)]:r.get(t)),o+=c.get(t)):(c.set(t,h.has(t)?d[h.get(t)]:r.get(t)),o+=c.get(t))})),o/=n.length,t.forEach((function(t){i.has(t)||c.set(t,o)}))}else{var s=0;t.forEach((function(t){s+="horizontal"==e?h.has(t)?l[h.get(t)]:r.get(t):h.has(t)?d[h.get(t)]:r.get(t)})),s/=t.length,t.forEach((function(t){c.set(t,s)}))}}));for(var f=function(){var n=u.shift();t.get(n).forEach((function(t){if(c.get(t.id)s&&(s=m),Ea&&(a=E)}}catch(_){u=!0,f=_}finally{try{!g&&y.return&&y.return()}finally{if(u)throw f}}var N=(n+s)/2-(o+a)/2,T=!0,A=!1,w=void 0;try{for(var L,C=t[Symbol.iterator]();!(T=(L=C.next()).done);T=!0){var I=L.value;c.set(I,c.get(I)+N)}}catch(_){A=!0,w=_}finally{try{!T&&C.return&&C.return()}finally{if(A)throw w}}}))}return c},v=function(t){var e=0,i=0,n=0,r=0;if(t.forEach((function(t){t.left?l[h.get(t.left)]-l[h.get(t.right)]>=0?e++:i++:d[h.get(t.top)]-d[h.get(t.bottom)]>=0?n++:r++})),e>i&&n>r)for(var o=0;oi)for(var s=0;sr)for(var a=0;a1)e.fixedNodeConstraint.forEach((function(t,e){T[e]=[t.position.x,t.position.y],A[e]=[l[h.get(t.nodeId)],d[h.get(t.nodeId)]]})),w=!0;else if(e.alignmentConstraint)!function(){var t=0;if(e.alignmentConstraint.vertical){for(var i=e.alignmentConstraint.vertical,r=function(e){var r=new Set;i[e].forEach((function(t){r.add(t)}));var o=new Set([].concat(n(r)).filter((function(t){return C.has(t)}))),s=void 0;s=o.size>0?l[h.get(o.values().next().value)]:p(r).x,i[e].forEach((function(e){T[t]=[s,d[h.get(e)]],A[t]=[l[h.get(e)],d[h.get(e)]],t++}))},o=0;o0?l[h.get(r.values().next().value)]:p(i).y,s[e].forEach((function(e){T[t]=[l[h.get(e)],o],A[t]=[l[h.get(e)],d[h.get(e)]],t++}))},c=0;cx&&(x=M[D].length,O=D);if(x<_.size/2)v(e.relativePlacementConstraint),w=!1,L=!1;else{var R=new Map,b=new Map,F=[];M[O].forEach((function(t){I.get(t).forEach((function(e){"horizontal"==e.direction?(R.has(t)?R.get(t).push(e):R.set(t,[e]),R.has(e.id)||R.set(e.id,[]),F.push({left:t,right:e.id})):(b.has(t)?b.get(t).push(e):b.set(t,[e]),b.has(e.id)||b.set(e.id,[]),F.push({top:t,bottom:e.id}))}))})),v(F),L=!1;var G=y(R,"horizontal"),S=y(b,"vertical");M[O].forEach((function(t,e){A[e]=[l[h.get(t)],d[h.get(t)]],T[e]=[],G.has(t)?T[e][0]=G.get(t):T[e][0]=l[h.get(t)],S.has(t)?T[e][1]=S.get(t):T[e][1]=d[h.get(t)]})),w=!0}}if(w){for(var P,U=s.transpose(T),Y=s.transpose(A),k=0;k0){var j={x:0,y:0};e.fixedNodeConstraint.forEach((function(t,e){var i,n,r={x:l[h.get(t.nodeId)],y:d[h.get(t.nodeId)]},o=t.position,s=(n=r,{x:(i=o).x-n.x,y:i.y-n.y});j.x+=s.x,j.y+=s.y})),j.x/=e.fixedNodeConstraint.length,j.y/=e.fixedNodeConstraint.length,l.forEach((function(t,e){l[e]+=j.x})),d.forEach((function(t,e){d[e]+=j.y})),e.fixedNodeConstraint.forEach((function(t){l[h.get(t.nodeId)]=t.position.x,d[h.get(t.nodeId)]=t.position.y}))}if(e.alignmentConstraint){if(e.alignmentConstraint.vertical)for(var $=e.alignmentConstraint.vertical,q=function(t){var e=new Set;$[t].forEach((function(t){e.add(t)}));var i=new Set([].concat(n(e)).filter((function(t){return C.has(t)}))),r=void 0;r=i.size>0?l[h.get(i.values().next().value)]:p(e).x,e.forEach((function(t){C.has(t)||(l[h.get(t)]=r)}))},K=0;K<$.length;K++)q(K);if(e.alignmentConstraint.horizontal)for(var Z=e.alignmentConstraint.horizontal,Q=function(t){var e=new Set;Z[t].forEach((function(t){e.add(t)}));var i=new Set([].concat(n(e)).filter((function(t){return C.has(t)}))),r=void 0;r=i.size>0?d[h.get(i.values().next().value)]:p(e).y,e.forEach((function(t){C.has(t)||(d[h.get(t)]=r)}))},J=0;J{e.exports=t}},i={},n=function t(n){var r=i[n];if(void 0!==r)return r.exports;var o=i[n]={exports:{}};return e[n](o,o.exports,t),o.exports}(45);return n})()},t.exports=n(i(1917))},1917:function(t){var e;e=function(){return function(t){var e={};function i(n){if(e[n])return e[n].exports;var r=e[n]={i:n,l:!1,exports:{}};return t[n].call(r.exports,r,r.exports,i),r.l=!0,r.exports}return i.m=t,i.c=e,i.i=function(t){return t},i.d=function(t,e,n){i.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:n})},i.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return i.d(e,"a",e),e},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},i.p="",i(i.s=28)}([function(t,e,i){"use strict";function n(){}n.QUALITY=1,n.DEFAULT_CREATE_BENDS_AS_NEEDED=!1,n.DEFAULT_INCREMENTAL=!1,n.DEFAULT_ANIMATION_ON_LAYOUT=!0,n.DEFAULT_ANIMATION_DURING_LAYOUT=!1,n.DEFAULT_ANIMATION_PERIOD=50,n.DEFAULT_UNIFORM_LEAF_NODE_SIZES=!1,n.DEFAULT_GRAPH_MARGIN=15,n.NODE_DIMENSIONS_INCLUDE_LABELS=!1,n.SIMPLE_NODE_SIZE=40,n.SIMPLE_NODE_HALF_SIZE=n.SIMPLE_NODE_SIZE/2,n.EMPTY_COMPOUND_NODE_SIZE=40,n.MIN_EDGE_LENGTH=1,n.WORLD_BOUNDARY=1e6,n.INITIAL_WORLD_BOUNDARY=n.WORLD_BOUNDARY/1e3,n.WORLD_CENTER_X=1200,n.WORLD_CENTER_Y=900,t.exports=n},function(t,e,i){"use strict";var n=i(2),r=i(8),o=i(9);function s(t,e,i){n.call(this,i),this.isOverlapingSourceAndTarget=!1,this.vGraphObject=i,this.bendpoints=[],this.source=t,this.target=e}for(var a in s.prototype=Object.create(n.prototype),n)s[a]=n[a];s.prototype.getSource=function(){return this.source},s.prototype.getTarget=function(){return this.target},s.prototype.isInterGraph=function(){return this.isInterGraph},s.prototype.getLength=function(){return this.length},s.prototype.isOverlapingSourceAndTarget=function(){return this.isOverlapingSourceAndTarget},s.prototype.getBendpoints=function(){return this.bendpoints},s.prototype.getLca=function(){return this.lca},s.prototype.getSourceInLca=function(){return this.sourceInLca},s.prototype.getTargetInLca=function(){return this.targetInLca},s.prototype.getOtherEnd=function(t){if(this.source===t)return this.target;if(this.target===t)return this.source;throw"Node is not incident with this edge"},s.prototype.getOtherEndInGraph=function(t,e){for(var i=this.getOtherEnd(t),n=e.getGraphManager().getRoot();;){if(i.getOwner()==e)return i;if(i.getOwner()==n)break;i=i.getOwner().getParent()}return null},s.prototype.updateLength=function(){var t=new Array(4);this.isOverlapingSourceAndTarget=r.getIntersection(this.target.getRect(),this.source.getRect(),t),this.isOverlapingSourceAndTarget||(this.lengthX=t[0]-t[2],this.lengthY=t[1]-t[3],Math.abs(this.lengthX)<1&&(this.lengthX=o.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=o.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY))},s.prototype.updateLengthSimple=function(){this.lengthX=this.target.getCenterX()-this.source.getCenterX(),this.lengthY=this.target.getCenterY()-this.source.getCenterY(),Math.abs(this.lengthX)<1&&(this.lengthX=o.sign(this.lengthX)),Math.abs(this.lengthY)<1&&(this.lengthY=o.sign(this.lengthY)),this.length=Math.sqrt(this.lengthX*this.lengthX+this.lengthY*this.lengthY)},t.exports=s},function(t,e,i){"use strict";t.exports=function(t){this.vGraphObject=t}},function(t,e,i){"use strict";var n=i(2),r=i(10),o=i(13),s=i(0),a=i(16),h=i(5);function l(t,e,i,s){null==i&&null==s&&(s=e),n.call(this,s),null!=t.graphManager&&(t=t.graphManager),this.estimatedSize=r.MIN_VALUE,this.inclusionTreeDepth=r.MAX_VALUE,this.vGraphObject=s,this.edges=[],this.graphManager=t,this.rect=null!=i&&null!=e?new o(e.x,e.y,i.width,i.height):new o}for(var d in l.prototype=Object.create(n.prototype),n)l[d]=n[d];l.prototype.getEdges=function(){return this.edges},l.prototype.getChild=function(){return this.child},l.prototype.getOwner=function(){return this.owner},l.prototype.getWidth=function(){return this.rect.width},l.prototype.setWidth=function(t){this.rect.width=t},l.prototype.getHeight=function(){return this.rect.height},l.prototype.setHeight=function(t){this.rect.height=t},l.prototype.getCenterX=function(){return this.rect.x+this.rect.width/2},l.prototype.getCenterY=function(){return this.rect.y+this.rect.height/2},l.prototype.getCenter=function(){return new h(this.rect.x+this.rect.width/2,this.rect.y+this.rect.height/2)},l.prototype.getLocation=function(){return new h(this.rect.x,this.rect.y)},l.prototype.getRect=function(){return this.rect},l.prototype.getDiagonal=function(){return Math.sqrt(this.rect.width*this.rect.width+this.rect.height*this.rect.height)},l.prototype.getHalfTheDiagonal=function(){return Math.sqrt(this.rect.height*this.rect.height+this.rect.width*this.rect.width)/2},l.prototype.setRect=function(t,e){this.rect.x=t.x,this.rect.y=t.y,this.rect.width=e.width,this.rect.height=e.height},l.prototype.setCenter=function(t,e){this.rect.x=t-this.rect.width/2,this.rect.y=e-this.rect.height/2},l.prototype.setLocation=function(t,e){this.rect.x=t,this.rect.y=e},l.prototype.moveBy=function(t,e){this.rect.x+=t,this.rect.y+=e},l.prototype.getEdgeListToNode=function(t){var e=[],i=this;return i.edges.forEach((function(n){if(n.target==t){if(n.source!=i)throw"Incorrect edge source!";e.push(n)}})),e},l.prototype.getEdgesBetween=function(t){var e=[],i=this;return i.edges.forEach((function(n){if(n.source!=i&&n.target!=i)throw"Incorrect edge source and/or target";n.target!=t&&n.source!=t||e.push(n)})),e},l.prototype.getNeighborsList=function(){var t=new Set,e=this;return e.edges.forEach((function(i){if(i.source==e)t.add(i.target);else{if(i.target!=e)throw"Incorrect incidency!";t.add(i.source)}})),t},l.prototype.withChildren=function(){var t=new Set;if(t.add(this),null!=this.child)for(var e=this.child.getNodes(),i=0;ie?(this.rect.x-=(this.labelWidth-e)/2,this.setWidth(this.labelWidth)):"right"==this.labelPosHorizontal&&this.setWidth(e+this.labelWidth)),this.labelHeight&&("top"==this.labelPosVertical?(this.rect.y-=this.labelHeight,this.setHeight(i+this.labelHeight)):"center"==this.labelPosVertical&&this.labelHeight>i?(this.rect.y-=(this.labelHeight-i)/2,this.setHeight(this.labelHeight)):"bottom"==this.labelPosVertical&&this.setHeight(i+this.labelHeight))}}},l.prototype.getInclusionTreeDepth=function(){if(this.inclusionTreeDepth==r.MAX_VALUE)throw"assert failed";return this.inclusionTreeDepth},l.prototype.transform=function(t){var e=this.rect.x;e>s.WORLD_BOUNDARY?e=s.WORLD_BOUNDARY:e<-s.WORLD_BOUNDARY&&(e=-s.WORLD_BOUNDARY);var i=this.rect.y;i>s.WORLD_BOUNDARY?i=s.WORLD_BOUNDARY:i<-s.WORLD_BOUNDARY&&(i=-s.WORLD_BOUNDARY);var n=new h(e,i),r=t.inverseTransformPoint(n);this.setLocation(r.x,r.y)},l.prototype.getLeft=function(){return this.rect.x},l.prototype.getRight=function(){return this.rect.x+this.rect.width},l.prototype.getTop=function(){return this.rect.y},l.prototype.getBottom=function(){return this.rect.y+this.rect.height},l.prototype.getParent=function(){return null==this.owner?null:this.owner.getParent()},t.exports=l},function(t,e,i){"use strict";var n=i(0);function r(){}for(var o in n)r[o]=n[o];r.MAX_ITERATIONS=2500,r.DEFAULT_EDGE_LENGTH=50,r.DEFAULT_SPRING_STRENGTH=.45,r.DEFAULT_REPULSION_STRENGTH=4500,r.DEFAULT_GRAVITY_STRENGTH=.4,r.DEFAULT_COMPOUND_GRAVITY_STRENGTH=1,r.DEFAULT_GRAVITY_RANGE_FACTOR=3.8,r.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR=1.5,r.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION=!0,r.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION=!0,r.DEFAULT_COOLING_FACTOR_INCREMENTAL=.3,r.COOLING_ADAPTATION_FACTOR=.33,r.ADAPTATION_LOWER_NODE_LIMIT=1e3,r.ADAPTATION_UPPER_NODE_LIMIT=5e3,r.MAX_NODE_DISPLACEMENT_INCREMENTAL=100,r.MAX_NODE_DISPLACEMENT=3*r.MAX_NODE_DISPLACEMENT_INCREMENTAL,r.MIN_REPULSION_DIST=r.DEFAULT_EDGE_LENGTH/10,r.CONVERGENCE_CHECK_PERIOD=100,r.PER_LEVEL_IDEAL_EDGE_LENGTH_FACTOR=.1,r.MIN_EDGE_LENGTH=1,r.GRID_CALCULATION_CHECK_PERIOD=10,t.exports=r},function(t,e,i){"use strict";function n(t,e){null==t&&null==e?(this.x=0,this.y=0):(this.x=t,this.y=e)}n.prototype.getX=function(){return this.x},n.prototype.getY=function(){return this.y},n.prototype.setX=function(t){this.x=t},n.prototype.setY=function(t){this.y=t},n.prototype.getDifference=function(t){return new DimensionD(this.x-t.x,this.y-t.y)},n.prototype.getCopy=function(){return new n(this.x,this.y)},n.prototype.translate=function(t){return this.x+=t.width,this.y+=t.height,this},t.exports=n},function(t,e,i){"use strict";var n=i(2),r=i(10),o=i(0),s=i(7),a=i(3),h=i(1),l=i(13),d=i(12),c=i(11);function g(t,e,i){n.call(this,i),this.estimatedSize=r.MIN_VALUE,this.margin=o.DEFAULT_GRAPH_MARGIN,this.edges=[],this.nodes=[],this.isConnected=!1,this.parent=t,null!=e&&e instanceof s?this.graphManager=e:null!=e&&e instanceof Layout&&(this.graphManager=e.graphManager)}for(var u in g.prototype=Object.create(n.prototype),n)g[u]=n[u];g.prototype.getNodes=function(){return this.nodes},g.prototype.getEdges=function(){return this.edges},g.prototype.getGraphManager=function(){return this.graphManager},g.prototype.getParent=function(){return this.parent},g.prototype.getLeft=function(){return this.left},g.prototype.getRight=function(){return this.right},g.prototype.getTop=function(){return this.top},g.prototype.getBottom=function(){return this.bottom},g.prototype.isConnected=function(){return this.isConnected},g.prototype.add=function(t,e,i){if(null==e&&null==i){var n=t;if(null==this.graphManager)throw"Graph has no graph mgr!";if(this.getNodes().indexOf(n)>-1)throw"Node already in graph!";return n.owner=this,this.getNodes().push(n),n}var r=t;if(!(this.getNodes().indexOf(e)>-1&&this.getNodes().indexOf(i)>-1))throw"Source or target not in graph!";if(e.owner!=i.owner||e.owner!=this)throw"Both owners must be this graph!";return e.owner!=i.owner?null:(r.source=e,r.target=i,r.isInterGraph=!1,this.getEdges().push(r),e.edges.push(r),i!=e&&i.edges.push(r),r)},g.prototype.remove=function(t){var e=t;if(t instanceof a){if(null==e)throw"Node is null!";if(null==e.owner||e.owner!=this)throw"Owner graph is invalid!";if(null==this.graphManager)throw"Owner graph manager is invalid!";for(var i=e.edges.slice(),n=i.length,r=0;r-1&&d>-1))throw"Source and/or target doesn't know this edge!";if(o.source.edges.splice(l,1),o.target!=o.source&&o.target.edges.splice(d,1),-1==(s=o.source.owner.getEdges().indexOf(o)))throw"Not in owner's edge list!";o.source.owner.getEdges().splice(s,1)}},g.prototype.updateLeftTop=function(){for(var t,e,i,n=r.MAX_VALUE,o=r.MAX_VALUE,s=this.getNodes(),a=s.length,h=0;h(t=l.getTop())&&(n=t),o>(e=l.getLeft())&&(o=e)}return n==r.MAX_VALUE?null:(i=null!=s[0].getParent().paddingLeft?s[0].getParent().paddingLeft:this.margin,this.left=o-i,this.top=n-i,new d(this.left,this.top))},g.prototype.updateBounds=function(t){for(var e,i,n,o,s,a=r.MAX_VALUE,h=-r.MAX_VALUE,d=r.MAX_VALUE,c=-r.MAX_VALUE,g=this.nodes,u=g.length,f=0;f(e=p.getLeft())&&(a=e),h<(i=p.getRight())&&(h=i),d>(n=p.getTop())&&(d=n),c<(o=p.getBottom())&&(c=o)}var y=new l(a,d,h-a,c-d);a==r.MAX_VALUE&&(this.left=this.parent.getLeft(),this.right=this.parent.getRight(),this.top=this.parent.getTop(),this.bottom=this.parent.getBottom()),s=null!=g[0].getParent().paddingLeft?g[0].getParent().paddingLeft:this.margin,this.left=y.x-s,this.right=y.x+y.width+s,this.top=y.y-s,this.bottom=y.y+y.height+s},g.calculateBounds=function(t){for(var e,i,n,o,s=r.MAX_VALUE,a=-r.MAX_VALUE,h=r.MAX_VALUE,d=-r.MAX_VALUE,c=t.length,g=0;g(e=u.getLeft())&&(s=e),a<(i=u.getRight())&&(a=i),h>(n=u.getTop())&&(h=n),d<(o=u.getBottom())&&(d=o)}return new l(s,h,a-s,d-h)},g.prototype.getInclusionTreeDepth=function(){return this==this.graphManager.getRoot()?1:this.parent.getInclusionTreeDepth()},g.prototype.getEstimatedSize=function(){if(this.estimatedSize==r.MIN_VALUE)throw"assert failed";return this.estimatedSize},g.prototype.calcEstimatedSize=function(){for(var t=0,e=this.nodes,i=e.length,n=0;n=this.nodes.length){var h=0;r.forEach((function(e){e.owner==t&&h++})),h==this.nodes.length&&(this.isConnected=!0)}}else this.isConnected=!0},t.exports=g},function(t,e,i){"use strict";var n,r=i(1);function o(t){n=i(6),this.layout=t,this.graphs=[],this.edges=[]}o.prototype.addRoot=function(){var t=this.layout.newGraph(),e=this.layout.newNode(null),i=this.add(t,e);return this.setRootGraph(i),this.rootGraph},o.prototype.add=function(t,e,i,n,r){if(null==i&&null==n&&null==r){if(null==t)throw"Graph is null!";if(null==e)throw"Parent node is null!";if(this.graphs.indexOf(t)>-1)throw"Graph already in this graph mgr!";if(this.graphs.push(t),null!=t.parent)throw"Already has a parent!";if(null!=e.child)throw"Already has a child!";return t.parent=e,e.child=t,t}r=i,i=t;var o=(n=e).getOwner(),s=r.getOwner();if(null==o||o.getGraphManager()!=this)throw"Source not in this graph mgr!";if(null==s||s.getGraphManager()!=this)throw"Target not in this graph mgr!";if(o==s)return i.isInterGraph=!1,o.add(i,n,r);if(i.isInterGraph=!0,i.source=n,i.target=r,this.edges.indexOf(i)>-1)throw"Edge already in inter-graph edge list!";if(this.edges.push(i),null==i.source||null==i.target)throw"Edge source and/or target is null!";if(-1!=i.source.edges.indexOf(i)||-1!=i.target.edges.indexOf(i))throw"Edge already in source and/or target incidency list!";return i.source.edges.push(i),i.target.edges.push(i),i},o.prototype.remove=function(t){if(t instanceof n){var e=t;if(e.getGraphManager()!=this)throw"Graph not in this graph mgr";if(e!=this.rootGraph&&(null==e.parent||e.parent.graphManager!=this))throw"Invalid parent node!";for(var i,o=[],s=(o=o.concat(e.getEdges())).length,a=0;a=e.getRight()?i[0]+=Math.min(e.getX()-t.getX(),t.getRight()-e.getRight()):e.getX()<=t.getX()&&e.getRight()>=t.getRight()&&(i[0]+=Math.min(t.getX()-e.getX(),e.getRight()-t.getRight())),t.getY()<=e.getY()&&t.getBottom()>=e.getBottom()?i[1]+=Math.min(e.getY()-t.getY(),t.getBottom()-e.getBottom()):e.getY()<=t.getY()&&e.getBottom()>=t.getBottom()&&(i[1]+=Math.min(t.getY()-e.getY(),e.getBottom()-t.getBottom()));var o=Math.abs((e.getCenterY()-t.getCenterY())/(e.getCenterX()-t.getCenterX()));e.getCenterY()===t.getCenterY()&&e.getCenterX()===t.getCenterX()&&(o=1);var s=o*i[0],a=i[1]/o;i[0]s)return i[0]=n,i[1]=h,i[2]=o,i[3]=E,!1;if(ro)return i[0]=a,i[1]=r,i[2]=v,i[3]=s,!1;if(no?(i[0]=d,i[1]=c,w=!0):(i[0]=l,i[1]=h,w=!0):C===_&&(n>o?(i[0]=a,i[1]=h,w=!0):(i[0]=g,i[1]=c,w=!0)),-I===_?o>n?(i[2]=m,i[3]=E,L=!0):(i[2]=v,i[3]=y,L=!0):I===_&&(o>n?(i[2]=p,i[3]=y,L=!0):(i[2]=N,i[3]=E,L=!0)),w&&L)return!1;if(n>o?r>s?(M=this.getCardinalDirection(C,_,4),x=this.getCardinalDirection(I,_,2)):(M=this.getCardinalDirection(-C,_,3),x=this.getCardinalDirection(-I,_,1)):r>s?(M=this.getCardinalDirection(-C,_,1),x=this.getCardinalDirection(-I,_,3)):(M=this.getCardinalDirection(C,_,2),x=this.getCardinalDirection(I,_,4)),!w)switch(M){case 1:D=h,O=n+-f/_,i[0]=O,i[1]=D;break;case 2:O=g,D=r+u*_,i[0]=O,i[1]=D;break;case 3:D=c,O=n+f/_,i[0]=O,i[1]=D;break;case 4:O=d,D=r+-u*_,i[0]=O,i[1]=D}if(!L)switch(x){case 1:b=y,R=o+-A/_,i[2]=R,i[3]=b;break;case 2:R=N,b=s+T*_,i[2]=R,i[3]=b;break;case 3:b=E,R=o+A/_,i[2]=R,i[3]=b;break;case 4:R=m,b=s+-T*_,i[2]=R,i[3]=b}}return!1},r.getCardinalDirection=function(t,e,i){return t>e?i:1+i%4},r.getIntersection=function(t,e,i,r){if(null==r)return this.getIntersection2(t,e,i);var o,s,a,h,l,d,c,g=t.x,u=t.y,f=e.x,p=e.y,y=i.x,v=i.y,m=r.x,E=r.y;return 0==(c=(o=p-u)*(h=y-m)-(s=E-v)*(a=g-f))?null:new n((a*(d=m*v-y*E)-h*(l=f*u-g*p))/c,(s*l-o*d)/c)},r.angleOfVector=function(t,e,i,n){var r=void 0;return t!==i?(r=Math.atan((n-e)/(i-t)),i=0){var d=(-h+Math.sqrt(h*h-4*a*l))/(2*a),c=(-h-Math.sqrt(h*h-4*a*l))/(2*a);return d>=0&&d<=1?[d]:c>=0&&c<=1?[c]:null}return null},r.HALF_PI=.5*Math.PI,r.ONE_AND_HALF_PI=1.5*Math.PI,r.TWO_PI=2*Math.PI,r.THREE_PI=3*Math.PI,t.exports=r},function(t,e,i){"use strict";function n(){}n.sign=function(t){return t>0?1:t<0?-1:0},n.floor=function(t){return t<0?Math.ceil(t):Math.floor(t)},n.ceil=function(t){return t<0?Math.floor(t):Math.ceil(t)},t.exports=n},function(t,e,i){"use strict";function n(){}n.MAX_VALUE=2147483647,n.MIN_VALUE=-2147483648,t.exports=n},function(t,e,i){"use strict";var n=function(){function t(t,e){for(var i=0;i0&&e;){for(a.push(l[0]);a.length>0&&e;){var d=a[0];a.splice(0,1),s.add(d);var c=d.getEdges();for(o=0;o-1&&l.splice(p,1)}s=new Set,h=new Map}else t=[]}return t},g.prototype.createDummyNodesForBendpoints=function(t){for(var e=[],i=t.source,n=this.graphManager.calcLowestCommonAncestor(t.source,t.target),r=0;r0){for(var r=this.edgeToDummyNodes.get(i),o=0;o=0&&e.splice(c,1),d.getNeighborsList().forEach((function(t){if(i.indexOf(t)<0){var e=n.get(t)-1;1==e&&h.push(t),n.set(t,e)}}))}i=i.concat(h),1!=e.length&&2!=e.length||(r=!0,o=e[0])}return o},g.prototype.setGraphManager=function(t){this.graphManager=t},t.exports=g},function(t,e,i){"use strict";function n(){}n.seed=1,n.x=0,n.nextDouble=function(){return n.x=1e4*Math.sin(n.seed++),n.x-Math.floor(n.x)},t.exports=n},function(t,e,i){"use strict";var n=i(5);function r(t,e){this.lworldOrgX=0,this.lworldOrgY=0,this.ldeviceOrgX=0,this.ldeviceOrgY=0,this.lworldExtX=1,this.lworldExtY=1,this.ldeviceExtX=1,this.ldeviceExtY=1}r.prototype.getWorldOrgX=function(){return this.lworldOrgX},r.prototype.setWorldOrgX=function(t){this.lworldOrgX=t},r.prototype.getWorldOrgY=function(){return this.lworldOrgY},r.prototype.setWorldOrgY=function(t){this.lworldOrgY=t},r.prototype.getWorldExtX=function(){return this.lworldExtX},r.prototype.setWorldExtX=function(t){this.lworldExtX=t},r.prototype.getWorldExtY=function(){return this.lworldExtY},r.prototype.setWorldExtY=function(t){this.lworldExtY=t},r.prototype.getDeviceOrgX=function(){return this.ldeviceOrgX},r.prototype.setDeviceOrgX=function(t){this.ldeviceOrgX=t},r.prototype.getDeviceOrgY=function(){return this.ldeviceOrgY},r.prototype.setDeviceOrgY=function(t){this.ldeviceOrgY=t},r.prototype.getDeviceExtX=function(){return this.ldeviceExtX},r.prototype.setDeviceExtX=function(t){this.ldeviceExtX=t},r.prototype.getDeviceExtY=function(){return this.ldeviceExtY},r.prototype.setDeviceExtY=function(t){this.ldeviceExtY=t},r.prototype.transformX=function(t){var e=0,i=this.lworldExtX;return 0!=i&&(e=this.ldeviceOrgX+(t-this.lworldOrgX)*this.ldeviceExtX/i),e},r.prototype.transformY=function(t){var e=0,i=this.lworldExtY;return 0!=i&&(e=this.ldeviceOrgY+(t-this.lworldOrgY)*this.ldeviceExtY/i),e},r.prototype.inverseTransformX=function(t){var e=0,i=this.ldeviceExtX;return 0!=i&&(e=this.lworldOrgX+(t-this.ldeviceOrgX)*this.lworldExtX/i),e},r.prototype.inverseTransformY=function(t){var e=0,i=this.ldeviceExtY;return 0!=i&&(e=this.lworldOrgY+(t-this.ldeviceOrgY)*this.lworldExtY/i),e},r.prototype.inverseTransformPoint=function(t){return new n(this.inverseTransformX(t.x),this.inverseTransformY(t.y))},t.exports=r},function(t,e,i){"use strict";var n=i(15),r=i(4),o=i(0),s=i(8),a=i(9);function h(){n.call(this),this.useSmartIdealEdgeLengthCalculation=r.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION,this.gravityConstant=r.DEFAULT_GRAVITY_STRENGTH,this.compoundGravityConstant=r.DEFAULT_COMPOUND_GRAVITY_STRENGTH,this.gravityRangeFactor=r.DEFAULT_GRAVITY_RANGE_FACTOR,this.compoundGravityRangeFactor=r.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR,this.displacementThresholdPerNode=3*r.DEFAULT_EDGE_LENGTH/100,this.coolingFactor=r.DEFAULT_COOLING_FACTOR_INCREMENTAL,this.initialCoolingFactor=r.DEFAULT_COOLING_FACTOR_INCREMENTAL,this.totalDisplacement=0,this.oldTotalDisplacement=0,this.maxIterations=r.MAX_ITERATIONS}for(var l in h.prototype=Object.create(n.prototype),n)h[l]=n[l];h.prototype.initParameters=function(){n.prototype.initParameters.call(this,arguments),this.totalIterations=0,this.notAnimatedIterations=0,this.useFRGridVariant=r.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION,this.grid=[]},h.prototype.calcIdealEdgeLengths=function(){for(var t,e,i,n,s,a,h,l=this.getGraphManager().getAllEdges(),d=0;dr.ADAPTATION_LOWER_NODE_LIMIT&&(this.coolingFactor=Math.max(this.coolingFactor*r.COOLING_ADAPTATION_FACTOR,this.coolingFactor-(t-r.ADAPTATION_LOWER_NODE_LIMIT)/(r.ADAPTATION_UPPER_NODE_LIMIT-r.ADAPTATION_LOWER_NODE_LIMIT)*this.coolingFactor*(1-r.COOLING_ADAPTATION_FACTOR))),this.maxNodeDisplacement=r.MAX_NODE_DISPLACEMENT_INCREMENTAL):(t>r.ADAPTATION_LOWER_NODE_LIMIT?this.coolingFactor=Math.max(r.COOLING_ADAPTATION_FACTOR,1-(t-r.ADAPTATION_LOWER_NODE_LIMIT)/(r.ADAPTATION_UPPER_NODE_LIMIT-r.ADAPTATION_LOWER_NODE_LIMIT)*(1-r.COOLING_ADAPTATION_FACTOR)):this.coolingFactor=1,this.initialCoolingFactor=this.coolingFactor,this.maxNodeDisplacement=r.MAX_NODE_DISPLACEMENT),this.maxIterations=Math.max(5*this.getAllNodes().length,this.maxIterations),this.displacementThresholdPerNode=3*r.DEFAULT_EDGE_LENGTH/100,this.totalDisplacementThreshold=this.displacementThresholdPerNode*this.getAllNodes().length,this.repulsionRange=this.calcRepulsionRange()},h.prototype.calcSpringForces=function(){for(var t,e=this.getAllEdges(),i=0;i0&&void 0!==arguments[0])||arguments[0],a=arguments.length>1&&void 0!==arguments[1]&&arguments[1],h=this.getAllNodes();if(this.useFRGridVariant)for(this.totalIterations%r.GRID_CALCULATION_CHECK_PERIOD==1&&s&&this.updateGrid(),o=new Set,t=0;t(h=e.getEstimatedSize()*this.gravityRangeFactor)||a>h)&&(t.gravitationForceX=-this.gravityConstant*r,t.gravitationForceY=-this.gravityConstant*o):(s>(h=e.getEstimatedSize()*this.compoundGravityRangeFactor)||a>h)&&(t.gravitationForceX=-this.gravityConstant*r*this.compoundGravityConstant,t.gravitationForceY=-this.gravityConstant*o*this.compoundGravityConstant)},h.prototype.isConverged=function(){var t,e=!1;return this.totalIterations>this.maxIterations/3&&(e=Math.abs(this.totalDisplacement-this.oldTotalDisplacement)<2),t=this.totalDisplacement=a.length||l>=a[0].length))for(var d=0;dt}}]),t}();t.exports=o},function(t,e,i){"use strict";function n(){}n.svd=function(t){this.U=null,this.V=null,this.s=null,this.m=0,this.n=0,this.m=t.length,this.n=t[0].length;var e=Math.min(this.m,this.n);this.s=function(t){for(var e=[];t-- >0;)e.push(0);return e}(Math.min(this.m+1,this.n)),this.U=function t(e){if(0==e.length)return 0;for(var i=[],n=0;n0;)e.push(0);return e}(this.n),s=function(t){for(var e=[];t-- >0;)e.push(0);return e}(this.m),a=Math.min(this.m-1,this.n),h=Math.max(0,Math.min(this.n-2,this.m)),l=0;l=0;x--)if(0!==this.s[x]){for(var O=x+1;O=0;P--){if(function(t,e){return t&&e}(P0;){var W=void 0,j=void 0;for(W=I-2;W>=-1&&-1!==W;W--)if(Math.abs(o[W])<=V+B*(Math.abs(this.s[W])+Math.abs(this.s[W+1]))){o[W]=0;break}if(W===I-2)j=4;else{var $=void 0;for($=I-1;$>=W&&$!==W;$--){var q=($!==I?Math.abs(o[$]):0)+($!==W+1?Math.abs(o[$-1]):0);if(Math.abs(this.s[$])<=V+B*q){this.s[$]=0;break}}$===W?j=3:$===I-1?j=1:(j=2,W=$)}switch(W++,j){case 1:var K=o[I-2];o[I-2]=0;for(var Z=I-2;Z>=W;Z--){var Q=n.hypot(this.s[Z],K),J=this.s[Z]/Q,tt=K/Q;this.s[Z]=Q,Z!==W&&(K=-tt*o[Z-1],o[Z-1]=J*o[Z-1]);for(var et=0;et=this.s[W+1]);){var It=this.s[W];if(this.s[W]=this.s[W+1],this.s[W+1]=It,WMath.abs(e)?(i=e/t,i=Math.abs(t)*Math.sqrt(1+i*i)):0!=e?(i=t/e,i=Math.abs(e)*Math.sqrt(1+i*i)):i=0,i},t.exports=n},function(t,e,i){"use strict";var n=function(){function t(t,e){for(var i=0;i2&&void 0!==arguments[2]?arguments[2]:1,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:-1,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:-1;!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.sequence1=e,this.sequence2=i,this.match_score=n,this.mismatch_penalty=r,this.gap_penalty=o,this.iMax=e.length+1,this.jMax=i.length+1,this.grid=new Array(this.iMax);for(var s=0;s=0;i--){var n=this.listeners[i];n.event===t&&n.callback===e&&this.listeners.splice(i,1)}},r.emit=function(t,e){for(var i=0;i{"use strict";i.d(e,{diagram:()=>K});var n=i(73590),r=i(30092),o=i(25871),s=i(13226),a=i(67633),h=i(40797),l=i(78731),d=i(90165),c=i(26527),g=i(70451),u={L:"left",R:"right",T:"top",B:"bottom"},f={L:(0,h.K2)((t=>`${t},${t/2} 0,${t} 0,0`),"L"),R:(0,h.K2)((t=>`0,${t/2} ${t},0 ${t},${t}`),"R"),T:(0,h.K2)((t=>`0,0 ${t},0 ${t/2},${t}`),"T"),B:(0,h.K2)((t=>`${t/2},0 ${t},${t} 0,${t}`),"B")},p={L:(0,h.K2)(((t,e)=>t-e+2),"L"),R:(0,h.K2)(((t,e)=>t-2),"R"),T:(0,h.K2)(((t,e)=>t-e+2),"T"),B:(0,h.K2)(((t,e)=>t-2),"B")},y=(0,h.K2)((function(t){return m(t)?"L"===t?"R":"L":"T"===t?"B":"T"}),"getOppositeArchitectureDirection"),v=(0,h.K2)((function(t){return"L"===t||"R"===t||"T"===t||"B"===t}),"isArchitectureDirection"),m=(0,h.K2)((function(t){return"L"===t||"R"===t}),"isArchitectureDirectionX"),E=(0,h.K2)((function(t){return"T"===t||"B"===t}),"isArchitectureDirectionY"),N=(0,h.K2)((function(t,e){const i=m(t)&&E(e),n=E(t)&&m(e);return i||n}),"isArchitectureDirectionXY"),T=(0,h.K2)((function(t){const e=t[0],i=t[1],n=m(e)&&E(i),r=E(e)&&m(i);return n||r}),"isArchitecturePairXY"),A=(0,h.K2)((function(t){return"LL"!==t&&"RR"!==t&&"TT"!==t&&"BB"!==t}),"isValidArchitectureDirectionPair"),w=(0,h.K2)((function(t,e){const i=`${t}${e}`;return A(i)?i:void 0}),"getArchitectureDirectionPair"),L=(0,h.K2)((function([t,e],i){const n=i[0],r=i[1];return m(n)?E(r)?[t+("L"===n?-1:1),e+("T"===r?1:-1)]:[t+("L"===n?-1:1),e]:m(r)?[t+("L"===r?1:-1),e+("T"===n?1:-1)]:[t,e+("T"===n?1:-1)]}),"shiftPositionByArchitectureDirectionPair"),C=(0,h.K2)((function(t){return"LT"===t||"TL"===t?[1,1]:"BL"===t||"LB"===t?[1,-1]:"BR"===t||"RB"===t?[-1,-1]:[-1,1]}),"getArchitectureDirectionXYFactors"),I=(0,h.K2)((function(t,e){return N(t,e)?"bend":m(t)?"horizontal":"vertical"}),"getArchitectureDirectionAlignment"),_=(0,h.K2)((function(t){return"service"===t.type}),"isArchitectureService"),M=(0,h.K2)((function(t){return"junction"===t.type}),"isArchitectureJunction"),x=(0,h.K2)((t=>t.data()),"edgeData"),O=(0,h.K2)((t=>t.data()),"nodeData"),D=a.UI.architecture,R=class{constructor(){this.nodes={},this.groups={},this.edges=[],this.registeredIds={},this.elements={},this.setAccTitle=a.SV,this.getAccTitle=a.iN,this.setDiagramTitle=a.ke,this.getDiagramTitle=a.ab,this.getAccDescription=a.m7,this.setAccDescription=a.EI,this.clear()}static{(0,h.K2)(this,"ArchitectureDB")}clear(){this.nodes={},this.groups={},this.edges=[],this.registeredIds={},this.dataStructures=void 0,this.elements={},(0,a.IU)()}addService({id:t,icon:e,in:i,title:n,iconText:r}){if(void 0!==this.registeredIds[t])throw new Error(`The service id [${t}] is already in use by another ${this.registeredIds[t]}`);if(void 0!==i){if(t===i)throw new Error(`The service [${t}] cannot be placed within itself`);if(void 0===this.registeredIds[i])throw new Error(`The service [${t}]'s parent does not exist. Please make sure the parent is created before this service`);if("node"===this.registeredIds[i])throw new Error(`The service [${t}]'s parent is not a group`)}this.registeredIds[t]="node",this.nodes[t]={id:t,type:"service",icon:e,iconText:r,title:n,edges:[],in:i}}getServices(){return Object.values(this.nodes).filter(_)}addJunction({id:t,in:e}){this.registeredIds[t]="node",this.nodes[t]={id:t,type:"junction",edges:[],in:e}}getJunctions(){return Object.values(this.nodes).filter(M)}getNodes(){return Object.values(this.nodes)}getNode(t){return this.nodes[t]??null}addGroup({id:t,icon:e,in:i,title:n}){if(void 0!==this.registeredIds?.[t])throw new Error(`The group id [${t}] is already in use by another ${this.registeredIds[t]}`);if(void 0!==i){if(t===i)throw new Error(`The group [${t}] cannot be placed within itself`);if(void 0===this.registeredIds?.[i])throw new Error(`The group [${t}]'s parent does not exist. Please make sure the parent is created before this group`);if("node"===this.registeredIds?.[i])throw new Error(`The group [${t}]'s parent is not a group`)}this.registeredIds[t]="group",this.groups[t]={id:t,icon:e,title:n,in:i}}getGroups(){return Object.values(this.groups)}addEdge({lhsId:t,rhsId:e,lhsDir:i,rhsDir:n,lhsInto:r,rhsInto:o,lhsGroup:s,rhsGroup:a,title:h}){if(!v(i))throw new Error(`Invalid direction given for left hand side of edge ${t}--${e}. Expected (L,R,T,B) got ${String(i)}`);if(!v(n))throw new Error(`Invalid direction given for right hand side of edge ${t}--${e}. Expected (L,R,T,B) got ${String(n)}`);if(void 0===this.nodes[t]&&void 0===this.groups[t])throw new Error(`The left-hand id [${t}] does not yet exist. Please create the service/group before declaring an edge to it.`);if(void 0===this.nodes[e]&&void 0===this.groups[e])throw new Error(`The right-hand id [${e}] does not yet exist. Please create the service/group before declaring an edge to it.`);const l=this.nodes[t].in,d=this.nodes[e].in;if(s&&l&&d&&l==d)throw new Error(`The left-hand id [${t}] is modified to traverse the group boundary, but the edge does not pass through two groups.`);if(a&&l&&d&&l==d)throw new Error(`The right-hand id [${e}] is modified to traverse the group boundary, but the edge does not pass through two groups.`);const c={lhsId:t,lhsDir:i,lhsInto:r,lhsGroup:s,rhsId:e,rhsDir:n,rhsInto:o,rhsGroup:a,title:h};this.edges.push(c),this.nodes[t]&&this.nodes[e]&&(this.nodes[t].edges.push(this.edges[this.edges.length-1]),this.nodes[e].edges.push(this.edges[this.edges.length-1]))}getEdges(){return this.edges}getDataStructures(){if(void 0===this.dataStructures){const t={},e=Object.entries(this.nodes).reduce(((e,[i,n])=>(e[i]=n.edges.reduce(((e,n)=>{const r=this.getNode(n.lhsId)?.in,o=this.getNode(n.rhsId)?.in;if(r&&o&&r!==o){const e=I(n.lhsDir,n.rhsDir);"bend"!==e&&(t[r]??={},t[r][o]=e,t[o]??={},t[o][r]=e)}if(n.lhsId===i){const t=w(n.lhsDir,n.rhsDir);t&&(e[t]=n.rhsId)}else{const t=w(n.rhsDir,n.lhsDir);t&&(e[t]=n.lhsId)}return e}),{}),e)),{}),i=Object.keys(e)[0],n={[i]:1},r=Object.keys(e).reduce(((t,e)=>e===i?t:{...t,[e]:1}),{}),o=(0,h.K2)((t=>{const i={[t]:[0,0]},o=[t];for(;o.length>0;){const t=o.shift();if(t){n[t]=1,delete r[t];const s=e[t],[a,h]=i[t];Object.entries(s).forEach((([t,e])=>{n[e]||(i[e]=L([a,h],t),o.push(e))}))}}return i}),"BFS"),s=[o(i)];for(;Object.keys(r).length>0;)s.push(o(Object.keys(r)[0]));this.dataStructures={adjList:e,spatialMaps:s,groupAlignments:t}}return this.dataStructures}setElementForId(t,e){this.elements[t]=e}getElementById(t){return this.elements[t]}getConfig(){return(0,s.$t)({...D,...(0,a.zj)().architecture})}getConfigField(t){return this.getConfig()[t]}},b=(0,h.K2)(((t,e)=>{(0,o.S)(t,e),t.groups.map((t=>e.addGroup(t))),t.services.map((t=>e.addService({...t,type:"service"}))),t.junctions.map((t=>e.addJunction({...t,type:"junction"}))),t.edges.map((t=>e.addEdge(t)))}),"populateDb"),F={parser:{yy:void 0},parse:(0,h.K2)((async t=>{const e=await(0,l.qg)("architecture",t);h.Rm.debug(e);const i=F.parser?.yy;if(!(i instanceof R))throw new Error("parser.parser?.yy was not a ArchitectureDB. This is due to a bug within Mermaid, please report this issue at https://github.com/mermaid-js/mermaid/issues.");b(e,i)}),"parse")},G=(0,h.K2)((t=>`\n .edge {\n stroke-width: ${t.archEdgeWidth};\n stroke: ${t.archEdgeColor};\n fill: none;\n }\n\n .arrow {\n fill: ${t.archEdgeArrowColor};\n }\n\n .node-bkg {\n fill: none;\n stroke: ${t.archGroupBorderColor};\n stroke-width: ${t.archGroupBorderWidth};\n stroke-dasharray: 8;\n }\n .node-icon-text {\n display: flex; \n align-items: center;\n }\n \n .node-icon-text > div {\n color: #fff;\n margin: 1px;\n height: fit-content;\n text-align: center;\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n }\n`),"getStyles"),S=(0,h.K2)((t=>`${t}`),"wrapIcon"),P={prefix:"mermaid-architecture",height:80,width:80,icons:{database:{body:S('')},server:{body:S('')},disk:{body:S('')},internet:{body:S('')},cloud:{body:S('')},unknown:r.Gc,blank:{body:S("")}}},U=(0,h.K2)((async function(t,e,i){const n=i.getConfigField("padding"),o=i.getConfigField("iconSize"),h=o/2,l=o/6,d=l/2;await Promise.all(e.edges().map((async e=>{const{source:o,sourceDir:c,sourceArrow:g,sourceGroup:u,target:y,targetDir:v,targetArrow:A,targetGroup:L,label:I}=x(e);let{x:_,y:M}=e[0].sourceEndpoint();const{x:O,y:D}=e[0].midpoint();let{x:R,y:b}=e[0].targetEndpoint();const F=n+4;if(u&&(m(c)?_+="L"===c?-F:F:M+="T"===c?-F:F+18),L&&(m(v)?R+="L"===v?-F:F:b+="T"===v?-F:F+18),u||"junction"!==i.getNode(o)?.type||(m(c)?_+="L"===c?h:-h:M+="T"===c?h:-h),L||"junction"!==i.getNode(y)?.type||(m(v)?R+="L"===v?h:-h:b+="T"===v?h:-h),e[0]._private.rscratch){const e=t.insert("g");if(e.insert("path").attr("d",`M ${_},${M} L ${O},${D} L${R},${b} `).attr("class","edge").attr("id",(0,s.rY)(o,y,{prefix:"L"})),g){const t=m(c)?p[c](_,l):_-d,i=E(c)?p[c](M,l):M-d;e.insert("polygon").attr("points",f[c](l)).attr("transform",`translate(${t},${i})`).attr("class","arrow")}if(A){const t=m(v)?p[v](R,l):R-d,i=E(v)?p[v](b,l):b-d;e.insert("polygon").attr("points",f[v](l)).attr("transform",`translate(${t},${i})`).attr("class","arrow")}if(I){const t=N(c,v)?"XY":m(c)?"X":"Y";let i=0;i="X"===t?Math.abs(_-R):"Y"===t?Math.abs(M-b)/1.5:Math.abs(_-R)/2;const n=e.append("g");if(await(0,r.GZ)(n,I,{useHtmlLabels:!1,width:i,classes:"architecture-service-label"},(0,a.D7)()),n.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle"),"X"===t)n.attr("transform","translate("+O+", "+D+")");else if("Y"===t)n.attr("transform","translate("+O+", "+D+") rotate(-90)");else if("XY"===t){const t=w(c,v);if(t&&T(t)){const e=n.node().getBoundingClientRect(),[i,r]=C(t);n.attr("dominant-baseline","auto").attr("transform",`rotate(${-1*i*r*45})`);const o=n.node().getBoundingClientRect();n.attr("transform",`\n translate(${O}, ${D-e.height/2})\n translate(${i*o.width/2}, ${r*o.height/2})\n rotate(${-1*i*r*45}, 0, ${e.height/2})\n `)}}}}})))}),"drawEdges"),Y=(0,h.K2)((async function(t,e,i){const n=.75*i.getConfigField("padding"),o=i.getConfigField("fontSize"),s=i.getConfigField("iconSize")/2;await Promise.all(e.nodes().map((async e=>{const h=O(e);if("group"===h.type){const{h:l,w:d,x1:c,y1:g}=e.boundingBox(),u=t.append("rect");u.attr("id",`group-${h.id}`).attr("x",c+s).attr("y",g+s).attr("width",d).attr("height",l).attr("class","node-bkg");const f=t.append("g");let p=c,y=g;if(h.icon){const t=f.append("g");t.html(`${await(0,r.WY)(h.icon,{height:n,width:n,fallbackPrefix:P.prefix})}`),t.attr("transform","translate("+(p+s+1)+", "+(y+s+1)+")"),p+=n,y+=o/2-1-2}if(h.label){const t=f.append("g");await(0,r.GZ)(t,h.label,{useHtmlLabels:!1,width:d,classes:"architecture-service-label"},(0,a.D7)()),t.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","start").attr("text-anchor","start"),t.attr("transform","translate("+(p+s+4)+", "+(y+s+2)+")")}i.setElementForId(h.id,u)}})))}),"drawGroups"),k=(0,h.K2)((async function(t,e,i){const n=(0,a.D7)();for(const o of i){const i=e.append("g"),s=t.getConfigField("iconSize");if(o.title){const t=i.append("g");await(0,r.GZ)(t,o.title,{useHtmlLabels:!1,width:1.5*s,classes:"architecture-service-label"},n),t.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle"),t.attr("transform","translate("+s/2+", "+s+")")}const h=i.append("g");if(o.icon)h.html(`${await(0,r.WY)(o.icon,{height:s,width:s,fallbackPrefix:P.prefix})}`);else if(o.iconText){h.html(`${await(0,r.WY)("blank",{height:s,width:s,fallbackPrefix:P.prefix})}`);const t=h.append("g").append("foreignObject").attr("width",s).attr("height",s).append("div").attr("class","node-icon-text").attr("style",`height: ${s}px;`).append("div").html((0,a.jZ)(o.iconText,n)),e=parseInt(window.getComputedStyle(t.node(),null).getPropertyValue("font-size").replace(/\D/g,""))??16;t.attr("style",`-webkit-line-clamp: ${Math.floor((s-2)/e)};`)}else h.append("path").attr("class","node-bkg").attr("id","node-"+o.id).attr("d",`M0 ${s} v${-s} q0,-5 5,-5 h${s} q5,0 5,5 v${s} H0 Z`);i.attr("id",`service-${o.id}`).attr("class","architecture-service");const{width:l,height:d}=i.node().getBBox();o.width=l,o.height=d,t.setElementForId(o.id,i)}return 0}),"drawServices"),H=(0,h.K2)((function(t,e,i){i.forEach((i=>{const n=e.append("g"),r=t.getConfigField("iconSize");n.append("g").append("rect").attr("id","node-"+i.id).attr("fill-opacity","0").attr("width",r).attr("height",r),n.attr("class","architecture-junction");const{width:o,height:s}=n._groups[0][0].getBBox();n.width=o,n.height=s,t.setElementForId(i.id,n)}))}),"drawJunctions");function X(t,e,i){t.forEach((t=>{e.add({group:"nodes",data:{type:"service",id:t.id,icon:t.icon,label:t.title,parent:t.in,width:i.getConfigField("iconSize"),height:i.getConfigField("iconSize")},classes:"node-service"})}))}function z(t,e,i){t.forEach((t=>{e.add({group:"nodes",data:{type:"junction",id:t.id,parent:t.in,width:i.getConfigField("iconSize"),height:i.getConfigField("iconSize")},classes:"node-junction"})}))}function B(t,e){e.nodes().map((e=>{const i=O(e);if("group"===i.type)return;i.x=e.position().x,i.y=e.position().y;t.getElementById(i.id).attr("transform","translate("+(i.x||0)+","+(i.y||0)+")")}))}function V(t,e){t.forEach((t=>{e.add({group:"nodes",data:{type:"group",id:t.id,icon:t.icon,label:t.title,parent:t.in},classes:"node-group"})}))}function W(t,e){t.forEach((t=>{const{lhsId:i,rhsId:n,lhsInto:r,lhsGroup:o,rhsInto:s,lhsDir:a,rhsDir:h,rhsGroup:l,title:d}=t,c=N(t.lhsDir,t.rhsDir)?"segments":"straight",g={id:`${i}-${n}`,label:d,source:i,sourceDir:a,sourceArrow:r,sourceGroup:o,sourceEndpoint:"L"===a?"0 50%":"R"===a?"100% 50%":"T"===a?"50% 0":"50% 100%",target:n,targetDir:h,targetArrow:s,targetGroup:l,targetEndpoint:"L"===h?"0 50%":"R"===h?"100% 50%":"T"===h?"50% 0":"50% 100%"};e.add({group:"edges",data:g,classes:c})}))}function j(t,e,i){const n=(0,h.K2)(((t,e)=>Object.entries(t).reduce(((t,[n,r])=>{let o=0;const s=Object.entries(r);if(1===s.length)return t[n]=s[0][1],t;for(let a=0;a{const i={},r={};return Object.entries(e).forEach((([e,[n,o]])=>{const s=t.getNode(e)?.in??"default";i[o]??={},i[o][s]??=[],i[o][s].push(e),r[n]??={},r[n][s]??=[],r[n][s].push(e)})),{horiz:Object.values(n(i,"horizontal")).filter((t=>t.length>1)),vert:Object.values(n(r,"vertical")).filter((t=>t.length>1))}})),[o,s]=r.reduce((([t,e],{horiz:i,vert:n})=>[[...t,...i],[...e,...n]]),[[],[]]);return{horizontal:o,vertical:s}}function $(t,e){const i=[],n=(0,h.K2)((t=>`${t[0]},${t[1]}`),"posToStr"),r=(0,h.K2)((t=>t.split(",").map((t=>parseInt(t)))),"strToPos");return t.forEach((t=>{const o=Object.fromEntries(Object.entries(t).map((([t,e])=>[n(e),t]))),s=[n([0,0])],a={},h={L:[-1,0],R:[1,0],T:[0,1],B:[0,-1]};for(;s.length>0;){const t=s.shift();if(t){a[t]=1;const l=o[t];if(l){const d=r(t);Object.entries(h).forEach((([t,r])=>{const h=n([d[0]+r[0],d[1]+r[1]]),c=o[h];c&&!a[h]&&(s.push(h),i.push({[u[t]]:c,[u[y(t)]]:l,gap:1.5*e.getConfigField("iconSize")}))}))}}}})),i}function q(t,e,i,n,r,{spatialMaps:o,groupAlignments:s}){return new Promise((a=>{const l=(0,g.Ltv)("body").append("div").attr("id","cy").attr("style","display:none"),c=(0,d.A)({container:document.getElementById("cy"),style:[{selector:"edge",style:{"curve-style":"straight",label:"data(label)","source-endpoint":"data(sourceEndpoint)","target-endpoint":"data(targetEndpoint)"}},{selector:"edge.segments",style:{"curve-style":"segments","segment-weights":"0","segment-distances":[.5],"edge-distances":"endpoints","source-endpoint":"data(sourceEndpoint)","target-endpoint":"data(targetEndpoint)"}},{selector:"node",style:{"compound-sizing-wrt-labels":"include"}},{selector:"node[label]",style:{"text-valign":"bottom","text-halign":"center","font-size":`${r.getConfigField("fontSize")}px`}},{selector:".node-service",style:{label:"data(label)",width:"data(width)",height:"data(height)"}},{selector:".node-junction",style:{width:"data(width)",height:"data(height)"}},{selector:".node-group",style:{padding:`${r.getConfigField("padding")}px`}}],layout:{name:"grid",boundingBox:{x1:0,x2:100,y1:0,y2:100}}});l.remove(),V(i,c),X(t,c,r),z(e,c,r),W(n,c);const u=j(r,o,s),f=$(o,r),p=c.layout({name:"fcose",quality:"proof",styleEnabled:!1,animate:!1,nodeDimensionsIncludeLabels:!1,idealEdgeLength(t){const[e,i]=t.connectedNodes(),{parent:n}=O(e),{parent:o}=O(i);return n===o?1.5*r.getConfigField("iconSize"):.5*r.getConfigField("iconSize")},edgeElasticity(t){const[e,i]=t.connectedNodes(),{parent:n}=O(e),{parent:r}=O(i);return n===r?.45:.001},alignmentConstraint:u,relativePlacementConstraint:f});p.one("layoutstop",(()=>{function t(t,e,i,n){let r,o;const{x:s,y:a}=t,{x:h,y:l}=e;o=(n-a+(s-i)*(a-l)/(s-h))/Math.sqrt(1+Math.pow((a-l)/(s-h),2)),r=Math.sqrt(Math.pow(n-a,2)+Math.pow(i-s,2)-Math.pow(o,2));r/=Math.sqrt(Math.pow(h-s,2)+Math.pow(l-a,2));let d=(h-s)*(n-a)-(l-a)*(i-s);switch(!0){case d>=0:d=1;break;case d<0:d=-1}let c=(h-s)*(i-s)+(l-a)*(n-a);switch(!0){case c>=0:c=1;break;case c<0:c=-1}return o=Math.abs(o)*d,r*=c,{distances:o,weights:r}}(0,h.K2)(t,"getSegmentWeights"),c.startBatch();for(const e of Object.values(c.edges()))if(e.data?.()){const{x:i,y:n}=e.source().position(),{x:r,y:o}=e.target().position();if(i!==r&&n!==o){const i=e.sourceEndpoint(),n=e.targetEndpoint(),{sourceDir:r}=x(e),[o,s]=E(r)?[i.x,n.y]:[n.x,i.y],{weights:a,distances:h}=t(i,n,o,s);e.style("segment-distances",h),e.style("segment-weights",a)}}c.endBatch(),p.run()})),p.run(),c.ready((t=>{h.Rm.info("Ready",t),a(c)}))}))}(0,r.pC)([{name:P.prefix,icons:P}]),d.A.use(c),(0,h.K2)(X,"addServices"),(0,h.K2)(z,"addJunctions"),(0,h.K2)(B,"positionNodes"),(0,h.K2)(V,"addGroups"),(0,h.K2)(W,"addEdges"),(0,h.K2)(j,"getAlignments"),(0,h.K2)($,"getRelativeConstraints"),(0,h.K2)(q,"layoutArchitecture");var K={parser:F,get db(){return new R},renderer:{draw:(0,h.K2)((async(t,e,i,r)=>{const o=r.db,s=o.getServices(),h=o.getJunctions(),l=o.getGroups(),d=o.getEdges(),c=o.getDataStructures(),g=(0,n.D)(e),u=g.append("g");u.attr("class","architecture-edges");const f=g.append("g");f.attr("class","architecture-services");const p=g.append("g");p.attr("class","architecture-groups"),await k(o,f,s),H(o,f,h);const y=await q(s,h,l,d,o,c);await U(u,y,o),await Y(p,y,o),B(o,y),(0,a.ot)(void 0,g,o.getConfigField("padding"),o.getConfigField("useMaxWidth"))}),"draw")},styles:G}},25871:(t,e,i)=>{"use strict";function n(t,e){t.accDescr&&e.setAccDescription?.(t.accDescr),t.accTitle&&e.setAccTitle?.(t.accTitle),t.title&&e.setDiagramTitle?.(t.title)}i.d(e,{S:()=>n}),(0,i(40797).K2)(n,"populateCommonDb")}}]); \ No newline at end of file diff --git a/assets/js/84f72ddd.0d7b00ea.js b/assets/js/84f72ddd.0d7b00ea.js new file mode 100644 index 00000000..7b0c0130 --- /dev/null +++ b/assets/js/84f72ddd.0d7b00ea.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1672],{64893:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>h,frontMatter:()=>c,metadata:()=>a,toc:()=>i});const a=JSON.parse('{"id":"API-Reference/search/SearchModel","title":"SearchModel","description":"Import :","source":"@site/api/API-Reference/search/SearchModel.md","sourceDirName":"API-Reference/search","slug":"/API-Reference/search/SearchModel","permalink":"/api/API-Reference/search/SearchModel","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"QuickSearchField","permalink":"/api/API-Reference/search/QuickSearchField"},"next":{"title":"SearchResultsView","permalink":"/api/API-Reference/search/SearchResultsView"}}');var s=n(74848),r=n(28453);const c={},o=void 0,l={},i=[{value:"Import :",id:"import-",level:3},{value:"Manages a set of search query and result data.",id:"manages-a-set-of-search-query-and-result-data",level:2},{value:"Constant",id:"constant",level:2}];function d(e){const t={code:"code",h2:"h2",h3:"h3",p:"p",pre:"pre",strong:"strong",...(0,r.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.h3,{id:"import-",children:"Import :"}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-js",children:'const SearchModel = brackets.getModule("search/SearchModel")\n'})}),"\n",(0,s.jsx)("a",{name:"Manages a set of search query and result data.\nDispatches these events_\nchange - whenever the results have been updated. Note that its up to people who\nedit the model to call fireChange_new when necessary - it doesnt automatically fire."}),"\n",(0,s.jsx)(t.h2,{id:"manages-a-set-of-search-query-and-result-data",children:"Manages a set of search query and result data."}),"\n",(0,s.jsxs)(t.p,{children:["Dispatches these events:\nchange - whenever the results have been updated. Note that its up to people who\nedit the model to call fireChange() when necessary - it doesnt automatically fire.\n",(0,s.jsx)(t.strong,{children:"Kind"}),": global class"]}),"\n",(0,s.jsx)("a",{name:"Constant"}),"\n",(0,s.jsx)(t.h2,{id:"constant",children:"Constant"}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"Kind"}),": global constant"]})]})}function h(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},28453:(e,t,n)=>{n.d(t,{R:()=>c,x:()=>o});var a=n(96540);const s={},r=a.createContext(s);function c(e){const t=a.useContext(r);return a.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function o(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:c(e.components),a.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/854b3393.65336401.js b/assets/js/854b3393.65336401.js new file mode 100644 index 00000000..fa15effc --- /dev/null +++ b/assets/js/854b3393.65336401.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8010],{45464:l=>{l.exports=JSON.parse('{"tag":{"label":"Collapse Folders","permalink":"/blog/tags/collapse-folders","allTagsPath":"/blog/tags","count":1,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/collapse-folders","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]); \ No newline at end of file diff --git a/assets/js/8565.c8906014.js b/assets/js/8565.c8906014.js new file mode 100644 index 00000000..c2123efb --- /dev/null +++ b/assets/js/8565.c8906014.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8565],{89625:(t,e,n)=>{n.d(e,{A:()=>r});var i=n(40797),s=n(70451),r=(0,i.K2)(((t,e)=>{let n;"sandbox"===e&&(n=(0,s.Ltv)("#i"+t));return("sandbox"===e?(0,s.Ltv)(n.nodes()[0].contentDocument.body):(0,s.Ltv)("body")).select(`[id="${t}"]`)}),"getDiagramElement")},21152:(t,e,n)=>{n.d(e,{P:()=>r});var i=n(67633),s=n(40797),r=(0,s.K2)(((t,e,n,r)=>{t.attr("class",n);const{width:c,height:h,x:l,y:d}=o(t,e);(0,i.a$)(t,h,c,r);const g=a(l,d,c,h,e);t.attr("viewBox",g),s.Rm.debug(`viewBox configured: ${g} with padding: ${e}`)}),"setupViewPortForSVG"),o=(0,s.K2)(((t,e)=>{const n=t.node()?.getBBox()||{width:0,height:0,x:0,y:0};return{width:n.width+2*e,height:n.height+2*e,x:n.x,y:n.y}}),"calculateDimensionsWithPadding"),a=(0,s.K2)(((t,e,n,i,s)=>`${t-s} ${e-s} ${n} ${i}`),"createViewBox")},78565:(t,e,n)=>{n.d(e,{diagram:()=>k});var i=n(89625),s=n(21152),r=n(10045),o=(n(5164),n(28698),n(5894),n(63245),n(32387),n(30092),n(13226),n(67633)),a=n(40797);const c={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};let h;const l=new Uint8Array(16);const d=[];for(let D=0;D<256;++D)d.push((D+256).toString(16).slice(1));function g(t,e=0){return(d[t[e+0]]+d[t[e+1]]+d[t[e+2]]+d[t[e+3]]+"-"+d[t[e+4]]+d[t[e+5]]+"-"+d[t[e+6]]+d[t[e+7]]+"-"+d[t[e+8]]+d[t[e+9]]+"-"+d[t[e+10]]+d[t[e+11]]+d[t[e+12]]+d[t[e+13]]+d[t[e+14]]+d[t[e+15]]).toLowerCase()}const u=function(t,e,n){if(c.randomUUID&&!e&&!t)return c.randomUUID();const i=(t=t||{}).random??t.rng?.()??function(){if(!h){if("undefined"==typeof crypto||!crypto.getRandomValues)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");h=crypto.getRandomValues.bind(crypto)}return h(l)}();if(i.length<16)throw new Error("Random bytes length must be >= 16");if(i[6]=15&i[6]|64,i[8]=63&i[8]|128,e){if((n=n||0)<0||n+16>e.length)throw new RangeError(`UUID byte range ${n}:${n+15} is out of buffer bounds`);for(let t=0;t<16;++t)e[n+t]=i[t];return e}return g(i)};var p=n(3219),y=n(78041),m=n(75263),f=function(){var t=(0,a.K2)((function(t,e,n,i){for(n=n||{},i=t.length;i--;n[t[i]]=e);return n}),"o"),e=[1,4],n=[1,13],i=[1,12],s=[1,15],r=[1,16],o=[1,20],c=[1,19],h=[6,7,8],l=[1,26],d=[1,24],g=[1,25],u=[6,7,11],p=[1,6,13,15,16,19,22],y=[1,33],m=[1,34],f=[1,6,7,11,13,15,16,19,22],b={trace:(0,a.K2)((function(){}),"trace"),yy:{},symbols_:{error:2,start:3,mindMap:4,spaceLines:5,SPACELINE:6,NL:7,MINDMAP:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,node:14,ICON:15,CLASS:16,nodeWithId:17,nodeWithoutId:18,NODE_DSTART:19,NODE_DESCR:20,NODE_DEND:21,NODE_ID:22,$accept:0,$end:1},terminals_:{2:"error",6:"SPACELINE",7:"NL",8:"MINDMAP",11:"EOF",13:"SPACELIST",15:"ICON",16:"CLASS",19:"NODE_DSTART",20:"NODE_DESCR",21:"NODE_DEND",22:"NODE_ID"},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,2],[12,2],[12,2],[12,1],[12,1],[12,1],[12,1],[12,1],[14,1],[14,1],[18,3],[17,1],[17,4]],performAction:(0,a.K2)((function(t,e,n,i,s,r,o){var a=r.length-1;switch(s){case 6:case 7:return i;case 8:i.getLogger().trace("Stop NL ");break;case 9:i.getLogger().trace("Stop EOF ");break;case 11:i.getLogger().trace("Stop NL2 ");break;case 12:i.getLogger().trace("Stop EOF2 ");break;case 15:i.getLogger().info("Node: ",r[a].id),i.addNode(r[a-1].length,r[a].id,r[a].descr,r[a].type);break;case 16:i.getLogger().trace("Icon: ",r[a]),i.decorateNode({icon:r[a]});break;case 17:case 21:i.decorateNode({class:r[a]});break;case 18:i.getLogger().trace("SPACELIST");break;case 19:i.getLogger().trace("Node: ",r[a].id),i.addNode(0,r[a].id,r[a].descr,r[a].type);break;case 20:i.decorateNode({icon:r[a]});break;case 25:i.getLogger().trace("node found ..",r[a-2]),this.$={id:r[a-1],descr:r[a-1],type:i.getType(r[a-2],r[a])};break;case 26:this.$={id:r[a],descr:r[a],type:i.nodeType.DEFAULT};break;case 27:i.getLogger().trace("node found ..",r[a-3]),this.$={id:r[a-3],descr:r[a-1],type:i.getType(r[a-2],r[a])}}}),"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],8:e},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:e},{6:n,7:[1,10],9:9,12:11,13:i,14:14,15:s,16:r,17:17,18:18,19:o,22:c},t(h,[2,3]),{1:[2,2]},t(h,[2,4]),t(h,[2,5]),{1:[2,6],6:n,12:21,13:i,14:14,15:s,16:r,17:17,18:18,19:o,22:c},{6:n,9:22,12:11,13:i,14:14,15:s,16:r,17:17,18:18,19:o,22:c},{6:l,7:d,10:23,11:g},t(u,[2,22],{17:17,18:18,14:27,15:[1,28],16:[1,29],19:o,22:c}),t(u,[2,18]),t(u,[2,19]),t(u,[2,20]),t(u,[2,21]),t(u,[2,23]),t(u,[2,24]),t(u,[2,26],{19:[1,30]}),{20:[1,31]},{6:l,7:d,10:32,11:g},{1:[2,7],6:n,12:21,13:i,14:14,15:s,16:r,17:17,18:18,19:o,22:c},t(p,[2,14],{7:y,11:m}),t(f,[2,8]),t(f,[2,9]),t(f,[2,10]),t(u,[2,15]),t(u,[2,16]),t(u,[2,17]),{20:[1,35]},{21:[1,36]},t(p,[2,13],{7:y,11:m}),t(f,[2,11]),t(f,[2,12]),{21:[1,37]},t(u,[2,25]),t(u,[2,27])],defaultActions:{2:[2,1],6:[2,2]},parseError:(0,a.K2)((function(t,e){if(!e.recoverable){var n=new Error(t);throw n.hash=e,n}this.trace(t)}),"parseError"),parse:(0,a.K2)((function(t){var e=this,n=[0],i=[],s=[null],r=[],o=this.table,c="",h=0,l=0,d=0,g=r.slice.call(arguments,1),u=Object.create(this.lexer),p={yy:{}};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(p.yy[y]=this.yy[y]);u.setInput(t,p.yy),p.yy.lexer=u,p.yy.parser=this,void 0===u.yylloc&&(u.yylloc={});var m=u.yylloc;r.push(m);var f=u.options&&u.options.ranges;function b(){var t;return"number"!=typeof(t=i.pop()||u.lex()||1)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,a.K2)((function(t){n.length=n.length-2*t,s.length=s.length-t,r.length=r.length-t}),"popStack"),(0,a.K2)(b,"lex");for(var E,_,S,N,k,D,L,x,I,v={};;){if(S=n[n.length-1],this.defaultActions[S]?N=this.defaultActions[S]:(null==E&&(E=b()),N=o[S]&&o[S][E]),void 0===N||!N.length||!N[0]){var T="";for(D in I=[],o[S])this.terminals_[D]&&D>2&&I.push("'"+this.terminals_[D]+"'");T=u.showPosition?"Parse error on line "+(h+1)+":\n"+u.showPosition()+"\nExpecting "+I.join(", ")+", got '"+(this.terminals_[E]||E)+"'":"Parse error on line "+(h+1)+": Unexpected "+(1==E?"end of input":"'"+(this.terminals_[E]||E)+"'"),this.parseError(T,{text:u.match,token:this.terminals_[E]||E,line:u.yylineno,loc:m,expected:I})}if(N[0]instanceof Array&&N.length>1)throw new Error("Parse Error: multiple actions possible at state: "+S+", token: "+E);switch(N[0]){case 1:n.push(E),s.push(u.yytext),r.push(u.yylloc),n.push(N[1]),E=null,_?(E=_,_=null):(l=u.yyleng,c=u.yytext,h=u.yylineno,m=u.yylloc,d>0&&d--);break;case 2:if(L=this.productions_[N[1]][1],v.$=s[s.length-L],v._$={first_line:r[r.length-(L||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-(L||1)].first_column,last_column:r[r.length-1].last_column},f&&(v._$.range=[r[r.length-(L||1)].range[0],r[r.length-1].range[1]]),void 0!==(k=this.performAction.apply(v,[c,l,h,p.yy,N[1],s,r].concat(g))))return k;L&&(n=n.slice(0,-1*L*2),s=s.slice(0,-1*L),r=r.slice(0,-1*L)),n.push(this.productions_[N[1]][0]),s.push(v.$),r.push(v._$),x=o[n[n.length-2]][n[n.length-1]],n.push(x);break;case 3:return!0}}return!0}),"parse")},E=function(){return{EOF:1,parseError:(0,a.K2)((function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)}),"parseError"),setInput:(0,a.K2)((function(t,e){return this.yy=e||this.yy||{},this._input=t,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:(0,a.K2)((function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t}),"input"),unput:(0,a.K2)((function(t){var e=t.length,n=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=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),n.length-1&&(this.yylineno-=n.length-1);var s=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:n?(n.length===i.length?this.yylloc.first_column:0)+i[i.length-n.length].length-n[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[s[0],s[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this}),"unput"),more:(0,a.K2)((function(){return this._more=!0,this}),"more"),reject:(0,a.K2)((function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):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).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})}),"reject"),less:(0,a.K2)((function(t){this.unput(this.match.slice(t))}),"less"),pastInput:(0,a.K2)((function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")}),"pastInput"),upcomingInput:(0,a.K2)((function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")}),"upcomingInput"),showPosition:(0,a.K2)((function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"}),"showPosition"),test_match:(0,a.K2)((function(t,e){var n,i,s;if(this.options.backtrack_lexer&&(s={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&&(s.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,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(t[0].length),this.matched+=t[0],n=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var r in s)this[r]=s[r];return!1}return!1}),"test_match"),next:(0,a.K2)((function(){if(this.done)return this.EOF;var t,e,n,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var s=this._currentRules(),r=0;re[0].length)){if(e=n,i=r,this.options.backtrack_lexer){if(!1!==(t=this.test_match(n,s[r])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,s[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})}),"next"),lex:(0,a.K2)((function(){var t=this.next();return t||this.lex()}),"lex"),begin:(0,a.K2)((function(t){this.conditionStack.push(t)}),"begin"),popState:(0,a.K2)((function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]}),"popState"),_currentRules:(0,a.K2)((function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules}),"_currentRules"),topState:(0,a.K2)((function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"}),"topState"),pushState:(0,a.K2)((function(t){this.begin(t)}),"pushState"),stateStackSize:(0,a.K2)((function(){return this.conditionStack.length}),"stateStackSize"),options:{"case-insensitive":!0},performAction:(0,a.K2)((function(t,e,n,i){switch(n){case 0:return t.getLogger().trace("Found comment",e.yytext),6;case 1:return 8;case 2:this.begin("CLASS");break;case 3:return this.popState(),16;case 4:case 23:case 26:this.popState();break;case 5:t.getLogger().trace("Begin icon"),this.begin("ICON");break;case 6:return t.getLogger().trace("SPACELINE"),6;case 7:return 7;case 8:return 15;case 9:t.getLogger().trace("end icon"),this.popState();break;case 10:return t.getLogger().trace("Exploding node"),this.begin("NODE"),19;case 11:return t.getLogger().trace("Cloud"),this.begin("NODE"),19;case 12:return t.getLogger().trace("Explosion Bang"),this.begin("NODE"),19;case 13:return t.getLogger().trace("Cloud Bang"),this.begin("NODE"),19;case 14:case 15:case 16:case 17:return this.begin("NODE"),19;case 18:return 13;case 19:return 22;case 20:return 11;case 21:this.begin("NSTR2");break;case 22:return"NODE_DESCR";case 24:t.getLogger().trace("Starting NSTR"),this.begin("NSTR");break;case 25:return t.getLogger().trace("description:",e.yytext),"NODE_DESCR";case 27:return this.popState(),t.getLogger().trace("node end ))"),"NODE_DEND";case 28:return this.popState(),t.getLogger().trace("node end )"),"NODE_DEND";case 29:return this.popState(),t.getLogger().trace("node end ...",e.yytext),"NODE_DEND";case 30:case 33:case 34:return this.popState(),t.getLogger().trace("node end (("),"NODE_DEND";case 31:case 32:return this.popState(),t.getLogger().trace("node end (-"),"NODE_DEND";case 35:case 36:return t.getLogger().trace("Long description:",e.yytext),20}}),"anonymous"),rules:[/^(?:\s*%%.*)/i,/^(?:mindmap\b)/i,/^(?::::)/i,/^(?:.+)/i,/^(?:\n)/i,/^(?:::icon\()/i,/^(?:[\s]+[\n])/i,/^(?:[\n]+)/i,/^(?:[^\)]+)/i,/^(?:\))/i,/^(?:-\))/i,/^(?:\(-)/i,/^(?:\)\))/i,/^(?:\))/i,/^(?:\(\()/i,/^(?:\{\{)/i,/^(?:\()/i,/^(?:\[)/i,/^(?:[\s]+)/i,/^(?:[^\(\[\n\)\{\}]+)/i,/^(?:$)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:[^"]+)/i,/^(?:["])/i,/^(?:[\)]\))/i,/^(?:[\)])/i,/^(?:[\]])/i,/^(?:\}\})/i,/^(?:\(-)/i,/^(?:-\))/i,/^(?:\(\()/i,/^(?:\()/i,/^(?:[^\)\]\(\}]+)/i,/^(?:.+(?!\(\())/i],conditions:{CLASS:{rules:[3,4],inclusive:!1},ICON:{rules:[8,9],inclusive:!1},NSTR2:{rules:[22,23],inclusive:!1},NSTR:{rules:[25,26],inclusive:!1},NODE:{rules:[21,24,27,28,29,30,31,32,33,34,35,36],inclusive:!1},INITIAL:{rules:[0,1,2,5,6,7,10,11,12,13,14,15,16,17,18,19,20],inclusive:!0}}}}();function _(){this.yy={}}return b.lexer=E,(0,a.K2)(_,"Parser"),_.prototype=b,b.Parser=_,new _}();f.parser=f;var b=f,E={DEFAULT:0,NO_BORDER:0,ROUNDED_RECT:1,RECT:2,CIRCLE:3,CLOUD:4,BANG:5,HEXAGON:6},_=class{constructor(){this.nodes=[],this.count=0,this.elements={},this.getLogger=this.getLogger.bind(this),this.nodeType=E,this.clear(),this.getType=this.getType.bind(this),this.getElementById=this.getElementById.bind(this),this.getParent=this.getParent.bind(this),this.getMindmap=this.getMindmap.bind(this),this.addNode=this.addNode.bind(this),this.decorateNode=this.decorateNode.bind(this)}static{(0,a.K2)(this,"MindmapDB")}clear(){this.nodes=[],this.count=0,this.elements={},this.baseLevel=void 0}getParent(t){for(let e=this.nodes.length-1;e>=0;e--)if(this.nodes[e].level0?this.nodes[0]:null}addNode(t,e,n,i){a.Rm.info("addNode",t,e,n,i);let s=!1;0===this.nodes.length?(this.baseLevel=t,t=0,s=!0):void 0!==this.baseLevel&&(t-=this.baseLevel,s=!1);const r=(0,o.D7)();let c=r.mindmap?.padding??o.UI.mindmap.padding;switch(i){case this.nodeType.ROUNDED_RECT:case this.nodeType.RECT:case this.nodeType.HEXAGON:c*=2}const h={id:this.count++,nodeId:(0,o.jZ)(e,r),level:t,descr:(0,o.jZ)(n,r),type:i,children:[],width:r.mindmap?.maxNodeWidth??o.UI.mindmap.maxNodeWidth,padding:c,isRoot:s},l=this.getParent(t);if(l)l.children.push(h),this.nodes.push(h);else{if(!s)throw new Error(`There can be only one root. No parent could be found for ("${h.descr}")`);this.nodes.push(h)}}getType(t,e){switch(a.Rm.debug("In get type",t,e),t){case"[":return this.nodeType.RECT;case"(":return")"===e?this.nodeType.ROUNDED_RECT:this.nodeType.CLOUD;case"((":return this.nodeType.CIRCLE;case")":return this.nodeType.CLOUD;case"))":return this.nodeType.BANG;case"{{":return this.nodeType.HEXAGON;default:return this.nodeType.DEFAULT}}setElementForId(t,e){this.elements[t]=e}getElementById(t){return this.elements[t]}decorateNode(t){if(!t)return;const e=(0,o.D7)(),n=this.nodes[this.nodes.length-1];t.icon&&(n.icon=(0,o.jZ)(t.icon,e)),t.class&&(n.class=(0,o.jZ)(t.class,e))}type2Str(t){switch(t){case this.nodeType.DEFAULT:return"no-border";case this.nodeType.RECT:return"rect";case this.nodeType.ROUNDED_RECT:return"rounded-rect";case this.nodeType.CIRCLE:return"circle";case this.nodeType.CLOUD:return"cloud";case this.nodeType.BANG:return"bang";case this.nodeType.HEXAGON:return"hexgon";default:return"no-border"}}assignSections(t,e){if(0===t.level?t.section=void 0:t.section=e,t.children)for(const[n,i]of t.children.entries()){const s=0===t.level?n:e;this.assignSections(i,s)}}flattenNodes(t,e){const n=["mindmap-node"];!0===t.isRoot?n.push("section-root","section--1"):void 0!==t.section&&n.push(`section-${t.section}`),t.class&&n.push(t.class);const i=n.join(" "),s=(0,a.K2)((t=>{switch(t){case E.CIRCLE:return"mindmapCircle";case E.RECT:return"rect";case E.ROUNDED_RECT:return"rounded";case E.CLOUD:return"cloud";case E.BANG:return"bang";case E.HEXAGON:return"hexagon";case E.DEFAULT:return"defaultMindmapNode";default:return"rect"}}),"getShapeFromType"),r={id:t.id.toString(),domId:"node_"+t.id.toString(),label:t.descr,isGroup:!1,shape:s(t.type),width:t.width,height:t.height??0,padding:t.padding,cssClasses:i,cssStyles:[],look:"default",icon:t.icon,x:t.x,y:t.y,level:t.level,nodeId:t.nodeId,type:t.type,section:t.section};if(e.push(r),t.children)for(const o of t.children)this.flattenNodes(o,e)}generateEdges(t,e){if(t.children)for(const n of t.children){let i="edge";void 0!==n.section&&(i+=` section-edge-${n.section}`);i+=` edge-depth-${t.level+1}`;const s={id:`edge_${t.id}_${n.id}`,start:t.id.toString(),end:n.id.toString(),type:"normal",curve:"basis",thickness:"normal",look:"default",classes:i,depth:t.level,section:n.section};e.push(s),this.generateEdges(n,e)}}getData(){const t=this.getMindmap(),e=(0,o.D7)(),n=e;if(void 0!==(0,o.TM)().layout||(n.layout="cose-bilkent"),!t)return{nodes:[],edges:[],config:n};a.Rm.debug("getData: mindmapRoot",t,e),this.assignSections(t);const i=[],s=[];this.flattenNodes(t,i),this.generateEdges(t,s),a.Rm.debug(`getData: processed ${i.length} nodes and ${s.length} edges`);const r=new Map;for(const o of i)r.set(o.id,{shape:o.shape,width:o.width,height:o.height,padding:o.padding});return{nodes:i,edges:s,config:n,rootNode:t,markers:["point"],direction:"TB",nodeSpacing:50,rankSpacing:50,shapes:Object.fromEntries(r),type:"mindmap",diagramId:"mindmap-"+u()}}getLogger(){return a.Rm}},S={draw:(0,a.K2)((async(t,e,n,c)=>{a.Rm.debug("Rendering mindmap diagram\n"+t);const h=c.db,l=h.getData(),d=(0,i.A)(e,l.config.securityLevel);l.type=c.type,l.layoutAlgorithm=(0,r.q7)(l.config.layout,{fallback:"cose-bilkent"}),l.diagramId=e;h.getMindmap()&&(l.nodes.forEach((t=>{"rounded"===t.shape?(t.radius=15,t.taper=15,t.stroke="none",t.width=0,t.padding=15):"circle"===t.shape?t.padding=10:"rect"===t.shape&&(t.width=0,t.padding=10)})),await(0,r.XX)(l,d),(0,s.P)(d,l.config.mindmap?.padding??o.UI.mindmap.padding,"mindmapDiagram",l.config.mindmap?.useMaxWidth??o.UI.mindmap.useMaxWidth))}),"draw")},N=(0,a.K2)((t=>{let e="";for(let n=0;n`\n .edge {\n stroke-width: 3;\n }\n ${N(t)}\n .section-root rect, .section-root path, .section-root circle, .section-root polygon {\n fill: ${t.git0};\n }\n .section-root text {\n fill: ${t.gitBranchLabel0};\n }\n .section-root span {\n color: ${t.gitBranchLabel0};\n }\n .section-2 span {\n color: ${t.gitBranchLabel0};\n }\n .icon-container {\n height:100%;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n .edge {\n fill: none;\n }\n .mindmap-node-label {\n dy: 1em;\n alignment-baseline: middle;\n text-anchor: middle;\n dominant-baseline: middle;\n text-align: center;\n }\n`),"getStyles")}}}]); \ No newline at end of file diff --git a/assets/js/8573c61d.fdacf697.js b/assets/js/8573c61d.fdacf697.js new file mode 100644 index 00000000..b7501be3 --- /dev/null +++ b/assets/js/8573c61d.fdacf697.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7856],{4430:(e,i,t)=>{t.r(i),t.d(i,{assets:()=>h,contentTitle:()=>a,default:()=>g,frontMatter:()=>l,metadata:()=>n,toc:()=>c});const n=JSON.parse('{"id":"Workspace/git","title":"Git","description":"Getting Started with Git in Phoenix Code","source":"@site/docs/05-Workspace/06-git.md","sourceDirName":"05-Workspace","slug":"/Features/git","permalink":"/docs/Features/git","draft":false,"unlisted":false,"editUrl":"https://github.com/phcode-dev/docs/blob/main/docs/05-Workspace/06-git.md","tags":[],"version":"current","sidebarPosition":6,"frontMatter":{"title":"Git","slug":"/Features/git"},"sidebar":"tutorialSidebar","previous":{"title":"Terminal","permalink":"/docs/Features/terminal"},"next":{"title":"Extensions","permalink":"/docs/extensions"}}');var s=t(74848),o=t(28453),r=(t(96540),t(56399));const l={title:"Git",slug:"/Features/git"},a=void 0,h={},c=[{value:"Getting Started with Git in Phoenix Code",id:"getting-started-with-git-in-phoenix-code",level:2},{value:"Cloning a Repository",id:"cloning-a-repository",level:3},{value:"Alternative Cloning Method",id:"alternative-cloning-method",level:3},{value:"More Options",id:"more-options",level:4},{value:"Initializing a Git repository",id:"initializing-a-git-repository",level:3},{value:"File status",id:"file-status",level:2},{value:"Discard changes",id:"discard-changes",level:3},{value:"Navigate Git Changes",id:"navigate-git-changes",level:2},{value:"Refresh Panel",id:"refresh-panel",level:2},{value:"Commit",id:"commit",level:2},{value:"Push",id:"push",level:2},{value:"Target Branch",id:"target-branch",level:3},{value:"Push Behavior",id:"push-behavior",level:3},{value:"More Options",id:"more-options-1",level:3},{value:"Fetch",id:"fetch",level:2},{value:"Pull",id:"pull",level:2},{value:"Target Branch",id:"target-branch-1",level:3},{value:"Pull Behavior",id:"pull-behavior",level:3},{value:"Log (History)",id:"log-history",level:2},{value:"Show History",id:"show-history",level:3},{value:"Show File History",id:"show-file-history",level:3},{value:"History Viewer",id:"history-viewer",level:3},{value:"Branch",id:"branch",level:2},{value:"Creating a new branch",id:"creating-a-new-branch",level:3},{value:"Merging a branch",id:"merging-a-branch",level:3},{value:"Deleting a branch",id:"deleting-a-branch",level:3},{value:"Remote",id:"remote",level:2},{value:"Adding a New Remote",id:"adding-a-new-remote",level:3},{value:"Deleting a Remote",id:"deleting-a-remote",level:3},{value:"Switching Between Remotes",id:"switching-between-remotes",level:3},{value:"Git Menu",id:"git-menu",level:2},{value:"General options",id:"general-options",level:3},{value:"Navigation options",id:"navigation-options",level:3},{value:"Version history",id:"version-history",level:3},{value:"Committing Changes",id:"committing-changes",level:3},{value:"Remote Operations",id:"remote-operations",level:3},{value:"Configuration",id:"configuration",level:3},{value:"Settings",id:"settings",level:3},{value:"Git Settings",id:"git-settings",level:2},{value:"General Settings",id:"general-settings",level:3},{value:"System Configuration",id:"system-configuration",level:3},{value:"FAQ",id:"faq",level:2},{value:"Q. Why is the Git icon not displayed in the Phoenix toolbar?",id:"q-why-is-the-git-icon-not-displayed-in-the-phoenix-toolbar",level:4},{value:"Q. Why do I get an error when trying to push changes to remote?",id:"q-why-do-i-get-an-error-when-trying-to-push-changes-to-remote",level:4}];function d(e){const i={a:"a",blockquote:"blockquote",code:"code",em:"em",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(i.h2,{id:"getting-started-with-git-in-phoenix-code",children:"Getting Started with Git in Phoenix Code"}),"\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.strong,{children:"Phoenix Code"})," includes built-in Git support, allowing you to manage version control directly within the editor. Git can be accessed from the toolbar icon or the File menu in the menu bar."]}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.img,{alt:"Git Overview",src:t(21441).A+"",title:"Git Overview",width:"1919",height:"1115"})}),"\n",(0,s.jsxs)(i.blockquote,{children:["\n",(0,s.jsxs)(i.p,{children:["To use Git features inside Phoenix Code, ensure Git is installed on your computer. ",(0,s.jsx)(i.a,{href:"https://git-scm.com/downloads",children:"Download Git"})]}),"\n"]}),"\n",(0,s.jsx)(i.h3,{id:"cloning-a-repository",children:"Cloning a Repository"}),"\n",(0,s.jsxs)(i.p,{children:["To clone an existing repository in ",(0,s.jsx)(i.strong,{children:"Phoenix Code"}),", follow these steps:"]}),"\n",(0,s.jsxs)(i.ol,{children:["\n",(0,s.jsxs)(i.li,{children:["Click on the ",(0,s.jsx)(i.code,{children:"Start Project"})," button."]}),"\n"]}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.img,{alt:"Start Project",src:t(92221).A+"",title:"Start Project",width:"1919",height:"1114"})}),"\n",(0,s.jsxs)(i.blockquote,{children:["\n",(0,s.jsxs)(i.p,{children:["This will open the Quick Start project dialog box, which offers various options. ",(0,s.jsx)(i.a,{href:"../quick-start-project",children:"Read more"})," about Quick Start project here."]}),"\n"]}),"\n",(0,s.jsxs)(i.ol,{start:"2",children:["\n",(0,s.jsxs)(i.li,{children:["Select ",(0,s.jsx)(i.code,{children:"Get from Git"}),"."]}),"\n"]}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.img,{alt:"Get from Git",src:t(17427).A+"",title:"Get from Git",width:"958",height:"725"})}),"\n",(0,s.jsxs)(i.ol,{start:"3",children:["\n",(0,s.jsxs)(i.li,{children:["Enter the ",(0,s.jsx)(i.em,{children:"Git Clone URL"})," and choose a ",(0,s.jsx)(i.em,{children:"location"})," to save the project."]}),"\n"]}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.img,{alt:"Get from Git dialog",src:t(29370).A+"",title:"Get from Git dialog",width:"942",height:"904"})}),"\n",(0,s.jsxs)(i.ol,{start:"4",children:["\n",(0,s.jsxs)(i.li,{children:["Click ",(0,s.jsx)(i.code,{children:"Create Project"}),". The repository will be cloned to the specified location."]}),"\n"]}),"\n",(0,s.jsx)(i.h3,{id:"alternative-cloning-method",children:"Alternative Cloning Method"}),"\n",(0,s.jsx)(i.p,{children:"You can also clone a repository through the menu:"}),"\n",(0,s.jsxs)(i.ol,{children:["\n",(0,s.jsxs)(i.li,{children:["Go to ",(0,s.jsx)(i.code,{children:"File > Git > Clone"}),"."]}),"\n",(0,s.jsx)(i.li,{children:"Enter the repository URL in the dialog that appears."}),"\n"]}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.img,{alt:"Git Clone",src:t(32028).A+"",title:"Git Clone",width:"960",height:"404"})}),"\n",(0,s.jsx)(i.h4,{id:"more-options",children:"More Options"}),"\n",(0,s.jsxs)(i.p,{children:["In the Clone Repository dialog, clicking on ",(0,s.jsx)(i.code,{children:"More Options"})," expands additional settings for authentication."]}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.img,{alt:"Git Clone More options",src:t(77278).A+"",title:"Git Clone more options",width:"951",height:"782"})}),"\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.strong,{children:"Credentials"}),": This section allows you to enter your ",(0,s.jsx)(i.em,{children:"username"})," and ",(0,s.jsx)(i.em,{children:"password"})," for repositories that require authentication. Typically, if your credentials are already stored in a credential manager (like SSH keys or a Git credential manager), you don't need to fill in these fields."]}),"\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.strong,{children:"Save Credentials to Remote URL"}),": If enabled, the provided credentials (username and password) will be stored in plain text within the remote URL."]}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.em,{children:"If cloning fails due to authentication issues (e.g., timeout errors), you might need to manually provide your credentials."})}),"\n",(0,s.jsx)(i.h3,{id:"initializing-a-git-repository",children:"Initializing a Git repository"}),"\n",(0,s.jsxs)(i.p,{children:["To initialize a Git repository in a project that doesn\u2019t already have one, click on ",(0,s.jsx)(i.code,{children:"File > Git > Init"}),". This will set up Git for your current project. After initialization, the Git icon will appear in the toolbar, indicating that version control is active."]}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.img,{alt:"Git Init",src:t(46390).A+"",title:"Git Init",width:"959",height:"797"})}),"\n",(0,s.jsxs)(i.blockquote,{children:["\n",(0,s.jsxs)(i.p,{children:["Note: ",(0,s.jsx)(i.em,{children:"For projects without an existing Git repository, the Git icon won\u2019t appear by default. To initialize or connect a Git repository, use the File menu to set up Git for your project."})]}),"\n"]}),"\n",(0,s.jsx)(i.p,{children:"Once Git is set up, the Git Panel provides a user-friendly interface to manage version control. You can track changes, commit updates, interact with remote repositories, and more\u2014all within the editor."}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.img,{alt:"Git Panel",src:t(85696).A+"",title:"Git Panel",width:"1919",height:"1119"})}),"\n",(0,s.jsx)(i.h2,{id:"file-status",children:"File status"}),"\n",(0,s.jsxs)(i.p,{children:["All files with changes are displayed in the Git panel along with their status, such as ",(0,s.jsx)(i.em,{children:"Modified"}),", ",(0,s.jsx)(i.em,{children:"Untracked"}),", and ",(0,s.jsx)(i.em,{children:"Deleted"}),". For modified files, a Git diff button is available."]}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.img,{alt:"Git diff Icon",src:t(25983).A+"",title:"Git diff icon",width:"623",height:"256"})}),"\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.em,{children:"Git diff is used to display the changes made to a file \u2014 Green lines indicate added content, while red lines show removed content."}),"\nClicking on the Git diff icon opens up the Git diff dialog page."]}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.img,{alt:"Git diff Dialog",src:t(70548).A+"",title:"Git diff dialog",width:"1535",height:"881"})}),"\n",(0,s.jsx)(i.h3,{id:"discard-changes",children:"Discard changes"}),"\n",(0,s.jsxs)(i.p,{children:["For ",(0,s.jsx)(i.em,{children:"Modified"})," and ",(0,s.jsx)(i.em,{children:"Deleted"})," file statuses, a ",(0,s.jsx)(i.code,{children:"Discard Changes..."})," button is shown. Clicking it will reset the changes for ",(0,s.jsx)(i.em,{children:"Modified"})," files and restore ",(0,s.jsx)(i.em,{children:"Deleted"})," files."]}),"\n",(0,s.jsxs)(i.p,{children:["For ",(0,s.jsx)(i.em,{children:"Untracked"})," files, a ",(0,s.jsx)(i.code,{children:"Delete File..."})," button is available. Clicking it will delete the file."]}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.img,{alt:"Discard changes or Delete file",src:t(93755).A+"",title:"Discard changes or Delete file",width:"1513",height:"319"})}),"\n",(0,s.jsxs)(i.p,{children:["You can also discard all changes made to all files at once by clicking the three dots at the top-right and selecting the ",(0,s.jsx)(i.code,{children:"Discard all changes since the last commit..."})," option. This will remove all modifications made since your last commit."]}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.img,{alt:"Discard all changes",src:t(90477).A+"",title:"Discard all the changes made since last commit",width:"1554",height:"325"})}),"\n",(0,s.jsx)(i.h2,{id:"navigate-git-changes",children:"Navigate Git Changes"}),"\n",(0,s.jsx)(i.p,{children:"When viewing a file with multiple Git changes, you can use the Next Change and Previous Change buttons to quickly move between modifications."}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:["\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.strong,{children:"Next Change"}),": Moves the cursor to the next change in the file.\n",(0,s.jsx)(i.img,{alt:"Move to next change",src:t(41041).A+"",title:"Move to next git change",width:"1872",height:"180"})]}),"\n"]}),"\n",(0,s.jsxs)(i.li,{children:["\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.strong,{children:"Previous Change"}),": Moves the cursor to the previous change in the file.\n",(0,s.jsx)(i.img,{alt:"Move to previous change",src:t(2329).A+"",title:"Move to previous git change",width:"1871",height:"184"})]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.strong,{children:"Visual Reference"})}),"\n",(0,s.jsx)(r.A,{src:"https://docs-images.phcode.dev/videos/git-videos/navigation-git-changes.mp4"}),"\n",(0,s.jsx)(i.h2,{id:"refresh-panel",children:"Refresh Panel"}),"\n",(0,s.jsxs)(i.p,{children:["The ",(0,s.jsx)(i.strong,{children:"Refresh Panel"})," button ensures that the displayed repository information is up to date. While changes are usually updated automatically, this button helps in cases where the interface lags behind, ensuring all modifications are reflected correctly."]}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.img,{alt:"Refresh Panel",src:t(40649).A+"",title:"Refresh panel",width:"1872",height:"167"})}),"\n",(0,s.jsx)(i.h2,{id:"commit",children:"Commit"}),"\n",(0,s.jsx)(i.p,{children:"To stage/unstage the files, click the checkbox icon at the top-left of the Git panel. This will affect all the files in the working tree."}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.img,{alt:"Stage all files",src:t(71321).A+"",title:"Stage all files",width:"1538",height:"552"})}),"\n",(0,s.jsx)(i.p,{children:"You can also stage/unstage individual files by selecting or deselecting the checkbox next to each file."}),"\n",(0,s.jsxs)(i.p,{children:["Once you get all your required files to the staging area, click on the ",(0,s.jsx)(i.code,{children:"Commit"})," button."]}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.img,{alt:"Commit the files",src:t(71627).A+"",title:"Commit the files",width:"1520",height:"315"})}),"\n",(0,s.jsx)(i.p,{children:"This will open up Git commit dialog box, which will display all the changes made to the files that are to be committed.\nYou can enter your commit message in the input box provided."}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.img,{alt:"Git Commit dialog",src:t(77701).A+"",title:"Git commit dialog box",width:"1521",height:"1013"})}),"\n",(0,s.jsxs)(i.blockquote,{children:["\n",(0,s.jsx)(i.p,{children:"The Commit input box also displays the number of characters in the commit message."}),"\n"]}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsxs)(i.em,{children:["If your commit message is longer, you can use the ",(0,s.jsx)(i.code,{children:"Extended"})," button at the top-right of the dialog. This expands the input area, making it easier to write detailed commit messages."]})}),"\n",(0,s.jsx)(i.p,{children:"The commit dialog box also provides options to :-"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"Amend Last Commit"}),": Selecting this option allows you to modify the most recent commit instead of creating a new one."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"Skip Pre-Commit Checks"}),": Enabling this option bypasses any pre-commit hooks or validation steps."]}),"\n"]}),"\n",(0,s.jsxs)(i.blockquote,{children:["\n",(0,s.jsx)(i.p,{children:"The Git commit dialog box also displays code inspection problems, if there are any:"}),"\n"]}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.img,{alt:"Commit Code inspection errors",src:t(17719).A+"",title:"Commit code inspection errors",width:"1524",height:"873"})}),"\n",(0,s.jsx)(i.h2,{id:"push",children:"Push"}),"\n",(0,s.jsxs)(i.p,{children:["To upload your local commits to the remote repository, use the ",(0,s.jsx)(i.code,{children:"Push"})," option in the Git panel. This ensures your changes are synchronized with the remote repository."]}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.img,{alt:"Git Push",src:t(33864).A+"",title:"Git Push",width:"1522",height:"176"})}),"\n",(0,s.jsxs)(i.p,{children:["When you initiate a push, the ",(0,s.jsx)(i.strong,{children:"Push to Remote"})," dialog appears, allowing you to configure push settings."]}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.img,{alt:"Git Push dialog",src:t(68340).A+"",title:"Git push dialog",width:"955",height:"759"})}),"\n",(0,s.jsx)(i.h3,{id:"target-branch",children:"Target Branch"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"Push to current tracking branch"}),": Pushes changes to the branch currently linked to your local branch."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"Push to another branch"}),": Allows pushing to a different branch on the remote."]}),"\n"]}),"\n",(0,s.jsx)(i.h3,{id:"push-behavior",children:"Push Behavior"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"Default push"}),": Pushes your local changes to the remote branch."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"Forced push"}),": Overwrites the remote branch with your local changes."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"Delete remote branch"}),": Permanently removes the selected branch from the remote repository."]}),"\n"]}),"\n",(0,s.jsx)(i.h3,{id:"more-options-1",children:"More Options"}),"\n",(0,s.jsx)(i.p,{children:"Clicking More Options expands additional push settings, allowing for more control over the push operation."}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.img,{alt:"Git push more options",src:t(91777).A+"",title:"Git push more options",width:"952",height:"762"})}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:["\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.strong,{children:"Send tags"}),": If enabled, this option ensures that Git tags are pushed along with commits. If you have created tags locally and want them reflected in the remote repository, enable this option."]}),"\n"]}),"\n",(0,s.jsxs)(i.li,{children:["\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.strong,{children:"Skip pre-push checks (--no-verify)"}),": Enabling this option bypasses any pre-push hooks or validation steps."]}),"\n"]}),"\n",(0,s.jsxs)(i.li,{children:["\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.strong,{children:"Credentials"}),": This section allows you to enter your ",(0,s.jsx)(i.em,{children:"username"})," and ",(0,s.jsx)(i.em,{children:"password"})," for repositories that require authentication. Typically, if your credentials are already stored in a credential manager (like SSH keys or a Git credential manager), you don't need to fill in these fields."]}),"\n"]}),"\n",(0,s.jsxs)(i.li,{children:["\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.strong,{children:"Save Credentials to Remote URL"}),": If enabled, the provided credentials (username and password) will be stored in plain text within the remote URL."]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(i.h2,{id:"fetch",children:"Fetch"}),"\n",(0,s.jsxs)(i.p,{children:["To download the latest changes from the remote repository without modifying your local repository, use the ",(0,s.jsx)(i.code,{children:"Fetch"})," option in the Git panel. This will pull the latest changes from the remote repository but does not update your working directory or merge the changes into your local branches."]}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.img,{alt:"Git fetch",src:t(34982).A+"",title:"Git fetch",width:"1632",height:"165"})}),"\n",(0,s.jsx)(i.h2,{id:"pull",children:"Pull"}),"\n",(0,s.jsxs)(i.p,{children:["To download the latest changes from the remote repository to your local machine, use the ",(0,s.jsx)(i.code,{children:"Pull"})," option in the Git panel. This ensures your local repository is up to date with the latest changes from the remote repository."]}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.img,{alt:"Git pull",src:t(71669).A+"",title:"Git pull",width:"1523",height:"183"})}),"\n",(0,s.jsxs)(i.p,{children:["When you initiate a pull, the ",(0,s.jsx)(i.strong,{children:"Pull from Remote"})," dialog appears, allowing you to configure pull settings."]}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.img,{alt:"Git pull dialog",src:t(60552).A+"",title:"Git pull dialog",width:"954",height:"756"})}),"\n",(0,s.jsx)(i.h3,{id:"target-branch-1",children:"Target Branch"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"Pull from current tracking branch"}),": Pulls the latest changes from the currently tracked remote branch."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"Pull from another branch"}),": Allows you to pull changes from a different remote branch."]}),"\n"]}),"\n",(0,s.jsx)(i.h3,{id:"pull-behavior",children:"Pull Behavior"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"Default merge"}),": Merges fetched changes into your current branch."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"Avoid manual merging"}),": Tries to automatically resolve conflicts without manual intervention."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"Merge without commit"}),": Merges changes but does not create an automatic commit."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"Use rebase"}),": Applies incoming changes on top of your local commits for a cleaner history."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"Use soft reset"}),": Resets to the latest remote commit without discarding local changes."]}),"\n"]}),"\n",(0,s.jsx)(i.h2,{id:"log-history",children:"Log (History)"}),"\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.strong,{children:"Phoenix Code"})," provides two options to view Git history:"]}),"\n",(0,s.jsx)(i.h3,{id:"show-history",children:"Show History"}),"\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.img,{alt:"Show History",src:t(63509).A+"",title:"Show History",width:"1522",height:"278"}),"\nClicking the ",(0,s.jsx)(i.strong,{children:"Show History"})," button displays a complete list of commits made to the entire repository to help you track the changes made to the project over time."]}),"\n",(0,s.jsx)(i.h3,{id:"show-file-history",children:"Show File History"}),"\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.img,{alt:"Show File History",src:t(63268).A+"",title:"Show File History",width:"1524",height:"227"}),"\nClicking the ",(0,s.jsx)(i.strong,{children:"Show File History"})," button displays the commit history of a specific file, showing all modifications since it was added to the repository."]}),"\n",(0,s.jsx)(i.h3,{id:"history-viewer",children:"History Viewer"}),"\n",(0,s.jsxs)(i.p,{children:["When selecting a specific commit from the history panel, the ",(0,s.jsx)(i.strong,{children:"History Viewer"})," appears, displaying all changes made in that commit."]}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.img,{alt:"History Viewer",src:t(9778).A+"",title:"History viewer",width:"1473",height:"1100"})}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsx)(i.li,{children:"Each modified file is collapsed by default."}),"\n",(0,s.jsx)(i.li,{children:"Clicking on a file expands it to show the exact changes."}),"\n"]}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.img,{alt:"History Viewer expanded",src:t(62246).A+"",title:"History viewer expanded",width:"1476",height:"1108"})}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsx)(i.li,{children:"You can expand or collapse all files at once using the Expand All/Collapse All button."}),"\n"]}),"\n",(0,s.jsx)(i.p,{children:"This lets you inspect changes directly within the editor."}),"\n",(0,s.jsx)(i.h2,{id:"branch",children:"Branch"}),"\n",(0,s.jsx)(i.h3,{id:"creating-a-new-branch",children:"Creating a new branch"}),"\n",(0,s.jsxs)(i.p,{children:["To create a new branch in Git, click on the ",(0,s.jsx)(i.code,{children:"main > Create new branch..."})," button in the sidebar. The name shown (e.g., main) represents your current branch, so if you're on a different branch, it may display another name."]}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.img,{alt:"Git branch",src:t(81120).A+"",title:"Git branch",width:"1919",height:"471"})}),"\n",(0,s.jsx)(i.p,{children:"This will open a dialog box where you can:"}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.img,{alt:"Git new branch dialog",src:t(89506).A+"",title:"Git new branch dialog box",width:"947",height:"410"})}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsx)(i.li,{children:"Select the branch from which the new branch will originate."}),"\n",(0,s.jsx)(i.li,{children:"Enter a name for your new branch."}),"\n"]}),"\n",(0,s.jsx)(i.p,{children:"Once created, it automatically switches to the new branch and you can start working independently."}),"\n",(0,s.jsx)(i.h3,{id:"merging-a-branch",children:"Merging a branch"}),"\n",(0,s.jsx)(i.p,{children:"To merge a branch into the current branch, click on the current branch name (e.g., main) in the sidebar. This will open a popup displaying all available branches.\nTo the right of each branch name, you'll see a merge icon."}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.img,{alt:"Merge branch",src:t(65272).A+"",title:"Merge branch",width:"630",height:"323"})}),"\n",(0,s.jsx)(i.p,{children:"Click on this icon for the branch you want to merge."}),"\n",(0,s.jsx)(i.p,{children:"This will open a merge dialog box with the following options:"}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.img,{alt:"Merge branch dialog",src:t(14639).A+"",title:"Merge branch dialog",width:"942",height:"468"})}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"Target branch"}),": Displays the branch where the selected branch will be merged."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"Merge message"}),": Provides a default message for the merge, which you can edit."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"Use REBASE"}),": If checked, it rebases the commits instead of merging them."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"Create a merge commit even when the merge resolves as a fast-forward"}),": If checked, it forces a merge commit even if a fast-forward merge is possible."]}),"\n"]}),"\n",(0,s.jsx)(i.h3,{id:"deleting-a-branch",children:"Deleting a branch"}),"\n",(0,s.jsx)(i.p,{children:"To delete a local branch in Git, click on the current branch name (e.g., main) in the sidebar. This will open a dropdown menu displaying the list of all available branches."}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.img,{alt:"Delete branch",src:t(59943).A+"",title:"Delete branch",width:"630",height:"323"})}),"\n",(0,s.jsx)(i.p,{children:"Next, hover over the branch you want to delete and click the cross 'x' icon next to it. This will delete the selected branch."}),"\n",(0,s.jsx)(i.h2,{id:"remote",children:"Remote"}),"\n",(0,s.jsx)(i.h3,{id:"adding-a-new-remote",children:"Adding a New Remote"}),"\n",(0,s.jsxs)(i.p,{children:["To add a new remote to your Git repository, open the Git panel and click on ",(0,s.jsx)(i.code,{children:"origin > Create new remote..."}),"."]}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.img,{alt:"Git remote",src:t(82198).A+"",title:"Git remote",width:"1625",height:"405"})}),"\n",(0,s.jsx)(i.p,{children:"The name shown (e.g., origin) represents your current remote, so if you're on a different remote, it may display another name."}),"\n",(0,s.jsx)(i.p,{children:"This will open a dialog box, prompting you to enter the name of the new remote."}),"\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.img,{alt:"Git remote name",src:t(7452).A+"",title:"Git remote name",width:"953",height:"319"}),"\nAfter that a new dialog box will appear, prompting you to enter the URL of the new remote.\nEnter the URL and click ",(0,s.jsx)(i.code,{children:"OK"}),"."]}),"\n",(0,s.jsx)(i.p,{children:"This adds a new remote."}),"\n",(0,s.jsx)(i.h3,{id:"deleting-a-remote",children:"Deleting a Remote"}),"\n",(0,s.jsx)(i.p,{children:"To delete a remote from your Git repository, click on the current remote name in the Git panel. This will open a dropdown menu displaying the list of all remotes."}),"\n",(0,s.jsx)(i.p,{children:"Next, hover over the remote you want to delete and click the cross 'x' icon next to it. This will remove the selected remote from your repository."}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.img,{alt:"Git delete remote",src:t(66774).A+"",title:"Git delete remote",width:"1627",height:"347"})}),"\n",(0,s.jsxs)(i.blockquote,{children:["\n",(0,s.jsx)(i.p,{children:"Note: Deleting the 'origin' remote is not possible."}),"\n"]}),"\n",(0,s.jsx)(i.h3,{id:"switching-between-remotes",children:"Switching Between Remotes"}),"\n",(0,s.jsx)(i.p,{children:"To switch between remotes in your Git repository, click on the current remote name in the Git panel. A dropdown menu will appear showing all available remotes."}),"\n",(0,s.jsx)(i.p,{children:"Select the remote you want to switch to, and Git will use that remote for operations like fetch, pull, or push."}),"\n",(0,s.jsx)(i.h2,{id:"git-menu",children:"Git Menu"}),"\n",(0,s.jsxs)(i.p,{children:["The Git Menu provides various Git-related actions to manage version control within the application. To access this menu, navigate to ",(0,s.jsx)(i.code,{children:"File > Git"}),"."]}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.img,{alt:"Git Menu",src:t(80910).A+"",title:"Git menu",width:"852",height:"719"})}),"\n",(0,s.jsx)(i.p,{children:"Alternatively, you can also access the Git menu by clicking the three dots in the top right corner of the Git panel."}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.img,{alt:"Git Menu from panel",src:t(50749).A+"",title:"Git menu from panel",width:"1919",height:"529"})}),"\n",(0,s.jsx)(i.p,{children:"Here are the available options in Git panel:"}),"\n",(0,s.jsx)(i.h3,{id:"general-options",children:"General options"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"Show Git Panel"}),": Toggles the visibility of the Git panel in the interface."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"Refresh Git"}),": Updates the Git panel to reflect the latest changes in the repository.\n",(0,s.jsx)(i.a,{href:"#refresh-panel",children:"Read more"})," about refresh git."]}),"\n"]}),"\n",(0,s.jsx)(i.h3,{id:"navigation-options",children:"Navigation options"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"Go to Next Git Change"}),": Moves the cursor to the next Git-tracked change in the file."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"Go to Previous Git Change"}),": Moves the cursor to the previous Git-tracked change in the file.\n",(0,s.jsx)(i.a,{href:"#navigate-git-changes",children:"Read more"})," about navigation options."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"Close Unmodified Files"}),": Closes all open files that have no uncommitted changes."]}),"\n"]}),"\n",(0,s.jsx)(i.h3,{id:"version-history",children:"Version history"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"View Authors of Selection..."}),": Displays the Git history of a selected portion of code, showing who made changes and when.\n",(0,s.jsx)(i.img,{alt:"View Authors",src:t(51217).A+"",title:"View authors",width:"949",height:"278"})]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"View Authors of File..."}),": Shows the commit history and contributors for the entire file."]}),"\n"]}),"\n",(0,s.jsx)(i.h3,{id:"committing-changes",children:"Committing Changes"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"Commit Current File..."}),": Opens a dialog to commit changes in the currently active file."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"Commit All Files..."}),": Opens a dialog to commit all staged changes in the repository."]}),"\n"]}),"\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.a,{href:"#commit",children:"Read more"})," about committing changes."]}),"\n",(0,s.jsx)(i.h3,{id:"remote-operations",children:"Remote Operations"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"Fetch from Remote"}),": Retrieves the latest changes from the remote repository without merging them into the local branch. ",(0,s.jsx)(i.a,{href:"#fetch",children:"Read more"})," about fetching changes from remote."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"Pull from Remote..."}),": Fetches and integrates changes from the remote repository into the current branch. ",(0,s.jsx)(i.a,{href:"#pull",children:"Read more"})," about pulling changes from remote."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"Push to Remote..."}),": Pushes local commits to the remote repository (shows the number of commits ahead of the remote branch). ",(0,s.jsx)(i.a,{href:"#push",children:"Read more"})," about pushing changes to remote."]}),"\n"]}),"\n",(0,s.jsx)(i.h3,{id:"configuration",children:"Configuration"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"Use Gerrit-compatible Push Ref"}),": Enables push references compatible with Gerrit, a web-based code review system. ",(0,s.jsx)(i.a,{href:"https://www.gerritcodereview.com/",children:"Read more"})," about Gerrit."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"Change Git Username..."}),": Allows updating the Git username for commits."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"Change Git Email..."}),": Allows updating the Git email address for commits."]}),"\n"]}),"\n",(0,s.jsx)(i.h3,{id:"settings",children:"Settings"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"Git Settings..."}),": Opens the Git Settings dialog to configure Git behavior within the application. ",(0,s.jsx)(i.a,{href:"#git-settings",children:"Read more"})," about Git settings."]}),"\n"]}),"\n",(0,s.jsx)(i.h2,{id:"git-settings",children:"Git Settings"}),"\n",(0,s.jsxs)(i.p,{children:["The Git Settings dialog provides options to configure Git behavior within the application. To open the Git Settings dialog, go to ",(0,s.jsx)(i.code,{children:"File > Git > Git Settings..."}),"."]}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.img,{alt:"Git Settings from File menu",src:t(68275).A+"",title:"Git settings from file menu",width:"889",height:"730"})}),"\n",(0,s.jsxs)(i.p,{children:["Alternatively, you can access it from the Git panel by clicking the three dots in the top right corner and selecting ",(0,s.jsx)(i.code,{children:"Git Settings..."}),"."]}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.img,{alt:"Git Settings from Panel",src:t(12439).A+"",title:"Git settings from panel",width:"1919",height:"563"})}),"\n",(0,s.jsx)(i.h3,{id:"general-settings",children:"General Settings"}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.img,{alt:"Git Settings Dialog",src:t(7358).A+"",title:"Git Settings Dialog",width:"951",height:"864"})}),"\n",(0,s.jsxs)(i.blockquote,{children:["\n",(0,s.jsx)(i.p,{children:"Settings with an info icon require an application restart to take effect."}),"\n"]}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"Enable Git"}),": Turns Git integration on or off."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"Strip trailing whitespace from commits:"})," Automatically removes extra spaces at the end of lines when committing changes."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"Add endline at the end of file"}),": Ensures a newline character is added at the end of each file."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"Remove BOM from files"}),": Strips Byte Order Mark (BOM) from files to maintain consistency."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"Normalize line endings (to \\n)"}),": Converts different line endings (such as Windows \\r\\n) to Unix-style \\n."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"Use Git gutter marks"}),": Displays change indicators in the gutter (line numbers area) of the editor."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"Mark modified files in file tree"}),": Highlights modified files in the file explorer for easy tracking."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"Show verbose output in diffs"}),": Provides detailed output when viewing differences between file versions."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"Use difftool for diffs"}),": Enables the use of an external diff tool for comparing changes."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"Clear whitespace on file save"}),": Removes unnecessary whitespace whenever a file is saved."]}),"\n"]}),"\n",(0,s.jsx)(i.h3,{id:"system-configuration",children:"System Configuration"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"Path to Git executable"}),": Allows specifying a custom path to the Git installation if needed."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"Default Git operation timeout (in seconds)"}),": Sets the maximum duration for Git operations before they time out (default: 30 seconds)."]}),"\n"]}),"\n",(0,s.jsx)(i.h2,{id:"faq",children:"FAQ"}),"\n",(0,s.jsx)(i.h4,{id:"q-why-is-the-git-icon-not-displayed-in-the-phoenix-toolbar",children:"Q. Why is the Git icon not displayed in the Phoenix toolbar?"}),"\n",(0,s.jsx)(i.p,{children:"The Git icon does not appear in the toolbar if the project you opened is not a Git repository. It may also be missing if Git is not installed on your machine."}),"\n",(0,s.jsx)(i.h4,{id:"q-why-do-i-get-an-error-when-trying-to-push-changes-to-remote",children:"Q. Why do I get an error when trying to push changes to remote?"}),"\n",(0,s.jsx)(i.p,{children:'If you see a "Pushing to remote failed" error, it means there are new changes in the remote repository that you haven\'t pulled yet.'}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.img,{alt:"Git push error",src:t(477).A+"",title:"Git push error",width:"948",height:"507"})}),"\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.strong,{children:"How to Fix:"}),"\nBefore pushing your changes, pull the latest updates from the remote repository. ",(0,s.jsx)(i.a,{href:"#pull",children:"Learn how to pull changes"}),"."]})]})}function g(e={}){const{wrapper:i}={...(0,o.R)(),...e.components};return i?(0,s.jsx)(i,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},56399:(e,i,t)=>{t.d(i,{A:()=>o});var n=t(96540),s=t(74848);const o=({src:e,winLinuxTitle:i,macTitle:t})=>{const[o,r]=(0,n.useState)("");(0,n.useEffect)((()=>{navigator.platform.toLowerCase().includes("mac")?r(t):r(i)}),[i,t]);return(0,s.jsxs)("div",{style:{maxHeight:"68vh",width:"100%",display:"flex",justifyContent:"center",alignItems:"center",flexDirection:"column"},children:[(0,s.jsxs)("video",{style:{height:"90%",width:"100%"},controls:!0,autoPlay:!0,muted:!0,loop:!0,children:[(0,s.jsx)("source",{src:e,type:"video/mp4"}),"Your browser does not support the video tag."]}),(0,s.jsx)("div",{style:{width:"100%",textAlign:"center",fontSize:"1em",marginTop:"10px"},children:o})]})}},77701:(e,i,t)=>{t.d(i,{A:()=>n});const n=t.p+"assets/images/commit-dialog-58df3dd71e62d5199135e6ef01bc5421.png"},59943:(e,i,t)=>{t.d(i,{A:()=>n});const n=t.p+"assets/images/delete-branch-830998fd338a5d691c06276d8b9d81ee.png"},90477:(e,i,t)=>{t.d(i,{A:()=>n});const n=t.p+"assets/images/discard-all-changes-c8b7b745866759d1ffbe6a1b1986c560.png"},93755:(e,i,t)=>{t.d(i,{A:()=>n});const n=t.p+"assets/images/discard-changes-b01df6d57b21e9a2c307efe9ecc24412.png"},29370:(e,i,t)=>{t.d(i,{A:()=>n});const n=t.p+"assets/images/get-from-git-dialog-ca73be7458b6ad7dfbc5b9458562abf0.png"},17427:(e,i,t)=>{t.d(i,{A:()=>n});const n=t.p+"assets/images/get-from-git-c9f09b8c00dda57695fc065ace4a08ba.png"},81120:(e,i,t)=>{t.d(i,{A:()=>n});const n=t.p+"assets/images/git-branch-6d1ce95f746409044e152b8944194c7a.png"},32028:(e,i,t)=>{t.d(i,{A:()=>n});const n=t.p+"assets/images/git-clone-dialog-e5966df936decf6d03618a3123d295c3.png"},77278:(e,i,t)=>{t.d(i,{A:()=>n});const n=t.p+"assets/images/git-clone-more-options-647157d400324163161cd7663c125812.png"},17719:(e,i,t)=>{t.d(i,{A:()=>n});const n=t.p+"assets/images/git-commit-errors-95987108d89e710113b68e357fc75a7d.png"},71627:(e,i,t)=>{t.d(i,{A:()=>n});const n=t.p+"assets/images/git-commit-cadf7ef1960a86877135ff05f7ee5165.png"},66774:(e,i,t)=>{t.d(i,{A:()=>n});const n=t.p+"assets/images/git-delete-remote-bf2fa7eaf6e0742800a5a54074dbaf13.png"},70548:(e,i,t)=>{t.d(i,{A:()=>n});const n=t.p+"assets/images/git-diff-dialog-64e6728aa787d37e8dad2b4edd767cda.png"},25983:(e,i,t)=>{t.d(i,{A:()=>n});const n=t.p+"assets/images/git-diff-icon-99207ec802e288d371a92b9e1acd452a.png"},34982:(e,i,t)=>{t.d(i,{A:()=>n});const n=t.p+"assets/images/git-fetch-fc0c766770f3d1ac3573ef0cc9794ae9.png"},46390:(e,i,t)=>{t.d(i,{A:()=>n});const n=t.p+"assets/images/git-init-8b4fa883030b8b0018a2c3f9250886da.png"},50749:(e,i,t)=>{t.d(i,{A:()=>n});const n=t.p+"assets/images/git-menu-from-panel-21267375e96c076f640af93cf6e12042.png"},80910:(e,i,t)=>{t.d(i,{A:()=>n});const n=t.p+"assets/images/git-menu-7abfadf236379bc301d27968ef61713b.png"},89506:(e,i,t)=>{t.d(i,{A:()=>n});const n=t.p+"assets/images/git-new-branch-dialog-9c263752ef9dd7e258c869ebacadf00a.png"},21441:(e,i,t)=>{t.d(i,{A:()=>n});const n=t.p+"assets/images/git-overview-f251dd919a3c527f94c7efe809f2356a.png"},85696:(e,i,t)=>{t.d(i,{A:()=>n});const n=t.p+"assets/images/git-panel-5b7c8f0ab36655f000ddf30410ba85a0.png"},60552:(e,i,t)=>{t.d(i,{A:()=>n});const n=t.p+"assets/images/git-pull-dialog-abea69ac10247830d71eff48deeacb56.png"},71669:(e,i,t)=>{t.d(i,{A:()=>n});const n=t.p+"assets/images/git-pull-f110a922be3a7e21825b38e523614345.png"},477:(e,i,t)=>{t.d(i,{A:()=>n});const n=t.p+"assets/images/git-push-error-0c2f8b9c01bf563461a57818f3664b51.png"},91777:(e,i,t)=>{t.d(i,{A:()=>n});const n=t.p+"assets/images/git-push-more-options-096e949f021dbca54f9e909497e6987e.png"},33864:(e,i,t)=>{t.d(i,{A:()=>n});const n=t.p+"assets/images/git-push-90a5d6275eedb65ae98f4cfac79d910f.png"},7452:(e,i,t)=>{t.d(i,{A:()=>n});const n=t.p+"assets/images/git-remote-name-d561e5dcb0e2f0f503b3098067f0b890.png"},82198:(e,i,t)=>{t.d(i,{A:()=>n});const n=t.p+"assets/images/git-remote-801d26af448dead2b5299ec59b3656fd.png"},7358:(e,i,t)=>{t.d(i,{A:()=>n});const n=t.p+"assets/images/git-settings-dialog-32f4dccda01b84f0a80c85bcc061a7cd.png"},68275:(e,i,t)=>{t.d(i,{A:()=>n});const n=t.p+"assets/images/git-settings-from-file-menu-7fdb38e7382abf7402f34b461cc3fe2a.png"},12439:(e,i,t)=>{t.d(i,{A:()=>n});const n=t.p+"assets/images/git-settings-from-panel-3e504985b2d407e84c53d40bc2670908.png"},62246:(e,i,t)=>{t.d(i,{A:()=>n});const n=t.p+"assets/images/history-viewer-expanded-94f7059b441632b9cfbf7d41af1147c3.png"},9778:(e,i,t)=>{t.d(i,{A:()=>n});const n=t.p+"assets/images/history-viewer-516735aaf90f434d2baf5e95c6c897ef.png"},14639:(e,i,t)=>{t.d(i,{A:()=>n});const n=t.p+"assets/images/merge-branch-dialog-1c07f61b94640c7ea80c133d2d4cfaac.png"},65272:(e,i,t)=>{t.d(i,{A:()=>n});const n=t.p+"assets/images/merge-branch-6869bb2da694746451b0ccad893ca783.png"},41041:(e,i,t)=>{t.d(i,{A:()=>n});const n=t.p+"assets/images/move-to-next-change-e5d4a9e30f81267735c3bb2542bf2948.png"},2329:(e,i,t)=>{t.d(i,{A:()=>n});const n=t.p+"assets/images/move-to-previous-change-da5a34c57064f6eb4ed6f64d5e509caf.png"},68340:(e,i,t)=>{t.d(i,{A:()=>n});const n=t.p+"assets/images/push-dialog-17783f22101f31e587f9ae5b94a65bbb.png"},40649:(e,i,t)=>{t.d(i,{A:()=>n});const n=t.p+"assets/images/refresh-panel-a55c088bfc0cb3d6537b80d7a4584af6.png"},63268:(e,i,t)=>{t.d(i,{A:()=>n});const n=t.p+"assets/images/show-file-history-5376f680661735e52ad853c9b7801a6f.png"},63509:(e,i,t)=>{t.d(i,{A:()=>n});const n=t.p+"assets/images/show-history-41f42182e71c7a1041d0d3cc564b5d81.png"},71321:(e,i,t)=>{t.d(i,{A:()=>n});const n=t.p+"assets/images/stage-files-e8f3109e21e3324ced10f59ce47933cf.png"},92221:(e,i,t)=>{t.d(i,{A:()=>n});const n=t.p+"assets/images/start-project-b427bc5dc33af5911c515ba0cd68b519.png"},51217:(e,i,t)=>{t.d(i,{A:()=>n});const n=t.p+"assets/images/view-authors-3819eabc8819a8af5e8f2d38ad7628de.png"},28453:(e,i,t)=>{t.d(i,{R:()=>r,x:()=>l});var n=t(96540);const s={},o=n.createContext(s);function r(e){const i=n.useContext(o);return n.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function l(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),n.createElement(o.Provider,{value:i},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/8590a464.911e7eab.js b/assets/js/8590a464.911e7eab.js new file mode 100644 index 00000000..dffa166e --- /dev/null +++ b/assets/js/8590a464.911e7eab.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5240],{14808:s=>{s.exports=JSON.parse('{"tag":{"label":"Custom Snippets","permalink":"/blog/tags/custom-snippets","allTagsPath":"/blog/tags","count":1,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/custom-snippets","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]); \ No newline at end of file diff --git a/assets/js/861bf7dd.217fc5d5.js b/assets/js/861bf7dd.217fc5d5.js new file mode 100644 index 00000000..9b05026a --- /dev/null +++ b/assets/js/861bf7dd.217fc5d5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9745],{13203:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>c,default:()=>h,frontMatter:()=>d,metadata:()=>s,toc:()=>o});const s=JSON.parse('{"id":"API-Reference/language/HTMLUtils","title":"HTMLUtils","description":"Import :","source":"@site/api/API-Reference/language/HTMLUtils.md","sourceDirName":"API-Reference/language","slug":"/API-Reference/language/HTMLUtils","permalink":"/api/API-Reference/language/HTMLUtils","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"HTMLSimpleDOM","permalink":"/api/API-Reference/language/HTMLSimpleDOM"},"next":{"title":"JSONUtils","permalink":"/api/API-Reference/language/JSONUtils"}}');var r=n(74848),i=n(28453);const d={},c=void 0,l={},o=[{value:"Import :",id:"import-",level:3},{value:"TAG_NAME : string",id:"tag_name--string",level:2},{value:"CLOSING_TAG : string",id:"closing_tag--string",level:2},{value:"ATTR_NAME : string",id:"attr_name--string",level:2},{value:"ATTR_VALUE : string",id:"attr_value--string",level:2},{value:"getTagAttributes(editor, pos) \u21d2 Array.<string>",id:"gettagattributeseditor-pos--arraystring",level:2},{value:"createTagInfo([tokenType], [offset], [tagName], [attrName], [attrValue]) \u21d2 Object",id:"createtaginfotokentype-offset-tagname-attrname-attrvalue--object",level:2},{value:"getTagInfo(editor, constPos, let) \u21d2 Object",id:"gettaginfoeditor-constpos-let--object",level:2},{value:"findBlocks(editor, modeName) \u21d2 Object",id:"findblockseditor-modename--object",level:2},{value:"findStyleBlocks(editor) \u21d2 Object",id:"findstyleblockseditor--object",level:2}];function a(e){const t={br:"br",code:"code",h2:"h2",h3:"h3",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.h3,{id:"import-",children:"Import :"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-js",children:'const HTMLUtils = brackets.getModule("language/HTMLUtils")\n'})}),"\n",(0,r.jsx)("a",{name:"TAG_NAME"}),"\n",(0,r.jsxs)(t.h2,{id:"tag_name--string",children:["TAG_NAME : ",(0,r.jsx)("code",{children:"string"})]}),"\n",(0,r.jsx)(t.p,{children:"Key representing tag name"}),"\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Kind"}),": global constant"]}),"\n",(0,r.jsx)("a",{name:"CLOSING_TAG"}),"\n",(0,r.jsxs)(t.h2,{id:"closing_tag--string",children:["CLOSING_TAG : ",(0,r.jsx)("code",{children:"string"})]}),"\n",(0,r.jsx)(t.p,{children:"Key representing closing tag"}),"\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Kind"}),": global constant"]}),"\n",(0,r.jsx)("a",{name:"ATTR_NAME"}),"\n",(0,r.jsxs)(t.h2,{id:"attr_name--string",children:["ATTR_NAME : ",(0,r.jsx)("code",{children:"string"})]}),"\n",(0,r.jsx)(t.p,{children:"Key representing attribute name"}),"\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Kind"}),": global constant"]}),"\n",(0,r.jsx)("a",{name:"ATTR_VALUE"}),"\n",(0,r.jsxs)(t.h2,{id:"attr_value--string",children:["ATTR_VALUE : ",(0,r.jsx)("code",{children:"string"})]}),"\n",(0,r.jsx)(t.p,{children:"Key representing attribute value"}),"\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Kind"}),": global constant"]}),"\n",(0,r.jsx)("a",{name:"getTagAttributes"}),"\n",(0,r.jsxs)(t.h2,{id:"gettagattributeseditor-pos--arraystring",children:["getTagAttributes(editor, pos) \u21d2 ",(0,r.jsx)("code",{children:"Array."})]}),"\n",(0,r.jsx)(t.p,{children:"Compiles a list of used attributes for a given tag."}),"\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Kind"}),": global function",(0,r.jsx)(t.br,{}),"\n",(0,r.jsx)(t.strong,{children:"Returns"}),": ",(0,r.jsx)("code",{children:"Array."})," - - A list of the used attributes within the current tag."]}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Param"}),(0,r.jsx)(t.th,{children:"Type"}),(0,r.jsx)(t.th,{children:"Description"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"editor"}),(0,r.jsx)(t.td,{children:(0,r.jsx)("code",{children:"CodeMirror"})}),(0,r.jsx)(t.td,{children:"An instance of a CodeMirror editor."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"pos"}),(0,r.jsx)(t.td,{children:(0,r.jsx)("code",{children:"Object"})}),(0,r.jsx)(t.td,{children:"The position in the CodeMirror editor, specified by character and line numbers."})]})]})]}),"\n",(0,r.jsx)("a",{name:"createTagInfo"}),"\n",(0,r.jsxs)(t.h2,{id:"createtaginfotokentype-offset-tagname-attrname-attrvalue--object",children:["createTagInfo([tokenType], [offset], [tagName], [attrName], [attrValue]) \u21d2 ",(0,r.jsx)("code",{children:"Object"})]}),"\n",(0,r.jsx)(t.p,{children:"Creates a tagInfo object and assures all the values are entered or are empty strings"}),"\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Kind"}),": global function",(0,r.jsx)(t.br,{}),"\n",(0,r.jsx)(t.strong,{children:"Returns"}),": ",(0,r.jsx)("code",{children:"Object"})," - A tagInfo object with some context about the current tag hint."]}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Param"}),(0,r.jsx)(t.th,{children:"Type"}),(0,r.jsx)(t.th,{children:"Description"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"[tokenType]"}),(0,r.jsx)(t.td,{children:(0,r.jsx)("code",{children:"string"})}),(0,r.jsx)(t.td,{children:"what is getting edited and should be hinted"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"[offset]"}),(0,r.jsx)(t.td,{children:(0,r.jsx)("code",{children:"number"})}),(0,r.jsx)(t.td,{children:"where the cursor is for the part getting hinted"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"[tagName]"}),(0,r.jsx)(t.td,{children:(0,r.jsx)("code",{children:"string"})}),(0,r.jsx)(t.td,{children:"The name of the tag"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"[attrName]"}),(0,r.jsx)(t.td,{children:(0,r.jsx)("code",{children:"string"})}),(0,r.jsx)(t.td,{children:"The name of the attribute"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"[attrValue]"}),(0,r.jsx)(t.td,{children:(0,r.jsx)("code",{children:"string"})}),(0,r.jsx)(t.td,{children:"The value of the attribute"})]})]})]}),"\n",(0,r.jsx)("a",{name:"getTagInfo"}),"\n",(0,r.jsxs)(t.h2,{id:"gettaginfoeditor-constpos-let--object",children:["getTagInfo(editor, constPos, let) \u21d2 ",(0,r.jsx)("code",{children:"Object"})]}),"\n",(0,r.jsx)(t.p,{children:"Figure out if we're in a tag, and if we are return info about it\nAn example token stream for this tag is"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-js",children:' :\n className:tag string:""\n'})}),"\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Kind"}),": global function",(0,r.jsx)(t.br,{}),"\n",(0,r.jsx)(t.strong,{children:"Returns"}),": ",(0,r.jsx)("code",{children:"Object"})," - A tagInfo object with some context about the current tag hint."]}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Param"}),(0,r.jsx)(t.th,{children:"Type"}),(0,r.jsx)(t.th,{children:"Description"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"editor"}),(0,r.jsx)(t.td,{children:(0,r.jsx)("code",{children:"Editor"})}),(0,r.jsx)(t.td,{children:"An instance of a Brackets editor"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"constPos"}),(0,r.jsx)(t.td,{children:(0,r.jsx)("code",{children:"Object"})}),(0,r.jsx)(t.td,{children:"A CM pos (likely from editor.getCursorPos())"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"let"}),(0,r.jsx)(t.td,{children:(0,r.jsxs)("code",{children:["isHtmlMode",":boolean"]})}),(0,r.jsx)(t.td,{children:"the module know we are in html mode"})]})]})]}),"\n",(0,r.jsx)("a",{name:"findBlocks"}),"\n",(0,r.jsxs)(t.h2,{id:"findblockseditor-modename--object",children:["findBlocks(editor, modeName) \u21d2 ",(0,r.jsx)("code",{children:"Object"})]}),"\n",(0,r.jsx)(t.p,{children:"Returns an Array of info about all blocks whose token mode name matches that passed in,\nin the given Editor's HTML document (assumes the Editor contains HTML text)."}),"\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Kind"}),": global function",(0,r.jsx)(t.br,{}),"\n",(0,r.jsx)(t.strong,{children:"Returns"}),": ",(0,r.jsx)("code",{children:"Object"})," - Array"]}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Param"}),(0,r.jsx)(t.th,{children:"Type"}),(0,r.jsx)(t.th,{children:"Description"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"editor"}),(0,r.jsx)(t.td,{children:(0,r.jsx)("code",{children:"Editor"})}),(0,r.jsx)(t.td,{children:"the editor containing the HTML text"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"modeName"}),(0,r.jsx)(t.td,{children:(0,r.jsx)("code",{children:"string"})}),(0,r.jsx)(t.td,{children:"the mode name of the tokens to look for"})]})]})]}),"\n",(0,r.jsx)("a",{name:"findStyleBlocks"}),"\n",(0,r.jsxs)(t.h2,{id:"findstyleblockseditor--object",children:["findStyleBlocks(editor) \u21d2 ",(0,r.jsx)("code",{children:"Object"})]}),"\n",(0,r.jsx)(t.p,{children:"Returns an Array of info about all 'style' blocks in the given Editor's HTML document (assumes\nthe Editor contains HTML text)."}),"\n",(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.strong,{children:"Kind"}),": global function",(0,r.jsx)(t.br,{}),"\n",(0,r.jsx)(t.strong,{children:"Returns"}),": ",(0,r.jsx)("code",{children:"Object"})," - Array"]}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Param"}),(0,r.jsx)(t.th,{children:"Type"})]})}),(0,r.jsx)(t.tbody,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"editor"}),(0,r.jsx)(t.td,{children:(0,r.jsx)("code",{children:"Editor"})})]})})]})]})}function h(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(a,{...e})}):a(e)}},28453:(e,t,n)=>{n.d(t,{R:()=>d,x:()=>c});var s=n(96540);const r={},i=s.createContext(r);function d(e){const t=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:d(e.components),s.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/8684d0af.183cf607.js b/assets/js/8684d0af.183cf607.js new file mode 100644 index 00000000..5a3d4e4d --- /dev/null +++ b/assets/js/8684d0af.183cf607.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1408],{21539:s=>{s.exports=JSON.parse('{"tag":{"label":"Smarter hint suggestions","permalink":"/blog/tags/smarter-hint-suggestions","allTagsPath":"/blog/tags","count":1,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/smarter-hint-suggestions","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]); \ No newline at end of file diff --git a/assets/js/8731.5194ebf0.js b/assets/js/8731.5194ebf0.js new file mode 100644 index 00000000..f1a8fb2c --- /dev/null +++ b/assets/js/8731.5194ebf0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8731],{59850:(e,t,n)=>{t.Qi=t.XO=void 0;const r=n(69590),i=n(78585),s=n(62676);var a;!function(e){e.None=Object.freeze({isCancellationRequested:!1,onCancellationRequested:s.Event.None}),e.Cancelled=Object.freeze({isCancellationRequested:!0,onCancellationRequested:s.Event.None}),e.is=function(t){const n=t;return n&&(n===e.None||n===e.Cancelled||i.boolean(n.isCancellationRequested)&&!!n.onCancellationRequested)}}(a||(t.XO=a={}));const o=Object.freeze((function(e,t){const n=(0,r.default)().timer.setTimeout(e.bind(t),0);return{dispose(){n.dispose()}}}));class l{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?o:(this._emitter||(this._emitter=new s.Emitter),this._emitter.event)}dispose(){this._emitter&&(this._emitter.dispose(),this._emitter=void 0)}}t.Qi=class{get token(){return this._token||(this._token=new l),this._token}cancel(){this._token?this._token.cancel():this._token=a.Cancelled}dispose(){this._token?this._token instanceof l&&this._token.dispose():this._token=a.None}}},62676:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Emitter=t.Event=void 0;const r=n(69590);var i;!function(e){const t={dispose(){}};e.None=function(){return t}}(i||(t.Event=i={}));class s{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 r=0,i=this._callbacks.length;r{this._callbacks||(this._callbacks=new s),this._options&&this._options.onFirstListenerAdd&&this._callbacks.isEmpty()&&this._options.onFirstListenerAdd(this),this._callbacks.add(e,t);const r={dispose:()=>{this._callbacks&&(this._callbacks.remove(e,t),r.dispose=a._noop,this._options&&this._options.onLastListenerRemove&&this._callbacks.isEmpty()&&this._options.onLastListenerRemove(this))}};return Array.isArray(n)&&n.push(r),r}),this._event}fire(e){this._callbacks&&this._callbacks.invoke.call(this._callbacks,e)}dispose(){this._callbacks&&(this._callbacks.dispose(),this._callbacks=void 0)}}t.Emitter=a,a._noop=function(){}},78585:(e,t)=>{function n(e){return"string"==typeof e||e instanceof String}function r(e){return Array.isArray(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.stringArray=t.array=t.func=t.error=t.number=t.string=t.boolean=void 0,t.boolean=function(e){return!0===e||!1===e},t.string=n,t.number=function(e){return"number"==typeof e||e instanceof Number},t.error=function(e){return e instanceof Error},t.func=function(e){return"function"==typeof e},t.array=r,t.stringArray=function(e){return r(e)&&e.every((e=>n(e)))}},69590:(e,t)=>{let n;function r(){if(void 0===n)throw new Error("No runtime abstraction layer installed");return n}Object.defineProperty(t,"__esModule",{value:!0}),function(e){e.install=function(e){if(void 0===e)throw new Error("No runtime abstraction layer provided");n=e}}(r||(r={})),t.default=r},85186:(e,t,n)=>{function r(e){return e.charCodeAt(0)}function i(e,t){Array.isArray(e)?e.forEach((function(e){t.push(e)})):t.push(e)}function s(e,t){if(!0===e[t])throw"duplicate flag "+t;e[t];e[t]=!0}function a(e){if(void 0===e)throw Error("Internal Error - Should never get here!");return!0}function o(){throw Error("Internal Error - Should never get here!")}function l(e){return"Character"===e.type}n.d(t,{z:()=>g,H:()=>m});const c=[];for(let y=r("0");y<=r("9");y++)c.push(y);const u=[r("_")].concat(c);for(let y=r("a");y<=r("z");y++)u.push(y);for(let y=r("A");y<=r("Z");y++)u.push(y);const d=[r(" "),r("\f"),r("\n"),r("\r"),r("\t"),r("\v"),r("\t"),r("\xa0"),r("\u1680"),r("\u2000"),r("\u2001"),r("\u2002"),r("\u2003"),r("\u2004"),r("\u2005"),r("\u2006"),r("\u2007"),r("\u2008"),r("\u2009"),r("\u200a"),r("\u2028"),r("\u2029"),r("\u202f"),r("\u205f"),r("\u3000"),r("\ufeff")],h=/[0-9a-fA-F]/,f=/[0-9]/,p=/[1-9]/;class m{constructor(){this.idx=0,this.input="",this.groupIdx=0}saveState(){return{idx:this.idx,input:this.input,groupIdx:this.groupIdx}}restoreState(e){this.idx=e.idx,this.input=e.input,this.groupIdx=e.groupIdx}pattern(e){this.idx=0,this.input=e,this.groupIdx=0,this.consumeChar("/");const t=this.disjunction();this.consumeChar("/");const n={type:"Flags",loc:{begin:this.idx,end:e.length},global:!1,ignoreCase:!1,multiLine:!1,unicode:!1,sticky:!1};for(;this.isRegExpFlag();)switch(this.popChar()){case"g":s(n,"global");break;case"i":s(n,"ignoreCase");break;case"m":s(n,"multiLine");break;case"u":s(n,"unicode");break;case"y":s(n,"sticky")}if(this.idx!==this.input.length)throw Error("Redundant input: "+this.input.substring(this.idx));return{type:"Pattern",flags:n,value:t,loc:this.loc(0)}}disjunction(){const e=[],t=this.idx;for(e.push(this.alternative());"|"===this.peekChar();)this.consumeChar("|"),e.push(this.alternative());return{type:"Disjunction",value:e,loc:this.loc(t)}}alternative(){const e=[],t=this.idx;for(;this.isTerm();)e.push(this.term());return{type:"Alternative",value:e,loc:this.loc(t)}}term(){return this.isAssertion()?this.assertion():this.atom()}assertion(){const e=this.idx;switch(this.popChar()){case"^":return{type:"StartAnchor",loc:this.loc(e)};case"$":return{type:"EndAnchor",loc:this.loc(e)};case"\\":switch(this.popChar()){case"b":return{type:"WordBoundary",loc:this.loc(e)};case"B":return{type:"NonWordBoundary",loc:this.loc(e)}}throw Error("Invalid Assertion Escape");case"(":let t;switch(this.consumeChar("?"),this.popChar()){case"=":t="Lookahead";break;case"!":t="NegativeLookahead"}a(t);const n=this.disjunction();return this.consumeChar(")"),{type:t,value:n,loc:this.loc(e)}}return o()}quantifier(e=!1){let t;const n=this.idx;switch(this.popChar()){case"*":t={atLeast:0,atMost:1/0};break;case"+":t={atLeast:1,atMost:1/0};break;case"?":t={atLeast:0,atMost:1};break;case"{":const n=this.integerIncludingZero();switch(this.popChar()){case"}":t={atLeast:n,atMost:n};break;case",":let e;this.isDigit()?(e=this.integerIncludingZero(),t={atLeast:n,atMost:e}):t={atLeast:n,atMost:1/0},this.consumeChar("}")}if(!0===e&&void 0===t)return;a(t)}if(!0!==e||void 0!==t)return a(t)?("?"===this.peekChar(0)?(this.consumeChar("?"),t.greedy=!1):t.greedy=!0,t.type="Quantifier",t.loc=this.loc(n),t):void 0}atom(){let e;const t=this.idx;switch(this.peekChar()){case".":e=this.dotAll();break;case"\\":e=this.atomEscape();break;case"[":e=this.characterClass();break;case"(":e=this.group()}return void 0===e&&this.isPatternCharacter()&&(e=this.patternCharacter()),a(e)?(e.loc=this.loc(t),this.isQuantifier()&&(e.quantifier=this.quantifier()),e):o()}dotAll(){return this.consumeChar("."),{type:"Set",complement:!0,value:[r("\n"),r("\r"),r("\u2028"),r("\u2029")]}}atomEscape(){switch(this.consumeChar("\\"),this.peekChar()){case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":return this.decimalEscapeAtom();case"d":case"D":case"s":case"S":case"w":case"W":return this.characterClassEscape();case"f":case"n":case"r":case"t":case"v":return this.controlEscapeAtom();case"c":return this.controlLetterEscapeAtom();case"0":return this.nulCharacterAtom();case"x":return this.hexEscapeSequenceAtom();case"u":return this.regExpUnicodeEscapeSequenceAtom();default:return this.identityEscapeAtom()}}decimalEscapeAtom(){return{type:"GroupBackReference",value:this.positiveInteger()}}characterClassEscape(){let e,t=!1;switch(this.popChar()){case"d":e=c;break;case"D":e=c,t=!0;break;case"s":e=d;break;case"S":e=d,t=!0;break;case"w":e=u;break;case"W":e=u,t=!0}return a(e)?{type:"Set",value:e,complement:t}:o()}controlEscapeAtom(){let e;switch(this.popChar()){case"f":e=r("\f");break;case"n":e=r("\n");break;case"r":e=r("\r");break;case"t":e=r("\t");break;case"v":e=r("\v")}return a(e)?{type:"Character",value:e}:o()}controlLetterEscapeAtom(){this.consumeChar("c");const e=this.popChar();if(!1===/[a-zA-Z]/.test(e))throw Error("Invalid ");return{type:"Character",value:e.toUpperCase().charCodeAt(0)-64}}nulCharacterAtom(){return this.consumeChar("0"),{type:"Character",value:r("\0")}}hexEscapeSequenceAtom(){return this.consumeChar("x"),this.parseHexDigits(2)}regExpUnicodeEscapeSequenceAtom(){return this.consumeChar("u"),this.parseHexDigits(4)}identityEscapeAtom(){return{type:"Character",value:r(this.popChar())}}classPatternCharacterAtom(){switch(this.peekChar()){case"\n":case"\r":case"\u2028":case"\u2029":case"\\":case"]":throw Error("TBD");default:return{type:"Character",value:r(this.popChar())}}}characterClass(){const e=[];let t=!1;for(this.consumeChar("["),"^"===this.peekChar(0)&&(this.consumeChar("^"),t=!0);this.isClassAtom();){const t=this.classAtom();t.type;if(l(t)&&this.isRangeDash()){this.consumeChar("-");const n=this.classAtom();n.type;if(l(n)){if(n.value=this.input.length)throw Error("Unexpected end of input");this.idx++}loc(e){return{begin:e,end:this.idx}}}class g{visitChildren(e){for(const t in e){const n=e[t];e.hasOwnProperty(t)&&(void 0!==n.type?this.visit(n):Array.isArray(n)&&n.forEach((e=>{this.visit(e)}),this))}}visit(e){switch(e.type){case"Pattern":this.visitPattern(e);break;case"Flags":this.visitFlags(e);break;case"Disjunction":this.visitDisjunction(e);break;case"Alternative":this.visitAlternative(e);break;case"StartAnchor":this.visitStartAnchor(e);break;case"EndAnchor":this.visitEndAnchor(e);break;case"WordBoundary":this.visitWordBoundary(e);break;case"NonWordBoundary":this.visitNonWordBoundary(e);break;case"Lookahead":this.visitLookahead(e);break;case"NegativeLookahead":this.visitNegativeLookahead(e);break;case"Character":this.visitCharacter(e);break;case"Set":this.visitSet(e);break;case"Group":this.visitGroup(e);break;case"GroupBackReference":this.visitGroupBackReference(e);break;case"Quantifier":this.visitQuantifier(e)}this.visitChildren(e)}visitPattern(e){}visitFlags(e){}visitDisjunction(e){}visitAlternative(e){}visitStartAnchor(e){}visitEndAnchor(e){}visitWordBoundary(e){}visitNonWordBoundary(e){}visitLookahead(e){}visitNegativeLookahead(e){}visitCharacter(e){}visitSet(e){}visitGroup(e){}visitGroupBackReference(e){}visitQuantifier(e){}}},51477:(e,t,n)=>{n.d(t,{$:()=>c});var r=n(87960),i=n(51917),s=n(39364),a=n(98913),o=class extends r.mR{static{(0,r.K2)(this,"PacketTokenBuilder")}constructor(){super(["packet"])}},l={parser:{TokenBuilder:(0,r.K2)((()=>new o),"TokenBuilder"),ValueConverter:(0,r.K2)((()=>new r.Tm),"ValueConverter")}};function c(e=i.D){const t=(0,s.WQ)((0,a.u)(e),r.sr),n=(0,s.WQ)((0,a.t)({shared:t}),r.AM,l);return t.ServiceRegistry.register(n),{shared:t,Packet:n}}(0,r.K2)(c,"createPacketServices")},87960:(e,t,n)=>{n.d(t,{mR:()=>xe,dg:()=>Ee,jE:()=>Te,Tm:()=>ke,eZ:()=>Ae,e5:()=>me,sr:()=>pe,AM:()=>ge,KX:()=>ye,YP:()=>ve,eV:()=>Re,K2:()=>m});var r=n(32479),i=n(98913),s=n(39364),a=n(32151),o=n(51917),l=n(37608);const c={Grammar:()=>{},LanguageMetaData:()=>({caseInsensitive:!1,fileExtensions:[".langium"],languageId:"langium"})},u={AstReflection:()=>new a.QX};function d(e){var t;const n=function(){const e=(0,s.WQ)((0,i.u)(o.D),u),t=(0,s.WQ)((0,i.t)({shared:e}),c);return e.ServiceRegistry.register(t),t}(),r=n.serializer.JsonSerializer.deserialize(e);return n.shared.workspace.LangiumDocumentFactory.fromModel(r,l.r.parse(`memory://${null!==(t=r.name)&&void 0!==t?t:"grammar"}.langium`)),r}var h=n(65033),f=n(44326),p=Object.defineProperty,m=(e,t)=>p(e,"name",{value:t,configurable:!0}),g="Statement",y="Architecture";m((function(e){return J.isInstance(e,y)}),"isArchitecture");var T="Axis",A="Branch";m((function(e){return J.isInstance(e,A)}),"isBranch");var v="Checkout",R="CherryPicking",$="ClassDefStatement",E="Commit";m((function(e){return J.isInstance(e,E)}),"isCommit");var k="Curve",x="Edge",I="Entry",S="GitGraph";m((function(e){return J.isInstance(e,S)}),"isGitGraph");var N="Group",C="Info";m((function(e){return J.isInstance(e,C)}),"isInfo");var w="Item",L="Junction",b="Merge";m((function(e){return J.isInstance(e,b)}),"isMerge");var O="Option",_="Packet";m((function(e){return J.isInstance(e,_)}),"isPacket");var P="PacketBlock";m((function(e){return J.isInstance(e,P)}),"isPacketBlock");var M="Pie";m((function(e){return J.isInstance(e,M)}),"isPie");var D="PieSection";m((function(e){return J.isInstance(e,D)}),"isPieSection");var U="Radar",F="Service",G="Treemap";m((function(e){return J.isInstance(e,G)}),"isTreemap");var K,B,j,V,H,W,z,Y="TreemapRow",X="Direction",q="Leaf",Q="Section",Z=class extends r.kD{static{m(this,"MermaidAstReflection")}getAllTypes(){return[y,T,A,v,R,$,E,k,X,x,I,S,N,C,w,L,q,b,O,_,P,M,D,U,Q,F,g,G,Y]}computeIsSubtype(e,t){switch(e){case A:case v:case R:case E:case b:return this.isSubtype(g,t);case X:return this.isSubtype(S,t);case q:case Q:return this.isSubtype(w,t);default:return!1}}getReferenceType(e){const t=`${e.container.$type}:${e.property}`;if("Entry:axis"===t)return T;throw new Error(`${t} is not a valid reference id.`)}getTypeMetaData(e){switch(e){case y:return{name:y,properties:[{name:"accDescr"},{name:"accTitle"},{name:"edges",defaultValue:[]},{name:"groups",defaultValue:[]},{name:"junctions",defaultValue:[]},{name:"services",defaultValue:[]},{name:"title"}]};case T:return{name:T,properties:[{name:"label"},{name:"name"}]};case A:return{name:A,properties:[{name:"name"},{name:"order"}]};case v:return{name:v,properties:[{name:"branch"}]};case R:return{name:R,properties:[{name:"id"},{name:"parent"},{name:"tags",defaultValue:[]}]};case $:return{name:$,properties:[{name:"className"},{name:"styleText"}]};case E:return{name:E,properties:[{name:"id"},{name:"message"},{name:"tags",defaultValue:[]},{name:"type"}]};case k:return{name:k,properties:[{name:"entries",defaultValue:[]},{name:"label"},{name:"name"}]};case x:return{name:x,properties:[{name:"lhsDir"},{name:"lhsGroup",defaultValue:!1},{name:"lhsId"},{name:"lhsInto",defaultValue:!1},{name:"rhsDir"},{name:"rhsGroup",defaultValue:!1},{name:"rhsId"},{name:"rhsInto",defaultValue:!1},{name:"title"}]};case I:return{name:I,properties:[{name:"axis"},{name:"value"}]};case S:return{name:S,properties:[{name:"accDescr"},{name:"accTitle"},{name:"statements",defaultValue:[]},{name:"title"}]};case N:return{name:N,properties:[{name:"icon"},{name:"id"},{name:"in"},{name:"title"}]};case C:return{name:C,properties:[{name:"accDescr"},{name:"accTitle"},{name:"title"}]};case w:return{name:w,properties:[{name:"classSelector"},{name:"name"}]};case L:return{name:L,properties:[{name:"id"},{name:"in"}]};case b:return{name:b,properties:[{name:"branch"},{name:"id"},{name:"tags",defaultValue:[]},{name:"type"}]};case O:return{name:O,properties:[{name:"name"},{name:"value",defaultValue:!1}]};case _:return{name:_,properties:[{name:"accDescr"},{name:"accTitle"},{name:"blocks",defaultValue:[]},{name:"title"}]};case P:return{name:P,properties:[{name:"bits"},{name:"end"},{name:"label"},{name:"start"}]};case M:return{name:M,properties:[{name:"accDescr"},{name:"accTitle"},{name:"sections",defaultValue:[]},{name:"showData",defaultValue:!1},{name:"title"}]};case D:return{name:D,properties:[{name:"label"},{name:"value"}]};case U:return{name:U,properties:[{name:"accDescr"},{name:"accTitle"},{name:"axes",defaultValue:[]},{name:"curves",defaultValue:[]},{name:"options",defaultValue:[]},{name:"title"}]};case F:return{name:F,properties:[{name:"icon"},{name:"iconText"},{name:"id"},{name:"in"},{name:"title"}]};case G:return{name:G,properties:[{name:"accDescr"},{name:"accTitle"},{name:"title"},{name:"TreemapRows",defaultValue:[]}]};case Y:return{name:Y,properties:[{name:"indent"},{name:"item"}]};case X:return{name:X,properties:[{name:"accDescr"},{name:"accTitle"},{name:"dir"},{name:"statements",defaultValue:[]},{name:"title"}]};case q:return{name:q,properties:[{name:"classSelector"},{name:"name"},{name:"value"}]};case Q:return{name:Q,properties:[{name:"classSelector"},{name:"name"}]};default:return{name:e,properties:[]}}}},J=new Z,ee=m((()=>K??(K=d('{"$type":"Grammar","isDeclared":true,"name":"Info","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Info","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"info"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"*"},{"$type":"Group","elements":[{"$type":"Keyword","value":"showInfo"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"*"}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[],"cardinality":"?"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@7"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@8"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|\'([^\'\\\\\\\\]|\\\\\\\\.)*\'/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[],"types":[],"usedGrammars":[]}'))),"InfoGrammar"),te=m((()=>B??(B=d('{"$type":"Grammar","isDeclared":true,"name":"Packet","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Packet","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"packet"},{"$type":"Keyword","value":"packet-beta"}]},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]},{"$type":"Assignment","feature":"blocks","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"PacketBlock","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Assignment","feature":"start","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"-"},{"$type":"Assignment","feature":"end","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}],"cardinality":"?"}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"+"},{"$type":"Assignment","feature":"bits","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}]}]},{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@8"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@9"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|\'([^\'\\\\\\\\]|\\\\\\\\.)*\'/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[],"types":[],"usedGrammars":[]}'))),"PacketGrammar"),ne=m((()=>j??(j=d('{"$type":"Grammar","isDeclared":true,"name":"Pie","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Pie","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"pie"},{"$type":"Assignment","feature":"showData","operator":"?=","terminal":{"$type":"Keyword","value":"showData"},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]},{"$type":"Assignment","feature":"sections","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"PieSection","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}},{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"FLOAT_PIE","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/-?[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT_PIE","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/-?(0|[1-9][0-9]*)(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER_PIE","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@2"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@3"}}]},"fragment":false,"hidden":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@11"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@12"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|\'([^\'\\\\\\\\]|\\\\\\\\.)*\'/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[],"types":[],"usedGrammars":[]}'))),"PieGrammar"),re=m((()=>V??(V=d('{"$type":"Grammar","isDeclared":true,"name":"Architecture","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Architecture","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[],"cardinality":"*"},{"$type":"Keyword","value":"architecture-beta"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"Statement","definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"groups","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Assignment","feature":"services","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Assignment","feature":"junctions","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}},{"$type":"Assignment","feature":"edges","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"LeftPort","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":":"},{"$type":"Assignment","feature":"lhsDir","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"RightPort","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"rhsDir","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}},{"$type":"Keyword","value":":"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"Arrow","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]},{"$type":"Assignment","feature":"lhsInto","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"--"},{"$type":"Group","elements":[{"$type":"Keyword","value":"-"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]}},{"$type":"Keyword","value":"-"}]}]},{"$type":"Assignment","feature":"rhsInto","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Group","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"group"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Assignment","feature":"icon","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@28"},"arguments":[]},"cardinality":"?"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]},"cardinality":"?"},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Service","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"service"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"iconText","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]}},{"$type":"Assignment","feature":"icon","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@28"},"arguments":[]}}],"cardinality":"?"},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@29"},"arguments":[]},"cardinality":"?"},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Junction","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"junction"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"in"},{"$type":"Assignment","feature":"in","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Edge","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"lhsId","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Assignment","feature":"lhsGroup","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"Assignment","feature":"rhsId","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Assignment","feature":"rhsGroup","operator":"?=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]},"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"ARROW_DIRECTION","definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"L"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"R"}}]},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"T"}}]},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"B"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARROW_GROUP","definition":{"$type":"RegexToken","regex":"/\\\\{group\\\\}/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARROW_INTO","definition":{"$type":"RegexToken","regex":"/<|>/"},"fragment":false,"hidden":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@18"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@19"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|\'([^\'\\\\\\\\]|\\\\\\\\.)*\'/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false},{"$type":"TerminalRule","name":"ARCH_ICON","definition":{"$type":"RegexToken","regex":"/\\\\([\\\\w-:]+\\\\)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ARCH_TITLE","definition":{"$type":"RegexToken","regex":"/\\\\[[\\\\w ]+\\\\]/"},"fragment":false,"hidden":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[],"types":[],"usedGrammars":[]}'))),"ArchitectureGrammar"),ie=m((()=>H??(H=d('{"$type":"Grammar","isDeclared":true,"name":"GitGraph","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"GitGraph","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"Group","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"Keyword","value":":"}]},{"$type":"Keyword","value":"gitGraph:"},{"$type":"Group","elements":[{"$type":"Keyword","value":"gitGraph"},{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]},{"$type":"Keyword","value":":"}]}]},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]},{"$type":"Assignment","feature":"statements","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[]}}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Statement","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Direction","definition":{"$type":"Assignment","feature":"dir","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"LR"},{"$type":"Keyword","value":"TB"},{"$type":"Keyword","value":"BT"}]}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Commit","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"commit"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"msg:","cardinality":"?"},{"$type":"Assignment","feature":"message","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"type:"},{"$type":"Assignment","feature":"type","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"NORMAL"},{"$type":"Keyword","value":"REVERSE"},{"$type":"Keyword","value":"HIGHLIGHT"}]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Branch","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"branch"},{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]}},{"$type":"Group","elements":[{"$type":"Keyword","value":"order:"},{"$type":"Assignment","feature":"order","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}}],"cardinality":"?"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Merge","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"merge"},{"$type":"Assignment","feature":"branch","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]}},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"type:"},{"$type":"Assignment","feature":"type","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"NORMAL"},{"$type":"Keyword","value":"REVERSE"},{"$type":"Keyword","value":"HIGHLIGHT"}]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Checkout","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"checkout"},{"$type":"Keyword","value":"switch"}]},{"$type":"Assignment","feature":"branch","operator":"=","terminal":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@24"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"CherryPicking","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"cherry-pick"},{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Keyword","value":"id:"},{"$type":"Assignment","feature":"id","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"tag:"},{"$type":"Assignment","feature":"tags","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"parent:"},{"$type":"Assignment","feature":"parent","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@14"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@15"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|\'([^\'\\\\\\\\]|\\\\\\\\.)*\'/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false},{"$type":"TerminalRule","name":"REFERENCE","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\\\w([-\\\\./\\\\w]*[-\\\\w])?/"},"fragment":false,"hidden":false}],"definesHiddenTokens":false,"hiddenTokens":[],"interfaces":[],"types":[],"usedGrammars":[]}'))),"GitGraphGrammar"),se=m((()=>W??(W=d('{"$type":"Grammar","isDeclared":true,"name":"Radar","imports":[],"rules":[{"$type":"ParserRule","entry":true,"name":"Radar","definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"Keyword","value":"radar-beta"},{"$type":"Keyword","value":"radar-beta:"},{"$type":"Group","elements":[{"$type":"Keyword","value":"radar-beta"},{"$type":"Keyword","value":":"}]}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]},{"$type":"Group","elements":[{"$type":"Keyword","value":"axis"},{"$type":"Assignment","feature":"axes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"axes","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}}],"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"Keyword","value":"curve"},{"$type":"Assignment","feature":"curves","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"curves","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}}],"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"options","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"Assignment","feature":"options","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]}}],"cardinality":"*"}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"Label","definition":{"$type":"Group","elements":[{"$type":"Keyword","value":"["},{"$type":"Assignment","feature":"label","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]}},{"$type":"Keyword","value":"]"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Axis","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Curve","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@1"},"arguments":[],"cardinality":"?"},{"$type":"Keyword","value":"{"},{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]},{"$type":"Keyword","value":"}"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"Entries","definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]}}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"}]},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"Keyword","value":","},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"},{"$type":"Assignment","feature":"entries","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@5"},"arguments":[]}}],"cardinality":"*"},{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"*"}]}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"DetailedEntry","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"axis","operator":"=","terminal":{"$type":"CrossReference","type":{"$ref":"#/rules@2"},"terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},"deprecatedSyntax":false}},{"$type":"Keyword","value":":","cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"NumberEntry","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Option","definition":{"$type":"Alternatives","elements":[{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"showLegend"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@11"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"ticks"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"max"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"min"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}}]},{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"Keyword","value":"graticule"}},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]}}]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"GRATICULE","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"circle"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"polygon"}}]},"fragment":false,"hidden":false},{"$type":"ParserRule","fragment":true,"name":"EOL","dataType":"string","definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[],"cardinality":"+"},{"$type":"EndOfFile"}]},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Group","elements":[{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@12"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@13"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"FLOAT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/[0-9]+\\\\.[0-9]+(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"INT","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"RegexToken","regex":"/0|[1-9][0-9]*(?!\\\\.)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER","type":{"$type":"ReturnType","name":"number"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@15"}},{"$type":"TerminalRuleCall","rule":{"$ref":"#/rules@16"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STRING","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/\\"([^\\"\\\\\\\\]|\\\\\\\\.)*\\"|\'([^\'\\\\\\\\]|\\\\\\\\.)*\'/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID","type":{"$type":"ReturnType","name":"string"},"definition":{"$type":"RegexToken","regex":"/[\\\\w]([-\\\\w]*\\\\w)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NEWLINE","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WHITESPACE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"YAML","definition":{"$type":"RegexToken","regex":"/---[\\\\t ]*\\\\r?\\\\n(?:[\\\\S\\\\s]*?\\\\r?\\\\n)?---(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"DIRECTIVE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%{[\\\\S\\\\s]*?}%%(?:\\\\r?\\\\n|(?!\\\\S))/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"SINGLE_LINE_COMMENT","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*%%[^\\\\n\\\\r]*/"},"fragment":false}],"interfaces":[{"$type":"Interface","name":"Entry","attributes":[{"$type":"TypeAttribute","name":"axis","isOptional":true,"type":{"$type":"ReferenceType","referenceType":{"$type":"SimpleType","typeRef":{"$ref":"#/rules@2"}}}},{"$type":"TypeAttribute","name":"value","type":{"$type":"SimpleType","primitiveType":"number"},"isOptional":false}],"superTypes":[]}],"definesHiddenTokens":false,"hiddenTokens":[],"types":[],"usedGrammars":[]}'))),"RadarGrammar"),ae=m((()=>z??(z=d('{"$type":"Grammar","isDeclared":true,"name":"Treemap","rules":[{"$type":"ParserRule","fragment":true,"name":"TitleAndAccessibilities","definition":{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"accDescr","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@2"},"arguments":[]}},{"$type":"Assignment","feature":"accTitle","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@3"},"arguments":[]}},{"$type":"Assignment","feature":"title","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@4"},"arguments":[]}}],"cardinality":"+"},"definesHiddenTokens":false,"entry":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"BOOLEAN","type":{"$type":"ReturnType","name":"boolean"},"definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"true"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"false"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_DESCR","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accDescr(?:[\\\\t ]*:([^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)|\\\\s*{([^}]*)})/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ACC_TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*accTitle[\\\\t ]*:(?:[^\\\\n\\\\r]*?(?=%%)|[^\\\\n\\\\r]*)/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"TITLE","definition":{"$type":"RegexToken","regex":"/[\\\\t ]*title(?:[\\\\t ][^\\\\n\\\\r]*?(?=%%)|[\\\\t ][^\\\\n\\\\r]*|)/"},"fragment":false,"hidden":false},{"$type":"ParserRule","entry":true,"name":"Treemap","returnType":{"$ref":"#/interfaces@4"},"definition":{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@6"},"arguments":[]},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@0"},"arguments":[]},{"$type":"Assignment","feature":"TreemapRows","operator":"+=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@14"},"arguments":[]}}],"cardinality":"*"}]},"definesHiddenTokens":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"TREEMAP_KEYWORD","definition":{"$type":"TerminalAlternatives","elements":[{"$type":"CharacterRange","left":{"$type":"Keyword","value":"treemap-beta"}},{"$type":"CharacterRange","left":{"$type":"Keyword","value":"treemap"}}]},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"CLASS_DEF","definition":{"$type":"RegexToken","regex":"/classDef\\\\s+([a-zA-Z_][a-zA-Z0-9_]+)(?:\\\\s+([^;\\\\r\\\\n]*))?(?:;)?/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"STYLE_SEPARATOR","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":":::"}},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"SEPARATOR","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":":"}},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"COMMA","definition":{"$type":"CharacterRange","left":{"$type":"Keyword","value":","}},"fragment":false,"hidden":false},{"$type":"TerminalRule","hidden":true,"name":"WS","definition":{"$type":"RegexToken","regex":"/[ \\\\t]+/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"ML_COMMENT","definition":{"$type":"RegexToken","regex":"/\\\\%\\\\%[^\\\\n]*/"},"fragment":false},{"$type":"TerminalRule","hidden":true,"name":"NL","definition":{"$type":"RegexToken","regex":"/\\\\r?\\\\n/"},"fragment":false},{"$type":"ParserRule","name":"TreemapRow","definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"indent","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[]},"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"Assignment","feature":"item","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@16"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@15"},"arguments":[]}]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"ClassDef","dataType":"string","definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@7"},"arguments":[]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Item","returnType":{"$ref":"#/interfaces@0"},"definition":{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@18"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@17"},"arguments":[]}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Section","returnType":{"$ref":"#/interfaces@1"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]},{"$type":"Assignment","feature":"classSelector","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"ParserRule","name":"Leaf","returnType":{"$ref":"#/interfaces@2"},"definition":{"$type":"Group","elements":[{"$type":"Assignment","feature":"name","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@23"},"arguments":[]}},{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[],"cardinality":"?"},{"$type":"Alternatives","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@9"},"arguments":[]},{"$type":"RuleCall","rule":{"$ref":"#/rules@10"},"arguments":[]}]},{"$type":"RuleCall","rule":{"$ref":"#/rules@19"},"arguments":[],"cardinality":"?"},{"$type":"Assignment","feature":"value","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@22"},"arguments":[]}},{"$type":"Group","elements":[{"$type":"RuleCall","rule":{"$ref":"#/rules@8"},"arguments":[]},{"$type":"Assignment","feature":"classSelector","operator":"=","terminal":{"$type":"RuleCall","rule":{"$ref":"#/rules@20"},"arguments":[]}}],"cardinality":"?"}]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"INDENTATION","definition":{"$type":"RegexToken","regex":"/[ \\\\t]{1,}/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"ID2","definition":{"$type":"RegexToken","regex":"/[a-zA-Z_][a-zA-Z0-9_]*/"},"fragment":false,"hidden":false},{"$type":"TerminalRule","name":"NUMBER2","definition":{"$type":"RegexToken","regex":"/[0-9_\\\\.\\\\,]+/"},"fragment":false,"hidden":false},{"$type":"ParserRule","name":"MyNumber","dataType":"number","definition":{"$type":"RuleCall","rule":{"$ref":"#/rules@21"},"arguments":[]},"definesHiddenTokens":false,"entry":false,"fragment":false,"hiddenTokens":[],"parameters":[],"wildcard":false},{"$type":"TerminalRule","name":"STRING2","definition":{"$type":"RegexToken","regex":"/\\"[^\\"]*\\"|\'[^\']*\'/"},"fragment":false,"hidden":false}],"interfaces":[{"$type":"Interface","name":"Item","attributes":[{"$type":"TypeAttribute","name":"name","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false},{"$type":"TypeAttribute","name":"classSelector","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]},{"$type":"Interface","name":"Section","superTypes":[{"$ref":"#/interfaces@0"}],"attributes":[]},{"$type":"Interface","name":"Leaf","superTypes":[{"$ref":"#/interfaces@0"}],"attributes":[{"$type":"TypeAttribute","name":"value","type":{"$type":"SimpleType","primitiveType":"number"},"isOptional":false}]},{"$type":"Interface","name":"ClassDefStatement","attributes":[{"$type":"TypeAttribute","name":"className","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false},{"$type":"TypeAttribute","name":"styleText","type":{"$type":"SimpleType","primitiveType":"string"},"isOptional":false}],"superTypes":[]},{"$type":"Interface","name":"Treemap","attributes":[{"$type":"TypeAttribute","name":"TreemapRows","type":{"$type":"ArrayType","elementType":{"$type":"SimpleType","typeRef":{"$ref":"#/rules@14"}}},"isOptional":false},{"$type":"TypeAttribute","name":"title","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accTitle","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}},{"$type":"TypeAttribute","name":"accDescr","isOptional":true,"type":{"$type":"SimpleType","primitiveType":"string"}}],"superTypes":[]}],"definesHiddenTokens":false,"hiddenTokens":[],"imports":[],"types":[],"usedGrammars":[],"$comment":"/**\\n * Treemap grammar for Langium\\n * Converted from mindmap grammar\\n *\\n * The ML_COMMENT and NL hidden terminals handle whitespace, comments, and newlines\\n * before the treemap keyword, allowing for empty lines and comments before the\\n * treemap declaration.\\n */"}'))),"TreemapGrammar"),oe={languageId:"info",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},le={languageId:"packet",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},ce={languageId:"pie",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},ue={languageId:"architecture",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},de={languageId:"gitGraph",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},he={languageId:"radar",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},fe={languageId:"treemap",fileExtensions:[".mmd",".mermaid"],caseInsensitive:!1,mode:"production"},pe={AstReflection:m((()=>new Z),"AstReflection")},me={Grammar:m((()=>ee()),"Grammar"),LanguageMetaData:m((()=>oe),"LanguageMetaData"),parser:{}},ge={Grammar:m((()=>te()),"Grammar"),LanguageMetaData:m((()=>le),"LanguageMetaData"),parser:{}},ye={Grammar:m((()=>ne()),"Grammar"),LanguageMetaData:m((()=>ce),"LanguageMetaData"),parser:{}},Te={Grammar:m((()=>re()),"Grammar"),LanguageMetaData:m((()=>ue),"LanguageMetaData"),parser:{}},Ae={Grammar:m((()=>ie()),"Grammar"),LanguageMetaData:m((()=>de),"LanguageMetaData"),parser:{}},ve={Grammar:m((()=>se()),"Grammar"),LanguageMetaData:m((()=>he),"LanguageMetaData"),parser:{}},Re={Grammar:m((()=>ae()),"Grammar"),LanguageMetaData:m((()=>fe),"LanguageMetaData"),parser:{}},$e={ACC_DESCR:/accDescr(?:[\t ]*:([^\n\r]*)|\s*{([^}]*)})/,ACC_TITLE:/accTitle[\t ]*:([^\n\r]*)/,TITLE:/title([\t ][^\n\r]*|)/},Ee=class extends h.d{static{m(this,"AbstractMermaidValueConverter")}runConverter(e,t,n){let r=this.runCommonConverter(e,t,n);return void 0===r&&(r=this.runCustomConverter(e,t,n)),void 0===r?super.runConverter(e,t,n):r}runCommonConverter(e,t,n){const r=$e[e.name];if(void 0===r)return;const i=r.exec(t);return null!==i?void 0!==i[1]?i[1].trim().replace(/[\t ]{2,}/gm," "):void 0!==i[2]?i[2].replace(/^\s*/gm,"").replace(/\s+$/gm,"").replace(/[\t ]{2,}/gm," ").replace(/[\n\r]{2,}/gm,"\n"):void 0:void 0}},ke=class extends Ee{static{m(this,"CommonValueConverter")}runCustomConverter(e,t,n){}},xe=class extends f.Q{static{m(this,"AbstractMermaidTokenBuilder")}constructor(e){super(),this.keywords=new Set(e)}buildKeywordTokens(e,t,n){const r=super.buildKeywordTokens(e,t,n);return r.forEach((e=>{this.keywords.has(e.name)&&void 0!==e.PATTERN&&(e.PATTERN=new RegExp(e.PATTERN.toString()+"(?:(?=%%)|(?!\\S))"))})),r}};(class extends xe{static{m(this,"CommonTokenBuilder")}})},51633:(e,t,n)=>{n.d(t,{d:()=>f});var r=n(87960),i=n(51917),s=n(39364),a=n(98913),o=class extends r.mR{static{(0,r.K2)(this,"TreemapTokenBuilder")}constructor(){super(["treemap"])}},l=/classDef\s+([A-Z_a-z]\w+)(?:\s+([^\n\r;]*))?;?/,c=class extends r.dg{static{(0,r.K2)(this,"TreemapValueConverter")}runCustomConverter(e,t,n){if("NUMBER2"===e.name)return parseFloat(t.replace(/,/g,""));if("SEPARATOR"===e.name)return t.substring(1,t.length-1);if("STRING2"===e.name)return t.substring(1,t.length-1);if("INDENTATION"===e.name)return t.length;if("ClassDef"===e.name){if("string"!=typeof t)return t;const e=l.exec(t);if(e)return{$type:"ClassDefStatement",className:e[1],styleText:e[2]||void 0}}}};function u(e){const t=e.validation.TreemapValidator,n=e.validation.ValidationRegistry;if(n){const e={Treemap:t.checkSingleRoot.bind(t)};n.register(e,t)}}(0,r.K2)(u,"registerValidationChecks");var d=class{static{(0,r.K2)(this,"TreemapValidator")}checkSingleRoot(e,t){let n;for(const r of e.TreemapRows)r.item&&(void 0===n&&void 0===r.indent?n=0:(void 0===r.indent||void 0!==n&&n>=parseInt(r.indent,10))&&t("error","Multiple root nodes are not allowed in a treemap.",{node:r,property:"item"}))}},h={parser:{TokenBuilder:(0,r.K2)((()=>new o),"TokenBuilder"),ValueConverter:(0,r.K2)((()=>new c),"ValueConverter")},validation:{TreemapValidator:(0,r.K2)((()=>new d),"TreemapValidator")}};function f(e=i.D){const t=(0,s.WQ)((0,a.u)(e),r.sr),n=(0,s.WQ)((0,a.t)({shared:t}),r.eV,h);return t.ServiceRegistry.register(n),u(n),{shared:t,Treemap:n}}(0,r.K2)(f,"createTreemapServices")},91885:(e,t,n)=>{n.d(t,{v:()=>c});var r=n(87960),i=n(51917),s=n(39364),a=n(98913),o=class extends r.mR{static{(0,r.K2)(this,"InfoTokenBuilder")}constructor(){super(["info","showInfo"])}},l={parser:{TokenBuilder:(0,r.K2)((()=>new o),"TokenBuilder"),ValueConverter:(0,r.K2)((()=>new r.Tm),"ValueConverter")}};function c(e=i.D){const t=(0,s.WQ)((0,a.u)(e),r.sr),n=(0,s.WQ)((0,a.t)({shared:t}),r.e5,l);return t.ServiceRegistry.register(n),{shared:t,Info:n}}(0,r.K2)(c,"createInfoServices")},87846:(e,t,n)=>{n.d(t,{f:()=>c});var r=n(87960),i=n(51917),s=n(39364),a=n(98913),o=class extends r.mR{static{(0,r.K2)(this,"RadarTokenBuilder")}constructor(){super(["radar-beta"])}},l={parser:{TokenBuilder:(0,r.K2)((()=>new o),"TokenBuilder"),ValueConverter:(0,r.K2)((()=>new r.Tm),"ValueConverter")}};function c(e=i.D){const t=(0,s.WQ)((0,a.u)(e),r.sr),n=(0,s.WQ)((0,a.t)({shared:t}),r.YP,l);return t.ServiceRegistry.register(n),{shared:t,Radar:n}}(0,r.K2)(c,"createRadarServices")},38980:(e,t,n)=>{n.d(t,{S:()=>u});var r=n(87960),i=n(51917),s=n(39364),a=n(98913),o=class extends r.mR{static{(0,r.K2)(this,"ArchitectureTokenBuilder")}constructor(){super(["architecture"])}},l=class extends r.dg{static{(0,r.K2)(this,"ArchitectureValueConverter")}runCustomConverter(e,t,n){return"ARCH_ICON"===e.name?t.replace(/[()]/g,"").trim():"ARCH_TEXT_ICON"===e.name?t.replace(/["()]/g,""):"ARCH_TITLE"===e.name?t.replace(/[[\]]/g,"").trim():void 0}},c={parser:{TokenBuilder:(0,r.K2)((()=>new o),"TokenBuilder"),ValueConverter:(0,r.K2)((()=>new l),"ValueConverter")}};function u(e=i.D){const t=(0,s.WQ)((0,a.u)(e),r.sr),n=(0,s.WQ)((0,a.t)({shared:t}),r.jE,c);return t.ServiceRegistry.register(n),{shared:t,Architecture:n}}(0,r.K2)(u,"createArchitectureServices")},67539:(e,t,n)=>{n.d(t,{b:()=>c});var r=n(87960),i=n(51917),s=n(39364),a=n(98913),o=class extends r.mR{static{(0,r.K2)(this,"GitGraphTokenBuilder")}constructor(){super(["gitGraph"])}},l={parser:{TokenBuilder:(0,r.K2)((()=>new o),"TokenBuilder"),ValueConverter:(0,r.K2)((()=>new r.Tm),"ValueConverter")}};function c(e=i.D){const t=(0,s.WQ)((0,a.u)(e),r.sr),n=(0,s.WQ)((0,a.t)({shared:t}),r.eZ,l);return t.ServiceRegistry.register(n),{shared:t,GitGraph:n}}(0,r.K2)(c,"createGitGraphServices")},69150:(e,t,n)=>{n.d(t,{f:()=>u});var r=n(87960),i=n(51917),s=n(39364),a=n(98913),o=class extends r.mR{static{(0,r.K2)(this,"PieTokenBuilder")}constructor(){super(["pie","showData"])}},l=class extends r.dg{static{(0,r.K2)(this,"PieValueConverter")}runCustomConverter(e,t,n){if("PIE_SECTION_LABEL"===e.name)return t.replace(/"/g,"").trim()}},c={parser:{TokenBuilder:(0,r.K2)((()=>new o),"TokenBuilder"),ValueConverter:(0,r.K2)((()=>new l),"ValueConverter")}};function u(e=i.D){const t=(0,s.WQ)((0,a.u)(e),r.sr),n=(0,s.WQ)((0,a.t)({shared:t}),r.KX,c);return t.ServiceRegistry.register(n),{shared:t,Pie:n}}(0,r.K2)(u,"createPieServices")},78731:(e,t,n)=>{n.d(t,{qg:()=>a});n(67539),n(91885),n(51477),n(69150),n(38980),n(87846),n(51633);var r=n(87960),i={},s={info:(0,r.K2)((async()=>{const{createInfoServices:e}=await n.e(3490).then(n.bind(n,3490)),t=e().Info.parser.LangiumParser;i.info=t}),"info"),packet:(0,r.K2)((async()=>{const{createPacketServices:e}=await n.e(2325).then(n.bind(n,2325)),t=e().Packet.parser.LangiumParser;i.packet=t}),"packet"),pie:(0,r.K2)((async()=>{const{createPieServices:e}=await n.e(617).then(n.bind(n,50617)),t=e().Pie.parser.LangiumParser;i.pie=t}),"pie"),architecture:(0,r.K2)((async()=>{const{createArchitectureServices:e}=await n.e(6366).then(n.bind(n,86366)),t=e().Architecture.parser.LangiumParser;i.architecture=t}),"architecture"),gitGraph:(0,r.K2)((async()=>{const{createGitGraphServices:e}=await n.e(4250).then(n.bind(n,81869)),t=e().GitGraph.parser.LangiumParser;i.gitGraph=t}),"gitGraph"),radar:(0,r.K2)((async()=>{const{createRadarServices:e}=await n.e(1e3).then(n.bind(n,91e3)),t=e().Radar.parser.LangiumParser;i.radar=t}),"radar"),treemap:(0,r.K2)((async()=>{const{createTreemapServices:e}=await n.e(5901).then(n.bind(n,75901)),t=e().Treemap.parser.LangiumParser;i.treemap=t}),"treemap")};async function a(e,t){const n=s[e];if(!n)throw new Error(`Unknown diagram type: ${e}`);i[e]||await n();const r=i[e].parse(t);if(r.lexerErrors.length>0||r.parserErrors.length>0)throw new o(r);return r.value}(0,r.K2)(a,"parse");var o=class extends Error{constructor(e){super(`Parsing failed: ${e.lexerErrors.map((e=>e.message)).join("\n")} ${e.parserErrors.map((e=>e.message)).join("\n")}`),this.result=e}static{(0,r.K2)(this,"MermaidParseError")}}},69637:(e,t,n)=>{n.d(t,{ak:()=>V,mT:()=>Pr,LT:()=>Xt,jr:()=>Dr,T6:()=>dr,JG:()=>Mt,wL:()=>M,c$:()=>F,Y2:()=>B,$P:()=>G,Cy:()=>K,Pp:()=>j,BK:()=>H,PW:()=>Ot,my:()=>Zt,jk:()=>En,Sk:()=>Dt,G:()=>Qt});var r=n(8058),i=n(38207),s=n(66401),a=n(74722),o=n(48585),l=n(50053);function c(e){function t(){}t.prototype=e;const n=new t;function r(){return typeof n.bar}return r(),r(),e}const u=function(e,t,n){var r=-1,i=e.length;t<0&&(t=-t>i?0:i+t),(n=n>i?i:n)<0&&(n+=i),i=t>n?0:n-t>>>0,t>>>=0;for(var s=Array(i);++r{t.accept(e)}))}}class M extends P{constructor(e){super([]),this.idx=1,R(this,I(e,(e=>void 0!==e)))}set definition(e){}get definition(){return void 0!==this.referencedRule?this.referencedRule.definition:[]}accept(e){e.visit(this)}}class D extends P{constructor(e){super(e.definition),this.orgText="",R(this,I(e,(e=>void 0!==e)))}}class U extends P{constructor(e){super(e.definition),this.ignoreAmbiguities=!1,R(this,I(e,(e=>void 0!==e)))}}class F extends P{constructor(e){super(e.definition),this.idx=1,R(this,I(e,(e=>void 0!==e)))}}class G extends P{constructor(e){super(e.definition),this.idx=1,R(this,I(e,(e=>void 0!==e)))}}class K extends P{constructor(e){super(e.definition),this.idx=1,R(this,I(e,(e=>void 0!==e)))}}class B extends P{constructor(e){super(e.definition),this.idx=1,R(this,I(e,(e=>void 0!==e)))}}class j extends P{constructor(e){super(e.definition),this.idx=1,R(this,I(e,(e=>void 0!==e)))}}class V extends P{get definition(){return this._definition}set definition(e){this._definition=e}constructor(e){super(e.definition),this.idx=1,this.ignoreAmbiguities=!1,this.hasPredicates=!1,R(this,I(e,(e=>void 0!==e)))}}class H{constructor(e){this.idx=1,R(this,I(e,(e=>void 0!==e)))}accept(e){e.visit(this)}}function W(e){function t(e){return(0,a.A)(e,W)}if(e instanceof M){const t={type:"NonTerminal",name:e.nonTerminalName,idx:e.idx};return(0,f.A)(e.label)&&(t.label=e.label),t}if(e instanceof U)return{type:"Alternative",definition:t(e.definition)};if(e instanceof F)return{type:"Option",idx:e.idx,definition:t(e.definition)};if(e instanceof G)return{type:"RepetitionMandatory",idx:e.idx,definition:t(e.definition)};if(e instanceof K)return{type:"RepetitionMandatoryWithSeparator",idx:e.idx,separator:W(new H({terminalType:e.separator})),definition:t(e.definition)};if(e instanceof j)return{type:"RepetitionWithSeparator",idx:e.idx,separator:W(new H({terminalType:e.separator})),definition:t(e.definition)};if(e instanceof B)return{type:"Repetition",idx:e.idx,definition:t(e.definition)};if(e instanceof V)return{type:"Alternation",idx:e.idx,definition:t(e.definition)};if(e instanceof H){const t={type:"Terminal",name:e.terminalType.name,label:_(e.terminalType),idx:e.idx};(0,f.A)(e.label)&&(t.terminalLabel=e.label);const n=e.terminalType.PATTERN;return e.terminalType.PATTERN&&(t.pattern=O(n)?n.source:n),t}if(e instanceof D)return{type:"Rule",name:e.name,orgText:e.orgText,definition:t(e.definition)};throw Error("non exhaustive match")}class z{visit(e){const t=e;switch(t.constructor){case M:return this.visitNonTerminal(t);case U:return this.visitAlternative(t);case F:return this.visitOption(t);case G:return this.visitRepetitionMandatory(t);case K:return this.visitRepetitionMandatoryWithSeparator(t);case j:return this.visitRepetitionWithSeparator(t);case B:return this.visitRepetition(t);case V:return this.visitAlternation(t);case H:return this.visitTerminal(t);case D:return this.visitRule(t);default:throw Error("non exhaustive match")}}visitNonTerminal(e){}visitAlternative(e){}visitOption(e){}visitRepetition(e){}visitRepetitionMandatory(e){}visitRepetitionMandatoryWithSeparator(e){}visitRepetitionWithSeparator(e){}visitAlternation(e){}visitTerminal(e){}visitRule(e){}}var Y=n(63736),X=n(6240);const q=function(e,t){var n;return(0,X.A)(e,(function(e,r,i){return!(n=t(e,r,i))})),!!n};var Q=n(92049),Z=n(6832);const J=function(e,t,n){var r=(0,Q.A)(e)?Y.A:q;return n&&(0,Z.A)(e,t,n)&&(t=void 0),r(e,(0,E.A)(t,3))};var ee=n(60818),te=Math.max;const ne=function(e,t,n,r){e=(0,y.A)(e)?e:(0,i.A)(e),n=n&&!r?(0,d.A)(n):0;var s=e.length;return n<0&&(n=te(s+n,0)),(0,f.A)(e)?n<=s&&e.indexOf(t,n)>-1:!!s&&(0,ee.A)(e,t,n)>-1};const re=function(e,t){for(var n=-1,r=null==e?0:e.length;++nae(e,t))):!(e instanceof M&&ne(t,e))&&(e instanceof P&&(e instanceof M&&t.push(e),se(e.definition,(e=>ae(e,t))))))}function oe(e){if(e instanceof M)return"SUBRULE";if(e instanceof F)return"OPTION";if(e instanceof V)return"OR";if(e instanceof G)return"AT_LEAST_ONE";if(e instanceof K)return"AT_LEAST_ONE_SEP";if(e instanceof j)return"MANY_SEP";if(e instanceof B)return"MANY";if(e instanceof H)return"CONSUME";throw Error("non exhaustive match")}class le{walk(e,t=[]){(0,r.A)(e.definition,((n,r)=>{const i=h(e.definition,r+1);if(n instanceof M)this.walkProdRef(n,i,t);else if(n instanceof H)this.walkTerminal(n,i,t);else if(n instanceof U)this.walkFlat(n,i,t);else if(n instanceof F)this.walkOption(n,i,t);else if(n instanceof G)this.walkAtLeastOne(n,i,t);else if(n instanceof K)this.walkAtLeastOneSep(n,i,t);else if(n instanceof j)this.walkManySep(n,i,t);else if(n instanceof B)this.walkMany(n,i,t);else{if(!(n instanceof V))throw Error("non exhaustive match");this.walkOr(n,i,t)}}))}walkTerminal(e,t,n){}walkProdRef(e,t,n){}walkFlat(e,t,n){const r=t.concat(n);this.walk(e,r)}walkOption(e,t,n){const r=t.concat(n);this.walk(e,r)}walkAtLeastOne(e,t,n){const r=[new F({definition:e.definition})].concat(t,n);this.walk(e,r)}walkAtLeastOneSep(e,t,n){const r=ce(e,t,n);this.walk(e,r)}walkMany(e,t,n){const r=[new F({definition:e.definition})].concat(t,n);this.walk(e,r)}walkManySep(e,t,n){const r=ce(e,t,n);this.walk(e,r)}walkOr(e,t,n){const i=t.concat(n);(0,r.A)(e.definition,(e=>{const t=new U({definition:[e]});this.walk(t,i)}))}}function ce(e,t,n){return[new F({definition:[new H({terminalType:e.separator})].concat(e.definition)})].concat(t,n)}var ue=n(99902);const de=function(e){return e&&e.length?(0,ue.A)(e):[]};var he=n(34098);function fe(e){if(e instanceof M)return fe(e.referencedRule);if(e instanceof H)return[e.terminalType];if(function(e){return e instanceof U||e instanceof F||e instanceof B||e instanceof G||e instanceof K||e instanceof j||e instanceof H||e instanceof D}(e))return function(e){let t=[];const n=e.definition;let r,i=0,s=n.length>i,a=!0;for(;s&&a;)r=n[i],a=ae(r),t=t.concat(fe(r)),i+=1,s=n.length>i;return de(t)}(e);if(function(e){return e instanceof V}(e))return function(e){const t=(0,a.A)(e.definition,(e=>fe(e)));return de((0,he.A)(t))}(e);throw Error("non exhaustive match")}const pe="_~IN~_";class me extends le{constructor(e){super(),this.topProd=e,this.follows={}}startWalking(){return this.walk(this.topProd),this.follows}walkTerminal(e,t,n){}walkProdRef(e,t,n){const r=(i=e.referencedRule,s=e.idx,i.name+s+pe+this.topProd.name);var i,s;const a=t.concat(n),o=fe(new U({definition:a}));this.follows[r]=o}}var ge=n(69592),ye=n(85186),Te=n(23068),Ae=n(2634),ve=n(51790);const Re=function(e){if("function"!=typeof e)throw new TypeError("Expected a function");return function(){var t=arguments;switch(t.length){case 0:return!e.call(this);case 1:return!e.call(this,t[0]);case 2:return!e.call(this,t[0],t[1]);case 3:return!e.call(this,t[0],t[1],t[2])}return!e.apply(this,t)}};const $e=function(e,t){return((0,Q.A)(e)?Ae.A:ve.A)(e,Re((0,E.A)(t,3)))};var Ee=n(89610),ke=Math.max;const xe=function(e,t,n){var r=null==e?0:e.length;if(!r)return-1;var i=null==n?0:(0,d.A)(n);return i<0&&(i=ke(r+i,0)),(0,ee.A)(e,t,i)};var Ie=n(89463),Se=n(94092),Ne=n(62062),Ce=n(83149),we=n(87809),Le=n(64099);const be=function(e,t,n,r){var i=-1,s=Ce.A,a=!0,o=e.length,l=[],c=t.length;if(!o)return l;n&&(t=(0,$.A)(t,(0,w.A)(n))),r?(s=we.A,a=!1):t.length>=200&&(s=Le.A,a=!1,t=new Ne.A(t));e:for(;++i\n\tComplement Sets cannot be automatically optimized.\n\tThis will disable the lexer's first char optimizations.\n\tSee: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#COMPLEMENT for details.`);else{let n="";t&&(n="\n\tThis will disable the lexer's first char optimizations.\n\tSee: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#REGEXP_PARSING for details."),Ge(`${We}\n\tFailed parsing: < ${e.toString()} >\n\tUsing the @chevrotain/regexp-to-ast library\n\tPlease open an issue at: https://github.com/chevrotain/chevrotain/issues`+n)}}return[]}function Ye(e,t,n){switch(e.type){case"Disjunction":for(let r=0;r{if("number"==typeof e)Xe(e,t,n);else{const r=e;if(!0===n)for(let e=r.from;e<=r.to;e++)Xe(e,t,n);else{for(let e=r.from;e<=r.to&&e=yt){const e=r.from>=yt?r.from:yt,n=r.to,i=At(e),s=At(n);for(let r=i;r<=s;r++)t[r]=r}}}}));break;case"Group":Ye(a.value,t,n);break;default:throw Error("Non Exhaustive Match")}const o=void 0!==a.quantifier&&0===a.quantifier.atLeast;if("Group"===a.type&&!1===Qe(a)||"Group"!==a.type&&!1===o)break}break;default:throw Error("non exhaustive match!")}return(0,i.A)(t)}function Xe(e,t,n){const r=At(e);t[r]=r,!0===n&&function(e,t){const n=String.fromCharCode(e),r=n.toUpperCase();if(r!==n){const e=At(r.charCodeAt(0));t[e]=e}else{const e=n.toLowerCase();if(e!==n){const n=At(e.charCodeAt(0));t[n]=n}}}(e,t)}function qe(e,t){return(0,Fe.A)(e.value,(e=>{if("number"==typeof e)return ne(t,e);{const n=e;return void 0!==(0,Fe.A)(t,(e=>n.from<=e&&e<=n.to))}}))}function Qe(e){const t=e.quantifier;return!(!t||0!==t.atLeast)||!!e.value&&((0,Q.A)(e.value)?se(e.value,Qe):Qe(e.value))}class Ze extends ye.z{constructor(e){super(),this.targetCharCodes=e,this.found=!1}visitChildren(e){if(!0!==this.found){switch(e.type){case"Lookahead":return void this.visitLookahead(e);case"NegativeLookahead":return void this.visitNegativeLookahead(e)}super.visitChildren(e)}}visitCharacter(e){ne(this.targetCharCodes,e.value)&&(this.found=!0)}visitSet(e){e.complement?void 0===qe(e,this.targetCharCodes)&&(this.found=!0):void 0!==qe(e,this.targetCharCodes)&&(this.found=!0)}}function Je(e,t){if(t instanceof RegExp){const n=Ve(t),r=new Ze(e);return r.visit(n),r.found}return void 0!==(0,Fe.A)(t,(t=>ne(e,t.charCodeAt(0))))}const et="PATTERN",tt="defaultMode",nt="modes";let rt="boolean"==typeof new RegExp("(?:)").sticky;function it(e,t){const n=(t=(0,Te.A)(t,{useSticky:rt,debug:!1,safeMode:!1,positionTracking:"full",lineTerminatorCharacters:["\r","\n"],tracer:(e,t)=>t()})).tracer;let i;n("initCharCodeToOptimizedIndexMap",(()=>{!function(){if((0,s.A)(Tt)){Tt=new Array(65536);for(let e=0;e<65536;e++)Tt[e]=e>255?255+~~(e/255):e}}()})),n("Reject Lexer.NA",(()=>{i=$e(e,(e=>e[et]===Mt.NA))}));let l,c,u,d,h,p,m,g,y,T,A,v=!1;n("Transform Patterns",(()=>{v=!1,l=(0,a.A)(i,(e=>{const n=e[et];if(O(n)){const e=n.source;return 1!==e.length||"^"===e||"$"===e||"."===e||n.ignoreCase?2!==e.length||"\\"!==e[0]||ne(["d","D","s","S","t","r","n","t","0","c","b","B","f","v","w","W"],e[1])?t.useSticky?ct(n):lt(n):e[1]:e}if((0,Ee.A)(n))return v=!0,{exec:n};if("object"==typeof n)return v=!0,n;if("string"==typeof n){if(1===n.length)return n;{const e=n.replace(/[\\^$.*+?()[\]{}|]/g,"\\$&"),r=new RegExp(e);return t.useSticky?ct(r):lt(r)}}throw Error("non exhaustive match")}))})),n("misc mapping",(()=>{c=(0,a.A)(i,(e=>e.tokenTypeIdx)),u=(0,a.A)(i,(e=>{const t=e.GROUP;if(t!==Mt.SKIPPED){if((0,f.A)(t))return t;if((0,ge.A)(t))return!1;throw Error("non exhaustive match")}})),d=(0,a.A)(i,(e=>{const t=e.LONGER_ALT;if(t){return(0,Q.A)(t)?(0,a.A)(t,(e=>xe(i,e))):[xe(i,t)]}})),h=(0,a.A)(i,(e=>e.PUSH_MODE)),p=(0,a.A)(i,(e=>(0,o.A)(e,"POP_MODE")))})),n("Line Terminator Handling",(()=>{const e=mt(t.lineTerminatorCharacters);m=(0,a.A)(i,(e=>!1)),"onlyOffset"!==t.positionTracking&&(m=(0,a.A)(i,(t=>(0,o.A)(t,"LINE_BREAKS")?!!t.LINE_BREAKS:!1===pt(t,e)&&Je(e,t.PATTERN))))})),n("Misc Mapping #2",(()=>{g=(0,a.A)(i,dt),y=(0,a.A)(l,ht),T=(0,Ie.A)(i,((e,t)=>{const n=t.GROUP;return(0,f.A)(n)&&n!==Mt.SKIPPED&&(e[n]=[]),e}),{}),A=(0,a.A)(l,((e,t)=>({pattern:l[t],longerAlt:d[t],canLineTerminator:m[t],isCustom:g[t],short:y[t],group:u[t],push:h[t],pop:p[t],tokenTypeIdx:c[t],tokenType:i[t]})))}));let R=!0,$=[];return t.safeMode||n("First Char Optimization",(()=>{$=(0,Ie.A)(i,((e,n,i)=>{if("string"==typeof n.PATTERN){const t=At(n.PATTERN.charCodeAt(0));gt(e,t,A[i])}else if((0,Q.A)(n.START_CHARS_HINT)){let t;(0,r.A)(n.START_CHARS_HINT,(n=>{const r=At("string"==typeof n?n.charCodeAt(0):n);t!==r&&(t=r,gt(e,r,A[i]))}))}else if(O(n.PATTERN))if(n.PATTERN.unicode)R=!1,t.ensureOptimizations&&Ge(`${We}\tUnable to analyze < ${n.PATTERN.toString()} > pattern.\n\tThe regexp unicode flag is not currently supported by the regexp-to-ast library.\n\tThis will disable the lexer's first char optimizations.\n\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNICODE_OPTIMIZE`);else{const a=ze(n.PATTERN,t.ensureOptimizations);(0,s.A)(a)&&(R=!1),(0,r.A)(a,(t=>{gt(e,t,A[i])}))}else t.ensureOptimizations&&Ge(`${We}\tTokenType: <${n.name}> is using a custom token pattern without providing parameter.\n\tThis will disable the lexer's first char optimizations.\n\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_OPTIMIZE`),R=!1;return e}),[])})),{emptyGroups:T,patternIdxToConfig:A,charCodeToPatternIdxToConfig:$,hasCustom:v,canBeOptimized:R}}function st(e,t){let n=[];const i=function(e){const t=(0,Se.A)(e,(e=>!(0,o.A)(e,et))),n=(0,a.A)(t,(e=>({message:"Token Type: ->"+e.name+"<- missing static 'PATTERN' property",type:_t.MISSING_PATTERN,tokenTypes:[e]}))),r=Me(e,t);return{errors:n,valid:r}}(e);n=n.concat(i.errors);const s=function(e){const t=(0,Se.A)(e,(e=>{const t=e[et];return!(O(t)||(0,Ee.A)(t)||(0,o.A)(t,"exec")||(0,f.A)(t))})),n=(0,a.A)(t,(e=>({message:"Token Type: ->"+e.name+"<- static 'PATTERN' can only be a RegExp, a Function matching the {CustomPatternMatcherFunc} type or an Object matching the {ICustomPattern} interface.",type:_t.INVALID_PATTERN,tokenTypes:[e]}))),r=Me(e,t);return{errors:n,valid:r}}(i.valid),l=s.valid;return n=n.concat(s.errors),n=n.concat(function(e){let t=[];const n=(0,Se.A)(e,(e=>O(e[et])));return t=t.concat(function(e){class t extends ye.z{constructor(){super(...arguments),this.found=!1}visitEndAnchor(e){this.found=!0}}const n=(0,Se.A)(e,(e=>{const n=e.PATTERN;try{const e=Ve(n),r=new t;return r.visit(e),r.found}catch(r){return at.test(n.source)}})),r=(0,a.A)(n,(e=>({message:"Unexpected RegExp Anchor Error:\n\tToken Type: ->"+e.name+"<- static 'PATTERN' cannot contain end of input anchor '$'\n\tSee chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS\tfor details.",type:_t.EOI_ANCHOR_FOUND,tokenTypes:[e]})));return r}(n)),t=t.concat(function(e){class t extends ye.z{constructor(){super(...arguments),this.found=!1}visitStartAnchor(e){this.found=!0}}const n=(0,Se.A)(e,(e=>{const n=e.PATTERN;try{const e=Ve(n),r=new t;return r.visit(e),r.found}catch(r){return ot.test(n.source)}})),r=(0,a.A)(n,(e=>({message:"Unexpected RegExp Anchor Error:\n\tToken Type: ->"+e.name+"<- static 'PATTERN' cannot contain start of input anchor '^'\n\tSee https://chevrotain.io/docs/guide/resolving_lexer_errors.html#ANCHORS\tfor details.",type:_t.SOI_ANCHOR_FOUND,tokenTypes:[e]})));return r}(n)),t=t.concat(function(e){const t=(0,Se.A)(e,(e=>{const t=e[et];return t instanceof RegExp&&(t.multiline||t.global)})),n=(0,a.A)(t,(e=>({message:"Token Type: ->"+e.name+"<- static 'PATTERN' may NOT contain global('g') or multiline('m')",type:_t.UNSUPPORTED_FLAGS_FOUND,tokenTypes:[e]})));return n}(n)),t=t.concat(function(e){const t=[];let n=(0,a.A)(e,(n=>(0,Ie.A)(e,((e,r)=>(n.PATTERN.source!==r.PATTERN.source||ne(t,r)||r.PATTERN===Mt.NA||(t.push(r),e.push(r)),e)),[])));n=De(n);const r=(0,Se.A)(n,(e=>e.length>1)),i=(0,a.A)(r,(e=>{const t=(0,a.A)(e,(e=>e.name));return{message:`The same RegExp pattern ->${Ue(e).PATTERN}<-has been used in all of the following Token Types: ${t.join(", ")} <-`,type:_t.DUPLICATE_PATTERNS_FOUND,tokenTypes:e}}));return i}(n)),t=t.concat(function(e){const t=(0,Se.A)(e,(e=>e.PATTERN.test(""))),n=(0,a.A)(t,(e=>({message:"Token Type: ->"+e.name+"<- static 'PATTERN' must not match an empty string",type:_t.EMPTY_MATCH_PATTERN,tokenTypes:[e]})));return n}(n)),t}(l)),n=n.concat(function(e){const t=(0,Se.A)(e,(e=>{if(!(0,o.A)(e,"GROUP"))return!1;const t=e.GROUP;return t!==Mt.SKIPPED&&t!==Mt.NA&&!(0,f.A)(t)})),n=(0,a.A)(t,(e=>({message:"Token Type: ->"+e.name+"<- static 'GROUP' can only be Lexer.SKIPPED/Lexer.NA/A String",type:_t.INVALID_GROUP_TYPE_FOUND,tokenTypes:[e]})));return n}(l)),n=n.concat(function(e,t){const n=(0,Se.A)(e,(e=>void 0!==e.PUSH_MODE&&!ne(t,e.PUSH_MODE))),r=(0,a.A)(n,(e=>({message:`Token Type: ->${e.name}<- static 'PUSH_MODE' value cannot refer to a Lexer Mode ->${e.PUSH_MODE}<-which does not exist`,type:_t.PUSH_MODE_DOES_NOT_EXIST,tokenTypes:[e]})));return r}(l,t)),n=n.concat(function(e){const t=[],n=(0,Ie.A)(e,((e,t,n)=>{const r=t.PATTERN;return r===Mt.NA||((0,f.A)(r)?e.push({str:r,idx:n,tokenType:t}):O(r)&&function(e){const t=[".","\\","[","]","|","^","$","(",")","?","*","+","{"];return void 0===(0,Fe.A)(t,(t=>-1!==e.source.indexOf(t)))}(r)&&e.push({str:r.source,idx:n,tokenType:t})),e}),[]);return(0,r.A)(e,((e,i)=>{(0,r.A)(n,(({str:n,idx:r,tokenType:s})=>{if(i${s.name}<- can never be matched.\nBecause it appears AFTER the Token Type ->${e.name}<-in the lexer's definition.\nSee https://chevrotain.io/docs/guide/resolving_lexer_errors.html#UNREACHABLE`;t.push({message:n,type:_t.UNREACHABLE_PATTERN,tokenTypes:[e,s]})}}))})),t}(l)),n}const at=/[^\\][$]/;const ot=/[^\\[][\^]|^\^/;function lt(e){const t=e.ignoreCase?"i":"";return new RegExp(`^(?:${e.source})`,t)}function ct(e){const t=e.ignoreCase?"iy":"y";return new RegExp(`${e.source}`,t)}function ut(e,t,n){const s=[];let a=!1;const l=De((0,he.A)((0,i.A)(e.modes))),c=$e(l,(e=>e[et]===Mt.NA)),u=mt(n);return t&&(0,r.A)(c,(e=>{const t=pt(e,u);if(!1!==t){const n=function(e,t){if(t.issue===_t.IDENTIFY_TERMINATOR)return`Warning: unable to identify line terminator usage in pattern.\n\tThe problem is in the <${e.name}> Token Type\n\t Root cause: ${t.errMsg}.\n\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#IDENTIFY_TERMINATOR`;if(t.issue===_t.CUSTOM_LINE_BREAK)return`Warning: A Custom Token Pattern should specify the option.\n\tThe problem is in the <${e.name}> Token Type\n\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#CUSTOM_LINE_BREAK`;throw Error("non exhaustive match")}(e,t),r={message:n,type:t.issue,tokenType:e};s.push(r)}else(0,o.A)(e,"LINE_BREAKS")?!0===e.LINE_BREAKS&&(a=!0):Je(u,e.PATTERN)&&(a=!0)})),t&&!a&&s.push({message:"Warning: No LINE_BREAKS Found.\n\tThis Lexer has been defined to track line and column information,\n\tBut none of the Token Types can be identified as matching a line terminator.\n\tSee https://chevrotain.io/docs/guide/resolving_lexer_errors.html#LINE_BREAKS \n\tfor details.",type:_t.NO_LINE_BREAKS_FLAGS}),s}function dt(e){const t=e.PATTERN;if(O(t))return!1;if((0,Ee.A)(t))return!0;if((0,o.A)(t,"exec"))return!0;if((0,f.A)(t))return!1;throw Error("non exhaustive match")}function ht(e){return!(!(0,f.A)(e)||1!==e.length)&&e.charCodeAt(0)}const ft={test:function(e){const t=e.length;for(let n=this.lastIndex;n(0,f.A)(e)?e.charCodeAt(0):e))}function gt(e,t,n){void 0===e[t]?e[t]=[n]:e[t].push(n)}const yt=256;let Tt=[];function At(e){return ee.CATEGORIES))));const e=Me(n,t);t=t.concat(e),(0,s.A)(e)?r=!1:n=e}return t}(e);!function(e){(0,r.A)(e,(e=>{var t;wt(e)||(St[It]=e,e.tokenTypeIdx=It++),Lt(e)&&!(0,Q.A)(e.CATEGORIES)&&(e.CATEGORIES=[e.CATEGORIES]),Lt(e)||(e.CATEGORIES=[]),t=e,(0,o.A)(t,"categoryMatches")||(e.categoryMatches=[]),function(e){return(0,o.A)(e,"categoryMatchesMap")}(e)||(e.categoryMatchesMap={})}))}(t),function(e){(0,r.A)(e,(e=>{Ct([],e)}))}(t),function(e){(0,r.A)(e,(e=>{e.categoryMatches=[],(0,r.A)(e.categoryMatchesMap,((t,n)=>{e.categoryMatches.push(St[n].tokenTypeIdx)}))}))}(t),(0,r.A)(t,(e=>{e.isParent=e.categoryMatches.length>0}))}function Ct(e,t){(0,r.A)(e,(e=>{t.categoryMatchesMap[e.tokenTypeIdx]=!0})),(0,r.A)(t.CATEGORIES,(n=>{const r=e.concat(t);ne(r,n)||Ct(r,n)}))}function wt(e){return(0,o.A)(e,"tokenTypeIdx")}function Lt(e){return(0,o.A)(e,"CATEGORIES")}function bt(e){return(0,o.A)(e,"tokenTypeIdx")}const Ot={buildUnableToPopLexerModeMessage:e=>`Unable to pop Lexer Mode after encountering Token ->${e.image}<- The Mode Stack is empty`,buildUnexpectedCharactersMessage:(e,t,n,r,i)=>`unexpected character: ->${e.charAt(t)}<- at offset: ${t}, skipped ${n} characters.`};var _t;!function(e){e[e.MISSING_PATTERN=0]="MISSING_PATTERN",e[e.INVALID_PATTERN=1]="INVALID_PATTERN",e[e.EOI_ANCHOR_FOUND=2]="EOI_ANCHOR_FOUND",e[e.UNSUPPORTED_FLAGS_FOUND=3]="UNSUPPORTED_FLAGS_FOUND",e[e.DUPLICATE_PATTERNS_FOUND=4]="DUPLICATE_PATTERNS_FOUND",e[e.INVALID_GROUP_TYPE_FOUND=5]="INVALID_GROUP_TYPE_FOUND",e[e.PUSH_MODE_DOES_NOT_EXIST=6]="PUSH_MODE_DOES_NOT_EXIST",e[e.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE=7]="MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE",e[e.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY=8]="MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY",e[e.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST=9]="MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST",e[e.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED=10]="LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED",e[e.SOI_ANCHOR_FOUND=11]="SOI_ANCHOR_FOUND",e[e.EMPTY_MATCH_PATTERN=12]="EMPTY_MATCH_PATTERN",e[e.NO_LINE_BREAKS_FLAGS=13]="NO_LINE_BREAKS_FLAGS",e[e.UNREACHABLE_PATTERN=14]="UNREACHABLE_PATTERN",e[e.IDENTIFY_TERMINATOR=15]="IDENTIFY_TERMINATOR",e[e.CUSTOM_LINE_BREAK=16]="CUSTOM_LINE_BREAK",e[e.MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE=17]="MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE"}(_t||(_t={}));const Pt={deferDefinitionErrorsHandling:!1,positionTracking:"full",lineTerminatorsPattern:/\n|\r\n?/g,lineTerminatorCharacters:["\n","\r"],ensureOptimizations:!1,safeMode:!1,errorMessageProvider:Ot,traceInitPerf:!1,skipValidations:!1,recoveryEnabled:!0};Object.freeze(Pt);class Mt{constructor(e,t=Pt){if(this.lexerDefinition=e,this.lexerDefinitionErrors=[],this.lexerDefinitionWarning=[],this.patternIdxToConfig={},this.charCodeToPatternIdxToConfig={},this.modes=[],this.emptyGroups={},this.trackStartLines=!0,this.trackEndLines=!0,this.hasCustom=!1,this.canModeBeOptimized={},this.TRACE_INIT=(e,t)=>{if(!0===this.traceInitPerf){this.traceInitIndent++;const n=new Array(this.traceInitIndent+1).join("\t");this.traceInitIndent`);const{time:r,value:i}=Et(t),s=r>10?console.warn:console.log;return this.traceInitIndent time: ${r}ms`),this.traceInitIndent--,i}return t()},"boolean"==typeof t)throw Error("The second argument to the Lexer constructor is now an ILexerConfig Object.\na boolean 2nd argument is no longer supported");this.config=R({},Pt,t);const n=this.config.traceInitPerf;!0===n?(this.traceInitMaxIdent=1/0,this.traceInitPerf=!0):"number"==typeof n&&(this.traceInitMaxIdent=n,this.traceInitPerf=!0),this.traceInitIndent=-1,this.TRACE_INIT("Lexer Constructor",(()=>{let n,i=!0;this.TRACE_INIT("Lexer Config handling",(()=>{if(this.config.lineTerminatorsPattern===Pt.lineTerminatorsPattern)this.config.lineTerminatorsPattern=ft;else if(this.config.lineTerminatorCharacters===Pt.lineTerminatorCharacters)throw Error("Error: Missing property on the Lexer config.\n\tFor details See: https://chevrotain.io/docs/guide/resolving_lexer_errors.html#MISSING_LINE_TERM_CHARS");if(t.safeMode&&t.ensureOptimizations)throw Error('"safeMode" and "ensureOptimizations" flags are mutually exclusive.');this.trackStartLines=/full|onlyStart/i.test(this.config.positionTracking),this.trackEndLines=/full/i.test(this.config.positionTracking),(0,Q.A)(e)?n={modes:{defaultMode:(0,l.A)(e)},defaultMode:tt}:(i=!1,n=(0,l.A)(e))})),!1===this.config.skipValidations&&(this.TRACE_INIT("performRuntimeChecks",(()=>{this.lexerDefinitionErrors=this.lexerDefinitionErrors.concat(function(e,t,n){const i=[];return(0,o.A)(e,tt)||i.push({message:"A MultiMode Lexer cannot be initialized without a <"+tt+"> property in its definition\n",type:_t.MULTI_MODE_LEXER_WITHOUT_DEFAULT_MODE}),(0,o.A)(e,nt)||i.push({message:"A MultiMode Lexer cannot be initialized without a property in its definition\n",type:_t.MULTI_MODE_LEXER_WITHOUT_MODES_PROPERTY}),(0,o.A)(e,nt)&&(0,o.A)(e,tt)&&!(0,o.A)(e.modes,e.defaultMode)&&i.push({message:`A MultiMode Lexer cannot be initialized with a ${tt}: <${e.defaultMode}>which does not exist\n`,type:_t.MULTI_MODE_LEXER_DEFAULT_MODE_VALUE_DOES_NOT_EXIST}),(0,o.A)(e,nt)&&(0,r.A)(e.modes,((e,t)=>{(0,r.A)(e,((n,s)=>{if((0,ge.A)(n))i.push({message:`A Lexer cannot be initialized using an undefined Token Type. Mode:<${t}> at index: <${s}>\n`,type:_t.LEXER_DEFINITION_CANNOT_CONTAIN_UNDEFINED});else if((0,o.A)(n,"LONGER_ALT")){const s=(0,Q.A)(n.LONGER_ALT)?n.LONGER_ALT:[n.LONGER_ALT];(0,r.A)(s,(r=>{(0,ge.A)(r)||ne(e,r)||i.push({message:`A MultiMode Lexer cannot be initialized with a longer_alt <${r.name}> on token <${n.name}> outside of mode <${t}>\n`,type:_t.MULTI_MODE_LEXER_LONGER_ALT_NOT_IN_CURRENT_MODE})}))}}))})),i}(n,this.trackStartLines,this.config.lineTerminatorCharacters))})),this.TRACE_INIT("performWarningRuntimeChecks",(()=>{this.lexerDefinitionWarning=this.lexerDefinitionWarning.concat(ut(n,this.trackStartLines,this.config.lineTerminatorCharacters))}))),n.modes=n.modes?n.modes:{},(0,r.A)(n.modes,((e,t)=>{n.modes[t]=$e(e,(e=>(0,ge.A)(e)))}));const u=(0,A.A)(n.modes);if((0,r.A)(n.modes,((e,n)=>{this.TRACE_INIT(`Mode: <${n}> processing`,(()=>{if(this.modes.push(n),!1===this.config.skipValidations&&this.TRACE_INIT("validatePatterns",(()=>{this.lexerDefinitionErrors=this.lexerDefinitionErrors.concat(st(e,u))})),(0,s.A)(this.lexerDefinitionErrors)){let r;Nt(e),this.TRACE_INIT("analyzeTokenTypes",(()=>{r=it(e,{lineTerminatorCharacters:this.config.lineTerminatorCharacters,positionTracking:t.positionTracking,ensureOptimizations:t.ensureOptimizations,safeMode:t.safeMode,tracer:this.TRACE_INIT})})),this.patternIdxToConfig[n]=r.patternIdxToConfig,this.charCodeToPatternIdxToConfig[n]=r.charCodeToPatternIdxToConfig,this.emptyGroups=R({},this.emptyGroups,r.emptyGroups),this.hasCustom=r.hasCustom||this.hasCustom,this.canModeBeOptimized[n]=r.canBeOptimized}}))})),this.defaultMode=n.defaultMode,!(0,s.A)(this.lexerDefinitionErrors)&&!this.config.deferDefinitionErrorsHandling){const e=(0,a.A)(this.lexerDefinitionErrors,(e=>e.message)).join("-----------------------\n");throw new Error("Errors detected in definition of Lexer:\n"+e)}(0,r.A)(this.lexerDefinitionWarning,(e=>{Ke(e.message)})),this.TRACE_INIT("Choosing sub-methods implementations",(()=>{if(rt?(this.chopInput=vt.A,this.match=this.matchWithTest):(this.updateLastIndex=Rt.A,this.match=this.matchWithExec),i&&(this.handleModes=Rt.A),!1===this.trackStartLines&&(this.computeNewColumn=vt.A),!1===this.trackEndLines&&(this.updateTokenEndLineColumnLocation=Rt.A),/full/i.test(this.config.positionTracking))this.createTokenInstance=this.createFullToken;else if(/onlyStart/i.test(this.config.positionTracking))this.createTokenInstance=this.createStartOnlyToken;else{if(!/onlyOffset/i.test(this.config.positionTracking))throw Error(`Invalid config option: "${this.config.positionTracking}"`);this.createTokenInstance=this.createOffsetOnlyToken}this.hasCustom?(this.addToken=this.addTokenUsingPush,this.handlePayload=this.handlePayloadWithCustom):(this.addToken=this.addTokenUsingMemberAccess,this.handlePayload=this.handlePayloadNoCustom)})),this.TRACE_INIT("Failed Optimization Warnings",(()=>{const e=(0,Ie.A)(this.canModeBeOptimized,((e,t,n)=>(!1===t&&e.push(n),e)),[]);if(t.ensureOptimizations&&!(0,s.A)(e))throw Error(`Lexer Modes: < ${e.join(", ")} > cannot be optimized.\n\t Disable the "ensureOptimizations" lexer config flag to silently ignore this and run the lexer in an un-optimized mode.\n\t Or inspect the console log for details on how to resolve these issues.`)})),this.TRACE_INIT("clearRegExpParserCache",(()=>{Be={}})),this.TRACE_INIT("toFastProperties",(()=>{c(this)}))}))}tokenize(e,t=this.defaultMode){if(!(0,s.A)(this.lexerDefinitionErrors)){const e=(0,a.A)(this.lexerDefinitionErrors,(e=>e.message)).join("-----------------------\n");throw new Error("Unable to Tokenize because Errors detected in definition of Lexer:\n"+e)}return this.tokenizeInternal(e,t)}tokenizeInternal(e,t){let n,i,s,a,o,l,c,u,d,h,f,p,m,g,y;const T=e,v=T.length;let R=0,$=0;const E=this.hasCustom?0:Math.floor(e.length/10),k=new Array(E),x=[];let I=this.trackStartLines?1:void 0,S=this.trackStartLines?1:void 0;const N=function(e){const t={},n=(0,A.A)(e);return(0,r.A)(n,(n=>{const r=e[n];if(!(0,Q.A)(r))throw Error("non exhaustive match");t[n]=[]})),t}(this.emptyGroups),C=this.trackStartLines,w=this.config.lineTerminatorsPattern;let L=0,b=[],O=[];const _=[],P=[];let M;function D(){return b}function U(e){const t=At(e),n=O[t];return void 0===n?P:n}Object.freeze(P);const F=e=>{if(1===_.length&&void 0===e.tokenType.PUSH_MODE){const t=this.config.errorMessageProvider.buildUnableToPopLexerModeMessage(e);x.push({offset:e.startOffset,line:e.startLine,column:e.startColumn,length:e.image.length,message:t})}else{_.pop();const e=(0,$t.A)(_);b=this.patternIdxToConfig[e],O=this.charCodeToPatternIdxToConfig[e],L=b.length;const t=this.canModeBeOptimized[e]&&!1===this.config.safeMode;M=O&&t?U:D}};function G(e){_.push(e),O=this.charCodeToPatternIdxToConfig[e],b=this.patternIdxToConfig[e],L=b.length,L=b.length;const t=this.canModeBeOptimized[e]&&!1===this.config.safeMode;M=O&&t?U:D}let K;G.call(this,t);const B=this.config.recoveryEnabled;for(;Rl.length){l=a,c=u,K=t;break}}}break}}if(null!==l){if(d=l.length,h=K.group,void 0!==h&&(f=K.tokenTypeIdx,p=this.createTokenInstance(l,R,f,K.tokenType,I,S,d),this.handlePayload(p,c),!1===h?$=this.addToken(k,$,p):N[h].push(p)),e=this.chopInput(e,d),R+=d,S=this.computeNewColumn(S,d),!0===C&&!0===K.canLineTerminator){let e,t,n=0;w.lastIndex=0;do{e=w.test(l),!0===e&&(t=w.lastIndex-1,n++)}while(!0===e);0!==n&&(I+=n,S=d-t,this.updateTokenEndLineColumnLocation(p,h,t,n,I,S,d))}this.handleModes(K,F,G,p)}else{const t=R,n=I,r=S;let s=!1===B;for(;!1===s&&R`Expecting ${Ut(e)?`--\x3e ${Dt(e)} <--`:`token of type --\x3e ${e.name} <--`} but found --\x3e '${t.image}' <--`,buildNotAllInputParsedMessage:({firstRedundant:e,ruleName:t})=>"Redundant input, expecting EOF but found: "+e.image,buildNoViableAltMessage({expectedPathsPerAlt:e,actual:t,previous:n,customUserDescription:r,ruleName:i}){const s="Expecting: ",o="\nbut found: '"+Ue(t).image+"'";if(r)return s+r+o;{const t=(0,Ie.A)(e,((e,t)=>e.concat(t)),[]),n=(0,a.A)(t,(e=>`[${(0,a.A)(e,(e=>Dt(e))).join(", ")}]`));return s+`one of these possible Token sequences:\n${(0,a.A)(n,((e,t)=>` ${t+1}. ${e}`)).join("\n")}`+o}},buildEarlyExitMessage({expectedIterationPaths:e,actual:t,customUserDescription:n,ruleName:r}){const i="Expecting: ",s="\nbut found: '"+Ue(t).image+"'";if(n)return i+n+s;return i+`expecting at least one iteration which starts with one of these possible Token sequences::\n <${(0,a.A)(e,(e=>`[${(0,a.A)(e,(e=>Dt(e))).join(",")}]`)).join(" ,")}>`+s}};Object.freeze(Zt);const Jt={buildRuleNotFoundError:(e,t)=>"Invalid grammar, reference to a rule which is not defined: ->"+t.nonTerminalName+"<-\ninside top level rule: ->"+e.name+"<-"},en={buildDuplicateFoundError(e,t){const n=e.name,r=Ue(t),i=r.idx,s=oe(r),a=(o=r)instanceof H?o.terminalType.name:o instanceof M?o.nonTerminalName:"";var o;let l=`->${s}${i>0?i:""}<- ${a?`with argument: ->${a}<-`:""}\n appears more than once (${t.length} times) in the top level rule: ->${n}<-. \n For further details see: https://chevrotain.io/docs/FAQ.html#NUMERICAL_SUFFIXES \n `;return l=l.replace(/[ \t]+/g," "),l=l.replace(/\s\s+/g,"\n"),l},buildNamespaceConflictError:e=>`Namespace conflict found in grammar.\nThe grammar has both a Terminal(Token) and a Non-Terminal(Rule) named: <${e.name}>.\nTo resolve this make sure each Terminal and Non-Terminal names are unique\nThis is easy to accomplish by using the convention that Terminal names start with an uppercase letter\nand Non-Terminal names start with a lower case letter.`,buildAlternationPrefixAmbiguityError(e){const t=(0,a.A)(e.prefixPath,(e=>Dt(e))).join(", "),n=0===e.alternation.idx?"":e.alternation.idx;return`Ambiguous alternatives: <${e.ambiguityIndices.join(" ,")}> due to common lookahead prefix\nin inside <${e.topLevelRule.name}> Rule,\n<${t}> may appears as a prefix path in all these alternatives.\nSee: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#COMMON_PREFIX\nFor Further details.`},buildAlternationAmbiguityError(e){const t=(0,a.A)(e.prefixPath,(e=>Dt(e))).join(", "),n=0===e.alternation.idx?"":e.alternation.idx;let r=`Ambiguous Alternatives Detected: <${e.ambiguityIndices.join(" ,")}> in inside <${e.topLevelRule.name}> Rule,\n<${t}> may appears as a prefix path in all these alternatives.\n`;return r+="See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES\nFor Further details.",r},buildEmptyRepetitionError(e){let t=oe(e.repetition);0!==e.repetition.idx&&(t+=e.repetition.idx);return`The repetition <${t}> within Rule <${e.topLevelRule.name}> can never consume any tokens.\nThis could lead to an infinite loop.`},buildTokenNameError:e=>"deprecated",buildEmptyAlternationError:e=>`Ambiguous empty alternative: <${e.emptyChoiceIdx+1}> in inside <${e.topLevelRule.name}> Rule.\nOnly the last alternative may be an empty alternative.`,buildTooManyAlternativesError:e=>`An Alternation cannot have more than 256 alternatives:\n inside <${e.topLevelRule.name}> Rule.\n has ${e.alternation.definition.length+1} alternatives.`,buildLeftRecursionError(e){const t=e.topLevelRule.name;return`Left Recursion found in grammar.\nrule: <${t}> can be invoked from itself (directly or indirectly)\nwithout consuming any Tokens. The grammar path that causes this is: \n ${`${t} --\x3e ${(0,a.A)(e.leftRecursionPath,(e=>e.name)).concat([t]).join(" --\x3e ")}`}\n To fix this refactor your grammar to remove the left recursion.\nsee: https://en.wikipedia.org/wiki/LL_parser#Left_factoring.`},buildInvalidRuleNameError:e=>"deprecated",buildDuplicateRuleNameError(e){let t;t=e.topLevelRule instanceof D?e.topLevelRule.name:e.topLevelRule;return`Duplicate definition, rule: ->${t}<- is already defined in the grammar: ->${e.grammarName}<-`}};class tn extends z{constructor(e,t){super(),this.nameToTopRule=e,this.errMsgProvider=t,this.errors=[]}resolveRefs(){(0,r.A)((0,i.A)(this.nameToTopRule),(e=>{this.currTopLevel=e,e.accept(this)}))}visitNonTerminal(e){const t=this.nameToTopRule[e.nonTerminalName];if(t)e.referencedRule=t;else{const t=this.errMsgProvider.buildRuleNotFoundError(this.currTopLevel,e);this.errors.push({message:t,type:Or.UNRESOLVED_SUBRULE_REF,ruleName:this.currTopLevel.name,unresolvedRefName:e.nonTerminalName})}}}var nn=n(18139),rn=n(52528);const sn=function(e,t,n,r){for(var i=-1,s=null==e?0:e.length;++i{!1===(0,s.A)(e.definition)&&(i=o(e.definition))})),i;if(!(t instanceof H))throw Error("non exhaustive match");n.push(t.terminalType)}}a++}return i.push({partialPath:n,suffixDef:h(e,a)}),i}function An(e,t,n,r){const i="EXIT_NONE_TERMINAL",a=[i],o="EXIT_ALTERNATIVE";let c=!1;const u=t.length,d=u-r-1,f=[],p=[];for(p.push({idx:-1,def:e,ruleStack:[],occurrenceStack:[]});!(0,s.A)(p);){const e=p.pop();if(e===o){c&&(0,$t.A)(p).idx<=d&&p.pop();continue}const r=e.def,m=e.idx,g=e.ruleStack,y=e.occurrenceStack;if((0,s.A)(r))continue;const T=r[0];if(T===i){const e={idx:m,def:h(r),ruleStack:un(g),occurrenceStack:un(y)};p.push(e)}else if(T instanceof H)if(m=0;t--){const e={idx:m,def:T.definition[t].definition.concat(h(r)),ruleStack:g,occurrenceStack:y};p.push(e),p.push(o)}else if(T instanceof U)p.push({idx:m,def:T.definition.concat(h(r)),ruleStack:g,occurrenceStack:y});else{if(!(T instanceof D))throw Error("non exhaustive match");p.push(vn(T,m,g,y))}}return f}function vn(e,t,n,r){const i=(0,l.A)(n);i.push(e.name);const s=(0,l.A)(r);return s.push(1),{idx:t,def:e.definition,ruleStack:i,occurrenceStack:s}}var Rn;function $n(e){if(e instanceof F||"Option"===e)return Rn.OPTION;if(e instanceof B||"Repetition"===e)return Rn.REPETITION;if(e instanceof G||"RepetitionMandatory"===e)return Rn.REPETITION_MANDATORY;if(e instanceof K||"RepetitionMandatoryWithSeparator"===e)return Rn.REPETITION_MANDATORY_WITH_SEPARATOR;if(e instanceof j||"RepetitionWithSeparator"===e)return Rn.REPETITION_WITH_SEPARATOR;if(e instanceof V||"Alternation"===e)return Rn.ALTERNATION;throw Error("non exhaustive match")}function En(e){const{occurrence:t,rule:n,prodType:r,maxLookahead:i}=e,s=$n(r);return s===Rn.ALTERNATION?bn(t,n,i):On(t,n,s,i)}function kn(e,t,n,i){const s=e.length,l=se(e,(e=>se(e,(e=>1===e.length))));if(t)return function(t){const r=(0,a.A)(t,(e=>e.GATE));for(let i=0;i(0,he.A)(e))),n=(0,Ie.A)(t,((e,t,n)=>((0,r.A)(t,(t=>{(0,o.A)(e,t.tokenTypeIdx)||(e[t.tokenTypeIdx]=n),(0,r.A)(t.categoryMatches,(t=>{(0,o.A)(e,t)||(e[t]=n)}))})),e)),{});return function(){const e=this.LA(1);return n[e.tokenTypeIdx]}}return function(){for(let t=0;t1===e.length)),a=e.length;if(i&&!n){const t=(0,he.A)(e);if(1===t.length&&(0,s.A)(t[0].categoryMatches)){const e=t[0].tokenTypeIdx;return function(){return this.LA(1).tokenTypeIdx===e}}{const e=(0,Ie.A)(t,((e,t,n)=>(e[t.tokenTypeIdx]=!0,(0,r.A)(t.categoryMatches,(t=>{e[t]=!0})),e)),[]);return function(){const t=this.LA(1);return!0===e[t.tokenTypeIdx]}}}return function(){e:for(let n=0;nTn([e],1))),i=Nn(n.length),o=(0,a.A)(n,(e=>{const t={};return(0,r.A)(e,(e=>{const n=Cn(e.partialPath);(0,r.A)(n,(e=>{t[e]=!0}))})),t}));let l=n;for(let a=1;a<=t;a++){const e=l;l=Nn(e.length);for(let n=0;n{const t=Cn(e.partialPath);(0,r.A)(t,(e=>{o[n][e]=!0}))}))}}}}return i}function bn(e,t,n,r){const i=new Sn(e,Rn.ALTERNATION,r);return t.accept(i),Ln(i.result,n)}function On(e,t,n,r){const i=new Sn(e,n);t.accept(i);const s=i.result,a=new In(t,e,n).startWalking();return Ln([new U({definition:s}),new U({definition:a})],r)}function _n(e,t){e:for(let n=0;nse(e,(e=>se(e,(e=>(0,s.A)(e.categoryMatches)))))))}function Mn(e,t,n,s){const o=(0,nn.A)(e,(e=>function(e,t){const n=new Fn;e.accept(n);const r=n.allProductions,s=cn(r,Dn),o=I(s,(e=>e.length>1)),l=(0,a.A)((0,i.A)(o),(n=>{const r=Ue(n),i=t.buildDuplicateFoundError(e,n),s=oe(r),a={message:i,type:Or.DUPLICATE_PRODUCTIONS,ruleName:e.name,dslName:s,occurrence:r.idx},o=Un(r);return o&&(a.parameter=o),a}));return l}(e,n))),l=function(e,t,n){const i=[],s=(0,a.A)(t,(e=>e.name));return(0,r.A)(e,(e=>{const t=e.name;if(ne(s,t)){const r=n.buildNamespaceConflictError(e);i.push({message:r,type:Or.CONFLICT_TOKENS_RULES_NAMESPACE,ruleName:t})}})),i}(e,t,n),c=(0,nn.A)(e,(e=>function(e,t){const n=new Bn;e.accept(n);const r=n.alternations,i=(0,nn.A)(r,(n=>n.definition.length>255?[{message:t.buildTooManyAlternativesError({topLevelRule:e,alternation:n}),type:Or.TOO_MANY_ALTS,ruleName:e.name,occurrence:n.idx}]:[]));return i}(e,n))),u=(0,nn.A)(e,(t=>function(e,t,n,r){const i=[],s=(0,Ie.A)(t,((t,n)=>n.name===e.name?t+1:t),0);if(s>1){const t=r.buildDuplicateRuleNameError({topLevelRule:e,grammarName:n});i.push({message:t,type:Or.DUPLICATE_RULE_NAME,ruleName:e.name})}return i}(t,e,s,n)));return o.concat(l,c,u)}function Dn(e){return`${oe(e)}_#_${e.idx}_#_${Un(e)}`}function Un(e){return e instanceof H?e.terminalType.name:e instanceof M?e.nonTerminalName:""}class Fn extends z{constructor(){super(...arguments),this.allProductions=[]}visitNonTerminal(e){this.allProductions.push(e)}visitOption(e){this.allProductions.push(e)}visitRepetitionWithSeparator(e){this.allProductions.push(e)}visitRepetitionMandatory(e){this.allProductions.push(e)}visitRepetitionMandatoryWithSeparator(e){this.allProductions.push(e)}visitRepetition(e){this.allProductions.push(e)}visitAlternation(e){this.allProductions.push(e)}visitTerminal(e){this.allProductions.push(e)}}function Gn(e,t,n,r=[]){const i=[],a=Kn(t.definition);if((0,s.A)(a))return[];{const t=e.name;ne(a,e)&&i.push({message:n.buildLeftRecursionError({topLevelRule:e,leftRecursionPath:r}),type:Or.LEFT_RECURSION,ruleName:t});const s=Me(a,r.concat([e])),o=(0,nn.A)(s,(t=>{const i=(0,l.A)(r);return i.push(t),Gn(e,t,n,i)}));return i.concat(o)}}function Kn(e){let t=[];if((0,s.A)(e))return t;const n=Ue(e);if(n instanceof M)t.push(n.referencedRule);else if(n instanceof U||n instanceof F||n instanceof G||n instanceof K||n instanceof j||n instanceof B)t=t.concat(Kn(n.definition));else if(n instanceof V)t=(0,he.A)((0,a.A)(n.definition,(e=>Kn(e.definition))));else if(!(n instanceof H))throw Error("non exhaustive match");const r=ae(n),i=e.length>1;if(r&&i){const n=h(e);return t.concat(Kn(n))}return t}class Bn extends z{constructor(){super(...arguments),this.alternations=[]}visitAlternation(e){this.alternations.push(e)}}function jn(e,t,n){const i=new Bn;e.accept(i);let s=i.alternations;s=$e(s,(e=>!0===e.ignoreAmbiguities));const o=(0,nn.A)(s,(i=>{const s=i.idx,o=i.maxLookahead||t,l=bn(s,e,o,i),c=function(e,t,n,i){const s=[],o=(0,Ie.A)(e,((n,i,a)=>(!0===t.definition[a].ignoreAmbiguities||(0,r.A)(i,(i=>{const o=[a];(0,r.A)(e,((e,n)=>{a!==n&&_n(e,i)&&!0!==t.definition[n].ignoreAmbiguities&&o.push(n)})),o.length>1&&!_n(s,i)&&(s.push(i),n.push({alts:o,path:i}))})),n)),[]),l=(0,a.A)(o,(e=>{const r=(0,a.A)(e.alts,(e=>e+1));return{message:i.buildAlternationAmbiguityError({topLevelRule:n,alternation:t,ambiguityIndices:r,prefixPath:e.path}),type:Or.AMBIGUOUS_ALTS,ruleName:n.name,occurrence:t.idx,alternatives:e.alts}}));return l}(l,i,e,n),u=function(e,t,n,r){const i=(0,Ie.A)(e,((e,t,n)=>{const r=(0,a.A)(t,(e=>({idx:n,path:e})));return e.concat(r)}),[]),s=De((0,nn.A)(i,(e=>{if(!0===t.definition[e.idx].ignoreAmbiguities)return[];const s=e.idx,o=e.path,l=(0,Se.A)(i,(e=>{return!0!==t.definition[e.idx].ignoreAmbiguities&&e.idx{const n=r[t];return e===n||n.categoryMatchesMap[e.tokenTypeIdx]})));var n,r}));return(0,a.A)(l,(e=>{const i=[e.idx+1,s+1],a=0===t.idx?"":t.idx;return{message:r.buildAlternationPrefixAmbiguityError({topLevelRule:n,alternation:t,ambiguityIndices:i,prefixPath:e.path}),type:Or.AMBIGUOUS_PREFIX_ALTS,ruleName:n.name,occurrence:a,alternatives:i}}))})));return s}(l,i,e,n);return c.concat(u)}));return o}class Vn extends z{constructor(){super(...arguments),this.allProductions=[]}visitRepetitionWithSeparator(e){this.allProductions.push(e)}visitRepetitionMandatory(e){this.allProductions.push(e)}visitRepetitionMandatoryWithSeparator(e){this.allProductions.push(e)}visitRepetition(e){this.allProductions.push(e)}}function Hn(e){const t=(0,Te.A)(e,{errMsgProvider:Jt}),n={};return(0,r.A)(e.rules,(e=>{n[e.name]=e})),function(e,t){const n=new tn(e,t);return n.resolveRefs(),n.errors}(n,t.errMsgProvider)}const Wn="MismatchedTokenException",zn="NoViableAltException",Yn="EarlyExitException",Xn="NotAllInputParsedException",qn=[Wn,zn,Yn,Xn];function Qn(e){return ne(qn,e.name)}Object.freeze(qn);class Zn extends Error{constructor(e,t){super(e),this.token=t,this.resyncedTokens=[],Object.setPrototypeOf(this,new.target.prototype),Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor)}}class Jn extends Zn{constructor(e,t,n){super(e,t),this.previousToken=n,this.name=Wn}}class er extends Zn{constructor(e,t,n){super(e,t),this.previousToken=n,this.name=zn}}class tr extends Zn{constructor(e,t){super(e,t),this.name=Xn}}class nr extends Zn{constructor(e,t,n){super(e,t),this.previousToken=n,this.name=Yn}}const rr={},ir="InRuleRecoveryException";class sr extends Error{constructor(e){super(e),this.name=ir}}function ar(e,t,n,r,i,s,a){const o=this.getKeyForAutomaticLookahead(r,i);let l=this.firstAfterRepMap[o];if(void 0===l){const e=this.getCurrRuleFullName();l=new s(this.getGAstProductions()[e],i).startWalking(),this.firstAfterRepMap[o]=l}let c=l.token,u=l.occurrence;const d=l.isEndOfRule;1===this.RULE_STACK.length&&d&&void 0===c&&(c=Xt,u=1),void 0!==c&&void 0!==u&&this.shouldInRepetitionRecoveryBeTried(c,u,a)&&this.tryInRepetitionRecovery(e,t,n,c)}const or=1024,lr=1280,cr=1536;function ur(e,t,n){return n|t|e}class dr{constructor(e){var t;this.maxLookahead=null!==(t=null==e?void 0:e.maxLookahead)&&void 0!==t?t:Lr.maxLookahead}validate(e){const t=this.validateNoLeftRecursion(e.rules);if((0,s.A)(t)){const n=this.validateEmptyOrAlternatives(e.rules),r=this.validateAmbiguousAlternationAlternatives(e.rules,this.maxLookahead),i=this.validateSomeNonEmptyLookaheadPath(e.rules,this.maxLookahead);return[...t,...n,...r,...i]}return t}validateNoLeftRecursion(e){return(0,nn.A)(e,(e=>Gn(e,e,en)))}validateEmptyOrAlternatives(e){return(0,nn.A)(e,(e=>function(e,t){const n=new Bn;e.accept(n);const r=n.alternations;return(0,nn.A)(r,(n=>{const r=un(n.definition);return(0,nn.A)(r,((r,i)=>{const a=An([r],[],kt,1);return(0,s.A)(a)?[{message:t.buildEmptyAlternationError({topLevelRule:e,alternation:n,emptyChoiceIdx:i}),type:Or.NONE_LAST_EMPTY_ALT,ruleName:e.name,occurrence:n.idx,alternative:i+1}]:[]}))}))}(e,en)))}validateAmbiguousAlternationAlternatives(e,t){return(0,nn.A)(e,(e=>jn(e,t,en)))}validateSomeNonEmptyLookaheadPath(e,t){return function(e,t,n){const i=[];return(0,r.A)(e,(e=>{const a=new Vn;e.accept(a);const o=a.allProductions;(0,r.A)(o,(r=>{const a=$n(r),o=r.maxLookahead||t,l=On(r.idx,e,a,o)[0];if((0,s.A)((0,he.A)(l))){const t=n.buildEmptyRepetitionError({topLevelRule:e,repetition:r});i.push({message:t,type:Or.NO_NON_EMPTY_LOOKAHEAD,ruleName:e.name})}}))})),i}(e,t,en)}buildLookaheadForAlternation(e){return function(e,t,n,r,i,s){const a=bn(e,t,n);return s(a,r,Pn(a)?xt:kt,i)}(e.prodOccurrence,e.rule,e.maxLookahead,e.hasPredicates,e.dynamicTokensEnabled,kn)}buildLookaheadForOptional(e){return function(e,t,n,r,i,s){const a=On(e,t,i,n),o=Pn(a)?xt:kt;return s(a[0],o,r)}(e.prodOccurrence,e.rule,e.maxLookahead,e.dynamicTokensEnabled,$n(e.prodType),xn)}}const hr=new class extends z{constructor(){super(...arguments),this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}}reset(){this.dslMethods={option:[],alternation:[],repetition:[],repetitionWithSeparator:[],repetitionMandatory:[],repetitionMandatoryWithSeparator:[]}}visitOption(e){this.dslMethods.option.push(e)}visitRepetitionWithSeparator(e){this.dslMethods.repetitionWithSeparator.push(e)}visitRepetitionMandatory(e){this.dslMethods.repetitionMandatory.push(e)}visitRepetitionMandatoryWithSeparator(e){this.dslMethods.repetitionMandatoryWithSeparator.push(e)}visitRepetition(e){this.dslMethods.repetition.push(e)}visitAlternation(e){this.dslMethods.alternation.push(e)}};function fr(e,t){!0===isNaN(e.startOffset)?(e.startOffset=t.startOffset,e.endOffset=t.endOffset):e.endOffset!1===(0,Ee.A)(e[t]))),r=(0,a.A)(n,(t=>({msg:`Missing visitor method: <${t}> on ${e.constructor.name} CST Visitor.`,type:Ar.MISSING_METHOD,methodName:t})));return De(r)}(e,t);return n}(this,t);if(!(0,s.A)(e)){const t=(0,a.A)(e,(e=>e.msg));throw Error(`Errors Detected in CST Visitor <${this.constructor.name}>:\n\t${t.join("\n\n").replace(/\n/g,"\n\t")}`)}}};return(n.prototype=r).constructor=n,n._RULE_NAMES=t,n}var Ar;!function(e){e[e.REDUNDANT_METHOD=0]="REDUNDANT_METHOD",e[e.MISSING_METHOD=1]="MISSING_METHOD"}(Ar||(Ar={}));var vr=n(23149);const Rr={description:"This Object indicates the Parser is during Recording Phase"};Object.freeze(Rr);const $r=Math.pow(2,8)-1,Er=Yt({name:"RECORDING_PHASE_TOKEN",pattern:Mt.NA});Nt([Er]);const kr=qt(Er,"This IToken indicates the Parser is in Recording Phase\n\tSee: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details",-1,-1,-1,-1,-1,-1);Object.freeze(kr);const xr={name:"This CSTNode indicates the Parser is in Recording Phase\n\tSee: https://chevrotain.io/docs/guide/internals.html#grammar-recording for details",children:{}};function Ir(e,t,n,r=!1){Cr(n);const i=(0,$t.A)(this.recordingProdStack),s=(0,Ee.A)(t)?t:t.DEF,a=new e({definition:[],idx:n});return r&&(a.separator=t.SEP),(0,o.A)(t,"MAX_LOOKAHEAD")&&(a.maxLookahead=t.MAX_LOOKAHEAD),this.recordingProdStack.push(a),s.call(this),i.definition.push(a),this.recordingProdStack.pop(),Rr}function Sr(e,t){Cr(t);const n=(0,$t.A)(this.recordingProdStack),i=!1===(0,Q.A)(e),s=!1===i?e:e.DEF,a=new V({definition:[],idx:t,ignoreAmbiguities:i&&!0===e.IGNORE_AMBIGUITIES});(0,o.A)(e,"MAX_LOOKAHEAD")&&(a.maxLookahead=e.MAX_LOOKAHEAD);const l=J(s,(e=>(0,Ee.A)(e.GATE)));return a.hasPredicates=l,n.definition.push(a),(0,r.A)(s,(e=>{const t=new U({definition:[]});a.definition.push(t),(0,o.A)(e,"IGNORE_AMBIGUITIES")?t.ignoreAmbiguities=e.IGNORE_AMBIGUITIES:(0,o.A)(e,"GATE")&&(t.ignoreAmbiguities=!0),this.recordingProdStack.push(t),e.ALT.call(this),this.recordingProdStack.pop()})),Rr}function Nr(e){return 0===e?"":`${e}`}function Cr(e){if(e<0||e>$r){const t=new Error(`Invalid DSL Method idx value: <${e}>\n\tIdx value must be a none negative value smaller than ${$r+1}`);throw t.KNOWN_RECORDER_ERROR=!0,t}}const wr=qt(Xt,"",NaN,NaN,NaN,NaN,NaN,NaN);Object.freeze(wr);const Lr=Object.freeze({recoveryEnabled:!1,maxLookahead:3,dynamicTokensEnabled:!1,outputCst:!0,errorMessageProvider:Zt,nodeLocationTracking:"none",traceInitPerf:!1,skipValidations:!1}),br=Object.freeze({recoveryValueFunc:()=>{},resyncEnabled:!0});var Or,_r;function Pr(e=void 0){return function(){return e}}!function(e){e[e.INVALID_RULE_NAME=0]="INVALID_RULE_NAME",e[e.DUPLICATE_RULE_NAME=1]="DUPLICATE_RULE_NAME",e[e.INVALID_RULE_OVERRIDE=2]="INVALID_RULE_OVERRIDE",e[e.DUPLICATE_PRODUCTIONS=3]="DUPLICATE_PRODUCTIONS",e[e.UNRESOLVED_SUBRULE_REF=4]="UNRESOLVED_SUBRULE_REF",e[e.LEFT_RECURSION=5]="LEFT_RECURSION",e[e.NONE_LAST_EMPTY_ALT=6]="NONE_LAST_EMPTY_ALT",e[e.AMBIGUOUS_ALTS=7]="AMBIGUOUS_ALTS",e[e.CONFLICT_TOKENS_RULES_NAMESPACE=8]="CONFLICT_TOKENS_RULES_NAMESPACE",e[e.INVALID_TOKEN_NAME=9]="INVALID_TOKEN_NAME",e[e.NO_NON_EMPTY_LOOKAHEAD=10]="NO_NON_EMPTY_LOOKAHEAD",e[e.AMBIGUOUS_PREFIX_ALTS=11]="AMBIGUOUS_PREFIX_ALTS",e[e.TOO_MANY_ALTS=12]="TOO_MANY_ALTS",e[e.CUSTOM_LOOKAHEAD_VALIDATION=13]="CUSTOM_LOOKAHEAD_VALIDATION"}(Or||(Or={}));class Mr{static performSelfAnalysis(e){throw Error("The **static** `performSelfAnalysis` method has been deprecated.\t\nUse the **instance** method with the same name instead.")}performSelfAnalysis(){this.TRACE_INIT("performSelfAnalysis",(()=>{let e;this.selfAnalysisDone=!0;const t=this.className;this.TRACE_INIT("toFastProps",(()=>{c(this)})),this.TRACE_INIT("Grammar Recording",(()=>{try{this.enableRecording(),(0,r.A)(this.definedRulesNames,(e=>{const t=this[e].originalGrammarAction;let n;this.TRACE_INIT(`${e} Rule`,(()=>{n=this.topLevelRuleRecord(e,t)})),this.gastProductionsCache[e]=n}))}finally{this.disableRecording()}}));let n=[];if(this.TRACE_INIT("Grammar Resolving",(()=>{n=Hn({rules:(0,i.A)(this.gastProductionsCache)}),this.definitionErrors=this.definitionErrors.concat(n)})),this.TRACE_INIT("Grammar Validations",(()=>{if((0,s.A)(n)&&!1===this.skipValidations){const n=(e={rules:(0,i.A)(this.gastProductionsCache),tokenTypes:(0,i.A)(this.tokensMap),errMsgProvider:en,grammarName:t},Mn((e=(0,Te.A)(e,{errMsgProvider:en})).rules,e.tokenTypes,e.errMsgProvider,e.grammarName)),r=function(e){const t=e.lookaheadStrategy.validate({rules:e.rules,tokenTypes:e.tokenTypes,grammarName:e.grammarName});return(0,a.A)(t,(e=>Object.assign({type:Or.CUSTOM_LOOKAHEAD_VALIDATION},e)))}({lookaheadStrategy:this.lookaheadStrategy,rules:(0,i.A)(this.gastProductionsCache),tokenTypes:(0,i.A)(this.tokensMap),grammarName:t});this.definitionErrors=this.definitionErrors.concat(n,r)}var e})),(0,s.A)(this.definitionErrors)&&(this.recoveryEnabled&&this.TRACE_INIT("computeAllProdsFollows",(()=>{const e=function(e){const t={};return(0,r.A)(e,(e=>{const n=new me(e).startWalking();R(t,n)})),t}((0,i.A)(this.gastProductionsCache));this.resyncFollows=e})),this.TRACE_INIT("ComputeLookaheadFunctions",(()=>{var e,t;null===(t=(e=this.lookaheadStrategy).initialize)||void 0===t||t.call(e,{rules:(0,i.A)(this.gastProductionsCache)}),this.preComputeLookaheadFunctions((0,i.A)(this.gastProductionsCache))}))),!Mr.DEFER_DEFINITION_ERRORS_HANDLING&&!(0,s.A)(this.definitionErrors))throw e=(0,a.A)(this.definitionErrors,(e=>e.message)),new Error(`Parser Definition Errors detected:\n ${e.join("\n-------------------------------\n")}`)}))}constructor(e,t){this.definitionErrors=[],this.selfAnalysisDone=!1;const n=this;if(n.initErrorHandler(t),n.initLexerAdapter(),n.initLooksAhead(t),n.initRecognizerEngine(e,t),n.initRecoverable(t),n.initTreeBuilder(t),n.initContentAssist(),n.initGastRecorder(t),n.initPerformanceTracer(t),(0,o.A)(t,"ignoredIssues"))throw new Error("The IParserConfig property has been deprecated.\n\tPlease use the flag on the relevant DSL method instead.\n\tSee: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#IGNORING_AMBIGUITIES\n\tFor further details.");this.skipValidations=(0,o.A)(t,"skipValidations")?t.skipValidations:Lr.skipValidations}}Mr.DEFER_DEFINITION_ERRORS_HANDLING=!1,_r=Mr,[class{initRecoverable(e){this.firstAfterRepMap={},this.resyncFollows={},this.recoveryEnabled=(0,o.A)(e,"recoveryEnabled")?e.recoveryEnabled:Lr.recoveryEnabled,this.recoveryEnabled&&(this.attemptInRepetitionRecovery=ar)}getTokenToInsert(e){const t=qt(e,"",NaN,NaN,NaN,NaN,NaN,NaN);return t.isInsertedInRecovery=!0,t}canTokenTypeBeInsertedInRecovery(e){return!0}canTokenTypeBeDeletedInRecovery(e){return!0}tryInRepetitionRecovery(e,t,n,r){const i=this.findReSyncTokenType(),s=this.exportLexerState(),a=[];let o=!1;const l=this.LA(1);let c=this.LA(1);const u=()=>{const e=this.LA(0),t=this.errorMessageProvider.buildMismatchTokenMessage({expected:r,actual:l,previous:e,ruleName:this.getCurrRuleFullName()}),n=new Jn(t,l,this.LA(0));n.resyncedTokens=un(a),this.SAVE_ERROR(n)};for(;!o;){if(this.tokenMatcher(c,r))return void u();if(n.call(this))return u(),void e.apply(this,t);this.tokenMatcher(c,i)?o=!0:(c=this.SKIP_TOKEN(),this.addToResyncTokens(c,a))}this.importLexerState(s)}shouldInRepetitionRecoveryBeTried(e,t,n){return!1!==n&&!this.tokenMatcher(this.LA(1),e)&&!this.isBackTracking()&&!this.canPerformInRuleRecovery(e,this.getFollowsForInRuleRecovery(e,t))}getFollowsForInRuleRecovery(e,t){const n=this.getCurrentGrammarPath(e,t);return this.getNextPossibleTokenTypes(n)}tryInRuleRecovery(e,t){if(this.canRecoverWithSingleTokenInsertion(e,t))return this.getTokenToInsert(e);if(this.canRecoverWithSingleTokenDeletion(e)){const e=this.SKIP_TOKEN();return this.consumeToken(),e}throw new sr("sad sad panda")}canPerformInRuleRecovery(e,t){return this.canRecoverWithSingleTokenInsertion(e,t)||this.canRecoverWithSingleTokenDeletion(e)}canRecoverWithSingleTokenInsertion(e,t){if(!this.canTokenTypeBeInsertedInRecovery(e))return!1;if((0,s.A)(t))return!1;const n=this.LA(1);return void 0!==(0,Fe.A)(t,(e=>this.tokenMatcher(n,e)))}canRecoverWithSingleTokenDeletion(e){return!!this.canTokenTypeBeDeletedInRecovery(e)&&this.tokenMatcher(this.LA(2),e)}isInCurrentRuleReSyncSet(e){const t=this.getCurrFollowKey(),n=this.getFollowSetFromFollowKey(t);return ne(n,e)}findReSyncTokenType(){const e=this.flattenFollowSet();let t=this.LA(1),n=2;for(;;){const r=(0,Fe.A)(e,(e=>Qt(t,e)));if(void 0!==r)return r;t=this.LA(n),n++}}getCurrFollowKey(){if(1===this.RULE_STACK.length)return rr;const e=this.getLastExplicitRuleShortName(),t=this.getLastExplicitRuleOccurrenceIndex(),n=this.getPreviousExplicitRuleShortName();return{ruleName:this.shortRuleNameToFullName(e),idxInCallingRule:t,inRule:this.shortRuleNameToFullName(n)}}buildFullFollowKeyStack(){const e=this.RULE_STACK,t=this.RULE_OCCURRENCE_STACK;return(0,a.A)(e,((n,r)=>0===r?rr:{ruleName:this.shortRuleNameToFullName(n),idxInCallingRule:t[r],inRule:this.shortRuleNameToFullName(e[r-1])}))}flattenFollowSet(){const e=(0,a.A)(this.buildFullFollowKeyStack(),(e=>this.getFollowSetFromFollowKey(e)));return(0,he.A)(e)}getFollowSetFromFollowKey(e){if(e===rr)return[Xt];const t=e.ruleName+e.idxInCallingRule+pe+e.inRule;return this.resyncFollows[t]}addToResyncTokens(e,t){return this.tokenMatcher(e,Xt)||t.push(e),t}reSyncTo(e){const t=[];let n=this.LA(1);for(;!1===this.tokenMatcher(n,e);)n=this.SKIP_TOKEN(),this.addToResyncTokens(n,t);return un(t)}attemptInRepetitionRecovery(e,t,n,r,i,s,a){}getCurrentGrammarPath(e,t){return{ruleStack:this.getHumanReadableRuleStack(),occurrenceStack:(0,l.A)(this.RULE_OCCURRENCE_STACK),lastTok:e,lastTokOccurrence:t}}getHumanReadableRuleStack(){return(0,a.A)(this.RULE_STACK,(e=>this.shortRuleNameToFullName(e)))}},class{initLooksAhead(e){this.dynamicTokensEnabled=(0,o.A)(e,"dynamicTokensEnabled")?e.dynamicTokensEnabled:Lr.dynamicTokensEnabled,this.maxLookahead=(0,o.A)(e,"maxLookahead")?e.maxLookahead:Lr.maxLookahead,this.lookaheadStrategy=(0,o.A)(e,"lookaheadStrategy")?e.lookaheadStrategy:new dr({maxLookahead:this.maxLookahead}),this.lookAheadFuncsCache=new Map}preComputeLookaheadFunctions(e){(0,r.A)(e,(e=>{this.TRACE_INIT(`${e.name} Rule Lookahead`,(()=>{const{alternation:t,repetition:n,option:i,repetitionMandatory:s,repetitionMandatoryWithSeparator:a,repetitionWithSeparator:o}=function(e){hr.reset(),e.accept(hr);const t=hr.dslMethods;return hr.reset(),t}(e);(0,r.A)(t,(t=>{const n=0===t.idx?"":t.idx;this.TRACE_INIT(`${oe(t)}${n}`,(()=>{const n=this.lookaheadStrategy.buildLookaheadForAlternation({prodOccurrence:t.idx,rule:e,maxLookahead:t.maxLookahead||this.maxLookahead,hasPredicates:t.hasPredicates,dynamicTokensEnabled:this.dynamicTokensEnabled}),r=ur(this.fullRuleNameToShort[e.name],256,t.idx);this.setLaFuncCache(r,n)}))})),(0,r.A)(n,(t=>{this.computeLookaheadFunc(e,t.idx,768,"Repetition",t.maxLookahead,oe(t))})),(0,r.A)(i,(t=>{this.computeLookaheadFunc(e,t.idx,512,"Option",t.maxLookahead,oe(t))})),(0,r.A)(s,(t=>{this.computeLookaheadFunc(e,t.idx,or,"RepetitionMandatory",t.maxLookahead,oe(t))})),(0,r.A)(a,(t=>{this.computeLookaheadFunc(e,t.idx,cr,"RepetitionMandatoryWithSeparator",t.maxLookahead,oe(t))})),(0,r.A)(o,(t=>{this.computeLookaheadFunc(e,t.idx,lr,"RepetitionWithSeparator",t.maxLookahead,oe(t))}))}))}))}computeLookaheadFunc(e,t,n,r,i,s){this.TRACE_INIT(`${s}${0===t?"":t}`,(()=>{const s=this.lookaheadStrategy.buildLookaheadForOptional({prodOccurrence:t,rule:e,maxLookahead:i||this.maxLookahead,dynamicTokensEnabled:this.dynamicTokensEnabled,prodType:r}),a=ur(this.fullRuleNameToShort[e.name],n,t);this.setLaFuncCache(a,s)}))}getKeyForAutomaticLookahead(e,t){return ur(this.getLastExplicitRuleShortName(),e,t)}getLaFuncFromCache(e){return this.lookAheadFuncsCache.get(e)}setLaFuncCache(e,t){this.lookAheadFuncsCache.set(e,t)}},class{initTreeBuilder(e){if(this.CST_STACK=[],this.outputCst=e.outputCst,this.nodeLocationTracking=(0,o.A)(e,"nodeLocationTracking")?e.nodeLocationTracking:Lr.nodeLocationTracking,this.outputCst)if(/full/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=pr,this.setNodeLocationFromNode=pr,this.cstPostRule=Rt.A,this.setInitialNodeLocation=this.setInitialNodeLocationFullRecovery):(this.setNodeLocationFromToken=Rt.A,this.setNodeLocationFromNode=Rt.A,this.cstPostRule=this.cstPostRuleFull,this.setInitialNodeLocation=this.setInitialNodeLocationFullRegular);else if(/onlyOffset/i.test(this.nodeLocationTracking))this.recoveryEnabled?(this.setNodeLocationFromToken=fr,this.setNodeLocationFromNode=fr,this.cstPostRule=Rt.A,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRecovery):(this.setNodeLocationFromToken=Rt.A,this.setNodeLocationFromNode=Rt.A,this.cstPostRule=this.cstPostRuleOnlyOffset,this.setInitialNodeLocation=this.setInitialNodeLocationOnlyOffsetRegular);else{if(!/none/i.test(this.nodeLocationTracking))throw Error(`Invalid config option: "${e.nodeLocationTracking}"`);this.setNodeLocationFromToken=Rt.A,this.setNodeLocationFromNode=Rt.A,this.cstPostRule=Rt.A,this.setInitialNodeLocation=Rt.A}else this.cstInvocationStateUpdate=Rt.A,this.cstFinallyStateUpdate=Rt.A,this.cstPostTerminal=Rt.A,this.cstPostNonTerminal=Rt.A,this.cstPostRule=Rt.A}setInitialNodeLocationOnlyOffsetRecovery(e){e.location={startOffset:NaN,endOffset:NaN}}setInitialNodeLocationOnlyOffsetRegular(e){e.location={startOffset:this.LA(1).startOffset,endOffset:NaN}}setInitialNodeLocationFullRecovery(e){e.location={startOffset:NaN,startLine:NaN,startColumn:NaN,endOffset:NaN,endLine:NaN,endColumn:NaN}}setInitialNodeLocationFullRegular(e){const t=this.LA(1);e.location={startOffset:t.startOffset,startLine:t.startLine,startColumn:t.startColumn,endOffset:NaN,endLine:NaN,endColumn:NaN}}cstInvocationStateUpdate(e){const t={name:e,children:Object.create(null)};this.setInitialNodeLocation(t),this.CST_STACK.push(t)}cstFinallyStateUpdate(){this.CST_STACK.pop()}cstPostRuleFull(e){const t=this.LA(0),n=e.location;n.startOffset<=t.startOffset==1?(n.endOffset=t.endOffset,n.endLine=t.endLine,n.endColumn=t.endColumn):(n.startOffset=NaN,n.startLine=NaN,n.startColumn=NaN)}cstPostRuleOnlyOffset(e){const t=this.LA(0),n=e.location;n.startOffset<=t.startOffset==1?n.endOffset=t.endOffset:n.startOffset=NaN}cstPostTerminal(e,t){const n=this.CST_STACK[this.CST_STACK.length-1];var r,i,s;i=t,s=e,void 0===(r=n).children[s]?r.children[s]=[i]:r.children[s].push(i),this.setNodeLocationFromToken(n.location,t)}cstPostNonTerminal(e,t){const n=this.CST_STACK[this.CST_STACK.length-1];!function(e,t,n){void 0===e.children[t]?e.children[t]=[n]:e.children[t].push(n)}(n,t,e),this.setNodeLocationFromNode(n.location,e.location)}getBaseCstVisitorConstructor(){if((0,ge.A)(this.baseCstVisitorConstructor)){const e=Tr(this.className,(0,A.A)(this.gastProductionsCache));return this.baseCstVisitorConstructor=e,e}return this.baseCstVisitorConstructor}getBaseCstVisitorConstructorWithDefaults(){if((0,ge.A)(this.baseCstVisitorWithDefaultsConstructor)){const e=function(e,t,n){const i=function(){};gr(i,e+"BaseSemanticsWithDefaults");const s=Object.create(n.prototype);return(0,r.A)(t,(e=>{s[e]=yr})),(i.prototype=s).constructor=i,i}(this.className,(0,A.A)(this.gastProductionsCache),this.getBaseCstVisitorConstructor());return this.baseCstVisitorWithDefaultsConstructor=e,e}return this.baseCstVisitorWithDefaultsConstructor}getLastExplicitRuleShortName(){const e=this.RULE_STACK;return e[e.length-1]}getPreviousExplicitRuleShortName(){const e=this.RULE_STACK;return e[e.length-2]}getLastExplicitRuleOccurrenceIndex(){const e=this.RULE_OCCURRENCE_STACK;return e[e.length-1]}},class{initLexerAdapter(){this.tokVector=[],this.tokVectorLength=0,this.currIdx=-1}set input(e){if(!0!==this.selfAnalysisDone)throw Error("Missing invocation at the end of the Parser's constructor.");this.reset(),this.tokVector=e,this.tokVectorLength=e.length}get input(){return this.tokVector}SKIP_TOKEN(){return this.currIdx<=this.tokVector.length-2?(this.consumeToken(),this.LA(1)):wr}LA(e){const t=this.currIdx+e;return t<0||this.tokVectorLength<=t?wr:this.tokVector[t]}consumeToken(){this.currIdx++}exportLexerState(){return this.currIdx}importLexerState(e){this.currIdx=e}resetLexerState(){this.currIdx=-1}moveToTerminatedState(){this.currIdx=this.tokVector.length-1}getLexerPosition(){return this.exportLexerState()}},class{initRecognizerEngine(e,t){if(this.className=this.constructor.name,this.shortRuleNameToFull={},this.fullRuleNameToShort={},this.ruleShortNameIdx=256,this.tokenMatcher=xt,this.subruleIdx=0,this.definedRulesNames=[],this.tokensMap={},this.isBackTrackingStack=[],this.RULE_STACK=[],this.RULE_OCCURRENCE_STACK=[],this.gastProductionsCache={},(0,o.A)(t,"serializedGrammar"))throw Error("The Parser's configuration can no longer contain a property.\n\tSee: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_6-0-0\n\tFor Further details.");if((0,Q.A)(e)){if((0,s.A)(e))throw Error("A Token Vocabulary cannot be empty.\n\tNote that the first argument for the parser constructor\n\tis no longer a Token vector (since v4.0).");if("number"==typeof e[0].startOffset)throw Error("The Parser constructor no longer accepts a token vector as the first argument.\n\tSee: https://chevrotain.io/docs/changes/BREAKING_CHANGES.html#_4-0-0\n\tFor Further details.")}if((0,Q.A)(e))this.tokensMap=(0,Ie.A)(e,((e,t)=>(e[t.name]=t,e)),{});else if((0,o.A)(e,"modes")&&se((0,he.A)((0,i.A)(e.modes)),bt)){const t=(0,he.A)((0,i.A)(e.modes)),n=de(t);this.tokensMap=(0,Ie.A)(n,((e,t)=>(e[t.name]=t,e)),{})}else{if(!(0,vr.A)(e))throw new Error(" argument must be An Array of Token constructors, A dictionary of Token constructors or an IMultiModeLexerDefinition");this.tokensMap=(0,l.A)(e)}this.tokensMap.EOF=Xt;const n=(0,o.A)(e,"modes")?(0,he.A)((0,i.A)(e.modes)):(0,i.A)(e),r=se(n,(e=>(0,s.A)(e.categoryMatches)));this.tokenMatcher=r?xt:kt,Nt((0,i.A)(this.tokensMap))}defineRule(e,t,n){if(this.selfAnalysisDone)throw Error(`Grammar rule <${e}> may not be defined after the 'performSelfAnalysis' method has been called'\nMake sure that all grammar rule definitions are done before 'performSelfAnalysis' is called.`);const r=(0,o.A)(n,"resyncEnabled")?n.resyncEnabled:br.resyncEnabled,i=(0,o.A)(n,"recoveryValueFunc")?n.recoveryValueFunc:br.recoveryValueFunc,s=this.ruleShortNameIdx<<12;let a;return this.ruleShortNameIdx++,this.shortRuleNameToFull[s]=e,this.fullRuleNameToShort[e]=s,a=!0===this.outputCst?function(...n){try{this.ruleInvocationStateUpdate(s,e,this.subruleIdx),t.apply(this,n);const r=this.CST_STACK[this.CST_STACK.length-1];return this.cstPostRule(r),r}catch(a){return this.invokeRuleCatch(a,r,i)}finally{this.ruleFinallyStateUpdate()}}:function(...n){try{return this.ruleInvocationStateUpdate(s,e,this.subruleIdx),t.apply(this,n)}catch(a){return this.invokeRuleCatch(a,r,i)}finally{this.ruleFinallyStateUpdate()}},Object.assign(a,{ruleName:e,originalGrammarAction:t})}invokeRuleCatch(e,t,n){const r=1===this.RULE_STACK.length,i=t&&!this.isBackTracking()&&this.recoveryEnabled;if(Qn(e)){const t=e;if(i){const r=this.findReSyncTokenType();if(this.isInCurrentRuleReSyncSet(r)){if(t.resyncedTokens=this.reSyncTo(r),this.outputCst){const e=this.CST_STACK[this.CST_STACK.length-1];return e.recoveredNode=!0,e}return n(e)}if(this.outputCst){const e=this.CST_STACK[this.CST_STACK.length-1];e.recoveredNode=!0,t.partialCstResult=e}throw t}if(r)return this.moveToTerminatedState(),n(e);throw t}throw e}optionInternal(e,t){const n=this.getKeyForAutomaticLookahead(512,t);return this.optionInternalLogic(e,t,n)}optionInternalLogic(e,t,n){let r,i=this.getLaFuncFromCache(n);if("function"!=typeof e){r=e.DEF;const t=e.GATE;if(void 0!==t){const e=i;i=()=>t.call(this)&&e.call(this)}}else r=e;if(!0===i.call(this))return r.call(this)}atLeastOneInternal(e,t){const n=this.getKeyForAutomaticLookahead(or,e);return this.atLeastOneInternalLogic(e,t,n)}atLeastOneInternalLogic(e,t,n){let r,i=this.getLaFuncFromCache(n);if("function"!=typeof t){r=t.DEF;const e=t.GATE;if(void 0!==e){const t=i;i=()=>e.call(this)&&t.call(this)}}else r=t;if(!0!==i.call(this))throw this.raiseEarlyExitException(e,Rn.REPETITION_MANDATORY,t.ERR_MSG);{let e=this.doSingleRepetition(r);for(;!0===i.call(this)&&!0===e;)e=this.doSingleRepetition(r)}this.attemptInRepetitionRecovery(this.atLeastOneInternal,[e,t],i,or,e,gn)}atLeastOneSepFirstInternal(e,t){const n=this.getKeyForAutomaticLookahead(cr,e);this.atLeastOneSepFirstInternalLogic(e,t,n)}atLeastOneSepFirstInternalLogic(e,t,n){const r=t.DEF,i=t.SEP;if(!0!==this.getLaFuncFromCache(n).call(this))throw this.raiseEarlyExitException(e,Rn.REPETITION_MANDATORY_WITH_SEPARATOR,t.ERR_MSG);{r.call(this);const t=()=>this.tokenMatcher(this.LA(1),i);for(;!0===this.tokenMatcher(this.LA(1),i);)this.CONSUME(i),r.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,i,t,r,yn],t,cr,e,yn)}}manyInternal(e,t){const n=this.getKeyForAutomaticLookahead(768,e);return this.manyInternalLogic(e,t,n)}manyInternalLogic(e,t,n){let r,i=this.getLaFuncFromCache(n);if("function"!=typeof t){r=t.DEF;const e=t.GATE;if(void 0!==e){const t=i;i=()=>e.call(this)&&t.call(this)}}else r=t;let s=!0;for(;!0===i.call(this)&&!0===s;)s=this.doSingleRepetition(r);this.attemptInRepetitionRecovery(this.manyInternal,[e,t],i,768,e,pn,s)}manySepFirstInternal(e,t){const n=this.getKeyForAutomaticLookahead(lr,e);this.manySepFirstInternalLogic(e,t,n)}manySepFirstInternalLogic(e,t,n){const r=t.DEF,i=t.SEP;if(!0===this.getLaFuncFromCache(n).call(this)){r.call(this);const t=()=>this.tokenMatcher(this.LA(1),i);for(;!0===this.tokenMatcher(this.LA(1),i);)this.CONSUME(i),r.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,i,t,r,mn],t,lr,e,mn)}}repetitionSepSecondInternal(e,t,n,r,i){for(;n();)this.CONSUME(t),r.call(this);this.attemptInRepetitionRecovery(this.repetitionSepSecondInternal,[e,t,n,r,i],n,cr,e,i)}doSingleRepetition(e){const t=this.getLexerPosition();return e.call(this),this.getLexerPosition()>t}orInternal(e,t){const n=this.getKeyForAutomaticLookahead(256,t),r=(0,Q.A)(e)?e:e.DEF,i=this.getLaFuncFromCache(n).call(this,r);if(void 0!==i)return r[i].ALT.call(this);this.raiseNoAltException(t,e.ERR_MSG)}ruleFinallyStateUpdate(){if(this.RULE_STACK.pop(),this.RULE_OCCURRENCE_STACK.pop(),this.cstFinallyStateUpdate(),0===this.RULE_STACK.length&&!1===this.isAtEndOfInput()){const e=this.LA(1),t=this.errorMessageProvider.buildNotAllInputParsedMessage({firstRedundant:e,ruleName:this.getCurrRuleFullName()});this.SAVE_ERROR(new tr(t,e))}}subruleInternal(e,t,n){let r;try{const i=void 0!==n?n.ARGS:void 0;return this.subruleIdx=t,r=e.apply(this,i),this.cstPostNonTerminal(r,void 0!==n&&void 0!==n.LABEL?n.LABEL:e.ruleName),r}catch(i){throw this.subruleInternalError(i,n,e.ruleName)}}subruleInternalError(e,t,n){throw Qn(e)&&void 0!==e.partialCstResult&&(this.cstPostNonTerminal(e.partialCstResult,void 0!==t&&void 0!==t.LABEL?t.LABEL:n),delete e.partialCstResult),e}consumeInternal(e,t,n){let r;try{const t=this.LA(1);!0===this.tokenMatcher(t,e)?(this.consumeToken(),r=t):this.consumeInternalError(e,t,n)}catch(i){r=this.consumeInternalRecovery(e,t,i)}return this.cstPostTerminal(void 0!==n&&void 0!==n.LABEL?n.LABEL:e.name,r),r}consumeInternalError(e,t,n){let r;const i=this.LA(0);throw r=void 0!==n&&n.ERR_MSG?n.ERR_MSG:this.errorMessageProvider.buildMismatchTokenMessage({expected:e,actual:t,previous:i,ruleName:this.getCurrRuleFullName()}),this.SAVE_ERROR(new Jn(r,t,i))}consumeInternalRecovery(e,t,n){if(!this.recoveryEnabled||"MismatchedTokenException"!==n.name||this.isBackTracking())throw n;{const i=this.getFollowsForInRuleRecovery(e,t);try{return this.tryInRuleRecovery(e,i)}catch(r){throw r.name===ir?n:r}}}saveRecogState(){const e=this.errors,t=(0,l.A)(this.RULE_STACK);return{errors:e,lexerState:this.exportLexerState(),RULE_STACK:t,CST_STACK:this.CST_STACK}}reloadRecogState(e){this.errors=e.errors,this.importLexerState(e.lexerState),this.RULE_STACK=e.RULE_STACK}ruleInvocationStateUpdate(e,t,n){this.RULE_OCCURRENCE_STACK.push(n),this.RULE_STACK.push(e),this.cstInvocationStateUpdate(t)}isBackTracking(){return 0!==this.isBackTrackingStack.length}getCurrRuleFullName(){const e=this.getLastExplicitRuleShortName();return this.shortRuleNameToFull[e]}shortRuleNameToFullName(e){return this.shortRuleNameToFull[e]}isAtEndOfInput(){return this.tokenMatcher(this.LA(1),Xt)}reset(){this.resetLexerState(),this.subruleIdx=0,this.isBackTrackingStack=[],this.errors=[],this.RULE_STACK=[],this.CST_STACK=[],this.RULE_OCCURRENCE_STACK=[]}},class{ACTION(e){return e.call(this)}consume(e,t,n){return this.consumeInternal(t,e,n)}subrule(e,t,n){return this.subruleInternal(t,e,n)}option(e,t){return this.optionInternal(t,e)}or(e,t){return this.orInternal(t,e)}many(e,t){return this.manyInternal(e,t)}atLeastOne(e,t){return this.atLeastOneInternal(e,t)}CONSUME(e,t){return this.consumeInternal(e,0,t)}CONSUME1(e,t){return this.consumeInternal(e,1,t)}CONSUME2(e,t){return this.consumeInternal(e,2,t)}CONSUME3(e,t){return this.consumeInternal(e,3,t)}CONSUME4(e,t){return this.consumeInternal(e,4,t)}CONSUME5(e,t){return this.consumeInternal(e,5,t)}CONSUME6(e,t){return this.consumeInternal(e,6,t)}CONSUME7(e,t){return this.consumeInternal(e,7,t)}CONSUME8(e,t){return this.consumeInternal(e,8,t)}CONSUME9(e,t){return this.consumeInternal(e,9,t)}SUBRULE(e,t){return this.subruleInternal(e,0,t)}SUBRULE1(e,t){return this.subruleInternal(e,1,t)}SUBRULE2(e,t){return this.subruleInternal(e,2,t)}SUBRULE3(e,t){return this.subruleInternal(e,3,t)}SUBRULE4(e,t){return this.subruleInternal(e,4,t)}SUBRULE5(e,t){return this.subruleInternal(e,5,t)}SUBRULE6(e,t){return this.subruleInternal(e,6,t)}SUBRULE7(e,t){return this.subruleInternal(e,7,t)}SUBRULE8(e,t){return this.subruleInternal(e,8,t)}SUBRULE9(e,t){return this.subruleInternal(e,9,t)}OPTION(e){return this.optionInternal(e,0)}OPTION1(e){return this.optionInternal(e,1)}OPTION2(e){return this.optionInternal(e,2)}OPTION3(e){return this.optionInternal(e,3)}OPTION4(e){return this.optionInternal(e,4)}OPTION5(e){return this.optionInternal(e,5)}OPTION6(e){return this.optionInternal(e,6)}OPTION7(e){return this.optionInternal(e,7)}OPTION8(e){return this.optionInternal(e,8)}OPTION9(e){return this.optionInternal(e,9)}OR(e){return this.orInternal(e,0)}OR1(e){return this.orInternal(e,1)}OR2(e){return this.orInternal(e,2)}OR3(e){return this.orInternal(e,3)}OR4(e){return this.orInternal(e,4)}OR5(e){return this.orInternal(e,5)}OR6(e){return this.orInternal(e,6)}OR7(e){return this.orInternal(e,7)}OR8(e){return this.orInternal(e,8)}OR9(e){return this.orInternal(e,9)}MANY(e){this.manyInternal(0,e)}MANY1(e){this.manyInternal(1,e)}MANY2(e){this.manyInternal(2,e)}MANY3(e){this.manyInternal(3,e)}MANY4(e){this.manyInternal(4,e)}MANY5(e){this.manyInternal(5,e)}MANY6(e){this.manyInternal(6,e)}MANY7(e){this.manyInternal(7,e)}MANY8(e){this.manyInternal(8,e)}MANY9(e){this.manyInternal(9,e)}MANY_SEP(e){this.manySepFirstInternal(0,e)}MANY_SEP1(e){this.manySepFirstInternal(1,e)}MANY_SEP2(e){this.manySepFirstInternal(2,e)}MANY_SEP3(e){this.manySepFirstInternal(3,e)}MANY_SEP4(e){this.manySepFirstInternal(4,e)}MANY_SEP5(e){this.manySepFirstInternal(5,e)}MANY_SEP6(e){this.manySepFirstInternal(6,e)}MANY_SEP7(e){this.manySepFirstInternal(7,e)}MANY_SEP8(e){this.manySepFirstInternal(8,e)}MANY_SEP9(e){this.manySepFirstInternal(9,e)}AT_LEAST_ONE(e){this.atLeastOneInternal(0,e)}AT_LEAST_ONE1(e){return this.atLeastOneInternal(1,e)}AT_LEAST_ONE2(e){this.atLeastOneInternal(2,e)}AT_LEAST_ONE3(e){this.atLeastOneInternal(3,e)}AT_LEAST_ONE4(e){this.atLeastOneInternal(4,e)}AT_LEAST_ONE5(e){this.atLeastOneInternal(5,e)}AT_LEAST_ONE6(e){this.atLeastOneInternal(6,e)}AT_LEAST_ONE7(e){this.atLeastOneInternal(7,e)}AT_LEAST_ONE8(e){this.atLeastOneInternal(8,e)}AT_LEAST_ONE9(e){this.atLeastOneInternal(9,e)}AT_LEAST_ONE_SEP(e){this.atLeastOneSepFirstInternal(0,e)}AT_LEAST_ONE_SEP1(e){this.atLeastOneSepFirstInternal(1,e)}AT_LEAST_ONE_SEP2(e){this.atLeastOneSepFirstInternal(2,e)}AT_LEAST_ONE_SEP3(e){this.atLeastOneSepFirstInternal(3,e)}AT_LEAST_ONE_SEP4(e){this.atLeastOneSepFirstInternal(4,e)}AT_LEAST_ONE_SEP5(e){this.atLeastOneSepFirstInternal(5,e)}AT_LEAST_ONE_SEP6(e){this.atLeastOneSepFirstInternal(6,e)}AT_LEAST_ONE_SEP7(e){this.atLeastOneSepFirstInternal(7,e)}AT_LEAST_ONE_SEP8(e){this.atLeastOneSepFirstInternal(8,e)}AT_LEAST_ONE_SEP9(e){this.atLeastOneSepFirstInternal(9,e)}RULE(e,t,n=br){if(ne(this.definedRulesNames,e)){const t={message:en.buildDuplicateRuleNameError({topLevelRule:e,grammarName:this.className}),type:Or.DUPLICATE_RULE_NAME,ruleName:e};this.definitionErrors.push(t)}this.definedRulesNames.push(e);const r=this.defineRule(e,t,n);return this[e]=r,r}OVERRIDE_RULE(e,t,n=br){const r=function(e,t,n){const r=[];let i;return ne(t,e)||(i=`Invalid rule override, rule: ->${e}<- cannot be overridden in the grammar: ->${n}<-as it is not defined in any of the super grammars `,r.push({message:i,type:Or.INVALID_RULE_OVERRIDE,ruleName:e})),r}(e,this.definedRulesNames,this.className);this.definitionErrors=this.definitionErrors.concat(r);const i=this.defineRule(e,t,n);return this[e]=i,i}BACKTRACK(e,t){return function(){this.isBackTrackingStack.push(1);const n=this.saveRecogState();try{return e.apply(this,t),!0}catch(r){if(Qn(r))return!1;throw r}finally{this.reloadRecogState(n),this.isBackTrackingStack.pop()}}}getGAstProductions(){return this.gastProductionsCache}getSerializedGastProductions(){return e=(0,i.A)(this.gastProductionsCache),(0,a.A)(e,W);var e}},class{initErrorHandler(e){this._errors=[],this.errorMessageProvider=(0,o.A)(e,"errorMessageProvider")?e.errorMessageProvider:Lr.errorMessageProvider}SAVE_ERROR(e){if(Qn(e))return e.context={ruleStack:this.getHumanReadableRuleStack(),ruleOccurrenceStack:(0,l.A)(this.RULE_OCCURRENCE_STACK)},this._errors.push(e),e;throw Error("Trying to save an Error which is not a RecognitionException")}get errors(){return(0,l.A)(this._errors)}set errors(e){this._errors=e}raiseEarlyExitException(e,t,n){const r=this.getCurrRuleFullName(),i=On(e,this.getGAstProductions()[r],t,this.maxLookahead)[0],s=[];for(let o=1;o<=this.maxLookahead;o++)s.push(this.LA(o));const a=this.errorMessageProvider.buildEarlyExitMessage({expectedIterationPaths:i,actual:s,previous:this.LA(0),customUserDescription:n,ruleName:r});throw this.SAVE_ERROR(new nr(a,this.LA(1),this.LA(0)))}raiseNoAltException(e,t){const n=this.getCurrRuleFullName(),r=bn(e,this.getGAstProductions()[n],this.maxLookahead),i=[];for(let o=1;o<=this.maxLookahead;o++)i.push(this.LA(o));const s=this.LA(0),a=this.errorMessageProvider.buildNoViableAltMessage({expectedPathsPerAlt:r,actual:i,previous:s,customUserDescription:t,ruleName:this.getCurrRuleFullName()});throw this.SAVE_ERROR(new er(a,this.LA(1),s))}},class{initContentAssist(){}computeContentAssist(e,t){const n=this.gastProductionsCache[e];if((0,ge.A)(n))throw Error(`Rule ->${e}<- does not exist in this grammar.`);return An([n],t,this.tokenMatcher,this.maxLookahead)}getNextPossibleTokenTypes(e){const t=Ue(e.ruleStack),n=this.getGAstProductions()[t];return new hn(n,e).startWalking()}},class{initGastRecorder(e){this.recordingProdStack=[],this.RECORDING_PHASE=!1}enableRecording(){this.RECORDING_PHASE=!0,this.TRACE_INIT("Enable Recording",(()=>{for(let e=0;e<10;e++){const t=e>0?e:"";this[`CONSUME${t}`]=function(t,n){return this.consumeInternalRecord(t,e,n)},this[`SUBRULE${t}`]=function(t,n){return this.subruleInternalRecord(t,e,n)},this[`OPTION${t}`]=function(t){return this.optionInternalRecord(t,e)},this[`OR${t}`]=function(t){return this.orInternalRecord(t,e)},this[`MANY${t}`]=function(t){this.manyInternalRecord(e,t)},this[`MANY_SEP${t}`]=function(t){this.manySepFirstInternalRecord(e,t)},this[`AT_LEAST_ONE${t}`]=function(t){this.atLeastOneInternalRecord(e,t)},this[`AT_LEAST_ONE_SEP${t}`]=function(t){this.atLeastOneSepFirstInternalRecord(e,t)}}this.consume=function(e,t,n){return this.consumeInternalRecord(t,e,n)},this.subrule=function(e,t,n){return this.subruleInternalRecord(t,e,n)},this.option=function(e,t){return this.optionInternalRecord(t,e)},this.or=function(e,t){return this.orInternalRecord(t,e)},this.many=function(e,t){this.manyInternalRecord(e,t)},this.atLeastOne=function(e,t){this.atLeastOneInternalRecord(e,t)},this.ACTION=this.ACTION_RECORD,this.BACKTRACK=this.BACKTRACK_RECORD,this.LA=this.LA_RECORD}))}disableRecording(){this.RECORDING_PHASE=!1,this.TRACE_INIT("Deleting Recording methods",(()=>{const e=this;for(let t=0;t<10;t++){const n=t>0?t:"";delete e[`CONSUME${n}`],delete e[`SUBRULE${n}`],delete e[`OPTION${n}`],delete e[`OR${n}`],delete e[`MANY${n}`],delete e[`MANY_SEP${n}`],delete e[`AT_LEAST_ONE${n}`],delete e[`AT_LEAST_ONE_SEP${n}`]}delete e.consume,delete e.subrule,delete e.option,delete e.or,delete e.many,delete e.atLeastOne,delete e.ACTION,delete e.BACKTRACK,delete e.LA}))}ACTION_RECORD(e){}BACKTRACK_RECORD(e,t){return()=>!0}LA_RECORD(e){return wr}topLevelRuleRecord(e,t){try{const n=new D({definition:[],name:e});return n.name=e,this.recordingProdStack.push(n),t.call(this),this.recordingProdStack.pop(),n}catch(n){if(!0!==n.KNOWN_RECORDER_ERROR)try{n.message=n.message+'\n\t This error was thrown during the "grammar recording phase" For more info see:\n\thttps://chevrotain.io/docs/guide/internals.html#grammar-recording'}catch(r){throw n}throw n}}optionInternalRecord(e,t){return Ir.call(this,F,e,t)}atLeastOneInternalRecord(e,t){Ir.call(this,G,t,e)}atLeastOneSepFirstInternalRecord(e,t){Ir.call(this,K,t,e,!0)}manyInternalRecord(e,t){Ir.call(this,B,t,e)}manySepFirstInternalRecord(e,t){Ir.call(this,j,t,e,!0)}orInternalRecord(e,t){return Sr.call(this,e,t)}subruleInternalRecord(e,t,n){if(Cr(t),!e||!1===(0,o.A)(e,"ruleName")){const n=new Error(` argument is invalid expecting a Parser method reference but got: <${JSON.stringify(e)}>\n inside top level rule: <${this.recordingProdStack[0].name}>`);throw n.KNOWN_RECORDER_ERROR=!0,n}const r=(0,$t.A)(this.recordingProdStack),i=e.ruleName,s=new M({idx:t,nonTerminalName:i,label:null==n?void 0:n.LABEL,referencedRule:void 0});return r.definition.push(s),this.outputCst?xr:Rr}consumeInternalRecord(e,t,n){if(Cr(t),!wt(e)){const n=new Error(` argument is invalid expecting a TokenType reference but got: <${JSON.stringify(e)}>\n inside top level rule: <${this.recordingProdStack[0].name}>`);throw n.KNOWN_RECORDER_ERROR=!0,n}const r=(0,$t.A)(this.recordingProdStack),i=new H({idx:t,terminalType:e,label:null==n?void 0:n.LABEL});return r.definition.push(i),kr}},class{initPerformanceTracer(e){if((0,o.A)(e,"traceInitPerf")){const t=e.traceInitPerf,n="number"==typeof t;this.traceInitMaxIdent=n?t:1/0,this.traceInitPerf=n?t>0:t}else this.traceInitMaxIdent=0,this.traceInitPerf=Lr.traceInitPerf;this.traceInitIndent=-1}TRACE_INIT(e,t){if(!0===this.traceInitPerf){this.traceInitIndent++;const n=new Array(this.traceInitIndent+1).join("\t");this.traceInitIndent`);const{time:r,value:i}=Et(t),s=r>10?console.warn:console.log;return this.traceInitIndent time: ${r}ms`),this.traceInitIndent--,i}return t()}}].forEach((e=>{const t=e.prototype;Object.getOwnPropertyNames(t).forEach((n=>{if("constructor"===n)return;const r=Object.getOwnPropertyDescriptor(t,n);r&&(r.get||r.set)?Object.defineProperty(_r.prototype,n,r):_r.prototype[n]=e.prototype[n]}))}));class Dr extends Mr{constructor(e,t=Lr){const n=(0,l.A)(t);n.outputCst=!1,super(e,n)}}},98913:(e,t,n)=>{n.d(t,{t:()=>Yr,u:()=>Xr});var r=n(76373),i=n(90418),s=n(82806),a=n(32151);var o=n(69637),l=n(74722),c=n(94092);function u(e,t,n){return`${e.name}_${t}_${n}`}const d=1,h=2,f=4,p=5,m=7,g=8,y=9,T=10,A=11,v=12;class R{constructor(e){this.target=e}isEpsilon(){return!1}}class $ extends R{constructor(e,t){super(e),this.tokenType=t}}class E extends R{constructor(e){super(e)}isEpsilon(){return!0}}class k extends R{constructor(e,t,n){super(e),this.rule=t,this.followState=n}isEpsilon(){return!0}}function x(e){const t={decisionMap:{},decisionStates:[],ruleToStartState:new Map,ruleToStopState:new Map,states:[]};!function(e,t){const n=t.length;for(let r=0;rI(e,t,n))),s=L(e,t,r,n,...i);return s}(e,t,n):n instanceof o.c$?function(e,t,n){const r=P(e,t,n,{type:d});w(e,r);const i=L(e,t,r,n,S(e,t,n));return function(e,t,n,r){const i=r.left,s=r.right;return _(i,s),e.decisionMap[u(t,"Option",n.idx)]=i,r}(e,t,n,i)}(e,t,n):n instanceof o.Y2?function(e,t,n){const r=P(e,t,n,{type:p});w(e,r);const i=L(e,t,r,n,S(e,t,n));return C(e,t,n,i)}(e,t,n):n instanceof o.Pp?function(e,t,n){const r=P(e,t,n,{type:p});w(e,r);const i=L(e,t,r,n,S(e,t,n)),s=b(e,t,n.separator,n);return C(e,t,n,i,s)}(e,t,n):n instanceof o.$P?function(e,t,n){const r=P(e,t,n,{type:f});w(e,r);const i=L(e,t,r,n,S(e,t,n));return N(e,t,n,i)}(e,t,n):n instanceof o.Cy?function(e,t,n){const r=P(e,t,n,{type:f});w(e,r);const i=L(e,t,r,n,S(e,t,n)),s=b(e,t,n.separator,n);return N(e,t,n,i,s)}(e,t,n):S(e,t,n)}function S(e,t,n){const r=(0,c.A)((0,l.A)(n.definition,(n=>I(e,t,n))),(e=>void 0!==e));return 1===r.length?r[0]:0===r.length?void 0:function(e,t){const n=t.length;for(let s=0;se.alt))}get key(){let e="";for(const t in this.map)e+=t+":";return e}}function G(e,t=!0){return`${t?`a${e.alt}`:""}s${e.state.stateNumber}:${e.stack.map((e=>e.stateNumber.toString())).join("_")}`}var K=n(86452),B=n(18139),j=n(23958),V=n(99902);const H=function(e,t){return e&&e.length?(0,V.A)(e,(0,j.A)(t,2)):[]};var W=n(34098),z=n(8058),Y=n(66401),X=n(89463);function q(e,t){const n={};return r=>{const i=r.toString();let s=n[i];return void 0!==s||(s={atnStartState:e,decision:t,states:{}},n[i]=s),s}}class Q{constructor(){this.predicates=[]}is(e){return e>=this.predicates.length||this.predicates[e]}set(e,t){this.predicates[e]=t}toString(){let e="";const t=this.predicates.length;for(let n=0;nconsole.log(e)}initialize(e){this.atn=x(e.rules),this.dfas=function(e){const t=e.decisionStates.length,n=Array(t);for(let r=0;r(0,l.A)(e,(e=>e[0]))));if(ee(h,!1)&&!i){const e=(0,X.A)(h,((e,t,n)=>((0,z.A)(t,(t=>{t&&(e[t.tokenTypeIdx]=n,(0,z.A)(t.categoryMatches,(t=>{e[t]=n})))})),e)),{});return r?function(t){var n;const r=this.LA(1),i=e[r.tokenTypeIdx];if(void 0!==t&&void 0!==i){const e=null===(n=t[i])||void 0===n?void 0:n.GATE;if(void 0!==e&&!1===e.call(this))return}return i}:function(){const t=this.LA(1);return e[t.tokenTypeIdx]}}return r?function(e){const t=new Q,n=void 0===e?0:e.length;for(let i=0;i(0,l.A)(e,(e=>e[0]))));if(ee(h)&&h[0][0]&&!i){const e=h[0],t=(0,W.A)(e);if(1===t.length&&(0,Y.A)(t[0].categoryMatches)){const e=t[0].tokenTypeIdx;return function(){return this.LA(1).tokenTypeIdx===e}}{const e=(0,X.A)(t,((e,t)=>(void 0!==t&&(e[t.tokenTypeIdx]=!0,(0,z.A)(t.categoryMatches,(t=>{e[t]=!0}))),e)),{});return function(){const t=this.LA(1);return!0===e[t.tokenTypeIdx]}}}return function(){const e=te.call(this,s,d,Z,a);return"object"!=typeof e&&0===e}}}function ee(e,t=!0){const n=new Set;for(const r of e){const e=new Set;for(const i of r){if(void 0===i){if(t)break;return!1}const r=[i.tokenTypeIdx].concat(i.categoryMatches);for(const t of r)if(n.has(t)){if(!e.has(t))return!1}else n.add(t),e.add(t)}}return!0}function te(e,t,n,r){const i=e[t](n);let s=i.start;if(void 0===s){s=ce(i,oe(ue(i.atnStartState))),i.start=s}return ne.apply(this,[i,s,n,r])}function ne(e,t,n,r){let i=t,s=1;const a=[];let o=this.LA(s++);for(;;){let t=(l=o,i.edges[l.tokenTypeIdx]);if(void 0===t&&(t=re.apply(this,[e,i,o,s,n,r])),t===U)return se(a,i,o);if(!0===t.isAcceptState)return t.prediction;i=t,a.push(o),o=this.LA(s++)}var l}function re(e,t,n,r,i,s){const a=function(e,t,n){const r=new F,i=[];for(const a of e.elements){if(!1===n.is(a.alt))continue;if(a.state.type===m){i.push(a);continue}const e=a.state.transitions.length;for(let n=0;n0&&!function(e){for(const t of e.elements)if(t.state.type===m)return!0;return!1}(s))for(const a of i)s.add(a);return s}(t.configs,n,i);if(0===a.size)return le(e,t,n,U),U;let o=oe(a);const l=function(e,t){let n;for(const r of e.elements)if(!0===t.is(r.alt))if(void 0===n)n=r.alt;else if(n!==r.alt)return;return n}(a,i);if(void 0!==l)o.isAcceptState=!0,o.prediction=l,o.configs.uniqueAlt=l;else if(function(e){if(function(e){for(const t of e.elements)if(t.state.type!==m)return!1;return!0}(e))return!0;const t=function(e){const t=new Map;for(const n of e){const e=G(n,!1);let r=t.get(e);void 0===r&&(r={},t.set(e,r)),r[n.alt]=!0}return t}(e.elements);return function(e){for(const t of Array.from(e.values()))if(Object.keys(t).length>1)return!0;return!1}(t)&&!function(e){for(const t of Array.from(e.values()))if(1===Object.keys(t).length)return!0;return!1}(t)}(a)){const t=(0,K.A)(a.alts);o.isAcceptState=!0,o.prediction=t,o.configs.uniqueAlt=t,ie.apply(this,[e,r,a.alts,s])}return o=le(e,t,n,o),o}function ie(e,t,n,r){const i=[];for(let a=1;a<=t;a++)i.push(this.LA(a).tokenType);const s=e.atnStartState;r(function(e){const t=(0,l.A)(e.prefixPath,(e=>(0,o.Sk)(e))).join(", "),n=0===e.production.idx?"":e.production.idx;let r=`Ambiguous Alternatives Detected: <${e.ambiguityIndices.join(", ")}> in <${function(e){if(e instanceof o.wL)return"SUBRULE";if(e instanceof o.c$)return"OPTION";if(e instanceof o.ak)return"OR";if(e instanceof o.$P)return"AT_LEAST_ONE";if(e instanceof o.Cy)return"AT_LEAST_ONE_SEP";if(e instanceof o.Pp)return"MANY_SEP";if(e instanceof o.Y2)return"MANY";if(e instanceof o.BK)return"CONSUME";throw Error("non exhaustive match")}(e.production)}${n}> inside <${e.topLevelRule.name}> Rule,\n<${t}> may appears as a prefix path in all these alternatives.\n`;return r+="See: https://chevrotain.io/docs/guide/resolving_grammar_errors.html#AMBIGUOUS_ALTERNATIVES\nFor Further details.",r}({topLevelRule:s.rule,ambiguityIndices:n,production:s.production,prefixPath:i}))}function se(e,t,n){const r=(0,B.A)(t.configs.elements,(e=>e.state.transitions));return{actualToken:n,possibleTokenTypes:H(r.filter((e=>e instanceof $)).map((e=>e.tokenType)),(e=>e.tokenTypeIdx)),tokenPath:e}}function ae(e,t){if(e instanceof $&&(0,o.G)(t,e.tokenType))return e.target}function oe(e){return{configs:e,edges:{},isAcceptState:!1,prediction:-1}}function le(e,t,n,r){return r=ce(e,r),t.edges[n.tokenTypeIdx]=r,r}function ce(e,t){if(t===U)return t;const n=t.configs.key,r=e.states[n];return void 0!==r?r:(t.configs.finalize(),e.states[n]=t,t)}function ue(e){const t=new F,n=e.transitions.length;for(let r=0;r0){const n=[...e.stack];de({state:n.pop(),alt:e.alt,stack:n},t)}else t.add(e);return}n.epsilonOnlyTransitions||t.add(e);const r=n.transitions.length;for(let i=0;i0&&(r.arguments=n),r},e.is=function(e){let t=e;return Ft.defined(t)&&Ft.string(t.title)&&Ft.string(t.command)}}(Le||(Le={})),function(e){e.replace=function(e,t){return{range:e,newText:t}},e.insert=function(e,t){return{range:{start:e,end:e},newText:t}},e.del=function(e){return{range:e,newText:""}},e.is=function(e){const t=e;return Ft.objectLiteral(t)&&Ft.string(t.newText)&&Te.is(t.range)}}(be||(be={})),function(e){e.create=function(e,t,n){const r={label:e};return void 0!==t&&(r.needsConfirmation=t),void 0!==n&&(r.description=n),r},e.is=function(e){const t=e;return Ft.objectLiteral(t)&&Ft.string(t.label)&&(Ft.boolean(t.needsConfirmation)||void 0===t.needsConfirmation)&&(Ft.string(t.description)||void 0===t.description)}}(Oe||(Oe={})),function(e){e.is=function(e){const t=e;return Ft.string(t)}}(_e||(_e={})),function(e){e.replace=function(e,t,n){return{range:e,newText:t,annotationId:n}},e.insert=function(e,t,n){return{range:{start:e,end:e},newText:t,annotationId:n}},e.del=function(e,t){return{range:e,newText:"",annotationId:t}},e.is=function(e){const t=e;return be.is(t)&&(Oe.is(t.annotationId)||_e.is(t.annotationId))}}(Pe||(Pe={})),function(e){e.create=function(e,t){return{textDocument:e,edits:t}},e.is=function(e){let t=e;return Ft.defined(t)&&je.is(t.textDocument)&&Array.isArray(t.edits)}}(Me||(Me={})),function(e){e.create=function(e,t,n){let r={kind:"create",uri:e};return void 0===t||void 0===t.overwrite&&void 0===t.ignoreIfExists||(r.options=t),void 0!==n&&(r.annotationId=n),r},e.is=function(e){let t=e;return t&&"create"===t.kind&&Ft.string(t.uri)&&(void 0===t.options||(void 0===t.options.overwrite||Ft.boolean(t.options.overwrite))&&(void 0===t.options.ignoreIfExists||Ft.boolean(t.options.ignoreIfExists)))&&(void 0===t.annotationId||_e.is(t.annotationId))}}(De||(De={})),function(e){e.create=function(e,t,n,r){let i={kind:"rename",oldUri:e,newUri:t};return void 0===n||void 0===n.overwrite&&void 0===n.ignoreIfExists||(i.options=n),void 0!==r&&(i.annotationId=r),i},e.is=function(e){let t=e;return t&&"rename"===t.kind&&Ft.string(t.oldUri)&&Ft.string(t.newUri)&&(void 0===t.options||(void 0===t.options.overwrite||Ft.boolean(t.options.overwrite))&&(void 0===t.options.ignoreIfExists||Ft.boolean(t.options.ignoreIfExists)))&&(void 0===t.annotationId||_e.is(t.annotationId))}}(Ue||(Ue={})),function(e){e.create=function(e,t,n){let r={kind:"delete",uri:e};return void 0===t||void 0===t.recursive&&void 0===t.ignoreIfNotExists||(r.options=t),void 0!==n&&(r.annotationId=n),r},e.is=function(e){let t=e;return t&&"delete"===t.kind&&Ft.string(t.uri)&&(void 0===t.options||(void 0===t.options.recursive||Ft.boolean(t.options.recursive))&&(void 0===t.options.ignoreIfNotExists||Ft.boolean(t.options.ignoreIfNotExists)))&&(void 0===t.annotationId||_e.is(t.annotationId))}}(Fe||(Fe={})),function(e){e.is=function(e){let t=e;return t&&(void 0!==t.changes||void 0!==t.documentChanges)&&(void 0===t.documentChanges||t.documentChanges.every((e=>Ft.string(e.kind)?De.is(e)||Ue.is(e)||Fe.is(e):Me.is(e))))}}(Ge||(Ge={}));!function(e){e.create=function(e){return{uri:e}},e.is=function(e){let t=e;return Ft.defined(t)&&Ft.string(t.uri)}}(Ke||(Ke={})),function(e){e.create=function(e,t){return{uri:e,version:t}},e.is=function(e){let t=e;return Ft.defined(t)&&Ft.string(t.uri)&&Ft.integer(t.version)}}(Be||(Be={})),function(e){e.create=function(e,t){return{uri:e,version:t}},e.is=function(e){let t=e;return Ft.defined(t)&&Ft.string(t.uri)&&(null===t.version||Ft.integer(t.version))}}(je||(je={})),function(e){e.create=function(e,t,n,r){return{uri:e,languageId:t,version:n,text:r}},e.is=function(e){let t=e;return Ft.defined(t)&&Ft.string(t.uri)&&Ft.string(t.languageId)&&Ft.integer(t.version)&&Ft.string(t.text)}}(Ve||(Ve={})),function(e){e.PlainText="plaintext",e.Markdown="markdown",e.is=function(t){const n=t;return n===e.PlainText||n===e.Markdown}}(He||(He={})),function(e){e.is=function(e){const t=e;return Ft.objectLiteral(e)&&He.is(t.kind)&&Ft.string(t.value)}}(We||(We={})),function(e){e.Text=1,e.Method=2,e.Function=3,e.Constructor=4,e.Field=5,e.Variable=6,e.Class=7,e.Interface=8,e.Module=9,e.Property=10,e.Unit=11,e.Value=12,e.Enum=13,e.Keyword=14,e.Snippet=15,e.Color=16,e.File=17,e.Reference=18,e.Folder=19,e.EnumMember=20,e.Constant=21,e.Struct=22,e.Event=23,e.Operator=24,e.TypeParameter=25}(ze||(ze={})),function(e){e.PlainText=1,e.Snippet=2}(Ye||(Ye={})),function(e){e.Deprecated=1}(Xe||(Xe={})),function(e){e.create=function(e,t,n){return{newText:e,insert:t,replace:n}},e.is=function(e){const t=e;return t&&Ft.string(t.newText)&&Te.is(t.insert)&&Te.is(t.replace)}}(qe||(qe={})),function(e){e.asIs=1,e.adjustIndentation=2}(Qe||(Qe={})),function(e){e.is=function(e){const t=e;return t&&(Ft.string(t.detail)||void 0===t.detail)&&(Ft.string(t.description)||void 0===t.description)}}(Ze||(Ze={})),function(e){e.create=function(e){return{label:e}}}(Je||(Je={})),function(e){e.create=function(e,t){return{items:e||[],isIncomplete:!!t}}}(et||(et={})),function(e){e.fromPlainText=function(e){return e.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")},e.is=function(e){const t=e;return Ft.string(t)||Ft.objectLiteral(t)&&Ft.string(t.language)&&Ft.string(t.value)}}(tt||(tt={})),function(e){e.is=function(e){let t=e;return!!t&&Ft.objectLiteral(t)&&(We.is(t.contents)||tt.is(t.contents)||Ft.typedArray(t.contents,tt.is))&&(void 0===e.range||Te.is(e.range))}}(nt||(nt={})),function(e){e.create=function(e,t){return t?{label:e,documentation:t}:{label:e}}}(rt||(rt={})),function(e){e.create=function(e,t,...n){let r={label:e};return Ft.defined(t)&&(r.documentation=t),Ft.defined(n)?r.parameters=n:r.parameters=[],r}}(it||(it={})),function(e){e.Text=1,e.Read=2,e.Write=3}(st||(st={})),function(e){e.create=function(e,t){let n={range:e};return Ft.number(t)&&(n.kind=t),n}}(at||(at={})),function(e){e.File=1,e.Module=2,e.Namespace=3,e.Package=4,e.Class=5,e.Method=6,e.Property=7,e.Field=8,e.Constructor=9,e.Enum=10,e.Interface=11,e.Function=12,e.Variable=13,e.Constant=14,e.String=15,e.Number=16,e.Boolean=17,e.Array=18,e.Object=19,e.Key=20,e.Null=21,e.EnumMember=22,e.Struct=23,e.Event=24,e.Operator=25,e.TypeParameter=26}(ot||(ot={})),function(e){e.Deprecated=1}(lt||(lt={})),function(e){e.create=function(e,t,n,r,i){let s={name:e,kind:t,location:{uri:r,range:n}};return i&&(s.containerName=i),s}}(ct||(ct={})),function(e){e.create=function(e,t,n,r){return void 0!==r?{name:e,kind:t,location:{uri:n,range:r}}:{name:e,kind:t,location:{uri:n}}}}(ut||(ut={})),function(e){e.create=function(e,t,n,r,i,s){let a={name:e,detail:t,kind:n,range:r,selectionRange:i};return void 0!==s&&(a.children=s),a},e.is=function(e){let t=e;return t&&Ft.string(t.name)&&Ft.number(t.kind)&&Te.is(t.range)&&Te.is(t.selectionRange)&&(void 0===t.detail||Ft.string(t.detail))&&(void 0===t.deprecated||Ft.boolean(t.deprecated))&&(void 0===t.children||Array.isArray(t.children))&&(void 0===t.tags||Array.isArray(t.tags))}}(dt||(dt={})),function(e){e.Empty="",e.QuickFix="quickfix",e.Refactor="refactor",e.RefactorExtract="refactor.extract",e.RefactorInline="refactor.inline",e.RefactorRewrite="refactor.rewrite",e.Source="source",e.SourceOrganizeImports="source.organizeImports",e.SourceFixAll="source.fixAll"}(ht||(ht={})),function(e){e.Invoked=1,e.Automatic=2}(ft||(ft={})),function(e){e.create=function(e,t,n){let r={diagnostics:e};return null!=t&&(r.only=t),null!=n&&(r.triggerKind=n),r},e.is=function(e){let t=e;return Ft.defined(t)&&Ft.typedArray(t.diagnostics,we.is)&&(void 0===t.only||Ft.typedArray(t.only,Ft.string))&&(void 0===t.triggerKind||t.triggerKind===ft.Invoked||t.triggerKind===ft.Automatic)}}(pt||(pt={})),function(e){e.create=function(e,t,n){let r={title:e},i=!0;return"string"==typeof t?(i=!1,r.kind=t):Le.is(t)?r.command=t:r.edit=t,i&&void 0!==n&&(r.kind=n),r},e.is=function(e){let t=e;return t&&Ft.string(t.title)&&(void 0===t.diagnostics||Ft.typedArray(t.diagnostics,we.is))&&(void 0===t.kind||Ft.string(t.kind))&&(void 0!==t.edit||void 0!==t.command)&&(void 0===t.command||Le.is(t.command))&&(void 0===t.isPreferred||Ft.boolean(t.isPreferred))&&(void 0===t.edit||Ge.is(t.edit))}}(mt||(mt={})),function(e){e.create=function(e,t){let n={range:e};return Ft.defined(t)&&(n.data=t),n},e.is=function(e){let t=e;return Ft.defined(t)&&Te.is(t.range)&&(Ft.undefined(t.command)||Le.is(t.command))}}(gt||(gt={})),function(e){e.create=function(e,t){return{tabSize:e,insertSpaces:t}},e.is=function(e){let t=e;return Ft.defined(t)&&Ft.uinteger(t.tabSize)&&Ft.boolean(t.insertSpaces)}}(yt||(yt={})),function(e){e.create=function(e,t,n){return{range:e,target:t,data:n}},e.is=function(e){let t=e;return Ft.defined(t)&&Te.is(t.range)&&(Ft.undefined(t.target)||Ft.string(t.target))}}(Tt||(Tt={})),function(e){e.create=function(e,t){return{range:e,parent:t}},e.is=function(t){let n=t;return Ft.objectLiteral(n)&&Te.is(n.range)&&(void 0===n.parent||e.is(n.parent))}}(At||(At={})),function(e){e.namespace="namespace",e.type="type",e.class="class",e.enum="enum",e.interface="interface",e.struct="struct",e.typeParameter="typeParameter",e.parameter="parameter",e.variable="variable",e.property="property",e.enumMember="enumMember",e.event="event",e.function="function",e.method="method",e.macro="macro",e.keyword="keyword",e.modifier="modifier",e.comment="comment",e.string="string",e.number="number",e.regexp="regexp",e.operator="operator",e.decorator="decorator"}(vt||(vt={})),function(e){e.declaration="declaration",e.definition="definition",e.readonly="readonly",e.static="static",e.deprecated="deprecated",e.abstract="abstract",e.async="async",e.modification="modification",e.documentation="documentation",e.defaultLibrary="defaultLibrary"}(Rt||(Rt={})),function(e){e.is=function(e){const t=e;return Ft.objectLiteral(t)&&(void 0===t.resultId||"string"==typeof t.resultId)&&Array.isArray(t.data)&&(0===t.data.length||"number"==typeof t.data[0])}}($t||($t={})),function(e){e.create=function(e,t){return{range:e,text:t}},e.is=function(e){const t=e;return null!=t&&Te.is(t.range)&&Ft.string(t.text)}}(Et||(Et={})),function(e){e.create=function(e,t,n){return{range:e,variableName:t,caseSensitiveLookup:n}},e.is=function(e){const t=e;return null!=t&&Te.is(t.range)&&Ft.boolean(t.caseSensitiveLookup)&&(Ft.string(t.variableName)||void 0===t.variableName)}}(kt||(kt={})),function(e){e.create=function(e,t){return{range:e,expression:t}},e.is=function(e){const t=e;return null!=t&&Te.is(t.range)&&(Ft.string(t.expression)||void 0===t.expression)}}(xt||(xt={})),function(e){e.create=function(e,t){return{frameId:e,stoppedLocation:t}},e.is=function(e){const t=e;return Ft.defined(t)&&Te.is(e.stoppedLocation)}}(It||(It={})),function(e){e.Type=1,e.Parameter=2,e.is=function(e){return 1===e||2===e}}(St||(St={})),function(e){e.create=function(e){return{value:e}},e.is=function(e){const t=e;return Ft.objectLiteral(t)&&(void 0===t.tooltip||Ft.string(t.tooltip)||We.is(t.tooltip))&&(void 0===t.location||Ae.is(t.location))&&(void 0===t.command||Le.is(t.command))}}(Nt||(Nt={})),function(e){e.create=function(e,t,n){const r={position:e,label:t};return void 0!==n&&(r.kind=n),r},e.is=function(e){const t=e;return Ft.objectLiteral(t)&&ye.is(t.position)&&(Ft.string(t.label)||Ft.typedArray(t.label,Nt.is))&&(void 0===t.kind||St.is(t.kind))&&void 0===t.textEdits||Ft.typedArray(t.textEdits,be.is)&&(void 0===t.tooltip||Ft.string(t.tooltip)||We.is(t.tooltip))&&(void 0===t.paddingLeft||Ft.boolean(t.paddingLeft))&&(void 0===t.paddingRight||Ft.boolean(t.paddingRight))}}(Ct||(Ct={})),function(e){e.createSnippet=function(e){return{kind:"snippet",value:e}}}(wt||(wt={})),function(e){e.create=function(e,t,n,r){return{insertText:e,filterText:t,range:n,command:r}}}(Lt||(Lt={})),function(e){e.create=function(e){return{items:e}}}(bt||(bt={})),function(e){e.Invoked=0,e.Automatic=1}(Ot||(Ot={})),function(e){e.create=function(e,t){return{range:e,text:t}}}(_t||(_t={})),function(e){e.create=function(e,t){return{triggerKind:e,selectedCompletionInfo:t}}}(Pt||(Pt={})),function(e){e.is=function(e){const t=e;return Ft.objectLiteral(t)&&pe.is(t.uri)&&Ft.string(t.name)}}(Mt||(Mt={}));var Ut,Ft;!function(e){function t(e,n){if(e.length<=1)return e;const r=e.length/2|0,i=e.slice(0,r),s=e.slice(r);t(i,n),t(s,n);let a=0,o=0,l=0;for(;a{let n=e.range.start.line-t.range.start.line;return 0===n?e.range.start.character-t.range.start.character:n})),s=r.length;for(let t=i.length-1;t>=0;t--){let n=i[t],a=e.offsetAt(n.range.start),o=e.offsetAt(n.range.end);if(!(o<=s))throw new Error("Overlapping edit");r=r.substring(0,a)+n.newText+r.substring(o,r.length),s=a}return r}}(Ut||(Ut={}));class Gt{constructor(e,t,n,r){this._uri=e,this._languageId=t,this._version=n,this._content=r,this._lineOffsets=void 0}get uri(){return this._uri}get languageId(){return this._languageId}get version(){return this._version}getText(e){if(e){let t=this.offsetAt(e.start),n=this.offsetAt(e.end);return this._content.substring(t,n)}return this._content}update(e,t){this._content=e.text,this._version=t,this._lineOffsets=void 0}getLineOffsets(){if(void 0===this._lineOffsets){let e=[],t=this._content,n=!0;for(let r=0;r0&&e.push(t.length),this._lineOffsets=e}return this._lineOffsets}positionAt(e){e=Math.max(Math.min(e,this._content.length),0);let t=this.getLineOffsets(),n=0,r=t.length;if(0===r)return ye.create(0,e);for(;ne?r=i:n=i+1}let i=n-1;return ye.create(i,e-t[i])}offsetAt(e){let t=this.getLineOffsets();if(e.line>=t.length)return this._content.length;if(e.line<0)return 0;let n=t[e.line],r=e.line+1=0&&t.content.splice(n,1)}}addHiddenNodes(e){const t=[];for(const s of e){const e=new jt(s.startOffset,s.image.length,(0,r.wf)(s),s.tokenType,!0);e.root=this.rootNode,t.push(e)}let n=this.current,i=!1;if(n.content.length>0)n.content.push(...t);else{for(;n.container;){const e=n.container.content.indexOf(n);if(e>0){n.container.content.splice(e,0,...t),i=!0;break}n=n.container}i||this.rootNode.content.unshift(...t)}}construct(e){const t=this.current;"string"==typeof e.$type&&(this.current.astNode=e),e.$cstNode=t;const n=this.nodeStack.pop();0===(null==n?void 0:n.content.length)&&this.removeNode(n)}}class Bt{get parent(){return this.container}get feature(){return this.grammarSource}get hidden(){return!1}get astNode(){var e,t;const n="string"==typeof(null===(e=this._astNode)||void 0===e?void 0:e.$type)?this._astNode:null===(t=this.container)||void 0===t?void 0:t.astNode;if(!n)throw new Error("This node has no associated AST element");return n}set astNode(e){this._astNode=e}get element(){return this.astNode}get text(){return this.root.fullText.substring(this.offset,this.end)}}class jt extends Bt{get offset(){return this._offset}get length(){return this._length}get end(){return this._offset+this._length}get hidden(){return this._hidden}get tokenType(){return this._tokenType}get range(){return this._range}constructor(e,t,n,r,i=!1){super(),this._hidden=i,this._offset=e,this._tokenType=r,this._length=t,this._range=n}}class Vt extends Bt{constructor(){super(...arguments),this.content=new Ht(this)}get children(){return this.content}get offset(){var e,t;return null!==(t=null===(e=this.firstNonHiddenNode)||void 0===e?void 0:e.offset)&&void 0!==t?t:0}get length(){return this.end-this.offset}get end(){var e,t;return null!==(t=null===(e=this.lastNonHiddenNode)||void 0===e?void 0:e.end)&&void 0!==t?t:0}get range(){const e=this.firstNonHiddenNode,t=this.lastNonHiddenNode;if(e&&t){if(void 0===this._rangeCache){const{range:n}=e,{range:r}=t;this._rangeCache={start:n.start,end:r.end.line=0;e--){const t=this.content[e];if(!t.hidden)return t}return this.content[this.content.length-1]}}class Ht extends Array{constructor(e){super(),this.parent=e,Object.setPrototypeOf(this,Ht.prototype)}push(...e){return this.addParents(e),super.push(...e)}unshift(...e){return this.addParents(e),super.unshift(...e)}splice(e,t,...n){return this.addParents(n),super.splice(e,t,...n)}addParents(e){for(const t of e)t.container=this.parent}}class Wt extends Vt{get text(){return this._text.substring(this.offset,this.end)}get fullText(){return this._text}constructor(e){super(),this._text="",this._text=null!=e?e:""}}const zt=Symbol("Datatype");function Yt(e){return e.$type===zt}const Xt=e=>e.endsWith("\u200b")?e:e+"\u200b";class qt{constructor(e){this._unorderedGroups=new Map,this.allRules=new Map,this.lexer=e.parser.Lexer;const t=this.lexer.definition,n="production"===e.LanguageMetaData.mode;this.wrapper=new nn(t,Object.assign(Object.assign({},e.parser.ParserConfig),{skipValidations:n,errorMessageProvider:e.parser.ParserErrorMessageProvider}))}alternatives(e,t){this.wrapper.wrapOr(e,t)}optional(e,t){this.wrapper.wrapOption(e,t)}many(e,t){this.wrapper.wrapMany(e,t)}atLeastOne(e,t){this.wrapper.wrapAtLeastOne(e,t)}getRule(e){return this.allRules.get(e)}isRecording(){return this.wrapper.IS_RECORDING}get unorderedGroups(){return this._unorderedGroups}getRuleStack(){return this.wrapper.RULE_STACK}finalize(){this.wrapper.wrapSelfAnalysis()}}class Qt extends qt{get current(){return this.stack[this.stack.length-1]}constructor(e){super(e),this.nodeBuilder=new Kt,this.stack=[],this.assignmentMap=new Map,this.linker=e.references.Linker,this.converter=e.parser.ValueConverter,this.astReflection=e.shared.AstReflection}rule(e,t){const n=this.computeRuleType(e),r=this.wrapper.DEFINE_RULE(Xt(e.name),this.startImplementation(n,t).bind(this));return this.allRules.set(e.name,r),e.entry&&(this.mainRule=r),r}computeRuleType(e){if(!e.fragment){if((0,i.Xq)(e))return zt;{const t=(0,i.PV)(e);return null!=t?t:e.name}}}parse(e,t={}){this.nodeBuilder.buildRootNode(e);const n=this.lexerResult=this.lexer.tokenize(e);this.wrapper.input=n.tokens;const r=t.rule?this.allRules.get(t.rule):this.mainRule;if(!r)throw new Error(t.rule?`No rule found with name '${t.rule}'`:"No main rule available.");const i=r.call(this.wrapper,{});return this.nodeBuilder.addHiddenNodes(n.hidden),this.unorderedGroups.clear(),this.lexerResult=void 0,{value:i,lexerErrors:n.errors,lexerReport:n.report,parserErrors:this.wrapper.errors}}startImplementation(e,t){return n=>{const r=!this.isRecording()&&void 0!==e;if(r){const t={$type:e};this.stack.push(t),e===zt&&(t.value="")}let i;try{i=t(n)}catch(s){i=void 0}return void 0===i&&r&&(i=this.construct()),i}}extractHiddenTokens(e){const t=this.lexerResult.hidden;if(!t.length)return[];const n=e.startOffset;for(let r=0;rn)return t.splice(0,r)}return t.splice(0,t.length)}consume(e,t,n){const r=this.wrapper.wrapConsume(e,t);if(!this.isRecording()&&this.isValidToken(r)){const e=this.extractHiddenTokens(r);this.nodeBuilder.addHiddenNodes(e);const t=this.nodeBuilder.buildLeafNode(r,n),{assignment:i,isCrossRef:s}=this.getAssignment(n),o=this.current;if(i){const e=(0,a.wb)(n)?r.image:this.converter.convert(r.image,t);this.assign(i.operator,i.feature,e,t,s)}else if(Yt(o)){let e=r.image;(0,a.wb)(n)||(e=this.converter.convert(e,t).toString()),o.value+=e}}}isValidToken(e){return!e.isInsertedInRecovery&&!isNaN(e.startOffset)&&"number"==typeof e.endOffset&&!isNaN(e.endOffset)}subrule(e,t,n,r,i){let s;this.isRecording()||n||(s=this.nodeBuilder.buildCompositeNode(r));const a=this.wrapper.wrapSubrule(e,t,i);!this.isRecording()&&s&&s.length>0&&this.performSubruleAssignment(a,r,s)}performSubruleAssignment(e,t,n){const{assignment:r,isCrossRef:i}=this.getAssignment(t);if(r)this.assign(r.operator,r.feature,e,n,i);else if(!r){const t=this.current;if(Yt(t))t.value+=e.toString();else if("object"==typeof e&&e){const n=this.assignWithoutOverride(e,t);this.stack.pop(),this.stack.push(n)}}}action(e,t){if(!this.isRecording()){let n=this.current;if(t.feature&&t.operator){n=this.construct(),this.nodeBuilder.removeNode(n.$cstNode);this.nodeBuilder.buildCompositeNode(t).content.push(n.$cstNode);const r={$type:e};this.stack.push(r),this.assign(t.operator,t.feature,n,n.$cstNode,!1)}else n.$type=e}}construct(){if(this.isRecording())return;const e=this.current;return(0,Dt.SD)(e),this.nodeBuilder.construct(e),this.stack.pop(),Yt(e)?this.converter.convert(e.value,e.$cstNode):((0,Dt.OP)(this.astReflection,e),e)}getAssignment(e){if(!this.assignmentMap.has(e)){const t=(0,Dt.XG)(e,a.wh);this.assignmentMap.set(e,{assignment:t,isCrossRef:!!t&&(0,a._c)(t.terminal)})}return this.assignmentMap.get(e)}assign(e,t,n,r,i){const s=this.current;let a;switch(a=i&&"string"==typeof n?this.linker.buildReference(s,t,r,n):n,e){case"=":s[t]=a;break;case"?=":s[t]=!0;break;case"+=":Array.isArray(s[t])||(s[t]=[]),s[t].push(a)}}assignWithoutOverride(e,t){for(const[r,i]of Object.entries(t)){const t=e[r];void 0===t?e[r]=i:Array.isArray(t)&&Array.isArray(i)&&(i.push(...t),e[r]=i)}const n=e.$cstNode;return n&&(n.astNode=void 0,e.$cstNode=void 0),e}get definitionErrors(){return this.wrapper.definitionErrors}}class Zt{buildMismatchTokenMessage(e){return o.my.buildMismatchTokenMessage(e)}buildNotAllInputParsedMessage(e){return o.my.buildNotAllInputParsedMessage(e)}buildNoViableAltMessage(e){return o.my.buildNoViableAltMessage(e)}buildEarlyExitMessage(e){return o.my.buildEarlyExitMessage(e)}}class Jt extends Zt{buildMismatchTokenMessage({expected:e,actual:t}){return`Expecting ${e.LABEL?"`"+e.LABEL+"`":e.name.endsWith(":KW")?`keyword '${e.name.substring(0,e.name.length-3)}'`:`token of type '${e.name}'`} but found \`${t.image}\`.`}buildNotAllInputParsedMessage({firstRedundant:e}){return`Expecting end of file but found \`${e.image}\`.`}}class en extends qt{constructor(){super(...arguments),this.tokens=[],this.elementStack=[],this.lastElementStack=[],this.nextTokenIndex=0,this.stackSize=0}action(){}construct(){}parse(e){this.resetState();const t=this.lexer.tokenize(e,{mode:"partial"});return this.tokens=t.tokens,this.wrapper.input=[...this.tokens],this.mainRule.call(this.wrapper,{}),this.unorderedGroups.clear(),{tokens:this.tokens,elementStack:[...this.lastElementStack],tokenIndex:this.nextTokenIndex}}rule(e,t){const n=this.wrapper.DEFINE_RULE(Xt(e.name),this.startImplementation(t).bind(this));return this.allRules.set(e.name,n),e.entry&&(this.mainRule=n),n}resetState(){this.elementStack=[],this.lastElementStack=[],this.nextTokenIndex=0,this.stackSize=0}startImplementation(e){return t=>{const n=this.keepStackSize();try{e(t)}finally{this.resetStackSize(n)}}}removeUnexpectedElements(){this.elementStack.splice(this.stackSize)}keepStackSize(){const e=this.elementStack.length;return this.stackSize=e,e}resetStackSize(e){this.removeUnexpectedElements(),this.stackSize=e}consume(e,t,n){this.wrapper.wrapConsume(e,t),this.isRecording()||(this.lastElementStack=[...this.elementStack,n],this.nextTokenIndex=this.currIdx+1)}subrule(e,t,n,r,i){this.before(r),this.wrapper.wrapSubrule(e,t,i),this.after(r)}before(e){this.isRecording()||this.elementStack.push(e)}after(e){if(!this.isRecording()){const t=this.elementStack.lastIndexOf(e);t>=0&&this.elementStack.splice(t)}}get currIdx(){return this.wrapper.currIdx}}const tn={recoveryEnabled:!0,nodeLocationTracking:"full",skipValidations:!0,errorMessageProvider:new Jt};class nn extends o.jr{constructor(e,t){const n=t&&"maxLookahead"in t;super(e,Object.assign(Object.assign(Object.assign({},tn),{lookaheadStrategy:n?new o.T6({maxLookahead:t.maxLookahead}):new J({logging:t.skipValidations?()=>{}:void 0})}),t))}get IS_RECORDING(){return this.RECORDING_PHASE}DEFINE_RULE(e,t){return this.RULE(e,t)}wrapSelfAnalysis(){this.performSelfAnalysis()}wrapConsume(e,t){return this.consume(e,t)}wrapSubrule(e,t,n){return this.subrule(e,t,{ARGS:[n]})}wrapOr(e,t){this.or(e,t)}wrapOption(e,t){this.option(e,t)}wrapMany(e,t){this.many(e,t)}wrapAtLeastOne(e,t){this.atLeastOne(e,t)}}var rn=n(71564),sn=n(91719);function an(e,t,n){return function(e,t){const n=(0,i.YV)(t,!1),r=(0,sn.Td)(t.rules).filter(a.s7).filter((e=>n.has(e)));for(const i of r){const t=Object.assign(Object.assign({},e),{consume:1,optional:1,subrule:1,many:1,or:1});e.parser.rule(i,on(t,i.definition))}}({parser:t,tokens:n,ruleNames:new Map},e),t}function on(e,t,n=!1){let r;if((0,a.wb)(t))r=function(e,t){const n=e.consume++,r=e.tokens[t.value];if(!r)throw new Error("Could not find token for keyword: "+t.value);return()=>e.parser.consume(n,r,t)}(e,t);else if((0,a.ve)(t))r=function(e,t){const n=(0,i.Uz)(t);return()=>e.parser.action(n,t)}(e,t);else if((0,a.wh)(t))r=on(e,t.terminal);else if((0,a._c)(t))r=un(e,t);else if((0,a.$g)(t))r=function(e,t){const n=t.rule.ref;if((0,a.s7)(n)){const r=e.subrule++,i=n.fragment,s=t.arguments.length>0?function(e,t){const n=t.map((e=>ln(e.value)));return t=>{const r={};for(let i=0;i({});return a=>e.parser.subrule(r,hn(e,n),i,t,s(a))}if((0,a.rE)(n)){const r=e.consume++,i=fn(e,n.name);return()=>e.parser.consume(r,i,t)}if(!n)throw new rn.W(t.$cstNode,`Undefined rule: ${t.rule.$refText}`);(0,rn.d)(n)}(e,t);else if((0,a.jp)(t))r=function(e,t){if(1===t.elements.length)return on(e,t.elements[0]);{const n=[];for(const i of t.elements){const t={ALT:on(e,i,!0)},r=cn(i);r&&(t.GATE=ln(r)),n.push(t)}const r=e.or++;return t=>e.parser.alternatives(r,n.map((e=>{const n={ALT:()=>e.ALT(t)},r=e.GATE;return r&&(n.GATE=()=>r(t)),n})))}}(e,t);else if((0,a.cY)(t))r=function(e,t){if(1===t.elements.length)return on(e,t.elements[0]);const n=[];for(const o of t.elements){const t={ALT:on(e,o,!0)},r=cn(o);r&&(t.GATE=ln(r)),n.push(t)}const r=e.or++,i=(e,t)=>`uGroup_${e}_${t.getRuleStack().join("-")}`,s=t=>e.parser.alternatives(r,n.map(((n,s)=>{const a={ALT:()=>!0},o=e.parser;a.ALT=()=>{if(n.ALT(t),!o.isRecording()){const e=i(r,o);o.unorderedGroups.get(e)||o.unorderedGroups.set(e,[]);const t=o.unorderedGroups.get(e);void 0===(null==t?void 0:t[s])&&(t[s]=!0)}};const l=n.GATE;return a.GATE=l?()=>l(t):()=>{const e=o.unorderedGroups.get(i(r,o));return!(null==e?void 0:e[s])},a}))),a=dn(e,cn(t),s,"*");return t=>{a(t),e.parser.isRecording()||e.parser.unorderedGroups.delete(i(r,e.parser))}}(e,t);else if((0,a.IZ)(t))r=function(e,t){const n=t.elements.map((t=>on(e,t)));return e=>n.forEach((t=>t(e)))}(e,t);else{if(!(0,a.FO)(t))throw new rn.W(t.$cstNode,`Unexpected element type: ${t.$type}`);{const n=e.consume++;r=()=>e.parser.consume(n,o.LT,t)}}return dn(e,n?void 0:cn(t),r,t.cardinality)}function ln(e){if((0,a.RP)(e)){const t=ln(e.left),n=ln(e.right);return e=>t(e)||n(e)}if((0,a.Tu)(e)){const t=ln(e.left),n=ln(e.right);return e=>t(e)&&n(e)}if((0,a.Ct)(e)){const t=ln(e.value);return e=>!t(e)}if((0,a.TF)(e)){const t=e.parameter.ref.name;return e=>void 0!==e&&!0===e[t]}if((0,a.Cz)(e)){const t=Boolean(e.true);return()=>t}(0,rn.d)(e)}function cn(e){if((0,a.IZ)(e))return e.guardCondition}function un(e,t,n=t.terminal){if(n){if((0,a.$g)(n)&&(0,a.s7)(n.rule.ref)){const r=n.rule.ref,i=e.subrule++;return n=>e.parser.subrule(i,hn(e,r),!1,t,n)}if((0,a.$g)(n)&&(0,a.rE)(n.rule.ref)){const r=e.consume++,i=fn(e,n.rule.ref.name);return()=>e.parser.consume(r,i,t)}if((0,a.wb)(n)){const r=e.consume++,i=fn(e,n.value);return()=>e.parser.consume(r,i,t)}throw new Error("Could not build cross reference parser")}{if(!t.type.ref)throw new Error("Could not resolve reference to type: "+t.type.$refText);const n=(0,i.U5)(t.type.ref),r=null==n?void 0:n.terminal;if(!r)throw new Error("Could not find name assignment for type: "+(0,i.Uz)(t.type.ref));return un(e,t,r)}}function dn(e,t,n,r){const i=t&&ln(t);if(!r){if(i){const t=e.or++;return r=>e.parser.alternatives(t,[{ALT:()=>n(r),GATE:()=>i(r)},{ALT:(0,o.mT)(),GATE:()=>!i(r)}])}return n}if("*"===r){const t=e.many++;return r=>e.parser.many(t,{DEF:()=>n(r),GATE:i?()=>i(r):void 0})}if("+"===r){const t=e.many++;if(i){const r=e.or++;return s=>e.parser.alternatives(r,[{ALT:()=>e.parser.atLeastOne(t,{DEF:()=>n(s)}),GATE:()=>i(s)},{ALT:(0,o.mT)(),GATE:()=>!i(s)}])}return r=>e.parser.atLeastOne(t,{DEF:()=>n(r)})}if("?"===r){const t=e.optional++;return r=>e.parser.optional(t,{DEF:()=>n(r),GATE:i?()=>i(r):void 0})}(0,rn.d)(r)}function hn(e,t){const n=function(e,t){if((0,a.s7)(t))return t.name;if(e.ruleNames.has(t))return e.ruleNames.get(t);{let n=t,r=n.$container,i=t.$type;for(;!(0,a.s7)(r);){if((0,a.IZ)(r)||(0,a.jp)(r)||(0,a.cY)(r)){i=r.elements.indexOf(n).toString()+":"+i}n=r,r=r.$container}return i=r.name+":"+i,e.ruleNames.set(t,i),i}}(e,t),r=e.parser.getRule(n);if(!r)throw new Error(`Rule "${n}" not found."`);return r}function fn(e,t){const n=e.tokens[t];if(!n)throw new Error(`Token "${t}" not found."`);return n}function pn(e){const t=function(e){const t=e.Grammar,n=e.parser.Lexer,r=new Qt(e);return an(t,r,n.definition)}(e);return t.finalize(),t}var mn=n(44326),gn=n(65033),yn=n(59850),Tn=n(32479);let An=0,vn=10;const Rn=Symbol("OperationCancelled");function $n(e){return e===Rn}async function En(e){if(e===yn.XO.None)return;const t=performance.now();if(t-An>=vn&&(An=t,await new Promise((e=>{"undefined"==typeof setImmediate?setTimeout(e,0):setImmediate(e)})),An=performance.now()),e.isCancellationRequested)throw Rn}class kn{constructor(){this.promise=new Promise(((e,t)=>{this.resolve=t=>(e(t),this),this.reject=e=>(t(e),this)}))}}class xn{constructor(e,t,n,r){this._uri=e,this._languageId=t,this._version=n,this._content=r,this._lineOffsets=void 0}get uri(){return this._uri}get languageId(){return this._languageId}get version(){return this._version}getText(e){if(e){const t=this.offsetAt(e.start),n=this.offsetAt(e.end);return this._content.substring(t,n)}return this._content}update(e,t){for(const n of e)if(xn.isIncremental(n)){const e=wn(n.range),t=this.offsetAt(e.start),r=this.offsetAt(e.end);this._content=this._content.substring(0,t)+n.text+this._content.substring(r,this._content.length);const i=Math.max(e.start.line,0),s=Math.max(e.end.line,0);let a=this._lineOffsets;const o=Nn(n.text,!1,t);if(s-i===o.length)for(let n=0,c=o.length;ne?r=i:n=i+1}const i=n-1;return{line:i,character:(e=this.ensureBeforeEOL(e,t[i]))-t[i]}}offsetAt(e){const t=this.getLineOffsets();if(e.line>=t.length)return this._content.length;if(e.line<0)return 0;const n=t[e.line];if(e.character<=0)return n;const r=e.line+1t&&Cn(this._content.charCodeAt(e-1));)e--;return e}get lineCount(){return this.getLineOffsets().length}static isIncremental(e){const t=e;return null!=t&&"string"==typeof t.text&&void 0!==t.range&&(void 0===t.rangeLength||"number"==typeof t.rangeLength)}static isFull(e){const t=e;return null!=t&&"string"==typeof t.text&&void 0===t.range&&void 0===t.rangeLength}}var In;function Sn(e,t){if(e.length<=1)return e;const n=e.length/2|0,r=e.slice(0,n),i=e.slice(n);Sn(r,t),Sn(i,t);let s=0,a=0,o=0;for(;sn.line||t.line===n.line&&t.character>n.character?{start:n,end:t}:e}function Ln(e){const t=wn(e.range);return t!==e.range?{newText:e.newText,range:t}:e}!function(e){e.create=function(e,t,n,r){return new xn(e,t,n,r)},e.update=function(e,t,n){if(e instanceof xn)return e.update(t,n),e;throw new Error("TextDocument.update: document must be created by TextDocument.create")},e.applyEdits=function(e,t){const n=e.getText(),r=Sn(t.map(Ln),((e,t)=>{const n=e.range.start.line-t.range.start.line;return 0===n?e.range.start.character-t.range.start.character:n}));let i=0;const s=[];for(const a of r){const t=e.offsetAt(a.range.start);if(ti&&s.push(n.substring(i,t)),a.newText.length&&s.push(a.newText),i=e.offsetAt(a.range.end)}return s.push(n.substr(i)),s.join("")}}(In||(In={}));var bn,On=n(37608);!function(e){e[e.Changed=0]="Changed",e[e.Parsed=1]="Parsed",e[e.IndexedContent=2]="IndexedContent",e[e.ComputedScopes=3]="ComputedScopes",e[e.Linked=4]="Linked",e[e.IndexedReferences=5]="IndexedReferences",e[e.Validated=6]="Validated"}(bn||(bn={}));class _n{constructor(e){this.serviceRegistry=e.ServiceRegistry,this.textDocuments=e.workspace.TextDocuments,this.fileSystemProvider=e.workspace.FileSystemProvider}async fromUri(e,t=yn.XO.None){const n=await this.fileSystemProvider.readFile(e);return this.createAsync(e,n,t)}fromTextDocument(e,t,n){return t=null!=t?t:On.r.parse(e.uri),yn.XO.is(n)?this.createAsync(t,e,n):this.create(t,e,n)}fromString(e,t,n){return yn.XO.is(n)?this.createAsync(t,e,n):this.create(t,e,n)}fromModel(e,t){return this.create(t,{$model:e})}create(e,t,n){if("string"==typeof t){const r=this.parse(e,t,n);return this.createLangiumDocument(r,e,void 0,t)}if("$model"in t){const n={value:t.$model,parserErrors:[],lexerErrors:[]};return this.createLangiumDocument(n,e)}{const r=this.parse(e,t.getText(),n);return this.createLangiumDocument(r,e,t)}}async createAsync(e,t,n){if("string"==typeof t){const r=await this.parseAsync(e,t,n);return this.createLangiumDocument(r,e,void 0,t)}{const r=await this.parseAsync(e,t.getText(),n);return this.createLangiumDocument(r,e,t)}}createLangiumDocument(e,t,n,r){let i;if(n)i={parseResult:e,uri:t,state:bn.Parsed,references:[],textDocument:n};else{const n=this.createTextDocumentGetter(t,r);i={parseResult:e,uri:t,state:bn.Parsed,references:[],get textDocument(){return n()}}}return e.value.$document=i,i}async update(e,t){var n,r;const i=null===(n=e.parseResult.value.$cstNode)||void 0===n?void 0:n.root.fullText,s=null===(r=this.textDocuments)||void 0===r?void 0:r.get(e.uri.toString()),a=s?s.getText():await this.fileSystemProvider.readFile(e.uri);if(s)Object.defineProperty(e,"textDocument",{value:s});else{const t=this.createTextDocumentGetter(e.uri,a);Object.defineProperty(e,"textDocument",{get:t})}return i!==a&&(e.parseResult=await this.parseAsync(e.uri,a,t),e.parseResult.value.$document=e),e.state=bn.Parsed,e}parse(e,t,n){return this.serviceRegistry.getServices(e).parser.LangiumParser.parse(t,n)}parseAsync(e,t,n){return this.serviceRegistry.getServices(e).parser.AsyncParser.parse(t,n)}createTextDocumentGetter(e,t){const n=this.serviceRegistry;let r;return()=>null!=r?r:r=In.create(e.toString(),n.getServices(e).LanguageMetaData.languageId,0,null!=t?t:"")}}class Pn{constructor(e){this.documentMap=new Map,this.langiumDocumentFactory=e.workspace.LangiumDocumentFactory,this.serviceRegistry=e.ServiceRegistry}get all(){return(0,sn.Td)(this.documentMap.values())}addDocument(e){const t=e.uri.toString();if(this.documentMap.has(t))throw new Error(`A document with the URI '${t}' is already present.`);this.documentMap.set(t,e)}getDocument(e){const t=e.toString();return this.documentMap.get(t)}async getOrCreateDocument(e,t){let n=this.getDocument(e);return n||(n=await this.langiumDocumentFactory.fromUri(e,t),this.addDocument(n),n)}createDocument(e,t,n){if(n)return this.langiumDocumentFactory.fromString(t,e,n).then((e=>(this.addDocument(e),e)));{const n=this.langiumDocumentFactory.fromString(t,e);return this.addDocument(n),n}}hasDocument(e){return this.documentMap.has(e.toString())}invalidateDocument(e){const t=e.toString(),n=this.documentMap.get(t);if(n){this.serviceRegistry.getServices(e).references.Linker.unlink(n),n.state=bn.Changed,n.precomputedScopes=void 0,n.diagnostics=void 0}return n}deleteDocument(e){const t=e.toString(),n=this.documentMap.get(t);return n&&(n.state=bn.Changed,this.documentMap.delete(t)),n}}const Mn=Symbol("ref_resolving");class Dn{constructor(e){this.reflection=e.shared.AstReflection,this.langiumDocuments=()=>e.shared.workspace.LangiumDocuments,this.scopeProvider=e.references.ScopeProvider,this.astNodeLocator=e.workspace.AstNodeLocator}async link(e,t=yn.XO.None){for(const n of(0,Dt.jm)(e.parseResult.value))await En(t),(0,Dt.DM)(n).forEach((t=>this.doLink(t,e)))}doLink(e,t){var n;const r=e.reference;if(void 0===r._ref){r._ref=Mn;try{const t=this.getCandidate(e);if((0,Tn.Zl)(t))r._ref=t;else if(r._nodeDescription=t,this.langiumDocuments().hasDocument(t.documentUri)){const n=this.loadAstNode(t);r._ref=null!=n?n:this.createLinkingError(e,t)}else r._ref=void 0}catch(i){console.error(`An error occurred while resolving reference to '${r.$refText}':`,i);const t=null!==(n=i.message)&&void 0!==n?n:String(i);r._ref=Object.assign(Object.assign({},e),{message:`An error occurred while resolving reference to '${r.$refText}': ${t}`})}t.references.push(r)}}unlink(e){for(const t of e.references)delete t._ref,delete t._nodeDescription;e.references=[]}getCandidate(e){const t=this.scopeProvider.getScope(e).getElement(e.reference.$refText);return null!=t?t:this.createLinkingError(e)}buildReference(e,t,n,r){const i=this,s={$refNode:n,$refText:r,get ref(){var n;if((0,Tn.ng)(this._ref))return this._ref;if((0,Tn.Nr)(this._nodeDescription)){const n=i.loadAstNode(this._nodeDescription);this._ref=null!=n?n:i.createLinkingError({reference:s,container:e,property:t},this._nodeDescription)}else if(void 0===this._ref){this._ref=Mn;const r=(0,Dt.cQ)(e).$document,a=i.getLinkedNode({reference:s,container:e,property:t});if(a.error&&r&&r.statee.length>0)),s=r.split("/").filter((e=>e.length>0));let a=0;for(;a=e.end)return t.ref}if(n){const t=this.nameProvider.getNameNode(n);if(t&&(t===e||(0,r.pO)(e,t)))return n}}}findDeclarationNode(e){const t=this.findDeclaration(e);if(null==t?void 0:t.$cstNode){const e=this.nameProvider.getNameNode(t);return null!=e?e:t.$cstNode}}findReferences(e,t){const n=[];if(t.includeDeclaration){const t=this.getReferenceToSelf(e);t&&n.push(t)}let r=this.index.findAllReferences(e,this.nodeLocator.getAstNodePath(e));return t.documentUri&&(r=r.filter((e=>Fn.equals(e.sourceUri,t.documentUri)))),n.push(...r),(0,sn.Td)(n)}getReferenceToSelf(e){const t=this.nameProvider.getNameNode(e);if(t){const n=(0,Dt.YE)(e),i=this.nodeLocator.getAstNodePath(e);return{sourceUri:n.uri,sourcePath:i,targetUri:n.uri,targetPath:i,segment:(0,r.SX)(t),local:!0}}}}class Kn{constructor(e){if(this.map=new Map,e)for(const[t,n]of e)this.add(t,n)}get size(){return sn.iD.sum((0,sn.Td)(this.map.values()).map((e=>e.length)))}clear(){this.map.clear()}delete(e,t){if(void 0===t)return this.map.delete(e);{const n=this.map.get(e);if(n){const r=n.indexOf(t);if(r>=0)return 1===n.length?this.map.delete(e):n.splice(r,1),!0}return!1}}get(e){var t;return null!==(t=this.map.get(e))&&void 0!==t?t:[]}has(e,t){if(void 0===t)return this.map.has(e);{const n=this.map.get(e);return!!n&&n.indexOf(t)>=0}}add(e,t){return this.map.has(e)?this.map.get(e).push(t):this.map.set(e,[t]),this}addAll(e,t){return this.map.has(e)?this.map.get(e).push(...t):this.map.set(e,Array.from(t)),this}forEach(e){this.map.forEach(((t,n)=>t.forEach((t=>e(t,n,this)))))}[Symbol.iterator](){return this.entries().iterator()}entries(){return(0,sn.Td)(this.map.entries()).flatMap((([e,t])=>t.map((t=>[e,t]))))}keys(){return(0,sn.Td)(this.map.keys())}values(){return(0,sn.Td)(this.map.values()).flat()}entriesGroupedByKey(){return(0,sn.Td)(this.map.entries())}}class Bn{get size(){return this.map.size}constructor(e){if(this.map=new Map,this.inverse=new Map,e)for(const[t,n]of e)this.set(t,n)}clear(){this.map.clear(),this.inverse.clear()}set(e,t){return this.map.set(e,t),this.inverse.set(t,e),this}get(e){return this.map.get(e)}getKey(e){return this.inverse.get(e)}delete(e){const t=this.map.get(e);return void 0!==t&&(this.map.delete(e),this.inverse.delete(t),!0)}}class jn{constructor(e){this.nameProvider=e.references.NameProvider,this.descriptions=e.workspace.AstNodeDescriptionProvider}async computeExports(e,t=yn.XO.None){return this.computeExportsForNode(e.parseResult.value,e,void 0,t)}async computeExportsForNode(e,t,n=Dt.VN,r=yn.XO.None){const i=[];this.exportNode(e,i,t);for(const s of n(e))await En(r),this.exportNode(s,i,t);return i}exportNode(e,t,n){const r=this.nameProvider.getName(e);r&&t.push(this.descriptions.createDescription(e,r,n))}async computeLocalScopes(e,t=yn.XO.None){const n=e.parseResult.value,r=new Kn;for(const i of(0,Dt.Uo)(n))await En(t),this.processNode(i,e,r);return r}processNode(e,t,n){const r=e.$container;if(r){const i=this.nameProvider.getName(e);i&&n.add(r,this.descriptions.createDescription(e,i,t))}}}class Vn{constructor(e,t,n){var r;this.elements=e,this.outerScope=t,this.caseInsensitive=null!==(r=null==n?void 0:n.caseInsensitive)&&void 0!==r&&r}getAllElements(){return this.outerScope?this.elements.concat(this.outerScope.getAllElements()):this.elements}getElement(e){const t=this.caseInsensitive?this.elements.find((t=>t.name.toLowerCase()===e.toLowerCase())):this.elements.find((t=>t.name===e));return t||(this.outerScope?this.outerScope.getElement(e):void 0)}}class Hn{constructor(e,t,n){var r;this.elements=new Map,this.caseInsensitive=null!==(r=null==n?void 0:n.caseInsensitive)&&void 0!==r&&r;for(const i of e){const e=this.caseInsensitive?i.name.toLowerCase():i.name;this.elements.set(e,i)}this.outerScope=t}getElement(e){const t=this.caseInsensitive?e.toLowerCase():e,n=this.elements.get(t);return n||(this.outerScope?this.outerScope.getElement(e):void 0)}getAllElements(){let e=(0,sn.Td)(this.elements.values());return this.outerScope&&(e=e.concat(this.outerScope.getAllElements())),e}}class Wn{constructor(){this.toDispose=[],this.isDisposed=!1}onDispose(e){this.toDispose.push(e)}dispose(){this.throwIfDisposed(),this.clear(),this.isDisposed=!0,this.toDispose.forEach((e=>e.dispose()))}throwIfDisposed(){if(this.isDisposed)throw new Error("This cache has already been disposed")}}class zn extends Wn{constructor(){super(...arguments),this.cache=new Map}has(e){return this.throwIfDisposed(),this.cache.has(e)}set(e,t){this.throwIfDisposed(),this.cache.set(e,t)}get(e,t){if(this.throwIfDisposed(),this.cache.has(e))return this.cache.get(e);if(t){const n=t();return this.cache.set(e,n),n}}delete(e){return this.throwIfDisposed(),this.cache.delete(e)}clear(){this.throwIfDisposed(),this.cache.clear()}}class Yn extends Wn{constructor(e){super(),this.cache=new Map,this.converter=null!=e?e:e=>e}has(e,t){return this.throwIfDisposed(),this.cacheForContext(e).has(t)}set(e,t,n){this.throwIfDisposed(),this.cacheForContext(e).set(t,n)}get(e,t,n){this.throwIfDisposed();const r=this.cacheForContext(e);if(r.has(t))return r.get(t);if(n){const e=n();return r.set(t,e),e}}delete(e,t){return this.throwIfDisposed(),this.cacheForContext(e).delete(t)}clear(e){if(this.throwIfDisposed(),e){const t=this.converter(e);this.cache.delete(t)}else this.cache.clear()}cacheForContext(e){const t=this.converter(e);let n=this.cache.get(t);return n||(n=new Map,this.cache.set(t,n)),n}}class Xn extends zn{constructor(e,t){super(),t?(this.toDispose.push(e.workspace.DocumentBuilder.onBuildPhase(t,(()=>{this.clear()}))),this.toDispose.push(e.workspace.DocumentBuilder.onUpdate(((e,t)=>{t.length>0&&this.clear()})))):this.toDispose.push(e.workspace.DocumentBuilder.onUpdate((()=>{this.clear()})))}}class qn{constructor(e){this.reflection=e.shared.AstReflection,this.nameProvider=e.references.NameProvider,this.descriptions=e.workspace.AstNodeDescriptionProvider,this.indexManager=e.shared.workspace.IndexManager,this.globalScopeCache=new Xn(e.shared)}getScope(e){const t=[],n=this.reflection.getReferenceType(e),r=(0,Dt.YE)(e.container).precomputedScopes;if(r){let i=e.container;do{const e=r.get(i);e.length>0&&t.push((0,sn.Td)(e).filter((e=>this.reflection.isSubtype(e.type,n)))),i=i.$container}while(i)}let i=this.getGlobalScope(n,e);for(let s=t.length-1;s>=0;s--)i=this.createScope(t[s],i);return i}createScope(e,t,n){return new Vn((0,sn.Td)(e),t,n)}createScopeForNodes(e,t,n){const r=(0,sn.Td)(e).map((e=>{const t=this.nameProvider.getName(e);if(t)return this.descriptions.createDescription(e,t)})).nonNullable();return new Vn(r,t,n)}getGlobalScope(e,t){return this.globalScopeCache.get(e,(()=>new Hn(this.indexManager.allElements(e))))}}function Qn(e){return"object"==typeof e&&!!e&&("$ref"in e||"$error"in e)}class Zn{constructor(e){this.ignoreProperties=new Set(["$container","$containerProperty","$containerIndex","$document","$cstNode"]),this.langiumDocuments=e.shared.workspace.LangiumDocuments,this.astNodeLocator=e.workspace.AstNodeLocator,this.nameProvider=e.references.NameProvider,this.commentProvider=e.documentation.CommentProvider}serialize(e,t){const n=null!=t?t:{},r=null==t?void 0:t.replacer,i=(e,t)=>this.replacer(e,t,n),s=r?(e,t)=>r(e,t,i):i;try{return this.currentDocument=(0,Dt.YE)(e),JSON.stringify(e,s,null==t?void 0:t.space)}finally{this.currentDocument=void 0}}deserialize(e,t){const n=null!=t?t:{},r=JSON.parse(e);return this.linkNode(r,r,n),r}replacer(e,t,{refText:n,sourceText:r,textRegions:i,comments:s,uriConverter:a}){var o,l,c,u;if(!this.ignoreProperties.has(e)){if((0,Tn.A_)(t)){const e=t.ref,r=n?t.$refText:void 0;if(e){const n=(0,Dt.YE)(e);let i="";this.currentDocument&&this.currentDocument!==n&&(i=a?a(n.uri,t):n.uri.toString());return{$ref:`${i}#${this.astNodeLocator.getAstNodePath(e)}`,$refText:r}}return{$error:null!==(l=null===(o=t.error)||void 0===o?void 0:o.message)&&void 0!==l?l:"Could not resolve reference",$refText:r}}if((0,Tn.ng)(t)){let n;if(i&&(n=this.addAstNodeRegionWithAssignmentsTo(Object.assign({},t)),e&&!t.$document||!(null==n?void 0:n.$textRegion)||(n.$textRegion.documentURI=null===(c=this.currentDocument)||void 0===c?void 0:c.uri.toString())),r&&!e&&(null!=n||(n=Object.assign({},t)),n.$sourceText=null===(u=t.$cstNode)||void 0===u?void 0:u.text),s){null!=n||(n=Object.assign({},t));const e=this.commentProvider.getComment(t);e&&(n.$comment=e.replace(/\r/g,""))}return null!=n?n:t}return t}}addAstNodeRegionWithAssignmentsTo(e){const t=e=>({offset:e.offset,end:e.end,length:e.length,range:e.range});if(e.$cstNode){const n=(e.$textRegion=t(e.$cstNode)).assignments={};return Object.keys(e).filter((e=>!e.startsWith("$"))).forEach((r=>{const s=(0,i.Bd)(e.$cstNode,r).map(t);0!==s.length&&(n[r]=s)})),e}}linkNode(e,t,n,r,i,s){for(const[o,l]of Object.entries(e))if(Array.isArray(l))for(let r=0;r{await this.handleException((()=>e.call(t,n,r,i)),"An error occurred during validation",r,n)}}async handleException(e,t,n,r){try{await e()}catch(i){if($n(i))throw i;console.error(`${t}:`,i),i instanceof Error&&i.stack&&console.error(i.stack);n("error",`${t}: ${i instanceof Error?i.message:String(i)}`,{node:r})}}addEntry(e,t){if("AstNode"!==e)for(const n of this.reflection.getAllSubTypes(e))this.entries.add(n,t);else this.entries.add("AstNode",t)}getChecks(e,t){let n=(0,sn.Td)(this.entries.get(e)).concat(this.entries.get("AstNode"));return t&&(n=n.filter((e=>t.includes(e.category)))),n.map((e=>e.check))}registerBeforeDocument(e,t=this){this.entriesBefore.push(this.wrapPreparationException(e,"An error occurred during set-up of the validation",t))}registerAfterDocument(e,t=this){this.entriesAfter.push(this.wrapPreparationException(e,"An error occurred during tear-down of the validation",t))}wrapPreparationException(e,t,n){return async(r,i,s,a)=>{await this.handleException((()=>e.call(n,r,i,s,a)),t,i,r)}}get checksBefore(){return this.entriesBefore}get checksAfter(){return this.entriesAfter}}class ir{constructor(e){this.validationRegistry=e.validation.ValidationRegistry,this.metadata=e.LanguageMetaData}async validateDocument(e,t={},n=yn.XO.None){const r=e.parseResult,i=[];if(await En(n),!t.categories||t.categories.includes("built-in")){if(this.processLexingErrors(r,i,t),t.stopAfterLexingErrors&&i.some((e=>{var t;return(null===(t=e.data)||void 0===t?void 0:t.code)===nr.LexingError})))return i;if(this.processParsingErrors(r,i,t),t.stopAfterParsingErrors&&i.some((e=>{var t;return(null===(t=e.data)||void 0===t?void 0:t.code)===nr.ParsingError})))return i;if(this.processLinkingErrors(e,i,t),t.stopAfterLinkingErrors&&i.some((e=>{var t;return(null===(t=e.data)||void 0===t?void 0:t.code)===nr.LinkingError})))return i}try{i.push(...await this.validateAst(r.value,t,n))}catch(s){if($n(s))throw s;console.error("An error occurred during validation:",s)}return await En(n),i}processLexingErrors(e,t,n){var r,i,s;const a=[...e.lexerErrors,...null!==(i=null===(r=e.lexerReport)||void 0===r?void 0:r.diagnostics)&&void 0!==i?i:[]];for(const o of a){const e=null!==(s=o.severity)&&void 0!==s?s:"error",n={severity:ar(e),range:{start:{line:o.line-1,character:o.column-1},end:{line:o.line-1,character:o.column+o.length-1}},message:o.message,data:or(e),source:this.getSource()};t.push(n)}}processParsingErrors(e,t,n){for(const i of e.parserErrors){let e;if(isNaN(i.token.startOffset)){if("previousToken"in i){const t=i.previousToken;if(isNaN(t.startOffset)){const t={line:0,character:0};e={start:t,end:t}}else{const n={line:t.endLine-1,character:t.endColumn};e={start:n,end:n}}}}else e=(0,r.wf)(i.token);if(e){const n={severity:ar("error"),range:e,message:i.message,data:er(nr.ParsingError),source:this.getSource()};t.push(n)}}}processLinkingErrors(e,t,n){for(const r of e.references){const e=r.error;if(e){const n={node:e.container,property:e.property,index:e.index,data:{code:nr.LinkingError,containerType:e.container.$type,property:e.property,refText:e.reference.$refText}};t.push(this.toDiagnostic("error",e.message,n))}}}async validateAst(e,t,n=yn.XO.None){const r=[],i=(e,t,n)=>{r.push(this.toDiagnostic(e,t,n))};return await this.validateAstBefore(e,t,i,n),await this.validateAstNodes(e,t,i,n),await this.validateAstAfter(e,t,i,n),r}async validateAstBefore(e,t,n,r=yn.XO.None){var i;const s=this.validationRegistry.checksBefore;for(const a of s)await En(r),await a(e,n,null!==(i=t.categories)&&void 0!==i?i:[],r)}async validateAstNodes(e,t,n,r=yn.XO.None){await Promise.all((0,Dt.jm)(e).map((async e=>{await En(r);const i=this.validationRegistry.getChecks(e.$type,t.categories);for(const t of i)await t(e,n,r)})))}async validateAstAfter(e,t,n,r=yn.XO.None){var i;const s=this.validationRegistry.checksAfter;for(const a of s)await En(r),await a(e,n,null!==(i=t.categories)&&void 0!==i?i:[],r)}toDiagnostic(e,t,n){return{message:t,range:sr(n),severity:ar(e),code:n.code,codeDescription:n.codeDescription,tags:n.tags,relatedInformation:n.relatedInformation,data:n.data,source:this.getSource()}}getSource(){return this.metadata.languageId}}function sr(e){if(e.range)return e.range;let t;return"string"==typeof e.property?t=(0,i.qO)(e.node.$cstNode,e.property,e.index):"string"==typeof e.keyword&&(t=(0,i.SS)(e.node.$cstNode,e.keyword,e.index)),null!=t||(t=e.node.$cstNode),t?t.range:{start:{line:0,character:0},end:{line:0,character:0}}}function ar(e){switch(e){case"error":return 1;case"warning":return 2;case"info":return 3;case"hint":return 4;default:throw new Error("Invalid diagnostic severity: "+e)}}function or(e){switch(e){case"error":return er(nr.LexingError);case"warning":return er(nr.LexingWarning);case"info":return er(nr.LexingInfo);case"hint":return er(nr.LexingHint);default:throw new Error("Invalid diagnostic severity: "+e)}}!function(e){e.LexingError="lexing-error",e.LexingWarning="lexing-warning",e.LexingInfo="lexing-info",e.LexingHint="lexing-hint",e.ParsingError="parsing-error",e.LinkingError="linking-error"}(nr||(nr={}));class lr{constructor(e){this.astNodeLocator=e.workspace.AstNodeLocator,this.nameProvider=e.references.NameProvider}createDescription(e,t,n){const i=null!=n?n:(0,Dt.YE)(e);null!=t||(t=this.nameProvider.getName(e));const s=this.astNodeLocator.getAstNodePath(e);if(!t)throw new Error(`Node at path ${s} has no name.`);let a;const o=()=>{var t;return null!=a?a:a=(0,r.SX)(null!==(t=this.nameProvider.getNameNode(e))&&void 0!==t?t:e.$cstNode)};return{node:e,name:t,get nameSegment(){return o()},selectionSegment:(0,r.SX)(e.$cstNode),type:e.$type,documentUri:i.uri,path:s}}}class cr{constructor(e){this.nodeLocator=e.workspace.AstNodeLocator}async createDescriptions(e,t=yn.XO.None){const n=[],r=e.parseResult.value;for(const i of(0,Dt.jm)(r))await En(t),(0,Dt.DM)(i).filter((e=>!(0,Tn.Zl)(e))).forEach((e=>{const t=this.createDescription(e);t&&n.push(t)}));return n}createDescription(e){const t=e.reference.$nodeDescription,n=e.reference.$refNode;if(!t||!n)return;const i=(0,Dt.YE)(e.container).uri;return{sourceUri:i,sourcePath:this.nodeLocator.getAstNodePath(e.container),targetUri:t.documentUri,targetPath:t.path,segment:(0,r.SX)(n),local:Fn.equals(t.documentUri,i)}}}class ur{constructor(){this.segmentSeparator="/",this.indexSeparator="@"}getAstNodePath(e){if(e.$container){const t=this.getAstNodePath(e.$container),n=this.getPathSegment(e);return t+this.segmentSeparator+n}return""}getPathSegment({$containerProperty:e,$containerIndex:t}){if(!e)throw new Error("Missing '$containerProperty' in AST node.");return void 0!==t?e+this.indexSeparator+t:e}getAstNode(e,t){return t.split(this.segmentSeparator).reduce(((e,t)=>{if(!e||0===t.length)return e;const n=t.indexOf(this.indexSeparator);if(n>0){const r=t.substring(0,n),i=parseInt(t.substring(n+1)),s=e[r];return null==s?void 0:s[i]}return e[t]}),e)}}var dr,hr=n(62676);class fr{constructor(e){this._ready=new kn,this.settings={},this.workspaceConfig=!1,this.onConfigurationSectionUpdateEmitter=new hr.Emitter,this.serviceRegistry=e.ServiceRegistry}get ready(){return this._ready.promise}initialize(e){var t,n;this.workspaceConfig=null!==(n=null===(t=e.capabilities.workspace)||void 0===t?void 0:t.configuration)&&void 0!==n&&n}async initialized(e){if(this.workspaceConfig){if(e.register){const t=this.serviceRegistry.all;e.register({section:t.map((e=>this.toSectionName(e.LanguageMetaData.languageId)))})}if(e.fetchConfiguration){const t=this.serviceRegistry.all.map((e=>({section:this.toSectionName(e.LanguageMetaData.languageId)}))),n=await e.fetchConfiguration(t);t.forEach(((e,t)=>{this.updateSectionConfiguration(e.section,n[t])}))}}this._ready.resolve()}updateConfiguration(e){e.settings&&Object.keys(e.settings).forEach((t=>{const n=e.settings[t];this.updateSectionConfiguration(t,n),this.onConfigurationSectionUpdateEmitter.fire({section:t,configuration:n})}))}updateSectionConfiguration(e,t){this.settings[e]=t}async getConfiguration(e,t){await this.ready;const n=this.toSectionName(e);if(this.settings[n])return this.settings[n][t]}toSectionName(e){return`${e}`}get onConfigurationSectionUpdate(){return this.onConfigurationSectionUpdateEmitter.event}}!function(e){e.create=function(e){return{dispose:async()=>await e()}}}(dr||(dr={}));class pr{constructor(e){this.updateBuildOptions={validation:{categories:["built-in","fast"]}},this.updateListeners=[],this.buildPhaseListeners=new Kn,this.documentPhaseListeners=new Kn,this.buildState=new Map,this.documentBuildWaiters=new Map,this.currentState=bn.Changed,this.langiumDocuments=e.workspace.LangiumDocuments,this.langiumDocumentFactory=e.workspace.LangiumDocumentFactory,this.textDocuments=e.workspace.TextDocuments,this.indexManager=e.workspace.IndexManager,this.serviceRegistry=e.ServiceRegistry}async build(e,t={},n=yn.XO.None){var r,i;for(const s of e){const e=s.uri.toString();if(s.state===bn.Validated){if("boolean"==typeof t.validation&&t.validation)s.state=bn.IndexedReferences,s.diagnostics=void 0,this.buildState.delete(e);else if("object"==typeof t.validation){const n=this.buildState.get(e),a=null===(r=null==n?void 0:n.result)||void 0===r?void 0:r.validationChecks;if(a){const r=(null!==(i=t.validation.categories)&&void 0!==i?i:tr.all).filter((e=>!a.includes(e)));r.length>0&&(this.buildState.set(e,{completed:!1,options:{validation:Object.assign(Object.assign({},t.validation),{categories:r})},result:n.result}),s.state=bn.IndexedReferences)}}}else this.buildState.delete(e)}this.currentState=bn.Changed,await this.emitUpdate(e.map((e=>e.uri)),[]),await this.buildDocuments(e,t,n)}async update(e,t,n=yn.XO.None){this.currentState=bn.Changed;for(const s of t)this.langiumDocuments.deleteDocument(s),this.buildState.delete(s.toString()),this.indexManager.remove(s);for(const s of e){if(!this.langiumDocuments.invalidateDocument(s)){const e=this.langiumDocumentFactory.fromModel({$type:"INVALID"},s);e.state=bn.Changed,this.langiumDocuments.addDocument(e)}this.buildState.delete(s.toString())}const r=(0,sn.Td)(e).concat(t).map((e=>e.toString())).toSet();this.langiumDocuments.all.filter((e=>!r.has(e.uri.toString())&&this.shouldRelink(e,r))).forEach((e=>{this.serviceRegistry.getServices(e.uri).references.Linker.unlink(e),e.state=Math.min(e.state,bn.ComputedScopes),e.diagnostics=void 0})),await this.emitUpdate(e,t),await En(n);const i=this.sortDocuments(this.langiumDocuments.all.filter((e=>{var t;return e.staten(e,t))))}sortDocuments(e){let t=0,n=e.length-1;for(;t=0&&!this.hasTextDocument(e[n]);)n--;tvoid 0!==e.error))||this.indexManager.isAffected(e,t)}onUpdate(e){return this.updateListeners.push(e),dr.create((()=>{const t=this.updateListeners.indexOf(e);t>=0&&this.updateListeners.splice(t,1)}))}async buildDocuments(e,t,n){this.prepareBuild(e,t),await this.runCancelable(e,bn.Parsed,n,(e=>this.langiumDocumentFactory.update(e,n))),await this.runCancelable(e,bn.IndexedContent,n,(e=>this.indexManager.updateContent(e,n))),await this.runCancelable(e,bn.ComputedScopes,n,(async e=>{const t=this.serviceRegistry.getServices(e.uri).references.ScopeComputation;e.precomputedScopes=await t.computeLocalScopes(e,n)})),await this.runCancelable(e,bn.Linked,n,(e=>this.serviceRegistry.getServices(e.uri).references.Linker.link(e,n))),await this.runCancelable(e,bn.IndexedReferences,n,(e=>this.indexManager.updateReferences(e,n)));const r=e.filter((e=>this.shouldValidate(e)));await this.runCancelable(r,bn.Validated,n,(e=>this.validate(e,n)));for(const i of e){const e=this.buildState.get(i.uri.toString());e&&(e.completed=!0)}}prepareBuild(e,t){for(const n of e){const e=n.uri.toString(),r=this.buildState.get(e);r&&!r.completed||this.buildState.set(e,{completed:!1,options:t,result:null==r?void 0:r.result})}}async runCancelable(e,t,n,r){const i=e.filter((e=>e.statee.state===t));await this.notifyBuildPhase(s,t,n),this.currentState=t}onBuildPhase(e,t){return this.buildPhaseListeners.add(e,t),dr.create((()=>{this.buildPhaseListeners.delete(e,t)}))}onDocumentPhase(e,t){return this.documentPhaseListeners.add(e,t),dr.create((()=>{this.documentPhaseListeners.delete(e,t)}))}waitUntil(e,t,n){let r;if(t&&"path"in t?r=t:n=t,null!=n||(n=yn.XO.None),r){const t=this.langiumDocuments.getDocument(r);if(t&&t.state>e)return Promise.resolve(r)}return this.currentState>=e?Promise.resolve(void 0):n.isCancellationRequested?Promise.reject(Rn):new Promise(((t,i)=>{const s=this.onBuildPhase(e,(()=>{if(s.dispose(),a.dispose(),r){const e=this.langiumDocuments.getDocument(r);t(null==e?void 0:e.uri)}else t(void 0)})),a=n.onCancellationRequested((()=>{s.dispose(),a.dispose(),i(Rn)}))}))}async notifyDocumentPhase(e,t,n){const r=this.documentPhaseListeners.get(t).slice();for(const s of r)try{await s(e,n)}catch(i){if(!$n(i))throw i}}async notifyBuildPhase(e,t,n){if(0===e.length)return;const r=this.buildPhaseListeners.get(t).slice();for(const i of r)await En(n),await i(e,n)}shouldValidate(e){return Boolean(this.getBuildOptions(e).validation)}async validate(e,t){var n,r;const i=this.serviceRegistry.getServices(e.uri).validation.DocumentValidator,s=this.getBuildOptions(e).validation,a="object"==typeof s?s:void 0,o=await i.validateDocument(e,a,t);e.diagnostics?e.diagnostics.push(...o):e.diagnostics=o;const l=this.buildState.get(e.uri.toString());if(l){null!==(n=l.result)&&void 0!==n||(l.result={});const e=null!==(r=null==a?void 0:a.categories)&&void 0!==r?r:tr.all;l.result.validationChecks?l.result.validationChecks.push(...e):l.result.validationChecks=[...e]}}getBuildOptions(e){var t,n;return null!==(n=null===(t=this.buildState.get(e.uri.toString()))||void 0===t?void 0:t.options)&&void 0!==n?n:{}}}class mr{constructor(e){this.symbolIndex=new Map,this.symbolByTypeIndex=new Yn,this.referenceIndex=new Map,this.documents=e.workspace.LangiumDocuments,this.serviceRegistry=e.ServiceRegistry,this.astReflection=e.AstReflection}findAllReferences(e,t){const n=(0,Dt.YE)(e).uri,r=[];return this.referenceIndex.forEach((e=>{e.forEach((e=>{Fn.equals(e.targetUri,n)&&e.targetPath===t&&r.push(e)}))})),(0,sn.Td)(r)}allElements(e,t){let n=(0,sn.Td)(this.symbolIndex.keys());return t&&(n=n.filter((e=>!t||t.has(e)))),n.map((t=>this.getFileDescriptions(t,e))).flat()}getFileDescriptions(e,t){var n;if(!t)return null!==(n=this.symbolIndex.get(e))&&void 0!==n?n:[];const r=this.symbolByTypeIndex.get(e,t,(()=>{var n;return(null!==(n=this.symbolIndex.get(e))&&void 0!==n?n:[]).filter((e=>this.astReflection.isSubtype(e.type,t)))}));return r}remove(e){const t=e.toString();this.symbolIndex.delete(t),this.symbolByTypeIndex.clear(t),this.referenceIndex.delete(t)}async updateContent(e,t=yn.XO.None){const n=this.serviceRegistry.getServices(e.uri),r=await n.references.ScopeComputation.computeExports(e,t),i=e.uri.toString();this.symbolIndex.set(i,r),this.symbolByTypeIndex.clear(i)}async updateReferences(e,t=yn.XO.None){const n=this.serviceRegistry.getServices(e.uri),r=await n.workspace.ReferenceDescriptionProvider.createDescriptions(e,t);this.referenceIndex.set(e.uri.toString(),r)}isAffected(e,t){const n=this.referenceIndex.get(e.uri.toString());return!!n&&n.some((e=>!e.local&&t.has(e.targetUri.toString())))}}class gr{constructor(e){this.initialBuildOptions={},this._ready=new kn,this.serviceRegistry=e.ServiceRegistry,this.langiumDocuments=e.workspace.LangiumDocuments,this.documentBuilder=e.workspace.DocumentBuilder,this.fileSystemProvider=e.workspace.FileSystemProvider,this.mutex=e.workspace.WorkspaceLock}get ready(){return this._ready.promise}get workspaceFolders(){return this.folders}initialize(e){var t;this.folders=null!==(t=e.workspaceFolders)&&void 0!==t?t:void 0}initialized(e){return this.mutex.write((e=>{var t;return this.initializeWorkspace(null!==(t=this.folders)&&void 0!==t?t:[],e)}))}async initializeWorkspace(e,t=yn.XO.None){const n=await this.performStartup(e);await En(t),await this.documentBuilder.build(n,this.initialBuildOptions,t)}async performStartup(e){const t=this.serviceRegistry.all.flatMap((e=>e.LanguageMetaData.fileExtensions)),n=[],r=e=>{n.push(e),this.langiumDocuments.hasDocument(e.uri)||this.langiumDocuments.addDocument(e)};return await this.loadAdditionalDocuments(e,r),await Promise.all(e.map((e=>[e,this.getRootFolder(e)])).map((async e=>this.traverseFolder(...e,t,r)))),this._ready.resolve(),n}loadAdditionalDocuments(e,t){return Promise.resolve()}getRootFolder(e){return On.r.parse(e.uri)}async traverseFolder(e,t,n,r){const i=await this.fileSystemProvider.readDirectory(t);await Promise.all(i.map((async t=>{if(this.includeEntry(e,t,n))if(t.isDirectory)await this.traverseFolder(e,t.uri,n,r);else if(t.isFile){const e=await this.langiumDocuments.getOrCreateDocument(t.uri);r(e)}})))}includeEntry(e,t,n){const r=Fn.basename(t.uri);if(r.startsWith("."))return!1;if(t.isDirectory)return"node_modules"!==r&&"out"!==r;if(t.isFile){const e=Fn.extname(t.uri);return n.includes(e)}return!1}}class yr{buildUnexpectedCharactersMessage(e,t,n,r,i){return o.PW.buildUnexpectedCharactersMessage(e,t,n,r,i)}buildUnableToPopLexerModeMessage(e){return o.PW.buildUnableToPopLexerModeMessage(e)}}const Tr={mode:"full"};class Ar{constructor(e){this.errorMessageProvider=e.parser.LexerErrorMessageProvider,this.tokenBuilder=e.parser.TokenBuilder;const t=this.tokenBuilder.buildTokens(e.Grammar,{caseInsensitive:e.LanguageMetaData.caseInsensitive});this.tokenTypes=this.toTokenTypeDictionary(t);const n=Rr(t)?Object.values(t):t,r="production"===e.LanguageMetaData.mode;this.chevrotainLexer=new o.JG(n,{positionTracking:"full",skipValidations:r,errorMessageProvider:this.errorMessageProvider})}get definition(){return this.tokenTypes}tokenize(e,t=Tr){var n,r,i;const s=this.chevrotainLexer.tokenize(e);return{tokens:s.tokens,errors:s.errors,hidden:null!==(n=s.groups.hidden)&&void 0!==n?n:[],report:null===(i=(r=this.tokenBuilder).flushLexingReport)||void 0===i?void 0:i.call(r,e)}}toTokenTypeDictionary(e){if(Rr(e))return e;const t=vr(e)?Object.values(e.modes).flat():e,n={};return t.forEach((e=>n[e.name]=e)),n}}function vr(e){return e&&"modes"in e&&"defaultMode"in e}function Rr(e){return!function(e){return Array.isArray(e)&&(0===e.length||"name"in e[0])}(e)&&!vr(e)}function $r(e,t,n){let r,i;"string"==typeof e?(i=t,r=n):(i=e.range.start,r=t),i||(i=ye.create(0,0));const s=function(e){var t,n,r;const i=[];let s=e.position.line,a=e.position.character;for(let o=0;o=u.length){if(i.length>0){const e=ye.create(s,a);i.push({type:"break",content:"",range:Te.create(e,e)})}}else{kr.lastIndex=d;const e=kr.exec(u);if(e){const t=e[0],n=e[1],r=ye.create(s,a+d),o=ye.create(s,a+d+t.length);i.push({type:"tag",content:n,range:Te.create(r,o)}),d+=t.length,d=Cr(u,d)}if(d0&&"break"===i[i.length-1].type)return i.slice(0,-1);return i}({lines:Er(e),position:i,options:Mr(r)});return function(e){var t,n,r,i;const s=ye.create(e.position.line,e.position.character);if(0===e.tokens.length)return new Ur([],Te.create(s,s));const a=[];for(;e.index0&&i.push({type:"text",content:t.substring(s,e),range:Te.create(ye.create(n,s+r),ye.create(n,e+r))});let l=a.length+1;const c=o[1];if(i.push({type:"inline-tag",content:c,range:Te.create(ye.create(n,s+l+r),ye.create(n,s+l+c.length+r))}),l+=c.length,4===o.length){l+=o[2].length;const e=o[3];i.push({type:"text",content:e,range:Te.create(ye.create(n,s+l+r),ye.create(n,s+l+e.length+r))})}else i.push({type:"text",content:"",range:Te.create(ye.create(n,s+l+r),ye.create(n,s+l+r))});s=e+o[0].length}const a=t.substring(s);a.length>0&&i.push({type:"text",content:a,range:Te.create(ye.create(n,s+r),ye.create(n,s+r+a.length))})}return i}const Sr=/\S/,Nr=/\s*$/;function Cr(e,t){const n=e.substring(t).match(Sr);return n?t+n.index:e.length}function wr(e){const t=e.match(Nr);if(t&&"number"==typeof t.index)return t.index}function Lr(e,t){const n=e.tokens[e.index];return"tag"===n.type?_r(e,!1):"text"===n.type||"inline-tag"===n.type?br(e):(function(e,t){if(t){const n=new Kr("",e.range);"inlines"in t?t.inlines.push(n):t.content.inlines.push(n)}}(n,t),void e.index++)}function br(e){let t=e.tokens[e.index];const n=t;let r=t;const i=[];for(;t&&"break"!==t.type&&"tag"!==t.type;)i.push(Or(e)),r=t,t=e.tokens[e.index];return new Gr(i,Te.create(n.range.start,r.range.end))}function Or(e){return"inline-tag"===e.tokens[e.index].type?_r(e,!0):Pr(e)}function _r(e,t){const n=e.tokens[e.index++],r=n.content.substring(1),i=e.tokens[e.index];if("text"===(null==i?void 0:i.type)){if(t){const i=Pr(e);return new Fr(r,new Gr([i],i.range),t,Te.create(n.range.start,i.range.end))}{const i=br(e);return new Fr(r,i,t,Te.create(n.range.start,i.range.end))}}{const e=n.range;return new Fr(r,new Gr([],e),t,e)}}function Pr(e){const t=e.tokens[e.index++];return new Kr(t.content,t.range)}function Mr(e){if(!e)return Mr({start:"/**",end:"*/",line:"*"});const{start:t,end:n,line:r}=e;return{start:Dr(t,!0),end:Dr(n,!1),line:Dr(r,!0)}}function Dr(e,t){if("string"==typeof e||"object"==typeof e){const n="string"==typeof e?(0,s.Nt)(e):e.source;return t?new RegExp(`^\\s*${n}`):new RegExp(`\\s*${n}\\s*$`)}return e}class Ur{constructor(e,t){this.elements=e,this.range=t}getTag(e){return this.getAllTags().find((t=>t.name===e))}getTags(e){return this.getAllTags().filter((t=>t.name===e))}getAllTags(){return this.elements.filter((e=>"name"in e))}toString(){let e="";for(const t of this.elements)if(0===e.length)e=t.toString();else{const n=t.toString();e+=Br(e)+n}return e.trim()}toMarkdown(e){let t="";for(const n of this.elements)if(0===t.length)t=n.toMarkdown(e);else{const r=n.toMarkdown(e);t+=Br(t)+r}return t.trim()}}class Fr{constructor(e,t,n,r){this.name=e,this.content=t,this.inline=n,this.range=r}toString(){let e=`@${this.name}`;const t=this.content.toString();return 1===this.content.inlines.length?e=`${e} ${t}`:this.content.inlines.length>1&&(e=`${e}\n${t}`),this.inline?`{${e}}`:e}toMarkdown(e){var t,n;return null!==(n=null===(t=null==e?void 0:e.renderTag)||void 0===t?void 0:t.call(e,this))&&void 0!==n?n:this.toMarkdownDefault(e)}toMarkdownDefault(e){const t=this.content.toMarkdown(e);if(this.inline){const n=function(e,t,n){var r,i;if("linkplain"===e||"linkcode"===e||"link"===e){const s=t.indexOf(" ");let a=t;if(s>0){const e=Cr(t,s);a=t.substring(e),t=t.substring(0,s)}("linkcode"===e||"link"===e&&"code"===n.link)&&(a=`\`${a}\``);const o=null!==(i=null===(r=n.renderLink)||void 0===r?void 0:r.call(n,t,a))&&void 0!==i?i:function(e,t){try{return On.r.parse(e,!0),`[${t}](${e})`}catch(r){return e}}(t,a);return o}return}(this.name,t,null!=e?e:{});if("string"==typeof n)return n}let n="";"italic"===(null==e?void 0:e.tag)||void 0===(null==e?void 0:e.tag)?n="*":"bold"===(null==e?void 0:e.tag)?n="**":"bold-italic"===(null==e?void 0:e.tag)&&(n="***");let r=`${n}@${this.name}${n}`;return 1===this.content.inlines.length?r=`${r} \u2014 ${t}`:this.content.inlines.length>1&&(r=`${r}\n${t}`),this.inline?`{${r}}`:r}}class Gr{constructor(e,t){this.inlines=e,this.range=t}toString(){let e="";for(let t=0;tn.range.start.line&&(e+="\n")}return e}toMarkdown(e){let t="";for(let n=0;nr.range.start.line&&(t+="\n")}return t}}class Kr{constructor(e,t){this.text=e,this.range=t}toString(){return this.text}toMarkdown(){return this.text}}function Br(e){return e.endsWith("\n")?"\n":"\n\n"}class jr{constructor(e){this.indexManager=e.shared.workspace.IndexManager,this.commentProvider=e.documentation.CommentProvider}getDocumentation(e){const t=this.commentProvider.getComment(e);if(t&&function(e,t){const n=Mr(t),r=Er(e);if(0===r.length)return!1;const i=r[0],s=r[r.length-1],a=n.start,o=n.end;return Boolean(null==a?void 0:a.exec(i))&&Boolean(null==o?void 0:o.exec(s))}(t)){return $r(t).toMarkdown({renderLink:(t,n)=>this.documentationLinkRenderer(e,t,n),renderTag:t=>this.documentationTagRenderer(e,t)})}}documentationLinkRenderer(e,t,n){var r;const i=null!==(r=this.findNameInPrecomputedScopes(e,t))&&void 0!==r?r:this.findNameInGlobalScope(e,t);if(i&&i.nameSegment){const e=i.nameSegment.range.start.line+1,t=i.nameSegment.range.start.character+1;return`[${n}](${i.documentUri.with({fragment:`L${e},${t}`}).toString()})`}}documentationTagRenderer(e,t){}findNameInPrecomputedScopes(e,t){const n=(0,Dt.YE)(e).precomputedScopes;if(!n)return;let r=e;do{const e=n.get(r).find((e=>e.name===t));if(e)return e;r=r.$container}while(r)}findNameInGlobalScope(e,t){return this.indexManager.allElements().find((e=>e.name===t))}}class Vr{constructor(e){this.grammarConfig=()=>e.parser.GrammarConfig}getComment(e){var t;return function(e){return"string"==typeof e.$comment}(e)?e.$comment:null===(t=(0,r.v)(e.$cstNode,this.grammarConfig().multilineCommentRules))||void 0===t?void 0:t.text}}class Hr{constructor(e){this.syncParser=e.parser.LangiumParser}parse(e,t){return Promise.resolve(this.syncParser.parse(e))}}class Wr{constructor(){this.previousTokenSource=new yn.Qi,this.writeQueue=[],this.readQueue=[],this.done=!0}write(e){this.cancelWrite();const t=(An=performance.now(),new yn.Qi);return this.previousTokenSource=t,this.enqueue(this.writeQueue,e,t.token)}read(e){return this.enqueue(this.readQueue,e)}enqueue(e,t,n=yn.XO.None){const r=new kn,i={action:t,deferred:r,cancellationToken:n};return e.push(i),this.performNextOperation(),r.promise}async performNextOperation(){if(!this.done)return;const e=[];if(this.writeQueue.length>0)e.push(this.writeQueue.shift());else{if(!(this.readQueue.length>0))return;e.push(...this.readQueue.splice(0,this.readQueue.length))}this.done=!1,await Promise.all(e.map((async({action:e,deferred:t,cancellationToken:n})=>{try{const r=await Promise.resolve().then((()=>e(n)));t.resolve(r)}catch(r){$n(r)?t.resolve(void 0):t.reject(r)}}))),this.done=!0,this.performNextOperation()}cancelWrite(){this.previousTokenSource.cancel()}}class zr{constructor(e){this.grammarElementIdMap=new Bn,this.tokenTypeIdMap=new Bn,this.grammar=e.Grammar,this.lexer=e.parser.Lexer,this.linker=e.references.Linker}dehydrate(e){return{lexerErrors:e.lexerErrors,lexerReport:e.lexerReport?this.dehydrateLexerReport(e.lexerReport):void 0,parserErrors:e.parserErrors.map((e=>Object.assign(Object.assign({},e),{message:e.message}))),value:this.dehydrateAstNode(e.value,this.createDehyrationContext(e.value))}}dehydrateLexerReport(e){return e}createDehyrationContext(e){const t=new Map,n=new Map;for(const r of(0,Dt.jm)(e))t.set(r,{});if(e.$cstNode)for(const i of(0,r.NS)(e.$cstNode))n.set(i,{});return{astNodes:t,cstNodes:n}}dehydrateAstNode(e,t){const n=t.astNodes.get(e);n.$type=e.$type,n.$containerIndex=e.$containerIndex,n.$containerProperty=e.$containerProperty,void 0!==e.$cstNode&&(n.$cstNode=this.dehydrateCstNode(e.$cstNode,t));for(const[r,i]of Object.entries(e))if(!r.startsWith("$"))if(Array.isArray(i)){const e=[];n[r]=e;for(const n of i)(0,Tn.ng)(n)?e.push(this.dehydrateAstNode(n,t)):(0,Tn.A_)(n)?e.push(this.dehydrateReference(n,t)):e.push(n)}else(0,Tn.ng)(i)?n[r]=this.dehydrateAstNode(i,t):(0,Tn.A_)(i)?n[r]=this.dehydrateReference(i,t):void 0!==i&&(n[r]=i);return n}dehydrateReference(e,t){const n={};return n.$refText=e.$refText,e.$refNode&&(n.$refNode=t.cstNodes.get(e.$refNode)),n}dehydrateCstNode(e,t){const n=t.cstNodes.get(e);return(0,Tn.br)(e)?n.fullText=e.fullText:n.grammarSource=this.getGrammarElementId(e.grammarSource),n.hidden=e.hidden,n.astNode=t.astNodes.get(e.astNode),(0,Tn.mD)(e)?n.content=e.content.map((e=>this.dehydrateCstNode(e,t))):(0,Tn.FC)(e)&&(n.tokenType=e.tokenType.name,n.offset=e.offset,n.length=e.length,n.startLine=e.range.start.line,n.startColumn=e.range.start.character,n.endLine=e.range.end.line,n.endColumn=e.range.end.character),n}hydrate(e){const t=e.value,n=this.createHydrationContext(t);return"$cstNode"in t&&this.hydrateCstNode(t.$cstNode,n),{lexerErrors:e.lexerErrors,lexerReport:e.lexerReport,parserErrors:e.parserErrors,value:this.hydrateAstNode(t,n)}}createHydrationContext(e){const t=new Map,n=new Map;for(const r of(0,Dt.jm)(e))t.set(r,{});let i;if(e.$cstNode)for(const s of(0,r.NS)(e.$cstNode)){let e;"fullText"in s?(e=new Wt(s.fullText),i=e):"content"in s?e=new Vt:"tokenType"in s&&(e=this.hydrateCstLeafNode(s)),e&&(n.set(s,e),e.root=i)}return{astNodes:t,cstNodes:n}}hydrateAstNode(e,t){const n=t.astNodes.get(e);n.$type=e.$type,n.$containerIndex=e.$containerIndex,n.$containerProperty=e.$containerProperty,e.$cstNode&&(n.$cstNode=t.cstNodes.get(e.$cstNode));for(const[r,i]of Object.entries(e))if(!r.startsWith("$"))if(Array.isArray(i)){const e=[];n[r]=e;for(const s of i)(0,Tn.ng)(s)?e.push(this.setParent(this.hydrateAstNode(s,t),n)):(0,Tn.A_)(s)?e.push(this.hydrateReference(s,n,r,t)):e.push(s)}else(0,Tn.ng)(i)?n[r]=this.setParent(this.hydrateAstNode(i,t),n):(0,Tn.A_)(i)?n[r]=this.hydrateReference(i,n,r,t):void 0!==i&&(n[r]=i);return n}setParent(e,t){return e.$container=t,e}hydrateReference(e,t,n,r){return this.linker.buildReference(t,n,r.cstNodes.get(e.$refNode),e.$refText)}hydrateCstNode(e,t,n=0){const r=t.cstNodes.get(e);if("number"==typeof e.grammarSource&&(r.grammarSource=this.getGrammarElement(e.grammarSource)),r.astNode=t.astNodes.get(e.astNode),(0,Tn.mD)(r))for(const i of e.content){const e=this.hydrateCstNode(i,t,n++);r.content.push(e)}return r}hydrateCstLeafNode(e){const t=this.getTokenType(e.tokenType),n=e.offset,r=e.length,i=e.startLine,s=e.startColumn,a=e.endLine,o=e.endColumn,l=e.hidden;return new jt(n,r,{start:{line:i,character:s},end:{line:a,character:o}},t,l)}getTokenType(e){return this.lexer.definition[e]}getGrammarElementId(e){if(e)return 0===this.grammarElementIdMap.size&&this.createGrammarElementIdMap(),this.grammarElementIdMap.get(e)}getGrammarElement(e){0===this.grammarElementIdMap.size&&this.createGrammarElementIdMap();return this.grammarElementIdMap.getKey(e)}createGrammarElementIdMap(){let e=0;for(const t of(0,Dt.jm)(this.grammar))(0,a.r1)(t)&&this.grammarElementIdMap.set(t,e++)}}function Yr(e){return{documentation:{CommentProvider:e=>new Vr(e),DocumentationProvider:e=>new jr(e)},parser:{AsyncParser:e=>new Hr(e),GrammarConfig:e=>function(e){const t=[],n=e.Grammar;for(const r of n.rules)(0,a.rE)(r)&&(0,i.eb)(r)&&(0,s.lU)((0,i.S)(r))&&t.push(r.name);return{multilineCommentRules:t,nameRegexp:r.El}}(e),LangiumParser:e=>pn(e),CompletionParser:e=>function(e){const t=e.Grammar,n=e.parser.Lexer,r=new en(e);return an(t,r,n.definition),r.finalize(),r}(e),ValueConverter:()=>new gn.d,TokenBuilder:()=>new mn.Q,Lexer:e=>new Ar(e),ParserErrorMessageProvider:()=>new Jt,LexerErrorMessageProvider:()=>new yr},workspace:{AstNodeLocator:()=>new ur,AstNodeDescriptionProvider:e=>new lr(e),ReferenceDescriptionProvider:e=>new cr(e)},references:{Linker:e=>new Dn(e),NameProvider:()=>new Un,ScopeProvider:e=>new qn(e),ScopeComputation:e=>new jn(e),References:e=>new Gn(e)},serializer:{Hydrator:e=>new zr(e),JsonSerializer:e=>new Zn(e)},validation:{DocumentValidator:e=>new ir(e),ValidationRegistry:e=>new rr(e)},shared:()=>e.shared}}function Xr(e){return{ServiceRegistry:e=>new Jn(e),workspace:{LangiumDocuments:e=>new Pn(e),LangiumDocumentFactory:e=>new _n(e),DocumentBuilder:e=>new pr(e),IndexManager:e=>new mr(e),WorkspaceManager:e=>new gr(e),FileSystemProvider:t=>e.fileSystemProvider(t),WorkspaceLock:()=>new Wr,ConfigurationProvider:e=>new fr(e)}}}},39364:(e,t,n)=>{var r;function i(e,t,n,r,i,s,o,l,u){return a([e,t,n,r,i,s,o,l,u].reduce(c,{}))}n.d(t,{WQ:()=>i}),function(e){e.merge=(e,t)=>c(c({},e),t)}(r||(r={}));const s=Symbol("isProxy");function a(e,t){const n=new Proxy({},{deleteProperty:()=>!1,set:()=>{throw new Error("Cannot set property on injected service container")},get:(r,i)=>i===s||l(r,i,e,t||n),getOwnPropertyDescriptor:(r,i)=>(l(r,i,e,t||n),Object.getOwnPropertyDescriptor(r,i)),has:(t,n)=>n in e,ownKeys:()=>[...Object.getOwnPropertyNames(e)]});return n}const o=Symbol();function l(e,t,n,r){if(t in e){if(e[t]instanceof Error)throw new Error("Construction failure. Please make sure that your dependencies are constructable.",{cause:e[t]});if(e[t]===o)throw new Error('Cycle detected. Please make "'+String(t)+'" lazy. Visit https://langium.org/docs/reference/configuration-services/#resolving-cyclic-dependencies');return e[t]}if(t in n){const s=n[t];e[t]=o;try{e[t]="function"==typeof s?s(r):a(s,r)}catch(i){throw e[t]=i instanceof Error?i:void 0,i}return e[t]}}function c(e,t){if(t)for(const[n,r]of Object.entries(t))if(void 0!==r){const t=e[n];e[n]=null!==t&&null!==r&&"object"==typeof t&&"object"==typeof r?c(t,r):r}return e}},32151:(e,t,n)=>{n.d(t,{$g:()=>fe,Bg:()=>J,Ct:()=>S,Cz:()=>p,D8:()=>U,FO:()=>re,Fy:()=>me,GL:()=>ce,IZ:()=>se,Mz:()=>Ee,O4:()=>ye,QX:()=>Ie,RP:()=>T,S2:()=>k,SP:()=>$,TF:()=>L,Tu:()=>g,Xj:()=>j,_c:()=>te,cY:()=>Re,fG:()=>M,jp:()=>X,lF:()=>Ae,r1:()=>u,rE:()=>K,s7:()=>O,vd:()=>de,ve:()=>z,wb:()=>oe,wh:()=>Q,z2:()=>xe});var r=n(32479);const i="AbstractRule";const s="AbstractType";const a="Condition";const o="TypeDefinition";const l="ValueLiteral";const c="AbstractElement";function u(e){return Se.isInstance(e,c)}const d="ArrayLiteral";const h="ArrayType";const f="BooleanLiteral";function p(e){return Se.isInstance(e,f)}const m="Conjunction";function g(e){return Se.isInstance(e,m)}const y="Disjunction";function T(e){return Se.isInstance(e,y)}const A="Grammar";const v="GrammarImport";const R="InferredType";function $(e){return Se.isInstance(e,R)}const E="Interface";function k(e){return Se.isInstance(e,E)}const x="NamedArgument";const I="Negation";function S(e){return Se.isInstance(e,I)}const N="NumberLiteral";const C="Parameter";const w="ParameterReference";function L(e){return Se.isInstance(e,w)}const b="ParserRule";function O(e){return Se.isInstance(e,b)}const _="ReferenceType";const P="ReturnType";function M(e){return Se.isInstance(e,P)}const D="SimpleType";function U(e){return Se.isInstance(e,D)}const F="StringLiteral";const G="TerminalRule";function K(e){return Se.isInstance(e,G)}const B="Type";function j(e){return Se.isInstance(e,B)}const V="TypeAttribute";const H="UnionType";const W="Action";function z(e){return Se.isInstance(e,W)}const Y="Alternatives";function X(e){return Se.isInstance(e,Y)}const q="Assignment";function Q(e){return Se.isInstance(e,q)}const Z="CharacterRange";function J(e){return Se.isInstance(e,Z)}const ee="CrossReference";function te(e){return Se.isInstance(e,ee)}const ne="EndOfFile";function re(e){return Se.isInstance(e,ne)}const ie="Group";function se(e){return Se.isInstance(e,ie)}const ae="Keyword";function oe(e){return Se.isInstance(e,ae)}const le="NegatedToken";function ce(e){return Se.isInstance(e,le)}const ue="RegexToken";function de(e){return Se.isInstance(e,ue)}const he="RuleCall";function fe(e){return Se.isInstance(e,he)}const pe="TerminalAlternatives";function me(e){return Se.isInstance(e,pe)}const ge="TerminalGroup";function ye(e){return Se.isInstance(e,ge)}const Te="TerminalRuleCall";function Ae(e){return Se.isInstance(e,Te)}const ve="UnorderedGroup";function Re(e){return Se.isInstance(e,ve)}const $e="UntilToken";function Ee(e){return Se.isInstance(e,$e)}const ke="Wildcard";function xe(e){return Se.isInstance(e,ke)}class Ie extends r.kD{getAllTypes(){return[c,i,s,W,Y,d,h,q,f,Z,a,m,ee,y,ne,A,v,ie,R,E,ae,x,le,I,N,C,w,b,_,ue,P,he,D,F,pe,ge,G,Te,B,V,o,H,ve,$e,l,ke]}computeIsSubtype(e,t){switch(e){case W:case Y:case q:case Z:case ee:case ne:case ie:case ae:case le:case ue:case he:case pe:case ge:case Te:case ve:case $e:case ke:return this.isSubtype(c,t);case d:case N:case F:return this.isSubtype(l,t);case h:case _:case D:case H:return this.isSubtype(o,t);case f:return this.isSubtype(a,t)||this.isSubtype(l,t);case m:case y:case I:case w:return this.isSubtype(a,t);case R:case E:case B:return this.isSubtype(s,t);case b:return this.isSubtype(i,t)||this.isSubtype(s,t);case G:return this.isSubtype(i,t);default:return!1}}getReferenceType(e){const t=`${e.container.$type}:${e.property}`;switch(t){case"Action:type":case"CrossReference:type":case"Interface:superTypes":case"ParserRule:returnType":case"SimpleType:typeRef":return s;case"Grammar:hiddenTokens":case"ParserRule:hiddenTokens":case"RuleCall:rule":return i;case"Grammar:usedGrammars":return A;case"NamedArgument:parameter":case"ParameterReference:parameter":return C;case"TerminalRuleCall:rule":return G;default:throw new Error(`${t} is not a valid reference id.`)}}getTypeMetaData(e){switch(e){case c:return{name:c,properties:[{name:"cardinality"},{name:"lookahead"}]};case d:return{name:d,properties:[{name:"elements",defaultValue:[]}]};case h:return{name:h,properties:[{name:"elementType"}]};case f:return{name:f,properties:[{name:"true",defaultValue:!1}]};case m:return{name:m,properties:[{name:"left"},{name:"right"}]};case y:return{name:y,properties:[{name:"left"},{name:"right"}]};case A:return{name:A,properties:[{name:"definesHiddenTokens",defaultValue:!1},{name:"hiddenTokens",defaultValue:[]},{name:"imports",defaultValue:[]},{name:"interfaces",defaultValue:[]},{name:"isDeclared",defaultValue:!1},{name:"name"},{name:"rules",defaultValue:[]},{name:"types",defaultValue:[]},{name:"usedGrammars",defaultValue:[]}]};case v:return{name:v,properties:[{name:"path"}]};case R:return{name:R,properties:[{name:"name"}]};case E:return{name:E,properties:[{name:"attributes",defaultValue:[]},{name:"name"},{name:"superTypes",defaultValue:[]}]};case x:return{name:x,properties:[{name:"calledByName",defaultValue:!1},{name:"parameter"},{name:"value"}]};case I:return{name:I,properties:[{name:"value"}]};case N:return{name:N,properties:[{name:"value"}]};case C:return{name:C,properties:[{name:"name"}]};case w:return{name:w,properties:[{name:"parameter"}]};case b:return{name:b,properties:[{name:"dataType"},{name:"definesHiddenTokens",defaultValue:!1},{name:"definition"},{name:"entry",defaultValue:!1},{name:"fragment",defaultValue:!1},{name:"hiddenTokens",defaultValue:[]},{name:"inferredType"},{name:"name"},{name:"parameters",defaultValue:[]},{name:"returnType"},{name:"wildcard",defaultValue:!1}]};case _:return{name:_,properties:[{name:"referenceType"}]};case P:return{name:P,properties:[{name:"name"}]};case D:return{name:D,properties:[{name:"primitiveType"},{name:"stringType"},{name:"typeRef"}]};case F:return{name:F,properties:[{name:"value"}]};case G:return{name:G,properties:[{name:"definition"},{name:"fragment",defaultValue:!1},{name:"hidden",defaultValue:!1},{name:"name"},{name:"type"}]};case B:return{name:B,properties:[{name:"name"},{name:"type"}]};case V:return{name:V,properties:[{name:"defaultValue"},{name:"isOptional",defaultValue:!1},{name:"name"},{name:"type"}]};case H:return{name:H,properties:[{name:"types",defaultValue:[]}]};case W:return{name:W,properties:[{name:"cardinality"},{name:"feature"},{name:"inferredType"},{name:"lookahead"},{name:"operator"},{name:"type"}]};case Y:return{name:Y,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case q:return{name:q,properties:[{name:"cardinality"},{name:"feature"},{name:"lookahead"},{name:"operator"},{name:"terminal"}]};case Z:return{name:Z,properties:[{name:"cardinality"},{name:"left"},{name:"lookahead"},{name:"right"}]};case ee:return{name:ee,properties:[{name:"cardinality"},{name:"deprecatedSyntax",defaultValue:!1},{name:"lookahead"},{name:"terminal"},{name:"type"}]};case ne:return{name:ne,properties:[{name:"cardinality"},{name:"lookahead"}]};case ie:return{name:ie,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"guardCondition"},{name:"lookahead"}]};case ae:return{name:ae,properties:[{name:"cardinality"},{name:"lookahead"},{name:"value"}]};case le:return{name:le,properties:[{name:"cardinality"},{name:"lookahead"},{name:"terminal"}]};case ue:return{name:ue,properties:[{name:"cardinality"},{name:"lookahead"},{name:"regex"}]};case he:return{name:he,properties:[{name:"arguments",defaultValue:[]},{name:"cardinality"},{name:"lookahead"},{name:"rule"}]};case pe:return{name:pe,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case ge:return{name:ge,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case Te:return{name:Te,properties:[{name:"cardinality"},{name:"lookahead"},{name:"rule"}]};case ve:return{name:ve,properties:[{name:"cardinality"},{name:"elements",defaultValue:[]},{name:"lookahead"}]};case $e:return{name:$e,properties:[{name:"cardinality"},{name:"lookahead"},{name:"terminal"}]};case ke:return{name:ke,properties:[{name:"cardinality"},{name:"lookahead"}]};default:return{name:e,properties:[]}}}}const Se=new Ie},44326:(e,t,n)=>{n.d(t,{Q:()=>c});var r=n(69637),i=n(32151),s=n(49683),a=n(90418),o=n(82806),l=n(91719);class c{constructor(){this.diagnostics=[]}buildTokens(e,t){const n=(0,l.Td)((0,a.YV)(e,!1)),r=this.buildTerminalTokens(n),i=this.buildKeywordTokens(n,r,t);return r.forEach((e=>{const t=e.PATTERN;"object"==typeof t&&t&&"test"in t&&(0,o.Yv)(t)?i.unshift(e):i.push(e)})),i}flushLexingReport(e){return{diagnostics:this.popDiagnostics()}}popDiagnostics(){const e=[...this.diagnostics];return this.diagnostics=[],e}buildTerminalTokens(e){return e.filter(i.rE).filter((e=>!e.fragment)).map((e=>this.buildTerminalToken(e))).toArray()}buildTerminalToken(e){const t=(0,a.S)(e),n=this.requiresCustomPattern(t)?this.regexPatternFunction(t):t,i={name:e.name,PATTERN:n};return"function"==typeof n&&(i.LINE_BREAKS=!0),e.hidden&&(i.GROUP=(0,o.Yv)(t)?r.JG.SKIPPED:"hidden"),i}requiresCustomPattern(e){return!(!e.flags.includes("u")&&!e.flags.includes("s"))||!(!e.source.includes("?<=")&&!e.source.includes("?{t.lastIndex=n;return t.exec(e)}}buildKeywordTokens(e,t,n){return e.filter(i.s7).flatMap((e=>(0,s.Uo)(e).filter(i.wb))).distinct((e=>e.value)).toArray().sort(((e,t)=>t.value.length-e.value.length)).map((e=>this.buildKeywordToken(e,t,Boolean(null==n?void 0:n.caseInsensitive))))}buildKeywordToken(e,t,n){const r=this.buildKeywordPattern(e,n),i={name:e.value,PATTERN:r,LONGER_ALT:this.findLongerAlt(e,t)};return"function"==typeof r&&(i.LINE_BREAKS=!0),i}buildKeywordPattern(e,t){return t?new RegExp((0,o.Ao)(e.value)):e.value}findLongerAlt(e,t){return t.reduce(((t,n)=>{const r=null==n?void 0:n.PATTERN;return(null==r?void 0:r.source)&&(0,o.PC)("^"+r.source+"$",e.value)&&t.push(n),t}),[])}}},65033:(e,t,n)=>{n.d(t,{d:()=>a});var r,i=n(32151),s=n(90418);class a{convert(e,t){let n=t.grammarSource;if((0,i._c)(n)&&(n=(0,s.g4)(n)),(0,i.$g)(n)){const r=n.rule.ref;if(!r)throw new Error("This cst node was not parsed by a rule.");return this.runConverter(r,e,t)}return e}runConverter(e,t,n){var i;switch(e.name.toUpperCase()){case"INT":return r.convertInt(t);case"STRING":return r.convertString(t);case"ID":return r.convertID(t)}switch(null===(i=(0,s.P3)(e))||void 0===i?void 0:i.toLowerCase()){case"number":return r.convertNumber(t);case"boolean":return r.convertBoolean(t);case"bigint":return r.convertBigint(t);case"date":return r.convertDate(t);default:return t}}}!function(e){function t(e){switch(e){case"b":return"\b";case"f":return"\f";case"n":return"\n";case"r":return"\r";case"t":return"\t";case"v":return"\v";case"0":return"\0";default:return e}}e.convertString=function(e){let n="";for(let r=1;r{function r(e){return"object"==typeof e&&null!==e&&"string"==typeof e.$type}function i(e){return"object"==typeof e&&null!==e&&"string"==typeof e.$refText}function s(e){return"object"==typeof e&&null!==e&&"string"==typeof e.name&&"string"==typeof e.type&&"string"==typeof e.path}function a(e){return"object"==typeof e&&null!==e&&r(e.container)&&i(e.reference)&&"string"==typeof e.message}n.d(t,{A_:()=>i,FC:()=>c,Nr:()=>s,Zl:()=>a,br:()=>u,kD:()=>o,mD:()=>l,ng:()=>r});class o{constructor(){this.subtypes={},this.allSubtypes={}}isInstance(e,t){return r(e)&&this.isSubtype(e.$type,t)}isSubtype(e,t){if(e===t)return!0;let n=this.subtypes[e];n||(n=this.subtypes[e]={});const r=n[t];if(void 0!==r)return r;{const r=this.computeIsSubtype(e,t);return n[t]=r,r}}getAllSubTypes(e){const t=this.allSubtypes[e];if(t)return t;{const t=this.getAllTypes(),n=[];for(const r of t)this.isSubtype(r,e)&&n.push(r);return this.allSubtypes[e]=n,n}}}function l(e){return"object"==typeof e&&null!==e&&Array.isArray(e.content)}function c(e){return"object"==typeof e&&null!==e&&"object"==typeof e.tokenType}function u(e){return l(e)&&"string"==typeof e.fullText}},49683:(e,t,n)=>{n.d(t,{DM:()=>p,OP:()=>m,SD:()=>a,Uo:()=>d,VN:()=>u,XG:()=>o,YE:()=>l,cQ:()=>c,jm:()=>h});var r=n(32479),i=n(91719),s=n(76373);function a(e){for(const[t,n]of Object.entries(e))t.startsWith("$")||(Array.isArray(n)?n.forEach(((n,i)=>{(0,r.ng)(n)&&(n.$container=e,n.$containerProperty=t,n.$containerIndex=i)})):(0,r.ng)(n)&&(n.$container=e,n.$containerProperty=t))}function o(e,t){let n=e;for(;n;){if(t(n))return n;n=n.$container}}function l(e){const t=c(e).$document;if(!t)throw new Error("AST node has no document.");return t}function c(e){for(;e.$container;)e=e.$container;return e}function u(e,t){if(!e)throw new Error("Node must be an AstNode.");const n=null==t?void 0:t.range;return new i.fq((()=>({keys:Object.keys(e),keyIndex:0,arrayIndex:0})),(t=>{for(;t.keyIndexu(e,t)))}function h(e,t){if(!e)throw new Error("Root node must be an AstNode.");return(null==t?void 0:t.range)&&!f(e,t.range)?new i.Vj(e,(()=>[])):new i.Vj(e,(e=>u(e,t)),{includeRoot:!0})}function f(e,t){var n;if(!t)return!0;const r=null===(n=e.$cstNode)||void 0===n?void 0:n.range;return!!r&&(0,s.r4)(r,t)}function p(e){return new i.fq((()=>({keys:Object.keys(e),keyIndex:0,arrayIndex:0})),(t=>{for(;t.keyIndex{n.d(t,{El:()=>d,NS:()=>a,SX:()=>c,pO:()=>o,r4:()=>u,v:()=>h,wf:()=>l});var r,i=n(32479),s=n(91719);function a(e){return new s.Vj(e,(e=>(0,i.mD)(e)?e.content:[]),{includeRoot:!0})}function o(e,t){for(;e.container;)if((e=e.container)===t)return!0;return!1}function l(e){return{start:{character:e.startColumn-1,line:e.startLine-1},end:{character:e.endColumn,line:e.endLine-1}}}function c(e){if(!e)return;const{offset:t,end:n,range:r}=e;return{range:r,offset:t,end:n,length:n-t}}function u(e,t){const n=function(e,t){if(e.end.linet.end.line||e.start.line===t.end.line&&e.start.character>=t.end.character)return r.After;const n=e.start.line>t.start.line||e.start.line===t.start.line&&e.start.character>=t.start.character,i=e.end.liner.After}!function(e){e[e.Before=0]="Before",e[e.After=1]="After",e[e.OverlapFront=2]="OverlapFront",e[e.OverlapBack=3]="OverlapBack",e[e.Inside=4]="Inside",e[e.Outside=5]="Outside"}(r||(r={}));const d=/^[\w\p{L}]$/u;function h(e,t){if(e){const n=function(e,t=!0){for(;e.container;){const n=e.container;let r=n.content.indexOf(e);for(;r>0;){r--;const e=n.content[r];if(t||!e.hidden)return e}e=n}return}(e,!0);if(n&&f(n,t))return n;if((0,i.br)(e)){for(let n=e.content.findIndex((e=>!e.hidden))-1;n>=0;n--){const r=e.content[n];if(f(r,t))return r}}}}function f(e,t){return(0,i.FC)(e)&&t.includes(e.tokenType.name)}},71564:(e,t,n)=>{n.d(t,{W:()=>r,d:()=>i});class r extends Error{constructor(e,t){super(e?`${t} at ${e.range.start.line}:${e.range.start.character}`:t)}}function i(e){throw new Error("Error! The input value was not handled.")}},90418:(e,t,n)=>{n.d(t,{Bd:()=>f,P3:()=>x,PV:()=>E,Rp:()=>T,S:()=>I,SS:()=>g,U5:()=>A,Uz:()=>k,Xq:()=>R,YV:()=>c,eb:()=>h,g4:()=>d,qO:()=>p});var r=n(71564),i=n(32151),s=n(32479),a=n(49683),o=n(76373),l=n(82806);function c(e,t){const n=new Set,r=function(e){return e.rules.find((e=>i.s7(e)&&e.entry))}(e);if(!r)return new Set(e.rules);const s=[r].concat(function(e){return e.rules.filter((e=>i.rE(e)&&e.hidden))}(e));for(const i of s)u(i,n,t);const a=new Set;for(const o of e.rules)(n.has(o.name)||i.rE(o)&&o.hidden)&&a.add(o);return a}function u(e,t,n){t.add(e.name),(0,a.Uo)(e).forEach((e=>{if(i.$g(e)||n&&i.lF(e)){const r=e.rule.ref;r&&!t.has(r.name)&&u(r,t,n)}}))}function d(e){if(e.terminal)return e.terminal;if(e.type.ref){const t=A(e.type.ref);return null==t?void 0:t.terminal}}function h(e){return e.hidden&&!(0,l.Yv)(I(e))}function f(e,t){return e&&t?m(e,t,e.astNode,!0):[]}function p(e,t,n){if(!e||!t)return;const r=m(e,t,e.astNode,!0);return 0!==r.length?r[n=void 0!==n?Math.max(0,Math.min(n,r.length-1)):0]:void 0}function m(e,t,n,r){if(!r){const n=(0,a.XG)(e.grammarSource,i.wh);if(n&&n.feature===t)return[e]}return(0,s.mD)(e)&&e.astNode===n?e.content.flatMap((e=>m(e,t,n,!1))):[]}function g(e,t,n){if(!e)return;const r=y(e,t,null==e?void 0:e.astNode);return 0!==r.length?r[n=void 0!==n?Math.max(0,Math.min(n,r.length-1)):0]:void 0}function y(e,t,n){if(e.astNode!==n)return[];if(i.wb(e.grammarSource)&&e.grammarSource.value===t)return[e];const r=(0,o.NS)(e).iterator();let s;const a=[];do{if(s=r.next(),!s.done){const e=s.value;e.astNode===n?i.wb(e.grammarSource)&&e.grammarSource.value===t&&a.push(e):r.prune()}}while(!s.done);return a}function T(e){var t;const n=e.astNode;for(;n===(null===(t=e.container)||void 0===t?void 0:t.astNode);){const t=(0,a.XG)(e.grammarSource,i.wh);if(t)return t;e=e.container}}function A(e){let t=e;return i.SP(t)&&(i.ve(t.$container)?t=t.$container.$container:i.s7(t.$container)?t=t.$container:(0,r.d)(t.$container)),v(e,t,new Map)}function v(e,t,n){var r;function s(t,r){let s;return(0,a.XG)(t,i.wh)||(s=v(r,r,n)),n.set(e,s),s}if(n.has(e))return n.get(e);n.set(e,void 0);for(const o of(0,a.Uo)(t)){if(i.wh(o)&&"name"===o.feature.toLowerCase())return n.set(e,o),o;if(i.$g(o)&&i.s7(o.rule.ref))return s(o,o.rule.ref);if(i.D8(o)&&(null===(r=o.typeRef)||void 0===r?void 0:r.ref))return s(o,o.typeRef.ref)}}function R(e){return $(e,new Set)}function $(e,t){if(t.has(e))return!0;t.add(e);for(const n of(0,a.Uo)(e))if(i.$g(n)){if(!n.rule.ref)return!1;if(i.s7(n.rule.ref)&&!$(n.rule.ref,t))return!1}else{if(i.wh(n))return!1;if(i.ve(n))return!1}return Boolean(e.definition)}function E(e){if(e.inferredType)return e.inferredType.name;if(e.dataType)return e.dataType;if(e.returnType){const t=e.returnType.ref;if(t){if(i.s7(t))return t.name;if(i.S2(t)||i.Xj(t))return t.name}}}function k(e){var t;if(i.s7(e))return R(e)?e.name:null!==(t=E(e))&&void 0!==t?t:e.name;if(i.S2(e)||i.Xj(e)||i.fG(e))return e.name;if(i.ve(e)){const t=function(e){var t;if(e.inferredType)return e.inferredType.name;if(null===(t=e.type)||void 0===t?void 0:t.ref)return k(e.type.ref);return}(e);if(t)return t}else if(i.SP(e))return e.name;throw new Error("Cannot get name of Unknown Type")}function x(e){var t,n,r;return i.rE(e)?null!==(n=null===(t=e.type)||void 0===t?void 0:t.name)&&void 0!==n?n:"string":null!==(r=E(e))&&void 0!==r?r:e.name}function I(e){const t={s:!1,i:!1,u:!1},n=N(e.definition,t),r=Object.entries(t).filter((([,e])=>e)).map((([e])=>e)).join("");return new RegExp(n,r)}const S=/[\s\S]/.source;function N(e,t){if(i.Fy(e))return w((a=e).elements.map((e=>N(e))).join("|"),{cardinality:a.cardinality,lookahead:a.lookahead});if(i.O4(e))return w((s=e).elements.map((e=>N(e))).join(""),{cardinality:s.cardinality,lookahead:s.lookahead});if(i.Bg(e))return function(e){if(e.right)return w(`[${C(e.left)}-${C(e.right)}]`,{cardinality:e.cardinality,lookahead:e.lookahead,wrap:!1});return w(C(e.left),{cardinality:e.cardinality,lookahead:e.lookahead,wrap:!1})}(e);if(i.lF(e)){const t=e.rule.ref;if(!t)throw new Error("Missing rule reference.");return w(N(t.definition),{cardinality:e.cardinality,lookahead:e.lookahead})}if(i.GL(e))return w(`(?!${N((r=e).terminal)})${S}*?`,{cardinality:r.cardinality,lookahead:r.lookahead});if(i.Mz(e))return w(`${S}*?${N((n=e).terminal)}`,{cardinality:n.cardinality,lookahead:n.lookahead});if(i.vd(e)){const n=e.regex.lastIndexOf("/"),r=e.regex.substring(1,n),i=e.regex.substring(n+1);return t&&(t.i=i.includes("i"),t.s=i.includes("s"),t.u=i.includes("u")),w(r,{cardinality:e.cardinality,lookahead:e.lookahead,wrap:!1})}if(i.z2(e))return w(S,{cardinality:e.cardinality,lookahead:e.lookahead});throw new Error(`Invalid terminal element: ${null==e?void 0:e.$type}`);var n,r,s,a}function C(e){return(0,l.Nt)(e.value)}function w(e,t){var n;return(!1!==t.wrap||t.lookahead)&&(e=`(${null!==(n=t.lookahead)&&void 0!==n?n:""}${e})`),t.cardinality?`${e}${t.cardinality}`:e}},82806:(e,t,n)=>{n.d(t,{Ao:()=>h,Nt:()=>d,PC:()=>f,TH:()=>i,Yv:()=>u,lU:()=>l});var r=n(85186);const i=/\r?\n/gm,s=new r.H;class a extends r.z{constructor(){super(...arguments),this.isStarting=!0,this.endRegexpStack=[],this.multiline=!1}get endRegex(){return this.endRegexpStack.join("")}reset(e){this.multiline=!1,this.regex=e,this.startRegexp="",this.isStarting=!0,this.endRegexpStack=[]}visitGroup(e){e.quantifier&&(this.isStarting=!1,this.endRegexpStack=[])}visitCharacter(e){const t=String.fromCharCode(e.value);if(this.multiline||"\n"!==t||(this.multiline=!0),e.quantifier)this.isStarting=!1,this.endRegexpStack=[];else{const e=d(t);this.endRegexpStack.push(e),this.isStarting&&(this.startRegexp+=e)}}visitSet(e){if(!this.multiline){const t=this.regex.substring(e.loc.begin,e.loc.end),n=new RegExp(t);this.multiline=Boolean("\n".match(n))}if(e.quantifier)this.isStarting=!1,this.endRegexpStack=[];else{const t=this.regex.substring(e.loc.begin,e.loc.end);this.endRegexpStack.push(t),this.isStarting&&(this.startRegexp+=t)}}visitChildren(e){if("Group"===e.type){if(e.quantifier)return}super.visitChildren(e)}}const o=new a;function l(e){try{return"string"==typeof e&&(e=new RegExp(e)),e=e.toString(),o.reset(e),o.visit(s.pattern(e)),o.multiline}catch(t){return!1}}const c="\f\n\r\t\v \xa0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u2028\u2029\u202f\u205f\u3000\ufeff".split("");function u(e){const t="string"==typeof e?new RegExp(e):e;return c.some((e=>t.test(e)))}function d(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function h(e){return Array.prototype.map.call(e,(e=>/\w/.test(e)?`[${e.toLowerCase()}${e.toUpperCase()}]`:d(e))).join("")}function f(e,t){const n=function(e){"string"==typeof e&&(e=new RegExp(e));const t=e,n=e.source;let r=0;function i(){let e,s="";function a(e){s+=n.substr(r,e),r+=e}function o(e){s+="(?:"+n.substr(r,e)+"|$)",r+=e}for(;r",r)-r+1);break;default:o(2)}break;case"[":e=/\[(?:\\.|.)*?\]/g,e.lastIndex=r,e=e.exec(n)||[],o(e[0].length);break;case"|":case"^":case"$":case"*":case"+":case"?":a(1);break;case"{":e=/\{\d+,?\d*\}/g,e.lastIndex=r,e=e.exec(n),e?a(e[0].length):o(1);break;case"(":if("?"===n[r+1])switch(n[r+2]){case":":s+="(?:",r+=3,s+=i()+"|$)";break;case"=":s+="(?=",r+=3,s+=i()+")";break;case"!":e=r,r+=3,i(),s+=n.substr(e,r-e);break;case"<":switch(n[r+3]){case"=":case"!":e=r,r+=4,i(),s+=n.substr(e,r-e);break;default:a(n.indexOf(">",r)-r+1),s+=i()+"|$)"}}else a(1),s+=i()+"|$)";break;case")":return++r,s;default:o(1)}return s}return new RegExp(i(),e.flags)}(e),r=t.match(n);return!!r&&r[0].length>0}},91719:(e,t,n)=>{n.d(t,{B5:()=>a,Rf:()=>o,Td:()=>l,Vj:()=>c,fq:()=>r,iD:()=>u});class r{constructor(e,t){this.startFn=e,this.nextFn=t}iterator(){const e={state:this.startFn(),next:()=>this.nextFn(e.state),[Symbol.iterator]:()=>e};return e}[Symbol.iterator](){return this.iterator()}isEmpty(){const e=this.iterator();return Boolean(e.next().done)}count(){const e=this.iterator();let t=0,n=e.next();for(;!n.done;)t++,n=e.next();return t}toArray(){const e=[],t=this.iterator();let n;do{n=t.next(),void 0!==n.value&&e.push(n.value)}while(!n.done);return e}toSet(){return new Set(this)}toMap(e,t){const n=this.map((n=>[e?e(n):n,t?t(n):n]));return new Map(n)}toString(){return this.join()}concat(e){return new r((()=>({first:this.startFn(),firstDone:!1,iterator:e[Symbol.iterator]()})),(e=>{let t;if(!e.firstDone){do{if(t=this.nextFn(e.first),!t.done)return t}while(!t.done);e.firstDone=!0}do{if(t=e.iterator.next(),!t.done)return t}while(!t.done);return o}))}join(e=","){const t=this.iterator();let n,r="",s=!1;do{n=t.next(),n.done||(s&&(r+=e),r+=i(n.value)),s=!0}while(!n.done);return r}indexOf(e,t=0){const n=this.iterator();let r=0,i=n.next();for(;!i.done;){if(r>=t&&i.value===e)return r;i=n.next(),r++}return-1}every(e){const t=this.iterator();let n=t.next();for(;!n.done;){if(!e(n.value))return!1;n=t.next()}return!0}some(e){const t=this.iterator();let n=t.next();for(;!n.done;){if(e(n.value))return!0;n=t.next()}return!1}forEach(e){const t=this.iterator();let n=0,r=t.next();for(;!r.done;)e(r.value,n),r=t.next(),n++}map(e){return new r(this.startFn,(t=>{const{done:n,value:r}=this.nextFn(t);return n?o:{done:!1,value:e(r)}}))}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 o}))}nonNullable(){return this.filter((e=>null!=e))}reduce(e,t){const n=this.iterator();let r=t,i=n.next();for(;!i.done;)r=void 0===r?i.value:e(r,i.value),i=n.next();return r}reduceRight(e,t){return this.recursiveReduce(this.iterator(),e,t)}recursiveReduce(e,t,n){const r=e.next();if(r.done)return n;const i=this.recursiveReduce(e,t,n);return void 0===i?r.value:t(i,r.value)}find(e){const t=this.iterator();let n=t.next();for(;!n.done;){if(e(n.value))return n.value;n=t.next()}}findIndex(e){const t=this.iterator();let n=0,r=t.next();for(;!r.done;){if(e(r.value))return n;r=t.next(),n++}return-1}includes(e){const t=this.iterator();let 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){const e=t.iterator.next();if(!e.done)return e;t.iterator=void 0}const{done:n,value:r}=this.nextFn(t.this);if(!n){const n=e(r);if(!s(n))return{done:!1,value:n};t.iterator=n[Symbol.iterator]()}}while(t.iterator);return o}))}flat(e){if(void 0===e&&(e=1),e<=0)return this;const t=e>1?this.flat(e-1):this;return new r((()=>({this:t.startFn()})),(e=>{do{if(e.iterator){const t=e.iterator.next();if(!t.done)return t;e.iterator=void 0}const{done:n,value:r}=t.nextFn(e.this);if(!n){if(!s(r))return{done:!1,value:r};e.iterator=r[Symbol.iterator]()}}while(e.iterator);return o}))}head(){const e=this.iterator().next();if(!e.done)return e.value}tail(e=1){return new r((()=>{const t=this.startFn();for(let n=0;n({size:0,state:this.startFn()})),(t=>(t.size++,t.size>e?o:this.nextFn(t.state))))}distinct(e){return new r((()=>({set:new Set,internalState:this.startFn()})),(t=>{let n;do{if(n=this.nextFn(t.internalState),!n.done){const r=e?e(n.value):n.value;if(!t.set.has(r))return t.set.add(r),n}}while(!n.done);return o}))}exclude(e,t){const n=new Set;for(const r of e){const e=t?t(r):r;n.add(e)}return this.filter((e=>{const r=t?t(e):e;return!n.has(r)}))}}function i(e){return"string"==typeof e?e:void 0===e?"undefined":"function"==typeof e.toString?e.toString():Object.prototype.toString.call(e)}function s(e){return!!e&&"function"==typeof e[Symbol.iterator]}const a=new r((()=>{}),(()=>o)),o=Object.freeze({done:!0,value:void 0});function l(...e){if(1===e.length){const t=e[0];if(t instanceof r)return t;if(s(t))return new r((()=>t[Symbol.iterator]()),(e=>e.next()));if("number"==typeof t.length)return new r((()=>({index:0})),(e=>e.index1?new r((()=>({collIndex:0,arrIndex:0})),(t=>{do{if(t.iterator){const e=t.iterator.next();if(!e.done)return e;t.iterator=void 0}if(t.array){if(t.arrIndex({iterators:(null==n?void 0:n.includeRoot)?[[e][Symbol.iterator]()]:[t(e)[Symbol.iterator]()],pruned:!1})),(e=>{for(e.pruned&&(e.iterators.pop(),e.pruned=!1);e.iterators.length>0;){const n=e.iterators[e.iterators.length-1].next();if(!n.done)return e.iterators.push(t(n.value)[Symbol.iterator]()),n;e.iterators.pop()}return o}))}iterator(){const e={state:this.startFn(),next:()=>this.nextFn(e.state),prune:()=>{e.state.pruned=!0},[Symbol.iterator]:()=>e};return e}}var u;!function(e){e.sum=function(e){return e.reduce(((e,t)=>e+t),0)},e.product=function(e){return e.reduce(((e,t)=>e*t),0)},e.min=function(e){return e.reduce(((e,t)=>Math.min(e,t)))},e.max=function(e){return e.reduce(((e,t)=>Math.max(e,t)))}}(u||(u={}))},51917:(e,t,n)=>{n.d(t,{D:()=>i});class r{readFile(){throw new Error("No file system is available.")}async readDirectory(){return[]}}const i={fileSystemProvider:()=>new r}},72559:(e,t,n)=>{n.d(t,{A:()=>i});var r=n(61882);const i=function(e,t,n){for(var i=-1,s=e.length;++i{n.d(t,{A:()=>r});const r=function(e,t){return e{n.d(t,{A:()=>s});var r=n(6240),i=n(38446);const s=function(e,t){var n=-1,s=(0,i.A)(e)?Array(e.length):[];return(0,r.A)(e,(function(e,r,i){s[++n]=t(e,r,i)})),s}},99354:(e,t,n)=>{n.d(t,{A:()=>u});var r=n(66318),i=n(52851),s=n(7819),a=n(25353),o=n(23149),l=n(30901);const c=function(e,t,n,r){if(!(0,o.A)(e))return e;for(var c=-1,u=(t=(0,s.A)(t,e)).length,d=u-1,h=e;null!=h&&++c{n.d(t,{A:()=>i});var r=n(68675);const i=function(e){return(0,r.A)(e,4)}},23068:(e,t,n)=>{n.d(t,{A:()=>c});var r=n(24326),i=n(66984),s=n(6832),a=n(55615),o=Object.prototype,l=o.hasOwnProperty;const c=(0,r.A)((function(e,t){e=Object(e);var n=-1,r=t.length,c=r>2?t[2]:void 0;for(c&&(0,s.A)(t[0],t[1],c)&&(r=1);++n{n.d(t,{A:()=>u});var r=n(23958),i=n(38446),s=n(27422);const a=function(e){return function(t,n,a){var o=Object(t);if(!(0,i.A)(t)){var l=(0,r.A)(n,3);t=(0,s.A)(t),n=function(e){return l(o[e],e,o)}}var c=e(t,n,a);return c>-1?o[l?t[c]:c]:void 0}};var o=n(25707),l=n(18593),c=Math.max;const u=a((function(e,t,n){var i=null==e?0:e.length;if(!i)return-1;var s=null==n?0:(0,l.A)(n);return s<0&&(s=c(i+s,0)),(0,o.A)(e,(0,r.A)(t,3),s)}))},18139:(e,t,n)=>{n.d(t,{A:()=>s});var r=n(13588),i=n(74722);const s=function(e,t){return(0,r.A)((0,i.A)(e,t),1)}},34098:(e,t,n)=>{n.d(t,{A:()=>i});var r=n(13588);const i=function(e){return(null==e?0:e.length)?(0,r.A)(e,1):[]}},48585:(e,t,n)=>{n.d(t,{A:()=>a});var r=Object.prototype.hasOwnProperty;const i=function(e,t){return null!=e&&r.call(e,t)};var s=n(85054);const a=function(e,t){return null!=e&&(0,s.A)(e,t,i)}},9703:(e,t,n)=>{n.d(t,{A:()=>a});var r=n(88496),i=n(92049),s=n(53098);const a=function(e){return"string"==typeof e||!(0,i.A)(e)&&(0,s.A)(e)&&"[object String]"==(0,r.A)(e)}},26666:(e,t,n)=>{n.d(t,{A:()=>r});const r=function(e){var t=null==e?0:e.length;return t?e[t-1]:void 0}},74722:(e,t,n)=>{n.d(t,{A:()=>o});var r=n(45572),i=n(23958),s=n(52568),a=n(92049);const o=function(e,t){return((0,a.A)(e)?r.A:s.A)(e,(0,i.A)(t,3))}},86452:(e,t,n)=>{n.d(t,{A:()=>a});var r=n(72559),i=n(36224),s=n(29008);const a=function(e){return e&&e.length?(0,r.A)(e,s.A,i.A):void 0}},74342:(e,t,n)=>{n.d(t,{A:()=>m});var r=/\s/;const i=function(e){for(var t=e.length;t--&&r.test(e.charAt(t)););return t};var s=/^\s+/;const a=function(e){return e?e.slice(0,i(e)+1).replace(s,""):e};var o=n(23149),l=n(61882),c=/^[-+]0x[0-9a-f]+$/i,u=/^0b[01]+$/i,d=/^0o[0-7]+$/i,h=parseInt;const f=function(e){if("number"==typeof e)return e;if((0,l.A)(e))return NaN;if((0,o.A)(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=(0,o.A)(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=a(e);var n=u.test(e);return n||d.test(e)?h(e.slice(2),n?2:8):c.test(e)?NaN:+e};var p=1/0;const m=function(e){return e?(e=f(e))===p||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0}},18593:(e,t,n)=>{n.d(t,{A:()=>i});var r=n(74342);const i=function(e){var t=(0,r.A)(e),n=t%1;return t==t?n?t-n:t:0}},37608:(e,t,n)=>{var r;n.d(t,{A:()=>s,r:()=>i}),(()=>{var e={470:e=>{function t(e){if("string"!=typeof e)throw new TypeError("Path must be a string. Received "+JSON.stringify(e))}function n(e,t){for(var n,r="",i=0,s=-1,a=0,o=0;o<=e.length;++o){if(o2){var l=r.lastIndexOf("/");if(l!==r.length-1){-1===l?(r="",i=0):i=(r=r.slice(0,l)).length-1-r.lastIndexOf("/"),s=o,a=0;continue}}else if(2===r.length||1===r.length){r="",i=0,s=o,a=0;continue}t&&(r.length>0?r+="/..":r="..",i=2)}else r.length>0?r+="/"+e.slice(s+1,o):r=e.slice(s+1,o),i=o-s-1;s=o,a=0}else 46===n&&-1!==a?++a:a=-1}return r}var r={resolve:function(){for(var e,r="",i=!1,s=arguments.length-1;s>=-1&&!i;s--){var a;s>=0?a=arguments[s]:(void 0===e&&(e=process.cwd()),a=e),t(a),0!==a.length&&(r=a+"/"+r,i=47===a.charCodeAt(0))}return r=n(r,!i),i?r.length>0?"/"+r:"/":r.length>0?r:"."},normalize:function(e){if(t(e),0===e.length)return".";var r=47===e.charCodeAt(0),i=47===e.charCodeAt(e.length-1);return 0!==(e=n(e,!r)).length||r||(e="."),e.length>0&&i&&(e+="/"),r?"/"+e:e},isAbsolute:function(e){return t(e),e.length>0&&47===e.charCodeAt(0)},join:function(){if(0===arguments.length)return".";for(var e,n=0;n0&&(void 0===e?e=i:e+="/"+i)}return void 0===e?".":r.normalize(e)},relative:function(e,n){if(t(e),t(n),e===n)return"";if((e=r.resolve(e))===(n=r.resolve(n)))return"";for(var i=1;ic){if(47===n.charCodeAt(o+d))return n.slice(o+d+1);if(0===d)return n.slice(o+d)}else a>c&&(47===e.charCodeAt(i+d)?u=d:0===d&&(u=0));break}var h=e.charCodeAt(i+d);if(h!==n.charCodeAt(o+d))break;47===h&&(u=d)}var f="";for(d=i+u+1;d<=s;++d)d!==s&&47!==e.charCodeAt(d)||(0===f.length?f+="..":f+="/..");return f.length>0?f+n.slice(o+u):(o+=u,47===n.charCodeAt(o)&&++o,n.slice(o))},_makeLong:function(e){return e},dirname:function(e){if(t(e),0===e.length)return".";for(var n=e.charCodeAt(0),r=47===n,i=-1,s=!0,a=e.length-1;a>=1;--a)if(47===(n=e.charCodeAt(a))){if(!s){i=a;break}}else s=!1;return-1===i?r?"/":".":r&&1===i?"//":e.slice(0,i)},basename:function(e,n){if(void 0!==n&&"string"!=typeof n)throw new TypeError('"ext" argument must be a string');t(e);var r,i=0,s=-1,a=!0;if(void 0!==n&&n.length>0&&n.length<=e.length){if(n.length===e.length&&n===e)return"";var o=n.length-1,l=-1;for(r=e.length-1;r>=0;--r){var c=e.charCodeAt(r);if(47===c){if(!a){i=r+1;break}}else-1===l&&(a=!1,l=r+1),o>=0&&(c===n.charCodeAt(o)?-1==--o&&(s=r):(o=-1,s=l))}return i===s?s=l:-1===s&&(s=e.length),e.slice(i,s)}for(r=e.length-1;r>=0;--r)if(47===e.charCodeAt(r)){if(!a){i=r+1;break}}else-1===s&&(a=!1,s=r+1);return-1===s?"":e.slice(i,s)},extname:function(e){t(e);for(var n=-1,r=0,i=-1,s=!0,a=0,o=e.length-1;o>=0;--o){var l=e.charCodeAt(o);if(47!==l)-1===i&&(s=!1,i=o+1),46===l?-1===n?n=o:1!==a&&(a=1):-1!==n&&(a=-1);else if(!s){r=o+1;break}}return-1===n||-1===i||0===a||1===a&&n===i-1&&n===r+1?"":e.slice(n,i)},format:function(e){if(null===e||"object"!=typeof e)throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof e);return function(e,t){var n=t.dir||t.root,r=t.base||(t.name||"")+(t.ext||"");return n?n===t.root?n+r:n+"/"+r:r}(0,e)},parse:function(e){t(e);var n={root:"",dir:"",base:"",ext:"",name:""};if(0===e.length)return n;var r,i=e.charCodeAt(0),s=47===i;s?(n.root="/",r=1):r=0;for(var a=-1,o=0,l=-1,c=!0,u=e.length-1,d=0;u>=r;--u)if(47!==(i=e.charCodeAt(u)))-1===l&&(c=!1,l=u+1),46===i?-1===a?a=u:1!==d&&(d=1):-1!==a&&(d=-1);else if(!c){o=u+1;break}return-1===a||-1===l||0===d||1===d&&a===l-1&&a===o+1?-1!==l&&(n.base=n.name=0===o&&s?e.slice(1,l):e.slice(o,l)):(0===o&&s?(n.name=e.slice(1,a),n.base=e.slice(1,l)):(n.name=e.slice(o,a),n.base=e.slice(o,l)),n.ext=e.slice(a,l)),o>0?n.dir=e.slice(0,o-1):s&&(n.dir="/"),n},sep:"/",delimiter:":",win32:null,posix:null};r.posix=r,e.exports=r}},t={};function n(r){var i=t[r];if(void 0!==i)return i.exports;var s=t[r]={exports:{}};return e[r](s,s.exports,n),s.exports}n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};(()=>{let e;if(n.r(i),n.d(i,{URI:()=>u,Utils:()=>k}),"object"==typeof process)e="win32"===process.platform;else if("object"==typeof navigator){let t=navigator.userAgent;e=t.indexOf("Windows")>=0}const t=/^\w[\w\d+.-]*$/,r=/^\//,s=/^\/\//;function a(e,n){if(!e.scheme&&n)throw new Error(`[UriError]: Scheme is missing: {scheme: "", authority: "${e.authority}", path: "${e.path}", query: "${e.query}", fragment: "${e.fragment}"}`);if(e.scheme&&!t.test(e.scheme))throw new Error("[UriError]: Scheme contains illegal characters.");if(e.path)if(e.authority){if(!r.test(e.path))throw new Error('[UriError]: If a URI contains an authority component, then the path component must either be empty or begin with a slash ("/") character')}else if(s.test(e.path))throw new Error('[UriError]: If a URI does not contain an authority component, then the path cannot begin with two slash characters ("//")')}const o="",l="/",c=/^(([^:/?#]+?):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/;class u{static isUri(e){return e instanceof u||!!e&&"string"==typeof e.authority&&"string"==typeof e.fragment&&"string"==typeof e.path&&"string"==typeof e.query&&"string"==typeof e.scheme&&"string"==typeof e.fsPath&&"function"==typeof e.with&&"function"==typeof e.toString}scheme;authority;path;query;fragment;constructor(e,t,n,r,i,s=!1){"object"==typeof e?(this.scheme=e.scheme||o,this.authority=e.authority||o,this.path=e.path||o,this.query=e.query||o,this.fragment=e.fragment||o):(this.scheme=function(e,t){return e||t?e:"file"}(e,s),this.authority=t||o,this.path=function(e,t){switch(e){case"https":case"http":case"file":t?t[0]!==l&&(t=l+t):t=l}return t}(this.scheme,n||o),this.query=r||o,this.fragment=i||o,a(this,s))}get fsPath(){return g(this,!1)}with(e){if(!e)return this;let{scheme:t,authority:n,path:r,query:i,fragment:s}=e;return void 0===t?t=this.scheme:null===t&&(t=o),void 0===n?n=this.authority:null===n&&(n=o),void 0===r?r=this.path:null===r&&(r=o),void 0===i?i=this.query:null===i&&(i=o),void 0===s?s=this.fragment:null===s&&(s=o),t===this.scheme&&n===this.authority&&r===this.path&&i===this.query&&s===this.fragment?this:new h(t,n,r,i,s)}static parse(e,t=!1){const n=c.exec(e);return n?new h(n[2]||o,v(n[4]||o),v(n[5]||o),v(n[7]||o),v(n[9]||o),t):new h(o,o,o,o,o)}static file(t){let n=o;if(e&&(t=t.replace(/\\/g,l)),t[0]===l&&t[1]===l){const e=t.indexOf(l,2);-1===e?(n=t.substring(2),t=l):(n=t.substring(2,e),t=t.substring(e)||l)}return new h("file",n,t,o,o)}static from(e){const t=new h(e.scheme,e.authority,e.path,e.query,e.fragment);return a(t,!0),t}toString(e=!1){return y(this,e)}toJSON(){return this}static revive(e){if(e){if(e instanceof u)return e;{const t=new h(e);return t._formatted=e.external,t._fsPath=e._sep===d?e.fsPath:null,t}}return e}}const d=e?1:void 0;class h extends u{_formatted=null;_fsPath=null;get fsPath(){return this._fsPath||(this._fsPath=g(this,!1)),this._fsPath}toString(e=!1){return e?y(this,!0):(this._formatted||(this._formatted=y(this,!1)),this._formatted)}toJSON(){const e={$mid:1};return this._fsPath&&(e.fsPath=this._fsPath,e._sep=d),this._formatted&&(e.external=this._formatted),this.path&&(e.path=this.path),this.scheme&&(e.scheme=this.scheme),this.authority&&(e.authority=this.authority),this.query&&(e.query=this.query),this.fragment&&(e.fragment=this.fragment),e}}const f={58:"%3A",47:"%2F",63:"%3F",35:"%23",91:"%5B",93:"%5D",64:"%40",33:"%21",36:"%24",38:"%26",39:"%27",40:"%28",41:"%29",42:"%2A",43:"%2B",44:"%2C",59:"%3B",61:"%3D",32:"%20"};function p(e,t,n){let r,i=-1;for(let s=0;s=97&&a<=122||a>=65&&a<=90||a>=48&&a<=57||45===a||46===a||95===a||126===a||t&&47===a||n&&91===a||n&&93===a||n&&58===a)-1!==i&&(r+=encodeURIComponent(e.substring(i,s)),i=-1),void 0!==r&&(r+=e.charAt(s));else{void 0===r&&(r=e.substr(0,s));const t=f[a];void 0!==t?(-1!==i&&(r+=encodeURIComponent(e.substring(i,s)),i=-1),r+=t):-1===i&&(i=s)}}return-1!==i&&(r+=encodeURIComponent(e.substring(i))),void 0!==r?r:e}function m(e){let t;for(let n=0;n1&&"file"===t.scheme?`//${t.authority}${t.path}`:47===t.path.charCodeAt(0)&&(t.path.charCodeAt(1)>=65&&t.path.charCodeAt(1)<=90||t.path.charCodeAt(1)>=97&&t.path.charCodeAt(1)<=122)&&58===t.path.charCodeAt(2)?n?t.path.substr(1):t.path[1].toLowerCase()+t.path.substr(2):t.path,e&&(r=r.replace(/\//g,"\\")),r}function y(e,t){const n=t?m:p;let r="",{scheme:i,authority:s,path:a,query:o,fragment:c}=e;if(i&&(r+=i,r+=":"),(s||"file"===i)&&(r+=l,r+=l),s){let e=s.indexOf("@");if(-1!==e){const t=s.substr(0,e);s=s.substr(e+1),e=t.lastIndexOf(":"),-1===e?r+=n(t,!1,!1):(r+=n(t.substr(0,e),!1,!1),r+=":",r+=n(t.substr(e+1),!1,!0)),r+="@"}s=s.toLowerCase(),e=s.lastIndexOf(":"),-1===e?r+=n(s,!1,!0):(r+=n(s.substr(0,e),!1,!0),r+=s.substr(e))}if(a){if(a.length>=3&&47===a.charCodeAt(0)&&58===a.charCodeAt(2)){const e=a.charCodeAt(1);e>=65&&e<=90&&(a=`/${String.fromCharCode(e+32)}:${a.substr(3)}`)}else if(a.length>=2&&58===a.charCodeAt(1)){const e=a.charCodeAt(0);e>=65&&e<=90&&(a=`${String.fromCharCode(e+32)}:${a.substr(2)}`)}r+=n(a,!0,!1)}return o&&(r+="?",r+=n(o,!1,!1)),c&&(r+="#",r+=t?c:p(c,!1,!1)),r}function T(e){try{return decodeURIComponent(e)}catch{return e.length>3?e.substr(0,3)+T(e.substr(3)):e}}const A=/(%[0-9A-Za-z][0-9A-Za-z])+/g;function v(e){return e.match(A)?e.replace(A,(e=>T(e))):e}var R=n(470);const $=R.posix||R,E="/";var k;!function(e){e.joinPath=function(e,...t){return e.with({path:$.join(e.path,...t)})},e.resolvePath=function(e,...t){let n=e.path,r=!1;n[0]!==E&&(n=E+n,r=!0);let i=$.resolve(n,...t);return r&&i[0]===E&&!e.authority&&(i=i.substring(1)),e.with({path:i})},e.dirname=function(e){if(0===e.path.length||e.path===E)return e;let t=$.dirname(e.path);return 1===t.length&&46===t.charCodeAt(0)&&(t=""),e.with({path:t})},e.basename=function(e){return $.basename(e.path)},e.extname=function(e){return $.extname(e.path)}}(k||(k={}))})(),r=i})();const{URI:i,Utils:s}=r}}]); \ No newline at end of file diff --git a/assets/js/8756.158a8a9b.js b/assets/js/8756.158a8a9b.js new file mode 100644 index 00000000..70040677 --- /dev/null +++ b/assets/js/8756.158a8a9b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8756],{75937:(t,e,s)=>{s.d(e,{A:()=>r});var i=s(72453),n=s(74886);const r=(t,e)=>i.A.lang.round(n.A.parse(t)[e])},89625:(t,e,s)=>{s.d(e,{A:()=>r});var i=s(40797),n=s(70451),r=(0,i.K2)(((t,e)=>{let s;"sandbox"===e&&(s=(0,n.Ltv)("#i"+t));return("sandbox"===e?(0,n.Ltv)(s.nodes()[0].contentDocument.body):(0,n.Ltv)("body")).select(`[id="${t}"]`)}),"getDiagramElement")},21152:(t,e,s)=>{s.d(e,{P:()=>r});var i=s(67633),n=s(40797),r=(0,n.K2)(((t,e,s,r)=>{t.attr("class",s);const{width:o,height:l,x:h,y:u}=a(t,e);(0,i.a$)(t,l,o,r);const y=c(h,u,o,l,e);t.attr("viewBox",y),n.Rm.debug(`viewBox configured: ${y} with padding: ${e}`)}),"setupViewPortForSVG"),a=(0,n.K2)(((t,e)=>{const s=t.node()?.getBBox()||{width:0,height:0,x:0,y:0};return{width:s.width+2*e,height:s.height+2*e,x:s.x,y:s.y}}),"calculateDimensionsWithPadding"),c=(0,n.K2)(((t,e,s,i,n)=>`${t-n} ${e-n} ${s} ${i}`),"createViewBox")},8756:(t,e,s)=>{s.d(e,{diagram:()=>m});var i=s(89625),n=s(21152),r=s(10045),a=(s(5164),s(28698),s(5894),s(63245),s(32387),s(30092),s(13226)),c=s(67633),o=s(40797),l=s(70451),h=s(75937),u=s(25582),y=function(){var t=(0,o.K2)((function(t,e,s,i){for(s=s||{},i=t.length;i--;s[t[i]]=e);return s}),"o"),e=[6,8,10,22,24,26,28,33,34,35,36,37,40,43,44,50],s=[1,10],i=[1,11],n=[1,12],r=[1,13],a=[1,20],c=[1,21],l=[1,22],h=[1,23],u=[1,24],y=[1,19],d=[1,25],p=[1,26],_=[1,18],g=[1,33],b=[1,34],m=[1,35],f=[1,36],E=[1,37],k=[6,8,10,13,15,17,20,21,22,24,26,28,33,34,35,36,37,40,43,44,50,63,64,65,66,67],S=[1,42],O=[1,43],T=[1,52],A=[40,50,68,69],R=[1,63],N=[1,61],I=[1,58],C=[1,62],x=[1,64],v=[6,8,10,13,17,22,24,26,28,33,34,35,36,37,40,41,42,43,44,48,49,50,63,64,65,66,67],D=[63,64,65,66,67],$=[1,81],w=[1,80],K=[1,78],L=[1,79],M=[6,10,42,47],B=[6,10,13,41,42,47,48,49],F=[1,89],P=[1,88],Y=[1,87],G=[19,56],z=[1,98],U=[1,97],Z=[19,56,58,60],j={trace:(0,o.K2)((function(){}),"trace"),yy:{},symbols_:{error:2,start:3,ER_DIAGRAM:4,document:5,EOF:6,line:7,SPACE:8,statement:9,NEWLINE:10,entityName:11,relSpec:12,COLON:13,role:14,STYLE_SEPARATOR:15,idList:16,BLOCK_START:17,attributes:18,BLOCK_STOP:19,SQS:20,SQE:21,title:22,title_value:23,acc_title:24,acc_title_value:25,acc_descr:26,acc_descr_value:27,acc_descr_multiline_value:28,direction:29,classDefStatement:30,classStatement:31,styleStatement:32,direction_tb:33,direction_bt:34,direction_rl:35,direction_lr:36,CLASSDEF:37,stylesOpt:38,separator:39,UNICODE_TEXT:40,STYLE_TEXT:41,COMMA:42,CLASS:43,STYLE:44,style:45,styleComponent:46,SEMI:47,NUM:48,BRKT:49,ENTITY_NAME:50,attribute:51,attributeType:52,attributeName:53,attributeKeyTypeList:54,attributeComment:55,ATTRIBUTE_WORD:56,attributeKeyType:57,",":58,ATTRIBUTE_KEY:59,COMMENT:60,cardinality:61,relType:62,ZERO_OR_ONE:63,ZERO_OR_MORE:64,ONE_OR_MORE:65,ONLY_ONE:66,MD_PARENT:67,NON_IDENTIFYING:68,IDENTIFYING:69,WORD:70,$accept:0,$end:1},terminals_:{2:"error",4:"ER_DIAGRAM",6:"EOF",8:"SPACE",10:"NEWLINE",13:"COLON",15:"STYLE_SEPARATOR",17:"BLOCK_START",19:"BLOCK_STOP",20:"SQS",21:"SQE",22:"title",23:"title_value",24:"acc_title",25:"acc_title_value",26:"acc_descr",27:"acc_descr_value",28:"acc_descr_multiline_value",33:"direction_tb",34:"direction_bt",35:"direction_rl",36:"direction_lr",37:"CLASSDEF",40:"UNICODE_TEXT",41:"STYLE_TEXT",42:"COMMA",43:"CLASS",44:"STYLE",47:"SEMI",48:"NUM",49:"BRKT",50:"ENTITY_NAME",56:"ATTRIBUTE_WORD",58:",",59:"ATTRIBUTE_KEY",60:"COMMENT",63:"ZERO_OR_ONE",64:"ZERO_OR_MORE",65:"ONE_OR_MORE",66:"ONLY_ONE",67:"MD_PARENT",68:"NON_IDENTIFYING",69:"IDENTIFYING",70:"WORD"},productions_:[0,[3,3],[5,0],[5,2],[7,2],[7,1],[7,1],[7,1],[9,5],[9,9],[9,7],[9,7],[9,4],[9,6],[9,3],[9,5],[9,1],[9,3],[9,7],[9,9],[9,6],[9,8],[9,4],[9,6],[9,2],[9,2],[9,2],[9,1],[9,1],[9,1],[9,1],[9,1],[29,1],[29,1],[29,1],[29,1],[30,4],[16,1],[16,1],[16,3],[16,3],[31,3],[32,4],[38,1],[38,3],[45,1],[45,2],[39,1],[39,1],[39,1],[46,1],[46,1],[46,1],[46,1],[11,1],[11,1],[18,1],[18,2],[51,2],[51,3],[51,3],[51,4],[52,1],[53,1],[54,1],[54,3],[57,1],[55,1],[12,3],[61,1],[61,1],[61,1],[61,1],[61,1],[62,1],[62,1],[14,1],[14,1],[14,1]],performAction:(0,o.K2)((function(t,e,s,i,n,r,a){var c=r.length-1;switch(n){case 1:break;case 2:case 6:case 7:this.$=[];break;case 3:r[c-1].push(r[c]),this.$=r[c-1];break;case 4:case 5:case 55:case 78:case 62:case 63:case 66:this.$=r[c];break;case 8:i.addEntity(r[c-4]),i.addEntity(r[c-2]),i.addRelationship(r[c-4],r[c],r[c-2],r[c-3]);break;case 9:i.addEntity(r[c-8]),i.addEntity(r[c-4]),i.addRelationship(r[c-8],r[c],r[c-4],r[c-5]),i.setClass([r[c-8]],r[c-6]),i.setClass([r[c-4]],r[c-2]);break;case 10:i.addEntity(r[c-6]),i.addEntity(r[c-2]),i.addRelationship(r[c-6],r[c],r[c-2],r[c-3]),i.setClass([r[c-6]],r[c-4]);break;case 11:i.addEntity(r[c-6]),i.addEntity(r[c-4]),i.addRelationship(r[c-6],r[c],r[c-4],r[c-5]),i.setClass([r[c-4]],r[c-2]);break;case 12:i.addEntity(r[c-3]),i.addAttributes(r[c-3],r[c-1]);break;case 13:i.addEntity(r[c-5]),i.addAttributes(r[c-5],r[c-1]),i.setClass([r[c-5]],r[c-3]);break;case 14:i.addEntity(r[c-2]);break;case 15:i.addEntity(r[c-4]),i.setClass([r[c-4]],r[c-2]);break;case 16:i.addEntity(r[c]);break;case 17:i.addEntity(r[c-2]),i.setClass([r[c-2]],r[c]);break;case 18:i.addEntity(r[c-6],r[c-4]),i.addAttributes(r[c-6],r[c-1]);break;case 19:i.addEntity(r[c-8],r[c-6]),i.addAttributes(r[c-8],r[c-1]),i.setClass([r[c-8]],r[c-3]);break;case 20:i.addEntity(r[c-5],r[c-3]);break;case 21:i.addEntity(r[c-7],r[c-5]),i.setClass([r[c-7]],r[c-2]);break;case 22:i.addEntity(r[c-3],r[c-1]);break;case 23:i.addEntity(r[c-5],r[c-3]),i.setClass([r[c-5]],r[c]);break;case 24:case 25:this.$=r[c].trim(),i.setAccTitle(this.$);break;case 26:case 27:this.$=r[c].trim(),i.setAccDescription(this.$);break;case 32:i.setDirection("TB");break;case 33:i.setDirection("BT");break;case 34:i.setDirection("RL");break;case 35:i.setDirection("LR");break;case 36:this.$=r[c-3],i.addClass(r[c-2],r[c-1]);break;case 37:case 38:case 56:case 64:case 43:this.$=[r[c]];break;case 39:case 40:this.$=r[c-2].concat([r[c]]);break;case 41:this.$=r[c-2],i.setClass(r[c-1],r[c]);break;case 42:this.$=r[c-3],i.addCssStyles(r[c-2],r[c-1]);break;case 44:case 65:r[c-2].push(r[c]),this.$=r[c-2];break;case 46:this.$=r[c-1]+r[c];break;case 54:case 76:case 77:case 67:this.$=r[c].replace(/"/g,"");break;case 57:r[c].push(r[c-1]),this.$=r[c];break;case 58:this.$={type:r[c-1],name:r[c]};break;case 59:this.$={type:r[c-2],name:r[c-1],keys:r[c]};break;case 60:this.$={type:r[c-2],name:r[c-1],comment:r[c]};break;case 61:this.$={type:r[c-3],name:r[c-2],keys:r[c-1],comment:r[c]};break;case 68:this.$={cardA:r[c],relType:r[c-1],cardB:r[c-2]};break;case 69:this.$=i.Cardinality.ZERO_OR_ONE;break;case 70:this.$=i.Cardinality.ZERO_OR_MORE;break;case 71:this.$=i.Cardinality.ONE_OR_MORE;break;case 72:this.$=i.Cardinality.ONLY_ONE;break;case 73:this.$=i.Cardinality.MD_PARENT;break;case 74:this.$=i.Identification.NON_IDENTIFYING;break;case 75:this.$=i.Identification.IDENTIFYING}}),"anonymous"),table:[{3:1,4:[1,2]},{1:[3]},t(e,[2,2],{5:3}),{6:[1,4],7:5,8:[1,6],9:7,10:[1,8],11:9,22:s,24:i,26:n,28:r,29:14,30:15,31:16,32:17,33:a,34:c,35:l,36:h,37:u,40:y,43:d,44:p,50:_},t(e,[2,7],{1:[2,1]}),t(e,[2,3]),{9:27,11:9,22:s,24:i,26:n,28:r,29:14,30:15,31:16,32:17,33:a,34:c,35:l,36:h,37:u,40:y,43:d,44:p,50:_},t(e,[2,5]),t(e,[2,6]),t(e,[2,16],{12:28,61:32,15:[1,29],17:[1,30],20:[1,31],63:g,64:b,65:m,66:f,67:E}),{23:[1,38]},{25:[1,39]},{27:[1,40]},t(e,[2,27]),t(e,[2,28]),t(e,[2,29]),t(e,[2,30]),t(e,[2,31]),t(k,[2,54]),t(k,[2,55]),t(e,[2,32]),t(e,[2,33]),t(e,[2,34]),t(e,[2,35]),{16:41,40:S,41:O},{16:44,40:S,41:O},{16:45,40:S,41:O},t(e,[2,4]),{11:46,40:y,50:_},{16:47,40:S,41:O},{18:48,19:[1,49],51:50,52:51,56:T},{11:53,40:y,50:_},{62:54,68:[1,55],69:[1,56]},t(A,[2,69]),t(A,[2,70]),t(A,[2,71]),t(A,[2,72]),t(A,[2,73]),t(e,[2,24]),t(e,[2,25]),t(e,[2,26]),{13:R,38:57,41:N,42:I,45:59,46:60,48:C,49:x},t(v,[2,37]),t(v,[2,38]),{16:65,40:S,41:O,42:I},{13:R,38:66,41:N,42:I,45:59,46:60,48:C,49:x},{13:[1,67],15:[1,68]},t(e,[2,17],{61:32,12:69,17:[1,70],42:I,63:g,64:b,65:m,66:f,67:E}),{19:[1,71]},t(e,[2,14]),{18:72,19:[2,56],51:50,52:51,56:T},{53:73,56:[1,74]},{56:[2,62]},{21:[1,75]},{61:76,63:g,64:b,65:m,66:f,67:E},t(D,[2,74]),t(D,[2,75]),{6:$,10:w,39:77,42:K,47:L},{40:[1,82],41:[1,83]},t(M,[2,43],{46:84,13:R,41:N,48:C,49:x}),t(B,[2,45]),t(B,[2,50]),t(B,[2,51]),t(B,[2,52]),t(B,[2,53]),t(e,[2,41],{42:I}),{6:$,10:w,39:85,42:K,47:L},{14:86,40:F,50:P,70:Y},{16:90,40:S,41:O},{11:91,40:y,50:_},{18:92,19:[1,93],51:50,52:51,56:T},t(e,[2,12]),{19:[2,57]},t(G,[2,58],{54:94,55:95,57:96,59:z,60:U}),t([19,56,59,60],[2,63]),t(e,[2,22],{15:[1,100],17:[1,99]}),t([40,50],[2,68]),t(e,[2,36]),{13:R,41:N,45:101,46:60,48:C,49:x},t(e,[2,47]),t(e,[2,48]),t(e,[2,49]),t(v,[2,39]),t(v,[2,40]),t(B,[2,46]),t(e,[2,42]),t(e,[2,8]),t(e,[2,76]),t(e,[2,77]),t(e,[2,78]),{13:[1,102],42:I},{13:[1,104],15:[1,103]},{19:[1,105]},t(e,[2,15]),t(G,[2,59],{55:106,58:[1,107],60:U}),t(G,[2,60]),t(Z,[2,64]),t(G,[2,67]),t(Z,[2,66]),{18:108,19:[1,109],51:50,52:51,56:T},{16:110,40:S,41:O},t(M,[2,44],{46:84,13:R,41:N,48:C,49:x}),{14:111,40:F,50:P,70:Y},{16:112,40:S,41:O},{14:113,40:F,50:P,70:Y},t(e,[2,13]),t(G,[2,61]),{57:114,59:z},{19:[1,115]},t(e,[2,20]),t(e,[2,23],{17:[1,116],42:I}),t(e,[2,11]),{13:[1,117],42:I},t(e,[2,10]),t(Z,[2,65]),t(e,[2,18]),{18:118,19:[1,119],51:50,52:51,56:T},{14:120,40:F,50:P,70:Y},{19:[1,121]},t(e,[2,21]),t(e,[2,9]),t(e,[2,19])],defaultActions:{52:[2,62],72:[2,57]},parseError:(0,o.K2)((function(t,e){if(!e.recoverable){var s=new Error(t);throw s.hash=e,s}this.trace(t)}),"parseError"),parse:(0,o.K2)((function(t){var e=this,s=[0],i=[],n=[null],r=[],a=this.table,c="",l=0,h=0,u=0,y=r.slice.call(arguments,1),d=Object.create(this.lexer),p={yy:{}};for(var _ in this.yy)Object.prototype.hasOwnProperty.call(this.yy,_)&&(p.yy[_]=this.yy[_]);d.setInput(t,p.yy),p.yy.lexer=d,p.yy.parser=this,void 0===d.yylloc&&(d.yylloc={});var g=d.yylloc;r.push(g);var b=d.options&&d.options.ranges;function m(){var t;return"number"!=typeof(t=i.pop()||d.lex()||1)&&(t instanceof Array&&(t=(i=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.yy.parseError?this.parseError=p.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,o.K2)((function(t){s.length=s.length-2*t,n.length=n.length-t,r.length=r.length-t}),"popStack"),(0,o.K2)(m,"lex");for(var f,E,k,S,O,T,A,R,N,I={};;){if(k=s[s.length-1],this.defaultActions[k]?S=this.defaultActions[k]:(null==f&&(f=m()),S=a[k]&&a[k][f]),void 0===S||!S.length||!S[0]){var C="";for(T in N=[],a[k])this.terminals_[T]&&T>2&&N.push("'"+this.terminals_[T]+"'");C=d.showPosition?"Parse error on line "+(l+1)+":\n"+d.showPosition()+"\nExpecting "+N.join(", ")+", got '"+(this.terminals_[f]||f)+"'":"Parse error on line "+(l+1)+": Unexpected "+(1==f?"end of input":"'"+(this.terminals_[f]||f)+"'"),this.parseError(C,{text:d.match,token:this.terminals_[f]||f,line:d.yylineno,loc:g,expected:N})}if(S[0]instanceof Array&&S.length>1)throw new Error("Parse Error: multiple actions possible at state: "+k+", token: "+f);switch(S[0]){case 1:s.push(f),n.push(d.yytext),r.push(d.yylloc),s.push(S[1]),f=null,E?(f=E,E=null):(h=d.yyleng,c=d.yytext,l=d.yylineno,g=d.yylloc,u>0&&u--);break;case 2:if(A=this.productions_[S[1]][1],I.$=n[n.length-A],I._$={first_line:r[r.length-(A||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-(A||1)].first_column,last_column:r[r.length-1].last_column},b&&(I._$.range=[r[r.length-(A||1)].range[0],r[r.length-1].range[1]]),void 0!==(O=this.performAction.apply(I,[c,h,l,p.yy,S[1],n,r].concat(y))))return O;A&&(s=s.slice(0,-1*A*2),n=n.slice(0,-1*A),r=r.slice(0,-1*A)),s.push(this.productions_[S[1]][0]),n.push(I.$),r.push(I._$),R=a[s[s.length-2]][s[s.length-1]],s.push(R);break;case 3:return!0}}return!0}),"parse")},W=function(){return{EOF:1,parseError:(0,o.K2)((function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)}),"parseError"),setInput:(0,o.K2)((function(t,e){return this.yy=e||this.yy||{},this._input=t,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:(0,o.K2)((function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t}),"input"),unput:(0,o.K2)((function(t){var e=t.length,s=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=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),s.length-1&&(this.yylineno-=s.length-1);var n=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:s?(s.length===i.length?this.yylloc.first_column:0)+i[i.length-s.length].length-s[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[n[0],n[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this}),"unput"),more:(0,o.K2)((function(){return this._more=!0,this}),"more"),reject:(0,o.K2)((function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):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).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})}),"reject"),less:(0,o.K2)((function(t){this.unput(this.match.slice(t))}),"less"),pastInput:(0,o.K2)((function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")}),"pastInput"),upcomingInput:(0,o.K2)((function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")}),"upcomingInput"),showPosition:(0,o.K2)((function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"}),"showPosition"),test_match:(0,o.K2)((function(t,e){var s,i,n;if(this.options.backtrack_lexer&&(n={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&&(n.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,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(t[0].length),this.matched+=t[0],s=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),s)return s;if(this._backtrack){for(var r in n)this[r]=n[r];return!1}return!1}),"test_match"),next:(0,o.K2)((function(){if(this.done)return this.EOF;var t,e,s,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var n=this._currentRules(),r=0;re[0].length)){if(e=s,i=r,this.options.backtrack_lexer){if(!1!==(t=this.test_match(s,n[r])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,n[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})}),"next"),lex:(0,o.K2)((function(){var t=this.next();return t||this.lex()}),"lex"),begin:(0,o.K2)((function(t){this.conditionStack.push(t)}),"begin"),popState:(0,o.K2)((function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]}),"popState"),_currentRules:(0,o.K2)((function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules}),"_currentRules"),topState:(0,o.K2)((function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"}),"topState"),pushState:(0,o.K2)((function(t){this.begin(t)}),"pushState"),stateStackSize:(0,o.K2)((function(){return this.conditionStack.length}),"stateStackSize"),options:{"case-insensitive":!0},performAction:(0,o.K2)((function(t,e,s,i){switch(s){case 0:return this.begin("acc_title"),24;case 1:return this.popState(),"acc_title_value";case 2:return this.begin("acc_descr"),26;case 3:return this.popState(),"acc_descr_value";case 4:this.begin("acc_descr_multiline");break;case 5:this.popState();break;case 6:return"acc_descr_multiline_value";case 7:return 33;case 8:return 34;case 9:return 35;case 10:return 36;case 11:return 10;case 12:case 23:case 28:case 35:break;case 13:return 8;case 14:return 50;case 15:return 70;case 16:return 4;case 17:return this.begin("block"),17;case 18:case 19:case 38:return 49;case 20:case 37:return 42;case 21:return 15;case 22:case 36:return 13;case 24:return 59;case 25:case 26:return 56;case 27:return 60;case 29:return this.popState(),19;case 30:case 73:return e.yytext[0];case 31:return 20;case 32:return 21;case 33:return this.begin("style"),44;case 34:return this.popState(),10;case 39:return this.begin("style"),37;case 40:return 43;case 41:case 45:case 46:case 59:return 63;case 42:case 43:case 44:case 52:case 54:case 61:return 65;case 47:case 48:case 49:case 50:case 51:case 53:case 60:return 64;case 55:case 56:case 57:case 58:return 66;case 62:return 67;case 63:case 66:case 67:case 68:return 68;case 64:case 65:return 69;case 69:return 41;case 70:return 47;case 71:return 40;case 72:return 48;case 74:return 6}}),"anonymous"),rules:[/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?:[\s]+)/i,/^(?:"[^"%\r\n\v\b\\]+")/i,/^(?:"[^"]*")/i,/^(?:erDiagram\b)/i,/^(?:\{)/i,/^(?:#)/i,/^(?:#)/i,/^(?:,)/i,/^(?::::)/i,/^(?::)/i,/^(?:\s+)/i,/^(?:\b((?:PK)|(?:FK)|(?:UK))\b)/i,/^(?:([^\s]*)[~].*[~]([^\s]*))/i,/^(?:([\*A-Za-z_\u00C0-\uFFFF][A-Za-z0-9\-\_\[\]\(\)\u00C0-\uFFFF\*]*))/i,/^(?:"[^"]*")/i,/^(?:[\n]+)/i,/^(?:\})/i,/^(?:.)/i,/^(?:\[)/i,/^(?:\])/i,/^(?:style\b)/i,/^(?:[\n]+)/i,/^(?:\s+)/i,/^(?::)/i,/^(?:,)/i,/^(?:#)/i,/^(?:classDef\b)/i,/^(?:class\b)/i,/^(?:one or zero\b)/i,/^(?:one or more\b)/i,/^(?:one or many\b)/i,/^(?:1\+)/i,/^(?:\|o\b)/i,/^(?:zero or one\b)/i,/^(?:zero or more\b)/i,/^(?:zero or many\b)/i,/^(?:0\+)/i,/^(?:\}o\b)/i,/^(?:many\(0\))/i,/^(?:many\(1\))/i,/^(?:many\b)/i,/^(?:\}\|)/i,/^(?:one\b)/i,/^(?:only one\b)/i,/^(?:1\b)/i,/^(?:\|\|)/i,/^(?:o\|)/i,/^(?:o\{)/i,/^(?:\|\{)/i,/^(?:\s*u\b)/i,/^(?:\.\.)/i,/^(?:--)/i,/^(?:to\b)/i,/^(?:optionally to\b)/i,/^(?:\.-)/i,/^(?:-\.)/i,/^(?:([^\x00-\x7F]|\w|-|\*)+)/i,/^(?:;)/i,/^(?:([^\x00-\x7F]|\w|-|\*)+)/i,/^(?:[0-9])/i,/^(?:.)/i,/^(?:$)/i],conditions:{style:{rules:[34,35,36,37,38,69,70],inclusive:!1},acc_descr_multiline:{rules:[5,6],inclusive:!1},acc_descr:{rules:[3],inclusive:!1},acc_title:{rules:[1],inclusive:!1},block:{rules:[23,24,25,26,27,28,29,30],inclusive:!1},INITIAL:{rules:[0,2,4,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,31,32,33,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,71,72,73,74],inclusive:!0}}}}();function X(){this.yy={}}return j.lexer=W,(0,o.K2)(X,"Parser"),X.prototype=j,j.Parser=X,new X}();y.parser=y;var d=y,p=class{constructor(){this.entities=new Map,this.relationships=[],this.classes=new Map,this.direction="TB",this.Cardinality={ZERO_OR_ONE:"ZERO_OR_ONE",ZERO_OR_MORE:"ZERO_OR_MORE",ONE_OR_MORE:"ONE_OR_MORE",ONLY_ONE:"ONLY_ONE",MD_PARENT:"MD_PARENT"},this.Identification={NON_IDENTIFYING:"NON_IDENTIFYING",IDENTIFYING:"IDENTIFYING"},this.setAccTitle=c.SV,this.getAccTitle=c.iN,this.setAccDescription=c.EI,this.getAccDescription=c.m7,this.setDiagramTitle=c.ke,this.getDiagramTitle=c.ab,this.getConfig=(0,o.K2)((()=>(0,c.D7)().er),"getConfig"),this.clear(),this.addEntity=this.addEntity.bind(this),this.addAttributes=this.addAttributes.bind(this),this.addRelationship=this.addRelationship.bind(this),this.setDirection=this.setDirection.bind(this),this.addCssStyles=this.addCssStyles.bind(this),this.addClass=this.addClass.bind(this),this.setClass=this.setClass.bind(this),this.setAccTitle=this.setAccTitle.bind(this),this.setAccDescription=this.setAccDescription.bind(this)}static{(0,o.K2)(this,"ErDB")}addEntity(t,e=""){return this.entities.has(t)?!this.entities.get(t)?.alias&&e&&(this.entities.get(t).alias=e,o.Rm.info(`Add alias '${e}' to entity '${t}'`)):(this.entities.set(t,{id:`entity-${t}-${this.entities.size}`,label:t,attributes:[],alias:e,shape:"erBox",look:(0,c.D7)().look??"default",cssClasses:"default",cssStyles:[]}),o.Rm.info("Added new entity :",t)),this.entities.get(t)}getEntity(t){return this.entities.get(t)}getEntities(){return this.entities}getClasses(){return this.classes}addAttributes(t,e){const s=this.addEntity(t);let i;for(i=e.length-1;i>=0;i--)e[i].keys||(e[i].keys=[]),e[i].comment||(e[i].comment=""),s.attributes.push(e[i]),o.Rm.debug("Added attribute ",e[i].name)}addRelationship(t,e,s,i){const n=this.entities.get(t),r=this.entities.get(s);if(!n||!r)return;const a={entityA:n.id,roleA:e,entityB:r.id,relSpec:i};this.relationships.push(a),o.Rm.debug("Added new relationship :",a)}getRelationships(){return this.relationships}getDirection(){return this.direction}setDirection(t){this.direction=t}getCompiledStyles(t){let e=[];for(const s of t){const t=this.classes.get(s);t?.styles&&(e=[...e,...t.styles??[]].map((t=>t.trim()))),t?.textStyles&&(e=[...e,...t.textStyles??[]].map((t=>t.trim())))}return e}addCssStyles(t,e){for(const s of t){const t=this.entities.get(s);if(!e||!t)return;for(const s of e)t.cssStyles.push(s)}}addClass(t,e){t.forEach((t=>{let s=this.classes.get(t);void 0===s&&(s={id:t,styles:[],textStyles:[]},this.classes.set(t,s)),e&&e.forEach((function(t){if(/color/.exec(t)){const e=t.replace("fill","bgFill");s.textStyles.push(e)}s.styles.push(t)}))}))}setClass(t,e){for(const s of t){const t=this.entities.get(s);if(t)for(const s of e)t.cssClasses+=" "+s}}clear(){this.entities=new Map,this.classes=new Map,this.relationships=[],(0,c.IU)()}getData(){const t=[],e=[],s=(0,c.D7)();for(const n of this.entities.keys()){const e=this.entities.get(n);e&&(e.cssCompiledStyles=this.getCompiledStyles(e.cssClasses.split(" ")),t.push(e))}let i=0;for(const n of this.relationships){const t={id:(0,a.rY)(n.entityA,n.entityB,{prefix:"id",counter:i++}),type:"normal",curve:"basis",start:n.entityA,end:n.entityB,label:n.roleA,labelpos:"c",thickness:"normal",classes:"relationshipLine",arrowTypeStart:n.relSpec.cardB.toLowerCase(),arrowTypeEnd:n.relSpec.cardA.toLowerCase(),pattern:"IDENTIFYING"==n.relSpec.relType?"solid":"dashed",look:s.look};e.push(t)}return{nodes:t,edges:e,other:{},config:s,direction:"TB"}}},_={};(0,o.VA)(_,{draw:()=>g});var g=(0,o.K2)((async function(t,e,s,h){o.Rm.info("REF0:"),o.Rm.info("Drawing er diagram (unified)",e);const{securityLevel:u,er:y,layout:d}=(0,c.D7)(),p=h.db.getData(),_=(0,i.A)(e,u);p.type=h.type,p.layoutAlgorithm=(0,r.q7)(d),p.config.flowchart.nodeSpacing=y?.nodeSpacing||140,p.config.flowchart.rankSpacing=y?.rankSpacing||80,p.direction=h.db.getDirection(),p.markers=["only_one","zero_or_one","one_or_more","zero_or_more"],p.diagramId=e,await(0,r.XX)(p,_),"elk"===p.layoutAlgorithm&&_.select(".edges").lower();const g=_.selectAll('[id*="-background"]');Array.from(g).length>0&&g.each((function(){const t=(0,l.Ltv)(this),e=t.attr("id").replace("-background",""),s=_.select(`#${CSS.escape(e)}`);if(!s.empty()){const e=s.attr("transform");t.attr("transform",e)}}));a._K.insertTitle(_,"erDiagramTitleText",y?.titleTopMargin??25,h.db.getDiagramTitle()),(0,n.P)(_,8,"erDiagram",y?.useMaxWidth??!0)}),"draw"),b=(0,o.K2)(((t,e)=>{const s=h.A,i=s(t,"r"),n=s(t,"g"),r=s(t,"b");return u.A(i,n,r,e)}),"fade"),m={parser:d,get db(){return new p},renderer:_,styles:(0,o.K2)((t=>`\n .entityBox {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n }\n\n .relationshipLabelBox {\n fill: ${t.tertiaryColor};\n opacity: 0.7;\n background-color: ${t.tertiaryColor};\n rect {\n opacity: 0.5;\n }\n }\n\n .labelBkg {\n background-color: ${b(t.tertiaryColor,.5)};\n }\n\n .edgeLabel .label {\n fill: ${t.nodeBorder};\n font-size: 14px;\n }\n\n .label {\n font-family: ${t.fontFamily};\n color: ${t.nodeTextColor||t.textColor};\n }\n\n .edge-pattern-dashed {\n stroke-dasharray: 8,8;\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon\n {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n stroke-width: 1px;\n }\n\n .relationshipLine {\n stroke: ${t.lineColor};\n stroke-width: 1;\n fill: none;\n }\n\n .marker {\n fill: none !important;\n stroke: ${t.lineColor} !important;\n stroke-width: 1;\n }\n`),"getStyles")}}}]); \ No newline at end of file diff --git a/assets/js/87e43bec.598e3323.js b/assets/js/87e43bec.598e3323.js new file mode 100644 index 00000000..d85df605 --- /dev/null +++ b/assets/js/87e43bec.598e3323.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6632],{97775:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>a,contentTitle:()=>r,default:()=>c,frontMatter:()=>l,metadata:()=>s,toc:()=>d});var s=i(70521),t=i(74848),o=i(28453);const l={slug:"release-3.7",title:"Little Things Release (May-2024, V-3.7) is now Live",description:"Phoenix Code 3.7 focuses on live preview improvements, CSS class and style code hints, and small UX refinements.",authors:["arun","charly","phoenixBot"],tags:["Live Preview","Live Code Hints","Windows","Linux","Mac","Release"]},r=void 0,a={authorsImageUrls:[void 0,void 0,void 0]},d=[{value:"Live CSS Class and Style Code Hints",id:"live-css-class-and-style-code-hints",level:4},{value:"CSS/HTML Code Hints improvements",id:"csshtml-code-hints-improvements",level:4},{value:"Move to trash/bin when deleting files",id:"move-to-trashbin-when-deleting-files",level:4},{value:"UX Improvements",id:"ux-improvements",level:4},{value:"A Request from the Phoenix Team:",id:"a-request-from-the-phoenix-team",level:2}];function h(e){const n={a:"a",code:"code",h2:"h2",h4:"h4",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,o.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(n.p,{children:["May release(3.7) of Phoenix Code is now available for download at\n",(0,t.jsx)(n.a,{href:"https://phcode.io",children:"phcode.io"}),"."]}),"\n",(0,t.jsx)(n.p,{children:"This month's release is all about Live previews and the little things that make\nyour work just a bit easier. We've also addressed numerous feature requests and\nUX bug reports, along with improving app UX and stability."}),"\n",(0,t.jsx)(n.h4,{id:"live-css-class-and-style-code-hints",children:"Live CSS Class and Style Code Hints"}),"\n",(0,t.jsx)(n.p,{children:"Interactively edit CSS styles and classes using the up/down arrow keys in code\nhints. This is available in CSS files and inline CSS styles/class names in HTML\nfiles. This provides an instant boost to your HTML and CSS workflows."}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{src:"https://github.com/phcode-dev/phoenix/assets/5336369/502c8751-5269-4c34-9178-5ad08f8ad837",alt:"classLiveHints"})}),"\n",(0,t.jsx)(n.h4,{id:"csshtml-code-hints-improvements",children:"CSS/HTML Code Hints improvements"}),"\n",(0,t.jsxs)(n.p,{children:["Improved relevance of suggestions in CSS and HTML code hints. For E.g.,\ntyping ",(0,t.jsx)(n.code,{children:"b"})," in a CSS file will prioritize ",(0,t.jsx)(n.code,{children:"background-color"}),". Typing ",(0,t.jsx)(n.code,{children:"between"}),"\nwill bring up relevant CSS property-value combinations like ",(0,t.jsx)(n.code,{children:"align-content: space-between;"}),"\n(see image below), so you don't have to remember which value is under which CSS property."]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{src:"https://github.com/phcode-dev/phoenix/assets/5336369/2a9f8809-de19-43cf-bdcd-d1a5def2e080",alt:"image"})}),"\n",(0,t.jsx)(n.h4,{id:"move-to-trashbin-when-deleting-files",children:"Move to trash/bin when deleting files"}),"\n",(0,t.jsx)(n.p,{children:"Deleting files from the files panel in desktop apps will move the file/folder to\ntrash/recycle bin instead of permanently deleting it."}),"\n",(0,t.jsx)(n.h4,{id:"ux-improvements",children:"UX Improvements"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["Deleting the ",(0,t.jsx)(n.code,{children:"Phoenix Code"})," folder in user ",(0,t.jsx)(n.code,{children:"Documents"})," directory is now supported."]}),"\n",(0,t.jsx)(n.li,{children:"Increased stability and app startup experience."}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"Copy Error Message"})," button is now available in the problems panel."]}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{src:"https://github.com/phcode-dev/phoenix/assets/5336369/95c59e71-5ce8-4697-963e-0fa567062ab0",alt:"image"})}),"\n",(0,t.jsx)(n.h2,{id:"a-request-from-the-phoenix-team",children:"A Request from the Phoenix Team:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Share your feedback:"})," ",(0,t.jsx)(n.a,{href:"https://github.com/orgs/phcode-dev/discussions",children:"https://github.com/orgs/phcode-dev/discussions"})]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.strong,{children:"Spread the word"})," about Phoenix to friends and colleagues."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsxs)(n.a,{href:"https://github.com/sponsors/phcode-dev",children:[(0,t.jsx)(n.strong,{children:"Consider supporting us"})," on GitHub Sponsors"]}),".\nEvery contribution helps us to keep improving Phoenix Code."]}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:"With gratitude,"}),"\n",(0,t.jsx)(n.p,{children:"The Phoenix Team"})]})}function c(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(h,{...e})}):h(e)}},28453:(e,n,i)=>{i.d(n,{R:()=>l,x:()=>r});var s=i(96540);const t={},o=s.createContext(t);function l(e){const n=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:l(e.components),s.createElement(o.Provider,{value:n},e.children)}},70521:e=>{e.exports=JSON.parse('{"permalink":"/blog/release-3.7","editUrl":"https://github.com/phcode-dev/docs/blob/main/blog/2024-05-26-Release-3.7/index.md","source":"@site/blog/2024-05-26-Release-3.7/index.md","title":"Little Things Release (May-2024, V-3.7) is now Live","description":"Phoenix Code 3.7 focuses on live preview improvements, CSS class and style code hints, and small UX refinements.","date":"2024-05-26T00:00:00.000Z","tags":[{"inline":true,"label":"Live Preview","permalink":"/blog/tags/live-preview"},{"inline":true,"label":"Live Code Hints","permalink":"/blog/tags/live-code-hints"},{"inline":true,"label":"Windows","permalink":"/blog/tags/windows"},{"inline":true,"label":"Linux","permalink":"/blog/tags/linux"},{"inline":true,"label":"Mac","permalink":"/blog/tags/mac"},{"inline":true,"label":"Release","permalink":"/blog/tags/release"}],"readingTime":1.54,"hasTruncateMarker":false,"authors":[{"name":"Arun Bose","title":"Co-Founder, Phoenix Code","url":"https://github.com/abose","imageURL":"https://github.com/abose.png","key":"arun","page":null},{"name":"Charly P Abraham","title":"Co-Founder, Phoenix Code","url":"https://github.com/charlypa","imageURL":"https://github.com/charlypa.png","key":"charly","page":null},{"name":"Phoenix Code Bot","title":"Our little elf who keeps the whole place together","url":"https://github.com/phoenixide","imageURL":"https://github.com/phoenixide.png","key":"phoenixBot","page":null}],"frontMatter":{"slug":"release-3.7","title":"Little Things Release (May-2024, V-3.7) is now Live","description":"Phoenix Code 3.7 focuses on live preview improvements, CSS class and style code hints, and small UX refinements.","authors":["arun","charly","phoenixBot"],"tags":["Live Preview","Live Code Hints","Windows","Linux","Mac","Release"]},"unlisted":false,"prevItem":{"title":"Critical Update + HTML Helpers Release (June-2024, V-3.8) is now Live","permalink":"/blog/release-3.8"},"nextItem":{"title":"April-2024 Release (V-3.6) is now Live","permalink":"/blog/release-3.6"}}')}}]); \ No newline at end of file diff --git a/assets/js/8913.84710f16.js b/assets/js/8913.84710f16.js new file mode 100644 index 00000000..f058b6f8 --- /dev/null +++ b/assets/js/8913.84710f16.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8913],{58913:(s,c,e)=>{e.r(c)}}]); \ No newline at end of file diff --git a/assets/js/8a663aaa.e54a5267.js b/assets/js/8a663aaa.e54a5267.js new file mode 100644 index 00000000..be3113e0 --- /dev/null +++ b/assets/js/8a663aaa.e54a5267.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3320],{94113:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>a,contentTitle:()=>l,default:()=>p,frontMatter:()=>c,metadata:()=>r,toc:()=>d});const r=JSON.parse('{"id":"Getting Started/quick-start-project","title":"Quick Start Project","description":"This section provides an overview of how to create and manage projects using the Start Project Dialog in Phoenix Code.","source":"@site/docs/01-Getting Started/02-quick-start-project.md","sourceDirName":"01-Getting Started","slug":"/quick-start-project","permalink":"/docs/quick-start-project","draft":false,"unlisted":false,"editUrl":"https://github.com/phcode-dev/docs/blob/main/docs/01-Getting Started/02-quick-start-project.md","tags":[],"version":"current","sidebarPosition":2,"frontMatter":{"title":"Quick Start Project","slug":"/quick-start-project"},"sidebar":"tutorialSidebar","previous":{"title":"Installation Guide","permalink":"/docs/intro"},"next":{"title":"Live Preview","permalink":"/docs/Features/Live Preview"}}');var i=o(74848),n=o(28453),s=(o(96540),o(56399));const c={title:"Quick Start Project",slug:"/quick-start-project"},l=void 0,a={},d=[{value:"Start Project Dialog",id:"start-project-dialog",level:2},{value:"Default Project",id:"default-project",level:2},{value:"Open Folder",id:"open-folder",level:2},{value:"Create a HTML Project",id:"create-a-html-project",level:2},{value:"Create a project from Github",id:"create-a-project-from-github",level:2},{value:"Recent Projects",id:"recent-projects",level:2},{value:"View More Option",id:"view-more-option",level:2}];function h(e){const t={blockquote:"blockquote",code:"code",h2:"h2",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",...(0,n.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.p,{children:"This section provides an overview of how to create and manage projects using the Start Project Dialog in Phoenix Code."}),"\n",(0,i.jsx)(t.h2,{id:"start-project-dialog",children:"Start Project Dialog"}),"\n",(0,i.jsxs)(t.p,{children:["When you open the Phoenix Code desktop app or browser app, you are greeted with the ",(0,i.jsx)(t.code,{children:"Start Project Dialog"})," box. This serves as a quick access hub, allowing you to create new projects, resume recent ones, import from GitHub and many more."]}),"\n",(0,i.jsx)(t.p,{children:(0,i.jsx)(t.img,{alt:"Start Project Dialog Image",src:o(82567).A+"",title:"Start Project Dialog",width:"957",height:"814"})}),"\n",(0,i.jsxs)(t.blockquote,{children:["\n",(0,i.jsx)(t.p,{children:"You can reopen the Start Project Dialog box anytime by clicking here."}),"\n"]}),"\n",(0,i.jsx)(t.p,{children:(0,i.jsx)(t.img,{alt:"Reopen Start Project Dialog Image",src:o(60561).A+"",title:"Reopen Start Project Dialog image by clicking on the folder icon",width:"628",height:"437"})}),"\n",(0,i.jsx)(t.p,{children:"Additionally, if you prefer that the Start Project Dialog doesn't appear every time you open Phoenix Code, follow these steps:"}),"\n",(0,i.jsxs)(t.ol,{children:["\n",(0,i.jsxs)(t.li,{children:["Click the ",(0,i.jsx)(t.code,{children:"folder icon"})," in the top left corner to open the Start Project Dialog, or alternatively you can restart Phoenix Code to have it appear automatically."]}),"\n",(0,i.jsxs)(t.li,{children:["In the bottom right corner of the dialog, click the ",(0,i.jsx)(t.code,{children:"settings icon"}),"."]}),"\n",(0,i.jsxs)(t.li,{children:["Toggle off the ",(0,i.jsx)(t.strong,{children:(0,i.jsx)(t.code,{children:"Show This Dialog on Startup"})})," option."]}),"\n"]}),"\n",(0,i.jsx)(s.A,{src:"https://docs-images.phcode.dev/videos/quick-start-project/turn-off-start-dialog.mp4"}),"\n",(0,i.jsx)(t.h2,{id:"default-project",children:"Default Project"}),"\n",(0,i.jsx)(t.p,{children:"The Start Project Dialog includes an option for creating a Default Project. When selected, a project will be generated with some files to provide a simple starting point for testing and using the Phoenix Code editor."}),"\n",(0,i.jsx)(s.A,{src:"https://docs-images.phcode.dev/videos/quick-start-project/default-project.mp4"}),"\n",(0,i.jsx)(t.h2,{id:"open-folder",children:"Open Folder"}),"\n",(0,i.jsx)(t.p,{children:"You can open a folder from your desktop in Phoenix Code by following these steps:"}),"\n",(0,i.jsxs)(t.ol,{children:["\n",(0,i.jsxs)(t.li,{children:["Click the ",(0,i.jsx)(t.strong,{children:(0,i.jsx)(t.code,{children:"Open Folder"})})," button in the Start Project Dialog."]}),"\n",(0,i.jsx)(t.li,{children:"Navigate to and select your desired project folder."}),"\n",(0,i.jsx)(t.li,{children:"Once selected, Phoenix Code will load all the files, allowing you to start working immediately."}),"\n"]}),"\n",(0,i.jsxs)(t.blockquote,{children:["\n",(0,i.jsxs)(t.p,{children:["The ",(0,i.jsx)(t.strong,{children:"Open Folder"})," feature is not supported in Firefox browser due to local folder access restrictions. Please use Chrome, Edge, or Opera for working with local folders."]}),"\n"]}),"\n",(0,i.jsx)(t.p,{children:(0,i.jsx)(t.img,{alt:"Open Folder Image",src:o(83713).A+"",title:"Click on Open Folder to work with local folders",width:"944",height:"815"})}),"\n",(0,i.jsx)(t.h2,{id:"create-a-html-project",children:"Create a HTML Project"}),"\n",(0,i.jsx)(t.p,{children:"You can create a new HTML project that includes essential files by following these steps:"}),"\n",(0,i.jsxs)(t.ol,{children:["\n",(0,i.jsxs)(t.li,{children:["Open the ",(0,i.jsx)(t.code,{children:"Start Project Dialog"})," box."]}),"\n",(0,i.jsxs)(t.li,{children:["Click the ",(0,i.jsx)(t.strong,{children:(0,i.jsx)(t.code,{children:"HTML5"})})," button. This will open a new page for folder selection."]}),"\n",(0,i.jsxs)(t.li,{children:["Provide a name to the project and choose your desired folder and click ",(0,i.jsx)(t.strong,{children:(0,i.jsx)(t.code,{children:"Create Project"})}),"."]}),"\n"]}),"\n",(0,i.jsx)(t.p,{children:"Once completed, a basic project structure will be generated in the selected folder."}),"\n",(0,i.jsx)(s.A,{src:"https://docs-images.phcode.dev/videos/quick-start-project/html-project.mp4"}),"\n",(0,i.jsx)(t.h2,{id:"create-a-project-from-github",children:"Create a project from Github"}),"\n",(0,i.jsxs)(t.blockquote,{children:["\n",(0,i.jsx)(t.p,{children:"This feature is only available in the browser app currently. Coming soon to desktop apps."}),"\n"]}),"\n",(0,i.jsx)(t.p,{children:"You can create a project from GitHub and easily import it to your local machine. Follow these steps:"}),"\n",(0,i.jsxs)(t.ol,{children:["\n",(0,i.jsxs)(t.li,{children:["Open the ",(0,i.jsx)(t.code,{children:"Start Project Dialog"})," box."]}),"\n",(0,i.jsxs)(t.li,{children:["Click on the ",(0,i.jsx)(t.strong,{children:(0,i.jsx)(t.code,{children:"GitHub Project"})})," button."]}),"\n",(0,i.jsx)(t.li,{children:"Enter the URL of the GitHub repository you want to work on."}),"\n",(0,i.jsx)(t.li,{children:"Specify the folder location where you want to copy the repository files."}),"\n",(0,i.jsxs)(t.li,{children:["Click ",(0,i.jsx)(t.strong,{children:(0,i.jsx)(t.code,{children:"Create Project"})}),"."]}),"\n"]}),"\n",(0,i.jsx)(t.p,{children:"After the project is created, you\u2019ll have all the necessary files on your local machine, ready for development."}),"\n",(0,i.jsx)(s.A,{src:"https://docs-images.phcode.dev/videos/quick-start-project/github-project.mp4"}),"\n",(0,i.jsx)(t.h2,{id:"recent-projects",children:"Recent Projects"}),"\n",(0,i.jsxs)(t.p,{children:["In the Start Project Dialog, the ",(0,i.jsx)(t.strong,{children:(0,i.jsx)(t.code,{children:"Recent Projects"})})," section displays a list of all the projects you've recently worked on."]}),"\n",(0,i.jsxs)(t.blockquote,{children:["\n",(0,i.jsxs)(t.p,{children:["To remove a project from the Recent Projects list, click the ",(0,i.jsx)(t.strong,{children:"cross"})," button next to the project name."]}),"\n"]}),"\n",(0,i.jsx)(t.p,{children:(0,i.jsx)(t.img,{alt:"Recent Projects Image",src:o(32172).A+"",title:"Recent Projects displays the list of projects you've recently worked on",width:"950",height:"808"})}),"\n",(0,i.jsx)(t.p,{children:"If no recent projects are available, a YouTube video explaining the Start Project dialog options will be displayed instead."}),"\n",(0,i.jsx)(t.p,{children:(0,i.jsx)(t.img,{alt:"No Recent Projects Image",src:o(82567).A+"",title:"If no Recent Projects are available, link to a youtube vide will be displayed",width:"957",height:"814"})}),"\n",(0,i.jsx)(t.h2,{id:"view-more-option",children:"View More Option"}),"\n",(0,i.jsxs)(t.p,{children:["In the Start Project Dialog, the ",(0,i.jsx)(t.strong,{children:(0,i.jsx)(t.code,{children:"View More"})})," button provides access to a selection of pre-made HTML page templates, such as a home page, blog page, and HTML dashboard."]}),"\n",(0,i.jsx)(t.p,{children:"To use these templates:"}),"\n",(0,i.jsxs)(t.ol,{children:["\n",(0,i.jsxs)(t.li,{children:["Click the ",(0,i.jsx)(t.strong,{children:(0,i.jsx)(t.code,{children:"View More"})})," button."]}),"\n",(0,i.jsx)(t.li,{children:"A new page will appear, allowing you to select the folder where you want to create the project."}),"\n",(0,i.jsxs)(t.li,{children:["Click ",(0,i.jsx)(t.strong,{children:(0,i.jsx)(t.code,{children:"Create Project"})})," to generate the chosen template."]}),"\n"]}),"\n",(0,i.jsx)(s.A,{src:"https://docs-images.phcode.dev/videos/quick-start-project/view-more-option.mp4"})]})}function p(e={}){const{wrapper:t}={...(0,n.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(h,{...e})}):h(e)}},56399:(e,t,o)=>{o.d(t,{A:()=>n});var r=o(96540),i=o(74848);const n=({src:e,winLinuxTitle:t,macTitle:o})=>{const[n,s]=(0,r.useState)("");(0,r.useEffect)((()=>{navigator.platform.toLowerCase().includes("mac")?s(o):s(t)}),[t,o]);return(0,i.jsxs)("div",{style:{maxHeight:"68vh",width:"100%",display:"flex",justifyContent:"center",alignItems:"center",flexDirection:"column"},children:[(0,i.jsxs)("video",{style:{height:"90%",width:"100%"},controls:!0,autoPlay:!0,muted:!0,loop:!0,children:[(0,i.jsx)("source",{src:e,type:"video/mp4"}),"Your browser does not support the video tag."]}),(0,i.jsx)("div",{style:{width:"100%",textAlign:"center",fontSize:"1em",marginTop:"10px"},children:n})]})}},83713:(e,t,o)=>{o.d(t,{A:()=>r});const r=o.p+"assets/images/open-folder-1e8feedd8865ec8bec14d3989fe0eceb.png"},32172:(e,t,o)=>{o.d(t,{A:()=>r});const r=o.p+"assets/images/recent-projects-b5fe1561288247533c92ef8847c086ff.png"},60561:(e,t,o)=>{o.d(t,{A:()=>r});const r=o.p+"assets/images/reopen-start-project-dialog-34f189a313925385538f545d50b35287.png"},82567:(e,t,o)=>{o.d(t,{A:()=>r});const r=o.p+"assets/images/start-project-dialog-462f0136960138e7e86cba28aa176598.png"},28453:(e,t,o)=>{o.d(t,{R:()=>s,x:()=>c});var r=o(96540);const i={},n=r.createContext(i);function s(e){const t=r.useContext(n);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:s(e.components),r.createElement(n.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/8afe5ee4.df8167d5.js b/assets/js/8afe5ee4.df8167d5.js new file mode 100644 index 00000000..2ce485db --- /dev/null +++ b/assets/js/8afe5ee4.df8167d5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9436],{70278:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>d,default:()=>o,frontMatter:()=>l,metadata:()=>s,toc:()=>a});const s=JSON.parse('{"id":"API-Reference/utils/EventDispatcher","title":"EventDispatcher","description":"Import :","source":"@site/api/API-Reference/utils/EventDispatcher.md","sourceDirName":"API-Reference/utils","slug":"/API-Reference/utils/EventDispatcher","permalink":"/api/API-Reference/utils/EventDispatcher","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"DropdownEventHandler","permalink":"/api/API-Reference/utils/DropdownEventHandler"},"next":{"title":"EventManager","permalink":"/api/API-Reference/utils/EventManager"}}');var i=t(74848),r=t(28453);const l={},d=void 0,c={},a=[{value:"Import :",id:"import-",level:3},{value:"utils/EventDispatcher",id:"utilseventdispatcher",level:2},{value:"Usage",id:"usage",level:2},{value:"Importing from an extension",id:"importing-from-an-extension",level:3},{value:"Using the global object",id:"using-the-global-object",level:3},{value:"Sample Usage within extension",id:"sample-usage-within-extension",level:3},{value:"utils/EventDispatcher.splitNs(eventStr) \u21d2 Object",id:"utilseventdispatchersplitnseventstr--object",level:3},{value:"utils/EventDispatcher.setLeakThresholdForEvent(eventName, threshold) : function",id:"utilseventdispatchersetleakthresholdforeventeventname-threshold--function",level:3},{value:"utils/EventDispatcher.on(events, fn) : function",id:"utilseventdispatcheronevents-fn--function",level:3},{value:"utils/EventDispatcher.off(events, fn) : function",id:"utilseventdispatcheroffevents-fn--function",level:3},{value:"utils/EventDispatcher.one(events, fn) : function",id:"utilseventdispatcheroneevents-fn--function",level:3},{value:"utils/EventDispatcher.trigger(eventName) : function",id:"utilseventdispatchertriggereventname--function",level:3},{value:"utils/EventDispatcher.makeEventDispatcher(obj) : function",id:"utilseventdispatchermakeeventdispatcherobj--function",level:3},{value:"utils/EventDispatcher.triggerWithArray(dispatcher, eventName, argsArray) : function",id:"utilseventdispatchertriggerwitharraydispatcher-eventname-argsarray--function",level:3},{value:"utils/EventDispatcher.on_duringInit(futureDispatcher, events, fn) : function",id:"utilseventdispatcheron_duringinitfuturedispatcher-events-fn--function",level:3},{value:"utils/EventDispatcher.markDeprecated(obj, eventName, [insteadStr]) : function",id:"utilseventdispatchermarkdeprecatedobj-eventname-insteadstr--function",level:3}];function h(e){const n={a:"a",br:"br",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h3,{id:"import-",children:"Import :"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-js",children:'const EventDispatcher = brackets.getModule("utils/EventDispatcher")\n'})}),"\n",(0,i.jsx)("a",{name:"module_utils/EventDispatcher"}),"\n",(0,i.jsx)(n.h2,{id:"utilseventdispatcher",children:"utils/EventDispatcher"}),"\n",(0,i.jsx)(n.p,{children:"Implements a jQuery-like event dispatch pattern for non-DOM objects (works in web workers and phoenix node as well):"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Listeners are attached via on()/one() & detached via off()"}),"\n",(0,i.jsx)(n.li,{children:"Listeners can use namespaces for easy removal"}),"\n",(0,i.jsx)(n.li,{children:"Listeners can attach to multiple events at once via a space-separated list"}),"\n",(0,i.jsx)(n.li,{children:"Events are fired via trigger()"}),"\n",(0,i.jsxs)(n.li,{children:["The same listener can be attached twice, and will be called twice; but off() will detach all\nduplicate copies at once ('duplicate' means '===' equality - see ",(0,i.jsx)(n.a,{href:"http://jsfiddle.net/bf4p29g5/1/",children:"http://jsfiddle.net/bf4p29g5/1/"}),")"]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"But it has some important differences from jQuery's non-DOM event mechanism:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"More robust to listeners that throw exceptions (other listeners will still be called, and\ntrigger() will still return control to its caller)."}),"\n",(0,i.jsx)(n.li,{children:"Events can be marked deprecated, causing on() to issue warnings"}),"\n",(0,i.jsx)(n.li,{children:"Easier to debug, since the dispatch code is much simpler"}),"\n",(0,i.jsx)(n.li,{children:"Faster, for the same reason"}),"\n",(0,i.jsx)(n.li,{children:"Uses less memory, since $(nonDOMObj).on() leaks memory in jQuery"}),"\n",(0,i.jsxs)(n.li,{children:["API is simplified:","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Event handlers do not have 'this' set to the event dispatcher object"}),"\n",(0,i.jsx)(n.li,{children:"Event object passed to handlers only has 'type' and 'target' fields"}),"\n",(0,i.jsx)(n.li,{children:"trigger() uses a simpler argument-list signature (like Promise APIs), rather than requiring\nan Array arg and ignoring additional args"}),"\n",(0,i.jsx)(n.li,{children:"trigger() does not support namespaces"}),"\n",(0,i.jsx)(n.li,{children:"For simplicity, on() does not accept a map of multiple events -> multiple handlers, nor a\nmissing arg standing in for a bare 'return false' handler."}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"For now, Brackets uses a jQuery patch to ensure $(obj).on() and obj.on() (etc.) are identical\nfor any obj that has the EventDispatcher pattern. In the future, this may be deprecated."}),"\n",(0,i.jsx)(n.p,{children:"To add EventDispatcher methods to any object, call EventDispatcher.makeEventDispatcher(obj)."}),"\n",(0,i.jsx)(n.h2,{id:"usage",children:"Usage"}),"\n",(0,i.jsx)(n.h3,{id:"importing-from-an-extension",children:"Importing from an extension"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Example"})}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-js",children:'const EventDispatcher = brackets.getModule("utils/EventDispatcher");\n'})}),"\n",(0,i.jsx)(n.h3,{id:"using-the-global-object",children:"Using the global object"}),"\n",(0,i.jsxs)(n.p,{children:["The EventDispatcher Object is available within the global context, be it phoenix or phoenix core web workers or node.\n",(0,i.jsx)(n.strong,{children:"Example"})]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-js",children:"window.EventDispatcher.makeEventDispatcher(exports); // within phoenix require module\nself.EventDispatcher.makeEventDispatcher(object); // within web worker\nglobal.EventDispatcher.makeEventDispatcher(exports); // within node module that has an export\n"})}),"\n",(0,i.jsxs)(n.p,{children:["If you wish to import event dispatcher to your custom web worker, use the following\n",(0,i.jsx)(n.strong,{children:"Example"})]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-js",children:"importScripts('/utils/EventDispatcher');\n// this will add the global EventDispatcher to your web-worker. Note that the EventDispatcher in the web worker\n// and node is a separate domain and cannot raise or listen to events in phoenix/other workers. For triggering events\n// between different domains like between node and phcode, see `nodeConnector.triggerPeer` or\n// `WorkerComm.triggerPeer` API for communication between phcode and web workers.\nself.EventDispatcher.trigger(\"someEvent\"); // within web worker\n"})}),"\n",(0,i.jsx)(n.h3,{id:"sample-usage-within-extension",children:"Sample Usage within extension"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Example"})}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-js",children:'// in your extension js file.\ndefine (function (require, exports, module) {\n const EventDispatcher = brackets.getModule("utils/EventDispatcher");\n EventDispatcher.makeEventDispatcher(exports); // This extension triggers some events\n let eventHandler = function (event, paramObject, paramVal) {\n console.log(event, paramObject, paramVal);\n };\n exports.on("sampleEvent", eventHandler); // listen to our own event for demo\n exports.trigger("sampleEvent", { // trigger a sample event. This will activate the above listener \'on\' function.\n param: 1,\n param2: "sample"\n }, "value");\n // If needed, the event listener can be removed with `off`. But it is not a requirement at shutdown.\n exports.off("sampleEvent", eventHandler);\n}\n'})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"#module_utils/EventDispatcher",children:"utils/EventDispatcher"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"#module_utils/EventDispatcher..splitNs",children:".splitNs(eventStr)"})," \u21d2 ",(0,i.jsx)("code",{children:"Object"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"#module_utils/EventDispatcher..setLeakThresholdForEvent",children:".setLeakThresholdForEvent(eventName, threshold)"})," : ",(0,i.jsx)("code",{children:"function"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"#module_utils/EventDispatcher..on",children:".on(events, fn)"})," : ",(0,i.jsx)("code",{children:"function"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"#module_utils/EventDispatcher..off",children:".off(events, fn)"})," : ",(0,i.jsx)("code",{children:"function"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"#module_utils/EventDispatcher..one",children:".one(events, fn)"})," : ",(0,i.jsx)("code",{children:"function"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"#module_utils/EventDispatcher..trigger",children:".trigger(eventName)"})," : ",(0,i.jsx)("code",{children:"function"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"#module_utils/EventDispatcher..makeEventDispatcher",children:".makeEventDispatcher(obj)"})," : ",(0,i.jsx)("code",{children:"function"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"#module_utils/EventDispatcher..triggerWithArray",children:".triggerWithArray(dispatcher, eventName, argsArray)"})," : ",(0,i.jsx)("code",{children:"function"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"#module_utils/EventDispatcher..on_duringInit",children:".on_duringInit(futureDispatcher, events, fn)"})," : ",(0,i.jsx)("code",{children:"function"})]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"#module_utils/EventDispatcher..markDeprecated",children:".markDeprecated(obj, eventName, [insteadStr])"})," : ",(0,i.jsx)("code",{children:"function"})]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)("a",{name:"module_utils/EventDispatcher..splitNs"}),"\n",(0,i.jsxs)(n.h3,{id:"utilseventdispatchersplitnseventstr--object",children:["utils/EventDispatcher.splitNs(eventStr) \u21d2 ",(0,i.jsx)("code",{children:"Object"})]}),"\n",(0,i.jsx)(n.p,{children:'Split "event.namespace" string into its two parts; both parts are optional.'}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,i.jsx)(n.a,{href:"#module_utils/EventDispatcher",children:(0,i.jsx)("code",{children:"utils/EventDispatcher"})}),(0,i.jsx)(n.br,{}),"\n",(0,i.jsx)(n.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"Object"}),' - Uses "" for missing parts.']}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsx)(n.tbody,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"eventStr"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(n.td,{children:'Event name and/or trailing ".namespace"'})]})})]}),"\n",(0,i.jsx)("a",{name:"module_utils/EventDispatcher..setLeakThresholdForEvent"}),"\n",(0,i.jsxs)(n.h3,{id:"utilseventdispatchersetleakthresholdforeventeventname-threshold--function",children:["utils/EventDispatcher.setLeakThresholdForEvent(eventName, threshold) : ",(0,i.jsx)("code",{children:"function"})]}),"\n",(0,i.jsx)(n.p,{children:"By default, we consider any events having more than 15 listeners to be leaky. But sometimes there may be\ngenuine use cases where an event can have a large number of listeners. For those events, it is recommended\nto increase the leaky warning threshold individually with this API."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,i.jsx)(n.a,{href:"#module_utils/EventDispatcher",children:(0,i.jsx)("code",{children:"utils/EventDispatcher"})})]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"eventName"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(n.td,{})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"threshold"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"number"})}),(0,i.jsx)(n.td,{children:"The new threshold to set. Will only be set if the new threshold is greater than the current threshold."})]})]})]}),"\n",(0,i.jsx)("a",{name:"module_utils/EventDispatcher..on"}),"\n",(0,i.jsxs)(n.h3,{id:"utilseventdispatcheronevents-fn--function",children:["utils/EventDispatcher.on(events, fn) : ",(0,i.jsx)("code",{children:"function"})]}),"\n",(0,i.jsx)(n.p,{children:"Adds the given handler function to 'events': a space-separated list of one or more event names, each\nwith an optional \".namespace\" (used by off() - see below). If the handler is already listening to this\nevent, a duplicate copy is added."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,i.jsx)(n.a,{href:"#module_utils/EventDispatcher",children:(0,i.jsx)("code",{children:"utils/EventDispatcher"})})]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"events"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"fn"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"function"})})]})]})]}),"\n",(0,i.jsx)("a",{name:"module_utils/EventDispatcher..off"}),"\n",(0,i.jsxs)(n.h3,{id:"utilseventdispatcheroffevents-fn--function",children:["utils/EventDispatcher.off(events, fn) : ",(0,i.jsx)("code",{children:"function"})]}),"\n",(0,i.jsx)(n.p,{children:"Removes one or more handler functions based on the space-separated 'events' list. Each item in\n'events' can be: bare event name, bare .namespace, or event.namespace pair. This yields a set of\nmatching handlers. If 'fn' is omitted, all these handlers are removed. If 'fn' is provided,\nonly handlers exactly equal to 'fn' are removed (there may still be >1, if duplicates were added)."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,i.jsx)(n.a,{href:"#module_utils/EventDispatcher",children:(0,i.jsx)("code",{children:"utils/EventDispatcher"})})]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"events"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"fn"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"function"})})]})]})]}),"\n",(0,i.jsx)("a",{name:"module_utils/EventDispatcher..one"}),"\n",(0,i.jsxs)(n.h3,{id:"utilseventdispatcheroneevents-fn--function",children:["utils/EventDispatcher.one(events, fn) : ",(0,i.jsx)("code",{children:"function"})]}),"\n",(0,i.jsx)(n.p,{children:"Attaches a handler so it's only called once (per event in the 'events' list)."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,i.jsx)(n.a,{href:"#module_utils/EventDispatcher",children:(0,i.jsx)("code",{children:"utils/EventDispatcher"})})]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"events"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"fn"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"function"})})]})]})]}),"\n",(0,i.jsx)("a",{name:"module_utils/EventDispatcher..trigger"}),"\n",(0,i.jsxs)(n.h3,{id:"utilseventdispatchertriggereventname--function",children:["utils/EventDispatcher.trigger(eventName) : ",(0,i.jsx)("code",{children:"function"})]}),"\n",(0,i.jsx)(n.p,{children:"Invokes all handlers for the given event (in the order they were added)."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,i.jsx)(n.a,{href:"#module_utils/EventDispatcher",children:(0,i.jsx)("code",{children:"utils/EventDispatcher"})})]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"eventName"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(n.td,{})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"..."}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"*"})}),(0,i.jsx)(n.td,{children:"Any additional args are passed to the event handler after the event object"})]})]})]}),"\n",(0,i.jsx)("a",{name:"module_utils/EventDispatcher..makeEventDispatcher"}),"\n",(0,i.jsxs)(n.h3,{id:"utilseventdispatchermakeeventdispatcherobj--function",children:["utils/EventDispatcher.makeEventDispatcher(obj) : ",(0,i.jsx)("code",{children:"function"})]}),"\n",(0,i.jsx)(n.p,{children:"Adds the EventDispatcher APIs to the given object: on(), one(), off(), and trigger(). May also be\ncalled on a prototype object - each instance will still behave independently."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,i.jsx)(n.a,{href:"#module_utils/EventDispatcher",children:(0,i.jsx)("code",{children:"utils/EventDispatcher"})})]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsx)(n.tbody,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"obj"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"Object"})}),(0,i.jsx)(n.td,{children:"Object to add event-dispatch methods to"})]})})]}),"\n",(0,i.jsx)("a",{name:"module_utils/EventDispatcher..triggerWithArray"}),"\n",(0,i.jsxs)(n.h3,{id:"utilseventdispatchertriggerwitharraydispatcher-eventname-argsarray--function",children:["utils/EventDispatcher.triggerWithArray(dispatcher, eventName, argsArray) : ",(0,i.jsx)("code",{children:"function"})]}),"\n",(0,i.jsx)(n.p,{children:"Utility for calling on() with an array of arguments to pass to event handlers (rather than a varargs\nlist). makeEventDispatcher() must have previously been called on 'dispatcher'."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,i.jsx)(n.a,{href:"#module_utils/EventDispatcher",children:(0,i.jsx)("code",{children:"utils/EventDispatcher"})})]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"dispatcher"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"Object"})})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"eventName"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"argsArray"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"Array.<*>"})})]})]})]}),"\n",(0,i.jsx)("a",{name:"module_utils/EventDispatcher..on_duringInit"}),"\n",(0,i.jsxs)(n.h3,{id:"utilseventdispatcheron_duringinitfuturedispatcher-events-fn--function",children:["utils/EventDispatcher.on_duringInit(futureDispatcher, events, fn) : ",(0,i.jsx)("code",{children:"function"})]}),"\n",(0,i.jsx)(n.p,{children:"Utility for attaching an event handler to an object that has not YET had makeEventDispatcher() called\non it, but will in the future. Once 'futureDispatcher' becomes a real event dispatcher, any handlers\nattached here will be retained."}),"\n",(0,i.jsx)(n.p,{children:"Useful with core modules that have circular dependencies (one module initially gets an empty copy of the\nother, with no on() API present yet). Unlike other strategies like waiting for htmlReady(), this helper\nguarantees you won't miss any future events, regardless of how soon the other module finishes init and\nstarts calling trigger()."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,i.jsx)(n.a,{href:"#module_utils/EventDispatcher",children:(0,i.jsx)("code",{children:"utils/EventDispatcher"})})]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"futureDispatcher"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"Object"})})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"events"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"fn"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"function"})})]})]})]}),"\n",(0,i.jsx)("a",{name:"module_utils/EventDispatcher..markDeprecated"}),"\n",(0,i.jsxs)(n.h3,{id:"utilseventdispatchermarkdeprecatedobj-eventname-insteadstr--function",children:["utils/EventDispatcher.markDeprecated(obj, eventName, [insteadStr]) : ",(0,i.jsx)("code",{children:"function"})]}),"\n",(0,i.jsx)(n.p,{children:"Mark a given event name as deprecated, such that on() will emit warnings when called with it.\nMay be called before makeEventDispatcher(). May be called on a prototype where makeEventDispatcher()\nis called separately per instance (i.e. in the constructor). Should be called before clients have\na chance to start calling on()."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,i.jsx)(n.a,{href:"#module_utils/EventDispatcher",children:(0,i.jsx)("code",{children:"utils/EventDispatcher"})})]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"obj"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"Object"})}),(0,i.jsx)(n.td,{children:"Event dispatcher object"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"eventName"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(n.td,{children:"Name of deprecated event"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"[insteadStr]"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(n.td,{children:"Suggested thing to use instead"})]})]})]})]})}function o(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(h,{...e})}):h(e)}},28453:(e,n,t)=>{t.d(n,{R:()=>l,x:()=>d});var s=t(96540);const i={},r=s.createContext(i);function l(e){const n=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:l(e.components),s.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/8b5eeafa.5398560d.js b/assets/js/8b5eeafa.5398560d.js new file mode 100644 index 00000000..f6d7cb97 --- /dev/null +++ b/assets/js/8b5eeafa.5398560d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8850],{58249:t=>{t.exports=JSON.parse('{"tag":{"label":"Git","permalink":"/blog/tags/git","allTagsPath":"/blog/tags","count":1,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/git","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]); \ No newline at end of file diff --git a/assets/js/8b7a762d.7e3270dc.js b/assets/js/8b7a762d.7e3270dc.js new file mode 100644 index 00000000..81e80438 --- /dev/null +++ b/assets/js/8b7a762d.7e3270dc.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1192],{81389:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>d,frontMatter:()=>r,metadata:()=>t,toc:()=>h});var t=i(99042),o=i(74848),s=i(28453);const r={slug:"release-4.0",title:"Git It Release (January-2025, V-4.0) is now Live",description:"Phoenix Code 4.0 introduces built-in Git integration, color previews, and open-in-terminal support. The largest release in the Brackets legacy.",authors:["arun","charly","devvaannsh","phoenixBot"],tags:["Git","Color previews","Version Control","open in terminal","Stability Improvements","Windows","Linux","Mac","Release"]},a=void 0,l={authorsImageUrls:[void 0,void 0,void 0,void 0]},h=[{value:"The legacy of Brackets - Continued",id:"the-legacy-of-brackets---continued",level:2},{value:"Git for Desktop",id:"git-for-desktop",level:2},{value:"Color Previews",id:"color-previews",level:2},{value:"Open in Terminal and File Explorer",id:"open-in-terminal-and-file-explorer",level:2},{value:"Better Translations",id:"better-translations",level:2},{value:"Notable changes and fixes",id:"notable-changes-and-fixes",level:2},{value:"Performance & Stability Tweaks",id:"performance--stability-tweaks",level:2},{value:"All changes",id:"all-changes",level:2},{value:"A Request from the Phoenix Team:",id:"a-request-from-the-phoenix-team",level:2}];function c(e){const n={a:"a",code:"code",h2:"h2",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(n.p,{children:["2025 January release(4.0) of Phoenix Code is now available for download at ",(0,o.jsx)(n.a,{href:"https://phcode.io",children:"phcode.io"}),"."]}),"\n",(0,o.jsx)(n.p,{children:"This is the largest release we had in a while, and we are happy to announce the next phase of Phoenix Code with\na major version bump to 4.0."}),"\n",(0,o.jsx)(n.h2,{id:"the-legacy-of-brackets---continued",children:"The legacy of Brackets - Continued"}),"\n",(0,o.jsxs)(n.p,{children:["A decade-long journey of pushing web development forward: The Brackets story continues with Phoenix Code.\n",(0,o.jsx)(n.a,{href:"https://docs.phcode.dev/blog/Blog-Legacy",children:"Read more about the story of Brackets and the journey to build Phoenix Code and the Brackets community."})]}),"\n",(0,o.jsxs)(n.p,{children:["This release's core theme is ",(0,o.jsx)(n.code,{children:"Git, Color previews, UX imporovements and stability"}),"."]}),"\n",(0,o.jsx)(n.h2,{id:"git-for-desktop",children:"Git for Desktop"}),"\n",(0,o.jsxs)(n.p,{children:["Git is finally here. Integrated Git source control with a clean, intuitive interface.\nStage changes, commit, and sync with a single click while keeping your focus on the code.\nNow available in the Windows, Mac and Linux desktop apps of Phoenix code. ",(0,o.jsx)(n.a,{href:"https://docs.phcode.dev/docs/Features/git",children:"Read More..."})]}),"\n",(0,o.jsxs)(n.p,{children:["Our Git integration is built upon the incredible work of the developers behind ",(0,o.jsx)(n.a,{href:"https://github.com/brackets-userland/brackets-git",children:"Brackets-Git"}),",\nwhose contributions made this possible. Thank you!"]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{src:"https://github.com/user-attachments/assets/aeacc7c0-3ee3-4a80-9b05-f2b48140bcdd",alt:"Image"})}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{src:"https://github.com/user-attachments/assets/6e7b9faf-d57b-448b-a5bb-a111c67489b5",alt:"Image"})}),"\n",(0,o.jsx)(n.h2,{id:"color-previews",children:"Color Previews"}),"\n",(0,o.jsxs)(n.p,{children:["Preview the color(s) used in the file in the gutter area. Hovering over a color box highlights the corresponding color\ntext in the editor to quickly jump to editing that color. ",(0,o.jsx)(n.a,{href:"https://docs.phcode.dev/docs/editing-colors#color-preview",children:"Read More..."})]}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{src:"https://github.com/user-attachments/assets/bedecc32-761b-448e-aced-61828ad3fec6",alt:"image"})}),"\n",(0,o.jsx)(n.h2,{id:"open-in-terminal-and-file-explorer",children:"Open in Terminal and File Explorer"}),"\n",(0,o.jsx)(n.p,{children:'New "Open In" feature lets you instantly open directories and files in the system Terminal or File Explorer across\nWindows, macOS, and Linux desktop apps!'}),"\n",(0,o.jsx)(n.p,{children:(0,o.jsx)(n.img,{src:"https://github.com/user-attachments/assets/710330ae-8b34-4a51-a1f9-4c02736ed9bd",alt:"Image"})}),"\n",(0,o.jsx)(n.h2,{id:"better-translations",children:"Better Translations"}),"\n",(0,o.jsx)(n.p,{children:"We've moved to an LLM-assisted translation framework, delivering higher-quality translations for non-English locales."}),"\n",(0,o.jsx)(n.h2,{id:"notable-changes-and-fixes",children:"Notable changes and fixes"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:["We've removed some inconsistent and rarely used keyboard shortcuts to free up more key combinations for customization.\n",(0,o.jsx)(n.a,{href:"https://docs.phcode.dev/docs/Features/keyboard-shortcuts",children:"Easily configure your own keyboard shortcuts through the UI."})]}),"\n",(0,o.jsxs)(n.li,{children:["Fixed ",(0,o.jsx)(n.code,{children:"Option-[shift]-left"})," and ",(0,o.jsx)(n.code,{children:"option-[shift]-right"})," keyboard shortcuts not working in mac to select/move words."]}),"\n",(0,o.jsx)(n.li,{children:"Survey popups are now less intrusive, appearing as notifications without disrupting your workflow."}),"\n",(0,o.jsxs)(n.li,{children:["Moved back ",(0,o.jsx)(n.code,{children:"line:ch"})," status to left of statusbar. Go to line will accept ",(0,o.jsx)(n.code,{children:":ln:col"})," format along with ",(0,o.jsx)(n.code,{children:":ln,col"}),". ",(0,o.jsx)(n.img,{src:"https://github.com/user-attachments/assets/7429ae42-cb56-444c-8546-6d565bedaaf9",alt:"Image"})]}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"https://github.com/phcode-dev/phoenix/pull/2035",children:"Remove specific files from Recent Files"})}),"\n",(0,o.jsxs)(n.li,{children:["Fixes ",(0,o.jsx)(n.a,{href:"https://github.com/phcode-dev/phoenix/pull/2015",children:"holding ctrl key in windows should not ui overlay mode."})]}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsxs)(n.a,{href:"https://github.com/phcode-dev/phoenix/pull/1994",children:["fix: ",(0,o.jsx)(n.code,{children:"cmd-click"})," in mac app and safari didn't open context menu."]})}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"https://github.com/phcode-dev/phoenix/pull/1999",children:"Switching between Ctrl+F and Ctrl+Shift+F now correctly updates the search box with the latest selection."})}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"https://github.com/phcode-dev/phoenix/pull/1997",children:"fix: clicking on prevent defaulted A tags in desktop live preview opens browser tab."})}),"\n"]}),"\n",(0,o.jsx)(n.h2,{id:"performance--stability-tweaks",children:"Performance & Stability Tweaks"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.a,{href:"https://github.com/phcode-dev/phoenix/pull/2055",children:"Faster boot times with extension compression and load changes"}),"\nconsistency and performance, especially on Safari and macOS."]}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"https://github.com/phcode-dev/phoenix/pull/2082",children:"File recovery should only be shown on crash, and fix some file recovery issues."})}),"\n"]}),"\n",(0,o.jsx)(n.h2,{id:"all-changes",children:"All changes"}),"\n",(0,o.jsxs)(n.p,{children:["Please see ",(0,o.jsx)(n.a,{href:"https://github.com/phcode-dev/phoenix/commits/main/?since=2024-11-27&until=2025-01-30",children:"this link"})," for a full list of changes\nin GitHub."]}),"\n",(0,o.jsx)(n.h2,{id:"a-request-from-the-phoenix-team",children:"A Request from the Phoenix Team:"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Share your feedback:"})," ",(0,o.jsx)(n.a,{href:"https://github.com/orgs/phcode-dev/discussions",children:"https://github.com/orgs/phcode-dev/discussions"})]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.strong,{children:"Spread the word"})," about Phoenix to friends and colleagues."]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsxs)(n.a,{href:"https://github.com/sponsors/phcode-dev",children:[(0,o.jsx)(n.strong,{children:"Consider supporting us"})," on GitHub Sponsors"]}),". Every contribution helps us\nto keep improving Phoenix Code."]}),"\n"]}),"\n",(0,o.jsx)(n.p,{children:"With gratitude,"}),"\n",(0,o.jsx)(n.p,{children:"The Phoenix Team"})]})}function d(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(c,{...e})}):c(e)}},28453:(e,n,i)=>{i.d(n,{R:()=>r,x:()=>a});var t=i(96540);const o={},s=t.createContext(o);function r(e){const n=t.useContext(s);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),t.createElement(s.Provider,{value:n},e.children)}},99042:e=>{e.exports=JSON.parse('{"permalink":"/blog/release-4.0","editUrl":"https://github.com/phcode-dev/docs/blob/main/blog/2025-01-30-Release-4.0/index.md","source":"@site/blog/2025-01-30-Release-4.0/index.md","title":"Git It Release (January-2025, V-4.0) is now Live","description":"Phoenix Code 4.0 introduces built-in Git integration, color previews, and open-in-terminal support. The largest release in the Brackets legacy.","date":"2025-01-30T00:00:00.000Z","tags":[{"inline":true,"label":"Git","permalink":"/blog/tags/git"},{"inline":true,"label":"Color previews","permalink":"/blog/tags/color-previews"},{"inline":true,"label":"Version Control","permalink":"/blog/tags/version-control"},{"inline":true,"label":"open in terminal","permalink":"/blog/tags/open-in-terminal"},{"inline":true,"label":"Stability Improvements","permalink":"/blog/tags/stability-improvements"},{"inline":true,"label":"Windows","permalink":"/blog/tags/windows"},{"inline":true,"label":"Linux","permalink":"/blog/tags/linux"},{"inline":true,"label":"Mac","permalink":"/blog/tags/mac"},{"inline":true,"label":"Release","permalink":"/blog/tags/release"}],"readingTime":3.18,"hasTruncateMarker":false,"authors":[{"name":"Arun Bose","title":"Co-Founder, Phoenix Code","url":"https://github.com/abose","imageURL":"https://github.com/abose.png","key":"arun","page":null},{"name":"Charly P Abraham","title":"Co-Founder, Phoenix Code","url":"https://github.com/charlypa","imageURL":"https://github.com/charlypa.png","key":"charly","page":null},{"name":"Devansh Agarwal","title":"Founding Engineer, Phoenix Code","url":"https://github.com/devvaannsh","imageURL":"https://github.com/devvaannsh.png","key":"devvaannsh","page":null},{"name":"Phoenix Code Bot","title":"Our little elf who keeps the whole place together","url":"https://github.com/phoenixide","imageURL":"https://github.com/phoenixide.png","key":"phoenixBot","page":null}],"frontMatter":{"slug":"release-4.0","title":"Git It Release (January-2025, V-4.0) is now Live","description":"Phoenix Code 4.0 introduces built-in Git integration, color previews, and open-in-terminal support. The largest release in the Brackets legacy.","authors":["arun","charly","devvaannsh","phoenixBot"],"tags":["Git","Color previews","Version Control","open in terminal","Stability Improvements","Windows","Linux","Mac","Release"]},"unlisted":false,"prevItem":{"title":"Phoenix Pro Release (January-2026, V-5.0) is now Live","permalink":"/blog/release-5.0"},"nextItem":{"title":"Phoenix Code: The Legacy of Brackets - Continued","permalink":"/blog/Blog-Legacy"}}')}}]); \ No newline at end of file diff --git a/assets/js/8c0fc8b7.21c500ae.js b/assets/js/8c0fc8b7.21c500ae.js new file mode 100644 index 00000000..e0bcca56 --- /dev/null +++ b/assets/js/8c0fc8b7.21c500ae.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6146],{52522:(e,i,n)=>{n.r(i),n.d(i,{assets:()=>l,contentTitle:()=>r,default:()=>h,frontMatter:()=>a,metadata:()=>s,toc:()=>d});var s=n(97809),t=n(74848),o=n(28453);const a={slug:"release-3.8",title:"Critical Update + HTML Helpers Release (June-2024, V-3.8) is now Live",description:"Phoenix Code 3.8 fixes crashes on M1 Macs and Linux, adds HTML drag-and-drop editing, and improves live preview stability.",authors:["arun","charly","phoenixBot"],tags:["Live Preview","Live Code Hints","Windows","Linux","Mac","Release"]},r=void 0,l={authorsImageUrls:[void 0,void 0,void 0]},d=[{value:"HTML Validation",id:"html-validation",level:4},{value:"Drag and Drop Files and Folders in Desktop Apps - Experimental",id:"drag-and-drop-files-and-folders-in-desktop-apps---experimental",level:4},{value:"ESLint Support",id:"eslint-support",level:4},{value:"UX Improvements",id:"ux-improvements",level:4},{value:"A Request from the Phoenix Team:",id:"a-request-from-the-phoenix-team",level:2}];function c(e){const i={a:"a",blockquote:"blockquote",code:"code",h2:"h2",h4:"h4",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,o.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(i.p,{children:["June release(3.8) of Phoenix Code is now available for download at\n",(0,t.jsx)(i.a,{href:"https://phcode.io",children:"phcode.io"}),"."]}),"\n",(0,t.jsx)(i.p,{children:"This update addresses a critical issue where Phoenix Code crashes in M1 Macs\nat app start after a recent macOS update. Also fixes app start issues in some\nnewer Linux distributions with latest webkitGTK."}),"\n",(0,t.jsxs)(i.p,{children:["This month's theme is all about ",(0,t.jsx)(i.code,{children:"HTML assistance"}),", ",(0,t.jsx)(i.code,{children:"Drag and Drop"})," and\n",(0,t.jsx)(i.code,{children:"ESLint"}),". We've also addressed numerous feature requests and bug reports, along\nwith improving app UX and stability."]}),"\n",(0,t.jsx)(i.h4,{id:"html-validation",children:"HTML Validation"}),"\n",(0,t.jsxs)(i.p,{children:["We have added HTML Validator to help you find errors like duplicate IDs,\nunrecognized tags, and more. ",(0,t.jsx)(i.a,{href:"https://docs.phcode.dev/docs/Features/Problems%20Panel/html-lint/",children:"Read more here."})]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{src:"https://github.com/phcode-dev/phoenix/assets/5336369/5bc4a1cc-2429-477c-83ca-91f19dcc0b0f",alt:"HTML validate"})}),"\n",(0,t.jsx)(i.h4,{id:"drag-and-drop-files-and-folders-in-desktop-apps---experimental",children:"Drag and Drop Files and Folders in Desktop Apps - Experimental"}),"\n",(0,t.jsx)(i.p,{children:"Drag files from Explorer (Windows) or Finder (Mac) and drop them into Phoenix\nCode to open individual files. Drop a folder to open it as a project."}),"\n",(0,t.jsxs)(i.blockquote,{children:["\n",(0,t.jsxs)(i.p,{children:["Note: This feature is currently disabled on Linux due to UI issues in some\nLinux distributions. To enable it, select menu\n",(0,t.jsx)(i.code,{children:"Debug -> Experimental Features -> Drag And Drop Files."})]}),"\n"]}),"\n",(0,t.jsxs)(i.blockquote,{children:["\n",(0,t.jsx)(i.p,{children:"This feature is not yet available in the browser version @ phcode.dev"}),"\n"]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{src:"https://github.com/phcode-dev/phoenix/assets/5336369/ddd96ff7-bc99-46a6-a62d-6f6f5b78438b",alt:"drag and drop"})}),"\n",(0,t.jsx)(i.h4,{id:"eslint-support",children:"ESLint Support"}),"\n",(0,t.jsxs)(i.p,{children:["All new and simplified ESLint experience that displays all ESLint errors in a\nfile. Fix one or all errors with a single click. To enable, open a project that\nuses ESLint in Phoenix Code. ",(0,t.jsx)(i.a,{href:"https://docs.phcode.dev/docs/Features/Problems%20Panel/ESLint/",children:"Read more here."})]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{src:"https://github.com/phcode-dev/phoenix/assets/5336369/eb00691a-a0b4-4c1a-9209-d78fc7db764d",alt:"image"})}),"\n",(0,t.jsx)(i.h4,{id:"ux-improvements",children:"UX Improvements"}),"\n",(0,t.jsxs)(i.ul,{children:["\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.strong,{children:"Non-Intrusive Automatic Updates:"})," Updates are now installed in the\nbackground with no more distracting dialogs when an update is available."]}),"\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.strong,{children:"Case-Sensitive File Renaming:"})," Renaming files to a different case, such as\n",(0,t.jsx)(i.code,{children:"a.txt"})," to ",(0,t.jsx)(i.code,{children:"A.TXT"}),", is now supported."]}),"\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.code,{children:"File > New Project"})," is now renamed to ",(0,t.jsx)(i.code,{children:"Start Project"}),"."]}),"\n",(0,t.jsx)(i.li,{children:"Increased stability and app startup experience."}),"\n"]}),"\n",(0,t.jsx)(i.h2,{id:"a-request-from-the-phoenix-team",children:"A Request from the Phoenix Team:"}),"\n",(0,t.jsxs)(i.ul,{children:["\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.strong,{children:"Share your feedback:"})," ",(0,t.jsx)(i.a,{href:"https://github.com/orgs/phcode-dev/discussions",children:"https://github.com/orgs/phcode-dev/discussions"})]}),"\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.strong,{children:"Spread the word"})," about Phoenix to friends and colleagues."]}),"\n",(0,t.jsxs)(i.li,{children:[(0,t.jsxs)(i.a,{href:"https://github.com/sponsors/phcode-dev",children:[(0,t.jsx)(i.strong,{children:"Consider supporting us"})," on GitHub Sponsors"]}),".\nEvery contribution helps us to keep improving Phoenix Code."]}),"\n"]}),"\n",(0,t.jsx)(i.p,{children:"With gratitude,"}),"\n",(0,t.jsx)(i.p,{children:"The Phoenix Team"})]})}function h(e={}){const{wrapper:i}={...(0,o.R)(),...e.components};return i?(0,t.jsx)(i,{...e,children:(0,t.jsx)(c,{...e})}):c(e)}},28453:(e,i,n)=>{n.d(i,{R:()=>a,x:()=>r});var s=n(96540);const t={},o=s.createContext(t);function a(e){const i=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function r(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:a(e.components),s.createElement(o.Provider,{value:i},e.children)}},97809:e=>{e.exports=JSON.parse('{"permalink":"/blog/release-3.8","editUrl":"https://github.com/phcode-dev/docs/blob/main/blog/2024-06-27-Release-3.8/index.md","source":"@site/blog/2024-06-27-Release-3.8/index.md","title":"Critical Update + HTML Helpers Release (June-2024, V-3.8) is now Live","description":"Phoenix Code 3.8 fixes crashes on M1 Macs and Linux, adds HTML drag-and-drop editing, and improves live preview stability.","date":"2024-06-27T00:00:00.000Z","tags":[{"inline":true,"label":"Live Preview","permalink":"/blog/tags/live-preview"},{"inline":true,"label":"Live Code Hints","permalink":"/blog/tags/live-code-hints"},{"inline":true,"label":"Windows","permalink":"/blog/tags/windows"},{"inline":true,"label":"Linux","permalink":"/blog/tags/linux"},{"inline":true,"label":"Mac","permalink":"/blog/tags/mac"},{"inline":true,"label":"Release","permalink":"/blog/tags/release"}],"readingTime":1.89,"hasTruncateMarker":false,"authors":[{"name":"Arun Bose","title":"Co-Founder, Phoenix Code","url":"https://github.com/abose","imageURL":"https://github.com/abose.png","key":"arun","page":null},{"name":"Charly P Abraham","title":"Co-Founder, Phoenix Code","url":"https://github.com/charlypa","imageURL":"https://github.com/charlypa.png","key":"charly","page":null},{"name":"Phoenix Code Bot","title":"Our little elf who keeps the whole place together","url":"https://github.com/phoenixide","imageURL":"https://github.com/phoenixide.png","key":"phoenixBot","page":null}],"frontMatter":{"slug":"release-3.8","title":"Critical Update + HTML Helpers Release (June-2024, V-3.8) is now Live","description":"Phoenix Code 3.8 fixes crashes on M1 Macs and Linux, adds HTML drag-and-drop editing, and improves live preview stability.","authors":["arun","charly","phoenixBot"],"tags":["Live Preview","Live Code Hints","Windows","Linux","Mac","Release"]},"unlisted":false,"prevItem":{"title":"HTML Workflows and stability Release (September-2024, V-3.9) is now Live","permalink":"/blog/release-3.9"},"nextItem":{"title":"Little Things Release (May-2024, V-3.7) is now Live","permalink":"/blog/release-3.7"}}')}}]); \ No newline at end of file diff --git a/assets/js/8decbc7d.a4a57449.js b/assets/js/8decbc7d.a4a57449.js new file mode 100644 index 00000000..cc6c117c --- /dev/null +++ b/assets/js/8decbc7d.a4a57449.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2803],{31455:s=>{s.exports=JSON.parse('{"tag":{"label":"Windows","permalink":"/blog/tags/windows","allTagsPath":"/blog/tags","count":10,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/windows","page":1,"postsPerPage":10,"totalPages":1,"totalCount":10,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]); \ No newline at end of file diff --git a/assets/js/8e90904a.b0f4caf0.js b/assets/js/8e90904a.b0f4caf0.js new file mode 100644 index 00000000..55a239f0 --- /dev/null +++ b/assets/js/8e90904a.b0f4caf0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3271],{98542:e=>{e.exports=JSON.parse('{"tag":{"label":"Design Mode","permalink":"/blog/tags/design-mode","allTagsPath":"/blog/tags","count":1,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/design-mode","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]); \ No newline at end of file diff --git a/assets/js/8ea09047.790a22b4.js b/assets/js/8ea09047.790a22b4.js new file mode 100644 index 00000000..da8e09e9 --- /dev/null +++ b/assets/js/8ea09047.790a22b4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9385],{40600:e=>{e.exports=JSON.parse('{"metadata":{"permalink":"/blog/page/2","page":2,"postsPerPage":10,"totalPages":2,"totalCount":12,"previousPage":"/blog","blogDescription":"Blog","blogTitle":"Blog"}}')}}]); \ No newline at end of file diff --git a/assets/js/8f63fe03.19b62e07.js b/assets/js/8f63fe03.19b62e07.js new file mode 100644 index 00000000..d958cc18 --- /dev/null +++ b/assets/js/8f63fe03.19b62e07.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5080],{46440:a=>{a.exports=JSON.parse('{"tag":{"label":"open in terminal","permalink":"/blog/tags/open-in-terminal","allTagsPath":"/blog/tags","count":1,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/open-in-terminal","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]); \ No newline at end of file diff --git a/assets/js/9032.d1cfc639.js b/assets/js/9032.d1cfc639.js new file mode 100644 index 00000000..6aca9816 --- /dev/null +++ b/assets/js/9032.d1cfc639.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9032],{89625:(e,t,s)=>{s.d(t,{A:()=>r});var i=s(40797),n=s(70451),r=(0,i.K2)(((e,t)=>{let s;"sandbox"===t&&(s=(0,n.Ltv)("#i"+e));return("sandbox"===t?(0,n.Ltv)(s.nodes()[0].contentDocument.body):(0,n.Ltv)("body")).select(`[id="${e}"]`)}),"getDiagramElement")},21152:(e,t,s)=>{s.d(t,{P:()=>r});var i=s(67633),n=s(40797),r=(0,n.K2)(((e,t,s,r)=>{e.attr("class",s);const{width:c,height:o,x:h,y:u}=a(e,t);(0,i.a$)(e,o,c,r);const y=l(h,u,c,o,t);e.attr("viewBox",y),n.Rm.debug(`viewBox configured: ${y} with padding: ${t}`)}),"setupViewPortForSVG"),a=(0,n.K2)(((e,t)=>{const s=e.node()?.getBBox()||{width:0,height:0,x:0,y:0};return{width:s.width+2*t,height:s.height+2*t,x:s.x,y:s.y}}),"calculateDimensionsWithPadding"),l=(0,n.K2)(((e,t,s,i,n)=>`${e-n} ${t-n} ${s} ${i}`),"createViewBox")},29032:(e,t,s)=>{s.d(t,{diagram:()=>E});var i=s(89625),n=s(21152),r=s(10045),a=(s(5164),s(28698),s(5894),s(63245),s(32387),s(30092),s(13226)),l=s(67633),c=s(40797),o=function(){var e=(0,c.K2)((function(e,t,s,i){for(s=s||{},i=e.length;i--;s[e[i]]=t);return s}),"o"),t=[1,3],s=[1,4],i=[1,5],n=[1,6],r=[5,6,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,77,89,90],a=[1,22],l=[2,7],o=[1,26],h=[1,27],u=[1,28],y=[1,29],m=[1,33],d=[1,34],E=[1,35],p=[1,36],R=[1,37],f=[1,38],_=[1,24],g=[1,31],S=[1,32],I=[1,30],b=[1,39],T=[1,40],k=[5,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,77,89,90],N=[1,61],q=[89,90],A=[5,8,9,11,13,21,22,23,24,27,29,41,42,43,44,45,46,54,61,63,72,74,75,76,77,80,81,82,83,84,85,86,87,88,89,90],C=[27,29],v=[1,70],w=[1,71],x=[1,72],L=[1,73],D=[1,74],O=[1,75],$=[1,76],M=[1,83],F=[1,80],K=[1,84],P=[1,85],V=[1,86],U=[1,87],Y=[1,88],B=[1,89],Q=[1,90],H=[1,91],W=[1,92],j=[5,8,9,11,13,21,22,23,24,27,41,42,43,44,45,46,54,72,74,75,76,77,80,81,82,83,84,85,86,87,88,89,90],G=[63,64],z=[1,101],X=[5,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,76,77,89,90],J=[5,8,9,11,13,21,22,23,24,41,42,43,44,45,46,54,72,74,75,76,77,80,81,82,83,84,85,86,87,88,89,90],Z=[1,110],ee=[1,106],te=[1,107],se=[1,108],ie=[1,109],ne=[1,111],re=[1,116],ae=[1,117],le=[1,114],ce=[1,115],oe={trace:(0,c.K2)((function(){}),"trace"),yy:{},symbols_:{error:2,start:3,directive:4,NEWLINE:5,RD:6,diagram:7,EOF:8,acc_title:9,acc_title_value:10,acc_descr:11,acc_descr_value:12,acc_descr_multiline_value:13,requirementDef:14,elementDef:15,relationshipDef:16,direction:17,styleStatement:18,classDefStatement:19,classStatement:20,direction_tb:21,direction_bt:22,direction_rl:23,direction_lr:24,requirementType:25,requirementName:26,STRUCT_START:27,requirementBody:28,STYLE_SEPARATOR:29,idList:30,ID:31,COLONSEP:32,id:33,TEXT:34,text:35,RISK:36,riskLevel:37,VERIFYMTHD:38,verifyType:39,STRUCT_STOP:40,REQUIREMENT:41,FUNCTIONAL_REQUIREMENT:42,INTERFACE_REQUIREMENT:43,PERFORMANCE_REQUIREMENT:44,PHYSICAL_REQUIREMENT:45,DESIGN_CONSTRAINT:46,LOW_RISK:47,MED_RISK:48,HIGH_RISK:49,VERIFY_ANALYSIS:50,VERIFY_DEMONSTRATION:51,VERIFY_INSPECTION:52,VERIFY_TEST:53,ELEMENT:54,elementName:55,elementBody:56,TYPE:57,type:58,DOCREF:59,ref:60,END_ARROW_L:61,relationship:62,LINE:63,END_ARROW_R:64,CONTAINS:65,COPIES:66,DERIVES:67,SATISFIES:68,VERIFIES:69,REFINES:70,TRACES:71,CLASSDEF:72,stylesOpt:73,CLASS:74,ALPHA:75,COMMA:76,STYLE:77,style:78,styleComponent:79,NUM:80,COLON:81,UNIT:82,SPACE:83,BRKT:84,PCT:85,MINUS:86,LABEL:87,SEMICOLON:88,unqString:89,qString:90,$accept:0,$end:1},terminals_:{2:"error",5:"NEWLINE",6:"RD",8:"EOF",9:"acc_title",10:"acc_title_value",11:"acc_descr",12:"acc_descr_value",13:"acc_descr_multiline_value",21:"direction_tb",22:"direction_bt",23:"direction_rl",24:"direction_lr",27:"STRUCT_START",29:"STYLE_SEPARATOR",31:"ID",32:"COLONSEP",34:"TEXT",36:"RISK",38:"VERIFYMTHD",40:"STRUCT_STOP",41:"REQUIREMENT",42:"FUNCTIONAL_REQUIREMENT",43:"INTERFACE_REQUIREMENT",44:"PERFORMANCE_REQUIREMENT",45:"PHYSICAL_REQUIREMENT",46:"DESIGN_CONSTRAINT",47:"LOW_RISK",48:"MED_RISK",49:"HIGH_RISK",50:"VERIFY_ANALYSIS",51:"VERIFY_DEMONSTRATION",52:"VERIFY_INSPECTION",53:"VERIFY_TEST",54:"ELEMENT",57:"TYPE",59:"DOCREF",61:"END_ARROW_L",63:"LINE",64:"END_ARROW_R",65:"CONTAINS",66:"COPIES",67:"DERIVES",68:"SATISFIES",69:"VERIFIES",70:"REFINES",71:"TRACES",72:"CLASSDEF",74:"CLASS",75:"ALPHA",76:"COMMA",77:"STYLE",80:"NUM",81:"COLON",82:"UNIT",83:"SPACE",84:"BRKT",85:"PCT",86:"MINUS",87:"LABEL",88:"SEMICOLON",89:"unqString",90:"qString"},productions_:[0,[3,3],[3,2],[3,4],[4,2],[4,2],[4,1],[7,0],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[7,2],[17,1],[17,1],[17,1],[17,1],[14,5],[14,7],[28,5],[28,5],[28,5],[28,5],[28,2],[28,1],[25,1],[25,1],[25,1],[25,1],[25,1],[25,1],[37,1],[37,1],[37,1],[39,1],[39,1],[39,1],[39,1],[15,5],[15,7],[56,5],[56,5],[56,2],[56,1],[16,5],[16,5],[62,1],[62,1],[62,1],[62,1],[62,1],[62,1],[62,1],[19,3],[20,3],[20,3],[30,1],[30,3],[30,1],[30,3],[18,3],[73,1],[73,3],[78,1],[78,2],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[79,1],[26,1],[26,1],[33,1],[33,1],[35,1],[35,1],[55,1],[55,1],[58,1],[58,1],[60,1],[60,1]],performAction:(0,c.K2)((function(e,t,s,i,n,r,a){var l=r.length-1;switch(n){case 4:this.$=r[l].trim(),i.setAccTitle(this.$);break;case 5:case 6:this.$=r[l].trim(),i.setAccDescription(this.$);break;case 7:this.$=[];break;case 17:i.setDirection("TB");break;case 18:i.setDirection("BT");break;case 19:i.setDirection("RL");break;case 20:i.setDirection("LR");break;case 21:i.addRequirement(r[l-3],r[l-4]);break;case 22:i.addRequirement(r[l-5],r[l-6]),i.setClass([r[l-5]],r[l-3]);break;case 23:i.setNewReqId(r[l-2]);break;case 24:i.setNewReqText(r[l-2]);break;case 25:i.setNewReqRisk(r[l-2]);break;case 26:i.setNewReqVerifyMethod(r[l-2]);break;case 29:this.$=i.RequirementType.REQUIREMENT;break;case 30:this.$=i.RequirementType.FUNCTIONAL_REQUIREMENT;break;case 31:this.$=i.RequirementType.INTERFACE_REQUIREMENT;break;case 32:this.$=i.RequirementType.PERFORMANCE_REQUIREMENT;break;case 33:this.$=i.RequirementType.PHYSICAL_REQUIREMENT;break;case 34:this.$=i.RequirementType.DESIGN_CONSTRAINT;break;case 35:this.$=i.RiskLevel.LOW_RISK;break;case 36:this.$=i.RiskLevel.MED_RISK;break;case 37:this.$=i.RiskLevel.HIGH_RISK;break;case 38:this.$=i.VerifyType.VERIFY_ANALYSIS;break;case 39:this.$=i.VerifyType.VERIFY_DEMONSTRATION;break;case 40:this.$=i.VerifyType.VERIFY_INSPECTION;break;case 41:this.$=i.VerifyType.VERIFY_TEST;break;case 42:i.addElement(r[l-3]);break;case 43:i.addElement(r[l-5]),i.setClass([r[l-5]],r[l-3]);break;case 44:i.setNewElementType(r[l-2]);break;case 45:i.setNewElementDocRef(r[l-2]);break;case 48:i.addRelationship(r[l-2],r[l],r[l-4]);break;case 49:i.addRelationship(r[l-2],r[l-4],r[l]);break;case 50:this.$=i.Relationships.CONTAINS;break;case 51:this.$=i.Relationships.COPIES;break;case 52:this.$=i.Relationships.DERIVES;break;case 53:this.$=i.Relationships.SATISFIES;break;case 54:this.$=i.Relationships.VERIFIES;break;case 55:this.$=i.Relationships.REFINES;break;case 56:this.$=i.Relationships.TRACES;break;case 57:this.$=r[l-2],i.defineClass(r[l-1],r[l]);break;case 58:i.setClass(r[l-1],r[l]);break;case 59:i.setClass([r[l-2]],r[l]);break;case 60:case 62:case 65:this.$=[r[l]];break;case 61:case 63:this.$=r[l-2].concat([r[l]]);break;case 64:this.$=r[l-2],i.setCssStyle(r[l-1],r[l]);break;case 66:r[l-2].push(r[l]),this.$=r[l-2];break;case 68:this.$=r[l-1]+r[l]}}),"anonymous"),table:[{3:1,4:2,6:t,9:s,11:i,13:n},{1:[3]},{3:8,4:2,5:[1,7],6:t,9:s,11:i,13:n},{5:[1,9]},{10:[1,10]},{12:[1,11]},e(r,[2,6]),{3:12,4:2,6:t,9:s,11:i,13:n},{1:[2,2]},{4:17,5:a,7:13,8:l,9:s,11:i,13:n,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:o,22:h,23:u,24:y,25:23,33:25,41:m,42:d,43:E,44:p,45:R,46:f,54:_,72:g,74:S,77:I,89:b,90:T},e(r,[2,4]),e(r,[2,5]),{1:[2,1]},{8:[1,41]},{4:17,5:a,7:42,8:l,9:s,11:i,13:n,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:o,22:h,23:u,24:y,25:23,33:25,41:m,42:d,43:E,44:p,45:R,46:f,54:_,72:g,74:S,77:I,89:b,90:T},{4:17,5:a,7:43,8:l,9:s,11:i,13:n,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:o,22:h,23:u,24:y,25:23,33:25,41:m,42:d,43:E,44:p,45:R,46:f,54:_,72:g,74:S,77:I,89:b,90:T},{4:17,5:a,7:44,8:l,9:s,11:i,13:n,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:o,22:h,23:u,24:y,25:23,33:25,41:m,42:d,43:E,44:p,45:R,46:f,54:_,72:g,74:S,77:I,89:b,90:T},{4:17,5:a,7:45,8:l,9:s,11:i,13:n,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:o,22:h,23:u,24:y,25:23,33:25,41:m,42:d,43:E,44:p,45:R,46:f,54:_,72:g,74:S,77:I,89:b,90:T},{4:17,5:a,7:46,8:l,9:s,11:i,13:n,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:o,22:h,23:u,24:y,25:23,33:25,41:m,42:d,43:E,44:p,45:R,46:f,54:_,72:g,74:S,77:I,89:b,90:T},{4:17,5:a,7:47,8:l,9:s,11:i,13:n,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:o,22:h,23:u,24:y,25:23,33:25,41:m,42:d,43:E,44:p,45:R,46:f,54:_,72:g,74:S,77:I,89:b,90:T},{4:17,5:a,7:48,8:l,9:s,11:i,13:n,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:o,22:h,23:u,24:y,25:23,33:25,41:m,42:d,43:E,44:p,45:R,46:f,54:_,72:g,74:S,77:I,89:b,90:T},{4:17,5:a,7:49,8:l,9:s,11:i,13:n,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:o,22:h,23:u,24:y,25:23,33:25,41:m,42:d,43:E,44:p,45:R,46:f,54:_,72:g,74:S,77:I,89:b,90:T},{4:17,5:a,7:50,8:l,9:s,11:i,13:n,14:14,15:15,16:16,17:18,18:19,19:20,20:21,21:o,22:h,23:u,24:y,25:23,33:25,41:m,42:d,43:E,44:p,45:R,46:f,54:_,72:g,74:S,77:I,89:b,90:T},{26:51,89:[1,52],90:[1,53]},{55:54,89:[1,55],90:[1,56]},{29:[1,59],61:[1,57],63:[1,58]},e(k,[2,17]),e(k,[2,18]),e(k,[2,19]),e(k,[2,20]),{30:60,33:62,75:N,89:b,90:T},{30:63,33:62,75:N,89:b,90:T},{30:64,33:62,75:N,89:b,90:T},e(q,[2,29]),e(q,[2,30]),e(q,[2,31]),e(q,[2,32]),e(q,[2,33]),e(q,[2,34]),e(A,[2,81]),e(A,[2,82]),{1:[2,3]},{8:[2,8]},{8:[2,9]},{8:[2,10]},{8:[2,11]},{8:[2,12]},{8:[2,13]},{8:[2,14]},{8:[2,15]},{8:[2,16]},{27:[1,65],29:[1,66]},e(C,[2,79]),e(C,[2,80]),{27:[1,67],29:[1,68]},e(C,[2,85]),e(C,[2,86]),{62:69,65:v,66:w,67:x,68:L,69:D,70:O,71:$},{62:77,65:v,66:w,67:x,68:L,69:D,70:O,71:$},{30:78,33:62,75:N,89:b,90:T},{73:79,75:M,76:F,78:81,79:82,80:K,81:P,82:V,83:U,84:Y,85:B,86:Q,87:H,88:W},e(j,[2,60]),e(j,[2,62]),{73:93,75:M,76:F,78:81,79:82,80:K,81:P,82:V,83:U,84:Y,85:B,86:Q,87:H,88:W},{30:94,33:62,75:N,76:F,89:b,90:T},{5:[1,95]},{30:96,33:62,75:N,89:b,90:T},{5:[1,97]},{30:98,33:62,75:N,89:b,90:T},{63:[1,99]},e(G,[2,50]),e(G,[2,51]),e(G,[2,52]),e(G,[2,53]),e(G,[2,54]),e(G,[2,55]),e(G,[2,56]),{64:[1,100]},e(k,[2,59],{76:F}),e(k,[2,64],{76:z}),{33:103,75:[1,102],89:b,90:T},e(X,[2,65],{79:104,75:M,80:K,81:P,82:V,83:U,84:Y,85:B,86:Q,87:H,88:W}),e(J,[2,67]),e(J,[2,69]),e(J,[2,70]),e(J,[2,71]),e(J,[2,72]),e(J,[2,73]),e(J,[2,74]),e(J,[2,75]),e(J,[2,76]),e(J,[2,77]),e(J,[2,78]),e(k,[2,57],{76:z}),e(k,[2,58],{76:F}),{5:Z,28:105,31:ee,34:te,36:se,38:ie,40:ne},{27:[1,112],76:F},{5:re,40:ae,56:113,57:le,59:ce},{27:[1,118],76:F},{33:119,89:b,90:T},{33:120,89:b,90:T},{75:M,78:121,79:82,80:K,81:P,82:V,83:U,84:Y,85:B,86:Q,87:H,88:W},e(j,[2,61]),e(j,[2,63]),e(J,[2,68]),e(k,[2,21]),{32:[1,122]},{32:[1,123]},{32:[1,124]},{32:[1,125]},{5:Z,28:126,31:ee,34:te,36:se,38:ie,40:ne},e(k,[2,28]),{5:[1,127]},e(k,[2,42]),{32:[1,128]},{32:[1,129]},{5:re,40:ae,56:130,57:le,59:ce},e(k,[2,47]),{5:[1,131]},e(k,[2,48]),e(k,[2,49]),e(X,[2,66],{79:104,75:M,80:K,81:P,82:V,83:U,84:Y,85:B,86:Q,87:H,88:W}),{33:132,89:b,90:T},{35:133,89:[1,134],90:[1,135]},{37:136,47:[1,137],48:[1,138],49:[1,139]},{39:140,50:[1,141],51:[1,142],52:[1,143],53:[1,144]},e(k,[2,27]),{5:Z,28:145,31:ee,34:te,36:se,38:ie,40:ne},{58:146,89:[1,147],90:[1,148]},{60:149,89:[1,150],90:[1,151]},e(k,[2,46]),{5:re,40:ae,56:152,57:le,59:ce},{5:[1,153]},{5:[1,154]},{5:[2,83]},{5:[2,84]},{5:[1,155]},{5:[2,35]},{5:[2,36]},{5:[2,37]},{5:[1,156]},{5:[2,38]},{5:[2,39]},{5:[2,40]},{5:[2,41]},e(k,[2,22]),{5:[1,157]},{5:[2,87]},{5:[2,88]},{5:[1,158]},{5:[2,89]},{5:[2,90]},e(k,[2,43]),{5:Z,28:159,31:ee,34:te,36:se,38:ie,40:ne},{5:Z,28:160,31:ee,34:te,36:se,38:ie,40:ne},{5:Z,28:161,31:ee,34:te,36:se,38:ie,40:ne},{5:Z,28:162,31:ee,34:te,36:se,38:ie,40:ne},{5:re,40:ae,56:163,57:le,59:ce},{5:re,40:ae,56:164,57:le,59:ce},e(k,[2,23]),e(k,[2,24]),e(k,[2,25]),e(k,[2,26]),e(k,[2,44]),e(k,[2,45])],defaultActions:{8:[2,2],12:[2,1],41:[2,3],42:[2,8],43:[2,9],44:[2,10],45:[2,11],46:[2,12],47:[2,13],48:[2,14],49:[2,15],50:[2,16],134:[2,83],135:[2,84],137:[2,35],138:[2,36],139:[2,37],141:[2,38],142:[2,39],143:[2,40],144:[2,41],147:[2,87],148:[2,88],150:[2,89],151:[2,90]},parseError:(0,c.K2)((function(e,t){if(!t.recoverable){var s=new Error(e);throw s.hash=t,s}this.trace(e)}),"parseError"),parse:(0,c.K2)((function(e){var t=this,s=[0],i=[],n=[null],r=[],a=this.table,l="",o=0,h=0,u=0,y=r.slice.call(arguments,1),m=Object.create(this.lexer),d={yy:{}};for(var E in this.yy)Object.prototype.hasOwnProperty.call(this.yy,E)&&(d.yy[E]=this.yy[E]);m.setInput(e,d.yy),d.yy.lexer=m,d.yy.parser=this,void 0===m.yylloc&&(m.yylloc={});var p=m.yylloc;r.push(p);var R=m.options&&m.options.ranges;function f(){var e;return"number"!=typeof(e=i.pop()||m.lex()||1)&&(e instanceof Array&&(e=(i=e).pop()),e=t.symbols_[e]||e),e}"function"==typeof d.yy.parseError?this.parseError=d.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,c.K2)((function(e){s.length=s.length-2*e,n.length=n.length-e,r.length=r.length-e}),"popStack"),(0,c.K2)(f,"lex");for(var _,g,S,I,b,T,k,N,q,A={};;){if(S=s[s.length-1],this.defaultActions[S]?I=this.defaultActions[S]:(null==_&&(_=f()),I=a[S]&&a[S][_]),void 0===I||!I.length||!I[0]){var C="";for(T in q=[],a[S])this.terminals_[T]&&T>2&&q.push("'"+this.terminals_[T]+"'");C=m.showPosition?"Parse error on line "+(o+1)+":\n"+m.showPosition()+"\nExpecting "+q.join(", ")+", got '"+(this.terminals_[_]||_)+"'":"Parse error on line "+(o+1)+": Unexpected "+(1==_?"end of input":"'"+(this.terminals_[_]||_)+"'"),this.parseError(C,{text:m.match,token:this.terminals_[_]||_,line:m.yylineno,loc:p,expected:q})}if(I[0]instanceof Array&&I.length>1)throw new Error("Parse Error: multiple actions possible at state: "+S+", token: "+_);switch(I[0]){case 1:s.push(_),n.push(m.yytext),r.push(m.yylloc),s.push(I[1]),_=null,g?(_=g,g=null):(h=m.yyleng,l=m.yytext,o=m.yylineno,p=m.yylloc,u>0&&u--);break;case 2:if(k=this.productions_[I[1]][1],A.$=n[n.length-k],A._$={first_line:r[r.length-(k||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-(k||1)].first_column,last_column:r[r.length-1].last_column},R&&(A._$.range=[r[r.length-(k||1)].range[0],r[r.length-1].range[1]]),void 0!==(b=this.performAction.apply(A,[l,h,o,d.yy,I[1],n,r].concat(y))))return b;k&&(s=s.slice(0,-1*k*2),n=n.slice(0,-1*k),r=r.slice(0,-1*k)),s.push(this.productions_[I[1]][0]),n.push(A.$),r.push(A._$),N=a[s[s.length-2]][s[s.length-1]],s.push(N);break;case 3:return!0}}return!0}),"parse")},he=function(){return{EOF:1,parseError:(0,c.K2)((function(e,t){if(!this.yy.parser)throw new Error(e);this.yy.parser.parseError(e,t)}),"parseError"),setInput:(0,c.K2)((function(e,t){return this.yy=t||this.yy||{},this._input=e,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:(0,c.K2)((function(){var e=this._input[0];return this.yytext+=e,this.yyleng++,this.offset++,this.match+=e,this.matched+=e,e.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),e}),"input"),unput:(0,c.K2)((function(e){var t=e.length,s=e.split(/(?:\r\n?|\n)/g);this._input=e+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-t),this.offset-=t;var i=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),s.length-1&&(this.yylineno-=s.length-1);var n=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:s?(s.length===i.length?this.yylloc.first_column:0)+i[i.length-s.length].length-s[0].length:this.yylloc.first_column-t},this.options.ranges&&(this.yylloc.range=[n[0],n[0]+this.yyleng-t]),this.yyleng=this.yytext.length,this}),"unput"),more:(0,c.K2)((function(){return this._more=!0,this}),"more"),reject:(0,c.K2)((function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):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).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})}),"reject"),less:(0,c.K2)((function(e){this.unput(this.match.slice(e))}),"less"),pastInput:(0,c.K2)((function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")}),"pastInput"),upcomingInput:(0,c.K2)((function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")}),"upcomingInput"),showPosition:(0,c.K2)((function(){var e=this.pastInput(),t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"}),"showPosition"),test_match:(0,c.K2)((function(e,t){var s,i,n;if(this.options.backtrack_lexer&&(n={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&&(n.yylloc.range=this.yylloc.range.slice(0))),(i=e[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+e[0].length},this.yytext+=e[0],this.match+=e[0],this.matches=e,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(e[0].length),this.matched+=e[0],s=this.performAction.call(this,this.yy,this,t,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),s)return s;if(this._backtrack){for(var r in n)this[r]=n[r];return!1}return!1}),"test_match"),next:(0,c.K2)((function(){if(this.done)return this.EOF;var e,t,s,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var n=this._currentRules(),r=0;rt[0].length)){if(t=s,i=r,this.options.backtrack_lexer){if(!1!==(e=this.test_match(s,n[r])))return e;if(this._backtrack){t=!1;continue}return!1}if(!this.options.flex)break}return t?!1!==(e=this.test_match(t,n[i]))&&e:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})}),"next"),lex:(0,c.K2)((function(){var e=this.next();return e||this.lex()}),"lex"),begin:(0,c.K2)((function(e){this.conditionStack.push(e)}),"begin"),popState:(0,c.K2)((function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]}),"popState"),_currentRules:(0,c.K2)((function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules}),"_currentRules"),topState:(0,c.K2)((function(e){return(e=this.conditionStack.length-1-Math.abs(e||0))>=0?this.conditionStack[e]:"INITIAL"}),"topState"),pushState:(0,c.K2)((function(e){this.begin(e)}),"pushState"),stateStackSize:(0,c.K2)((function(){return this.conditionStack.length}),"stateStackSize"),options:{"case-insensitive":!0},performAction:(0,c.K2)((function(e,t,s,i){switch(s){case 0:return"title";case 1:return this.begin("acc_title"),9;case 2:return this.popState(),"acc_title_value";case 3:return this.begin("acc_descr"),11;case 4:return this.popState(),"acc_descr_value";case 5:this.begin("acc_descr_multiline");break;case 6:case 58:case 65:this.popState();break;case 7:return"acc_descr_multiline_value";case 8:return 21;case 9:return 22;case 10:return 23;case 11:return 24;case 12:return 5;case 13:case 14:case 15:case 56:break;case 16:return 8;case 17:return 6;case 18:return 27;case 19:return 40;case 20:return 29;case 21:return 32;case 22:return 31;case 23:return 34;case 24:return 36;case 25:return 38;case 26:return 41;case 27:return 42;case 28:return 43;case 29:return 44;case 30:return 45;case 31:return 46;case 32:return 47;case 33:return 48;case 34:return 49;case 35:return 50;case 36:return 51;case 37:return 52;case 38:return 53;case 39:return 54;case 40:return 65;case 41:return 66;case 42:return 67;case 43:return 68;case 44:return 69;case 45:return 70;case 46:return 71;case 47:return 57;case 48:return 59;case 49:return this.begin("style"),77;case 50:case 68:return 75;case 51:return 81;case 52:return 88;case 53:return"PERCENT";case 54:return 86;case 55:return 84;case 57:case 64:this.begin("string");break;case 59:return this.begin("style"),72;case 60:return this.begin("style"),74;case 61:return 61;case 62:return 64;case 63:return 63;case 66:return"qString";case 67:return t.yytext=t.yytext.trim(),89;case 69:return 80;case 70:return 76}}),"anonymous"),rules:[/^(?:title\s[^#\n;]+)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:(\r?\n)+)/i,/^(?:\s+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:$)/i,/^(?:requirementDiagram\b)/i,/^(?:\{)/i,/^(?:\})/i,/^(?::{3})/i,/^(?::)/i,/^(?:id\b)/i,/^(?:text\b)/i,/^(?:risk\b)/i,/^(?:verifyMethod\b)/i,/^(?:requirement\b)/i,/^(?:functionalRequirement\b)/i,/^(?:interfaceRequirement\b)/i,/^(?:performanceRequirement\b)/i,/^(?:physicalRequirement\b)/i,/^(?:designConstraint\b)/i,/^(?:low\b)/i,/^(?:medium\b)/i,/^(?:high\b)/i,/^(?:analysis\b)/i,/^(?:demonstration\b)/i,/^(?:inspection\b)/i,/^(?:test\b)/i,/^(?:element\b)/i,/^(?:contains\b)/i,/^(?:copies\b)/i,/^(?:derives\b)/i,/^(?:satisfies\b)/i,/^(?:verifies\b)/i,/^(?:refines\b)/i,/^(?:traces\b)/i,/^(?:type\b)/i,/^(?:docref\b)/i,/^(?:style\b)/i,/^(?:\w+)/i,/^(?::)/i,/^(?:;)/i,/^(?:%)/i,/^(?:-)/i,/^(?:#)/i,/^(?: )/i,/^(?:["])/i,/^(?:\n)/i,/^(?:classDef\b)/i,/^(?:class\b)/i,/^(?:<-)/i,/^(?:->)/i,/^(?:-)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[\w][^:,\r\n\{\<\>\-\=]*)/i,/^(?:\w+)/i,/^(?:[0-9]+)/i,/^(?:,)/i],conditions:{acc_descr_multiline:{rules:[6,7,68,69,70],inclusive:!1},acc_descr:{rules:[4,68,69,70],inclusive:!1},acc_title:{rules:[2,68,69,70],inclusive:!1},style:{rules:[50,51,52,53,54,55,56,57,58,68,69,70],inclusive:!1},unqString:{rules:[68,69,70],inclusive:!1},token:{rules:[68,69,70],inclusive:!1},string:{rules:[65,66,68,69,70],inclusive:!1},INITIAL:{rules:[0,1,3,5,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,59,60,61,62,63,64,67,68,69,70],inclusive:!0}}}}();function ue(){this.yy={}}return oe.lexer=he,(0,c.K2)(ue,"Parser"),ue.prototype=oe,oe.Parser=ue,new ue}();o.parser=o;var h=o,u=class{constructor(){this.relations=[],this.latestRequirement=this.getInitialRequirement(),this.requirements=new Map,this.latestElement=this.getInitialElement(),this.elements=new Map,this.classes=new Map,this.direction="TB",this.RequirementType={REQUIREMENT:"Requirement",FUNCTIONAL_REQUIREMENT:"Functional Requirement",INTERFACE_REQUIREMENT:"Interface Requirement",PERFORMANCE_REQUIREMENT:"Performance Requirement",PHYSICAL_REQUIREMENT:"Physical Requirement",DESIGN_CONSTRAINT:"Design Constraint"},this.RiskLevel={LOW_RISK:"Low",MED_RISK:"Medium",HIGH_RISK:"High"},this.VerifyType={VERIFY_ANALYSIS:"Analysis",VERIFY_DEMONSTRATION:"Demonstration",VERIFY_INSPECTION:"Inspection",VERIFY_TEST:"Test"},this.Relationships={CONTAINS:"contains",COPIES:"copies",DERIVES:"derives",SATISFIES:"satisfies",VERIFIES:"verifies",REFINES:"refines",TRACES:"traces"},this.setAccTitle=l.SV,this.getAccTitle=l.iN,this.setAccDescription=l.EI,this.getAccDescription=l.m7,this.setDiagramTitle=l.ke,this.getDiagramTitle=l.ab,this.getConfig=(0,c.K2)((()=>(0,l.D7)().requirement),"getConfig"),this.clear(),this.setDirection=this.setDirection.bind(this),this.addRequirement=this.addRequirement.bind(this),this.setNewReqId=this.setNewReqId.bind(this),this.setNewReqRisk=this.setNewReqRisk.bind(this),this.setNewReqText=this.setNewReqText.bind(this),this.setNewReqVerifyMethod=this.setNewReqVerifyMethod.bind(this),this.addElement=this.addElement.bind(this),this.setNewElementType=this.setNewElementType.bind(this),this.setNewElementDocRef=this.setNewElementDocRef.bind(this),this.addRelationship=this.addRelationship.bind(this),this.setCssStyle=this.setCssStyle.bind(this),this.setClass=this.setClass.bind(this),this.defineClass=this.defineClass.bind(this),this.setAccTitle=this.setAccTitle.bind(this),this.setAccDescription=this.setAccDescription.bind(this)}static{(0,c.K2)(this,"RequirementDB")}getDirection(){return this.direction}setDirection(e){this.direction=e}resetLatestRequirement(){this.latestRequirement=this.getInitialRequirement()}resetLatestElement(){this.latestElement=this.getInitialElement()}getInitialRequirement(){return{requirementId:"",text:"",risk:"",verifyMethod:"",name:"",type:"",cssStyles:[],classes:["default"]}}getInitialElement(){return{name:"",type:"",docRef:"",cssStyles:[],classes:["default"]}}addRequirement(e,t){return this.requirements.has(e)||this.requirements.set(e,{name:e,type:t,requirementId:this.latestRequirement.requirementId,text:this.latestRequirement.text,risk:this.latestRequirement.risk,verifyMethod:this.latestRequirement.verifyMethod,cssStyles:[],classes:["default"]}),this.resetLatestRequirement(),this.requirements.get(e)}getRequirements(){return this.requirements}setNewReqId(e){void 0!==this.latestRequirement&&(this.latestRequirement.requirementId=e)}setNewReqText(e){void 0!==this.latestRequirement&&(this.latestRequirement.text=e)}setNewReqRisk(e){void 0!==this.latestRequirement&&(this.latestRequirement.risk=e)}setNewReqVerifyMethod(e){void 0!==this.latestRequirement&&(this.latestRequirement.verifyMethod=e)}addElement(e){return this.elements.has(e)||(this.elements.set(e,{name:e,type:this.latestElement.type,docRef:this.latestElement.docRef,cssStyles:[],classes:["default"]}),c.Rm.info("Added new element: ",e)),this.resetLatestElement(),this.elements.get(e)}getElements(){return this.elements}setNewElementType(e){void 0!==this.latestElement&&(this.latestElement.type=e)}setNewElementDocRef(e){void 0!==this.latestElement&&(this.latestElement.docRef=e)}addRelationship(e,t,s){this.relations.push({type:e,src:t,dst:s})}getRelationships(){return this.relations}clear(){this.relations=[],this.resetLatestRequirement(),this.requirements=new Map,this.resetLatestElement(),this.elements=new Map,this.classes=new Map,(0,l.IU)()}setCssStyle(e,t){for(const s of e){const e=this.requirements.get(s)??this.elements.get(s);if(!t||!e)return;for(const s of t)s.includes(",")?e.cssStyles.push(...s.split(",")):e.cssStyles.push(s)}}setClass(e,t){for(const s of e){const e=this.requirements.get(s)??this.elements.get(s);if(e)for(const s of t){e.classes.push(s);const t=this.classes.get(s)?.styles;t&&e.cssStyles.push(...t)}}}defineClass(e,t){for(const s of e){let e=this.classes.get(s);void 0===e&&(e={id:s,styles:[],textStyles:[]},this.classes.set(s,e)),t&&t.forEach((function(t){if(/color/.exec(t)){const s=t.replace("fill","bgFill");e.textStyles.push(s)}e.styles.push(t)})),this.requirements.forEach((e=>{e.classes.includes(s)&&e.cssStyles.push(...t.flatMap((e=>e.split(","))))})),this.elements.forEach((e=>{e.classes.includes(s)&&e.cssStyles.push(...t.flatMap((e=>e.split(","))))}))}}getClasses(){return this.classes}getData(){const e=(0,l.D7)(),t=[],s=[];for(const i of this.requirements.values()){const s=i;s.id=i.name,s.cssStyles=i.cssStyles,s.cssClasses=i.classes.join(" "),s.shape="requirementBox",s.look=e.look,t.push(s)}for(const i of this.elements.values()){const s=i;s.shape="requirementBox",s.look=e.look,s.id=i.name,s.cssStyles=i.cssStyles,s.cssClasses=i.classes.join(" "),t.push(s)}for(const i of this.relations){let t=0;const n=i.type===this.Relationships.CONTAINS,r={id:`${i.src}-${i.dst}-${t}`,start:this.requirements.get(i.src)?.name??this.elements.get(i.src)?.name,end:this.requirements.get(i.dst)?.name??this.elements.get(i.dst)?.name,label:`<<${i.type}>>`,classes:"relationshipLine",style:["fill:none",n?"":"stroke-dasharray: 10,7"],labelpos:"c",thickness:"normal",type:"normal",pattern:n?"normal":"dashed",arrowTypeStart:n?"requirement_contains":"",arrowTypeEnd:n?"":"requirement_arrow",look:e.look};s.push(r),t++}return{nodes:t,edges:s,other:{},config:e,direction:this.getDirection()}}},y=(0,c.K2)((e=>`\n\n marker {\n fill: ${e.relationColor};\n stroke: ${e.relationColor};\n }\n\n marker.cross {\n stroke: ${e.lineColor};\n }\n\n svg {\n font-family: ${e.fontFamily};\n font-size: ${e.fontSize};\n }\n\n .reqBox {\n fill: ${e.requirementBackground};\n fill-opacity: 1.0;\n stroke: ${e.requirementBorderColor};\n stroke-width: ${e.requirementBorderSize};\n }\n \n .reqTitle, .reqLabel{\n fill: ${e.requirementTextColor};\n }\n .reqLabelBox {\n fill: ${e.relationLabelBackground};\n fill-opacity: 1.0;\n }\n\n .req-title-line {\n stroke: ${e.requirementBorderColor};\n stroke-width: ${e.requirementBorderSize};\n }\n .relationshipLine {\n stroke: ${e.relationColor};\n stroke-width: 1;\n }\n .relationshipLabel {\n fill: ${e.relationLabelColor};\n }\n .divider {\n stroke: ${e.nodeBorder};\n stroke-width: 1;\n }\n .label {\n font-family: ${e.fontFamily};\n color: ${e.nodeTextColor||e.textColor};\n }\n .label text,span {\n fill: ${e.nodeTextColor||e.textColor};\n color: ${e.nodeTextColor||e.textColor};\n }\n .labelBkg {\n background-color: ${e.edgeLabelBackground};\n }\n\n`),"getStyles"),m={};(0,c.VA)(m,{draw:()=>d});var d=(0,c.K2)((async function(e,t,s,o){c.Rm.info("REF0:"),c.Rm.info("Drawing requirement diagram (unified)",t);const{securityLevel:h,state:u,layout:y}=(0,l.D7)(),m=o.db.getData(),d=(0,i.A)(t,h);m.type=o.type,m.layoutAlgorithm=(0,r.q7)(y),m.nodeSpacing=u?.nodeSpacing??50,m.rankSpacing=u?.rankSpacing??50,m.markers=["requirement_contains","requirement_arrow"],m.diagramId=t,await(0,r.XX)(m,d);a._K.insertTitle(d,"requirementDiagramTitleText",u?.titleTopMargin??25,o.db.getDiagramTitle()),(0,n.P)(d,8,"requirementDiagram",u?.useMaxWidth??!0)}),"draw"),E={parser:h,get db(){return new u},renderer:m,styles:y}}}]); \ No newline at end of file diff --git a/assets/js/90d3335d.d7233753.js b/assets/js/90d3335d.d7233753.js new file mode 100644 index 00000000..27ef1180 --- /dev/null +++ b/assets/js/90d3335d.d7233753.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1482],{20415:o=>{o.exports=JSON.parse('{"tag":{"label":"Version Control","permalink":"/blog/tags/version-control","allTagsPath":"/blog/tags","count":1,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/version-control","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]); \ No newline at end of file diff --git a/assets/js/91e42665.f3b5b4b4.js b/assets/js/91e42665.f3b5b4b4.js new file mode 100644 index 00000000..fadeb7d0 --- /dev/null +++ b/assets/js/91e42665.f3b5b4b4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6589],{56822:e=>{e.exports=JSON.parse('{"tag":{"label":"UI Improvements","permalink":"/blog/tags/ui-improvements","allTagsPath":"/blog/tags","count":1,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/ui-improvements","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]); \ No newline at end of file diff --git a/assets/js/92fa5ef1.0e903c8b.js b/assets/js/92fa5ef1.0e903c8b.js new file mode 100644 index 00000000..52986629 --- /dev/null +++ b/assets/js/92fa5ef1.0e903c8b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4044],{19232:t=>{t.exports=JSON.parse('{"tag":{"label":"History","permalink":"/blog/tags/history","allTagsPath":"/blog/tags","count":1,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/history","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]); \ No newline at end of file diff --git a/assets/js/9412.3e04fafa.js b/assets/js/9412.3e04fafa.js new file mode 100644 index 00000000..60ea768c --- /dev/null +++ b/assets/js/9412.3e04fafa.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9412],{25871:(e,t,a)=>{function i(e,t){e.accDescr&&t.setAccDescription?.(e.accDescr),e.accTitle&&t.setAccTitle?.(e.accTitle),e.title&&t.setDiagramTitle?.(e.title)}a.d(t,{S:()=>i}),(0,a(40797).K2)(i,"populateCommonDb")},69412:(e,t,a)=>{a.d(t,{diagram:()=>C});var i=a(73590),l=a(25871),n=a(13226),r=a(67633),s=a(40797),o=a(78731),c=a(70451),p=r.UI.pie,d={sections:new Map,showData:!1,config:p},u=d.sections,g=d.showData,h=structuredClone(p),f=(0,s.K2)((()=>structuredClone(h)),"getConfig"),m=(0,s.K2)((()=>{u=new Map,g=d.showData,(0,r.IU)()}),"clear"),w=(0,s.K2)((({label:e,value:t})=>{if(t<0)throw new Error(`"${e}" has invalid value: ${t}. Negative values are not allowed in pie charts. All slice values must be >= 0.`);u.has(e)||(u.set(e,t),s.Rm.debug(`added new section: ${e}, with value: ${t}`))}),"addSection"),S=(0,s.K2)((()=>u),"getSections"),x=(0,s.K2)((e=>{g=e}),"setShowData"),D=(0,s.K2)((()=>g),"getShowData"),$={getConfig:f,clear:m,setDiagramTitle:r.ke,getDiagramTitle:r.ab,setAccTitle:r.SV,getAccTitle:r.iN,setAccDescription:r.EI,getAccDescription:r.m7,addSection:w,getSections:S,setShowData:x,getShowData:D},T=(0,s.K2)(((e,t)=>{(0,l.S)(e,t),t.setShowData(e.showData),e.sections.map(t.addSection)}),"populateDb"),b={parse:(0,s.K2)((async e=>{const t=await(0,o.qg)("pie",e);s.Rm.debug(t),T(t,$)}),"parse")},v=(0,s.K2)((e=>`\n .pieCircle{\n stroke: ${e.pieStrokeColor};\n stroke-width : ${e.pieStrokeWidth};\n opacity : ${e.pieOpacity};\n }\n .pieOuterCircle{\n stroke: ${e.pieOuterStrokeColor};\n stroke-width: ${e.pieOuterStrokeWidth};\n fill: none;\n }\n .pieTitleText {\n text-anchor: middle;\n font-size: ${e.pieTitleTextSize};\n fill: ${e.pieTitleTextColor};\n font-family: ${e.fontFamily};\n }\n .slice {\n font-family: ${e.fontFamily};\n fill: ${e.pieSectionTextColor};\n font-size:${e.pieSectionTextSize};\n // fill: white;\n }\n .legend text {\n fill: ${e.pieLegendTextColor};\n font-family: ${e.fontFamily};\n font-size: ${e.pieLegendTextSize};\n }\n`),"getStyles"),y=(0,s.K2)((e=>{const t=[...e.values()].reduce(((e,t)=>e+t),0),a=[...e.entries()].map((([e,t])=>({label:e,value:t}))).filter((e=>e.value/t*100>=1)).sort(((e,t)=>t.value-e.value));return(0,c.rLf)().value((e=>e.value))(a)}),"createPieArcs"),C={parser:b,db:$,renderer:{draw:(0,s.K2)(((e,t,a,l)=>{s.Rm.debug("rendering pie chart\n"+e);const o=l.db,p=(0,r.D7)(),d=(0,n.$t)(o.getConfig(),p.pie),u=18,g=450,h=(0,i.D)(t),f=h.append("g");f.attr("transform","translate(225,225)");const{themeVariables:m}=p;let[w]=(0,n.I5)(m.pieOuterStrokeWidth);w??=2;const S=d.textPosition,x=Math.min(450,g)/2-40,D=(0,c.JLW)().innerRadius(0).outerRadius(x),$=(0,c.JLW)().innerRadius(x*S).outerRadius(x*S);f.append("circle").attr("cx",0).attr("cy",0).attr("r",x+w/2).attr("class","pieOuterCircle");const T=o.getSections(),b=y(T),v=[m.pie1,m.pie2,m.pie3,m.pie4,m.pie5,m.pie6,m.pie7,m.pie8,m.pie9,m.pie10,m.pie11,m.pie12];let C=0;T.forEach((e=>{C+=e}));const k=b.filter((e=>"0"!==(e.data.value/C*100).toFixed(0))),A=(0,c.UMr)(v);f.selectAll("mySlices").data(k).enter().append("path").attr("d",D).attr("fill",(e=>A(e.data.label))).attr("class","pieCircle"),f.selectAll("mySlices").data(k).enter().append("text").text((e=>(e.data.value/C*100).toFixed(0)+"%")).attr("transform",(e=>"translate("+$.centroid(e)+")")).style("text-anchor","middle").attr("class","slice"),f.append("text").text(o.getDiagramTitle()).attr("x",0).attr("y",-200).attr("class","pieTitleText");const K=[...T.entries()].map((([e,t])=>({label:e,value:t}))),R=f.selectAll(".legend").data(K).enter().append("g").attr("class","legend").attr("transform",((e,t)=>"translate(216,"+(22*t-22*K.length/2)+")"));R.append("rect").attr("width",u).attr("height",u).style("fill",(e=>A(e.label))).style("stroke",(e=>A(e.label))),R.append("text").attr("x",22).attr("y",14).text((e=>o.getShowData()?`${e.label} [${e.value}]`:e.label));const z=512+Math.max(...R.selectAll("text").nodes().map((e=>e?.getBoundingClientRect().width??0)));h.attr("viewBox",`0 0 ${z} 450`),(0,r.a$)(h,g,z,d.useMaxWidth)}),"draw")},styles:v}}}]); \ No newline at end of file diff --git a/assets/js/9510.34960141.js b/assets/js/9510.34960141.js new file mode 100644 index 00000000..bc4a8927 --- /dev/null +++ b/assets/js/9510.34960141.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9510],{29510:(r,s,e)=>{e.d(s,{diagram:()=>c});var a=e(71746),t=(e(52501),e(89625),e(21152),e(10045),e(5164),e(28698),e(5894),e(63245),e(32387),e(30092),e(13226),e(67633),e(40797)),c={parser:a._$,get db(){return new a.NM},renderer:a.Lh,styles:a.tM,init:(0,t.K2)((r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute}),"init")}}}]); \ No newline at end of file diff --git a/assets/js/960e3091.fed453e2.js b/assets/js/960e3091.fed453e2.js new file mode 100644 index 00000000..087606a8 --- /dev/null +++ b/assets/js/960e3091.fed453e2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3132],{11582:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>c,contentTitle:()=>l,default:()=>h,frontMatter:()=>t,metadata:()=>o,toc:()=>d});const o=JSON.parse('{"id":"Schools & Workplaces/phoenix-pro-for-education","title":"Phoenix Pro for Education (Free)","description":"A large portion of the Phoenix Code community comes from schools and universities, where students and teachers value ease of use and a low learning curve. Education has always been central to our mission, and we want every student to have access to the full Phoenix Pro feature set without barriers.","source":"@site/docs/09-Schools & Workplaces/01-phoenix-pro-for-education.md","sourceDirName":"09-Schools & Workplaces","slug":"/phoenix-pro-school","permalink":"/docs/phoenix-pro-school","draft":false,"unlisted":false,"editUrl":"https://github.com/phcode-dev/docs/blob/main/docs/09-Schools & Workplaces/01-phoenix-pro-for-education.md","tags":[],"version":"current","sidebarPosition":1,"frontMatter":{"title":"Phoenix Pro for Education (Free)","slug":"/phoenix-pro-school"},"sidebar":"tutorialSidebar","previous":{"title":"ESLint for Javascript Problems","permalink":"/docs/Features/Problems Panel/ESLint"},"next":{"title":"AI Control For School And Work","permalink":"/docs/control-ai"}}');var i=s(74848),r=s(28453);const t={title:"Phoenix Pro for Education (Free)",slug:"/phoenix-pro-school"},l="Phoenix Pro for Schools & Universities (Free)",c={},d=[{value:"Who Is Eligible?",id:"who-is-eligible",level:2},{value:"How It Works",id:"how-it-works",level:3},{value:"Schools Without a .edu or .ac.* Domain",id:"schools-without-a-edu-or-ac-domain",level:2},{value:"To onboard your school domain:",id:"to-onboard-your-school-domain",level:3},{value:"\u2714 Cost",id:"-cost",level:3},{value:"Requesting a Volume License Key",id:"requesting-a-volume-license-key",level:2},{value:"How Volume License Keys Work",id:"how-volume-license-keys-work",level:2},{value:"Activating Phoenix Pro Using a Volume License Key (Desktop App)",id:"activating-phoenix-pro-using-a-volume-license-key-desktop-app",level:2},{value:"Students without school email and no school onboarding",id:"students-without-school-email-and-no-school-onboarding",level:3},{value:"Volume licenses must be requested by authorized school representatives",id:"volume-licenses-must-be-requested-by-authorized-school-representatives",level:3},{value:"Can students use the volume license on their personal laptops?",id:"can-students-use-the-volume-license-on-their-personal-laptops",level:3},{value:"Do device activations remain permanent?",id:"do-device-activations-remain-permanent",level:3},{value:"Can we issue new volume license keys whenever needed?",id:"can-we-issue-new-volume-license-keys-whenever-needed",level:3},{value:"Can teachers use Phoenix Pro for personal/professional work?",id:"can-teachers-use-phoenix-pro-for-personalprofessional-work",level:3},{value:"Is Phoenix Pro free for commercial educational projects?",id:"is-phoenix-pro-free-for-commercial-educational-projects",level:3}];function a(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.header,{children:(0,i.jsx)(n.h1,{id:"phoenix-pro-for-schools--universities-free",children:"Phoenix Pro for Schools & Universities (Free)"})}),"\n",(0,i.jsx)(n.p,{children:"A large portion of the Phoenix Code community comes from schools and universities, where students and teachers value ease of use and a low learning curve. Education has always been central to our mission, and we want every student to have access to the full Phoenix Pro feature set without barriers."}),"\n",(0,i.jsxs)(n.p,{children:["For this reason, we provide ",(0,i.jsx)(n.strong,{children:"Phoenix Pro for free to the entire education ecosystem"}),", along with deployment tools tailored to classrooms, labs, and student devices."]}),"\n",(0,i.jsx)(n.p,{children:"Schools can deploy Phoenix Pro in two ways:"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Email-based automatic activation"})," (recommended)"]}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Educational Volume License Keys"})," (for labs, shared devices, and student/teacher-owned devices)"]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["This page explains how schools and universities can obtain free Phoenix Pro access and deploy it across ",(0,i.jsx)(n.strong,{children:"any devices used within the institution"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"who-is-eligible",children:"Who Is Eligible?"}),"\n",(0,i.jsx)(n.p,{children:"Phoenix Pro is free for:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Students and teachers with ",(0,i.jsx)(n.strong,{children:".edu"})," or ",(0,i.jsx)(n.strong,{children:".ac."}),"* email addresses"]}),"\n",(0,i.jsx)(n.li,{children:"Institutions we already recognize and verify"}),"\n",(0,i.jsxs)(n.li,{children:["Schools requesting ",(0,i.jsx)(n.strong,{children:"Educational Volume Licenses"})]}),"\n",(0,i.jsxs)(n.li,{children:["Both ",(0,i.jsx)(n.strong,{children:"commercial and non-commercial"})," educational use"]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Volume licenses may be applied to:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"School-owned lab computers"}),"\n",(0,i.jsx)(n.li,{children:"Shared classroom devices"}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Student/teacher-owned laptops/home computers"})," (per administrator distribution)"]}),"\n"]}),"\n",(0,i.jsx)(n.h1,{id:"option-1-email-based-student--teacher-activation-instant",children:"Option 1: Email-Based Student & Teacher Activation (Instant)"}),"\n",(0,i.jsx)(n.p,{children:"Phoenix Pro is automatically activated for users who log in with:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["A ",(0,i.jsx)(n.strong,{children:".edu"})," email"]}),"\n",(0,i.jsxs)(n.li,{children:["A ",(0,i.jsx)(n.strong,{children:".ac."}),"* email"]}),"\n",(0,i.jsxs)(n.li,{children:["Any ",(0,i.jsx)(n.strong,{children:"recognized school domain"})," already onboarded to Phoenix Code"]}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"how-it-works",children:(0,i.jsx)(n.strong,{children:"How It Works"})}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsx)(n.li,{children:"Open Phoenix Code"}),"\n",(0,i.jsx)(n.li,{children:"Sign in using your school email"}),"\n",(0,i.jsx)(n.li,{children:"Phoenix Pro activates instantly"}),"\n",(0,i.jsx)(n.li,{children:"No approval or license key required"}),"\n"]}),"\n",(0,i.jsxs)(n.h2,{id:"schools-without-a-edu-or-ac-domain",children:["Schools Without a ",(0,i.jsx)(n.code,{children:".edu"})," or ",(0,i.jsx)(n.code,{children:".ac.*"})," Domain"]}),"\n",(0,i.jsx)(n.p,{children:"Some schools, especially K-12 institutions, use custom domains.\nWe support these too."}),"\n",(0,i.jsx)(n.h3,{id:"to-onboard-your-school-domain",children:"To onboard your school domain:"}),"\n",(0,i.jsxs)(n.p,{children:["Email ",(0,i.jsx)(n.strong,{children:(0,i.jsx)(n.a,{href:"mailto:support@core.ai",children:"support@core.ai"})})," with:"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Subject:\n",(0,i.jsx)(n.strong,{children:(0,i.jsx)(n.code,{children:"[education support] Request to onboard "})})]}),"\n",(0,i.jsx)(n.li,{children:"School website URL"}),"\n",(0,i.jsx)(n.li,{children:"Admin/teacher contact email"}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Once your domain is approved, all users with that email domain automatically receive Phoenix Pro upon login."}),"\n",(0,i.jsx)(n.h1,{id:"option-2-educational-volume-license-for-labs--studentteacher-devices",children:"Option 2: Educational Volume License (For Labs + Student/Teacher Devices)"}),"\n",(0,i.jsxs)(n.p,{children:["Educational Volume Licenses allow schools to activate Phoenix Pro on devices ",(0,i.jsx)(n.strong,{children:"without requiring login"}),".\nThis is suitable for:"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Classrooms & computer labs"}),"\n",(0,i.jsx)(n.li,{children:"Devices shared across many students"}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.strong,{children:"Student/teacher-owned laptops"}),", when a school wants simple bulk activation"]}),"\n",(0,i.jsx)(n.li,{children:"Younger students without email accounts"}),"\n"]}),"\n",(0,i.jsx)(n.h3,{id:"-cost",children:"\u2714 Cost"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Free"})," for all educational usage."]}),"\n",(0,i.jsx)(n.h2,{id:"requesting-a-volume-license-key",children:"Requesting a Volume License Key"}),"\n",(0,i.jsxs)(n.p,{children:["Email ",(0,i.jsx)(n.strong,{children:(0,i.jsx)(n.a,{href:"mailto:support@core.ai",children:"support@core.ai"})})," with:"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Subject:\n",(0,i.jsx)(n.strong,{children:(0,i.jsx)(n.code,{children:"[educational license request for ]"})})]}),"\n",(0,i.jsx)(n.li,{children:"School name"}),"\n",(0,i.jsx)(n.li,{children:"School website"}),"\n",(0,i.jsx)(n.li,{children:"Your role/title"}),"\n",(0,i.jsx)(n.li,{children:"Administrator email for license management"}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"We will approve the school and assign management access to that admin account in:"}),"\n",(0,i.jsxs)(n.p,{children:["\ud83d\udd17 ",(0,i.jsx)(n.a,{href:"https://account.phcode.dev/",children:"https://account.phcode.dev/"})]}),"\n",(0,i.jsx)(n.p,{children:"The admin will find a new section under:"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Advanced Settings \u2192 Phoenix Pro Edu - Volume License Key"})}),"\n",(0,i.jsx)(n.p,{children:"From there, you can obtain the license key."}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Volume License Key section under Advanced Settings in the account dashboard",src:s(46219).A+"",width:"946",height:"706"})}),"\n",(0,i.jsx)(n.h2,{id:"how-volume-license-keys-work",children:"How Volume License Keys Work"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Each license key is ",(0,i.jsx)(n.strong,{children:"valid for 2 weeks"})]}),"\n",(0,i.jsxs)(n.li,{children:["During these 2 weeks, you may activate ",(0,i.jsx)(n.strong,{children:"unlimited devices"}),":","\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"School-owned devices"}),"\n",(0,i.jsx)(n.li,{children:"Lab computers"}),"\n",(0,i.jsx)(n.li,{children:"Shared machines"}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.strong,{children:"Student/teacher-owned devices (allowed)"})}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["Once activated, a device stays Phoenix Pro ",(0,i.jsx)(n.strong,{children:"permanently"})]}),"\n",(0,i.jsx)(n.li,{children:"After the 2-week window, the key expires"}),"\n",(0,i.jsxs)(n.li,{children:["Admins can generate a ",(0,i.jsx)(n.strong,{children:"new key at any time"})," for new devices"]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"This model ensures:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Easy deployment"}),"\n",(0,i.jsx)(n.li,{children:"Login is optional, no login required on each machine."}),"\n",(0,i.jsx)(n.li,{children:"The device now has Phoenix Pro permanently"}),"\n",(0,i.jsx)(n.li,{children:"School admin may rotate(reissue) keys as needed"}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"activating-phoenix-pro-using-a-volume-license-key-desktop-app",children:"Activating Phoenix Pro Using a Volume License Key (Desktop App)"}),"\n",(0,i.jsx)(n.p,{children:"On any device\u2014lab or student-owned:"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["Open ",(0,i.jsx)(n.strong,{children:"Phoenix Code Desktop"})]}),"\n",(0,i.jsxs)(n.li,{children:["Go to:\n",(0,i.jsx)(n.strong,{children:"Help \u2192 Manage Licenses"})]}),"\n",(0,i.jsx)(n.li,{children:"Enter the Education Volume License Key"}),"\n",(0,i.jsxs)(n.li,{children:["Click ",(0,i.jsx)(n.strong,{children:"Activate"})]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"Activating Phoenix Pro via Help \u2192 Manage Licenses in the desktop app",src:s(64898).A+"",width:"676",height:"562"})}),"\n",(0,i.jsx)(n.h1,{id:"limitations",children:"Limitations"}),"\n",(0,i.jsx)(n.h3,{id:"students-without-school-email-and-no-school-onboarding",children:"Students without school email and no school onboarding"}),"\n",(0,i.jsxs)(n.p,{children:["If a student does not have a school-provided email ",(0,i.jsx)(n.strong,{children:"and the school is not onboarded"}),", we currently cannot issue individual student educational licenses."]}),"\n",(0,i.jsx)(n.h3,{id:"volume-licenses-must-be-requested-by-authorized-school-representatives",children:"Volume licenses must be requested by authorized school representatives"}),"\n",(0,i.jsx)(n.p,{children:"Students cannot request volume licenses directly without school/teacher approval."}),"\n",(0,i.jsx)(n.h1,{id:"summary-of-support-email-subjects",children:"Summary of Support Email Subjects"}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Purpose"}),(0,i.jsx)(n.th,{children:"Subject Format"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Onboarding a school domain"}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"[education support] Request to onboard "})})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Requesting volume license"}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"[educational license request for ]"})})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Student account/license issues"}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"[student license] "})})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"Other educational support"}),(0,i.jsx)(n.td,{children:(0,i.jsx)(n.code,{children:"[education support] "})})]})]})]}),"\n",(0,i.jsx)(n.p,{children:"Use correct subjects for faster handling."}),"\n",(0,i.jsx)(n.h1,{id:"faq",children:"FAQ"}),"\n",(0,i.jsx)(n.h3,{id:"can-students-use-the-volume-license-on-their-personal-laptops",children:(0,i.jsx)(n.strong,{children:"Can students use the volume license on their personal laptops?"})}),"\n",(0,i.jsx)(n.p,{children:"Yes. Schools may distribute the Education Volume License Key to activate student-owned devices."}),"\n",(0,i.jsx)(n.h3,{id:"do-device-activations-remain-permanent",children:(0,i.jsx)(n.strong,{children:"Do device activations remain permanent?"})}),"\n",(0,i.jsx)(n.p,{children:"Yes. Even after the license key expires, previously activated devices remain Phoenix Pro."}),"\n",(0,i.jsx)(n.h3,{id:"can-we-issue-new-volume-license-keys-whenever-needed",children:(0,i.jsx)(n.strong,{children:"Can we issue new volume license keys whenever needed?"})}),"\n",(0,i.jsx)(n.p,{children:"Yes. The admin can generate new 2-week activation keys anytime."}),"\n",(0,i.jsx)(n.h3,{id:"can-teachers-use-phoenix-pro-for-personalprofessional-work",children:(0,i.jsx)(n.strong,{children:"Can teachers use Phoenix Pro for personal/professional work?"})}),"\n",(0,i.jsx)(n.p,{children:"Yes \u2014 as long as they use their school email."}),"\n",(0,i.jsx)(n.h3,{id:"is-phoenix-pro-free-for-commercial-educational-projects",children:(0,i.jsx)(n.strong,{children:"Is Phoenix Pro free for commercial educational projects?"})}),"\n",(0,i.jsx)(n.p,{children:"Yes. Students and teachers may use Phoenix Pro for any purpose."}),"\n",(0,i.jsx)(n.h1,{id:"need-help",children:"Need Help?"}),"\n",(0,i.jsx)(n.p,{children:"Support options:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["Discussions: ",(0,i.jsx)(n.a,{href:"https://github.com/orgs/phcode-dev/discussions/new/choose",children:"https://github.com/orgs/phcode-dev/discussions/new/choose"})]}),"\n",(0,i.jsxs)(n.li,{children:["Email: ",(0,i.jsx)(n.strong,{children:(0,i.jsx)(n.a,{href:"mailto:support@core.ai",children:"support@core.ai"})})]}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"We are committed to supporting educators and institutions worldwide."})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(a,{...e})}):a(e)}},64898:(e,n,s)=>{s.d(n,{A:()=>o});const o=s.p+"assets/images/activate-edu-license-4e9f1f80f1c2a90bc87aedca55403203.png"},46219:(e,n,s)=>{s.d(n,{A:()=>o});const o=s.p+"assets/images/vol-license-70d2acf87c6f61d4db2b4d598f6b7979.png"},28453:(e,n,s)=>{s.d(n,{R:()=>t,x:()=>l});var o=s(96540);const i={},r=o.createContext(i);function t(e){const n=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:t(e.components),o.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/9785.c30460b4.js b/assets/js/9785.c30460b4.js new file mode 100644 index 00000000..c3411eef --- /dev/null +++ b/assets/js/9785.c30460b4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9785],{44096:(e,t,s)=>{s.d(t,{in:()=>c,OU:()=>A,Ki:()=>C,kJ:()=>x,x:()=>l,e7:()=>h,J_:()=>p,Gx:()=>k});var a=s(96540),n=s(89532),r=s(36803),i=s(74848);function l(){const e=(0,r.A)(),t=e?.data?.blogMetadata;if(!t)throw new Error("useBlogMetadata() can't be called on the current route because the blog metadata could not be found in route context");return t}const o=a.createContext(null);function c({children:e,content:t,isBlogPostPage:s=!1}){const n=function({content:e,isBlogPostPage:t}){return(0,a.useMemo)((()=>({metadata:e.metadata,frontMatter:e.frontMatter,assets:e.assets,toc:e.toc,isBlogPostPage:t})),[e,t])}({content:t,isBlogPostPage:s});return(0,i.jsx)(o.Provider,{value:n,children:e})}function h(){const e=(0,a.useContext)(o);if(null===e)throw new n.dV("BlogPostProvider");return e}var m=s(86025),u=s(44586);const d=e=>new Date(e).toISOString();function g(e){const t=e.map(v);return{author:1===t.length?t[0]:t}}function f(e,t,s){return e?{image:w({imageUrl:t(e,{absolute:!0}),caption:`title image for the blog post: ${s}`})}:{}}function x(e){const{siteConfig:t}=(0,u.A)(),{withBaseUrl:s}=(0,m.hH)(),{metadata:{blogDescription:a,blogTitle:n,permalink:r}}=e,i=`${t.url}${r}`;return{"@context":"https://schema.org","@type":"Blog","@id":i,mainEntityOfPage:i,headline:n,description:a,blogPost:e.items.map((e=>function(e,t,s){const{assets:a,frontMatter:n,metadata:r}=e,{date:i,title:l,description:o,lastUpdatedAt:c}=r,h=a.image??n.image,m=n.keywords??[],u=`${t.url}${r.permalink}`,x=c?d(c):void 0;return{"@type":"BlogPosting","@id":u,mainEntityOfPage:u,url:u,headline:l,name:l,description:o,datePublished:i,...x?{dateModified:x}:{},...g(r.authors),...f(h,s,l),...m?{keywords:m}:{}}}(e.content,t,s)))}}function p(){const e=l(),{assets:t,metadata:s}=h(),{siteConfig:a}=(0,u.A)(),{withBaseUrl:n}=(0,m.hH)(),{date:r,title:i,description:o,frontMatter:c,lastUpdatedAt:x}=s,p=t.image??c.image,v=c.keywords??[],w=x?d(x):void 0,j=`${a.url}${s.permalink}`;return{"@context":"https://schema.org","@type":"BlogPosting","@id":j,mainEntityOfPage:j,url:j,headline:i,name:i,description:o,datePublished:r,...w?{dateModified:w}:{},...g(s.authors),...f(p,n,i),...v?{keywords:v}:{},isPartOf:{"@type":"Blog","@id":`${a.url}${e.blogBasePath}`,name:e.blogTitle}}}function v(e){return{"@type":"Person",...e.name?{name:e.name}:{},...e.title?{description:e.title}:{},...e.url?{url:e.url}:{},...e.email?{email:e.email}:{},...e.imageURL?{image:e.imageURL}:{}}}function w({imageUrl:e,caption:t}){return{"@type":"ImageObject","@id":e,url:e,contentUrl:e,caption:t}}var j=s(56347),b=s(28774),M=s(31682),N=s(99169);function k(e){const{pathname:t}=(0,j.zy)();return(0,a.useMemo)((()=>e.filter((e=>function(e,t){return!(e.unlisted&&!(0,N.ys)(e.permalink,t))}(e,t)))),[e,t])}function C(e){const t=(0,M.$z)(e,(e=>`${new Date(e.date).getFullYear()}`)),s=Object.entries(t);return s.reverse(),s}function A({items:e,ulClassName:t,liClassName:s,linkClassName:a,linkActiveClassName:n}){return(0,i.jsx)("ul",{className:t,children:e.map((e=>(0,i.jsx)("li",{className:s,children:(0,i.jsx)(b.A,{isNavLink:!0,to:e.permalink,className:a,activeClassName:n,children:e.title})},e.permalink)))})}},39907:(e,t,s)=>{s.d(t,{A:()=>k});var a=s(96540),n=s(34164),r=s(28774),i=s(74848);const l="githubSvg_Uu4N";const o="xSvg_y3PF";const c="linkedinSvg_FCgI";const h=function(e){return(0,i.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",...e,children:[(0,i.jsx)("path",{stroke:"none",d:"M0 0h24v24H0z",fill:"none"}),(0,i.jsx)("path",{d:"M1.2 12a10.8 10.8 0 1 0 21.6 0a10.8 10.8 0 0 0 -21.6 0"}),(0,i.jsx)("path",{d:"M1.92 8.4h20.16"}),(0,i.jsx)("path",{d:"M1.92 15.6h20.16"}),(0,i.jsx)("path",{d:"M11.4 1.2a20.4 20.4 0 0 0 0 21.6"}),(0,i.jsx)("path",{d:"M12.6 1.2a20.4 20.4 0 0 1 0 21.6"})]})},m="blueskySvg_AzZw";const u="instagramSvg_YC40";const d="threadsSvg_PTXY";const g={authorSocials:"authorSocials_rSDt",authorSocialLink:"authorSocialLink_owbf",authorSocialIcon:"authorSocialIcon_XYv3"},f={twitter:{Icon:function(e){return(0,i.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 256 209",width:"1em",height:"1em",preserveAspectRatio:"xMidYMid",...e,children:(0,i.jsx)("path",{d:"M256 25.45c-9.42 4.177-19.542 7-30.166 8.27 10.845-6.5 19.172-16.793 23.093-29.057a105.183 105.183 0 0 1-33.351 12.745C205.995 7.201 192.346.822 177.239.822c-29.006 0-52.523 23.516-52.523 52.52 0 4.117.465 8.125 1.36 11.97-43.65-2.191-82.35-23.1-108.255-54.876-4.52 7.757-7.11 16.78-7.11 26.404 0 18.222 9.273 34.297 23.365 43.716a52.312 52.312 0 0 1-23.79-6.57c-.003.22-.003.44-.003.661 0 25.447 18.104 46.675 42.13 51.5a52.592 52.592 0 0 1-23.718.9c6.683 20.866 26.08 36.05 49.062 36.475-17.975 14.086-40.622 22.483-65.228 22.483-4.24 0-8.42-.249-12.529-.734 23.243 14.902 50.85 23.597 80.51 23.597 96.607 0 149.434-80.031 149.434-149.435 0-2.278-.05-4.543-.152-6.795A106.748 106.748 0 0 0 256 25.45",fill:"#55acee"})})},label:"Twitter"},github:{Icon:function(e){return(0,i.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",viewBox:"0 0 256 250",preserveAspectRatio:"xMidYMid",style:{"--dark":"#000","--light":"#fff"},...e,className:(0,n.A)(e.className,l),children:(0,i.jsx)("path",{d:"M128.001 0C57.317 0 0 57.307 0 128.001c0 56.554 36.676 104.535 87.535 121.46 6.397 1.185 8.746-2.777 8.746-6.158 0-3.052-.12-13.135-.174-23.83-35.61 7.742-43.124-15.103-43.124-15.103-5.823-14.795-14.213-18.73-14.213-18.73-11.613-7.944.876-7.78.876-7.78 12.853.902 19.621 13.19 19.621 13.19 11.417 19.568 29.945 13.911 37.249 10.64 1.149-8.272 4.466-13.92 8.127-17.116-28.431-3.236-58.318-14.212-58.318-63.258 0-13.975 5-25.394 13.188-34.358-1.329-3.224-5.71-16.242 1.24-33.874 0 0 10.749-3.44 35.21 13.121 10.21-2.836 21.16-4.258 32.038-4.307 10.878.049 21.837 1.47 32.066 4.307 24.431-16.56 35.165-13.12 35.165-13.12 6.967 17.63 2.584 30.65 1.255 33.873 8.207 8.964 13.173 20.383 13.173 34.358 0 49.163-29.944 59.988-58.447 63.157 4.591 3.972 8.682 11.762 8.682 23.704 0 17.126-.148 30.91-.148 35.126 0 3.407 2.304 7.398 8.792 6.14C219.37 232.5 256 184.537 256 128.002 256 57.307 198.691 0 128.001 0Zm-80.06 182.34c-.282.636-1.283.827-2.194.39-.929-.417-1.45-1.284-1.15-1.922.276-.655 1.279-.838 2.205-.399.93.418 1.46 1.293 1.139 1.931Zm6.296 5.618c-.61.566-1.804.303-2.614-.591-.837-.892-.994-2.086-.375-2.66.63-.566 1.787-.301 2.626.591.838.903 1 2.088.363 2.66Zm4.32 7.188c-.785.545-2.067.034-2.86-1.104-.784-1.138-.784-2.503.017-3.05.795-.547 2.058-.055 2.861 1.075.782 1.157.782 2.522-.019 3.08Zm7.304 8.325c-.701.774-2.196.566-3.29-.49-1.119-1.032-1.43-2.496-.726-3.27.71-.776 2.213-.558 3.315.49 1.11 1.03 1.45 2.505.701 3.27Zm9.442 2.81c-.31 1.003-1.75 1.459-3.199 1.033-1.448-.439-2.395-1.613-2.103-2.626.301-1.01 1.747-1.484 3.207-1.028 1.446.436 2.396 1.602 2.095 2.622Zm10.744 1.193c.036 1.055-1.193 1.93-2.715 1.95-1.53.034-2.769-.82-2.786-1.86 0-1.065 1.202-1.932 2.733-1.958 1.522-.03 2.768.818 2.768 1.868Zm10.555-.405c.182 1.03-.875 2.088-2.387 2.37-1.485.271-2.861-.365-3.05-1.386-.184-1.056.893-2.114 2.376-2.387 1.514-.263 2.868.356 3.061 1.403Z"})})},label:"GitHub"},stackoverflow:{Icon:function(e){return(0,i.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 169.61 200",width:"1em",height:"1em",...e,children:[(0,i.jsx)("path",{d:"M140.44 178.38v-48.65h21.61V200H0v-70.27h21.61v48.65z",fill:"#bcbbbb"}),(0,i.jsx)("path",{d:"M124.24 140.54l4.32-16.22-86.97-17.83-3.78 17.83zM49.7 82.16L130.72 120l7.56-16.22-81.02-37.83zm22.68-40l68.06 57.3 11.35-13.51-68.6-57.3-11.35 13.51zM116.14 0l-14.59 10.81 53.48 71.89 14.58-10.81zM37.81 162.16h86.43v-16.21H37.81z",fill:"#f48024"})]})},label:"Stack Overflow"},linkedin:{Icon:function(e){return(0,i.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",preserveAspectRatio:"xMidYMid",viewBox:"0 0 256 256",style:{"--dark":"#0a66c2","--light":"#ffffffe6"},...e,className:(0,n.A)(e.className,c),children:(0,i.jsx)("path",{d:"M218.123 218.127h-37.931v-59.403c0-14.165-.253-32.4-19.728-32.4-19.756 0-22.779 15.434-22.779 31.369v60.43h-37.93V95.967h36.413v16.694h.51a39.907 39.907 0 0 1 35.928-19.733c38.445 0 45.533 25.288 45.533 58.186l-.016 67.013ZM56.955 79.27c-12.157.002-22.014-9.852-22.016-22.009-.002-12.157 9.851-22.014 22.008-22.016 12.157-.003 22.014 9.851 22.016 22.008A22.013 22.013 0 0 1 56.955 79.27m18.966 138.858H37.95V95.967h37.97v122.16ZM237.033.018H18.89C8.58-.098.125 8.161-.001 18.471v219.053c.122 10.315 8.576 18.582 18.89 18.474h218.144c10.336.128 18.823-8.139 18.966-18.474V18.454c-.147-10.33-8.635-18.588-18.966-18.453"})})},label:"LinkedIn"},x:{Icon:function(e){return(0,i.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",fill:"none",viewBox:"0 0 1200 1227",style:{"--dark":"#000","--light":"#fff"},...e,className:(0,n.A)(e.className,o),children:(0,i.jsx)("path",{d:"M714.163 519.284 1160.89 0h-105.86L667.137 450.887 357.328 0H0l468.492 681.821L0 1226.37h105.866l409.625-476.152 327.181 476.152H1200L714.137 519.284h.026ZM569.165 687.828l-47.468-67.894-377.686-540.24h162.604l304.797 435.991 47.468 67.894 396.2 566.721H892.476L569.165 687.854v-.026Z"})})},label:"X"},bluesky:{Icon:function(e){return(0,i.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",preserveAspectRatio:"xMidYMid",viewBox:"0 0 256 226",style:{"--dark":"#0085ff","--light":"#0085ff"},...e,className:(0,n.A)(e.className,m),children:(0,i.jsx)("path",{d:"M55.491 15.172c29.35 22.035 60.917 66.712 72.509 90.686 11.592-23.974 43.159-68.651 72.509-90.686C221.686-.727 256-13.028 256 26.116c0 7.818-4.482 65.674-7.111 75.068-9.138 32.654-42.436 40.983-72.057 35.942 51.775 8.812 64.946 38 36.501 67.187-54.021 55.433-77.644-13.908-83.696-31.676-1.11-3.257-1.63-4.78-1.637-3.485-.008-1.296-.527.228-1.637 3.485-6.052 17.768-29.675 87.11-83.696 31.676-28.445-29.187-15.274-58.375 36.5-67.187-29.62 5.041-62.918-3.288-72.056-35.942C4.482 91.79 0 33.934 0 26.116 0-13.028 34.314-.727 55.491 15.172Z"})})},label:"Bluesky"},instagram:{Icon:function(e){return(0,i.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"1em",height:"1em",preserveAspectRatio:"xMidYMid",viewBox:"0 0 256 256",style:{"--dark":"#000","--light":"#fff"},...e,className:(0,n.A)(e.className,u),children:(0,i.jsx)("path",{d:"M128 23.064c34.177 0 38.225.13 51.722.745 12.48.57 19.258 2.655 23.769 4.408 5.974 2.322 10.238 5.096 14.717 9.575 4.48 4.479 7.253 8.743 9.575 14.717 1.753 4.511 3.838 11.289 4.408 23.768.615 13.498.745 17.546.745 51.723 0 34.178-.13 38.226-.745 51.723-.57 12.48-2.655 19.257-4.408 23.768-2.322 5.974-5.096 10.239-9.575 14.718-4.479 4.479-8.743 7.253-14.717 9.574-4.511 1.753-11.289 3.839-23.769 4.408-13.495.616-17.543.746-51.722.746-34.18 0-38.228-.13-51.723-.746-12.48-.57-19.257-2.655-23.768-4.408-5.974-2.321-10.239-5.095-14.718-9.574-4.479-4.48-7.253-8.744-9.574-14.718-1.753-4.51-3.839-11.288-4.408-23.768-.616-13.497-.746-17.545-.746-51.723 0-34.177.13-38.225.746-51.722.57-12.48 2.655-19.258 4.408-23.769 2.321-5.974 5.095-10.238 9.574-14.717 4.48-4.48 8.744-7.253 14.718-9.575 4.51-1.753 11.288-3.838 23.768-4.408 13.497-.615 17.545-.745 51.723-.745M128 0C93.237 0 88.878.147 75.226.77c-13.625.622-22.93 2.786-31.071 5.95-8.418 3.271-15.556 7.648-22.672 14.764C14.367 28.6 9.991 35.738 6.72 44.155 3.555 52.297 1.392 61.602.77 75.226.147 88.878 0 93.237 0 128c0 34.763.147 39.122.77 52.774.622 13.625 2.785 22.93 5.95 31.071 3.27 8.417 7.647 15.556 14.763 22.672 7.116 7.116 14.254 11.492 22.672 14.763 8.142 3.165 17.446 5.328 31.07 5.95 13.653.623 18.012.77 52.775.77s39.122-.147 52.774-.77c13.624-.622 22.929-2.785 31.07-5.95 8.418-3.27 15.556-7.647 22.672-14.763 7.116-7.116 11.493-14.254 14.764-22.672 3.164-8.142 5.328-17.446 5.95-31.07.623-13.653.77-18.012.77-52.775s-.147-39.122-.77-52.774c-.622-13.624-2.786-22.929-5.95-31.07-3.271-8.418-7.648-15.556-14.764-22.672C227.4 14.368 220.262 9.99 211.845 6.72c-8.142-3.164-17.447-5.328-31.071-5.95C167.122.147 162.763 0 128 0Zm0 62.27C91.698 62.27 62.27 91.7 62.27 128c0 36.302 29.428 65.73 65.73 65.73 36.301 0 65.73-29.428 65.73-65.73 0-36.301-29.429-65.73-65.73-65.73Zm0 108.397c-23.564 0-42.667-19.103-42.667-42.667S104.436 85.333 128 85.333s42.667 19.103 42.667 42.667-19.103 42.667-42.667 42.667Zm83.686-110.994c0 8.484-6.876 15.36-15.36 15.36-8.483 0-15.36-6.876-15.36-15.36 0-8.483 6.877-15.36 15.36-15.36 8.484 0 15.36 6.877 15.36 15.36Z"})})},label:"Instagram"},threads:{Icon:function(e){return(0,i.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg","aria-label":"Threads",viewBox:"0 0 192 192",width:"1em",fill:"none",height:"1em",style:{"--dark":"#000","--light":"#fff"},...e,className:(0,n.A)(e.className,d),children:(0,i.jsx)("path",{d:"M141.537 88.988a66.667 66.667 0 0 0-2.518-1.143c-1.482-27.307-16.403-42.94-41.457-43.1h-.34c-14.986 0-27.449 6.396-35.12 18.036l13.779 9.452c5.73-8.695 14.724-10.548 21.348-10.548h.229c8.249.053 14.474 2.452 18.503 7.129 2.932 3.405 4.893 8.111 5.864 14.05-7.314-1.243-15.224-1.626-23.68-1.14-23.82 1.371-39.134 15.264-38.105 34.568.522 9.792 5.4 18.216 13.735 23.719 7.047 4.652 16.124 6.927 25.557 6.412 12.458-.683 22.231-5.436 29.049-14.127 5.178-6.6 8.453-15.153 9.899-25.93 5.937 3.583 10.337 8.298 12.767 13.966 4.132 9.635 4.373 25.468-8.546 38.376-11.319 11.308-24.925 16.2-45.488 16.351-22.809-.169-40.06-7.484-51.275-21.742C35.236 139.966 29.808 120.682 29.605 96c.203-24.682 5.63-43.966 16.133-57.317C56.954 24.425 74.204 17.11 97.013 16.94c22.975.17 40.526 7.52 52.171 21.847 5.71 7.026 10.015 15.86 12.853 26.162l16.147-4.308c-3.44-12.68-8.853-23.606-16.219-32.668C147.036 9.607 125.202.195 97.07 0h-.113C68.882.194 47.292 9.642 32.788 28.08 19.882 44.485 13.224 67.315 13.001 95.932L13 96v.067c.224 28.617 6.882 51.447 19.788 67.854C47.292 182.358 68.882 191.806 96.957 192h.113c24.96-.173 42.554-6.708 57.048-21.189 18.963-18.945 18.392-42.692 12.142-57.27-4.484-10.454-13.033-18.945-24.723-24.553ZM98.44 129.507c-10.44.588-21.286-4.098-21.82-14.135-.397-7.442 5.296-15.746 22.461-16.735 1.966-.114 3.895-.169 5.79-.169 6.235 0 12.068.606 17.371 1.765-1.978 24.702-13.58 28.713-23.802 29.274Z"})})},label:"Threads"},mastodon:{Icon:function(e){const t=(0,a.useId)();return(0,i.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 61 65",width:"1em",height:"1em",...e,children:[(0,i.jsx)("path",{fill:`url(#${t})`,d:"M60.754 14.39C59.814 7.406 53.727 1.903 46.512.836 45.294.656 40.682 0 29.997 0h-.08C19.23 0 16.938.656 15.72.836 8.705 1.873 2.299 6.82.745 13.886c-.748 3.48-.828 7.338-.689 10.877.198 5.075.237 10.142.697 15.197a71.482 71.482 0 0 0 1.664 9.968c1.477 6.056 7.458 11.096 13.317 13.152a35.718 35.718 0 0 0 19.484 1.028 28.365 28.365 0 0 0 2.107-.576c1.572-.5 3.413-1.057 4.766-2.038a.154.154 0 0 0 .062-.118v-4.899a.146.146 0 0 0-.055-.111.145.145 0 0 0-.122-.028 54 54 0 0 1-12.644 1.478c-7.328 0-9.298-3.478-9.863-4.925a15.258 15.258 0 0 1-.857-3.882.142.142 0 0 1 .178-.145 52.976 52.976 0 0 0 12.437 1.477c1.007 0 2.012 0 3.02-.026 4.213-.119 8.654-.334 12.8-1.144.103-.02.206-.038.295-.065 6.539-1.255 12.762-5.196 13.394-15.176.024-.393.083-4.115.083-4.523.003-1.386.446-9.829-.065-15.017Z"}),(0,i.jsx)("path",{fill:"#fff",d:"M50.394 22.237v17.35H43.52V22.749c0-3.545-1.478-5.353-4.483-5.353-3.303 0-4.958 2.139-4.958 6.364v9.217h-6.835V23.76c0-4.225-1.657-6.364-4.96-6.364-2.988 0-4.48 1.808-4.48 5.353v16.84H10.93V22.237c0-3.545.905-6.362 2.715-8.45 1.868-2.082 4.317-3.152 7.358-3.152 3.519 0 6.178 1.354 7.951 4.057l1.711 2.871 1.714-2.871c1.773-2.704 4.432-4.056 7.945-4.056 3.038 0 5.487 1.069 7.36 3.152 1.81 2.085 2.712 4.902 2.71 8.449Z"}),(0,i.jsx)("defs",{children:(0,i.jsxs)("linearGradient",{id:t,x1:30.5,x2:30.5,y1:0,y2:65,gradientUnits:"userSpaceOnUse",children:[(0,i.jsx)("stop",{stopColor:"#6364FF"}),(0,i.jsx)("stop",{offset:1,stopColor:"#563ACC"})]})})]})},label:"Mastodon"},youtube:{Icon:function(e){return(0,i.jsxs)("svg",{viewBox:"0 0 256 180",width:"1em",height:"1em",xmlns:"http://www.w3.org/2000/svg",preserveAspectRatio:"xMidYMid",...e,children:[(0,i.jsx)("path",{d:"M250.346 28.075A32.18 32.18 0 0 0 227.69 5.418C207.824 0 127.87 0 127.87 0S47.912.164 28.046 5.582A32.18 32.18 0 0 0 5.39 28.24c-6.009 35.298-8.34 89.084.165 122.97a32.18 32.18 0 0 0 22.656 22.657c19.866 5.418 99.822 5.418 99.822 5.418s79.955 0 99.82-5.418a32.18 32.18 0 0 0 22.657-22.657c6.338-35.348 8.291-89.1-.164-123.134Z",fill:"red"}),(0,i.jsx)("path",{fill:"#FFF",d:"m102.421 128.06 66.328-38.418-66.328-38.418z"})]})},label:"YouTube"},twitch:{Icon:function(e){return(0,i.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",x:0,y:0,viewBox:"0 0 2400 2800",width:"1em",height:"1em",...e,children:[(0,i.jsx)("path",{d:"m2200 1300-400 400h-400l-350 350v-350H600V200h1600z",fill:"#fff"}),(0,i.jsxs)("g",{children:[(0,i.jsx)("path",{d:"M500 0 0 500v1800h600v500l500-500h400l900-900V0H500zm1700 1300-400 400h-400l-350 350v-350H600V200h1600v1100z",fill:"#9146ff"}),(0,i.jsx)("path",{d:"M1700 550h200v600h-200zM1150 550h200v600h-200z",fill:"#9146ff"})]})]})},label:"Twitch"},email:{Icon:function(e){return(0,i.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,...e,children:[(0,i.jsx)("path",{stroke:"none",d:"M0 0h24v24H0z"}),(0,i.jsx)("path",{d:"M7.2 12a4.8 4.8 0 1 0 9.6 0 4.8 4.8 0 1 0-9.6 0"}),(0,i.jsx)("path",{d:"M16.8 12v1.8a3 3 0 0 0 6 0V12a10.8 10.8 0 1 0-6.6 9.936"})]})},label:"Email"}};function x({platform:e,link:t}){const{Icon:s,label:a}=f[l=e]??{Icon:h,label:l};var l;return(0,i.jsx)(r.A,{className:g.authorSocialLink,href:t,title:a,children:(0,i.jsx)(s,{className:(0,n.A)(g.authorSocialIcon)})})}function p({author:e}){const t=Object.entries(e.socials??{});return(0,i.jsx)("div",{className:g.authorSocials,children:t.map((([e,t])=>(0,i.jsx)(x,{platform:e,link:t},e)))})}var v=s(51107);const w={authorImage:"authorImage_XqGP","author-as-h1":"author-as-h1_n9oJ","author-as-h2":"author-as-h2_gXvM",authorDetails:"authorDetails_lV9A",authorName:"authorName_yefp",authorTitle:"authorTitle_nd0D",authorBlogPostCount:"authorBlogPostCount_iiJ5"};function j(e){return e.href?(0,i.jsx)(r.A,{...e}):(0,i.jsx)(i.Fragment,{children:e.children})}function b({title:e}){return(0,i.jsx)("small",{className:w.authorTitle,title:e,children:e})}function M({name:e,as:t}){return t?(0,i.jsx)(v.A,{as:t,className:w.authorName,translate:"no",children:e}):(0,i.jsx)("span",{className:w.authorName,translate:"no",children:e})}function N({count:e}){return(0,i.jsx)("span",{className:(0,n.A)(w.authorBlogPostCount),children:e})}function k({as:e,author:t,className:s,count:a}){const{name:r,title:l,url:o,imageURL:c,email:h,page:m}=t,u=m?.permalink||o||h&&`mailto:${h}`||void 0;return(0,i.jsxs)("div",{className:(0,n.A)("avatar margin-bottom--sm",s,w[`author-as-${e}`]),children:[c&&(0,i.jsx)(j,{href:u,className:"avatar__photo-link",children:(0,i.jsx)("img",{className:(0,n.A)("avatar__photo",w.authorImage),src:c,alt:r})}),(r||l)&&(0,i.jsxs)("div",{className:(0,n.A)("avatar__intro",w.authorDetails),children:[(0,i.jsxs)("div",{className:"avatar__name",children:[r&&(0,i.jsx)(j,{href:u,children:(0,i.jsx)(M,{name:r,as:e})}),void 0!==a&&(0,i.jsx)(N,{count:a})]}),!!l&&(0,i.jsx)(b,{title:l}),(0,i.jsx)(p,{author:t})]})]})}},28027:(e,t,s)=>{s.d(t,{A:()=>H});var a=s(96540),n=s(34164),r=s(36882),i=s(24581),l=s(21312),o=s(44096),c=s(6342),h=s(51107),m=s(74848);function u({year:e,yearGroupHeadingClassName:t,children:s}){return(0,m.jsxs)("div",{role:"group",children:[(0,m.jsx)(h.A,{as:"h3",className:t,children:e}),s]})}function d({items:e,yearGroupHeadingClassName:t,ListComponent:s}){if((0,c.p)().blog.sidebar.groupByYear){const a=(0,o.Ki)(e);return(0,m.jsx)(m.Fragment,{children:a.map((([e,a])=>(0,m.jsx)(u,{year:e,yearGroupHeadingClassName:t,children:(0,m.jsx)(s,{items:a})},e)))})}return(0,m.jsx)(s,{items:e})}const g=(0,a.memo)(d),f="sidebar_re4s",x="sidebarItemTitle_pO2u",p="sidebarItemList_Yudw",v="sidebarItem__DBe",w="sidebarItemLink_mo7H",j="sidebarItemLinkActive_I1ZP",b="yearGroupHeading_rMGB",M=({items:e})=>(0,m.jsx)(o.OU,{items:e,ulClassName:(0,n.A)(p,"clean-list"),liClassName:v,linkClassName:w,linkActiveClassName:j});function N({sidebar:e}){const t=(0,o.Gx)(e.items);return(0,m.jsx)("aside",{className:"col col--3",children:(0,m.jsxs)("nav",{className:(0,n.A)(f,"thin-scrollbar"),"aria-label":(0,l.T)({id:"theme.blog.sidebar.navAriaLabel",message:"Blog recent posts navigation",description:"The ARIA label for recent posts in the blog sidebar"}),children:[(0,m.jsx)("div",{className:(0,n.A)(x,"margin-bottom--md"),children:e.title}),(0,m.jsx)(g,{items:t,ListComponent:M,yearGroupHeadingClassName:b})]})})}const k=(0,a.memo)(N);var C=s(75600);const A={yearGroupHeading:"yearGroupHeading_QT03"},y=({items:e})=>(0,m.jsx)(o.OU,{items:e,ulClassName:"menu__list",liClassName:"menu__list-item",linkClassName:"menu__link",linkActiveClassName:"menu__link--active"});function _({sidebar:e}){const t=(0,o.Gx)(e.items);return(0,m.jsx)(g,{items:t,ListComponent:y,yearGroupHeadingClassName:A.yearGroupHeading})}function I(e){return(0,m.jsx)(C.GX,{component:_,props:e})}const B=(0,a.memo)(I);function P({sidebar:e}){const t=(0,i.l)();return e?.items.length?"mobile"===t?(0,m.jsx)(B,{sidebar:e}):(0,m.jsx)(k,{sidebar:e}):null}function H(e){const{sidebar:t,toc:s,children:a,...i}=e,l=t&&t.items.length>0;return(0,m.jsx)(r.A,{...i,children:(0,m.jsx)("div",{className:"container margin-vert--lg",children:(0,m.jsxs)("div",{className:"row",children:[(0,m.jsx)(P,{sidebar:t}),(0,m.jsx)("main",{className:(0,n.A)("col",{"col--7":l,"col--9 col--offset-1":!l}),children:a}),s&&(0,m.jsx)("div",{className:"col col--2",children:s})]})})})}},53465:(e,t,s)=>{s.d(t,{W:()=>c});var a=s(96540),n=s(44586);const r=["zero","one","two","few","many","other"];function i(e){return r.filter((t=>e.includes(t)))}const l={locale:"en",pluralForms:i(["one","other"]),select:e=>1===e?"one":"other"};function o(){const{i18n:{currentLocale:e}}=(0,n.A)();return(0,a.useMemo)((()=>{try{return function(e){const t=new Intl.PluralRules(e);return{locale:e,pluralForms:i(t.resolvedOptions().pluralCategories),select:e=>t.select(e)}}(e)}catch(t){return console.error(`Failed to use Intl.PluralRules for locale "${e}".\nDocusaurus will fallback to the default (English) implementation.\nError: ${t.message}\n`),l}}),[e])}function c(){const e=o();return{selectMessage:(t,s)=>function(e,t,s){const a=e.split("|");if(1===a.length)return a[0];a.length>s.pluralForms.length&&console.error(`For locale=${s.locale}, a maximum of ${s.pluralForms.length} plural forms are expected (${s.pluralForms.join(",")}), but the message contains ${a.length}: ${e}`);const n=s.select(t),r=s.pluralForms.indexOf(n);return a[Math.min(r,a.length-1)]}(s,t,e)}}}}]); \ No newline at end of file diff --git a/assets/js/982bde41.dc9f9ce1.js b/assets/js/982bde41.dc9f9ce1.js new file mode 100644 index 00000000..afd6d097 --- /dev/null +++ b/assets/js/982bde41.dc9f9ce1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2764],{75924:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>a,contentTitle:()=>r,default:()=>o,frontMatter:()=>i,metadata:()=>t,toc:()=>c});const t=JSON.parse('{"id":"API-Reference/utils/AppInit","title":"AppInit","description":"Import :","source":"@site/api/API-Reference/utils/AppInit.md","sourceDirName":"API-Reference/utils","slug":"/API-Reference/utils/AppInit","permalink":"/api/API-Reference/utils/AppInit","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"SearchResultsView","permalink":"/api/API-Reference/search/SearchResultsView"},"next":{"title":"Async","permalink":"/api/API-Reference/utils/Async"}}');var l=s(74848),d=s(28453);const i={},r=void 0,a={},c=[{value:"Import :",id:"import-",level:3},{value:"Metrics",id:"metrics",level:2},{value:"HTML_READY : string",id:"html_ready--string",level:2},{value:"APP_READY : string",id:"app_ready--string",level:2},{value:"EXTENSIONS_LOADED : string",id:"extensions_loaded--string",level:2},{value:"appReady(handler)",id:"appreadyhandler",level:2},{value:"htmlReady(handler)",id:"htmlreadyhandler",level:2},{value:"extensionsLoaded(handler)",id:"extensionsloadedhandler",level:2}];function h(e){const n={code:"code",em:"em",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,d.R)(),...e.components};return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(n.h3,{id:"import-",children:"Import :"}),"\n",(0,l.jsx)(n.pre,{children:(0,l.jsx)(n.code,{className:"language-js",children:'const AppInit = brackets.getModule("utils/AppInit")\n'})}),"\n",(0,l.jsx)("a",{name:"Metrics"}),"\n",(0,l.jsx)(n.h2,{id:"metrics",children:"Metrics"}),"\n",(0,l.jsx)(n.p,{children:"Defines hooks to assist with module initialization."}),"\n",(0,l.jsx)(n.p,{children:"This module defines 3 methods for client modules to attach callbacks:"}),"\n",(0,l.jsxs)(n.ul,{children:["\n",(0,l.jsx)(n.li,{children:"htmlReady - When the main application template is rendered"}),"\n",(0,l.jsx)(n.li,{children:"extensionsLoaded - When the extension manager has loaded all extensions"}),"\n",(0,l.jsx)(n.li,{children:"appReady - When Brackets completes loading all modules and extensions"}),"\n"]}),"\n",(0,l.jsxs)(n.p,{children:["These are ",(0,l.jsx)(n.em,{children:"not"})," jQuery events. Each method is similar to $(document).ready\nin that it will call the handler immediately if brackets is already done\nloading."]}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,l.jsx)("a",{name:"HTML_READY"}),"\n",(0,l.jsxs)(n.h2,{id:"html_ready--string",children:["HTML_READY : ",(0,l.jsx)("code",{children:"string"})]}),"\n",(0,l.jsx)(n.p,{children:"Fires when the base htmlContent/main-view.html is loaded"}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,l.jsx)("a",{name:"APP_READY"}),"\n",(0,l.jsxs)(n.h2,{id:"app_ready--string",children:["APP_READY : ",(0,l.jsx)("code",{children:"string"})]}),"\n",(0,l.jsx)(n.p,{children:"Fires when all extensions are loaded"}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,l.jsx)("a",{name:"EXTENSIONS_LOADED"}),"\n",(0,l.jsxs)(n.h2,{id:"extensions_loaded--string",children:["EXTENSIONS_LOADED : ",(0,l.jsx)("code",{children:"string"})]}),"\n",(0,l.jsx)(n.p,{children:"Fires after extensions have been loaded"}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,l.jsx)("a",{name:"appReady"}),"\n",(0,l.jsx)(n.h2,{id:"appreadyhandler",children:"appReady(handler)"}),"\n",(0,l.jsx)(n.p,{children:"Adds a callback for the ready hook. Handlers are called after\nhtmlReady is done, the initial project is loaded, and all extensions are\nloaded."}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,l.jsxs)(n.table,{children:[(0,l.jsx)(n.thead,{children:(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.th,{children:"Param"}),(0,l.jsx)(n.th,{children:"Type"}),(0,l.jsx)(n.th,{children:"Description"})]})}),(0,l.jsx)(n.tbody,{children:(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.td,{children:"handler"}),(0,l.jsx)(n.td,{children:(0,l.jsx)("code",{children:"function"})}),(0,l.jsx)(n.td,{children:"callback function to call when the event is fired"})]})})]}),"\n",(0,l.jsx)("a",{name:"htmlReady"}),"\n",(0,l.jsx)(n.h2,{id:"htmlreadyhandler",children:"htmlReady(handler)"}),"\n",(0,l.jsx)(n.p,{children:"Adds a callback for the htmlReady hook. Handlers are called after the\nmain application html template is rendered."}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,l.jsxs)(n.table,{children:[(0,l.jsx)(n.thead,{children:(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.th,{children:"Param"}),(0,l.jsx)(n.th,{children:"Type"}),(0,l.jsx)(n.th,{children:"Description"})]})}),(0,l.jsx)(n.tbody,{children:(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.td,{children:"handler"}),(0,l.jsx)(n.td,{children:(0,l.jsx)("code",{children:"function"})}),(0,l.jsx)(n.td,{children:"callback function to call when the event is fired"})]})})]}),"\n",(0,l.jsx)("a",{name:"extensionsLoaded"}),"\n",(0,l.jsx)(n.h2,{id:"extensionsloadedhandler",children:"extensionsLoaded(handler)"}),"\n",(0,l.jsx)(n.p,{children:"Adds a callback for the extensionsLoaded hook. Handlers are called after the\nextensions have been loaded"}),"\n",(0,l.jsxs)(n.p,{children:[(0,l.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,l.jsxs)(n.table,{children:[(0,l.jsx)(n.thead,{children:(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.th,{children:"Param"}),(0,l.jsx)(n.th,{children:"Type"}),(0,l.jsx)(n.th,{children:"Description"})]})}),(0,l.jsx)(n.tbody,{children:(0,l.jsxs)(n.tr,{children:[(0,l.jsx)(n.td,{children:"handler"}),(0,l.jsx)(n.td,{children:(0,l.jsx)("code",{children:"function"})}),(0,l.jsx)(n.td,{children:"callback function to call when the event is fired"})]})})]})]})}function o(e={}){const{wrapper:n}={...(0,d.R)(),...e.components};return n?(0,l.jsx)(n,{...e,children:(0,l.jsx)(h,{...e})}):h(e)}},28453:(e,n,s)=>{s.d(n,{R:()=>i,x:()=>r});var t=s(96540);const l={},d=t.createContext(l);function i(e){const n=t.useContext(d);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:i(e.components),t.createElement(d.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/9837.ff96be20.js b/assets/js/9837.ff96be20.js new file mode 100644 index 00000000..d6d061b6 --- /dev/null +++ b/assets/js/9837.ff96be20.js @@ -0,0 +1 @@ +(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9837],{99320:function(e,t,n){!function(e,t,n,s){"use strict";const o=0,r=1,i=2,a=3,c=4,l=-1;class u{constructor({file:e,sourceRoot:n}={}){this._names=new t.SetArray,this._sources=new t.SetArray,this._sourcesContent=[],this._mappings=[],this.file=e,this.sourceRoot=n,this._ignoreList=new t.SetArray}}function h(e){return e}function p(e,t,n,s,o,r,i,a){return b(!1,e,t,n,s,o,r,i,a)}function d(e,t){return S(!1,e,t)}const f=(e,t,n,s,o,r,i,a)=>b(!0,e,t,n,s,o,r,i,a),m=(e,t)=>S(!0,e,t);function k(e,n,s){const{_sources:o,_sourcesContent:r}=h(e);r[t.put(o,n)]=s}function g(e,n,s=!0){const{_sources:o,_sourcesContent:r,_ignoreList:i}=h(e),a=t.put(o,n);a===r.length&&(r[a]=null),s?t.put(i,a):t.remove(i,a)}function x(e){const{_mappings:t,_sources:n,_sourcesContent:s,_names:o,_ignoreList:r}=h(e);return C(t),{version:3,file:e.file||void 0,names:o.array,sourceRoot:e.sourceRoot||void 0,sources:n.array,sourcesContent:s,mappings:t,ignoreList:r.array}}function y(e){const t=x(e);return Object.assign(Object.assign({},t),{mappings:n.encode(t.mappings)})}function _(e){const t=new s.TraceMap(e),n=new u({file:t.file,sourceRoot:t.sourceRoot});return A(h(n)._names,t.names),A(h(n)._sources,t.sources),h(n)._sourcesContent=t.sourcesContent||t.sources.map((()=>null)),h(n)._mappings=s.decodedMappings(t),t.ignoreList&&A(h(n)._ignoreList,t.ignoreList),n}function T(e){const t=[],{_mappings:n,_sources:s,_names:l}=h(e);for(let u=0;u=0&&!(t>=e[s][o]);n=s--);return n}function w(e,t,n){for(let s=e.length;s>t;s--)e[s]=e[s-1];e[t]=n}function C(e){const{length:t}=e;let n=t;for(let s=n-1;s>=0&&!(e[s].length>0);n=s,s--);ns&&(s=o)}f(n,s);const o=n.query+n.hash;switch(s){case 2:case 3:return o;case 4:{const s=n.path.slice(1);return s?a(t||e)&&!a(s)?"./"+s+o:s+o:o||"."}case 5:return n.path+o;default:return n.scheme+"//"+n.user+n.host+n.port+n.path+o}}return m}()},13534:function(e,t){!function(e){"use strict";class t{constructor(){this._indexes={__proto__:null},this.array=[]}}function n(e){return e}function s(e,t){return n(e)._indexes[t]}function o(e,t){const o=s(e,t);if(void 0!==o)return o;const{array:r,_indexes:i}=n(e),a=r.push(t);return i[t]=a-1}function r(e){const{array:t,_indexes:s}=n(e);0!==t.length&&(s[t.pop()]=void 0)}function i(e,t){const o=s(e,t);if(void 0===o)return;const{array:r,_indexes:i}=n(e);for(let n=o+1;nBuffer.from(e.buffer,e.byteOffset,e.byteLength).toString()}:{decode(e){let t="";for(let n=0;n>>=1,c&&(o=-2147483648|-o),n[s]+=o,t}function u(e,n,s){return!(n>=s)&&e.charCodeAt(n)!==t}function h(e){e.sort(p)}function p(e,t){return e[0]-t[0]}function d(e){const s=new Int32Array(5),o=16384,r=o-36,a=new Uint8Array(o),c=a.subarray(0,r);let l=0,u="";for(let h=0;h0&&(l===o&&(u+=i.decode(a),l=0),a[l++]=n),0!==p.length){s[0]=0;for(let e=0;er&&(u+=i.decode(c),a.copyWithin(0,r,l),l-=r),e>0&&(a[l++]=t),l=f(a,l,s,n,0),1!==n.length&&(l=f(a,l,s,n,1),l=f(a,l,s,n,2),l=f(a,l,s,n,3),4!==n.length&&(l=f(a,l,s,n,4)))}}}return u+i.decode(a.subarray(0,l))}function f(e,t,n,s,r){const i=s[r];let a=i-n[r];n[r]=i,a=a<0?-a<<1|1:a<<1;do{let n=31&a;a>>>=5,a>0&&(n|=32),e[t++]=o[n]}while(a>0);return t}e.decode=a,e.encode=d,Object.defineProperty(e,"__esModule",{value:!0})}(t)},92802:function(e,t,n){!function(e,t,n){"use strict";function s(e,t){return t&&!t.endsWith("/")&&(t+="/"),n(e,t)}function o(e){if(!e)return"";const t=e.lastIndexOf("/");return e.slice(0,t+1)}const r=0,i=1,a=2,c=3,l=4,u=1,h=2;function p(e,t){const n=d(e,0);if(n===e.length)return e;t||(e=e.slice());for(let s=n;s>1),i=e[o][r]-t;if(0===i)return g=!0,o;i<0?n=o+1:s=o-1}return g=!1,n-1}function y(e,t,n){for(let s=n+1;s=0&&e[s][r]===t;n=s--);return n}function T(){return{lastKey:-1,lastNeedle:-1,lastIndex:-1}}function b(e,t,n,s){const{lastKey:o,lastNeedle:i,lastIndex:a}=n;let c=0,l=e.length-1;if(s===o){if(t===i)return g=-1!==a&&e[a][r]===t,a;t>=i?c=-1===a?0:a:l=a}return n.lastKey=s,n.lastNeedle=t,n.lastIndex=x(e,t,c,l)}function v(e,t){const n=t.map(w);for(let s=0;st;s--)e[s]=e[s-1];e[t]=n}function w(){return{__proto__:null}}const C=function(e,t){const n=A(e);if(!("sections"in n))return new P(n,t);const s=[],o=[],r=[],i=[],a=[];return E(n,t,s,o,r,i,a,0,0,1/0,1/0),G({version:3,file:n.file,names:i,sources:o,sourcesContent:r,mappings:s,ignoreList:a})};function A(e){return"string"==typeof e?JSON.parse(e):e}function E(e,t,n,s,o,r,i,a,c,l,u){const{sections:h}=e;for(let p=0;pf)return;const t=j(n,e),s=0===I?d:0,o=_[I];for(let n=0;n=m)return;if(1===u.length){t.push([h]);continue}const p=x+u[i],d=u[a],k=u[c];t.push(4===u.length?[h,p,d,k]:[h,p,d,k,y+u[l]])}}}function S(e,t){for(let n=0;ns(e||"",d)));const{mappings:f}=r;"string"==typeof f?(this._encoded=f,this._decoded=void 0):(this._encoded=void 0,this._decoded=p(f,n)),this._decodedMemo=T(),this._bySources=void 0,this._bySourceMemos=void 0}}function B(e){return e}function M(e){var n,s;return null!==(n=(s=B(e))._encoded)&&void 0!==n?n:s._encoded=t.encode(B(e)._decoded)}function q(e){var n;return(n=B(e))._decoded||(n._decoded=t.decode(B(e)._encoded))}function F(e,t,n){const s=q(e);if(t>=s.length)return null;const o=s[t],r=ee(o,B(e)._decodedMemo,t,n,D);return-1===r?null:o[r]}function $(e,t){let{line:n,column:s,bias:o}=t;if(n--,n<0)throw new Error(R);if(s<0)throw new Error(L);const r=q(e);if(n>=r.length)return Q(null,null,null,null);const u=r[n],h=ee(u,B(e)._decodedMemo,n,s,o||D);if(-1===h)return Q(null,null,null,null);const p=u[h];if(1===p.length)return Q(null,null,null,null);const{names:d,resolvedSources:f}=e;return Q(f[p[i]],p[a]+1,p[c],5===p.length?d[p[l]]:null)}function U(e,t){const{source:n,line:s,column:o,bias:r}=t;return ne(e,n,s,o,r||D,!1)}function H(e,t){const{source:n,line:s,column:o,bias:r}=t;return ne(e,n,s,o,r||O,!0)}function V(e,t){const n=q(e),{names:s,resolvedSources:o}=e;for(let r=0;r{"use strict";n.d(t,{A:()=>N});var s=n(96540),o=n(74848);function r(e){const{mdxAdmonitionTitle:t,rest:n}=function(e){const t=s.Children.toArray(e),n=t.find((e=>s.isValidElement(e)&&"mdxAdmonitionTitle"===e.type)),r=t.filter((e=>e!==n)),i=n?.props.children;return{mdxAdmonitionTitle:i,rest:r.length>0?(0,o.jsx)(o.Fragment,{children:r}):null}}(e.children),r=e.title??t;return{...e,...r&&{title:r},children:n}}var i=n(34164),a=n(21312),c=n(17559);const l={admonition:"admonition_xJq3",admonitionHeading:"admonitionHeading_Gvgb",admonitionIcon:"admonitionIcon_Rf37",admonitionContent:"admonitionContent_BuS1"};function u({type:e,className:t,children:n}){return(0,o.jsx)("div",{className:(0,i.A)(c.G.common.admonition,c.G.common.admonitionType(e),l.admonition,t),children:n})}function h({icon:e,title:t}){return(0,o.jsxs)("div",{className:l.admonitionHeading,children:[(0,o.jsx)("span",{className:l.admonitionIcon,children:e}),t]})}function p({children:e}){return e?(0,o.jsx)("div",{className:l.admonitionContent,children:e}):null}function d(e){const{type:t,icon:n,title:s,children:r,className:i}=e;return(0,o.jsxs)(u,{type:t,className:i,children:[s||n?(0,o.jsx)(h,{title:s,icon:n}):null,(0,o.jsx)(p,{children:r})]})}function f(e){return(0,o.jsx)("svg",{viewBox:"0 0 14 16",...e,children:(0,o.jsx)("path",{fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"})})}const m={icon:(0,o.jsx)(f,{}),title:(0,o.jsx)(a.A,{id:"theme.admonition.note",description:"The default label used for the Note admonition (:::note)",children:"note"})};function k(e){return(0,o.jsx)(d,{...m,...e,className:(0,i.A)("alert alert--secondary",e.className),children:e.children})}function g(e){return(0,o.jsx)("svg",{viewBox:"0 0 12 16",...e,children:(0,o.jsx)("path",{fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"})})}const x={icon:(0,o.jsx)(g,{}),title:(0,o.jsx)(a.A,{id:"theme.admonition.tip",description:"The default label used for the Tip admonition (:::tip)",children:"tip"})};function y(e){return(0,o.jsx)(d,{...x,...e,className:(0,i.A)("alert alert--success",e.className),children:e.children})}function _(e){return(0,o.jsx)("svg",{viewBox:"0 0 14 16",...e,children:(0,o.jsx)("path",{fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"})})}const T={icon:(0,o.jsx)(_,{}),title:(0,o.jsx)(a.A,{id:"theme.admonition.info",description:"The default label used for the Info admonition (:::info)",children:"info"})};function b(e){return(0,o.jsx)(d,{...T,...e,className:(0,i.A)("alert alert--info",e.className),children:e.children})}function v(e){return(0,o.jsx)("svg",{viewBox:"0 0 16 16",...e,children:(0,o.jsx)("path",{fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"})})}const I={icon:(0,o.jsx)(v,{}),title:(0,o.jsx)(a.A,{id:"theme.admonition.warning",description:"The default label used for the Warning admonition (:::warning)",children:"warning"})};function w(e){return(0,o.jsx)("svg",{viewBox:"0 0 12 16",...e,children:(0,o.jsx)("path",{fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"})})}const C={icon:(0,o.jsx)(w,{}),title:(0,o.jsx)(a.A,{id:"theme.admonition.danger",description:"The default label used for the Danger admonition (:::danger)",children:"danger"})};const A={icon:(0,o.jsx)(v,{}),title:(0,o.jsx)(a.A,{id:"theme.admonition.caution",description:"The default label used for the Caution admonition (:::caution)",children:"caution"})};const E={...{note:k,tip:y,info:b,warning:function(e){return(0,o.jsx)(d,{...I,...e,className:(0,i.A)("alert alert--warning",e.className),children:e.children})},danger:function(e){return(0,o.jsx)(d,{...C,...e,className:(0,i.A)("alert alert--danger",e.className),children:e.children})}},...{secondary:e=>(0,o.jsx)(k,{title:"secondary",...e}),important:e=>(0,o.jsx)(b,{title:"important",...e}),success:e=>(0,o.jsx)(y,{title:"success",...e}),caution:function(e){return(0,o.jsx)(d,{...A,...e,className:(0,i.A)("alert alert--warning",e.className),children:e.children})}}};function N(e){const t=r(e),n=(s=t.type,E[s]||(console.warn(`No admonition component found for admonition type "${s}". Using Info as fallback.`),E.info));var s;return(0,o.jsx)(n,{...t})}},4336:(e,t,n)=>{"use strict";n.d(t,{A:()=>k});n(96540);var s=n(34164),o=n(21312),r=n(17559),i=n(28774);const a={iconEdit:"iconEdit_Z9Sw"};var c=n(74848);function l({className:e,...t}){return(0,c.jsx)("svg",{fill:"currentColor",height:"20",width:"20",viewBox:"0 0 40 40",className:(0,s.A)(a.iconEdit,e),"aria-hidden":"true",...t,children:(0,c.jsx)("g",{children:(0,c.jsx)("path",{d:"m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"})})})}function u({editUrl:e}){return(0,c.jsxs)(i.A,{to:e,className:r.G.common.editThisPage,children:[(0,c.jsx)(l,{}),(0,c.jsx)(o.A,{id:"theme.common.editThisPage",description:"The link label to edit the current page",children:"Edit this page"})]})}var h=n(36266);function p({lastUpdatedAt:e}){const t=new Date(e),n=(0,h.i)({day:"numeric",month:"short",year:"numeric",timeZone:"UTC"}).format(t);return(0,c.jsx)(o.A,{id:"theme.lastUpdated.atDate",description:"The words used to describe on which date a page has been last updated",values:{date:(0,c.jsx)("b",{children:(0,c.jsx)("time",{dateTime:t.toISOString(),itemProp:"dateModified",children:n})})},children:" on {date}"})}function d({lastUpdatedBy:e}){return(0,c.jsx)(o.A,{id:"theme.lastUpdated.byUser",description:"The words used to describe by who the page has been last updated",values:{user:(0,c.jsx)("b",{children:e})},children:" by {user}"})}function f({lastUpdatedAt:e,lastUpdatedBy:t}){return(0,c.jsxs)("span",{className:r.G.common.lastUpdated,children:[(0,c.jsx)(o.A,{id:"theme.lastUpdated.lastUpdatedAtBy",description:"The sentence used to display when a page has been last updated, and by who",values:{atDate:e?(0,c.jsx)(p,{lastUpdatedAt:e}):"",byUser:t?(0,c.jsx)(d,{lastUpdatedBy:t}):""},children:"Last updated{atDate}{byUser}"}),!1]})}const m={lastUpdated:"lastUpdated_JAkA",noPrint:"noPrint_WFHX"};function k({className:e,editUrl:t,lastUpdatedAt:n,lastUpdatedBy:o}){return(0,c.jsxs)("div",{className:(0,s.A)("row",e),children:[(0,c.jsx)("div",{className:(0,s.A)("col",m.noPrint),children:t&&(0,c.jsx)(u,{editUrl:t})}),(0,c.jsx)("div",{className:(0,s.A)("col",m.lastUpdated),children:(n||o)&&(0,c.jsx)(f,{lastUpdatedAt:n,lastUpdatedBy:o})})]})}},56314:(e,t,n)=>{"use strict";n.d(t,{A:()=>Gi});var s=n(96540),o=n(28453),r=n(5260),i=n(92303),a=n(34164),c=n(95293),l=n(6342);function u(){const{prism:e}=(0,l.p)(),{colorMode:t}=(0,c.G)(),n=e.theme,s=e.darkTheme||n;return"dark"===t?s:n}var h=n(17559),p=n(18426),d=n.n(p),f=n(89532),m=n(74848);const k=/title=(?["'])(?.*?)\1/,g=/\{(?<range>[\d,-]+)\}/,x={js:{start:"\\/\\/",end:""},jsBlock:{start:"\\/\\*",end:"\\*\\/"},jsx:{start:"\\{\\s*\\/\\*",end:"\\*\\/\\s*\\}"},bash:{start:"#",end:""},html:{start:"\x3c!--",end:"--\x3e"}},y={...x,lua:{start:"--",end:""},wasm:{start:"\\;\\;",end:""},tex:{start:"%",end:""},vb:{start:"['\u2018\u2019]",end:""},vbnet:{start:"(?:_\\s*)?['\u2018\u2019]",end:""},rem:{start:"[Rr][Ee][Mm]\\b",end:""},f90:{start:"!",end:""},ml:{start:"\\(\\*",end:"\\*\\)"},cobol:{start:"\\*>",end:""}},_=Object.keys(x);function T(e,t){const n=e.map((e=>{const{start:n,end:s}=y[e];return`(?:${n}\\s*(${t.flatMap((e=>[e.line,e.block?.start,e.block?.end].filter(Boolean))).join("|")})\\s*${s})`})).join("|");return new RegExp(`^\\s*(?:${n})\\s*$`)}function b({showLineNumbers:e,metastring:t}){return"boolean"==typeof e?e?1:void 0:"number"==typeof e?e:function(e){const t=e?.split(" ").find((e=>e.startsWith("showLineNumbers")));if(t){if(t.startsWith("showLineNumbers=")){const e=t.replace("showLineNumbers=","");return parseInt(e,10)}return 1}}(t)}function v(e,t){const{language:n,magicComments:s}=t;if(void 0===n)return{lineClassNames:{},code:e};const o=function(e,t){switch(e){case"js":case"javascript":case"ts":case"typescript":return T(["js","jsBlock"],t);case"jsx":case"tsx":return T(["js","jsBlock","jsx"],t);case"html":return T(["js","jsBlock","html"],t);case"python":case"py":case"bash":return T(["bash"],t);case"markdown":case"md":return T(["html","jsx","bash"],t);case"tex":case"latex":case"matlab":return T(["tex"],t);case"lua":case"haskell":return T(["lua"],t);case"sql":return T(["lua","jsBlock"],t);case"wasm":return T(["wasm"],t);case"vb":case"vba":case"visual-basic":return T(["vb","rem"],t);case"vbnet":return T(["vbnet","rem"],t);case"batch":return T(["rem"],t);case"basic":return T(["rem","f90"],t);case"fsharp":return T(["js","ml"],t);case"ocaml":case"sml":return T(["ml"],t);case"fortran":return T(["f90"],t);case"cobol":return T(["cobol"],t);default:return T(_,t)}}(n,s),r=e.split(/\r?\n/),i=Object.fromEntries(s.map((e=>[e.className,{start:0,range:""}]))),a=Object.fromEntries(s.filter((e=>e.line)).map((({className:e,line:t})=>[t,e]))),c=Object.fromEntries(s.filter((e=>e.block)).map((({className:e,block:t})=>[t.start,e]))),l=Object.fromEntries(s.filter((e=>e.block)).map((({className:e,block:t})=>[t.end,e])));for(let h=0;h<r.length;){const e=r[h].match(o);if(!e){h+=1;continue}const t=e.slice(1).find((e=>void 0!==e));a[t]?i[a[t]].range+=`${h},`:c[t]?i[c[t]].start=h:l[t]&&(i[l[t]].range+=`${i[l[t]].start}-${h-1},`),r.splice(h,1)}const u={};return Object.entries(i).forEach((([e,{range:t}])=>{d()(t).forEach((t=>{u[t]??=[],u[t].push(e)}))})),{code:r.join("\n"),lineClassNames:u}}function I(e,t){const n=e.replace(/\r?\n$/,"");return function(e,{metastring:t,magicComments:n}){if(t&&g.test(t)){const s=t.match(g).groups.range;if(0===n.length)throw new Error(`A highlight range has been given in code block's metastring (\`\`\` ${t}), but no magic comment config is available. Docusaurus applies the first magic comment entry's className for metastring ranges.`);const o=n[0].className,r=d()(s).filter((e=>e>0)).map((e=>[e-1,[o]]));return{lineClassNames:Object.fromEntries(r),code:e}}return null}(n,{...t})??v(n,{...t})}function w(e){const t=function(e){return t=e.language??function(e){if(!e)return;const t=e.split(" ").find((e=>e.startsWith("language-")));return t?.replace(/language-/,"")}(e.className)??e.defaultLanguage,t?.toLowerCase()??"text";var t}({language:e.language,defaultLanguage:e.defaultLanguage,className:e.className}),{lineClassNames:n,code:s}=I(e.code,{metastring:e.metastring,magicComments:e.magicComments,language:t}),o=function({className:e,language:t}){return(0,a.A)(e,t&&!e?.includes(`language-${t}`)&&`language-${t}`)}({className:e.className,language:t}),r=(i=e.metastring,(i?.match(k)?.groups.title??"")||e.title);var i;const c=b({showLineNumbers:e.showLineNumbers,metastring:e.metastring});return{codeInput:e.code,code:s,className:o,language:t,title:r,lineNumbersStart:c,lineClassNames:n}}const C=(0,s.createContext)(null);function A({metadata:e,wordWrap:t,children:n}){const o=(0,s.useMemo)((()=>({metadata:e,wordWrap:t})),[e,t]);return(0,m.jsx)(C.Provider,{value:o,children:n})}function E(){const e=(0,s.useContext)(C);if(null===e)throw new f.dV("CodeBlockContextProvider");return e}const N={codeBlockContainer:"codeBlockContainer_Ckt0"};function S({as:e,...t}){const n=function(e){const t={color:"--prism-color",backgroundColor:"--prism-background-color"},n={};return Object.entries(e.plain).forEach((([e,s])=>{const o=t[e];o&&"string"==typeof s&&(n[o]=s)})),n}(u());return(0,m.jsx)(e,{...t,style:n,className:(0,a.A)(t.className,N.codeBlockContainer,h.G.common.codeBlock)})}const j={codeBlock:"codeBlock_bY9V",codeBlockStandalone:"codeBlockStandalone_MEMb",codeBlockLines:"codeBlockLines_e6Vv",codeBlockLinesWithNumbering:"codeBlockLinesWithNumbering_o6Pm"};function R({children:e,className:t}){return(0,m.jsx)(S,{as:"pre",tabIndex:0,className:(0,a.A)(j.codeBlockStandalone,"thin-scrollbar",t),children:(0,m.jsx)("code",{className:j.codeBlockLines,children:e})})}const L={attributes:!0,characterData:!0,childList:!0,subtree:!0};function O(e,t){const[n,o]=(0,s.useState)(),r=(0,s.useCallback)((()=>{o(e.current?.closest("[role=tabpanel][hidden]"))}),[e,o]);(0,s.useEffect)((()=>{r()}),[r]),function(e,t,n=L){const o=(0,f._q)(t),r=(0,f.Be)(n);(0,s.useEffect)((()=>{const t=new MutationObserver(o);return e&&t.observe(e,r),()=>t.disconnect()}),[e,o,r])}(n,(e=>{e.forEach((e=>{"attributes"===e.type&&"hidden"===e.attributeName&&(t(),r())}))}),{attributes:!0,characterData:!1,childList:!1,subtree:!1})}function D({children:e}){return e}var P=n(71765);function B({line:e,token:t,...n}){return(0,m.jsx)("span",{...n})}const M={codeLine:"codeLine_lJS_",codeLineNumber:"codeLineNumber_Tfdd",codeLineContent:"codeLineContent_feaV"};function q({line:e,classNames:t,showLineNumbers:n,getLineProps:s,getTokenProps:o}){const r=function(e){const t=1===e.length&&"\n"===e[0].content?e[0]:void 0;return t?[{...t,content:""}]:e}(e),i=s({line:r,className:(0,a.A)(t,n&&M.codeLine)}),c=r.map(((e,t)=>{const n=o({token:e});return(0,m.jsx)(B,{...n,line:r,token:e,children:n.children},t)}));return(0,m.jsxs)("span",{...i,children:[n?(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)("span",{className:M.codeLineNumber}),(0,m.jsx)("span",{className:M.codeLineContent,children:c})]}):c,(0,m.jsx)("br",{})]})}const F=s.forwardRef(((e,t)=>(0,m.jsx)("pre",{ref:t,tabIndex:0,...e,className:(0,a.A)(e.className,j.codeBlock,"thin-scrollbar")})));function $(e){const{metadata:t}=E();return(0,m.jsx)("code",{...e,className:(0,a.A)(e.className,j.codeBlockLines,void 0!==t.lineNumbersStart&&j.codeBlockLinesWithNumbering),style:{...e.style,counterReset:void 0===t.lineNumbersStart?void 0:"line-count "+(t.lineNumbersStart-1)}})}function U({className:e}){const{metadata:t,wordWrap:n}=E(),s=u(),{code:o,language:r,lineNumbersStart:i,lineClassNames:c}=t;return(0,m.jsx)(P.f4,{theme:s,code:o,language:r,children:({className:t,style:s,tokens:o,getLineProps:r,getTokenProps:l})=>(0,m.jsx)(F,{ref:n.codeBlockRef,className:(0,a.A)(e,t),style:s,children:(0,m.jsx)($,{children:o.map(((e,t)=>(0,m.jsx)(q,{line:e,getLineProps:r,getTokenProps:l,classNames:c[t],showLineNumbers:void 0!==i},t)))})})})}function H({children:e,fallback:t}){return(0,i.A)()?(0,m.jsx)(m.Fragment,{children:e?.()}):t??null}var V=n(21312);function K({className:e,...t}){return(0,m.jsx)("button",{type:"button",...t,className:(0,a.A)("clean-btn",e)})}function W(e){return(0,m.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,m.jsx)("path",{fill:"currentColor",d:"M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"})})}function z(e){return(0,m.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,m.jsx)("path",{fill:"currentColor",d:"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"})})}const G={copyButtonCopied:"copyButtonCopied_Vdqa",copyButtonIcons:"copyButtonIcons_IEyt",copyButtonIcon:"copyButtonIcon_TrPX",copyButtonSuccessIcon:"copyButtonSuccessIcon_cVMy"};function X(e){return e?(0,V.T)({id:"theme.CodeBlock.copied",message:"Copied",description:"The copied button label on code blocks"}):(0,V.T)({id:"theme.CodeBlock.copyButtonAriaLabel",message:"Copy code to clipboard",description:"The ARIA label for copy code blocks button"})}function J({className:e}){const{copyCode:t,isCopied:n}=function(){const{metadata:{code:e}}=E(),[t,n]=(0,s.useState)(!1),o=(0,s.useRef)(void 0),r=(0,s.useCallback)((()=>{navigator.clipboard.writeText(e).then((()=>{n(!0),o.current=window.setTimeout((()=>{n(!1)}),1e3)}))}),[e]);return(0,s.useEffect)((()=>()=>window.clearTimeout(o.current)),[]),{copyCode:r,isCopied:t}}();return(0,m.jsx)(K,{"aria-label":X(n),title:(0,V.T)({id:"theme.CodeBlock.copy",message:"Copy",description:"The copy button label on code blocks"}),className:(0,a.A)(e,G.copyButton,n&&G.copyButtonCopied),onClick:t,children:(0,m.jsxs)("span",{className:G.copyButtonIcons,"aria-hidden":"true",children:[(0,m.jsx)(W,{className:G.copyButtonIcon}),(0,m.jsx)(z,{className:G.copyButtonSuccessIcon})]})})}function Y(e){return(0,m.jsx)("svg",{viewBox:"0 0 24 24",...e,children:(0,m.jsx)("path",{fill:"currentColor",d:"M4 19h6v-2H4v2zM20 5H4v2h16V5zm-3 6H4v2h13.25c1.1 0 2 .9 2 2s-.9 2-2 2H15v-2l-3 3l3 3v-2h2c2.21 0 4-1.79 4-4s-1.79-4-4-4z"})})}const Q={wordWrapButtonIcon:"wordWrapButtonIcon_b1P5",wordWrapButtonEnabled:"wordWrapButtonEnabled_uzNF"};function Z({className:e}){const{wordWrap:t}=E();if(!(t.isEnabled||t.isCodeScrollable))return!1;const n=(0,V.T)({id:"theme.CodeBlock.wordWrapToggle",message:"Toggle word wrap",description:"The title attribute for toggle word wrapping button of code block lines"});return(0,m.jsx)(K,{onClick:()=>t.toggle(),className:(0,a.A)(e,t.isEnabled&&Q.wordWrapButtonEnabled),"aria-label":n,title:n,children:(0,m.jsx)(Y,{className:Q.wordWrapButtonIcon,"aria-hidden":"true"})})}const ee={buttonGroup:"buttonGroup_M5ko"};function te({className:e}){return(0,m.jsx)(H,{children:()=>(0,m.jsxs)("div",{className:(0,a.A)(e,ee.buttonGroup),children:[(0,m.jsx)(Z,{}),(0,m.jsx)(J,{})]})})}const ne={codeBlockContent:"codeBlockContent_QJqH",codeBlockTitle:"codeBlockTitle_OeMC",codeBlock:"codeBlock_a8dz"};function se({className:e}){const{metadata:t}=E();return(0,m.jsxs)(S,{as:"div",className:(0,a.A)(e,t.className),children:[t.title&&(0,m.jsx)("div",{className:ne.codeBlockTitle,children:(0,m.jsx)(D,{children:t.title})}),(0,m.jsxs)("div",{className:ne.codeBlockContent,children:[(0,m.jsx)(U,{}),(0,m.jsx)(te,{})]})]})}function oe(e){const t=function(e){const{prism:t}=(0,l.p)();return w({code:e.children,className:e.className,metastring:e.metastring,magicComments:t.magicComments,defaultLanguage:t.defaultLanguage,language:e.language,title:e.title,showLineNumbers:e.showLineNumbers})}(e),n=function(){const[e,t]=(0,s.useState)(!1),[n,o]=(0,s.useState)(!1),r=(0,s.useRef)(null),i=(0,s.useCallback)((()=>{const n=r.current.querySelector("code");e?n.removeAttribute("style"):(n.style.whiteSpace="pre-wrap",n.style.overflowWrap="anywhere"),t((e=>!e))}),[r,e]),a=(0,s.useCallback)((()=>{const{scrollWidth:e,clientWidth:t}=r.current,n=e>t||r.current.querySelector("code").hasAttribute("style");o(n)}),[r]);return O(r,a),(0,s.useEffect)((()=>{a()}),[e,a]),(0,s.useEffect)((()=>(window.addEventListener("resize",a,{passive:!0}),()=>{window.removeEventListener("resize",a)})),[a]),{codeBlockRef:r,isEnabled:e,isCodeScrollable:n,toggle:i}}();return(0,m.jsx)(A,{metadata:t,wordWrap:n,children:(0,m.jsx)(se,{})})}function re({children:e,...t}){const n=(0,i.A)(),o=function(e){return s.Children.toArray(e).some((e=>(0,s.isValidElement)(e)))?e:Array.isArray(e)?e.join(""):e}(e),r="string"==typeof o?oe:R;return(0,m.jsx)(r,{...t,children:o},String(n))}var ie,ae,ce,le={characterData:!0,characterDataOldValue:!0,childList:!0,subtree:!0};function ue(e){var t=window.getSelection();t.empty(),t.addRange(e)}function he(e){return(e.metaKey||e.ctrlKey)&&!e.altKey&&"KeyZ"===e.code}function pe(e){e=[e.firstChild];for(var t,n="";t=e.pop();)t.nodeType===Node.TEXT_NODE?n+=t.textContent:t.nodeType===Node.ELEMENT_NODE&&"BR"===t.nodeName&&(n+="\n"),t.nextSibling&&e.push(t.nextSibling),t.firstChild&&e.push(t.firstChild);return"\n"!==n[n.length-1]&&(n+="\n"),n}function de(e){var t=window.getSelection().getRangeAt(0),n=t.collapsed?0:t.toString().length,s=document.createRange();return s.setStart(e,0),s.setEnd(t.startContainer,t.startOffset),{position:e=(s=s.toString()).length,extent:n,content:s=(s=s.split("\n"))[t=s.length-1],line:t}}function fe(e,t,n){0>=t&&(t=0),(!n||0>n)&&(n=t);var s=document.createRange();e=[e.firstChild];for(var o,r=0,i=t;o=e[e.length-1];){if(o.nodeType===Node.TEXT_NODE){if(r+o.textContent.length>=i){var a=i-r;if(i===t){if(i=s,a<o.textContent.length?i.setStart(o,a):i.setStartAfter(o),n!==t){i=n;continue}break}t=s,a<(n=o).textContent.length?t.setEnd(n,a):t.setEndAfter(n);break}r+=o.textContent.length}else if(o.nodeType===Node.ELEMENT_NODE&&"BR"===o.nodeName){if(r+1>=i){if(i===t){if(a=s,0<o.textContent.length?a.setStart(o,0):a.setStartAfter(o),n!==t){i=n;continue}break}t=s,0<(n=o).textContent.length?t.setEnd(n,0):t.setEndAfter(n);break}r++}e.pop(),o.nextSibling&&e.push(o.nextSibling),o.firstChild&&e.push(o.firstChild)}return s}!function(e){e[e.NONE=0]="NONE";e[e._abstract=1]="_abstract";e[e._accessor=2]="_accessor";e[e._as=3]="_as";e[e._assert=4]="_assert";e[e._asserts=5]="_asserts";e[e._async=6]="_async";e[e._await=7]="_await";e[e._checks=8]="_checks";e[e._constructor=9]="_constructor";e[e._declare=10]="_declare";e[e._enum=11]="_enum";e[e._exports=12]="_exports";e[e._from=13]="_from";e[e._get=14]="_get";e[e._global=15]="_global";e[e._implements=16]="_implements";e[e._infer=17]="_infer";e[e._interface=18]="_interface";e[e._is=19]="_is";e[e._keyof=20]="_keyof";e[e._mixins=21]="_mixins";e[e._module=22]="_module";e[e._namespace=23]="_namespace";e[e._of=24]="_of";e[e._opaque=25]="_opaque";e[e._out=26]="_out";e[e._override=27]="_override";e[e._private=28]="_private";e[e._protected=29]="_protected";e[e._proto=30]="_proto";e[e._public=31]="_public";e[e._readonly=32]="_readonly";e[e._require=33]="_require";e[e._satisfies=34]="_satisfies";e[e._set=35]="_set";e[e._static=36]="_static";e[e._symbol=37]="_symbol";e[e._type=38]="_type";e[e._unique=39]="_unique";e[e._using=40]="_using"}(ie||(ie={})),function(e){e[e.PRECEDENCE_MASK=15]="PRECEDENCE_MASK";e[e.IS_KEYWORD=16]="IS_KEYWORD";e[e.IS_ASSIGN=32]="IS_ASSIGN";e[e.IS_RIGHT_ASSOCIATIVE=64]="IS_RIGHT_ASSOCIATIVE";e[e.IS_PREFIX=128]="IS_PREFIX";e[e.IS_POSTFIX=256]="IS_POSTFIX";e[e.IS_EXPRESSION_START=512]="IS_EXPRESSION_START";e[e.num=512]="num";e[e.bigint=1536]="bigint";e[e.decimal=2560]="decimal";e[e.regexp=3584]="regexp";e[e.string=4608]="string";e[e.name=5632]="name";e[e.eof=6144]="eof";e[e.bracketL=7680]="bracketL";e[e.bracketR=8192]="bracketR";e[e.braceL=9728]="braceL";e[e.braceBarL=10752]="braceBarL";e[e.braceR=11264]="braceR";e[e.braceBarR=12288]="braceBarR";e[e.parenL=13824]="parenL";e[e.parenR=14336]="parenR";e[e.comma=15360]="comma";e[e.semi=16384]="semi";e[e.colon=17408]="colon";e[e.doubleColon=18432]="doubleColon";e[e.dot=19456]="dot";e[e.question=20480]="question";e[e.questionDot=21504]="questionDot";e[e.arrow=22528]="arrow";e[e.template=23552]="template";e[e.ellipsis=24576]="ellipsis";e[e.backQuote=25600]="backQuote";e[e.dollarBraceL=27136]="dollarBraceL";e[e.at=27648]="at";e[e.hash=29184]="hash";e[e.eq=29728]="eq";e[e.assign=30752]="assign";e[e.preIncDec=32640]="preIncDec";e[e.postIncDec=33664]="postIncDec";e[e.bang=34432]="bang";e[e.tilde=35456]="tilde";e[e.pipeline=35841]="pipeline";e[e.nullishCoalescing=36866]="nullishCoalescing";e[e.logicalOR=37890]="logicalOR";e[e.logicalAND=38915]="logicalAND";e[e.bitwiseOR=39940]="bitwiseOR";e[e.bitwiseXOR=40965]="bitwiseXOR";e[e.bitwiseAND=41990]="bitwiseAND";e[e.equality=43015]="equality";e[e.lessThan=44040]="lessThan";e[e.greaterThan=45064]="greaterThan";e[e.relationalOrEqual=46088]="relationalOrEqual";e[e.bitShiftL=47113]="bitShiftL";e[e.bitShiftR=48137]="bitShiftR";e[e.plus=49802]="plus";e[e.minus=50826]="minus";e[e.modulo=51723]="modulo";e[e.star=52235]="star";e[e.slash=53259]="slash";e[e.exponent=54348]="exponent";e[e.jsxName=55296]="jsxName";e[e.jsxText=56320]="jsxText";e[e.jsxEmptyText=57344]="jsxEmptyText";e[e.jsxTagStart=58880]="jsxTagStart";e[e.jsxTagEnd=59392]="jsxTagEnd";e[e.typeParameterStart=60928]="typeParameterStart";e[e.nonNullAssertion=61440]="nonNullAssertion";e[e._break=62480]="_break";e[e._case=63504]="_case";e[e._catch=64528]="_catch";e[e._continue=65552]="_continue";e[e._debugger=66576]="_debugger";e[e._default=67600]="_default";e[e._do=68624]="_do";e[e._else=69648]="_else";e[e._finally=70672]="_finally";e[e._for=71696]="_for";e[e._function=73232]="_function";e[e._if=73744]="_if";e[e._return=74768]="_return";e[e._switch=75792]="_switch";e[e._throw=77456]="_throw";e[e._try=77840]="_try";e[e._var=78864]="_var";e[e._let=79888]="_let";e[e._const=80912]="_const";e[e._while=81936]="_while";e[e._with=82960]="_with";e[e._new=84496]="_new";e[e._this=85520]="_this";e[e._super=86544]="_super";e[e._class=87568]="_class";e[e._extends=88080]="_extends";e[e._export=89104]="_export";e[e._import=90640]="_import";e[e._yield=91664]="_yield";e[e._null=92688]="_null";e[e._true=93712]="_true";e[e._false=94736]="_false";e[e._in=95256]="_in";e[e._instanceof=96280]="_instanceof";e[e._typeof=97936]="_typeof";e[e._void=98960]="_void";e[e._delete=99984]="_delete";e[e._async=100880]="_async";e[e._get=101904]="_get";e[e._set=102928]="_set";e[e._declare=103952]="_declare";e[e._readonly=104976]="_readonly";e[e._abstract=106e3]="_abstract";e[e._static=107024]="_static";e[e._public=107536]="_public";e[e._private=108560]="_private";e[e._protected=109584]="_protected";e[e._override=110608]="_override";e[e._as=112144]="_as";e[e._enum=113168]="_enum";e[e._type=114192]="_type";e[e._implements=115216]="_implements"}(ae||(ae={}));class me{constructor(e,t,n){this.startTokenIndex=e,this.endTokenIndex=t,this.isFunctionScope=n}}class ke{constructor(e,t,n,s,o,r,i,a,c,l,u,h,p){this.potentialArrowAt=e,this.noAnonFunctionType=t,this.inDisallowConditionalTypesContext=n,this.tokensLength=s,this.scopesLength=o,this.pos=r,this.type=i,this.contextualKeyword=a,this.start=c,this.end=l,this.isType=u,this.scopeDepth=h,this.error=p}}class ge{constructor(){ge.prototype.__init.call(this),ge.prototype.__init2.call(this),ge.prototype.__init3.call(this),ge.prototype.__init4.call(this),ge.prototype.__init5.call(this),ge.prototype.__init6.call(this),ge.prototype.__init7.call(this),ge.prototype.__init8.call(this),ge.prototype.__init9.call(this),ge.prototype.__init10.call(this),ge.prototype.__init11.call(this),ge.prototype.__init12.call(this),ge.prototype.__init13.call(this)}__init(){this.potentialArrowAt=-1}__init2(){this.noAnonFunctionType=!1}__init3(){this.inDisallowConditionalTypesContext=!1}__init4(){this.tokens=[]}__init5(){this.scopes=[]}__init6(){this.pos=0}__init7(){this.type=ae.eof}__init8(){this.contextualKeyword=ie.NONE}__init9(){this.start=0}__init10(){this.end=0}__init11(){this.isType=!1}__init12(){this.scopeDepth=0}__init13(){this.error=null}snapshot(){return new ke(this.potentialArrowAt,this.noAnonFunctionType,this.inDisallowConditionalTypesContext,this.tokens.length,this.scopes.length,this.pos,this.type,this.contextualKeyword,this.start,this.end,this.isType,this.scopeDepth,this.error)}restoreFromSnapshot(e){this.potentialArrowAt=e.potentialArrowAt,this.noAnonFunctionType=e.noAnonFunctionType,this.inDisallowConditionalTypesContext=e.inDisallowConditionalTypesContext,this.tokens.length=e.tokensLength,this.scopes.length=e.scopesLength,this.pos=e.pos,this.type=e.type,this.contextualKeyword=e.contextualKeyword,this.start=e.start,this.end=e.end,this.isType=e.isType,this.scopeDepth=e.scopeDepth,this.error=e.error}}let xe,ye,_e,Te,be,ve;function Ie(){return ve++}function we(e){if("pos"in e){const t=function(e){let t=1,n=1;for(let s=0;s<e;s++)be.charCodeAt(s)===ce.lineFeed?(t++,n=1):n++;return new Ce(t,n)}(e.pos);e.message+=` (${t.line}:${t.column})`,e.loc=t}return e}!function(e){e[e.backSpace=8]="backSpace";e[e.lineFeed=10]="lineFeed";e[e.tab=9]="tab";e[e.carriageReturn=13]="carriageReturn";e[e.shiftOut=14]="shiftOut";e[e.space=32]="space";e[e.exclamationMark=33]="exclamationMark";e[e.quotationMark=34]="quotationMark";e[e.numberSign=35]="numberSign";e[e.dollarSign=36]="dollarSign";e[e.percentSign=37]="percentSign";e[e.ampersand=38]="ampersand";e[e.apostrophe=39]="apostrophe";e[e.leftParenthesis=40]="leftParenthesis";e[e.rightParenthesis=41]="rightParenthesis";e[e.asterisk=42]="asterisk";e[e.plusSign=43]="plusSign";e[e.comma=44]="comma";e[e.dash=45]="dash";e[e.dot=46]="dot";e[e.slash=47]="slash";e[e.digit0=48]="digit0";e[e.digit1=49]="digit1";e[e.digit2=50]="digit2";e[e.digit3=51]="digit3";e[e.digit4=52]="digit4";e[e.digit5=53]="digit5";e[e.digit6=54]="digit6";e[e.digit7=55]="digit7";e[e.digit8=56]="digit8";e[e.digit9=57]="digit9";e[e.colon=58]="colon";e[e.semicolon=59]="semicolon";e[e.lessThan=60]="lessThan";e[e.equalsTo=61]="equalsTo";e[e.greaterThan=62]="greaterThan";e[e.questionMark=63]="questionMark";e[e.atSign=64]="atSign";e[e.uppercaseA=65]="uppercaseA";e[e.uppercaseB=66]="uppercaseB";e[e.uppercaseC=67]="uppercaseC";e[e.uppercaseD=68]="uppercaseD";e[e.uppercaseE=69]="uppercaseE";e[e.uppercaseF=70]="uppercaseF";e[e.uppercaseG=71]="uppercaseG";e[e.uppercaseH=72]="uppercaseH";e[e.uppercaseI=73]="uppercaseI";e[e.uppercaseJ=74]="uppercaseJ";e[e.uppercaseK=75]="uppercaseK";e[e.uppercaseL=76]="uppercaseL";e[e.uppercaseM=77]="uppercaseM";e[e.uppercaseN=78]="uppercaseN";e[e.uppercaseO=79]="uppercaseO";e[e.uppercaseP=80]="uppercaseP";e[e.uppercaseQ=81]="uppercaseQ";e[e.uppercaseR=82]="uppercaseR";e[e.uppercaseS=83]="uppercaseS";e[e.uppercaseT=84]="uppercaseT";e[e.uppercaseU=85]="uppercaseU";e[e.uppercaseV=86]="uppercaseV";e[e.uppercaseW=87]="uppercaseW";e[e.uppercaseX=88]="uppercaseX";e[e.uppercaseY=89]="uppercaseY";e[e.uppercaseZ=90]="uppercaseZ";e[e.leftSquareBracket=91]="leftSquareBracket";e[e.backslash=92]="backslash";e[e.rightSquareBracket=93]="rightSquareBracket";e[e.caret=94]="caret";e[e.underscore=95]="underscore";e[e.graveAccent=96]="graveAccent";e[e.lowercaseA=97]="lowercaseA";e[e.lowercaseB=98]="lowercaseB";e[e.lowercaseC=99]="lowercaseC";e[e.lowercaseD=100]="lowercaseD";e[e.lowercaseE=101]="lowercaseE";e[e.lowercaseF=102]="lowercaseF";e[e.lowercaseG=103]="lowercaseG";e[e.lowercaseH=104]="lowercaseH";e[e.lowercaseI=105]="lowercaseI";e[e.lowercaseJ=106]="lowercaseJ";e[e.lowercaseK=107]="lowercaseK";e[e.lowercaseL=108]="lowercaseL";e[e.lowercaseM=109]="lowercaseM";e[e.lowercaseN=110]="lowercaseN";e[e.lowercaseO=111]="lowercaseO";e[e.lowercaseP=112]="lowercaseP";e[e.lowercaseQ=113]="lowercaseQ";e[e.lowercaseR=114]="lowercaseR";e[e.lowercaseS=115]="lowercaseS";e[e.lowercaseT=116]="lowercaseT";e[e.lowercaseU=117]="lowercaseU";e[e.lowercaseV=118]="lowercaseV";e[e.lowercaseW=119]="lowercaseW";e[e.lowercaseX=120]="lowercaseX";e[e.lowercaseY=121]="lowercaseY";e[e.lowercaseZ=122]="lowercaseZ";e[e.leftCurlyBrace=123]="leftCurlyBrace";e[e.verticalBar=124]="verticalBar";e[e.rightCurlyBrace=125]="rightCurlyBrace";e[e.tilde=126]="tilde";e[e.nonBreakingSpace=160]="nonBreakingSpace";e[e.oghamSpaceMark=5760]="oghamSpaceMark";e[e.lineSeparator=8232]="lineSeparator";e[e.paragraphSeparator=8233]="paragraphSeparator"}(ce||(ce={}));class Ce{constructor(e,t){this.line=e,this.column=t}}function Ae(e,t,n,s){be=e,Te=new ge,ve=1,xe=t,ye=n,_e=s}function Ee(e){return Te.contextualKeyword===e}function Ne(e){const t=ht();return t.type===ae.name&&t.contextualKeyword===e}function Se(e){return Te.contextualKeyword===e&&it(ae.name)}function je(e){Se(e)||Me()}function Re(){return ct(ae.eof)||ct(ae.braceR)||Le()}function Le(){const e=Te.tokens[Te.tokens.length-1];for(let t=e?e.end:0;t<Te.start;t++){const e=be.charCodeAt(t);if(e===ce.lineFeed||e===ce.carriageReturn||8232===e||8233===e)return!0}return!1}function Oe(){const e=pt();for(let t=Te.end;t<e;t++){const e=be.charCodeAt(t);if(e===ce.lineFeed||e===ce.carriageReturn||8232===e||8233===e)return!0}return!1}function De(){return it(ae.semi)||Re()}function Pe(){De()||Me('Unexpected token, expected ";"')}function Be(e){it(e)||Me(`Unexpected token, expected "${function(e){switch(e){case ae.num:return"num";case ae.bigint:return"bigint";case ae.decimal:return"decimal";case ae.regexp:return"regexp";case ae.string:return"string";case ae.name:return"name";case ae.eof:return"eof";case ae.bracketL:return"[";case ae.bracketR:return"]";case ae.braceL:return"{";case ae.braceBarL:return"{|";case ae.braceR:return"}";case ae.braceBarR:return"|}";case ae.parenL:return"(";case ae.parenR:return")";case ae.comma:return",";case ae.semi:return";";case ae.colon:return":";case ae.doubleColon:return"::";case ae.dot:return".";case ae.question:return"?";case ae.questionDot:return"?.";case ae.arrow:return"=>";case ae.template:return"template";case ae.ellipsis:return"...";case ae.backQuote:return"`";case ae.dollarBraceL:return"${";case ae.at:return"@";case ae.hash:return"#";case ae.eq:return"=";case ae.assign:return"_=";case ae.preIncDec:case ae.postIncDec:return"++/--";case ae.bang:return"!";case ae.tilde:return"~";case ae.pipeline:return"|>";case ae.nullishCoalescing:return"??";case ae.logicalOR:return"||";case ae.logicalAND:return"&&";case ae.bitwiseOR:return"|";case ae.bitwiseXOR:return"^";case ae.bitwiseAND:return"&";case ae.equality:return"==/!=";case ae.lessThan:return"<";case ae.greaterThan:return">";case ae.relationalOrEqual:return"<=/>=";case ae.bitShiftL:return"<<";case ae.bitShiftR:return">>/>>>";case ae.plus:return"+";case ae.minus:return"-";case ae.modulo:return"%";case ae.star:return"*";case ae.slash:return"/";case ae.exponent:return"**";case ae.jsxName:return"jsxName";case ae.jsxText:return"jsxText";case ae.jsxEmptyText:return"jsxEmptyText";case ae.jsxTagStart:return"jsxTagStart";case ae.jsxTagEnd:return"jsxTagEnd";case ae.typeParameterStart:return"typeParameterStart";case ae.nonNullAssertion:return"nonNullAssertion";case ae._break:return"break";case ae._case:return"case";case ae._catch:return"catch";case ae._continue:return"continue";case ae._debugger:return"debugger";case ae._default:return"default";case ae._do:return"do";case ae._else:return"else";case ae._finally:return"finally";case ae._for:return"for";case ae._function:return"function";case ae._if:return"if";case ae._return:return"return";case ae._switch:return"switch";case ae._throw:return"throw";case ae._try:return"try";case ae._var:return"var";case ae._let:return"let";case ae._const:return"const";case ae._while:return"while";case ae._with:return"with";case ae._new:return"new";case ae._this:return"this";case ae._super:return"super";case ae._class:return"class";case ae._extends:return"extends";case ae._export:return"export";case ae._import:return"import";case ae._yield:return"yield";case ae._null:return"null";case ae._true:return"true";case ae._false:return"false";case ae._in:return"in";case ae._instanceof:return"instanceof";case ae._typeof:return"typeof";case ae._void:return"void";case ae._delete:return"delete";case ae._async:return"async";case ae._get:return"get";case ae._set:return"set";case ae._declare:return"declare";case ae._readonly:return"readonly";case ae._abstract:return"abstract";case ae._static:return"static";case ae._public:return"public";case ae._private:return"private";case ae._protected:return"protected";case ae._override:return"override";case ae._as:return"as";case ae._enum:return"enum";case ae._type:return"type";case ae._implements:return"implements";default:return""}}(e)}"`)}function Me(e="Unexpected token",t=Te.start){if(Te.error)return;const n=new SyntaxError(e);n.pos=t,Te.error=n,Te.pos=be.length,yt(ae.eof)}const qe=[9,11,12,ce.space,ce.nonBreakingSpace,ce.oghamSpaceMark,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279],Fe=/(?:\s|\/\/.*|\/\*[^]*?\*\/)*/g,$e=new Uint8Array(65536);for(const Xi of qe)$e[Xi]=1;function Ue(e){if(e<48)return 36===e;if(e<58)return!0;if(e<65)return!1;if(e<91)return!0;if(e<97)return 95===e;if(e<123)return!0;if(e<128)return!1;throw new Error("Should not be called with non-ASCII char code.")}const He=new Uint8Array(65536);for(let Xi=0;Xi<128;Xi++)He[Xi]=Ue(Xi)?1:0;for(let Xi=128;Xi<65536;Xi++)He[Xi]=1;for(const Xi of qe)He[Xi]=0;He[8232]=0,He[8233]=0;const Ve=He.slice();for(let Xi=ce.digit0;Xi<=ce.digit9;Xi++)Ve[Xi]=0;const Ke=new Int32Array([-1,27,783,918,1755,2376,2862,3483,-1,3699,-1,4617,4752,4833,5130,5508,5940,-1,6480,6939,7749,8181,8451,8613,-1,8829,-1,-1,-1,54,243,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,432,-1,-1,-1,675,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,81,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,108,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,135,-1,-1,-1,-1,-1,-1,-1,-1,-1,162,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,189,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,216,-1,-1,-1,-1,-1,-1,ie._abstract<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,270,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,297,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,324,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,351,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,378,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,405,-1,-1,-1,-1,-1,-1,-1,-1,ie._accessor<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ie._as<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,459,-1,-1,-1,-1,-1,594,-1,-1,-1,-1,-1,-1,486,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,513,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,540,-1,-1,-1,-1,-1,-1,ie._assert<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,567,-1,-1,-1,-1,-1,-1,-1,ie._asserts<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,621,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,648,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ie._async<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,702,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,729,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,756,-1,-1,-1,-1,-1,-1,ie._await<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,810,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,837,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,864,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,891,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1+(ae._break<<1),-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,945,-1,-1,-1,-1,-1,-1,1107,-1,-1,-1,1242,-1,-1,1350,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,972,1026,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,999,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1+(ae._case<<1),-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1053,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1080,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1+(ae._catch<<1),-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1134,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1161,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1188,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1215,-1,-1,-1,-1,-1,-1,-1,ie._checks<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1269,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1296,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1323,-1,-1,-1,-1,-1,-1,-1,1+(ae._class<<1),-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1377,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1404,1620,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1431,-1,-1,-1,-1,-1,-1,1+(ae._const<<1),-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1458,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1485,-1,-1,-1,-1,-1,-1,-1,-1,1512,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1539,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1566,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1593,-1,-1,-1,-1,-1,-1,-1,-1,ie._constructor<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1647,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1674,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1701,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1728,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1+(ae._continue<<1),-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1782,-1,-1,-1,-1,-1,-1,-1,-1,-1,2349,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1809,1971,-1,-1,2106,-1,-1,-1,-1,-1,2241,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1836,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1863,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1890,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1917,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1944,-1,-1,-1,-1,-1,-1,-1,-1,1+(ae._debugger<<1),-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1998,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2025,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2052,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2079,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ie._declare<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2133,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2160,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2187,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2214,-1,-1,-1,-1,-1,-1,1+(ae._default<<1),-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2268,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2295,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2322,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1+(ae._delete<<1),-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1+(ae._do<<1),-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2403,-1,2484,-1,-1,-1,-1,-1,-1,-1,-1,-1,2565,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2430,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2457,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1+(ae._else<<1),-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2511,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2538,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ie._enum<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2592,-1,-1,-1,2727,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2619,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2646,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2673,-1,-1,-1,-1,-1,-1,1+(ae._export<<1),-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2700,-1,-1,-1,-1,-1,-1,-1,ie._exports<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2754,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2781,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2808,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2835,-1,-1,-1,-1,-1,-1,-1,1+(ae._extends<<1),-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2889,-1,-1,-1,-1,-1,-1,-1,2997,-1,-1,-1,-1,-1,3159,-1,-1,3213,-1,-1,3294,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2916,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2943,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,2970,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1+(ae._false<<1),-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3024,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3051,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3078,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3105,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3132,-1,1+(ae._finally<<1),-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3186,-1,-1,-1,-1,-1,-1,-1,-1,1+(ae._for<<1),-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3240,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3267,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ie._from<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3321,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3348,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3375,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3402,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3429,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3456,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1+(ae._function<<1),-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3510,-1,-1,-1,-1,-1,-1,3564,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3537,-1,-1,-1,-1,-1,-1,ie._get<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3591,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3618,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3645,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3672,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ie._global<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3726,-1,-1,-1,-1,-1,-1,3753,4077,-1,-1,-1,-1,4590,-1,-1,-1,-1,-1,-1,-1,1+(ae._if<<1),-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3780,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3807,-1,-1,3996,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3834,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3861,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3888,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3915,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3942,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,3969,-1,-1,-1,-1,-1,-1,-1,ie._implements<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4023,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4050,-1,-1,-1,-1,-1,-1,1+(ae._import<<1),-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1+(ae._in<<1),-1,-1,-1,-1,-1,4104,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4185,4401,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4131,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4158,-1,-1,-1,-1,-1,-1,-1,-1,ie._infer<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4212,-1,-1,-1,-1,-1,-1,-1,4239,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4266,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4293,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4320,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4347,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4374,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1+(ae._instanceof<<1),-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4428,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4455,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4482,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4509,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4536,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4563,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ie._interface<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ie._is<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4644,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4671,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4698,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4725,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ie._keyof<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4779,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4806,-1,-1,-1,-1,-1,-1,1+(ae._let<<1),-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4860,-1,-1,-1,-1,-1,4995,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4887,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4914,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4941,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,4968,-1,-1,-1,-1,-1,-1,-1,ie._mixins<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5022,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5049,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5076,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5103,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ie._module<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5157,-1,-1,-1,5373,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5427,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5184,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5211,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5238,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5265,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5292,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5319,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5346,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ie._namespace<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5400,-1,-1,-1,1+(ae._new<<1),-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5454,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5481,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1+(ae._null<<1),-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5535,-1,-1,-1,-1,-1,-1,-1,-1,-1,5562,-1,-1,-1,-1,5697,5751,-1,-1,-1,-1,ie._of<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5589,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5616,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5643,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5670,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ie._opaque<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5724,-1,-1,-1,-1,-1,-1,ie._out<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5778,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5805,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5832,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5859,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5886,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5913,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ie._override<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5967,-1,-1,6345,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,5994,-1,-1,-1,-1,-1,6129,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6021,-1,-1,-1,-1,-1,6048,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6075,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6102,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ie._private<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6156,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6183,-1,-1,-1,-1,-1,-1,-1,-1,-1,6318,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6210,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6237,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6264,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6291,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ie._protected<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ie._proto<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6372,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6399,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6426,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6453,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ie._public<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6507,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6534,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6696,-1,-1,6831,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6561,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6588,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6615,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6642,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6669,-1,ie._readonly<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6723,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6750,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6777,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6804,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ie._require<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6858,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6885,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6912,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1+(ae._return<<1),-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6966,-1,-1,-1,7182,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7236,7371,-1,7479,-1,7614,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,6993,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7020,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7047,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7074,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7101,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7128,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7155,-1,-1,-1,-1,-1,-1,-1,ie._satisfies<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7209,-1,-1,-1,-1,-1,-1,ie._set<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7263,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7290,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7317,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7344,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ie._static<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7398,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7425,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7452,-1,-1,-1,-1,-1,-1,-1,-1,1+(ae._super<<1),-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7506,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7533,-1,-1,-1,-1,-1,-1,-1,-1,-1,7560,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7587,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1+(ae._switch<<1),-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7641,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7668,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7695,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7722,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ie._symbol<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7776,-1,-1,-1,-1,-1,-1,-1,-1,-1,7938,-1,-1,-1,-1,-1,-1,8046,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7803,-1,-1,-1,-1,-1,-1,-1,-1,7857,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7830,-1,-1,-1,-1,-1,-1,-1,1+(ae._this<<1),-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7884,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7911,-1,-1,-1,1+(ae._throw<<1),-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,7965,-1,-1,-1,8019,-1,-1,-1,-1,-1,-1,7992,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1+(ae._true<<1),-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1+(ae._try<<1),-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8073,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8100,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ie._type<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8127,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8154,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1+(ae._typeof<<1),-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8208,-1,-1,-1,-1,8343,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8235,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8262,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8289,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8316,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ie._unique<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8370,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8397,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8424,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,ie._using<<1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8478,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8532,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8505,-1,-1,-1,-1,-1,-1,-1,-1,1+(ae._var<<1),-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8559,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8586,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1+(ae._void<<1),-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8640,8748,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8667,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8694,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8721,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1+(ae._while<<1),-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8775,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8802,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1+(ae._with<<1),-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8856,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8883,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8910,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8937,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1+(ae._yield<<1),-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1]);var We,ze;function Ge(e){const t=e.identifierRole;return t===We.TopLevelDeclaration||t===We.FunctionScopedDeclaration||t===We.BlockScopedDeclaration||t===We.ObjectShorthandTopLevelDeclaration||t===We.ObjectShorthandFunctionScopedDeclaration||t===We.ObjectShorthandBlockScopedDeclaration}function Xe(e){const t=e.identifierRole;return t===We.FunctionScopedDeclaration||t===We.BlockScopedDeclaration||t===We.ObjectShorthandFunctionScopedDeclaration||t===We.ObjectShorthandBlockScopedDeclaration}function Je(e){const t=e.identifierRole;return t===We.TopLevelDeclaration||t===We.ObjectShorthandTopLevelDeclaration||t===We.ImportDeclaration}function Ye(e){const t=e.identifierRole;return t===We.TopLevelDeclaration||t===We.BlockScopedDeclaration||t===We.ObjectShorthandTopLevelDeclaration||t===We.ObjectShorthandBlockScopedDeclaration}function Qe(e){const t=e.identifierRole;return t===We.FunctionScopedDeclaration||t===We.ObjectShorthandFunctionScopedDeclaration}function Ze(e){return e.identifierRole===We.ObjectShorthandTopLevelDeclaration||e.identifierRole===We.ObjectShorthandBlockScopedDeclaration||e.identifierRole===We.ObjectShorthandFunctionScopedDeclaration}!function(e){e[e.Access=0]="Access";e[e.ExportAccess=1]="ExportAccess";e[e.TopLevelDeclaration=2]="TopLevelDeclaration";e[e.FunctionScopedDeclaration=3]="FunctionScopedDeclaration";e[e.BlockScopedDeclaration=4]="BlockScopedDeclaration";e[e.ObjectShorthandTopLevelDeclaration=5]="ObjectShorthandTopLevelDeclaration";e[e.ObjectShorthandFunctionScopedDeclaration=6]="ObjectShorthandFunctionScopedDeclaration";e[e.ObjectShorthandBlockScopedDeclaration=7]="ObjectShorthandBlockScopedDeclaration";e[e.ObjectShorthand=8]="ObjectShorthand";e[e.ImportDeclaration=9]="ImportDeclaration";e[e.ObjectKey=10]="ObjectKey";e[e.ImportAccess=11]="ImportAccess"}(We||(We={})),function(e){e[e.NoChildren=0]="NoChildren";e[e.OneChild=1]="OneChild";e[e.StaticChildren=2]="StaticChildren";e[e.KeyAfterPropSpread=3]="KeyAfterPropSpread"}(ze||(ze={}));class et{constructor(){this.type=Te.type,this.contextualKeyword=Te.contextualKeyword,this.start=Te.start,this.end=Te.end,this.scopeDepth=Te.scopeDepth,this.isType=Te.isType,this.identifierRole=null,this.jsxRole=null,this.shadowsGlobal=!1,this.isAsyncOperation=!1,this.contextId=null,this.rhsEndIndex=null,this.isExpression=!1,this.numNullishCoalesceStarts=0,this.numNullishCoalesceEnds=0,this.isOptionalChainStart=!1,this.isOptionalChainEnd=!1,this.subscriptStartIndex=null,this.nullishStartIndex=null}}function tt(){Te.tokens.push(new et),mt()}function nt(){Te.tokens.push(new et),Te.start=Te.pos,function(){for(;;){if(Te.pos>=be.length)return void Me("Unterminated template");const e=be.charCodeAt(Te.pos);if(e===ce.graveAccent||e===ce.dollarSign&&be.charCodeAt(Te.pos+1)===ce.leftCurlyBrace)return Te.pos===Te.start&&ct(ae.template)?e===ce.dollarSign?(Te.pos+=2,void yt(ae.dollarBraceL)):(++Te.pos,void yt(ae.backQuote)):void yt(ae.template);e===ce.backslash&&Te.pos++,Te.pos++}}()}function st(){Te.type===ae.assign&&--Te.pos,function(){const e=Te.pos;let t=!1,n=!1;for(;;){if(Te.pos>=be.length)return void Me("Unterminated regular expression",e);const s=be.charCodeAt(Te.pos);if(t)t=!1;else{if(s===ce.leftSquareBracket)n=!0;else if(s===ce.rightSquareBracket&&n)n=!1;else if(s===ce.slash&&!n)break;t=s===ce.backslash}++Te.pos}++Te.pos,function(){for(;Te.pos<be.length;){const e=be.charCodeAt(Te.pos);if(He[e])Te.pos++;else{if(e!==ce.backslash)break;if(Te.pos+=2,be.charCodeAt(Te.pos)===ce.leftCurlyBrace){for(;Te.pos<be.length&&be.charCodeAt(Te.pos)!==ce.rightCurlyBrace;)Te.pos++;Te.pos++}}}}(),yt(ae.regexp)}()}function ot(e){for(let n=Te.tokens.length-e;n<Te.tokens.length;n++)Te.tokens[n].isType=!0;const t=Te.isType;return Te.isType=!0,t}function rt(e){Te.isType=e}function it(e){return!!ct(e)&&(tt(),!0)}function at(e){const t=Te.isType;Te.isType=!0,it(e),Te.isType=t}function ct(e){return Te.type===e}function lt(){const e=Te.snapshot();tt();const t=Te.type;return Te.restoreFromSnapshot(e),t}class ut{constructor(e,t){this.type=e,this.contextualKeyword=t}}function ht(){const e=Te.snapshot();tt();const t=Te.type,n=Te.contextualKeyword;return Te.restoreFromSnapshot(e),new ut(t,n)}function pt(){return dt(Te.pos)}function dt(e){Fe.lastIndex=e;return e+Fe.exec(be)[0].length}function ft(){return be.charCodeAt(pt())}function mt(){if(xt(),Te.start=Te.pos,Te.pos>=be.length){const e=Te.tokens;return e.length>=2&&e[e.length-1].start>=be.length&&e[e.length-2].start>=be.length&&Me("Unexpectedly reached the end of input."),void yt(ae.eof)}var e;e=be.charCodeAt(Te.pos),Ve[e]||e===ce.backslash||e===ce.atSign&&be.charCodeAt(Te.pos+1)===ce.atSign?function(){let e=0,t=0,n=Te.pos;for(;n<be.length&&(t=be.charCodeAt(n),!(t<ce.lowercaseA||t>ce.lowercaseZ));){const s=Ke[e+(t-ce.lowercaseA)+1];if(-1===s)break;e=s,n++}const s=Ke[e];if(s>-1&&!He[t])return Te.pos=n,void(1&s?yt(s>>>1):yt(ae.name,s>>>1));for(;n<be.length;){const e=be.charCodeAt(n);if(He[e])n++;else if(e===ce.backslash){if(n+=2,be.charCodeAt(n)===ce.leftCurlyBrace){for(;n<be.length&&be.charCodeAt(n)!==ce.rightCurlyBrace;)n++;n++}}else{if(e!==ce.atSign||be.charCodeAt(n+1)!==ce.atSign)break;n+=2}}Te.pos=n,yt(ae.name)}():bt(e)}function kt(){for(;be.charCodeAt(Te.pos)!==ce.asterisk||be.charCodeAt(Te.pos+1)!==ce.slash;)if(Te.pos++,Te.pos>be.length)return void Me("Unterminated comment",Te.pos-2);Te.pos+=2}function gt(e){let t=be.charCodeAt(Te.pos+=e);if(Te.pos<be.length)for(;t!==ce.lineFeed&&t!==ce.carriageReturn&&t!==ce.lineSeparator&&t!==ce.paragraphSeparator&&++Te.pos<be.length;)t=be.charCodeAt(Te.pos)}function xt(){for(;Te.pos<be.length;){const e=be.charCodeAt(Te.pos);switch(e){case ce.carriageReturn:be.charCodeAt(Te.pos+1)===ce.lineFeed&&++Te.pos;case ce.lineFeed:case ce.lineSeparator:case ce.paragraphSeparator:++Te.pos;break;case ce.slash:switch(be.charCodeAt(Te.pos+1)){case ce.asterisk:Te.pos+=2,kt();break;case ce.slash:gt(2);break;default:return}break;default:if(!$e[e])return;++Te.pos}}}function yt(e,t=ie.NONE){Te.end=Te.pos,Te.type=e,Te.contextualKeyword=t}function _t(){if(Te.isType)return void vt(ae.greaterThan,1);const e=be.charCodeAt(Te.pos+1);if(e===ce.greaterThan){const e=be.charCodeAt(Te.pos+2)===ce.greaterThan?3:2;return be.charCodeAt(Te.pos+e)===ce.equalsTo?void vt(ae.assign,e+1):void vt(ae.bitShiftR,e)}e===ce.equalsTo?vt(ae.relationalOrEqual,2):vt(ae.greaterThan,1)}function Tt(){Te.type===ae.greaterThan&&(Te.pos-=1,_t())}function bt(e){switch(e){case ce.numberSign:return++Te.pos,void yt(ae.hash);case ce.dot:return void function(){const e=be.charCodeAt(Te.pos+1);e>=ce.digit0&&e<=ce.digit9?wt(!0):e===ce.dot&&be.charCodeAt(Te.pos+2)===ce.dot?(Te.pos+=3,yt(ae.ellipsis)):(++Te.pos,yt(ae.dot))}();case ce.leftParenthesis:return++Te.pos,void yt(ae.parenL);case ce.rightParenthesis:return++Te.pos,void yt(ae.parenR);case ce.semicolon:return++Te.pos,void yt(ae.semi);case ce.comma:return++Te.pos,void yt(ae.comma);case ce.leftSquareBracket:return++Te.pos,void yt(ae.bracketL);case ce.rightSquareBracket:return++Te.pos,void yt(ae.bracketR);case ce.leftCurlyBrace:return void(_e&&be.charCodeAt(Te.pos+1)===ce.verticalBar?vt(ae.braceBarL,2):(++Te.pos,yt(ae.braceL)));case ce.rightCurlyBrace:return++Te.pos,void yt(ae.braceR);case ce.colon:return void(be.charCodeAt(Te.pos+1)===ce.colon?vt(ae.doubleColon,2):(++Te.pos,yt(ae.colon)));case ce.questionMark:return void function(){const e=be.charCodeAt(Te.pos+1),t=be.charCodeAt(Te.pos+2);e!==ce.questionMark||_e&&Te.isType?e!==ce.dot||t>=ce.digit0&&t<=ce.digit9?(++Te.pos,yt(ae.question)):(Te.pos+=2,yt(ae.questionDot)):t===ce.equalsTo?vt(ae.assign,3):vt(ae.nullishCoalescing,2)}();case ce.atSign:return++Te.pos,void yt(ae.at);case ce.graveAccent:return++Te.pos,void yt(ae.backQuote);case ce.digit0:{const e=be.charCodeAt(Te.pos+1);if(e===ce.lowercaseX||e===ce.uppercaseX||e===ce.lowercaseO||e===ce.uppercaseO||e===ce.lowercaseB||e===ce.uppercaseB)return void function(){Te.pos+=2;for(;;){const e=be.charCodeAt(Te.pos);if(!(e>=ce.digit0&&e<=ce.digit9||e>=ce.lowercaseA&&e<=ce.lowercaseF||e>=ce.uppercaseA&&e<=ce.uppercaseF||e===ce.underscore))break;Te.pos++}const e=be.charCodeAt(Te.pos);e===ce.lowercaseN?(++Te.pos,yt(ae.bigint)):yt(ae.num)}()}case ce.digit1:case ce.digit2:case ce.digit3:case ce.digit4:case ce.digit5:case ce.digit6:case ce.digit7:case ce.digit8:case ce.digit9:return void wt(!1);case ce.quotationMark:case ce.apostrophe:return void function(e){for(Te.pos++;;){if(Te.pos>=be.length)return void Me("Unterminated string constant");const t=be.charCodeAt(Te.pos);if(t===ce.backslash)Te.pos++;else if(t===e)break;Te.pos++}Te.pos++,yt(ae.string)}(e);case ce.slash:return void(be.charCodeAt(Te.pos+1)===ce.equalsTo?vt(ae.assign,2):vt(ae.slash,1));case ce.percentSign:case ce.asterisk:return void function(e){let t=e===ce.asterisk?ae.star:ae.modulo,n=1,s=be.charCodeAt(Te.pos+1);e===ce.asterisk&&s===ce.asterisk&&(n++,s=be.charCodeAt(Te.pos+2),t=ae.exponent),s===ce.equalsTo&&be.charCodeAt(Te.pos+2)!==ce.greaterThan&&(n++,t=ae.assign),vt(t,n)}(e);case ce.verticalBar:case ce.ampersand:return void function(e){const t=be.charCodeAt(Te.pos+1);if(t!==e){if(e===ce.verticalBar){if(t===ce.greaterThan)return void vt(ae.pipeline,2);if(t===ce.rightCurlyBrace&&_e)return void vt(ae.braceBarR,2)}t!==ce.equalsTo?vt(e===ce.verticalBar?ae.bitwiseOR:ae.bitwiseAND,1):vt(ae.assign,2)}else be.charCodeAt(Te.pos+2)===ce.equalsTo?vt(ae.assign,3):vt(e===ce.verticalBar?ae.logicalOR:ae.logicalAND,2)}(e);case ce.caret:return void(be.charCodeAt(Te.pos+1)===ce.equalsTo?vt(ae.assign,2):vt(ae.bitwiseXOR,1));case ce.plusSign:case ce.dash:return void function(e){const t=be.charCodeAt(Te.pos+1);t!==e?t===ce.equalsTo?vt(ae.assign,2):e===ce.plusSign?vt(ae.plus,1):vt(ae.minus,1):vt(ae.preIncDec,2)}(e);case ce.lessThan:return void function(){const e=be.charCodeAt(Te.pos+1);if(e===ce.lessThan)return be.charCodeAt(Te.pos+2)===ce.equalsTo?void vt(ae.assign,3):void(Te.isType?vt(ae.lessThan,1):vt(ae.bitShiftL,2));e===ce.equalsTo?vt(ae.relationalOrEqual,2):vt(ae.lessThan,1)}();case ce.greaterThan:return void _t();case ce.equalsTo:case ce.exclamationMark:return void function(e){const t=be.charCodeAt(Te.pos+1);if(t!==ce.equalsTo)return e===ce.equalsTo&&t===ce.greaterThan?(Te.pos+=2,void yt(ae.arrow)):void vt(e===ce.equalsTo?ae.eq:ae.bang,1);vt(ae.equality,be.charCodeAt(Te.pos+2)===ce.equalsTo?3:2)}(e);case ce.tilde:return void vt(ae.tilde,1)}Me(`Unexpected character '${String.fromCharCode(e)}'`,Te.pos)}function vt(e,t){Te.pos+=t,yt(e)}function It(){for(;;){const e=be.charCodeAt(Te.pos);if(!(e>=ce.digit0&&e<=ce.digit9||e===ce.underscore))break;Te.pos++}}function wt(e){let t=!1,n=!1;e||It();let s=be.charCodeAt(Te.pos);s===ce.dot&&(++Te.pos,It(),s=be.charCodeAt(Te.pos)),s!==ce.uppercaseE&&s!==ce.lowercaseE||(s=be.charCodeAt(++Te.pos),s!==ce.plusSign&&s!==ce.dash||++Te.pos,It(),s=be.charCodeAt(Te.pos)),s===ce.lowercaseN?(++Te.pos,t=!0):s===ce.lowercaseM&&(++Te.pos,n=!0),yt(t?ae.bigint:n?ae.decimal:ae.num)}function Ct(e,t=e.currentIndex()){let n=t+1;if(At(e,n)){const s=e.identifierNameAtIndex(t);return{isType:!1,leftName:s,rightName:s,endIndex:n}}if(n++,At(e,n))return{isType:!0,leftName:null,rightName:null,endIndex:n};if(n++,At(e,n))return{isType:!1,leftName:e.identifierNameAtIndex(t),rightName:e.identifierNameAtIndex(t+2),endIndex:n};if(n++,At(e,n))return{isType:!0,leftName:null,rightName:null,endIndex:n};throw new Error(`Unexpected import/export specifier at ${t}`)}function At(e,t){const n=e.tokens[t];return n.type===ae.braceR||n.type===ae.comma}const Et=new Map([["quot",'"'],["amp","&"],["apos","'"],["lt","<"],["gt",">"],["nbsp","\xa0"],["iexcl","\xa1"],["cent","\xa2"],["pound","\xa3"],["curren","\xa4"],["yen","\xa5"],["brvbar","\xa6"],["sect","\xa7"],["uml","\xa8"],["copy","\xa9"],["ordf","\xaa"],["laquo","\xab"],["not","\xac"],["shy","\xad"],["reg","\xae"],["macr","\xaf"],["deg","\xb0"],["plusmn","\xb1"],["sup2","\xb2"],["sup3","\xb3"],["acute","\xb4"],["micro","\xb5"],["para","\xb6"],["middot","\xb7"],["cedil","\xb8"],["sup1","\xb9"],["ordm","\xba"],["raquo","\xbb"],["frac14","\xbc"],["frac12","\xbd"],["frac34","\xbe"],["iquest","\xbf"],["Agrave","\xc0"],["Aacute","\xc1"],["Acirc","\xc2"],["Atilde","\xc3"],["Auml","\xc4"],["Aring","\xc5"],["AElig","\xc6"],["Ccedil","\xc7"],["Egrave","\xc8"],["Eacute","\xc9"],["Ecirc","\xca"],["Euml","\xcb"],["Igrave","\xcc"],["Iacute","\xcd"],["Icirc","\xce"],["Iuml","\xcf"],["ETH","\xd0"],["Ntilde","\xd1"],["Ograve","\xd2"],["Oacute","\xd3"],["Ocirc","\xd4"],["Otilde","\xd5"],["Ouml","\xd6"],["times","\xd7"],["Oslash","\xd8"],["Ugrave","\xd9"],["Uacute","\xda"],["Ucirc","\xdb"],["Uuml","\xdc"],["Yacute","\xdd"],["THORN","\xde"],["szlig","\xdf"],["agrave","\xe0"],["aacute","\xe1"],["acirc","\xe2"],["atilde","\xe3"],["auml","\xe4"],["aring","\xe5"],["aelig","\xe6"],["ccedil","\xe7"],["egrave","\xe8"],["eacute","\xe9"],["ecirc","\xea"],["euml","\xeb"],["igrave","\xec"],["iacute","\xed"],["icirc","\xee"],["iuml","\xef"],["eth","\xf0"],["ntilde","\xf1"],["ograve","\xf2"],["oacute","\xf3"],["ocirc","\xf4"],["otilde","\xf5"],["ouml","\xf6"],["divide","\xf7"],["oslash","\xf8"],["ugrave","\xf9"],["uacute","\xfa"],["ucirc","\xfb"],["uuml","\xfc"],["yacute","\xfd"],["thorn","\xfe"],["yuml","\xff"],["OElig","\u0152"],["oelig","\u0153"],["Scaron","\u0160"],["scaron","\u0161"],["Yuml","\u0178"],["fnof","\u0192"],["circ","\u02c6"],["tilde","\u02dc"],["Alpha","\u0391"],["Beta","\u0392"],["Gamma","\u0393"],["Delta","\u0394"],["Epsilon","\u0395"],["Zeta","\u0396"],["Eta","\u0397"],["Theta","\u0398"],["Iota","\u0399"],["Kappa","\u039a"],["Lambda","\u039b"],["Mu","\u039c"],["Nu","\u039d"],["Xi","\u039e"],["Omicron","\u039f"],["Pi","\u03a0"],["Rho","\u03a1"],["Sigma","\u03a3"],["Tau","\u03a4"],["Upsilon","\u03a5"],["Phi","\u03a6"],["Chi","\u03a7"],["Psi","\u03a8"],["Omega","\u03a9"],["alpha","\u03b1"],["beta","\u03b2"],["gamma","\u03b3"],["delta","\u03b4"],["epsilon","\u03b5"],["zeta","\u03b6"],["eta","\u03b7"],["theta","\u03b8"],["iota","\u03b9"],["kappa","\u03ba"],["lambda","\u03bb"],["mu","\u03bc"],["nu","\u03bd"],["xi","\u03be"],["omicron","\u03bf"],["pi","\u03c0"],["rho","\u03c1"],["sigmaf","\u03c2"],["sigma","\u03c3"],["tau","\u03c4"],["upsilon","\u03c5"],["phi","\u03c6"],["chi","\u03c7"],["psi","\u03c8"],["omega","\u03c9"],["thetasym","\u03d1"],["upsih","\u03d2"],["piv","\u03d6"],["ensp","\u2002"],["emsp","\u2003"],["thinsp","\u2009"],["zwnj","\u200c"],["zwj","\u200d"],["lrm","\u200e"],["rlm","\u200f"],["ndash","\u2013"],["mdash","\u2014"],["lsquo","\u2018"],["rsquo","\u2019"],["sbquo","\u201a"],["ldquo","\u201c"],["rdquo","\u201d"],["bdquo","\u201e"],["dagger","\u2020"],["Dagger","\u2021"],["bull","\u2022"],["hellip","\u2026"],["permil","\u2030"],["prime","\u2032"],["Prime","\u2033"],["lsaquo","\u2039"],["rsaquo","\u203a"],["oline","\u203e"],["frasl","\u2044"],["euro","\u20ac"],["image","\u2111"],["weierp","\u2118"],["real","\u211c"],["trade","\u2122"],["alefsym","\u2135"],["larr","\u2190"],["uarr","\u2191"],["rarr","\u2192"],["darr","\u2193"],["harr","\u2194"],["crarr","\u21b5"],["lArr","\u21d0"],["uArr","\u21d1"],["rArr","\u21d2"],["dArr","\u21d3"],["hArr","\u21d4"],["forall","\u2200"],["part","\u2202"],["exist","\u2203"],["empty","\u2205"],["nabla","\u2207"],["isin","\u2208"],["notin","\u2209"],["ni","\u220b"],["prod","\u220f"],["sum","\u2211"],["minus","\u2212"],["lowast","\u2217"],["radic","\u221a"],["prop","\u221d"],["infin","\u221e"],["ang","\u2220"],["and","\u2227"],["or","\u2228"],["cap","\u2229"],["cup","\u222a"],["int","\u222b"],["there4","\u2234"],["sim","\u223c"],["cong","\u2245"],["asymp","\u2248"],["ne","\u2260"],["equiv","\u2261"],["le","\u2264"],["ge","\u2265"],["sub","\u2282"],["sup","\u2283"],["nsub","\u2284"],["sube","\u2286"],["supe","\u2287"],["oplus","\u2295"],["otimes","\u2297"],["perp","\u22a5"],["sdot","\u22c5"],["lceil","\u2308"],["rceil","\u2309"],["lfloor","\u230a"],["rfloor","\u230b"],["lang","\u2329"],["rang","\u232a"],["loz","\u25ca"],["spades","\u2660"],["clubs","\u2663"],["hearts","\u2665"],["diams","\u2666"]]);function Nt(e){const[t,n]=St(e.jsxPragma||"React.createElement"),[s,o]=St(e.jsxFragmentPragma||"React.Fragment");return{base:t,suffix:n,fragmentBase:s,fragmentSuffix:o}}function St(e){let t=e.indexOf(".");return-1===t&&(t=e.length),[e.slice(0,t),e.slice(t)]}class jt{getPrefixCode(){return""}getHoistedCode(){return""}getSuffixCode(){return""}}class Rt extends jt{__init(){this.lastLineNumber=1}__init2(){this.lastIndex=0}__init3(){this.filenameVarName=null}__init4(){this.esmAutomaticImportNameResolutions={}}__init5(){this.cjsAutomaticModuleNameResolutions={}}constructor(e,t,n,s,o){super(),this.rootTransformer=e,this.tokens=t,this.importProcessor=n,this.nameManager=s,this.options=o,Rt.prototype.__init.call(this),Rt.prototype.__init2.call(this),Rt.prototype.__init3.call(this),Rt.prototype.__init4.call(this),Rt.prototype.__init5.call(this),this.jsxPragmaInfo=Nt(o),this.isAutomaticRuntime="automatic"===o.jsxRuntime,this.jsxImportSource=o.jsxImportSource||"react"}process(){return!!this.tokens.matches1(ae.jsxTagStart)&&(this.processJSXTag(),!0)}getPrefixCode(){let e="";if(this.filenameVarName&&(e+=`const ${this.filenameVarName} = ${JSON.stringify(this.options.filePath||"")};`),this.isAutomaticRuntime)if(this.importProcessor)for(const[t,n]of Object.entries(this.cjsAutomaticModuleNameResolutions))e+=`var ${n} = require("${t}");`;else{const{createElement:t,...n}=this.esmAutomaticImportNameResolutions;t&&(e+=`import {createElement as ${t}} from "${this.jsxImportSource}";`);const s=Object.entries(n).map((([e,t])=>`${e} as ${t}`)).join(", ");if(s){e+=`import {${s}} from "${this.jsxImportSource+(this.options.production?"/jsx-runtime":"/jsx-dev-runtime")}";`}}return e}processJSXTag(){const{jsxRole:e,start:t}=this.tokens.currentToken(),n=this.options.production?null:this.getElementLocationCode(t);this.isAutomaticRuntime&&e!==ze.KeyAfterPropSpread?this.transformTagToJSXFunc(n,e):this.transformTagToCreateElement(n)}getElementLocationCode(e){return`lineNumber: ${this.getLineNumberForIndex(e)}`}getLineNumberForIndex(e){const t=this.tokens.code;for(;this.lastIndex<e&&this.lastIndex<t.length;)"\n"===t[this.lastIndex]&&this.lastLineNumber++,this.lastIndex++;return this.lastLineNumber}transformTagToJSXFunc(e,t){const n=t===ze.StaticChildren;this.tokens.replaceToken(this.getJSXFuncInvocationCode(n));let s=null;if(this.tokens.matches1(ae.jsxTagEnd))this.tokens.replaceToken(`${this.getFragmentCode()}, {`),this.processAutomaticChildrenAndEndProps(t);else{if(this.processTagIntro(),this.tokens.appendCode(", {"),s=this.processProps(!0),this.tokens.matches2(ae.slash,ae.jsxTagEnd))this.tokens.appendCode("}");else{if(!this.tokens.matches1(ae.jsxTagEnd))throw new Error("Expected either /> or > at the end of the tag.");this.tokens.removeToken(),this.processAutomaticChildrenAndEndProps(t)}s&&this.tokens.appendCode(`, ${s}`)}for(this.options.production||(null===s&&this.tokens.appendCode(", void 0"),this.tokens.appendCode(`, ${n}, ${this.getDevSource(e)}, this`)),this.tokens.removeInitialToken();!this.tokens.matches1(ae.jsxTagEnd);)this.tokens.removeToken();this.tokens.replaceToken(")")}transformTagToCreateElement(e){if(this.tokens.replaceToken(this.getCreateElementInvocationCode()),this.tokens.matches1(ae.jsxTagEnd))this.tokens.replaceToken(`${this.getFragmentCode()}, null`),this.processChildren(!0);else if(this.processTagIntro(),this.processPropsObjectWithDevInfo(e),this.tokens.matches2(ae.slash,ae.jsxTagEnd));else{if(!this.tokens.matches1(ae.jsxTagEnd))throw new Error("Expected either /> or > at the end of the tag.");this.tokens.removeToken(),this.processChildren(!0)}for(this.tokens.removeInitialToken();!this.tokens.matches1(ae.jsxTagEnd);)this.tokens.removeToken();this.tokens.replaceToken(")")}getJSXFuncInvocationCode(e){return this.options.production?e?this.claimAutoImportedFuncInvocation("jsxs","/jsx-runtime"):this.claimAutoImportedFuncInvocation("jsx","/jsx-runtime"):this.claimAutoImportedFuncInvocation("jsxDEV","/jsx-dev-runtime")}getCreateElementInvocationCode(){if(this.isAutomaticRuntime)return this.claimAutoImportedFuncInvocation("createElement","");{const{jsxPragmaInfo:e}=this;return`${this.importProcessor&&this.importProcessor.getIdentifierReplacement(e.base)||e.base}${e.suffix}(`}}getFragmentCode(){if(this.isAutomaticRuntime)return this.claimAutoImportedName("Fragment",this.options.production?"/jsx-runtime":"/jsx-dev-runtime");{const{jsxPragmaInfo:e}=this;return(this.importProcessor&&this.importProcessor.getIdentifierReplacement(e.fragmentBase)||e.fragmentBase)+e.fragmentSuffix}}claimAutoImportedFuncInvocation(e,t){const n=this.claimAutoImportedName(e,t);return this.importProcessor?`${n}.call(void 0, `:`${n}(`}claimAutoImportedName(e,t){if(this.importProcessor){const n=this.jsxImportSource+t;return this.cjsAutomaticModuleNameResolutions[n]||(this.cjsAutomaticModuleNameResolutions[n]=this.importProcessor.getFreeIdentifierForPath(n)),`${this.cjsAutomaticModuleNameResolutions[n]}.${e}`}return this.esmAutomaticImportNameResolutions[e]||(this.esmAutomaticImportNameResolutions[e]=this.nameManager.claimFreeName(`_${e}`)),this.esmAutomaticImportNameResolutions[e]}processTagIntro(){let e=this.tokens.currentIndex()+1;for(;this.tokens.tokens[e].isType||!this.tokens.matches2AtIndex(e-1,ae.jsxName,ae.jsxName)&&!this.tokens.matches2AtIndex(e-1,ae.greaterThan,ae.jsxName)&&!this.tokens.matches1AtIndex(e,ae.braceL)&&!this.tokens.matches1AtIndex(e,ae.jsxTagEnd)&&!this.tokens.matches2AtIndex(e,ae.slash,ae.jsxTagEnd);)e++;if(e===this.tokens.currentIndex()+1){const e=this.tokens.identifierName();Lt(e)&&this.tokens.replaceToken(`'${e}'`)}for(;this.tokens.currentIndex()<e;)this.rootTransformer.processToken()}processPropsObjectWithDevInfo(e){const t=this.options.production?"":`__self: this, __source: ${this.getDevSource(e)}`;this.tokens.matches1(ae.jsxName)||this.tokens.matches1(ae.braceL)?(this.tokens.appendCode(", {"),this.processProps(!1),t?this.tokens.appendCode(` ${t}}`):this.tokens.appendCode("}")):t?this.tokens.appendCode(`, {${t}}`):this.tokens.appendCode(", null")}processProps(e){let t=null;for(;;){if(this.tokens.matches2(ae.jsxName,ae.eq)){const n=this.tokens.identifierName();if(e&&"key"===n){null!==t&&this.tokens.appendCode(t.replace(/[^\n]/g,"")),this.tokens.removeToken(),this.tokens.removeToken();const e=this.tokens.snapshot();this.processPropValue(),t=this.tokens.dangerouslyGetAndRemoveCodeSinceSnapshot(e);continue}this.processPropName(n),this.tokens.replaceToken(": "),this.processPropValue()}else if(this.tokens.matches1(ae.jsxName)){const e=this.tokens.identifierName();this.processPropName(e),this.tokens.appendCode(": true")}else{if(!this.tokens.matches1(ae.braceL))break;this.tokens.replaceToken(""),this.rootTransformer.processBalancedCode(),this.tokens.replaceToken("")}this.tokens.appendCode(",")}return t}processPropName(e){e.includes("-")?this.tokens.replaceToken(`'${e}'`):this.tokens.copyToken()}processPropValue(){this.tokens.matches1(ae.braceL)?(this.tokens.replaceToken(""),this.rootTransformer.processBalancedCode(),this.tokens.replaceToken("")):this.tokens.matches1(ae.jsxTagStart)?this.processJSXTag():this.processStringPropValue()}processStringPropValue(){const e=this.tokens.currentToken(),t=this.tokens.code.slice(e.start+1,e.end-1),n=Ot(t),s=function(e){let t="";for(let n=0;n<e.length;n++){const s=e[n];if("\n"===s)if(/\s/.test(e[n+1]))for(t+=" ";n<e.length&&/\s/.test(e[n+1]);)n++;else t+="\n";else if("&"===s){const{entity:s,newI:o}=Dt(e,n+1);t+=s,n=o-1}else t+=s}return JSON.stringify(t)}(t);this.tokens.replaceToken(s+n)}processAutomaticChildrenAndEndProps(e){e===ze.StaticChildren?(this.tokens.appendCode(" children: ["),this.processChildren(!1),this.tokens.appendCode("]}")):(e===ze.OneChild&&this.tokens.appendCode(" children: "),this.processChildren(!1),this.tokens.appendCode("}"))}processChildren(e){let t=e;for(;;){if(this.tokens.matches2(ae.jsxTagStart,ae.slash))return;let e=!1;if(this.tokens.matches1(ae.braceL))this.tokens.matches2(ae.braceL,ae.braceR)?(this.tokens.replaceToken(""),this.tokens.replaceToken("")):(this.tokens.replaceToken(t?", ":""),this.rootTransformer.processBalancedCode(),this.tokens.replaceToken(""),e=!0);else if(this.tokens.matches1(ae.jsxTagStart))this.tokens.appendCode(t?", ":""),this.processJSXTag(),e=!0;else{if(!this.tokens.matches1(ae.jsxText)&&!this.tokens.matches1(ae.jsxEmptyText))throw new Error("Unexpected token when processing JSX children.");e=this.processChildTextElement(t)}e&&(t=!0)}}processChildTextElement(e){const t=this.tokens.currentToken(),n=this.tokens.code.slice(t.start,t.end),s=Ot(n),o=function(e){let t="",n="",s=!1,o=!1;for(let r=0;r<e.length;r++){const i=e[r];if(" "===i||"\t"===i||"\r"===i)s||(n+=i);else if("\n"===i)n="",s=!0;else{if(o&&s&&(t+=" "),t+=n,n="","&"===i){const{entity:n,newI:s}=Dt(e,r+1);r=s-1,t+=n}else t+=i;o=!0,s=!1}}s||(t+=n);return JSON.stringify(t)}(n);return'""'===o?(this.tokens.replaceToken(s),!1):(this.tokens.replaceToken(`${e?", ":""}${o}${s}`),!0)}getDevSource(e){return`{fileName: ${this.getFilenameVarName()}, ${e}}`}getFilenameVarName(){return this.filenameVarName||(this.filenameVarName=this.nameManager.claimFreeName("_jsxFileName")),this.filenameVarName}}function Lt(e){const t=e.charCodeAt(0);return t>=ce.lowercaseA&&t<=ce.lowercaseZ}function Ot(e){let t=0,n=0;for(const s of e)"\n"===s?(t++,n=0):" "===s&&n++;return"\n".repeat(t)+" ".repeat(n)}function Dt(e,t){let n,s="",o=0,r=t;if("#"===e[r]){let t,s=10;if(r++,"x"===e[r])for(s=16,r++,t=r;r<e.length&&((i=e.charCodeAt(r))>=ce.digit0&&i<=ce.digit9||i>=ce.lowercaseA&&i<=ce.lowercaseF||i>=ce.uppercaseA&&i<=ce.uppercaseF);)r++;else for(t=r;r<e.length&&Pt(e.charCodeAt(r));)r++;if(";"===e[r]){const o=e.slice(t,r);o&&(r++,n=String.fromCodePoint(parseInt(o,s)))}}else for(;r<e.length&&o++<10;){const t=e[r];if(r++,";"===t){n=Et.get(s);break}s+=t}var i;return n?{entity:n,newI:r}:{entity:"&",newI:t}}function Pt(e){return e>=ce.digit0&&e<=ce.digit9}function Bt(e,t){const n=Nt(t),s=new Set;for(let o=0;o<e.tokens.length;o++){const t=e.tokens[o];if(t.type!==ae.name||t.isType||t.identifierRole!==We.Access&&t.identifierRole!==We.ObjectShorthand&&t.identifierRole!==We.ExportAccess||t.shadowsGlobal||s.add(e.identifierNameForToken(t)),t.type===ae.jsxTagStart&&s.add(n.base),t.type===ae.jsxTagStart&&o+1<e.tokens.length&&e.tokens[o+1].type===ae.jsxTagEnd&&(s.add(n.base),s.add(n.fragmentBase)),t.type===ae.jsxName&&t.identifierRole===We.Access){Lt(e.identifierNameForToken(t))&&e.tokens[o+1].type!==ae.dot||s.add(e.identifierNameForToken(t))}}return s}class Mt{__init(){this.nonTypeIdentifiers=new Set}__init2(){this.importInfoByPath=new Map}__init3(){this.importsToReplace=new Map}__init4(){this.identifierReplacements=new Map}__init5(){this.exportBindingsByLocalName=new Map}constructor(e,t,n,s,o,r,i){this.nameManager=e,this.tokens=t,this.enableLegacyTypeScriptModuleInterop=n,this.options=s,this.isTypeScriptTransformEnabled=o,this.keepUnusedImports=r,this.helperManager=i,Mt.prototype.__init.call(this),Mt.prototype.__init2.call(this),Mt.prototype.__init3.call(this),Mt.prototype.__init4.call(this),Mt.prototype.__init5.call(this)}preprocessTokens(){for(let e=0;e<this.tokens.tokens.length;e++)this.tokens.matches1AtIndex(e,ae._import)&&!this.tokens.matches3AtIndex(e,ae._import,ae.name,ae.eq)&&this.preprocessImportAtIndex(e),this.tokens.matches1AtIndex(e,ae._export)&&!this.tokens.matches2AtIndex(e,ae._export,ae.eq)&&this.preprocessExportAtIndex(e);this.generateImportReplacements()}pruneTypeOnlyImports(){this.nonTypeIdentifiers=Bt(this.tokens,this.options);for(const[e,t]of this.importInfoByPath.entries()){if(t.hasBareImport||t.hasStarExport||t.exportStarNames.length>0||t.namedExports.length>0)continue;[...t.defaultNames,...t.wildcardNames,...t.namedImports.map((({localName:e})=>e))].every((e=>this.shouldAutomaticallyElideImportedName(e)))&&this.importsToReplace.set(e,"")}}shouldAutomaticallyElideImportedName(e){return this.isTypeScriptTransformEnabled&&!this.keepUnusedImports&&!this.nonTypeIdentifiers.has(e)}generateImportReplacements(){for(const[e,t]of this.importInfoByPath.entries()){const{defaultNames:n,wildcardNames:s,namedImports:o,namedExports:r,exportStarNames:i,hasStarExport:a}=t;if(0===n.length&&0===s.length&&0===o.length&&0===r.length&&0===i.length&&!a){this.importsToReplace.set(e,`require('${e}');`);continue}const c=this.getFreeIdentifierForPath(e);let l;l=this.enableLegacyTypeScriptModuleInterop?c:s.length>0?s[0]:this.getFreeIdentifierForPath(e);let u=`var ${c} = require('${e}');`;if(s.length>0)for(const e of s){u+=` var ${e} = ${this.enableLegacyTypeScriptModuleInterop?c:`${this.helperManager.getHelperName("interopRequireWildcard")}(${c})`};`}else i.length>0&&l!==c?u+=` var ${l} = ${this.helperManager.getHelperName("interopRequireWildcard")}(${c});`:n.length>0&&l!==c&&(u+=` var ${l} = ${this.helperManager.getHelperName("interopRequireDefault")}(${c});`);for(const{importedName:e,localName:t}of r)u+=` ${this.helperManager.getHelperName("createNamedExportFrom")}(${c}, '${t}', '${e}');`;for(const e of i)u+=` exports.${e} = ${l};`;a&&(u+=` ${this.helperManager.getHelperName("createStarExport")}(${c});`),this.importsToReplace.set(e,u);for(const e of n)this.identifierReplacements.set(e,`${l}.default`);for(const{importedName:e,localName:t}of o)this.identifierReplacements.set(t,`${c}.${e}`)}}getFreeIdentifierForPath(e){const t=e.split("/"),n=t[t.length-1].replace(/\W/g,"");return this.nameManager.claimFreeName(`_${n}`)}preprocessImportAtIndex(e){const t=[],n=[],s=[];if(e++,(this.tokens.matchesContextualAtIndex(e,ie._type)||this.tokens.matches1AtIndex(e,ae._typeof))&&!this.tokens.matches1AtIndex(e+1,ae.comma)&&!this.tokens.matchesContextualAtIndex(e+1,ie._from))return;if(this.tokens.matches1AtIndex(e,ae.parenL))return;if(this.tokens.matches1AtIndex(e,ae.name)&&(t.push(this.tokens.identifierNameAtIndex(e)),e++,this.tokens.matches1AtIndex(e,ae.comma)&&e++),this.tokens.matches1AtIndex(e,ae.star)&&(e+=2,n.push(this.tokens.identifierNameAtIndex(e)),e++),this.tokens.matches1AtIndex(e,ae.braceL)){const n=this.getNamedImports(e+1);e=n.newIndex;for(const e of n.namedImports)"default"===e.importedName?t.push(e.localName):s.push(e)}if(this.tokens.matchesContextualAtIndex(e,ie._from)&&e++,!this.tokens.matches1AtIndex(e,ae.string))throw new Error("Expected string token at the end of import statement.");const o=this.tokens.stringValueAtIndex(e),r=this.getImportInfo(o);r.defaultNames.push(...t),r.wildcardNames.push(...n),r.namedImports.push(...s),0===t.length&&0===n.length&&0===s.length&&(r.hasBareImport=!0)}preprocessExportAtIndex(e){if(this.tokens.matches2AtIndex(e,ae._export,ae._var)||this.tokens.matches2AtIndex(e,ae._export,ae._let)||this.tokens.matches2AtIndex(e,ae._export,ae._const))this.preprocessVarExportAtIndex(e);else if(this.tokens.matches2AtIndex(e,ae._export,ae._function)||this.tokens.matches2AtIndex(e,ae._export,ae._class)){const t=this.tokens.identifierNameAtIndex(e+2);this.addExportBinding(t,t)}else if(this.tokens.matches3AtIndex(e,ae._export,ae.name,ae._function)){const t=this.tokens.identifierNameAtIndex(e+3);this.addExportBinding(t,t)}else this.tokens.matches2AtIndex(e,ae._export,ae.braceL)?this.preprocessNamedExportAtIndex(e):this.tokens.matches2AtIndex(e,ae._export,ae.star)&&this.preprocessExportStarAtIndex(e)}preprocessVarExportAtIndex(e){let t=0;for(let n=e+2;;n++)if(this.tokens.matches1AtIndex(n,ae.braceL)||this.tokens.matches1AtIndex(n,ae.dollarBraceL)||this.tokens.matches1AtIndex(n,ae.bracketL))t++;else if(this.tokens.matches1AtIndex(n,ae.braceR)||this.tokens.matches1AtIndex(n,ae.bracketR))t--;else{if(0===t&&!this.tokens.matches1AtIndex(n,ae.name))break;if(this.tokens.matches1AtIndex(1,ae.eq)){const e=this.tokens.currentToken().rhsEndIndex;if(null==e)throw new Error("Expected = token with an end index.");n=e-1}else{if(Ge(this.tokens.tokens[n])){const e=this.tokens.identifierNameAtIndex(n);this.identifierReplacements.set(e,`exports.${e}`)}}}}preprocessNamedExportAtIndex(e){e+=2;const{newIndex:t,namedImports:n}=this.getNamedImports(e);if(e=t,!this.tokens.matchesContextualAtIndex(e,ie._from)){for(const{importedName:e,localName:t}of n)this.addExportBinding(e,t);return}if(e++,!this.tokens.matches1AtIndex(e,ae.string))throw new Error("Expected string token at the end of import statement.");const s=this.tokens.stringValueAtIndex(e);this.getImportInfo(s).namedExports.push(...n)}preprocessExportStarAtIndex(e){let t=null;if(this.tokens.matches3AtIndex(e,ae._export,ae.star,ae._as)?(e+=3,t=this.tokens.identifierNameAtIndex(e),e+=2):e+=3,!this.tokens.matches1AtIndex(e,ae.string))throw new Error("Expected string token at the end of star export statement.");const n=this.tokens.stringValueAtIndex(e),s=this.getImportInfo(n);null!==t?s.exportStarNames.push(t):s.hasStarExport=!0}getNamedImports(e){const t=[];for(;;){if(this.tokens.matches1AtIndex(e,ae.braceR)){e++;break}const n=Ct(this.tokens,e);if(e=n.endIndex,n.isType||t.push({importedName:n.leftName,localName:n.rightName}),this.tokens.matches2AtIndex(e,ae.comma,ae.braceR)){e+=2;break}if(this.tokens.matches1AtIndex(e,ae.braceR)){e++;break}if(!this.tokens.matches1AtIndex(e,ae.comma))throw new Error(`Unexpected token: ${JSON.stringify(this.tokens.tokens[e])}`);e++}return{newIndex:e,namedImports:t}}getImportInfo(e){const t=this.importInfoByPath.get(e);if(t)return t;const n={defaultNames:[],wildcardNames:[],namedImports:[],namedExports:[],hasBareImport:!1,exportStarNames:[],hasStarExport:!1};return this.importInfoByPath.set(e,n),n}addExportBinding(e,t){this.exportBindingsByLocalName.has(e)||this.exportBindingsByLocalName.set(e,[]),this.exportBindingsByLocalName.get(e).push(t)}claimImportCode(e){const t=this.importsToReplace.get(e);return this.importsToReplace.set(e,""),t||""}getIdentifierReplacement(e){return this.identifierReplacements.get(e)||null}resolveExportBinding(e){const t=this.exportBindingsByLocalName.get(e);return t&&0!==t.length?t.map((e=>`exports.${e}`)).join(" = "):null}getGlobalNames(){return new Set([...this.identifierReplacements.keys(),...this.exportBindingsByLocalName.keys()])}}var qt=n(99320);function Ft({code:e,mappings:t},n,s,o,r){const i=function(e,t){const n=new Array(t.length);let s=0,o=t[s].start,r=0;for(let i=0;i<e.length;i++)i===o&&(n[s]=o-r,s++,o=t[s].start),e.charCodeAt(i)===ce.lineFeed&&(r=i+1);return n}(o,r),a=new qt.GenMapping({file:s.compiledFilename});let c=0,l=t[0];for(;void 0===l&&c<t.length-1;)c++,l=t[c];let u=0,h=0;l!==h&&(0,qt.maybeAddSegment)(a,u,0,n,u,0);for(let m=0;m<e.length;m++){if(m===l){const e=l-h,s=i[c];for((0,qt.maybeAddSegment)(a,u,e,n,u,s);(l===m||void 0===l)&&c<t.length-1;)c++,l=t[c]}e.charCodeAt(m)===ce.lineFeed&&(u++,h=m+1,l!==h&&(0,qt.maybeAddSegment)(a,u,0,n,u,0))}const{sourceRoot:p,sourcesContent:d,...f}=(0,qt.toEncodedMap)(a);return f}const $t={require:'\n import {createRequire as CREATE_REQUIRE_NAME} from "module";\n const require = CREATE_REQUIRE_NAME(import.meta.url);\n ',interopRequireWildcard:"\n function interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n } else {\n var newObj = {};\n if (obj != null) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n newObj[key] = obj[key];\n }\n }\n }\n newObj.default = obj;\n return newObj;\n }\n }\n ",interopRequireDefault:"\n function interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n }\n ",createNamedExportFrom:"\n function createNamedExportFrom(obj, localName, importedName) {\n Object.defineProperty(exports, localName, {enumerable: true, configurable: true, get: () => obj[importedName]});\n }\n ",createStarExport:'\n function createStarExport(obj) {\n Object.keys(obj)\n .filter((key) => key !== "default" && key !== "__esModule")\n .forEach((key) => {\n if (exports.hasOwnProperty(key)) {\n return;\n }\n Object.defineProperty(exports, key, {enumerable: true, configurable: true, get: () => obj[key]});\n });\n }\n ',nullishCoalesce:"\n function nullishCoalesce(lhs, rhsFn) {\n if (lhs != null) {\n return lhs;\n } else {\n return rhsFn();\n }\n }\n ",asyncNullishCoalesce:"\n async function asyncNullishCoalesce(lhs, rhsFn) {\n if (lhs != null) {\n return lhs;\n } else {\n return await rhsFn();\n }\n }\n ",optionalChain:"\n function optionalChain(ops) {\n let lastAccessLHS = undefined;\n let value = ops[0];\n let i = 1;\n while (i < ops.length) {\n const op = ops[i];\n const fn = ops[i + 1];\n i += 2;\n if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) {\n return undefined;\n }\n if (op === 'access' || op === 'optionalAccess') {\n lastAccessLHS = value;\n value = fn(value);\n } else if (op === 'call' || op === 'optionalCall') {\n value = fn((...args) => value.call(lastAccessLHS, ...args));\n lastAccessLHS = undefined;\n }\n }\n return value;\n }\n ",asyncOptionalChain:"\n async function asyncOptionalChain(ops) {\n let lastAccessLHS = undefined;\n let value = ops[0];\n let i = 1;\n while (i < ops.length) {\n const op = ops[i];\n const fn = ops[i + 1];\n i += 2;\n if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) {\n return undefined;\n }\n if (op === 'access' || op === 'optionalAccess') {\n lastAccessLHS = value;\n value = await fn(value);\n } else if (op === 'call' || op === 'optionalCall') {\n value = await fn((...args) => value.call(lastAccessLHS, ...args));\n lastAccessLHS = undefined;\n }\n }\n return value;\n }\n ",optionalChainDelete:"\n function optionalChainDelete(ops) {\n const result = OPTIONAL_CHAIN_NAME(ops);\n return result == null ? true : result;\n }\n ",asyncOptionalChainDelete:"\n async function asyncOptionalChainDelete(ops) {\n const result = await ASYNC_OPTIONAL_CHAIN_NAME(ops);\n return result == null ? true : result;\n }\n "};class Ut{__init(){this.helperNames={}}__init2(){this.createRequireName=null}constructor(e){this.nameManager=e,Ut.prototype.__init.call(this),Ut.prototype.__init2.call(this)}getHelperName(e){let t=this.helperNames[e];return t||(t=this.nameManager.claimFreeName(`_${e}`),this.helperNames[e]=t,t)}emitHelpers(){let e="";this.helperNames.optionalChainDelete&&this.getHelperName("optionalChain"),this.helperNames.asyncOptionalChainDelete&&this.getHelperName("asyncOptionalChain");for(const[t,n]of Object.entries($t)){const s=this.helperNames[t];let o=n;"optionalChainDelete"===t?o=o.replace("OPTIONAL_CHAIN_NAME",this.helperNames.optionalChain):"asyncOptionalChainDelete"===t?o=o.replace("ASYNC_OPTIONAL_CHAIN_NAME",this.helperNames.asyncOptionalChain):"require"===t&&(null===this.createRequireName&&(this.createRequireName=this.nameManager.claimFreeName("_createRequire")),o=o.replace(/CREATE_REQUIRE_NAME/g,this.createRequireName)),s&&(e+=" ",e+=o.replace(t,s).replace(/\s+/g," ").trim())}return e}}function Ht(e,t,n){(function(e,t){for(const n of e.tokens)if(n.type===ae.name&&!n.isType&&Xe(n)&&t.has(e.identifierNameForToken(n)))return!0;return!1})(e,n)&&function(e,t,n){const s=[];let o=t.length-1;for(let r=e.tokens.length-1;;r--){for(;s.length>0&&s[s.length-1].startTokenIndex===r+1;)s.pop();for(;o>=0&&t[o].endTokenIndex===r+1;)s.push(t[o]),o--;if(r<0)break;const i=e.tokens[r],a=e.identifierNameForToken(i);if(s.length>1&&!i.isType&&i.type===ae.name&&n.has(a))if(Ye(i))Vt(s[s.length-1],e,a);else if(Qe(i)){let t=s.length-1;for(;t>0&&!s[t].isFunctionScope;)t--;if(t<0)throw new Error("Did not find parent function scope.");Vt(s[t],e,a)}}if(s.length>0)throw new Error("Expected empty scope stack after processing file.")}(e,t,n)}function Vt(e,t,n){for(let s=e.startTokenIndex;s<e.endTokenIndex;s++){const e=t.tokens[s];e.type!==ae.name&&e.type!==ae.jsxName||t.identifierNameForToken(e)!==n||(e.shadowsGlobal=!0)}}class Kt{__init(){this.usedNames=new Set}constructor(e,t){Kt.prototype.__init.call(this),this.usedNames=new Set(function(e,t){const n=[];for(const s of t)s.type===ae.name&&n.push(e.slice(s.start,s.end));return n}(e,t))}claimFreeName(e){const t=this.findFreeName(e);return this.usedNames.add(t),t}findFreeName(e){if(!this.usedNames.has(e))return e;let t=2;for(;this.usedNames.has(e+String(t));)t++;return e+String(t)}}var Wt=n(99361);const zt={Transform:Wt.union(Wt.lit("jsx"),Wt.lit("typescript"),Wt.lit("flow"),Wt.lit("imports"),Wt.lit("react-hot-loader"),Wt.lit("jest")),SourceMapOptions:Wt.iface([],{compiledFilename:"string"}),Options:Wt.iface([],{transforms:Wt.array("Transform"),disableESTransforms:Wt.opt("boolean"),jsxRuntime:Wt.opt(Wt.union(Wt.lit("classic"),Wt.lit("automatic"),Wt.lit("preserve"))),production:Wt.opt("boolean"),jsxImportSource:Wt.opt("string"),jsxPragma:Wt.opt("string"),jsxFragmentPragma:Wt.opt("string"),keepUnusedImports:Wt.opt("boolean"),preserveDynamicImport:Wt.opt("boolean"),injectCreateRequireForImportRequire:Wt.opt("boolean"),enableLegacyTypeScriptModuleInterop:Wt.opt("boolean"),enableLegacyBabel5ModuleInterop:Wt.opt("boolean"),sourceMapOptions:Wt.opt("SourceMapOptions"),filePath:Wt.opt("string")})},{Options:Gt}=(0,Wt.createCheckers)(zt);function Xt(){tt(),us(!1)}function Jt(e){tt(),en(e)}function Yt(e){$s(),Zt(e)}function Qt(){$s(),Te.tokens[Te.tokens.length-1].identifierRole=We.ImportDeclaration}function Zt(e){let t;t=0===Te.scopeDepth?We.TopLevelDeclaration:e?We.BlockScopedDeclaration:We.FunctionScopedDeclaration,Te.tokens[Te.tokens.length-1].identifierRole=t}function en(e){switch(Te.type){case ae._this:{const e=ot(0);return tt(),void rt(e)}case ae._yield:case ae.name:return Te.type=ae.name,void Yt(e);case ae.bracketL:return tt(),void tn(ae.bracketR,e,!0);case ae.braceL:return void js(!0,e);default:Me()}}function tn(e,t,n=!1,s=!1,o=0){let r=!0,i=!1;const a=Te.tokens.length;for(;!it(e)&&!Te.error;)if(r?r=!1:(Be(ae.comma),Te.tokens[Te.tokens.length-1].contextId=o,!i&&Te.tokens[a].isType&&(Te.tokens[Te.tokens.length-1].isType=!0,i=!0)),n&&ct(ae.comma));else{if(it(e))break;if(ct(ae.ellipsis)){Jt(t),sn(),it(ae.comma),Be(e);break}nn(s,t)}}function nn(e,t){e&&cn([ie._public,ie._protected,ie._private,ie._readonly,ie._override]),on(t),sn(),on(t,!0)}function sn(){_e?function(){const e=ot(0);it(ae.question),ct(ae.colon)&&fo();rt(e)}():ye&&function(){const e=ot(0);it(ae.question),Rn(),rt(e)}()}function on(e,t=!1){if(t||en(e),!it(ae.eq))return;const n=Te.tokens.length-1;us(),Te.tokens[n].rhsEndIndex=Te.tokens.length}function rn(){return ct(ae.name)}function an(){const e=Te.snapshot();tt();return!!((ct(ae.bracketL)||ct(ae.braceL)||ct(ae.star)||ct(ae.ellipsis)||ct(ae.hash)||ct(ae.name)||Boolean(Te.type&ae.IS_KEYWORD)||ct(ae.string)||ct(ae.num)||ct(ae.bigint)||ct(ae.decimal))&&!Le())||(Te.restoreFromSnapshot(e),!1)}function cn(e){for(;;){if(null===ln(e))break}}function ln(e){if(!ct(ae.name))return null;const t=Te.contextualKeyword;if(-1!==e.indexOf(t)&&an()){switch(t){case ie._readonly:Te.tokens[Te.tokens.length-1].type=ae._readonly;break;case ie._abstract:Te.tokens[Te.tokens.length-1].type=ae._abstract;break;case ie._static:Te.tokens[Te.tokens.length-1].type=ae._static;break;case ie._public:Te.tokens[Te.tokens.length-1].type=ae._public;break;case ie._private:Te.tokens[Te.tokens.length-1].type=ae._private;break;case ie._protected:Te.tokens[Te.tokens.length-1].type=ae._protected;break;case ie._override:Te.tokens[Te.tokens.length-1].type=ae._override;break;case ie._declare:Te.tokens[Te.tokens.length-1].type=ae._declare}return t}return null}function un(){for($s();it(ae.dot);)$s()}function hn(){Be(ae._import),Be(ae.parenL),Be(ae.string),Be(ae.parenR),it(ae.dot)&&un(),ct(ae.lessThan)&&Jn()}function pn(){it(ae._const);const e=it(ae._in),t=Se(ie._out);it(ae._const),!e&&!t||ct(ae.name)?$s():Te.tokens[Te.tokens.length-1].type=ae.name,it(ae._extends)&&On(),it(ae.eq)&&On()}function dn(){ct(ae.lessThan)&&fn()}function fn(){const e=ot(0);for(ct(ae.lessThan)||ct(ae.typeParameterStart)?tt():Me();!it(ae.greaterThan)&&!Te.error;)pn(),it(ae.comma);rt(e)}function mn(e){const t=e===ae.arrow;var n;dn(),Be(ae.parenL),Te.scopeDepth++,n=!1,tn(ae.parenR,n),Te.scopeDepth--,(t||ct(e))&&jn(e)}function kn(){it(ae.comma)||Pe()}function gn(){mn(ae.colon),kn()}function xn(){if(!ct(ae.bracketL)||!function(){const e=Te.snapshot();tt();const t=it(ae.name)&&ct(ae.colon);return Te.restoreFromSnapshot(e),t}())return!1;const e=ot(0);return Be(ae.bracketL),$s(),Ln(),Be(ae.bracketR),Rn(),kn(),rt(e),!0}function yn(e){it(ae.question),e||!ct(ae.parenL)&&!ct(ae.lessThan)?(Rn(),kn()):(mn(ae.colon),kn())}function _n(){if(ct(ae.parenL)||ct(ae.lessThan))return void gn();if(ct(ae._new))return tt(),void(ct(ae.parenL)||ct(ae.lessThan)?gn():yn(!1));const e=!!ln([ie._readonly]);xn()||((Ee(ie._get)||Ee(ie._set))&&an(),Os(-1),yn(e))}function Tn(){for(Be(ae.braceL);!it(ae.braceR)&&!Te.error;)_n()}function bn(){const e=Te.snapshot(),t=function(){if(tt(),it(ae.plus)||it(ae.minus))return Ee(ie._readonly);Ee(ie._readonly)&&tt();if(!ct(ae.bracketL))return!1;if(tt(),!rn())return!1;return tt(),ct(ae._in)}();return Te.restoreFromSnapshot(e),t}function vn(){Be(ae.braceL),ct(ae.plus)||ct(ae.minus)?(tt(),je(ie._readonly)):Se(ie._readonly),Be(ae.bracketL),$s(),Be(ae._in),On(),Se(ie._as)&&On(),Be(ae.bracketR),ct(ae.plus)||ct(ae.minus)?(tt(),Be(ae.question)):it(ae.question),it(ae.colon)&&On(),Pe(),Be(ae.braceR)}function In(){it(ae.ellipsis)?On():(On(),it(ae.question)),it(ae.colon)&&On()}var wn;function Cn(e){e===wn.TSAbstractConstructorType&&je(ie._abstract),e!==wn.TSConstructorType&&e!==wn.TSAbstractConstructorType||Be(ae._new);const t=Te.inDisallowConditionalTypesContext;Te.inDisallowConditionalTypesContext=!1,mn(ae.arrow),Te.inDisallowConditionalTypesContext=t}function An(){switch(Te.type){case ae.name:return un(),void(!Le()&&ct(ae.lessThan)&&Jn());case ae._void:case ae._null:return void tt();case ae.string:case ae.num:case ae.bigint:case ae.decimal:case ae._true:case ae._false:return void ws();case ae.minus:return tt(),void ws();case ae._this:return tt(),void(Ee(ie._is)&&!Le()&&(tt(),Ln()));case ae._typeof:return Be(ae._typeof),ct(ae._import)?hn():un(),void(!Le()&&ct(ae.lessThan)&&Jn());case ae._import:return void hn();case ae.braceL:return void(bn()?vn():Tn());case ae.bracketL:return void function(){for(Be(ae.bracketL);!it(ae.bracketR)&&!Te.error;)In(),it(ae.comma)}();case ae.parenL:return Be(ae.parenL),On(),void Be(ae.parenR);case ae.backQuote:return void function(){for(nt(),nt();!ct(ae.backQuote)&&!Te.error;)Be(ae.dollarBraceL),On(),nt(),nt();tt()}();default:if(Te.type&ae.IS_KEYWORD)return tt(),void(Te.tokens[Te.tokens.length-1].type=ae.name)}Me()}function En(){if(Ee(ie._keyof)||Ee(ie._unique)||Ee(ie._readonly))tt(),En();else if(Ee(ie._infer))!function(){if(je(ie._infer),$s(),ct(ae._extends)){const e=Te.snapshot();Be(ae._extends);const t=Te.inDisallowConditionalTypesContext;Te.inDisallowConditionalTypesContext=!0,On(),Te.inDisallowConditionalTypesContext=t,(Te.error||!Te.inDisallowConditionalTypesContext&&ct(ae.question))&&Te.restoreFromSnapshot(e)}}();else{const e=Te.inDisallowConditionalTypesContext;Te.inDisallowConditionalTypesContext=!1,function(){for(An();!Le()&&it(ae.bracketL);)it(ae.bracketR)||(On(),Be(ae.bracketR))}(),Te.inDisallowConditionalTypesContext=e}}function Nn(){if(it(ae.bitwiseAND),En(),ct(ae.bitwiseAND))for(;it(ae.bitwiseAND);)En()}function Sn(){return!!ct(ae.lessThan)||ct(ae.parenL)&&function(){const e=Te.snapshot(),t=function(){if(tt(),ct(ae.parenR)||ct(ae.ellipsis))return!0;if(function(){if(ct(ae.name)||ct(ae._this))return tt(),!0;if(ct(ae.braceL)||ct(ae.bracketL)){let e=1;for(tt();e>0&&!Te.error;)ct(ae.braceL)||ct(ae.bracketL)?e++:(ct(ae.braceR)||ct(ae.bracketR))&&e--,tt();return!0}return!1}()){if(ct(ae.colon)||ct(ae.comma)||ct(ae.question)||ct(ae.eq))return!0;if(ct(ae.parenR)&&(tt(),ct(ae.arrow)))return!0}return!1}();return Te.restoreFromSnapshot(e),t}()}function jn(e){const t=ot(0);Be(e);(function(){const e=Te.snapshot();if(Ee(ie._asserts))return tt(),Se(ie._is)?(On(),!0):rn()||ct(ae._this)?(tt(),Se(ie._is)&&On(),!0):(Te.restoreFromSnapshot(e),!1);if(rn()||ct(ae._this))return tt(),Ee(ie._is)&&!Le()?(tt(),On(),!0):(Te.restoreFromSnapshot(e),!1);return!1})()||On(),rt(t)}function Rn(){ct(ae.colon)&&Ln()}function Ln(){const e=ot(0);Be(ae.colon),On(),rt(e)}function On(){if(Dn(),Te.inDisallowConditionalTypesContext||Le()||!it(ae._extends))return;const e=Te.inDisallowConditionalTypesContext;Te.inDisallowConditionalTypesContext=!0,Dn(),Te.inDisallowConditionalTypesContext=e,Be(ae.question),On(),Be(ae.colon),On()}function Dn(){Sn()?Cn(wn.TSFunctionType):ct(ae._new)?Cn(wn.TSConstructorType):Ee(ie._abstract)&<()===ae._new?Cn(wn.TSAbstractConstructorType):function(){if(it(ae.bitwiseOR),Nn(),ct(ae.bitwiseOR))for(;it(ae.bitwiseOR);)Nn()}()}function Pn(){for(;!ct(ae.braceL)&&!Te.error;)Bn(),it(ae.comma)}function Bn(){un(),ct(ae.lessThan)&&Jn()}function Mn(){if(ct(ae.string)?ws():$s(),it(ae.eq)){const e=Te.tokens.length-1;us(),Te.tokens[e].rhsEndIndex=Te.tokens.length}}function qn(){for(Yt(!1),Be(ae.braceL);!it(ae.braceR)&&!Te.error;)Mn(),it(ae.comma)}function Fn(){Be(ae.braceL),Ao(ae.braceR)}function $n(){Yt(!1),it(ae.dot)?$n():Fn()}function Un(){Ee(ie._global)?$s():ct(ae.string)?vs():Me(),ct(ae.braceL)?Fn():Pe()}function Hn(){Qt(),Be(ae.eq),Ee(ie._require)&<()===ae.parenL?(je(ie._require),Be(ae.parenL),ct(ae.string)||Me(),ws(),Be(ae.parenR)):un(),Pe()}function Vn(){return Wn(Te.contextualKeyword,!0)}function Kn(e){switch(e){case ie._declare:{const e=Te.tokens.length-1,t=function(){if(De())return!1;switch(Te.type){case ae._function:{const e=ot(1);return tt(),Ro(Te.start,!0),rt(e),!0}case ae._class:{const e=ot(1);return Oo(!0,!1),rt(e),!0}case ae._const:if(ct(ae._const)&&Ne(ie._enum)){const e=ot(1);return Be(ae._const),je(ie._enum),Te.tokens[Te.tokens.length-1].type=ae._enum,qn(),rt(e),!0}case ae._var:case ae._let:{const e=ot(1);return wo(Te.type!==ae._var),rt(e),!0}case ae.name:{const e=ot(1),t=Te.contextualKeyword;let n=!1;return t===ie._global?(Un(),n=!0):n=Wn(t,!0),rt(e),n}default:return!1}}();if(t)return Te.tokens[e].type=ae._declare,!0;break}case ie._global:if(ct(ae.braceL))return Fn(),!0;break;default:return Wn(e,!1)}return!1}function Wn(e,t){switch(e){case ie._abstract:if(zn(t)&&ct(ae._class))return Te.tokens[Te.tokens.length-1].type=ae._abstract,Oo(!0,!1),!0;break;case ie._enum:if(zn(t)&&ct(ae.name))return Te.tokens[Te.tokens.length-1].type=ae._enum,qn(),!0;break;case ie._interface:if(zn(t)&&ct(ae.name)){const e=ot(t?2:1);return Yt(!1),dn(),it(ae._extends)&&Pn(),Tn(),rt(e),!0}break;case ie._module:if(zn(t)){if(ct(ae.string)){const e=ot(t?2:1);return Un(),rt(e),!0}if(ct(ae.name)){const e=ot(t?2:1);return $n(),rt(e),!0}}break;case ie._namespace:if(zn(t)&&ct(ae.name)){const e=ot(t?2:1);return $n(),rt(e),!0}break;case ie._type:if(zn(t)&&ct(ae.name)){const e=ot(t?2:1);return Yt(!1),dn(),Be(ae.eq),On(),Pe(),rt(e),!0}}return!1}function zn(e){return e?(tt(),!0):!De()}function Gn(){const e=Te.snapshot();return fn(),Lo(),ct(ae.colon)&&jn(ae.colon),Be(ae.arrow),Te.error?(Te.restoreFromSnapshot(e),!1):(Ms(!0),!0)}function Xn(){Te.type===ae.bitShiftL&&(Te.pos-=1,yt(ae.lessThan)),Jn()}function Jn(){const e=ot(0);for(Be(ae.lessThan);!ct(ae.greaterThan)&&!Te.error;)On(),it(ae.comma);e?(Be(ae.greaterThan),rt(e)):(rt(e),Tt(),Be(ae.greaterThan),Te.tokens[Te.tokens.length-1].isType=!0)}function Yn(){if(ct(ae.name))switch(Te.contextualKeyword){case ie._abstract:case ie._declare:case ie._enum:case ie._interface:case ie._module:case ie._namespace:case ie._type:return!0}return!1}function Qn(e,t){return xe?function(e,t){if(!ct(ae.lessThan))return hs(e,t);const n=Te.snapshot();let s=hs(e,t);if(!Te.error)return s;Te.restoreFromSnapshot(n);Te.type=ae.typeParameterStart,fn(),s=hs(e,t),s||Me();return s}(e,t):function(e,t){if(!ct(ae.lessThan))return hs(e,t);const n=Te.snapshot();fn();const s=hs(e,t);s||Me();if(!Te.error)return s;Te.restoreFromSnapshot(n);return hs(e,t)}(e,t)}function Zn(){is()}function es(e){Zn(),it(ae.colon)?Zn():Te.tokens[Te.tokens.length-1].identifierRole=e}function ts(){const e=Te.tokens.length;es(We.Access);let t=!1;for(;ct(ae.dot);)t=!0,is(),Zn();if(!t){const t=Te.tokens[e],n=be.charCodeAt(t.start);n>=ce.lowercaseA&&n<=ce.lowercaseZ&&(t.identifierRole=null)}}function ns(){switch(Te.type){case ae.braceL:return tt(),ls(),void is();case ae.jsxTagStart:return rs(),void is();case ae.string:return void is();default:Me("JSX value should be either an expression or a quoted JSX text")}}function ss(e){if(ct(ae.jsxTagEnd))return!1;ts(),ye&&function(){if(it(ae.jsxTagStart)){Te.tokens[Te.tokens.length-1].type=ae.typeParameterStart;const e=ot(1);for(;!ct(ae.greaterThan)&&!Te.error;)On(),it(ae.comma);is(),rt(e)}}();let t=!1;for(;!ct(ae.slash)&&!ct(ae.jsxTagEnd)&&!Te.error;)it(ae.braceL)?(t=!0,Be(ae.ellipsis),us(),is()):(t&&Te.end-Te.start==3&&be.charCodeAt(Te.start)===ce.lowercaseK&&be.charCodeAt(Te.start+1)===ce.lowercaseE&&be.charCodeAt(Te.start+2)===ce.lowercaseY&&(Te.tokens[e].jsxRole=ze.KeyAfterPropSpread),es(We.ObjectKey),ct(ae.eq)&&(is(),ns()));const n=ct(ae.slash);return n&&is(),n}function os(){const e=Te.tokens.length-1;Te.tokens[e].jsxRole=ze.NoChildren;let t=0;if(!ss(e))for(as();;)switch(Te.type){case ae.jsxTagStart:if(is(),ct(ae.slash))return is(),ct(ae.jsxTagEnd)||ts(),void(Te.tokens[e].jsxRole!==ze.KeyAfterPropSpread&&(1===t?Te.tokens[e].jsxRole=ze.OneChild:t>1&&(Te.tokens[e].jsxRole=ze.StaticChildren)));t++,os(),as();break;case ae.jsxText:t++,as();break;case ae.jsxEmptyText:as();break;case ae.braceL:tt(),ct(ae.ellipsis)?(Be(ae.ellipsis),ls(),as(),t+=2):(ct(ae.braceR)||(t++,ls()),as());break;default:return void Me()}}function rs(){is(),os()}function is(){Te.tokens.push(new et),xt(),Te.start=Te.pos;const e=be.charCodeAt(Te.pos);if(Ve[e])!function(){let e;do{if(Te.pos>be.length)return void Me("Unexpectedly reached the end of input.");e=be.charCodeAt(++Te.pos)}while(He[e]||e===ce.dash);yt(ae.jsxName)}();else if(e===ce.quotationMark||e===ce.apostrophe)!function(e){for(Te.pos++;;){if(Te.pos>=be.length)return void Me("Unterminated string constant");if(be.charCodeAt(Te.pos)===e){Te.pos++;break}Te.pos++}yt(ae.string)}(e);else switch(++Te.pos,e){case ce.greaterThan:yt(ae.jsxTagEnd);break;case ce.lessThan:yt(ae.jsxTagStart);break;case ce.slash:yt(ae.slash);break;case ce.equalsTo:yt(ae.eq);break;case ce.leftCurlyBrace:yt(ae.braceL);break;case ce.dot:yt(ae.dot);break;case ce.colon:yt(ae.colon);break;default:Me()}}function as(){Te.tokens.push(new et),Te.start=Te.pos,function(){let e=!1,t=!1;for(;;){if(Te.pos>=be.length)return void Me("Unterminated JSX contents");const n=be.charCodeAt(Te.pos);if(n===ce.lessThan||n===ce.leftCurlyBrace)return Te.pos===Te.start?n===ce.lessThan?(Te.pos++,void yt(ae.jsxTagStart)):void bt(n):void yt(e&&!t?ae.jsxEmptyText:ae.jsxText);n===ce.lineFeed?e=!0:n!==ce.space&&n!==ce.carriageReturn&&n!==ce.tab&&(t=!0),Te.pos++}}()}!function(e){e[e.TSFunctionType=0]="TSFunctionType";e[e.TSConstructorType=1]="TSConstructorType";e[e.TSAbstractConstructorType=2]="TSAbstractConstructorType"}(wn||(wn={}));class cs{constructor(e){this.stop=e}}function ls(e=!1){if(us(e),ct(ae.comma))for(;it(ae.comma);)us(e)}function us(e=!1,t=!1){return ye?Qn(e,t):_e?function(e,t){if(ct(ae.lessThan)){const n=Te.snapshot();let s=hs(e,t);if(!Te.error)return s;Te.restoreFromSnapshot(n),Te.type=ae.typeParameterStart;const o=ot(0);if(Qs(),rt(o),s=hs(e,t),s)return!0;Me()}return hs(e,t)}(e,t):hs(e,t)}function hs(e,t){if(ct(ae._yield))return tt(),ct(ae.semi)||Re()||(it(ae.star),us()),!1;(ct(ae.parenL)||ct(ae.name)||ct(ae._yield))&&(Te.potentialArrowAt=Te.start);const n=function(e){const t=function(e){const t=Te.tokens.length,n=fs();if(n)return!0;return ds(t,-1,e),!1}(e);if(t)return!0;return function(e){ye||_e?function(e){if(ct(ae.question)){const e=lt();if(e===ae.colon||e===ae.comma||e===ae.parenR)return}ps(e)}(e):ps(e)}(e),!1}(e);return t&&Ns(),Te.type&ae.IS_ASSIGN?(tt(),us(e),!1):n}function ps(e){it(ae.question)&&(us(),Be(ae.colon),us(e))}function ds(e,t,n){if(ye&&(ae._in&ae.PRECEDENCE_MASK)>t&&!Le()&&(Se(ie._as)||Se(ie._satisfies))){const s=ot(1);return On(),rt(s),Tt(),void ds(e,t,n)}const s=Te.type&ae.PRECEDENCE_MASK;if(s>0&&(!n||!ct(ae._in))&&s>t){const o=Te.type;tt(),o===ae.nullishCoalescing&&(Te.tokens[Te.tokens.length-1].nullishStartIndex=e);const r=Te.tokens.length;fs(),ds(r,o&ae.IS_RIGHT_ASSOCIATIVE?s-1:s,n),o===ae.nullishCoalescing&&(Te.tokens[e].numNullishCoalesceStarts++,Te.tokens[Te.tokens.length-1].numNullishCoalesceEnds++),ds(e,t,n)}}function fs(){if(ye&&!xe&&it(ae.lessThan))return function(){const e=ot(1);On(),Be(ae.greaterThan),rt(e),fs()}(),!1;if(Ee(ie._module)&&ft()===ce.leftCurlyBrace&&!Oe())return je(ie._module),Be(ae.braceL),Ao(ae.braceR),!1;if(Te.type&ae.IS_PREFIX)return tt(),fs(),!1;if(ms())return!0;for(;Te.type&ae.IS_POSTFIX&&!Re();)Te.type===ae.preIncDec&&(Te.type=ae.postIncDec),tt();return!1}function ms(){const e=Te.tokens.length;return!!vs()||(ks(e),Te.tokens.length>e&&Te.tokens[e].isOptionalChainStart&&(Te.tokens[Te.tokens.length-1].isOptionalChainEnd=!0),!1)}function ks(e,t=!1){_e?function(e,t=!1){if(Te.tokens[Te.tokens.length-1].contextualKeyword===ie._async&&ct(ae.lessThan)){const e=Te.snapshot(),t=function(){Te.scopeDepth++;const e=Te.tokens.length;if(Lo(),!Es())return!1;return Ps(e),!0}();if(t&&!Te.error)return;Te.restoreFromSnapshot(e)}gs(e,t)}(e,t):gs(e,t)}function gs(e,t=!1){const n=new cs(!1);do{xs(e,t,n)}while(!n.stop&&!Te.error)}function xs(e,t,n){ye?function(e,t,n){if(Le()||!it(ae.bang)){if(ct(ae.lessThan)||ct(ae.bitShiftL)){const n=Te.snapshot();if(!t&&_s()&&Gn())return;if(Xn(),!t&&it(ae.parenL)?(Te.tokens[Te.tokens.length-1].subscriptStartIndex=e,Ts()):ct(ae.backQuote)?Ss():(Te.type===ae.greaterThan||Te.type!==ae.parenL&&Boolean(Te.type&ae.IS_EXPRESSION_START)&&!Le())&&Me(),!Te.error)return;Te.restoreFromSnapshot(n)}else!t&&ct(ae.questionDot)&<()===ae.lessThan&&(tt(),Te.tokens[e].isOptionalChainStart=!0,Te.tokens[Te.tokens.length-1].subscriptStartIndex=e,Jn(),Be(ae.parenL),Ts());ys(e,t,n)}else Te.tokens[Te.tokens.length-1].type=ae.nonNullAssertion}(e,t,n):_e?function(e,t,n){if(ct(ae.questionDot)&<()===ae.lessThan)return t?void(n.stop=!0):(tt(),Zs(),Be(ae.parenL),void Ts());if(!t&&ct(ae.lessThan)){const e=Te.snapshot();if(Zs(),Be(ae.parenL),Ts(),!Te.error)return;Te.restoreFromSnapshot(e)}ys(e,t,n)}(e,t,n):ys(e,t,n)}function ys(e,t,n){if(!t&&it(ae.doubleColon))bs(),n.stop=!0,ks(e,t);else if(ct(ae.questionDot)){if(Te.tokens[e].isOptionalChainStart=!0,t&<()===ae.parenL)return void(n.stop=!0);tt(),Te.tokens[Te.tokens.length-1].subscriptStartIndex=e,it(ae.bracketL)?(ls(),Be(ae.bracketR)):it(ae.parenL)?Ts():Is()}else if(it(ae.dot))Te.tokens[Te.tokens.length-1].subscriptStartIndex=e,Is();else if(it(ae.bracketL))Te.tokens[Te.tokens.length-1].subscriptStartIndex=e,ls(),Be(ae.bracketR);else if(!t&&ct(ae.parenL))if(_s()){const t=Te.snapshot(),s=Te.tokens.length;tt(),Te.tokens[Te.tokens.length-1].subscriptStartIndex=e;const o=Ie();Te.tokens[Te.tokens.length-1].contextId=o,Ts(),Te.tokens[Te.tokens.length-1].contextId=o,(ct(ae.colon)||ct(ae.arrow))&&(Te.restoreFromSnapshot(t),n.stop=!0,Te.scopeDepth++,Lo(),function(e){ye?ct(ae.colon)&&Ln():_e&&function(){if(ct(ae.colon)){const e=Te.noAnonFunctionType;Te.noAnonFunctionType=!0,fo(),Te.noAnonFunctionType=e}}();Be(ae.arrow),Ps(e)}(s))}else{tt(),Te.tokens[Te.tokens.length-1].subscriptStartIndex=e;const t=Ie();Te.tokens[Te.tokens.length-1].contextId=t,Ts(),Te.tokens[Te.tokens.length-1].contextId=t}else ct(ae.backQuote)?Ss():n.stop=!0}function _s(){return Te.tokens[Te.tokens.length-1].contextualKeyword===ie._async&&!Re()}function Ts(){let e=!0;for(;!it(ae.parenR)&&!Te.error;){if(e)e=!1;else if(Be(ae.comma),it(ae.parenR))break;Fs(!1)}}function bs(){const e=Te.tokens.length;vs(),ks(e,!0)}function vs(){if(it(ae.modulo))return $s(),!1;if(ct(ae.jsxText)||ct(ae.jsxEmptyText))return ws(),!1;if(ct(ae.lessThan)&&xe)return Te.type=ae.jsxTagStart,rs(),tt(),!1;const e=Te.potentialArrowAt===Te.start;switch(Te.type){case ae.slash:case ae.assign:st();case ae._super:case ae._this:case ae.regexp:case ae.num:case ae.bigint:case ae.decimal:case ae.string:case ae._null:case ae._true:case ae._false:return tt(),!1;case ae._import:return tt(),ct(ae.dot)&&(Te.tokens[Te.tokens.length-1].type=ae.name,tt(),$s()),!1;case ae.name:{const t=Te.tokens.length,n=Te.start,s=Te.contextualKeyword;return $s(),s===ie._await?(fs(),!1):s===ie._async&&ct(ae._function)&&!Re()?(tt(),Ro(n,!1),!1):e&&s===ie._async&&!Re()&&ct(ae.name)?(Te.scopeDepth++,Yt(!1),Be(ae.arrow),Ps(t),!0):ct(ae._do)&&!Re()?(tt(),Co(),!1):e&&!Re()&&ct(ae.arrow)?(Te.scopeDepth++,Zt(!1),Be(ae.arrow),Ps(t),!0):(Te.tokens[Te.tokens.length-1].identifierRole=We.Access,!1)}case ae._do:return tt(),Co(),!1;case ae.parenL:return As(e);case ae.bracketL:return tt(),qs(ae.bracketR,!0),!1;case ae.braceL:return js(!1,!1),!1;case ae._function:return function(){const e=Te.start;$s(),it(ae.dot)&&$s();Ro(e,!1)}(),!1;case ae.at:bo();case ae._class:return Oo(!1),!1;case ae._new:return function(){if(Be(ae._new),it(ae.dot))return void $s();bs(),void it(ae.questionDot),_e&&function(){if(ct(ae.lessThan)){const e=Te.snapshot();Zs(),Te.error&&Te.restoreFromSnapshot(e)}}();it(ae.parenL)&&qs(ae.parenR)}(),!1;case ae.backQuote:return Ss(),!1;case ae.doubleColon:return tt(),bs(),!1;case ae.hash:{const e=ft();return Ve[e]||e===ce.backslash?Is():tt(),!1}default:return Me(),!1}}function Is(){it(ae.hash),$s()}function ws(){tt()}function Cs(){Be(ae.parenL),ls(),Be(ae.parenR)}function As(e){const t=Te.snapshot(),n=Te.tokens.length;Be(ae.parenL);let s=!0;for(;!ct(ae.parenR)&&!Te.error;){if(s)s=!1;else if(Be(ae.comma),ct(ae.parenR))break;if(ct(ae.ellipsis)){Jt(!1),Ns();break}us(!1,!0)}if(Be(ae.parenR),e&&(ct(ae.colon)||!Re())){if(Es())return Te.restoreFromSnapshot(t),Te.scopeDepth++,Lo(),Es(),Ps(n),!Te.error||(Te.restoreFromSnapshot(t),As(!1),!1)}return!1}function Es(){return ye?function(){if(ct(ae.colon)){const e=Te.snapshot();jn(ae.colon),Re()&&Me(),ct(ae.arrow)||Me(),Te.error&&Te.restoreFromSnapshot(e)}return it(ae.arrow)}():_e?function(){if(ct(ae.colon)){const e=ot(0),t=Te.snapshot(),n=Te.noAnonFunctionType;Te.noAnonFunctionType=!0,Vs(),Te.noAnonFunctionType=n,Re()&&Me(),ct(ae.arrow)||Me(),Te.error&&Te.restoreFromSnapshot(t),rt(e)}return it(ae.arrow)}():it(ae.arrow)}function Ns(){(ye||_e)&&(at(ae.question),ct(ae.colon)&&(ye?Ln():_e&&fo()))}function Ss(){for(nt(),nt();!ct(ae.backQuote)&&!Te.error;)Be(ae.dollarBraceL),ls(),nt(),nt();tt()}function js(e,t){const n=Ie();let s=!0;for(tt(),Te.tokens[Te.tokens.length-1].contextId=n;!it(ae.braceR)&&!Te.error;){if(s)s=!1;else if(Be(ae.comma),it(ae.braceR))break;let o=!1;if(ct(ae.ellipsis)){const n=Te.tokens.length;if(Xt(),e&&(Te.tokens.length===n+2&&Zt(t),it(ae.braceR)))break}else e||(o=it(ae.star)),!e&&Ee(ie._async)?(o&&Me(),$s(),ct(ae.colon)||ct(ae.parenL)||ct(ae.braceR)||ct(ae.eq)||ct(ae.comma)||(ct(ae.star)&&(tt(),o=!0),Os(n))):Os(n),Ls(e,t,n)}Te.tokens[Te.tokens.length-1].contextId=n}function Rs(e,t){const n=Te.start;return ct(ae.parenL)?(e&&Me(),Ds(n,!1),!0):!!function(e){return!e&&(ct(ae.string)||ct(ae.num)||ct(ae.bracketL)||ct(ae.name)||!!(Te.type&ae.IS_KEYWORD))}(e)&&(Os(t),Ds(n,!1),!0)}function Ls(e,t,n){ye?dn():_e&&ct(ae.lessThan)&&(Qs(),ct(ae.parenL)||Me());Rs(e,n)||function(e,t){if(it(ae.colon))return void(e?on(t):us(!1));let n;n=e?0===Te.scopeDepth?We.ObjectShorthandTopLevelDeclaration:t?We.ObjectShorthandBlockScopedDeclaration:We.ObjectShorthandFunctionScopedDeclaration:We.ObjectShorthand,Te.tokens[Te.tokens.length-1].identifierRole=n,on(t,!0)}(e,t)}function Os(e){_e&&ko(),it(ae.bracketL)?(Te.tokens[Te.tokens.length-1].contextId=e,us(),Be(ae.bracketR),Te.tokens[Te.tokens.length-1].contextId=e):(ct(ae.num)||ct(ae.string)||ct(ae.bigint)||ct(ae.decimal)?vs():Is(),Te.tokens[Te.tokens.length-1].identifierRole=We.ObjectKey,Te.tokens[Te.tokens.length-1].contextId=e)}function Ds(e,t){const n=Ie();Te.scopeDepth++;const s=Te.tokens.length;Lo(t,n),Bs(e,n);const o=Te.tokens.length;Te.scopes.push(new me(s,o,!0)),Te.scopeDepth--}function Ps(e){Ms(!0);const t=Te.tokens.length;Te.scopes.push(new me(e,t,!0)),Te.scopeDepth--}function Bs(e,t=0){ye?function(e,t){if(ct(ae.colon)&&jn(ae.colon),ct(ae.braceL)||!De())Ms(!1,t);else{let t=Te.tokens.length-1;for(;t>=0&&(Te.tokens[t].start>=e||Te.tokens[t].type===ae._default||Te.tokens[t].type===ae._export);)Te.tokens[t].isType=!0,t--}}(e,t):_e?function(e){ct(ae.colon)&&Vs();Ms(!1,e)}(t):Ms(!1,t)}function Ms(e,t=0){e&&!ct(ae.braceL)?us():Co(!0,t)}function qs(e,t=!1){let n=!0;for(;!it(e)&&!Te.error;){if(n)n=!1;else if(Be(ae.comma),it(e))break;Fs(t)}}function Fs(e){e&&ct(ae.comma)||(ct(ae.ellipsis)?(Xt(),Ns()):ct(ae.question)?tt():us(!1,!0))}function $s(){tt(),Te.tokens[Te.tokens.length-1].type=ae.name}function Us(e){const t=ot(0);Be(e||ae.colon),po(),rt(t)}function Hs(){Be(ae.modulo),je(ie._checks),it(ae.parenL)&&(ls(),Be(ae.parenR))}function Vs(){const e=ot(0);Be(ae.colon),ct(ae.modulo)?Hs():(po(),ct(ae.modulo)&&Hs()),rt(e)}function Ks(){ct(ae._class)?(tt(),Ws(!0)):ct(ae._function)?(tt(),$s(),ct(ae.lessThan)&&Qs(),Be(ae.parenL),ao(),Be(ae.parenR),Vs(),Pe()):ct(ae._var)?(tt(),mo(),Pe()):Se(ie._module)?it(ae.dot)?(je(ie._exports),fo(),Pe()):function(){ct(ae.string)?vs():$s();Be(ae.braceL);for(;!ct(ae.braceR)&&!Te.error;)ct(ae._import)?(tt(),Xo()):Me();Be(ae.braceR)}():Ee(ie._type)?(tt(),Js()):Ee(ie._opaque)?(tt(),Ys(!0)):Ee(ie._interface)?(tt(),Ws()):ct(ae._export)?(Be(ae._export),it(ae._default)?ct(ae._function)||ct(ae._class)?Ks():(po(),Pe()):ct(ae._var)||ct(ae._function)||ct(ae._class)||Ee(ie._opaque)?Ks():ct(ae.star)||ct(ae.braceL)||Ee(ie._interface)||Ee(ie._type)||Ee(ie._opaque)?Uo():Me()):Me()}function Ws(e=!1){if(Xs(),ct(ae.lessThan)&&Qs(),it(ae._extends))do{zs()}while(!e&&it(ae.comma));if(Ee(ie._mixins)){tt();do{zs()}while(it(ae.comma))}if(Ee(ie._implements)){tt();do{zs()}while(it(ae.comma))}no(e,!1,e)}function zs(){ro(!1),ct(ae.lessThan)&&Zs()}function Gs(){Ws()}function Xs(){$s()}function Js(){Xs(),ct(ae.lessThan)&&Qs(),Us(ae.eq),Pe()}function Ys(e){je(ie._type),Xs(),ct(ae.lessThan)&&Qs(),ct(ae.colon)&&Us(ae.colon),e||Us(ae.eq),Pe()}function Qs(){const e=ot(0);ct(ae.lessThan)||ct(ae.typeParameterStart)?tt():Me();do{ko(),mo(),it(ae.eq)&&po(),ct(ae.greaterThan)||Be(ae.comma)}while(!ct(ae.greaterThan)&&!Te.error);Be(ae.greaterThan),rt(e)}function Zs(){const e=ot(0);for(Be(ae.lessThan);!ct(ae.greaterThan)&&!Te.error;)po(),ct(ae.greaterThan)||Be(ae.comma);Be(ae.greaterThan),rt(e)}function eo(){ct(ae.num)||ct(ae.string)?vs():$s()}function to(){for(ct(ae.lessThan)&&Qs(),Be(ae.parenL);!ct(ae.parenR)&&!ct(ae.ellipsis)&&!Te.error;)io(),ct(ae.parenR)||Be(ae.comma);it(ae.ellipsis)&&io(),Be(ae.parenR),Us()}function no(e,t,n){let s;for(t&&ct(ae.braceBarL)?(Be(ae.braceBarL),s=ae.braceBarR):(Be(ae.braceL),s=ae.braceR);!ct(s)&&!Te.error;){if(n&&Ee(ie._proto)){const t=lt();t!==ae.colon&&t!==ae.question&&(tt(),e=!1)}if(e&&Ee(ie._static)){const e=lt();e!==ae.colon&&e!==ae.question&&tt()}if(ko(),it(ae.bracketL))it(ae.bracketL)?(eo(),Be(ae.bracketR),Be(ae.bracketR),ct(ae.lessThan)||ct(ae.parenL)?to():(it(ae.question),Us())):(lt()===ae.colon?(eo(),Us()):po(),Be(ae.bracketR),Us());else if(ct(ae.parenL)||ct(ae.lessThan))to();else{if(Ee(ie._get)||Ee(ie._set)){const e=lt();e!==ae.name&&e!==ae.string&&e!==ae.num||tt()}so()}oo()}Be(s)}function so(){if(ct(ae.ellipsis)){if(Be(ae.ellipsis),it(ae.comma)||it(ae.semi),ct(ae.braceR))return;po()}else eo(),ct(ae.lessThan)||ct(ae.parenL)?to():(it(ae.question),Us())}function oo(){it(ae.semi)||it(ae.comma)||ct(ae.braceR)||ct(ae.braceBarR)||Me()}function ro(e){for(e||$s();it(ae.dot);)$s()}function io(){const e=lt();e===ae.colon||e===ae.question?($s(),it(ae.question),Us()):po()}function ao(){for(;!ct(ae.parenR)&&!ct(ae.ellipsis)&&!Te.error;)io(),ct(ae.parenR)||Be(ae.comma);it(ae.ellipsis)&&io()}function co(){let e=!1;const t=Te.noAnonFunctionType;switch(Te.type){case ae.name:return Ee(ie._interface)?void function(){if(je(ie._interface),it(ae._extends))do{zs()}while(it(ae.comma));no(!1,!1,!1)}():($s(),ro(!0),void(ct(ae.lessThan)&&Zs()));case ae.braceL:return void no(!1,!1,!1);case ae.braceBarL:return void no(!1,!0,!1);case ae.bracketL:return void function(){for(Be(ae.bracketL);Te.pos<be.length&&!ct(ae.bracketR)&&(po(),!ct(ae.bracketR));)Be(ae.comma);Be(ae.bracketR)}();case ae.lessThan:return Qs(),Be(ae.parenL),ao(),Be(ae.parenR),Be(ae.arrow),void po();case ae.parenL:if(tt(),!ct(ae.parenR)&&!ct(ae.ellipsis))if(ct(ae.name)){const t=lt();e=t!==ae.question&&t!==ae.colon}else e=!0;if(e){if(Te.noAnonFunctionType=!1,po(),Te.noAnonFunctionType=t,Te.noAnonFunctionType||!(ct(ae.comma)||ct(ae.parenR)&<()===ae.arrow))return void Be(ae.parenR);it(ae.comma)}return ao(),Be(ae.parenR),Be(ae.arrow),void po();case ae.minus:return tt(),void ws();case ae.string:case ae.num:case ae._true:case ae._false:case ae._null:case ae._this:case ae._void:case ae.star:return void tt();default:if(Te.type===ae._typeof)return Be(ae._typeof),void co();if(Te.type&ae.IS_KEYWORD)return tt(),void(Te.tokens[Te.tokens.length-1].type=ae.name)}Me()}function lo(){it(ae.question)?lo():function(){for(co();!Re()&&(ct(ae.bracketL)||ct(ae.questionDot));)it(ae.questionDot),Be(ae.bracketL),it(ae.bracketR)||(po(),Be(ae.bracketR))}()}function uo(){lo(),!Te.noAnonFunctionType&&it(ae.arrow)&&po()}function ho(){for(it(ae.bitwiseAND),uo();it(ae.bitwiseAND);)uo()}function po(){!function(){for(it(ae.bitwiseOR),ho();it(ae.bitwiseOR);)ho()}()}function fo(){Us()}function mo(){$s(),ct(ae.colon)&&fo()}function ko(){(ct(ae.plus)||ct(ae.minus))&&(tt(),Te.tokens[Te.tokens.length-1].isType=!0)}function go(){if(ct(ae._typeof)||Ee(ie._type)){const t=ht();(((e=t).type===ae.name||e.type&ae.IS_KEYWORD)&&e.contextualKeyword!==ie._from||t.type===ae.braceL||t.type===ae.star)&&tt()}var e}function xo(){je(ie._enum),Te.tokens[Te.tokens.length-1].type=ae._enum,$s(),function(){Se(ie._of)&&tt();Be(ae.braceL),function(){for(;!ct(ae.braceR)&&!Te.error&&!it(ae.ellipsis);)yo(),ct(ae.braceR)||Be(ae.comma)}(),Be(ae.braceR)}()}function yo(){$s(),it(ae.eq)&&tt()}function _o(e){_e&&function(){if(ct(ae.name)&&Te.contextualKeyword===ie._interface){const e=ot(0);return tt(),Gs(),rt(e),!0}return!!Ee(ie._enum)&&(xo(),!0)}()||(ct(ae.at)&&bo(),function(e){if(ye&&function(){if(Te.type===ae._const){const e=ht();if(e.type===ae.name&&e.contextualKeyword===ie._enum)return Be(ae._const),je(ie._enum),Te.tokens[Te.tokens.length-1].type=ae._enum,qn(),!0}return!1}())return;const t=Te.type;switch(t){case ae._break:case ae._continue:return tt(),void(De()||($s(),Pe()));case ae._debugger:return tt(),void Pe();case ae._do:return tt(),_o(!1),Be(ae._while),Cs(),void it(ae.semi);case ae._for:return void function(){Te.scopeDepth++;const e=Te.tokens.length;!function(){tt();let e=!1;Ee(ie._await)&&(e=!0,tt());if(Be(ae.parenL),ct(ae.semi))return e&&Me(),void Eo();const t=To();if(t||ct(ae._var)||ct(ae._let)||ct(ae._const)||function(){if(!Ee(ie._using))return!1;if(Ne(ie._of))return!1;return!0}())return t&&je(ie._await),tt(),So(!0,Te.type!==ae._var),ct(ae._in)||Ee(ie._of)?void No(e):void Eo();if(ls(!0),ct(ae._in)||Ee(ie._of))return void No(e);e&&Me();Eo()}();const t=Te.tokens.length;Te.scopes.push(new me(e,t,!1)),Te.scopeDepth--}();case ae._function:if(lt()===ae.dot)break;return e||Me(),void function(){const e=Te.start;tt(),Ro(e,!0)}();case ae._class:return e||Me(),void Oo(!0);case ae._if:return tt(),Cs(),_o(!1),void(it(ae._else)&&_o(!1));case ae._return:return tt(),void(De()||(ls(),Pe()));case ae._switch:return void function(){tt(),Cs(),Te.scopeDepth++;const e=Te.tokens.length;Be(ae.braceL);for(;!ct(ae.braceR)&&!Te.error;)if(ct(ae._case)||ct(ae._default)){const e=ct(ae._case);tt(),e&&ls(),Be(ae.colon)}else _o(!0);tt();const t=Te.tokens.length;Te.scopes.push(new me(e,t,!1)),Te.scopeDepth--}();case ae._throw:return tt(),ls(),void Pe();case ae._try:return void function(){if(tt(),Co(),ct(ae._catch)){tt();let e=null;if(ct(ae.parenL)&&(Te.scopeDepth++,e=Te.tokens.length,Be(ae.parenL),en(!0),ye&&Rn(),Be(ae.parenR)),Co(),null!=e){const t=Te.tokens.length;Te.scopes.push(new me(e,t,!1)),Te.scopeDepth--}}it(ae._finally)&&Co()}();case ae._let:case ae._const:e||Me();case ae._var:return void wo(t!==ae._var);case ae._while:return tt(),Cs(),void _o(!1);case ae.braceL:return void Co();case ae.semi:return void tt();case ae._export:case ae._import:{const e=lt();if(e===ae.parenL||e===ae.dot)break;return tt(),void(t===ae._import?Xo():Uo())}case ae.name:if(Te.contextualKeyword===ie._async){const e=Te.start,t=Te.snapshot();if(tt(),ct(ae._function)&&!Re())return Be(ae._function),void Ro(e,!0);Te.restoreFromSnapshot(t)}else{if(Te.contextualKeyword===ie._using&&!Oe()&<()===ae.name)return void wo(!0);if(To())return je(ie._await),void wo(!0)}}const n=Te.tokens.length;ls();let s=null;if(Te.tokens.length===n+1){const e=Te.tokens[Te.tokens.length-1];e.type===ae.name&&(s=e.contextualKeyword)}if(null==s)return void Pe();it(ae.colon)?_o(!0):(o=s,ye?function(e){Kn(e)||Pe()}(o):_e?function(e){if(e===ie._declare){if(ct(ae._class)||ct(ae.name)||ct(ae._function)||ct(ae._var)||ct(ae._export)){const e=ot(1);Ks(),rt(e)}}else if(ct(ae.name))if(e===ie._interface){const e=ot(1);Gs(),rt(e)}else if(e===ie._type){const e=ot(1);Js(),rt(e)}else if(e===ie._opaque){const e=ot(1);Ys(!1),rt(e)}Pe()}(o):Pe());var o}(e))}function To(){if(!Ee(ie._await))return!1;const e=Te.snapshot();return tt(),!Ee(ie._using)||Le()?(Te.restoreFromSnapshot(e),!1):(tt(),!ct(ae.name)||Le()?(Te.restoreFromSnapshot(e),!1):(Te.restoreFromSnapshot(e),!0))}function bo(){for(;ct(ae.at);)vo()}function vo(){if(tt(),it(ae.parenL))ls(),Be(ae.parenR);else{for($s();it(ae.dot);)$s();ye?((ct(ae.lessThan)||ct(ae.bitShiftL))&&Xn(),Io()):Io()}}function Io(){it(ae.parenL)&&Ts()}function wo(e){tt(),So(!1,e),Pe()}function Co(e=!1,t=0){const n=Te.tokens.length;Te.scopeDepth++,Be(ae.braceL),t&&(Te.tokens[Te.tokens.length-1].contextId=t),Ao(ae.braceR),t&&(Te.tokens[Te.tokens.length-1].contextId=t);const s=Te.tokens.length;Te.scopes.push(new me(n,s,e)),Te.scopeDepth--}function Ao(e){for(;!it(e)&&!Te.error;)_o(!0)}function Eo(){Be(ae.semi),ct(ae.semi)||ls(),Be(ae.semi),ct(ae.parenR)||ls(),Be(ae.parenR),_o(!1)}function No(e){e?Se(ie._of):tt(),ls(),Be(ae.parenR),_o(!1)}function So(e,t){for(;;){if(jo(t),it(ae.eq)){const t=Te.tokens.length-1;us(e),Te.tokens[t].rhsEndIndex=Te.tokens.length}if(!it(ae.comma))break}}function jo(e){en(e),ye?function(){const e=ot(0);Le()||it(ae.bang),Rn(),rt(e)}():_e&&ct(ae.colon)&&fo()}function Ro(e,t,n=!1){ct(ae.star)&&tt(),!t||n||ct(ae.name)||ct(ae._yield)||Me();let s=null;ct(ae.name)&&(t||(s=Te.tokens.length,Te.scopeDepth++),Yt(!1));const o=Te.tokens.length;Te.scopeDepth++,Lo(),Bs(e);const r=Te.tokens.length;Te.scopes.push(new me(o,r,!0)),Te.scopeDepth--,null!==s&&(Te.scopes.push(new me(s,r,!0)),Te.scopeDepth--)}function Lo(e=!1,t=0){ye?dn():_e&&function(){if(ct(ae.lessThan)){const e=ot(0);Qs(),rt(e)}}(),Be(ae.parenL),t&&(Te.tokens[Te.tokens.length-1].contextId=t),tn(ae.parenR,!1,!1,e,t),t&&(Te.tokens[Te.tokens.length-1].contextId=t)}function Oo(e,t=!1){const n=Ie();tt(),Te.tokens[Te.tokens.length-1].contextId=n,Te.tokens[Te.tokens.length-1].isExpression=!e;let s=null;e||(s=Te.tokens.length,Te.scopeDepth++),function(e,t=!1){if(ye&&(!e||t)&&Ee(ie._implements))return;ct(ae.name)&&Yt(!0);ye?dn():_e&&ct(ae.lessThan)&&Qs()}(e,t),function(){let e=!1;it(ae._extends)?(ms(),e=!0):e=!1;ye?function(e){if(e&&(ct(ae.lessThan)||ct(ae.bitShiftL))&&Xn(),Se(ie._implements)){Te.tokens[Te.tokens.length-1].type=ae._implements;const e=ot(1);Pn(),rt(e)}}(e):_e&&function(e){if(e&&ct(ae.lessThan)&&Zs(),Ee(ie._implements)){const e=ot(0);tt(),Te.tokens[Te.tokens.length-1].type=ae._implements;do{Xs(),ct(ae.lessThan)&&Zs()}while(it(ae.comma));rt(e)}}(e)}();const o=Te.tokens.length;if(function(e){Be(ae.braceL);for(;!it(ae.braceR)&&!Te.error;){if(it(ae.semi))continue;if(ct(ae.at)){vo();continue}Bo(Te.start,e)}}(n),!Te.error&&(Te.tokens[o].contextId=n,Te.tokens[Te.tokens.length-1].contextId=n,null!==s)){const e=Te.tokens.length;Te.scopes.push(new me(s,e,!1)),Te.scopeDepth--}}function Do(){return ct(ae.eq)||ct(ae.semi)||ct(ae.braceR)||ct(ae.bang)||ct(ae.colon)}function Po(){return ct(ae.parenL)||ct(ae.lessThan)}function Bo(e,t){ye&&cn([ie._declare,ie._public,ie._protected,ie._private,ie._override]);let n=!1;if(ct(ae.name)&&Te.contextualKeyword===ie._static){if($s(),Po())return void Mo(e,!1);if(Do())return void $o();if(Te.tokens[Te.tokens.length-1].type=ae._static,n=!0,ct(ae.braceL))return Te.tokens[Te.tokens.length-1].contextId=t,void Co()}!function(e,t,n){if(ye&&function(e){const t=Te.tokens.length;cn([ie._abstract,ie._readonly,ie._declare,ie._static,ie._override]);const n=Te.tokens.length;if(xn()){for(let s=e?t-1:t;s<n;s++)Te.tokens[s].isType=!0;return!0}return!1}(t))return;if(it(ae.star))return qo(n),void Mo(e,!1);qo(n);let s=!1;const o=Te.tokens[Te.tokens.length-1];o.contextualKeyword===ie._constructor&&(s=!0);if(Fo(),Po())Mo(e,s);else if(Do())$o();else if(o.contextualKeyword!==ie._async||De())o.contextualKeyword!==ie._get&&o.contextualKeyword!==ie._set||De()&&ct(ae.star)?o.contextualKeyword!==ie._accessor||De()?De()?$o():Me():(qo(n),$o()):(o.contextualKeyword===ie._get?Te.tokens[Te.tokens.length-1].type=ae._get:Te.tokens[Te.tokens.length-1].type=ae._set,qo(n),Mo(e,!1));else{Te.tokens[Te.tokens.length-1].type=ae._async;ct(ae.star)&&tt(),qo(n),Fo(),Mo(e,!1)}}(e,n,t)}function Mo(e,t){ye?dn():_e&&ct(ae.lessThan)&&Qs(),Ds(e,t)}function qo(e){Os(e)}function Fo(){if(ye){const e=ot(0);it(ae.question),rt(e)}}function $o(){if(ye?(at(ae.bang),Rn()):_e&&ct(ae.colon)&&fo(),ct(ae.eq)){const e=Te.tokens.length;tt(),us(),Te.tokens[e].rhsEndIndex=Te.tokens.length}Pe()}function Uo(){const e=Te.tokens.length-1;ye&&function(){if(it(ae._import))return Ee(ie._type)&<()!==ae.eq&&je(ie._type),Hn(),!0;if(it(ae.eq))return ls(),Pe(),!0;if(Se(ie._as))return je(ie._namespace),$s(),Pe(),!0;if(Ee(ie._type)){const e=lt();e!==ae.braceL&&e!==ae.star||tt()}return!1}()||((_e?ct(ae.star)||Ee(ie._type)&<()===ae.star:ct(ae.star))?_e?function(){if(Se(ie._type)){const e=ot(2);Ko(),rt(e)}else Ko()}():Ko():function(){if(ye&&Yn())return!1;if(_e&&ct(ae.name)&&(Te.contextualKeyword===ie._type||Te.contextualKeyword===ie._interface||Te.contextualKeyword===ie._opaque||Te.contextualKeyword===ie._enum))return!1;if(ct(ae.name))return Te.contextualKeyword!==ie._async;if(!ct(ae._default))return!1;const e=pt(),t=ht(),n=t.type===ae.name&&t.contextualKeyword===ie._from;if(t.type===ae.comma)return!0;if(n){const t=be.charCodeAt(dt(e+4));return t===ce.quotationMark||t===ce.apostrophe}return!1}()?($s(),ct(ae.comma)&<()===ae.star?(Be(ae.comma),Be(ae.star),je(ie._as),$s()):Ho(),Vo()):it(ae._default)?function(){if(ye&&function(){if(Ee(ie._abstract)&<()===ae._class)return Te.type=ae._abstract,tt(),Oo(!0,!0),!0;if(Ee(ie._interface)){const e=ot(2);return Wn(ie._interface,!0),rt(e),!0}return!1}())return;if(_e&&Ee(ie._enum)&&(xo(),1))return;const e=Te.start;it(ae._function)?Ro(e,!0,!0):Ee(ie._async)&<()===ae._function?(Se(ie._async),it(ae._function),Ro(e,!0,!0)):ct(ae._class)?Oo(!0,!0):ct(ae.at)?(bo(),Oo(!0,!0)):(us(),Pe())}():ye&&Yn()||_e&&(Ee(ie._type)||Ee(ie._interface)||Ee(ie._opaque)||Ee(ie._enum))||Te.type===ae._var||Te.type===ae._const||Te.type===ae._let||Te.type===ae._function||Te.type===ae._class||Ee(ie._async)||ct(ae.at)?ye?function(){const e=Se(ie._declare);e&&(Te.tokens[Te.tokens.length-1].type=ae._declare);let t=!1;if(ct(ae.name))if(e){const e=ot(2);t=Vn(),rt(e)}else t=Vn();if(!t)if(e){const e=ot(2);_o(!0),rt(e)}else _o(!0)}():_e?function(){if(Ee(ie._type)){const e=ot(1);tt(),ct(ae.braceL)?(Wo(),Vo()):Js(),rt(e)}else if(Ee(ie._opaque)){const e=ot(1);tt(),Ys(!1),rt(e)}else if(Ee(ie._interface)){const e=ot(1);tt(),Gs(),rt(e)}else _o(!0)}():_o(!0):(Wo(),Vo()),Te.tokens[e].rhsEndIndex=Te.tokens.length)}function Ho(){it(ae.comma)&&Wo()}function Vo(){Se(ie._from)&&(vs(),Qo()),Pe()}function Ko(){Be(ae.star),Ee(ie._as)?(tt(),Te.tokens[Te.tokens.length-1].type=ae._as,$s(),Ho(),Vo()):Vo()}function Wo(){let e=!0;for(Be(ae.braceL);!it(ae.braceR)&&!Te.error;){if(e)e=!1;else if(Be(ae.comma),it(ae.braceR))break;zo()}}function zo(){ye?function(){if($s(),ct(ae.comma)||ct(ae.braceR))Te.tokens[Te.tokens.length-1].identifierRole=We.ExportAccess;else{if($s(),ct(ae.comma)||ct(ae.braceR))return Te.tokens[Te.tokens.length-1].identifierRole=We.ExportAccess,Te.tokens[Te.tokens.length-2].isType=!0,void(Te.tokens[Te.tokens.length-1].isType=!0);$s(),ct(ae.comma)||ct(ae.braceR)?Te.tokens[Te.tokens.length-3].identifierRole=We.ExportAccess:($s(),Te.tokens[Te.tokens.length-3].identifierRole=We.ExportAccess,Te.tokens[Te.tokens.length-4].isType=!0,Te.tokens[Te.tokens.length-3].isType=!0,Te.tokens[Te.tokens.length-2].isType=!0,Te.tokens[Te.tokens.length-1].isType=!0)}}():($s(),Te.tokens[Te.tokens.length-1].identifierRole=We.ExportAccess,Se(ie._as)&&$s())}function Go(){Ee(ie._module)&&function(){const e=Te.snapshot();return je(ie._module),Se(ie._from)?Ee(ie._from)?(Te.restoreFromSnapshot(e),!0):(Te.restoreFromSnapshot(e),!1):ct(ae.comma)?(Te.restoreFromSnapshot(e),!1):(Te.restoreFromSnapshot(e),!0)}()&&tt()}function Xo(){if(ye&&ct(ae.name)&<()===ae.eq)Hn();else{if(ye&&Ee(ie._type)){const e=ht();if(e.type===ae.name&&e.contextualKeyword!==ie._from){if(je(ie._type),lt()===ae.eq)return void Hn()}else e.type!==ae.star&&e.type!==ae.braceL||je(ie._type)}ct(ae.string)||(Go(),function(){_e&&go();let e=!0;if(ct(ae.name)&&(Jo(),!it(ae.comma)))return;if(ct(ae.star))return tt(),je(ie._as),void Jo();Be(ae.braceL);for(;!it(ae.braceR)&&!Te.error;){if(e)e=!1;else if(it(ae.colon)&&Me("ES2015 named imports do not destructure. Use another statement for destructuring after the import."),Be(ae.comma),it(ae.braceR))break;Yo()}}(),je(ie._from)),vs(),Qo(),Pe()}}function Jo(){Qt()}function Yo(){ye?function(){if($s(),ct(ae.comma)||ct(ae.braceR))Te.tokens[Te.tokens.length-1].identifierRole=We.ImportDeclaration;else{if($s(),ct(ae.comma)||ct(ae.braceR))return Te.tokens[Te.tokens.length-1].identifierRole=We.ImportDeclaration,Te.tokens[Te.tokens.length-2].isType=!0,void(Te.tokens[Te.tokens.length-1].isType=!0);if($s(),ct(ae.comma)||ct(ae.braceR))return Te.tokens[Te.tokens.length-3].identifierRole=We.ImportAccess,void(Te.tokens[Te.tokens.length-1].identifierRole=We.ImportDeclaration);$s(),Te.tokens[Te.tokens.length-3].identifierRole=We.ImportAccess,Te.tokens[Te.tokens.length-1].identifierRole=We.ImportDeclaration,Te.tokens[Te.tokens.length-4].isType=!0,Te.tokens[Te.tokens.length-3].isType=!0,Te.tokens[Te.tokens.length-2].isType=!0,Te.tokens[Te.tokens.length-1].isType=!0}}():_e?function(){const e=Te.contextualKeyword===ie._type||Te.type===ae._typeof;e?tt():$s(),Ee(ie._as)&&!Ne(ie._as)?($s(),(!e||ct(ae.name)||Te.type&ae.IS_KEYWORD)&&$s()):(e&&(ct(ae.name)||Te.type&ae.IS_KEYWORD)&&$s(),Se(ie._as)&&$s())}():(Qt(),Ee(ie._as)&&(Te.tokens[Te.tokens.length-1].identifierRole=We.ImportAccess,tt(),Qt()))}function Qo(){(ct(ae._with)||Ee(ie._assert)&&!Le())&&(tt(),js(!1,!1))}function Zo(){return 0===Te.pos&&be.charCodeAt(0)===ce.numberSign&&be.charCodeAt(1)===ce.exclamationMark&>(2),mt(),function(){if(Ao(ae.eof),Te.scopes.push(new me(0,Te.tokens.length,!0)),0!==Te.scopeDepth)throw new Error(`Invalid scope depth at end of file: ${Te.scopeDepth}`);return new er(Te.tokens,Te.scopes)}()}class er{constructor(e,t){this.tokens=e,this.scopes=t}}class tr{__init(){this.resultCode=""}__init2(){this.resultMappings=new Array(this.tokens.length)}__init3(){this.tokenIndex=0}constructor(e,t,n,s,o){this.code=e,this.tokens=t,this.isFlowEnabled=n,this.disableESTransforms=s,this.helperManager=o,tr.prototype.__init.call(this),tr.prototype.__init2.call(this),tr.prototype.__init3.call(this)}snapshot(){return{resultCode:this.resultCode,tokenIndex:this.tokenIndex}}restoreToSnapshot(e){this.resultCode=e.resultCode,this.tokenIndex=e.tokenIndex}dangerouslyGetAndRemoveCodeSinceSnapshot(e){const t=this.resultCode.slice(e.resultCode.length);return this.resultCode=e.resultCode,t}reset(){this.resultCode="",this.resultMappings=new Array(this.tokens.length),this.tokenIndex=0}matchesContextualAtIndex(e,t){return this.matches1AtIndex(e,ae.name)&&this.tokens[e].contextualKeyword===t}identifierNameAtIndex(e){return this.identifierNameForToken(this.tokens[e])}identifierNameAtRelativeIndex(e){return this.identifierNameForToken(this.tokenAtRelativeIndex(e))}identifierName(){return this.identifierNameForToken(this.currentToken())}identifierNameForToken(e){return this.code.slice(e.start,e.end)}rawCodeForToken(e){return this.code.slice(e.start,e.end)}stringValueAtIndex(e){return this.stringValueForToken(this.tokens[e])}stringValue(){return this.stringValueForToken(this.currentToken())}stringValueForToken(e){return this.code.slice(e.start+1,e.end-1)}matches1AtIndex(e,t){return this.tokens[e].type===t}matches2AtIndex(e,t,n){return this.tokens[e].type===t&&this.tokens[e+1].type===n}matches3AtIndex(e,t,n,s){return this.tokens[e].type===t&&this.tokens[e+1].type===n&&this.tokens[e+2].type===s}matches1(e){return this.tokens[this.tokenIndex].type===e}matches2(e,t){return this.tokens[this.tokenIndex].type===e&&this.tokens[this.tokenIndex+1].type===t}matches3(e,t,n){return this.tokens[this.tokenIndex].type===e&&this.tokens[this.tokenIndex+1].type===t&&this.tokens[this.tokenIndex+2].type===n}matches4(e,t,n,s){return this.tokens[this.tokenIndex].type===e&&this.tokens[this.tokenIndex+1].type===t&&this.tokens[this.tokenIndex+2].type===n&&this.tokens[this.tokenIndex+3].type===s}matches5(e,t,n,s,o){return this.tokens[this.tokenIndex].type===e&&this.tokens[this.tokenIndex+1].type===t&&this.tokens[this.tokenIndex+2].type===n&&this.tokens[this.tokenIndex+3].type===s&&this.tokens[this.tokenIndex+4].type===o}matchesContextual(e){return this.matchesContextualAtIndex(this.tokenIndex,e)}matchesContextIdAndLabel(e,t){return this.matches1(e)&&this.currentToken().contextId===t}previousWhitespaceAndComments(){let e=this.code.slice(this.tokenIndex>0?this.tokens[this.tokenIndex-1].end:0,this.tokenIndex<this.tokens.length?this.tokens[this.tokenIndex].start:this.code.length);return this.isFlowEnabled&&(e=e.replace(/@flow/g,"")),e}replaceToken(e){this.resultCode+=this.previousWhitespaceAndComments(),this.appendTokenPrefix(),this.resultMappings[this.tokenIndex]=this.resultCode.length,this.resultCode+=e,this.appendTokenSuffix(),this.tokenIndex++}replaceTokenTrimmingLeftWhitespace(e){this.resultCode+=this.previousWhitespaceAndComments().replace(/[^\r\n]/g,""),this.appendTokenPrefix(),this.resultMappings[this.tokenIndex]=this.resultCode.length,this.resultCode+=e,this.appendTokenSuffix(),this.tokenIndex++}removeInitialToken(){this.replaceToken("")}removeToken(){this.replaceTokenTrimmingLeftWhitespace("")}removeBalancedCode(){let e=0;for(;!this.isAtEnd();){if(this.matches1(ae.braceL))e++;else if(this.matches1(ae.braceR)){if(0===e)return;e--}this.removeToken()}}copyExpectedToken(e){if(this.tokens[this.tokenIndex].type!==e)throw new Error(`Expected token ${e}`);this.copyToken()}copyToken(){this.resultCode+=this.previousWhitespaceAndComments(),this.appendTokenPrefix(),this.resultMappings[this.tokenIndex]=this.resultCode.length,this.resultCode+=this.code.slice(this.tokens[this.tokenIndex].start,this.tokens[this.tokenIndex].end),this.appendTokenSuffix(),this.tokenIndex++}copyTokenWithPrefix(e){this.resultCode+=this.previousWhitespaceAndComments(),this.appendTokenPrefix(),this.resultCode+=e,this.resultMappings[this.tokenIndex]=this.resultCode.length,this.resultCode+=this.code.slice(this.tokens[this.tokenIndex].start,this.tokens[this.tokenIndex].end),this.appendTokenSuffix(),this.tokenIndex++}appendTokenPrefix(){const e=this.currentToken();if((e.numNullishCoalesceStarts||e.isOptionalChainStart)&&(e.isAsyncOperation=function(e){let t=e.currentIndex(),n=0;const s=e.currentToken();do{const o=e.tokens[t];if(o.isOptionalChainStart&&n++,o.isOptionalChainEnd&&n--,n+=o.numNullishCoalesceStarts,n-=o.numNullishCoalesceEnds,o.contextualKeyword===ie._await&&null==o.identifierRole&&o.scopeDepth===s.scopeDepth)return!0;t+=1}while(n>0&&t<e.tokens.length);return!1}(this)),!this.disableESTransforms){if(e.numNullishCoalesceStarts)for(let t=0;t<e.numNullishCoalesceStarts;t++)e.isAsyncOperation?(this.resultCode+="await ",this.resultCode+=this.helperManager.getHelperName("asyncNullishCoalesce")):this.resultCode+=this.helperManager.getHelperName("nullishCoalesce"),this.resultCode+="(";e.isOptionalChainStart&&(e.isAsyncOperation&&(this.resultCode+="await "),this.tokenIndex>0&&this.tokenAtRelativeIndex(-1).type===ae._delete?e.isAsyncOperation?this.resultCode+=this.helperManager.getHelperName("asyncOptionalChainDelete"):this.resultCode+=this.helperManager.getHelperName("optionalChainDelete"):e.isAsyncOperation?this.resultCode+=this.helperManager.getHelperName("asyncOptionalChain"):this.resultCode+=this.helperManager.getHelperName("optionalChain"),this.resultCode+="([")}}appendTokenSuffix(){const e=this.currentToken();if(e.isOptionalChainEnd&&!this.disableESTransforms&&(this.resultCode+="])"),e.numNullishCoalesceEnds&&!this.disableESTransforms)for(let t=0;t<e.numNullishCoalesceEnds;t++)this.resultCode+="))"}appendCode(e){this.resultCode+=e}currentToken(){return this.tokens[this.tokenIndex]}currentTokenCode(){const e=this.currentToken();return this.code.slice(e.start,e.end)}tokenAtRelativeIndex(e){return this.tokens[this.tokenIndex+e]}currentIndex(){return this.tokenIndex}nextToken(){if(this.tokenIndex===this.tokens.length)throw new Error("Unexpectedly reached end of input.");this.tokenIndex++}previousToken(){this.tokenIndex--}finish(){if(this.tokenIndex!==this.tokens.length)throw new Error("Tried to finish processing tokens before reaching the end.");return this.resultCode+=this.previousWhitespaceAndComments(),{code:this.resultCode,mappings:this.resultMappings}}isAtEnd(){return this.tokenIndex===this.tokens.length}}function nr(e,t,n,s){const o=t.snapshot(),r=function(e){const t=e.currentToken(),n=t.contextId;if(null==n)throw new Error("Expected context ID on class token.");const s=t.isExpression;if(null==s)throw new Error("Expected isExpression on class token.");let o=null,r=!1;e.nextToken(),e.matches1(ae.name)&&(o=e.identifierName());for(;!e.matchesContextIdAndLabel(ae.braceL,n);)e.matches1(ae._extends)&&!e.currentToken().isType&&(r=!0),e.nextToken();return{isExpression:s,className:o,hasSuperclass:r}}(t);let i=[];const a=[],c=[];let l=null;const u=[],h=[],p=t.currentToken().contextId;if(null==p)throw new Error("Expected non-null class context ID on class open-brace.");for(t.nextToken();!t.matchesContextIdAndLabel(ae.braceR,p);)if(t.matchesContextual(ie._constructor)&&!t.currentToken().isType)({constructorInitializerStatements:i,constructorInsertPos:l}=or(t));else if(t.matches1(ae.semi))s||h.push({start:t.currentIndex(),end:t.currentIndex()+1}),t.nextToken();else if(t.currentToken().isType)t.nextToken();else{const o=t.currentIndex();let r=!1,d=!1,f=!1;for(;rr(t.currentToken());)t.matches1(ae._static)&&(r=!0),t.matches1(ae.hash)&&(d=!0),(t.matches1(ae._declare)||t.matches1(ae._abstract))&&(f=!0),t.nextToken();if(r&&t.matches1(ae.braceL)){sr(t,p);continue}if(d){sr(t,p);continue}if(t.matchesContextual(ie._constructor)&&!t.currentToken().isType){({constructorInitializerStatements:i,constructorInsertPos:l}=or(t));continue}const m=t.currentIndex();if(ir(t),t.matches1(ae.lessThan)||t.matches1(ae.parenL)){sr(t,p);continue}for(;t.currentToken().isType;)t.nextToken();if(t.matches1(ae.eq)){const s=t.currentIndex(),o=t.currentToken().rhsEndIndex;if(null==o)throw new Error("Expected rhsEndIndex on class field assignment.");for(t.nextToken();t.currentIndex()<o;)e.processToken();let i;r?(i=n.claimFreeName("__initStatic"),c.push(i)):(i=n.claimFreeName("__init"),a.push(i)),u.push({initializerName:i,equalsIndex:s,start:m,end:t.currentIndex()})}else s&&!f||h.push({start:o,end:t.currentIndex()})}return t.restoreToSnapshot(o),s?{headerInfo:r,constructorInitializerStatements:i,instanceInitializerNames:[],staticInitializerNames:[],constructorInsertPos:l,fields:[],rangesToRemove:h}:{headerInfo:r,constructorInitializerStatements:i,instanceInitializerNames:a,staticInitializerNames:c,constructorInsertPos:l,fields:u,rangesToRemove:h}}function sr(e,t){for(e.nextToken();e.currentToken().contextId!==t;)e.nextToken();for(;rr(e.tokenAtRelativeIndex(-1));)e.previousToken()}function or(e){const t=[];e.nextToken();const n=e.currentToken().contextId;if(null==n)throw new Error("Expected context ID on open-paren starting constructor params.");for(;!e.matchesContextIdAndLabel(ae.parenR,n);)if(e.currentToken().contextId===n){if(e.nextToken(),rr(e.currentToken())){for(e.nextToken();rr(e.currentToken());)e.nextToken();const n=e.currentToken();if(n.type!==ae.name)throw new Error("Expected identifier after access modifiers in constructor arg.");const s=e.identifierNameForToken(n);t.push(`this.${s} = ${s}`)}}else e.nextToken();for(e.nextToken();e.currentToken().isType;)e.nextToken();let s=e.currentIndex(),o=!1;for(;!e.matchesContextIdAndLabel(ae.braceR,n);){if(!o&&e.matches2(ae._super,ae.parenL)){e.nextToken();const t=e.currentToken().contextId;if(null==t)throw new Error("Expected a context ID on the super call");for(;!e.matchesContextIdAndLabel(ae.parenR,t);)e.nextToken();s=e.currentIndex(),o=!0}e.nextToken()}return e.nextToken(),{constructorInitializerStatements:t,constructorInsertPos:s}}function rr(e){return[ae._async,ae._get,ae._set,ae.plus,ae.minus,ae._readonly,ae._static,ae._public,ae._private,ae._protected,ae._override,ae._abstract,ae.star,ae._declare,ae.hash].includes(e.type)}function ir(e){if(e.matches1(ae.bracketL)){const t=e.currentToken().contextId;if(null==t)throw new Error("Expected class context ID on computed name open bracket.");for(;!e.matchesContextIdAndLabel(ae.bracketR,t);)e.nextToken();e.nextToken()}else e.nextToken()}function ar(e){if(e.removeInitialToken(),e.removeToken(),e.removeToken(),e.removeToken(),e.matches1(ae.parenL))e.removeToken(),e.removeToken(),e.removeToken();else for(;e.matches1(ae.dot);)e.removeToken(),e.removeToken()}const cr={typeDeclarations:new Set,valueDeclarations:new Set};function lr(e){const t=new Set,n=new Set;for(let s=0;s<e.tokens.length;s++){const o=e.tokens[s];o.type===ae.name&&Je(o)&&(o.isType?t.add(e.identifierNameForToken(o)):n.add(e.identifierNameForToken(o)))}return{typeDeclarations:t,valueDeclarations:n}}function ur(e){let t=e.currentIndex();for(;!e.matches1AtIndex(t,ae.braceR);)t++;return e.matchesContextualAtIndex(t+1,ie._from)&&e.matches1AtIndex(t+2,ae.string)}function hr(e){(e.matches2(ae._with,ae.braceL)||e.matches2(ae.name,ae.braceL)&&e.matchesContextual(ie._assert))&&(e.removeToken(),e.removeToken(),e.removeBalancedCode(),e.removeToken())}function pr(e,t,n,s){if(!e||t)return!1;const o=n.currentToken();if(null==o.rhsEndIndex)throw new Error("Expected non-null rhsEndIndex on export token.");const r=o.rhsEndIndex-n.currentIndex();if(3!==r&&(4!==r||!n.matches1AtIndex(o.rhsEndIndex-1,ae.semi)))return!1;const i=n.tokenAtRelativeIndex(2);if(i.type!==ae.name)return!1;const a=n.identifierNameForToken(i);return s.typeDeclarations.has(a)&&!s.valueDeclarations.has(a)}class dr extends jt{__init(){this.hadExport=!1}__init2(){this.hadNamedExport=!1}__init3(){this.hadDefaultExport=!1}constructor(e,t,n,s,o,r,i,a,c,l,u,h){super(),this.rootTransformer=e,this.tokens=t,this.importProcessor=n,this.nameManager=s,this.helperManager=o,this.reactHotLoaderTransformer=r,this.enableLegacyBabel5ModuleInterop=i,this.enableLegacyTypeScriptModuleInterop=a,this.isTypeScriptTransformEnabled=c,this.isFlowTransformEnabled=l,this.preserveDynamicImport=u,this.keepUnusedImports=h,dr.prototype.__init.call(this),dr.prototype.__init2.call(this),dr.prototype.__init3.call(this),this.declarationInfo=c?lr(t):cr}getPrefixCode(){let e="";return this.hadExport&&(e+='Object.defineProperty(exports, "__esModule", {value: true});'),e}getSuffixCode(){return this.enableLegacyBabel5ModuleInterop&&this.hadDefaultExport&&!this.hadNamedExport?"\nmodule.exports = exports.default;\n":""}process(){return this.tokens.matches3(ae._import,ae.name,ae.eq)?this.processImportEquals():this.tokens.matches1(ae._import)?(this.processImport(),!0):this.tokens.matches2(ae._export,ae.eq)?(this.tokens.replaceToken("module.exports"),!0):this.tokens.matches1(ae._export)&&!this.tokens.currentToken().isType?(this.hadExport=!0,this.processExport()):!(!this.tokens.matches2(ae.name,ae.postIncDec)||!this.processPostIncDec())||(this.tokens.matches1(ae.name)||this.tokens.matches1(ae.jsxName)?this.processIdentifier():this.tokens.matches1(ae.eq)?this.processAssignment():this.tokens.matches1(ae.assign)?this.processComplexAssignment():!!this.tokens.matches1(ae.preIncDec)&&this.processPreIncDec())}processImportEquals(){const e=this.tokens.identifierNameAtIndex(this.tokens.currentIndex()+1);return this.importProcessor.shouldAutomaticallyElideImportedName(e)?ar(this.tokens):this.tokens.replaceToken("const"),!0}processImport(){if(this.tokens.matches2(ae._import,ae.parenL)){if(this.preserveDynamicImport)return void this.tokens.copyToken();const e=this.enableLegacyTypeScriptModuleInterop?"":`${this.helperManager.getHelperName("interopRequireWildcard")}(`;this.tokens.replaceToken(`Promise.resolve().then(() => ${e}require`);const t=this.tokens.currentToken().contextId;if(null==t)throw new Error("Expected context ID on dynamic import invocation.");for(this.tokens.copyToken();!this.tokens.matchesContextIdAndLabel(ae.parenR,t);)this.rootTransformer.processToken();return void this.tokens.replaceToken(e?")))":"))")}if(this.removeImportAndDetectIfShouldElide())this.tokens.removeToken();else{const e=this.tokens.stringValue();this.tokens.replaceTokenTrimmingLeftWhitespace(this.importProcessor.claimImportCode(e)),this.tokens.appendCode(this.importProcessor.claimImportCode(e))}hr(this.tokens),this.tokens.matches1(ae.semi)&&this.tokens.removeToken()}removeImportAndDetectIfShouldElide(){if(this.tokens.removeInitialToken(),this.tokens.matchesContextual(ie._type)&&!this.tokens.matches1AtIndex(this.tokens.currentIndex()+1,ae.comma)&&!this.tokens.matchesContextualAtIndex(this.tokens.currentIndex()+1,ie._from))return this.removeRemainingImport(),!0;if(this.tokens.matches1(ae.name)||this.tokens.matches1(ae.star))return this.removeRemainingImport(),!1;if(this.tokens.matches1(ae.string))return!1;let e=!1,t=!1;for(;!this.tokens.matches1(ae.string);)(!e&&this.tokens.matches1(ae.braceL)||this.tokens.matches1(ae.comma))&&(this.tokens.removeToken(),this.tokens.matches1(ae.braceR)||(t=!0),(this.tokens.matches2(ae.name,ae.comma)||this.tokens.matches2(ae.name,ae.braceR)||this.tokens.matches4(ae.name,ae.name,ae.name,ae.comma)||this.tokens.matches4(ae.name,ae.name,ae.name,ae.braceR))&&(e=!0)),this.tokens.removeToken();return!this.keepUnusedImports&&(this.isTypeScriptTransformEnabled?!e:!!this.isFlowTransformEnabled&&(t&&!e))}removeRemainingImport(){for(;!this.tokens.matches1(ae.string);)this.tokens.removeToken()}processIdentifier(){const e=this.tokens.currentToken();if(e.shadowsGlobal)return!1;if(e.identifierRole===We.ObjectShorthand)return this.processObjectShorthand();if(e.identifierRole!==We.Access)return!1;const t=this.importProcessor.getIdentifierReplacement(this.tokens.identifierNameForToken(e));if(!t)return!1;let n=this.tokens.currentIndex()+1;for(;n<this.tokens.tokens.length&&this.tokens.tokens[n].type===ae.parenR;)n++;return this.tokens.tokens[n].type===ae.parenL?this.tokens.tokenAtRelativeIndex(1).type===ae.parenL&&this.tokens.tokenAtRelativeIndex(-1).type!==ae._new?(this.tokens.replaceToken(`${t}.call(void 0, `),this.tokens.removeToken(),this.rootTransformer.processBalancedCode(),this.tokens.copyExpectedToken(ae.parenR)):this.tokens.replaceToken(`(0, ${t})`):this.tokens.replaceToken(t),!0}processObjectShorthand(){const e=this.tokens.identifierName(),t=this.importProcessor.getIdentifierReplacement(e);return!!t&&(this.tokens.replaceToken(`${e}: ${t}`),!0)}processExport(){if(this.tokens.matches2(ae._export,ae._enum)||this.tokens.matches3(ae._export,ae._const,ae._enum))return this.hadNamedExport=!0,!1;if(this.tokens.matches2(ae._export,ae._default))return this.tokens.matches3(ae._export,ae._default,ae._enum)?(this.hadDefaultExport=!0,!1):(this.processExportDefault(),!0);if(this.tokens.matches2(ae._export,ae.braceL))return this.processExportBindings(),!0;if(this.tokens.matches2(ae._export,ae.name)&&this.tokens.matchesContextualAtIndex(this.tokens.currentIndex()+1,ie._type)){if(this.tokens.removeInitialToken(),this.tokens.removeToken(),this.tokens.matches1(ae.braceL)){for(;!this.tokens.matches1(ae.braceR);)this.tokens.removeToken();this.tokens.removeToken()}else this.tokens.removeToken(),this.tokens.matches1(ae._as)&&(this.tokens.removeToken(),this.tokens.removeToken());return this.tokens.matchesContextual(ie._from)&&this.tokens.matches1AtIndex(this.tokens.currentIndex()+1,ae.string)&&(this.tokens.removeToken(),this.tokens.removeToken(),hr(this.tokens)),!0}if(this.hadNamedExport=!0,this.tokens.matches2(ae._export,ae._var)||this.tokens.matches2(ae._export,ae._let)||this.tokens.matches2(ae._export,ae._const))return this.processExportVar(),!0;if(this.tokens.matches2(ae._export,ae._function)||this.tokens.matches3(ae._export,ae.name,ae._function))return this.processExportFunction(),!0;if(this.tokens.matches2(ae._export,ae._class)||this.tokens.matches3(ae._export,ae._abstract,ae._class)||this.tokens.matches2(ae._export,ae.at))return this.processExportClass(),!0;if(this.tokens.matches2(ae._export,ae.star))return this.processExportStar(),!0;throw new Error("Unrecognized export syntax.")}processAssignment(){const e=this.tokens.currentIndex(),t=this.tokens.tokens[e-1];if(t.isType||t.type!==ae.name)return!1;if(t.shadowsGlobal)return!1;if(e>=2&&this.tokens.matches1AtIndex(e-2,ae.dot))return!1;if(e>=2&&[ae._var,ae._let,ae._const].includes(this.tokens.tokens[e-2].type))return!1;const n=this.importProcessor.resolveExportBinding(this.tokens.identifierNameForToken(t));return!!n&&(this.tokens.copyToken(),this.tokens.appendCode(` ${n} =`),!0)}processComplexAssignment(){const e=this.tokens.currentIndex(),t=this.tokens.tokens[e-1];if(t.type!==ae.name)return!1;if(t.shadowsGlobal)return!1;if(e>=2&&this.tokens.matches1AtIndex(e-2,ae.dot))return!1;const n=this.importProcessor.resolveExportBinding(this.tokens.identifierNameForToken(t));return!!n&&(this.tokens.appendCode(` = ${n}`),this.tokens.copyToken(),!0)}processPreIncDec(){const e=this.tokens.currentIndex(),t=this.tokens.tokens[e+1];if(t.type!==ae.name)return!1;if(t.shadowsGlobal)return!1;if(e+2<this.tokens.tokens.length&&(this.tokens.matches1AtIndex(e+2,ae.dot)||this.tokens.matches1AtIndex(e+2,ae.bracketL)||this.tokens.matches1AtIndex(e+2,ae.parenL)))return!1;const n=this.tokens.identifierNameForToken(t),s=this.importProcessor.resolveExportBinding(n);return!!s&&(this.tokens.appendCode(`${s} = `),this.tokens.copyToken(),!0)}processPostIncDec(){const e=this.tokens.currentIndex(),t=this.tokens.tokens[e],n=this.tokens.tokens[e+1];if(t.type!==ae.name)return!1;if(t.shadowsGlobal)return!1;if(e>=1&&this.tokens.matches1AtIndex(e-1,ae.dot))return!1;const s=this.tokens.identifierNameForToken(t),o=this.importProcessor.resolveExportBinding(s);if(!o)return!1;const r=this.tokens.rawCodeForToken(n),i=this.importProcessor.getIdentifierReplacement(s)||s;if("++"===r)this.tokens.replaceToken(`(${i} = ${o} = ${i} + 1, ${i} - 1)`);else{if("--"!==r)throw new Error(`Unexpected operator: ${r}`);this.tokens.replaceToken(`(${i} = ${o} = ${i} - 1, ${i} + 1)`)}return this.tokens.removeToken(),!0}processExportDefault(){let e=!0;if(this.tokens.matches4(ae._export,ae._default,ae._function,ae.name)||this.tokens.matches5(ae._export,ae._default,ae.name,ae._function,ae.name)&&this.tokens.matchesContextualAtIndex(this.tokens.currentIndex()+2,ie._async)){this.tokens.removeInitialToken(),this.tokens.removeToken();const e=this.processNamedFunction();this.tokens.appendCode(` exports.default = ${e};`)}else if(this.tokens.matches4(ae._export,ae._default,ae._class,ae.name)||this.tokens.matches5(ae._export,ae._default,ae._abstract,ae._class,ae.name)||this.tokens.matches3(ae._export,ae._default,ae.at)){this.tokens.removeInitialToken(),this.tokens.removeToken(),this.copyDecorators(),this.tokens.matches1(ae._abstract)&&this.tokens.removeToken();const e=this.rootTransformer.processNamedClass();this.tokens.appendCode(` exports.default = ${e};`)}else if(pr(this.isTypeScriptTransformEnabled,this.keepUnusedImports,this.tokens,this.declarationInfo))e=!1,this.tokens.removeInitialToken(),this.tokens.removeToken(),this.tokens.removeToken();else if(this.reactHotLoaderTransformer){const e=this.nameManager.claimFreeName("_default");this.tokens.replaceToken(`let ${e}; exports.`),this.tokens.copyToken(),this.tokens.appendCode(` = ${e} =`),this.reactHotLoaderTransformer.setExtractedDefaultExportName(e)}else this.tokens.replaceToken("exports."),this.tokens.copyToken(),this.tokens.appendCode(" =");e&&(this.hadDefaultExport=!0)}copyDecorators(){for(;this.tokens.matches1(ae.at);)if(this.tokens.copyToken(),this.tokens.matches1(ae.parenL))this.tokens.copyExpectedToken(ae.parenL),this.rootTransformer.processBalancedCode(),this.tokens.copyExpectedToken(ae.parenR);else{for(this.tokens.copyExpectedToken(ae.name);this.tokens.matches1(ae.dot);)this.tokens.copyExpectedToken(ae.dot),this.tokens.copyExpectedToken(ae.name);this.tokens.matches1(ae.parenL)&&(this.tokens.copyExpectedToken(ae.parenL),this.rootTransformer.processBalancedCode(),this.tokens.copyExpectedToken(ae.parenR))}}processExportVar(){this.isSimpleExportVar()?this.processSimpleExportVar():this.processComplexExportVar()}isSimpleExportVar(){let e=this.tokens.currentIndex();if(e++,e++,!this.tokens.matches1AtIndex(e,ae.name))return!1;for(e++;e<this.tokens.tokens.length&&this.tokens.tokens[e].isType;)e++;return!!this.tokens.matches1AtIndex(e,ae.eq)}processSimpleExportVar(){this.tokens.removeInitialToken(),this.tokens.copyToken();const e=this.tokens.identifierName();for(;!this.tokens.matches1(ae.eq);)this.rootTransformer.processToken();const t=this.tokens.currentToken().rhsEndIndex;if(null==t)throw new Error("Expected = token with an end index.");for(;this.tokens.currentIndex()<t;)this.rootTransformer.processToken();this.tokens.appendCode(`; exports.${e} = ${e}`)}processComplexExportVar(){this.tokens.removeInitialToken(),this.tokens.removeToken();const e=this.tokens.matches1(ae.braceL);e&&this.tokens.appendCode("(");let t=0;for(;;)if(this.tokens.matches1(ae.braceL)||this.tokens.matches1(ae.dollarBraceL)||this.tokens.matches1(ae.bracketL))t++,this.tokens.copyToken();else if(this.tokens.matches1(ae.braceR)||this.tokens.matches1(ae.bracketR))t--,this.tokens.copyToken();else{if(0===t&&!this.tokens.matches1(ae.name)&&!this.tokens.currentToken().isType)break;if(this.tokens.matches1(ae.eq)){const e=this.tokens.currentToken().rhsEndIndex;if(null==e)throw new Error("Expected = token with an end index.");for(;this.tokens.currentIndex()<e;)this.rootTransformer.processToken()}else{const e=this.tokens.currentToken();if(Ge(e)){const t=this.tokens.identifierName();let n=this.importProcessor.getIdentifierReplacement(t);if(null===n)throw new Error(`Expected a replacement for ${t} in \`export var\` syntax.`);Ze(e)&&(n=`${t}: ${n}`),this.tokens.replaceToken(n)}else this.rootTransformer.processToken()}}if(e){const e=this.tokens.currentToken().rhsEndIndex;if(null==e)throw new Error("Expected = token with an end index.");for(;this.tokens.currentIndex()<e;)this.rootTransformer.processToken();this.tokens.appendCode(")")}}processExportFunction(){this.tokens.replaceToken("");const e=this.processNamedFunction();this.tokens.appendCode(` exports.${e} = ${e};`)}processNamedFunction(){if(this.tokens.matches1(ae._function))this.tokens.copyToken();else if(this.tokens.matches2(ae.name,ae._function)){if(!this.tokens.matchesContextual(ie._async))throw new Error("Expected async keyword in function export.");this.tokens.copyToken(),this.tokens.copyToken()}if(this.tokens.matches1(ae.star)&&this.tokens.copyToken(),!this.tokens.matches1(ae.name))throw new Error("Expected identifier for exported function name.");const e=this.tokens.identifierName();if(this.tokens.copyToken(),this.tokens.currentToken().isType)for(this.tokens.removeInitialToken();this.tokens.currentToken().isType;)this.tokens.removeToken();return this.tokens.copyExpectedToken(ae.parenL),this.rootTransformer.processBalancedCode(),this.tokens.copyExpectedToken(ae.parenR),this.rootTransformer.processPossibleTypeRange(),this.tokens.copyExpectedToken(ae.braceL),this.rootTransformer.processBalancedCode(),this.tokens.copyExpectedToken(ae.braceR),e}processExportClass(){this.tokens.removeInitialToken(),this.copyDecorators(),this.tokens.matches1(ae._abstract)&&this.tokens.removeToken();const e=this.rootTransformer.processNamedClass();this.tokens.appendCode(` exports.${e} = ${e};`)}processExportBindings(){this.tokens.removeInitialToken(),this.tokens.removeToken();const e=ur(this.tokens),t=[];for(;;){if(this.tokens.matches1(ae.braceR)){this.tokens.removeToken();break}const n=Ct(this.tokens);for(;this.tokens.currentIndex()<n.endIndex;)this.tokens.removeToken();if(!(n.isType||!e&&this.shouldElideExportedIdentifier(n.leftName))){const e=n.rightName;"default"===e?this.hadDefaultExport=!0:this.hadNamedExport=!0;const s=n.leftName,o=this.importProcessor.getIdentifierReplacement(s);t.push(`exports.${e} = ${o||s};`)}if(this.tokens.matches1(ae.braceR)){this.tokens.removeToken();break}if(this.tokens.matches2(ae.comma,ae.braceR)){this.tokens.removeToken(),this.tokens.removeToken();break}if(!this.tokens.matches1(ae.comma))throw new Error(`Unexpected token: ${JSON.stringify(this.tokens.currentToken())}`);this.tokens.removeToken()}if(this.tokens.matchesContextual(ie._from)){this.tokens.removeToken();const e=this.tokens.stringValue();this.tokens.replaceTokenTrimmingLeftWhitespace(this.importProcessor.claimImportCode(e)),hr(this.tokens)}else this.tokens.appendCode(t.join(" "));this.tokens.matches1(ae.semi)&&this.tokens.removeToken()}processExportStar(){for(this.tokens.removeInitialToken();!this.tokens.matches1(ae.string);)this.tokens.removeToken();const e=this.tokens.stringValue();this.tokens.replaceTokenTrimmingLeftWhitespace(this.importProcessor.claimImportCode(e)),hr(this.tokens),this.tokens.matches1(ae.semi)&&this.tokens.removeToken()}shouldElideExportedIdentifier(e){return this.isTypeScriptTransformEnabled&&!this.keepUnusedImports&&!this.declarationInfo.valueDeclarations.has(e)}}class fr extends jt{constructor(e,t,n,s,o,r,i,a){super(),this.tokens=e,this.nameManager=t,this.helperManager=n,this.reactHotLoaderTransformer=s,this.isTypeScriptTransformEnabled=o,this.isFlowTransformEnabled=r,this.keepUnusedImports=i,this.nonTypeIdentifiers=o&&!i?Bt(e,a):new Set,this.declarationInfo=o&&!i?lr(e):cr,this.injectCreateRequireForImportRequire=Boolean(a.injectCreateRequireForImportRequire)}process(){if(this.tokens.matches3(ae._import,ae.name,ae.eq))return this.processImportEquals();if(this.tokens.matches4(ae._import,ae.name,ae.name,ae.eq)&&this.tokens.matchesContextualAtIndex(this.tokens.currentIndex()+1,ie._type)){this.tokens.removeInitialToken();for(let e=0;e<7;e++)this.tokens.removeToken();return!0}if(this.tokens.matches2(ae._export,ae.eq))return this.tokens.replaceToken("module.exports"),!0;if(this.tokens.matches5(ae._export,ae._import,ae.name,ae.name,ae.eq)&&this.tokens.matchesContextualAtIndex(this.tokens.currentIndex()+2,ie._type)){this.tokens.removeInitialToken();for(let e=0;e<8;e++)this.tokens.removeToken();return!0}if(this.tokens.matches1(ae._import))return this.processImport();if(this.tokens.matches2(ae._export,ae._default))return this.processExportDefault();if(this.tokens.matches2(ae._export,ae.braceL))return this.processNamedExports();if(this.tokens.matches2(ae._export,ae.name)&&this.tokens.matchesContextualAtIndex(this.tokens.currentIndex()+1,ie._type)){if(this.tokens.removeInitialToken(),this.tokens.removeToken(),this.tokens.matches1(ae.braceL)){for(;!this.tokens.matches1(ae.braceR);)this.tokens.removeToken();this.tokens.removeToken()}else this.tokens.removeToken(),this.tokens.matches1(ae._as)&&(this.tokens.removeToken(),this.tokens.removeToken());return this.tokens.matchesContextual(ie._from)&&this.tokens.matches1AtIndex(this.tokens.currentIndex()+1,ae.string)&&(this.tokens.removeToken(),this.tokens.removeToken(),hr(this.tokens)),!0}return!1}processImportEquals(){const e=this.tokens.identifierNameAtIndex(this.tokens.currentIndex()+1);return this.shouldAutomaticallyElideImportedName(e)?ar(this.tokens):this.injectCreateRequireForImportRequire?(this.tokens.replaceToken("const"),this.tokens.copyToken(),this.tokens.copyToken(),this.tokens.replaceToken(this.helperManager.getHelperName("require"))):this.tokens.replaceToken("const"),!0}processImport(){if(this.tokens.matches2(ae._import,ae.parenL))return!1;const e=this.tokens.snapshot();if(this.removeImportTypeBindings()){for(this.tokens.restoreToSnapshot(e);!this.tokens.matches1(ae.string);)this.tokens.removeToken();this.tokens.removeToken(),hr(this.tokens),this.tokens.matches1(ae.semi)&&this.tokens.removeToken()}return!0}removeImportTypeBindings(){if(this.tokens.copyExpectedToken(ae._import),this.tokens.matchesContextual(ie._type)&&!this.tokens.matches1AtIndex(this.tokens.currentIndex()+1,ae.comma)&&!this.tokens.matchesContextualAtIndex(this.tokens.currentIndex()+1,ie._from))return!0;if(this.tokens.matches1(ae.string))return this.tokens.copyToken(),!1;this.tokens.matchesContextual(ie._module)&&this.tokens.matchesContextualAtIndex(this.tokens.currentIndex()+2,ie._from)&&this.tokens.copyToken();let e=!1,t=!1,n=!1;if(this.tokens.matches1(ae.name)&&(this.shouldAutomaticallyElideImportedName(this.tokens.identifierName())?(this.tokens.removeToken(),this.tokens.matches1(ae.comma)&&this.tokens.removeToken()):(e=!0,this.tokens.copyToken(),this.tokens.matches1(ae.comma)&&(n=!0,this.tokens.removeToken()))),this.tokens.matches1(ae.star))this.shouldAutomaticallyElideImportedName(this.tokens.identifierNameAtRelativeIndex(2))?(this.tokens.removeToken(),this.tokens.removeToken(),this.tokens.removeToken()):(n&&this.tokens.appendCode(","),e=!0,this.tokens.copyExpectedToken(ae.star),this.tokens.copyExpectedToken(ae.name),this.tokens.copyExpectedToken(ae.name));else if(this.tokens.matches1(ae.braceL)){for(n&&this.tokens.appendCode(","),this.tokens.copyToken();!this.tokens.matches1(ae.braceR);){t=!0;const n=Ct(this.tokens);if(n.isType||this.shouldAutomaticallyElideImportedName(n.rightName)){for(;this.tokens.currentIndex()<n.endIndex;)this.tokens.removeToken();this.tokens.matches1(ae.comma)&&this.tokens.removeToken()}else{for(e=!0;this.tokens.currentIndex()<n.endIndex;)this.tokens.copyToken();this.tokens.matches1(ae.comma)&&this.tokens.copyToken()}}this.tokens.copyExpectedToken(ae.braceR)}return!this.keepUnusedImports&&(this.isTypeScriptTransformEnabled?!e:!!this.isFlowTransformEnabled&&(t&&!e))}shouldAutomaticallyElideImportedName(e){return this.isTypeScriptTransformEnabled&&!this.keepUnusedImports&&!this.nonTypeIdentifiers.has(e)}processExportDefault(){if(pr(this.isTypeScriptTransformEnabled,this.keepUnusedImports,this.tokens,this.declarationInfo))return this.tokens.removeInitialToken(),this.tokens.removeToken(),this.tokens.removeToken(),!0;if(!(this.tokens.matches4(ae._export,ae._default,ae._function,ae.name)||this.tokens.matches5(ae._export,ae._default,ae.name,ae._function,ae.name)&&this.tokens.matchesContextualAtIndex(this.tokens.currentIndex()+2,ie._async)||this.tokens.matches4(ae._export,ae._default,ae._class,ae.name)||this.tokens.matches5(ae._export,ae._default,ae._abstract,ae._class,ae.name))&&this.reactHotLoaderTransformer){const e=this.nameManager.claimFreeName("_default");return this.tokens.replaceToken(`let ${e}; export`),this.tokens.copyToken(),this.tokens.appendCode(` ${e} =`),this.reactHotLoaderTransformer.setExtractedDefaultExportName(e),!0}return!1}processNamedExports(){if(!this.isTypeScriptTransformEnabled)return!1;this.tokens.copyExpectedToken(ae._export),this.tokens.copyExpectedToken(ae.braceL);const e=ur(this.tokens);let t=!1;for(;!this.tokens.matches1(ae.braceR);){const n=Ct(this.tokens);if(n.isType||!e&&this.shouldElideExportedName(n.leftName)){for(;this.tokens.currentIndex()<n.endIndex;)this.tokens.removeToken();this.tokens.matches1(ae.comma)&&this.tokens.removeToken()}else{for(t=!0;this.tokens.currentIndex()<n.endIndex;)this.tokens.copyToken();this.tokens.matches1(ae.comma)&&this.tokens.copyToken()}}return this.tokens.copyExpectedToken(ae.braceR),this.keepUnusedImports||!e||t||(this.tokens.removeToken(),this.tokens.removeToken(),hr(this.tokens)),!0}shouldElideExportedName(e){return this.isTypeScriptTransformEnabled&&!this.keepUnusedImports&&this.declarationInfo.typeDeclarations.has(e)&&!this.declarationInfo.valueDeclarations.has(e)}}class mr extends jt{constructor(e,t,n){super(),this.rootTransformer=e,this.tokens=t,this.isImportsTransformEnabled=n}process(){return!!(this.rootTransformer.processPossibleArrowParamEnd()||this.rootTransformer.processPossibleAsyncArrowWithTypeParams()||this.rootTransformer.processPossibleTypeRange())||(this.tokens.matches1(ae._enum)?(this.processEnum(),!0):this.tokens.matches2(ae._export,ae._enum)?(this.processNamedExportEnum(),!0):!!this.tokens.matches3(ae._export,ae._default,ae._enum)&&(this.processDefaultExportEnum(),!0))}processNamedExportEnum(){if(this.isImportsTransformEnabled){this.tokens.removeInitialToken();const e=this.tokens.identifierNameAtRelativeIndex(1);this.processEnum(),this.tokens.appendCode(` exports.${e} = ${e};`)}else this.tokens.copyToken(),this.processEnum()}processDefaultExportEnum(){this.tokens.removeInitialToken(),this.tokens.removeToken();const e=this.tokens.identifierNameAtRelativeIndex(1);this.processEnum(),this.isImportsTransformEnabled?this.tokens.appendCode(` exports.default = ${e};`):this.tokens.appendCode(` export default ${e};`)}processEnum(){this.tokens.replaceToken("const"),this.tokens.copyExpectedToken(ae.name);let e=!1;this.tokens.matchesContextual(ie._of)&&(this.tokens.removeToken(),e=this.tokens.matchesContextual(ie._symbol),this.tokens.removeToken());const t=this.tokens.matches3(ae.braceL,ae.name,ae.eq);this.tokens.appendCode(' = require("flow-enums-runtime")');const n=!e&&!t;for(this.tokens.replaceTokenTrimmingLeftWhitespace(n?".Mirrored([":"({");!this.tokens.matches1(ae.braceR);){if(this.tokens.matches1(ae.ellipsis)){this.tokens.removeToken();break}this.processEnumElement(e,t),this.tokens.matches1(ae.comma)&&this.tokens.copyToken()}this.tokens.replaceToken(n?"]);":"});")}processEnumElement(e,t){if(e){const e=this.tokens.identifierName();this.tokens.copyToken(),this.tokens.appendCode(`: Symbol("${e}")`)}else t?(this.tokens.copyToken(),this.tokens.replaceTokenTrimmingLeftWhitespace(":"),this.tokens.copyToken()):this.tokens.replaceToken(`"${this.tokens.identifierName()}"`)}}const kr="jest",gr=["mock","unmock","enableAutomock","disableAutomock"];class xr extends jt{__init(){this.hoistedFunctionNames=[]}constructor(e,t,n,s){super(),this.rootTransformer=e,this.tokens=t,this.nameManager=n,this.importProcessor=s,xr.prototype.__init.call(this)}process(){return!(0!==this.tokens.currentToken().scopeDepth||!this.tokens.matches4(ae.name,ae.dot,ae.name,ae.parenL)||this.tokens.identifierName()!==kr)&&(!function(e){let t,n=e[0],s=1;for(;s<e.length;){const o=e[s],r=e[s+1];if(s+=2,("optionalAccess"===o||"optionalCall"===o)&&null==n)return;"access"===o||"optionalAccess"===o?(t=n,n=r(n)):"call"!==o&&"optionalCall"!==o||(n=r(((...e)=>n.call(t,...e))),t=void 0)}return n}([this,"access",e=>e.importProcessor,"optionalAccess",e=>e.getGlobalNames,"call",e=>e(),"optionalAccess",e=>e.has,"call",e=>e(kr)])&&this.extractHoistedCalls())}getHoistedCode(){return this.hoistedFunctionNames.length>0?this.hoistedFunctionNames.map((e=>`${e}();`)).join(""):""}extractHoistedCalls(){this.tokens.removeToken();let e=!1;for(;this.tokens.matches3(ae.dot,ae.name,ae.parenL);){const t=this.tokens.identifierNameAtIndex(this.tokens.currentIndex()+1);if(gr.includes(t)){const t=this.nameManager.claimFreeName("__jestHoist");this.hoistedFunctionNames.push(t),this.tokens.replaceToken(`function ${t}(){${kr}.`),this.tokens.copyToken(),this.tokens.copyToken(),this.rootTransformer.processBalancedCode(),this.tokens.copyExpectedToken(ae.parenR),this.tokens.appendCode(";}"),e=!1}else e?this.tokens.copyToken():this.tokens.replaceToken(`${kr}.`),this.tokens.copyToken(),this.tokens.copyToken(),this.rootTransformer.processBalancedCode(),this.tokens.copyExpectedToken(ae.parenR),e=!0}return!0}}class yr extends jt{constructor(e){super(),this.tokens=e}process(){if(this.tokens.matches1(ae.num)){const e=this.tokens.currentTokenCode();if(e.includes("_"))return this.tokens.replaceToken(e.replace(/_/g,"")),!0}return!1}}class _r extends jt{constructor(e,t){super(),this.tokens=e,this.nameManager=t}process(){return!!this.tokens.matches2(ae._catch,ae.braceL)&&(this.tokens.copyToken(),this.tokens.appendCode(` (${this.nameManager.claimFreeName("e")})`),!0)}}class Tr extends jt{constructor(e,t){super(),this.tokens=e,this.nameManager=t}process(){if(this.tokens.matches1(ae.nullishCoalescing)){const e=this.tokens.currentToken();return this.tokens.tokens[e.nullishStartIndex].isAsyncOperation?this.tokens.replaceTokenTrimmingLeftWhitespace(", async () => ("):this.tokens.replaceTokenTrimmingLeftWhitespace(", () => ("),!0}if(this.tokens.matches1(ae._delete)){if(this.tokens.tokenAtRelativeIndex(1).isOptionalChainStart)return this.tokens.removeInitialToken(),!0}const e=this.tokens.currentToken().subscriptStartIndex;if(null!=e&&this.tokens.tokens[e].isOptionalChainStart&&this.tokens.tokenAtRelativeIndex(-1).type!==ae._super){const t=this.nameManager.claimFreeName("_");let n;if(n=e>0&&this.tokens.matches1AtIndex(e-1,ae._delete)&&this.isLastSubscriptInChain()?`${t} => delete ${t}`:`${t} => ${t}`,this.tokens.tokens[e].isAsyncOperation&&(n=`async ${n}`),this.tokens.matches2(ae.questionDot,ae.parenL)||this.tokens.matches2(ae.questionDot,ae.lessThan))this.justSkippedSuper()&&this.tokens.appendCode(".bind(this)"),this.tokens.replaceTokenTrimmingLeftWhitespace(`, 'optionalCall', ${n}`);else if(this.tokens.matches2(ae.questionDot,ae.bracketL))this.tokens.replaceTokenTrimmingLeftWhitespace(`, 'optionalAccess', ${n}`);else if(this.tokens.matches1(ae.questionDot))this.tokens.replaceTokenTrimmingLeftWhitespace(`, 'optionalAccess', ${n}.`);else if(this.tokens.matches1(ae.dot))this.tokens.replaceTokenTrimmingLeftWhitespace(`, 'access', ${n}.`);else if(this.tokens.matches1(ae.bracketL))this.tokens.replaceTokenTrimmingLeftWhitespace(`, 'access', ${n}[`);else{if(!this.tokens.matches1(ae.parenL))throw new Error("Unexpected subscript operator in optional chain.");this.justSkippedSuper()&&this.tokens.appendCode(".bind(this)"),this.tokens.replaceTokenTrimmingLeftWhitespace(`, 'call', ${n}(`)}return!0}return!1}isLastSubscriptInChain(){let e=0;for(let t=this.tokens.currentIndex()+1;;t++){if(t>=this.tokens.tokens.length)throw new Error("Reached the end of the code while finding the end of the access chain.");if(this.tokens.tokens[t].isOptionalChainStart?e++:this.tokens.tokens[t].isOptionalChainEnd&&e--,e<0)return!0;if(0===e&&null!=this.tokens.tokens[t].subscriptStartIndex)return!1}}justSkippedSuper(){let e=0,t=this.tokens.currentIndex()-1;for(;;){if(t<0)throw new Error("Reached the start of the code while finding the start of the access chain.");if(this.tokens.tokens[t].isOptionalChainStart?e--:this.tokens.tokens[t].isOptionalChainEnd&&e++,e<0)return!1;if(0===e&&null!=this.tokens.tokens[t].subscriptStartIndex)return this.tokens.tokens[t-1].type===ae._super;t--}}}class br extends jt{constructor(e,t,n,s){super(),this.rootTransformer=e,this.tokens=t,this.importProcessor=n,this.options=s}process(){const e=this.tokens.currentIndex();if("createReactClass"===this.tokens.identifierName()){const t=this.importProcessor&&this.importProcessor.getIdentifierReplacement("createReactClass");return t?this.tokens.replaceToken(`(0, ${t})`):this.tokens.copyToken(),this.tryProcessCreateClassCall(e),!0}if(this.tokens.matches3(ae.name,ae.dot,ae.name)&&"React"===this.tokens.identifierName()&&"createClass"===this.tokens.identifierNameAtIndex(this.tokens.currentIndex()+2)){const t=this.importProcessor&&this.importProcessor.getIdentifierReplacement("React")||"React";return t?(this.tokens.replaceToken(t),this.tokens.copyToken(),this.tokens.copyToken()):(this.tokens.copyToken(),this.tokens.copyToken(),this.tokens.copyToken()),this.tryProcessCreateClassCall(e),!0}return!1}tryProcessCreateClassCall(e){const t=this.findDisplayName(e);t&&this.classNeedsDisplayName()&&(this.tokens.copyExpectedToken(ae.parenL),this.tokens.copyExpectedToken(ae.braceL),this.tokens.appendCode(`displayName: '${t}',`),this.rootTransformer.processBalancedCode(),this.tokens.copyExpectedToken(ae.braceR),this.tokens.copyExpectedToken(ae.parenR))}findDisplayName(e){return e<2?null:this.tokens.matches2AtIndex(e-2,ae.name,ae.eq)||e>=2&&this.tokens.tokens[e-2].identifierRole===We.ObjectKey?this.tokens.identifierNameAtIndex(e-2):this.tokens.matches2AtIndex(e-2,ae._export,ae._default)?this.getDisplayNameFromFilename():null}getDisplayNameFromFilename(){const e=(this.options.filePath||"unknown").split("/"),t=e[e.length-1],n=t.lastIndexOf("."),s=-1===n?t:t.slice(0,n);return"index"===s&&e[e.length-2]?e[e.length-2]:s}classNeedsDisplayName(){let e=this.tokens.currentIndex();if(!this.tokens.matches2(ae.parenL,ae.braceL))return!1;const t=e+1,n=this.tokens.tokens[t].contextId;if(null==n)throw new Error("Expected non-null context ID on object open-brace.");for(;e<this.tokens.tokens.length;e++){const t=this.tokens.tokens[e];if(t.type===ae.braceR&&t.contextId===n){e++;break}if("displayName"===this.tokens.identifierNameAtIndex(e)&&this.tokens.tokens[e].identifierRole===We.ObjectKey&&t.contextId===n)return!1}if(e===this.tokens.tokens.length)throw new Error("Unexpected end of input when processing React class.");return this.tokens.matches1AtIndex(e,ae.parenR)||this.tokens.matches2AtIndex(e,ae.comma,ae.parenR)}}class vr extends jt{__init(){this.extractedDefaultExportName=null}constructor(e,t){super(),this.tokens=e,this.filePath=t,vr.prototype.__init.call(this)}setExtractedDefaultExportName(e){this.extractedDefaultExportName=e}getPrefixCode(){return"\n (function () {\n var enterModule = require('react-hot-loader').enterModule;\n enterModule && enterModule(module);\n })();".replace(/\s+/g," ").trim()}getSuffixCode(){const e=new Set;for(const n of this.tokens.tokens)!n.isType&&Je(n)&&n.identifierRole!==We.ImportDeclaration&&e.add(this.tokens.identifierNameForToken(n));const t=Array.from(e).map((e=>({variableName:e,uniqueLocalName:e})));return this.extractedDefaultExportName&&t.push({variableName:this.extractedDefaultExportName,uniqueLocalName:"default"}),`\n;(function () {\n var reactHotLoader = require('react-hot-loader').default;\n var leaveModule = require('react-hot-loader').leaveModule;\n if (!reactHotLoader) {\n return;\n }\n${t.map((({variableName:e,uniqueLocalName:t})=>` reactHotLoader.register(${e}, "${t}", ${JSON.stringify(this.filePath||"")});`)).join("\n")}\n leaveModule(module);\n})();`}process(){return!1}}const Ir=new Set(["break","case","catch","class","const","continue","debugger","default","delete","do","else","export","extends","finally","for","function","if","import","in","instanceof","new","return","super","switch","this","throw","try","typeof","var","void","while","with","yield","enum","implements","interface","let","package","private","protected","public","static","await","false","null","true"]);function wr(e){if(0===e.length)return!1;if(!Ve[e.charCodeAt(0)])return!1;for(let t=1;t<e.length;t++)if(!He[e.charCodeAt(t)])return!1;return!Ir.has(e)}class Cr extends jt{constructor(e,t,n){super(),this.rootTransformer=e,this.tokens=t,this.isImportsTransformEnabled=n}process(){return!!(this.rootTransformer.processPossibleArrowParamEnd()||this.rootTransformer.processPossibleAsyncArrowWithTypeParams()||this.rootTransformer.processPossibleTypeRange())||(this.tokens.matches1(ae._public)||this.tokens.matches1(ae._protected)||this.tokens.matches1(ae._private)||this.tokens.matches1(ae._abstract)||this.tokens.matches1(ae._readonly)||this.tokens.matches1(ae._override)||this.tokens.matches1(ae.nonNullAssertion)?(this.tokens.removeInitialToken(),!0):this.tokens.matches1(ae._enum)||this.tokens.matches2(ae._const,ae._enum)?(this.processEnum(),!0):!(!this.tokens.matches2(ae._export,ae._enum)&&!this.tokens.matches3(ae._export,ae._const,ae._enum))&&(this.processEnum(!0),!0))}processEnum(e=!1){for(this.tokens.removeInitialToken();this.tokens.matches1(ae._const)||this.tokens.matches1(ae._enum);)this.tokens.removeToken();const t=this.tokens.identifierName();this.tokens.removeToken(),e&&!this.isImportsTransformEnabled&&this.tokens.appendCode("export "),this.tokens.appendCode(`var ${t}; (function (${t})`),this.tokens.copyExpectedToken(ae.braceL),this.processEnumBody(t),this.tokens.copyExpectedToken(ae.braceR),e&&this.isImportsTransformEnabled?this.tokens.appendCode(`)(${t} || (exports.${t} = ${t} = {}));`):this.tokens.appendCode(`)(${t} || (${t} = {}));`)}processEnumBody(e){let t=null;for(;!this.tokens.matches1(ae.braceR);){const{nameStringCode:n,variableName:s}=this.extractEnumKeyInfo(this.tokens.currentToken());this.tokens.removeInitialToken(),this.tokens.matches3(ae.eq,ae.string,ae.comma)||this.tokens.matches3(ae.eq,ae.string,ae.braceR)?this.processStringLiteralEnumMember(e,n,s):this.tokens.matches1(ae.eq)?this.processExplicitValueEnumMember(e,n,s):this.processImplicitValueEnumMember(e,n,s,t),this.tokens.matches1(ae.comma)&&this.tokens.removeToken(),t=null!=s?s:`${e}[${n}]`}}extractEnumKeyInfo(e){if(e.type===ae.name){const t=this.tokens.identifierNameForToken(e);return{nameStringCode:`"${t}"`,variableName:wr(t)?t:null}}if(e.type===ae.string){const t=this.tokens.stringValueForToken(e);return{nameStringCode:this.tokens.code.slice(e.start,e.end),variableName:wr(t)?t:null}}throw new Error("Expected name or string at beginning of enum element.")}processStringLiteralEnumMember(e,t,n){null!=n?(this.tokens.appendCode(`const ${n}`),this.tokens.copyToken(),this.tokens.copyToken(),this.tokens.appendCode(`; ${e}[${t}] = ${n};`)):(this.tokens.appendCode(`${e}[${t}]`),this.tokens.copyToken(),this.tokens.copyToken(),this.tokens.appendCode(";"))}processExplicitValueEnumMember(e,t,n){const s=this.tokens.currentToken().rhsEndIndex;if(null==s)throw new Error("Expected rhsEndIndex on enum assign.");if(null!=n){for(this.tokens.appendCode(`const ${n}`),this.tokens.copyToken();this.tokens.currentIndex()<s;)this.rootTransformer.processToken();this.tokens.appendCode(`; ${e}[${e}[${t}] = ${n}] = ${t};`)}else{for(this.tokens.appendCode(`${e}[${e}[${t}]`),this.tokens.copyToken();this.tokens.currentIndex()<s;)this.rootTransformer.processToken();this.tokens.appendCode(`] = ${t};`)}}processImplicitValueEnumMember(e,t,n,s){let o=null!=s?`${s} + 1`:"0";null!=n&&(this.tokens.appendCode(`const ${n} = ${o}; `),o=n),this.tokens.appendCode(`${e}[${e}[${t}] = ${o}] = ${t};`)}}class Ar{__init(){this.transformers=[]}__init2(){this.generatedVariables=[]}constructor(e,t,n,s){Ar.prototype.__init.call(this),Ar.prototype.__init2.call(this),this.nameManager=e.nameManager,this.helperManager=e.helperManager;const{tokenProcessor:o,importProcessor:r}=e;this.tokens=o,this.isImportsTransformEnabled=t.includes("imports"),this.isReactHotLoaderTransformEnabled=t.includes("react-hot-loader"),this.disableESTransforms=Boolean(s.disableESTransforms),s.disableESTransforms||(this.transformers.push(new Tr(o,this.nameManager)),this.transformers.push(new yr(o)),this.transformers.push(new _r(o,this.nameManager))),t.includes("jsx")&&("preserve"!==s.jsxRuntime&&this.transformers.push(new Rt(this,o,r,this.nameManager,s)),this.transformers.push(new br(this,o,r,s)));let i=null;if(t.includes("react-hot-loader")){if(!s.filePath)throw new Error("filePath is required when using the react-hot-loader transform.");i=new vr(o,s.filePath),this.transformers.push(i)}if(t.includes("imports")){if(null===r)throw new Error("Expected non-null importProcessor with imports transform enabled.");this.transformers.push(new dr(this,o,r,this.nameManager,this.helperManager,i,n,Boolean(s.enableLegacyTypeScriptModuleInterop),t.includes("typescript"),t.includes("flow"),Boolean(s.preserveDynamicImport),Boolean(s.keepUnusedImports)))}else this.transformers.push(new fr(o,this.nameManager,this.helperManager,i,t.includes("typescript"),t.includes("flow"),Boolean(s.keepUnusedImports),s));t.includes("flow")&&this.transformers.push(new mr(this,o,t.includes("imports"))),t.includes("typescript")&&this.transformers.push(new Cr(this,o,t.includes("imports"))),t.includes("jest")&&this.transformers.push(new xr(this,o,this.nameManager,r))}transform(){this.tokens.reset(),this.processBalancedCode();let e=this.isImportsTransformEnabled?'"use strict";':"";for(const o of this.transformers)e+=o.getPrefixCode();e+=this.helperManager.emitHelpers(),e+=this.generatedVariables.map((e=>` var ${e};`)).join("");for(const o of this.transformers)e+=o.getHoistedCode();let t="";for(const o of this.transformers)t+=o.getSuffixCode();const n=this.tokens.finish();let{code:s}=n;if(s.startsWith("#!")){let o=s.indexOf("\n");return-1===o&&(o=s.length,s+="\n"),{code:s.slice(0,o+1)+e+s.slice(o+1)+t,mappings:this.shiftMappings(n.mappings,e.length)}}return{code:e+s+t,mappings:this.shiftMappings(n.mappings,e.length)}}processBalancedCode(){let e=0,t=0;for(;!this.tokens.isAtEnd();){if(this.tokens.matches1(ae.braceL)||this.tokens.matches1(ae.dollarBraceL))e++;else if(this.tokens.matches1(ae.braceR)){if(0===e)return;e--}if(this.tokens.matches1(ae.parenL))t++;else if(this.tokens.matches1(ae.parenR)){if(0===t)return;t--}this.processToken()}}processToken(){if(this.tokens.matches1(ae._class))this.processClass();else{for(const e of this.transformers){if(e.process())return}this.tokens.copyToken()}}processNamedClass(){if(!this.tokens.matches2(ae._class,ae.name))throw new Error("Expected identifier for exported class name.");const e=this.tokens.identifierNameAtIndex(this.tokens.currentIndex()+1);return this.processClass(),e}processClass(){const e=nr(this,this.tokens,this.nameManager,this.disableESTransforms),t=(e.headerInfo.isExpression||!e.headerInfo.className)&&e.staticInitializerNames.length+e.instanceInitializerNames.length>0;let n=e.headerInfo.className;t&&(n=this.nameManager.claimFreeName("_class"),this.generatedVariables.push(n),this.tokens.appendCode(` (${n} =`));const s=this.tokens.currentToken().contextId;if(null==s)throw new Error("Expected class to have a context ID.");for(this.tokens.copyExpectedToken(ae._class);!this.tokens.matchesContextIdAndLabel(ae.braceL,s);)this.processToken();this.processClassBody(e,n);const o=e.staticInitializerNames.map((e=>`${n}.${e}()`));t?this.tokens.appendCode(`, ${o.map((e=>`${e}, `)).join("")}${n})`):e.staticInitializerNames.length>0&&this.tokens.appendCode(` ${o.map((e=>`${e};`)).join(" ")}`)}processClassBody(e,t){const{headerInfo:n,constructorInsertPos:s,constructorInitializerStatements:o,fields:r,instanceInitializerNames:i,rangesToRemove:a}=e;let c=0,l=0;const u=this.tokens.currentToken().contextId;if(null==u)throw new Error("Expected non-null context ID on class.");this.tokens.copyExpectedToken(ae.braceL),this.isReactHotLoaderTransformEnabled&&this.tokens.appendCode("__reactstandin__regenerateByEval(key, code) {this[key] = eval(code);}");const h=o.length+i.length>0;if(null===s&&h){const e=this.makeConstructorInitCode(o,i,t);if(n.hasSuperclass){const t=this.nameManager.claimFreeName("args");this.tokens.appendCode(`constructor(...${t}) { super(...${t}); ${e}; }`)}else this.tokens.appendCode(`constructor() { ${e}; }`)}for(;!this.tokens.matchesContextIdAndLabel(ae.braceR,u);)if(c<r.length&&this.tokens.currentIndex()===r[c].start){let e=!1;for(this.tokens.matches1(ae.bracketL)?this.tokens.copyTokenWithPrefix(`${r[c].initializerName}() {this`):this.tokens.matches1(ae.string)||this.tokens.matches1(ae.num)?(this.tokens.copyTokenWithPrefix(`${r[c].initializerName}() {this[`),e=!0):this.tokens.copyTokenWithPrefix(`${r[c].initializerName}() {this.`);this.tokens.currentIndex()<r[c].end;)e&&this.tokens.currentIndex()===r[c].equalsIndex&&this.tokens.appendCode("]"),this.processToken();this.tokens.appendCode("}"),c++}else if(l<a.length&&this.tokens.currentIndex()>=a[l].start){for(this.tokens.currentIndex()<a[l].end&&this.tokens.removeInitialToken();this.tokens.currentIndex()<a[l].end;)this.tokens.removeToken();l++}else this.tokens.currentIndex()===s?(this.tokens.copyToken(),h&&this.tokens.appendCode(`;${this.makeConstructorInitCode(o,i,t)};`),this.processToken()):this.processToken();this.tokens.copyExpectedToken(ae.braceR)}makeConstructorInitCode(e,t,n){return[...e,...t.map((e=>`${n}.prototype.${e}.call(this)`))].join(";")}processPossibleArrowParamEnd(){if(this.tokens.matches2(ae.parenR,ae.colon)&&this.tokens.tokenAtRelativeIndex(1).isType){let e=this.tokens.currentIndex()+1;for(;this.tokens.tokens[e].isType;)e++;if(this.tokens.matches1AtIndex(e,ae.arrow)){for(this.tokens.removeInitialToken();this.tokens.currentIndex()<e;)this.tokens.removeToken();return this.tokens.replaceTokenTrimmingLeftWhitespace(") =>"),!0}}return!1}processPossibleAsyncArrowWithTypeParams(){if(!this.tokens.matchesContextual(ie._async)&&!this.tokens.matches1(ae._async))return!1;const e=this.tokens.tokenAtRelativeIndex(1);if(e.type!==ae.lessThan||!e.isType)return!1;let t=this.tokens.currentIndex()+1;for(;this.tokens.tokens[t].isType;)t++;if(this.tokens.matches1AtIndex(t,ae.parenL)){for(this.tokens.replaceToken("async ("),this.tokens.removeInitialToken();this.tokens.currentIndex()<t;)this.tokens.removeToken();return this.tokens.removeToken(),this.processBalancedCode(),this.processToken(),!0}return!1}processPossibleTypeRange(){if(this.tokens.currentToken().isType){for(this.tokens.removeInitialToken();this.tokens.currentToken().isType;)this.tokens.removeToken();return!0}return!1}shiftMappings(e,t){for(let n=0;n<e.length;n++){const s=e[n];void 0!==s&&(e[n]=s+t)}return e}}n(50089);function Er(e,t,n){t++,e.matches1AtIndex(t,ae.parenL)||(e.matches1AtIndex(t,ae.name)&&(n.add(e.identifierNameAtIndex(t)),t++,e.matches1AtIndex(t,ae.comma)&&t++),e.matches1AtIndex(t,ae.star)&&(t+=2,n.add(e.identifierNameAtIndex(t)),t++),e.matches1AtIndex(t,ae.braceL)&&function(e,t,n){for(;;){if(e.matches1AtIndex(t,ae.braceR))return;const s=Ct(e,t);if(t=s.endIndex,s.isType||n.add(s.rightName),e.matches2AtIndex(t,ae.comma,ae.braceR))return;if(e.matches1AtIndex(t,ae.braceR))return;if(!e.matches1AtIndex(t,ae.comma))throw new Error(`Unexpected token: ${JSON.stringify(e.tokens[t])}`);t++}}(e,++t,n))}function Nr(e,t){!function(e){Gt.strictCheck(e)}(t);try{const n=Sr(e,t),s=new Ar(n,t.transforms,Boolean(t.enableLegacyBabel5ModuleInterop),t).transform();let o={code:s.code};if(t.sourceMapOptions){if(!t.filePath)throw new Error("filePath must be specified when generating a source map.");o={...o,sourceMap:Ft(s,t.filePath,t.sourceMapOptions,e,n.tokenProcessor.tokens)}}return o}catch(n){throw t.filePath&&(n.message=`Error transforming ${t.filePath}: ${n.message}`),n}}function Sr(e,t){const n=t.transforms.includes("jsx"),s=t.transforms.includes("typescript"),o=t.transforms.includes("flow"),r=!0===t.disableESTransforms,i=function(e,t,n,s){if(s&&n)throw new Error("Cannot combine flow and typescript plugins.");Ae(e,t,n,s);const o=Zo();if(Te.error)throw we(Te.error);return o}(e,n,s,o),a=i.tokens,c=i.scopes,l=new Kt(e,a),u=new Ut(l),h=new tr(e,a,o,r,u),p=Boolean(t.enableLegacyTypeScriptModuleInterop);let d=null;return t.transforms.includes("imports")?(d=new Mt(l,h,p,t,t.transforms.includes("typescript"),Boolean(t.keepUnusedImports),u),d.preprocessTokens(),Ht(h,c,d.getGlobalNames()),t.transforms.includes("typescript")&&!t.keepUnusedImports&&d.pruneTypeOnlyImports()):t.transforms.includes("typescript")&&!t.keepUnusedImports&&Ht(h,c,function(e){const t=new Set;for(let n=0;n<e.tokens.length;n++)e.matches1AtIndex(n,ae._import)&&!e.matches3AtIndex(n,ae._import,ae.name,ae.eq)&&Er(e,n,t);return t}(h)),{tokenProcessor:h,scopes:c,nameManager:l,importProcessor:d,helperManager:u}}var jr=Object.defineProperty,Rr=Object.defineProperties,Lr=Object.getOwnPropertyDescriptors,Or=Object.getOwnPropertySymbols,Dr=Object.prototype.hasOwnProperty,Pr=Object.prototype.propertyIsEnumerable,Br=(e,t,n)=>t in e?jr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,Mr=(e,t)=>{for(var n in t||(t={}))Dr.call(t,n)&&Br(e,n,t[n]);if(Or)for(var n of Or(t))Pr.call(t,n)&&Br(e,n,t[n]);return e},qr=(e,t)=>Rr(e,Lr(t)),Fr=e=>{const{tabMode:t="indentation"}=e,n=(0,s.useRef)(null),[o,r]=(0,s.useState)(e.code||""),{theme:i}=e;return(0,s.useEffect)((()=>{r(e.code)}),[e.code]),function(e,t,n){function o(t){var n=e.current;if(n){var s=de(n);n=pe(n),s.position+=t.length-n.length,u.position=s,u.onChange(t,s)}}function r(t,n){var s=e.current;if(s){var o=window.getSelection().getRangeAt(0);o.deleteContents(),o.collapse();var r=n||0;(o=fe(s,n=(o=de(s)).position+(0>r?r:0),o.position+(0<r?r:0))).deleteContents(),t&&o.insertNode(document.createTextNode(t)),ue(fe(s,n+t.length))}}function i(t){var n=e.current;if(n){n.focus();var s=0;if("number"==typeof t)s=t;else{var o=pe(n).split("\n").slice(0,t.row);t.row&&(s+=o.join("\n").length+1),s+=t.column}ue(fe(n,s))}}function a(){var t=e.current;return{text:pe(t),position:t=de(t)}}function c(){u.observer.disconnect()}n||(n={});var l=(0,s.useState)([])[1],u=(0,s.useState)((function(){var e={observer:null,disconnected:!1,onChange:t,queue:[],history:[],historyAt:-1,position:null};return"undefined"!=typeof MutationObserver&&(e.observer=new MutationObserver((function(t){var n;(n=e.queue).push.apply(n,t)}))),e}))[0],h=(0,s.useMemo)((function(){return{update:o,insert:r,move:i,getState:a}}),[]);"object"!=typeof navigator||((0,s.useLayoutEffect)((function(){if(u.onChange=t,e.current&&!n.disabled){if(u.disconnected=!1,u.observer.observe(e.current,le),u.position){var s=u.position,o=s.position;ue(fe(e.current,o,o+s.extent))}return c}})),(0,s.useLayoutEffect)((function(){if(e.current&&!n.disabled){var t=e.current;if(u.position){t.focus();var s=u.position,o=s.position;ue(fe(t,o,o+s.extent))}var r=t.style.whiteSpace,i=t.contentEditable,a=!0;try{t.contentEditable="plaintext-only"}catch(_){t.contentEditable="true",a=!1}"pre"!==r&&(t.style.whiteSpace="pre-wrap"),n.indentation&&(t.style.tabSize=t.style.MozTabSize=""+n.indentation),s=""+" ".repeat(n.indentation||0);var c,p=new RegExp("^(?:"+s+")"),d=new RegExp("^(?:"+s+")*("+s+")$"),f=function(n){if(e.current&&u.position){var s=pe(t),o=de(t),r=(new Date).valueOf(),i=u.history[u.historyAt];!n&&500>r-c||i&&i[1]===s?c=r:(n=++u.historyAt,u.history[n]=[o,s],u.history.splice(n+1),500<n&&(u.historyAt--,u.history.shift()))}},m=function(){var e;if((e=u.queue).push.apply(e,u.observer.takeRecords()),e=de(t),u.queue.length){u.observer.disconnect(),u.disconnected=!0;var n,s,o=pe(t);for(u.position=e;n=u.queue.pop();){for(null!==n.oldValue&&(n.target.textContent=n.oldValue),s=n.removedNodes.length-1;0<=s;s--)n.target.insertBefore(n.removedNodes[s],n.nextSibling);for(s=n.addedNodes.length-1;0<=s;s--)n.addedNodes[s].parentNode&&n.target.removeChild(n.addedNodes[s])}u.onChange(o,e)}},k=function(e){if(!e.defaultPrevented&&e.target===t){if(u.disconnected)return e.preventDefault(),l([]);if(he(e))e.preventDefault(),e.shiftKey?(e=++u.historyAt,(e=u.history[e])||(u.historyAt=u.history.length-1)):(e=--u.historyAt,(e=u.history[e])||(u.historyAt=0)),e&&(u.observer.disconnect(),u.disconnected=!0,u.position=e[0],u.onChange(e[1],e[0]));else{if(f(),"Enter"===e.key){e.preventDefault();var s=de(t),o=/\S/g.exec(s.content);s="\n"+s.content.slice(0,o?o.index:s.content.length),h.insert(s)}else if(a&&!n.indentation||"Backspace"!==e.key){if(n.indentation&&"Tab"===e.key){e.preventDefault(),o=(s=de(t)).position-s.content.length;var r=pe(t);s=e.shiftKey?r.slice(0,o)+s.content.replace(p,"")+r.slice(o+s.content.length):r.slice(0,o)+(n.indentation?" ".repeat(n.indentation):"\t")+r.slice(o),h.update(s)}}else e.preventDefault(),window.getSelection().getRangeAt(0).collapsed?(s=de(t),s=d.exec(s.content),h.insert("",s?-s[1].length:-1)):h.insert("",0);e.repeat&&m()}}},g=function(e){e.defaultPrevented||e.isComposing||(he(e)||f(),m(),t.focus())},x=function(e){u.position=window.getSelection().rangeCount&&e.target===t?de(t):null},y=function(e){e.preventDefault(),f(!0),h.insert(e.clipboardData.getData("text/plain")),f(!0),m()};return document.addEventListener("selectstart",x),window.addEventListener("keydown",k),t.addEventListener("paste",y),t.addEventListener("keyup",g),function(){document.removeEventListener("selectstart",x),window.removeEventListener("keydown",k),t.removeEventListener("paste",y),t.removeEventListener("keyup",g),t.style.whiteSpace=r,t.contentEditable=i}}u.history.length=0,u.historyAt=-1}),[e.current,n.disabled,n.indentation]))}(n,(e=>r(e.slice(0,-1))),{disabled:e.disabled,indentation:"indentation"===t?2:void 0}),(0,s.useEffect)((()=>{e.onChange&&e.onChange(o)}),[o]),(0,m.jsx)("div",{className:e.className,style:e.style,children:(0,m.jsx)(P.f4,{code:o,theme:e.theme||P.Zj.nightOwl,language:e.language,children:({className:e,tokens:t,getLineProps:s,getTokenProps:o,style:r})=>(0,m.jsx)("pre",{className:e,style:Mr(Mr({margin:0,outline:"none",padding:10,fontFamily:"inherit"},i&&"object"==typeof i.plain?i.plain:{}),r),ref:n,spellCheck:"false",children:t.map(((e,t)=>(0,m.jsxs)("span",qr(Mr({},s({line:e})),{children:[e.filter((e=>!e.empty)).map(((e,t)=>(0,m.jsx)("span",Mr({},o({token:e})),`token-${t}`))),"\n"]}),`line-${t}`)))})})})},$r=(0,s.createContext)({}),Ur=["jsx","imports"];function Hr(e={}){const t=Array.isArray(e.transforms)?e.transforms.filter(Boolean):Ur;return e=>Nr(e,{transforms:t}).code}var Vr=(e,t)=>class extends s.Component{componentDidCatch(e){t(e)}render(){return"function"==typeof e?(0,m.jsx)(e,{}):s.isValidElement(e)?e:null}},Kr=(e,t)=>{const n=Object.keys(t),s=n.map((e=>t[e]));return new Function(...n,e)(...s)};var Wr='const _jsxFileName = "";',zr=e=>e.trim().replace(/;$/,""),Gr=e=>e.replace(Wr,"").trim(),Xr=e=>Wr+e,Jr=e=>`return (${e})`;var Yr=function({children:e,code:t="",language:n="tsx",theme:o,enableTypeScript:r=!0,disabled:i=!1,scope:a,transformCode:c,noInline:l=!1}){const[u,h]=(0,s.useState)({error:void 0,element:void 0});function p(e){return t=this,n=null,o=function*(){const t=e=>{h({error:e.toString(),element:void 0})};try{const o=c?c(e):e;try{const e=yield Promise.resolve(o),n=e=>h({error:void 0,element:e});if("string"!=typeof e)throw new Error("Code failed to transform");const i={code:e,scope:a,enableTypeScript:r};l?(h({error:void 0,element:null}),(({code:e="",scope:t={},enableTypeScript:n=!0},o,r)=>{if(!/render\s*\(/.test(e))return r(new SyntaxError("No-Inline evaluations must call `render`."));const i=["jsx","imports"];n&&i.splice(1,0,"typescript"),Kr(Hr({transforms:i})(e),qr(Mr({React:s},t),{render:e=>{void 0===e?r(new SyntaxError("`render` must be called with valid JSX.")):o(Vr(e,r))}}))})(i,n,t)):n((({code:e="",scope:t={},enableTypeScript:n=!0},o)=>{const r=["jsx"];n&&r.push("typescript");const i=function(...e){return e.reduce(((e,t)=>(...n)=>e(t(...n))))}(Xr,Hr({transforms:["imports"]}),Jr,Gr,zr,Hr({transforms:r}),zr)(e);return Vr(Kr(i,Mr({React:s},t)),o)})(i,t))}catch(n){return t(n)}}catch(o){return t(o),Promise.resolve()}},new Promise(((e,s)=>{var r=e=>{try{a(o.next(e))}catch(t){s(t)}},i=e=>{try{a(o.throw(e))}catch(t){s(t)}},a=t=>t.done?e(t.value):Promise.resolve(t.value).then(r,i);a((o=o.apply(t,n)).next())}));var t,n,o}const d=e=>h({error:e.toString()});return(0,s.useEffect)((()=>{p(t).catch(d)}),[t,a,l,c]),(0,m.jsx)($r.Provider,{value:qr(Mr({},u),{code:t,language:n,theme:o,disabled:i,onError:d,onChange:e=>{p(e).catch(d)}}),children:e})};function Qr(e){const{code:t,language:n,theme:o,disabled:r,onChange:i}=(0,s.useContext)($r);return(0,m.jsx)(Fr,Mr({theme:o,code:t,language:n,disabled:r,onChange:i},e))}function Zr(e){const{error:t}=(0,s.useContext)($r);return t?(0,m.jsx)("pre",qr(Mr({},e),{children:t})):null}var ei=function(e){var t=e,{Component:n="div"}=t,o=((e,t)=>{var n={};for(var s in e)Dr.call(e,s)&&t.indexOf(s)<0&&(n[s]=e[s]);if(null!=e&&Or)for(var s of Or(e))t.indexOf(s)<0&&Pr.call(e,s)&&(n[s]=e[s]);return n})(t,["Component"]);const{element:r}=(0,s.useContext)($r);return(0,m.jsx)(n,qr(Mr({},o),{children:r?(0,m.jsx)(r,{}):null}))};const ti=e=>`${e};`;function ni({code:e,children:t,...n}){const s=u(),o=n.metastring?.includes("noInline")??!1;return(0,m.jsx)(Yr,{noInline:o,theme:s,...n,code:e?.replace(/\n$/,""),transformCode:n.transformCode??ti,children:t})}const si={playgroundContainer:"playgroundContainer_XwyR"};function oi({children:e}){return(0,m.jsx)("div",{className:si.playgroundContainer,children:e})}var ri=n(12181),ii=n(67489);const ai={playgroundHeader:"playgroundHeader_EIHj"};function ci({children:e}){return(0,m.jsx)("div",{className:(0,a.A)(ai.playgroundHeader),children:e})}const li={playgroundPreview:"playgroundPreview_bYPY"};function ui(){return(0,m.jsx)("div",{children:"Loading..."})}function hi(){return(0,m.jsx)(H,{fallback:(0,m.jsx)(ui,{}),children:()=>(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(ii.A,{fallback:e=>(0,m.jsx)(ri.MN,{...e}),children:(0,m.jsx)(ei,{})}),(0,m.jsx)(Zr,{})]})})}function pi(){return(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(ci,{children:(0,m.jsx)(V.A,{id:"theme.Playground.result",description:"The result label of the live codeblocks",children:"Result"})}),(0,m.jsx)("div",{className:li.playgroundPreview,children:(0,m.jsx)(hi,{})})]})}const di={playgroundEditor:"playgroundEditor_L2Ll"};function fi(){const e=(0,i.A)();return(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(ci,{children:(0,m.jsx)(V.A,{id:"theme.Playground.liveEditor",description:"The live editor label of the live codeblocks",children:"Live Editor"})}),(0,m.jsx)(Qr,{className:di.playgroundEditor},String(e))]})}function mi(){const{playgroundPosition:e}=(0,l.p)().liveCodeBlock;return(0,m.jsx)(m.Fragment,{children:"top"===e?(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(pi,{}),(0,m.jsx)(fi,{})]}):(0,m.jsxs)(m.Fragment,{children:[(0,m.jsx)(fi,{}),(0,m.jsx)(pi,{})]})})}function ki({children:e,transformCode:t,...n}){return(0,m.jsx)(oi,{children:(0,m.jsx)(ni,{code:e,...n,children:(0,m.jsx)(mi,{})})})}const gi={React:s,...s};function xi(e){return(0,m.jsx)(ki,{scope:gi,...e})}function yi(e){return function(e){return!!e.live}(e)?(0,m.jsx)(xi,{...e}):(0,m.jsx)(re,{...e})}function _i(e){return(0,m.jsx)("code",{...e})}var Ti=n(28774),bi=n(73535);var vi=n(63427),Ii=n(41422);const wi={details:"details_lb9f",isBrowser:"isBrowser_bmU9",collapsibleContent:"collapsibleContent_i85q"};function Ci(e){return!!e&&("SUMMARY"===e.tagName||Ci(e.parentElement))}function Ai(e,t){return!!e&&(e===t||Ai(e.parentElement,t))}function Ei({summary:e,children:t,...n}){(0,vi.A)().collectAnchor(n.id);const o=(0,i.A)(),r=(0,s.useRef)(null),{collapsed:c,setCollapsed:l}=(0,Ii.u)({initialState:!n.open}),[u,h]=(0,s.useState)(n.open),p=s.isValidElement(e)?e:(0,m.jsx)("summary",{children:e??"Details"});return(0,m.jsxs)("details",{...n,ref:r,open:u,"data-collapsed":c,className:(0,a.A)(wi.details,o&&wi.isBrowser,n.className),onMouseDown:e=>{Ci(e.target)&&e.detail>1&&e.preventDefault()},onClick:e=>{e.stopPropagation();const t=e.target;Ci(t)&&Ai(t,r.current)&&(e.preventDefault(),c?(l(!1),h(!0)):l(!0))},children:[p,(0,m.jsx)(Ii.N,{lazy:!1,collapsed:c,onCollapseTransitionEnd:e=>{l(e),h(!e)},children:(0,m.jsx)("div",{className:wi.collapsibleContent,children:t})})]})}const Ni={details:"details_b_Ee"},Si="alert alert--info";function ji({...e}){return(0,m.jsx)(Ei,{...e,className:(0,a.A)(Si,Ni.details,e.className)})}function Ri(e){const t=s.Children.toArray(e.children),n=t.find((e=>s.isValidElement(e)&&"summary"===e.type)),o=(0,m.jsx)(m.Fragment,{children:t.filter((e=>e!==n))});return(0,m.jsx)(ji,{...e,summary:n,children:o})}var Li=n(51107);function Oi(e){return(0,m.jsx)(Li.A,{...e})}const Di={containsTaskList:"containsTaskList_mC6p"};function Pi(e){if(void 0!==e)return(0,a.A)(e,e?.includes("contains-task-list")&&Di.containsTaskList)}const Bi={img:"img_ev3q"};var Mi=n(27293);let qi=null;async function Fi(){return qi||(qi=async function(){return(await n.e(2279).then(n.bind(n,22279))).default}()),qi}const $i="docusaurus-mermaid-container";function Ui(){const{colorMode:e}=(0,c.G)(),t=(0,l.p)().mermaid,n=t.theme[e],{options:o}=t;return(0,s.useMemo)((()=>({startOnLoad:!1,...o,theme:n})),[n,o])}function Hi({text:e,config:t}){const[n,o]=(0,s.useState)(null),r=(0,s.useState)(`mermaid-svg-${Math.round(1e7*Math.random())}`)[0],i=Ui(),a=t??i;return(0,s.useEffect)((()=>{(async function({id:e,text:t,config:n}){const s=await Fi();s.initialize(n);try{return await s.render(e,t)}catch(o){throw document.querySelector(`#d${e}`)?.remove(),o}})({id:r,text:e,config:a}).then(o).catch((e=>{o((()=>{throw e}))}))}),[r,e,a]),n}const Vi={container:"container_lyt7"};function Ki({renderResult:e}){const t=(0,s.useRef)(null);return(0,s.useEffect)((()=>{const n=t.current;e.bindFunctions?.(n)}),[e]),(0,m.jsx)("div",{ref:t,className:`${$i} ${Vi.container}`,dangerouslySetInnerHTML:{__html:e.svg}})}function Wi({value:e}){const t=Hi({text:e});return null===t?null:(0,m.jsx)(Ki,{renderResult:t})}const zi={Head:r.A,details:Ri,Details:Ri,code:function(e){return function(e){return void 0!==e.children&&s.Children.toArray(e.children).every((e=>"string"==typeof e&&!e.includes("\n")))}(e)?(0,m.jsx)(_i,{...e}):(0,m.jsx)(yi,{...e})},a:function(e){const t=(0,bi.v)(e.id);return(0,m.jsx)(Ti.A,{...e,className:(0,a.A)(t,e.className)})},pre:function(e){return(0,m.jsx)(m.Fragment,{children:e.children})},ul:function(e){return(0,m.jsx)("ul",{...e,className:Pi(e.className)})},li:function(e){(0,vi.A)().collectAnchor(e.id);const t=(0,bi.v)(e.id);return(0,m.jsx)("li",{className:(0,a.A)(t,e.className),...e})},img:function(e){return(0,m.jsx)("img",{decoding:"async",loading:"lazy",...e,className:(t=e.className,(0,a.A)(t,Bi.img))});var t},h1:e=>(0,m.jsx)(Oi,{as:"h1",...e}),h2:e=>(0,m.jsx)(Oi,{as:"h2",...e}),h3:e=>(0,m.jsx)(Oi,{as:"h3",...e}),h4:e=>(0,m.jsx)(Oi,{as:"h4",...e}),h5:e=>(0,m.jsx)(Oi,{as:"h5",...e}),h6:e=>(0,m.jsx)(Oi,{as:"h6",...e}),admonition:Mi.A,mermaid:function(e){return(0,m.jsx)(ii.A,{fallback:e=>(0,m.jsx)(ri.MN,{...e}),children:(0,m.jsx)(Wi,{...e})})}};function Gi({children:e}){return(0,m.jsx)(o.x,{components:zi,children:e})}},36266:(e,t,n)=>{"use strict";n.d(t,{i:()=>o});var s=n(44586);function o(e={}){const{i18n:{currentLocale:t}}=(0,s.A)(),n=function(){const{i18n:{currentLocale:e,localeConfigs:t}}=(0,s.A)();return t[e].calendar}();return new Intl.DateTimeFormat(t,{calendar:n,...e})}},50089:(e,t)=>{"use strict";var n="\n",s=function(){function e(e){this.string=e;for(var t=[0],s=0;s<e.length;)switch(e[s]){case n:s+=1,t.push(s);break;case"\r":e[s+=1]===n&&(s+=1),t.push(s);break;default:s++}this.offsets=t}return e.prototype.locationForIndex=function(e){if(e<0||e>this.string.length)return null;for(var t=0,n=this.offsets;n[t+1]<=e;)t++;return{line:t,column:e-n[t]}},e.prototype.indexForLocation=function(e){var t=e.line,n=e.column;return t<0||t>=this.offsets.length||n<0||n>this.lengthOfLine(t)?null:this.offsets[t]+n},e.prototype.lengthOfLine=function(e){var t=this.offsets[e];return(e===this.offsets.length-1?this.string.length:this.offsets[e+1])-t},e}()},18426:(e,t)=>{function n(e){let t,n=[];for(let s of e.split(",").map((e=>e.trim())))if(/^-?\d+$/.test(s))n.push(parseInt(s,10));else if(t=s.match(/^(-?\d+)(-|\.\.\.?|\u2025|\u2026|\u22EF)(-?\d+)$/)){let[e,s,o,r]=t;if(s&&r){s=parseInt(s),r=parseInt(r);const e=s<r?1:-1;"-"!==o&&".."!==o&&"\u2025"!==o||(r+=e);for(let t=s;t!==r;t+=e)n.push(t)}}return n}t.default=n,e.exports=n},99361:function(e,t,n){"use strict";var s=this&&this.__spreadArrays||function(){for(var e=0,t=0,n=arguments.length;t<n;t++)e+=arguments[t].length;var s=Array(e),o=0;for(t=0;t<n;t++)for(var r=arguments[t],i=0,a=r.length;i<a;i++,o++)s[o]=r[i];return s};Object.defineProperty(t,"__esModule",{value:!0}),t.Checker=t.createCheckers=void 0;var o=n(1680),r=n(31977),i=n(1680);Object.defineProperty(t,"TArray",{enumerable:!0,get:function(){return i.TArray}}),Object.defineProperty(t,"TEnumType",{enumerable:!0,get:function(){return i.TEnumType}}),Object.defineProperty(t,"TEnumLiteral",{enumerable:!0,get:function(){return i.TEnumLiteral}}),Object.defineProperty(t,"TFunc",{enumerable:!0,get:function(){return i.TFunc}}),Object.defineProperty(t,"TIface",{enumerable:!0,get:function(){return i.TIface}}),Object.defineProperty(t,"TLiteral",{enumerable:!0,get:function(){return i.TLiteral}}),Object.defineProperty(t,"TName",{enumerable:!0,get:function(){return i.TName}}),Object.defineProperty(t,"TOptional",{enumerable:!0,get:function(){return i.TOptional}}),Object.defineProperty(t,"TParam",{enumerable:!0,get:function(){return i.TParam}}),Object.defineProperty(t,"TParamList",{enumerable:!0,get:function(){return i.TParamList}}),Object.defineProperty(t,"TProp",{enumerable:!0,get:function(){return i.TProp}}),Object.defineProperty(t,"TTuple",{enumerable:!0,get:function(){return i.TTuple}}),Object.defineProperty(t,"TType",{enumerable:!0,get:function(){return i.TType}}),Object.defineProperty(t,"TUnion",{enumerable:!0,get:function(){return i.TUnion}}),Object.defineProperty(t,"TIntersection",{enumerable:!0,get:function(){return i.TIntersection}}),Object.defineProperty(t,"array",{enumerable:!0,get:function(){return i.array}}),Object.defineProperty(t,"enumlit",{enumerable:!0,get:function(){return i.enumlit}}),Object.defineProperty(t,"enumtype",{enumerable:!0,get:function(){return i.enumtype}}),Object.defineProperty(t,"func",{enumerable:!0,get:function(){return i.func}}),Object.defineProperty(t,"iface",{enumerable:!0,get:function(){return i.iface}}),Object.defineProperty(t,"lit",{enumerable:!0,get:function(){return i.lit}}),Object.defineProperty(t,"name",{enumerable:!0,get:function(){return i.name}}),Object.defineProperty(t,"opt",{enumerable:!0,get:function(){return i.opt}}),Object.defineProperty(t,"param",{enumerable:!0,get:function(){return i.param}}),Object.defineProperty(t,"tuple",{enumerable:!0,get:function(){return i.tuple}}),Object.defineProperty(t,"union",{enumerable:!0,get:function(){return i.union}}),Object.defineProperty(t,"intersection",{enumerable:!0,get:function(){return i.intersection}}),Object.defineProperty(t,"BasicType",{enumerable:!0,get:function(){return i.BasicType}});var a=n(31977);Object.defineProperty(t,"VError",{enumerable:!0,get:function(){return a.VError}}),t.createCheckers=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];for(var n=Object.assign.apply(Object,s([{},o.basicTypes],e)),r={},i=0,a=e;i<a.length;i++)for(var l=a[i],u=0,h=Object.keys(l);u<h.length;u++){var p=h[u];r[p]=new c(n,l[p])}return r};var c=function(){function e(e,t,n){if(void 0===n&&(n="value"),this.suite=e,this.ttype=t,this._path=n,this.props=new Map,t instanceof o.TIface)for(var s=0,r=t.props;s<r.length;s++){var i=r[s];this.props.set(i.name,i.ttype)}this.checkerPlain=this.ttype.getChecker(e,!1),this.checkerStrict=this.ttype.getChecker(e,!0)}return e.prototype.setReportedPath=function(e){this._path=e},e.prototype.check=function(e){return this._doCheck(this.checkerPlain,e)},e.prototype.test=function(e){return this.checkerPlain(e,new r.NoopContext)},e.prototype.validate=function(e){return this._doValidate(this.checkerPlain,e)},e.prototype.strictCheck=function(e){return this._doCheck(this.checkerStrict,e)},e.prototype.strictTest=function(e){return this.checkerStrict(e,new r.NoopContext)},e.prototype.strictValidate=function(e){return this._doValidate(this.checkerStrict,e)},e.prototype.getProp=function(t){var n=this.props.get(t);if(!n)throw new Error("Type has no property "+t);return new e(this.suite,n,this._path+"."+t)},e.prototype.methodArgs=function(t){var n=this._getMethod(t);return new e(this.suite,n.paramList)},e.prototype.methodResult=function(t){var n=this._getMethod(t);return new e(this.suite,n.result)},e.prototype.getArgs=function(){if(!(this.ttype instanceof o.TFunc))throw new Error("getArgs() applied to non-function");return new e(this.suite,this.ttype.paramList)},e.prototype.getResult=function(){if(!(this.ttype instanceof o.TFunc))throw new Error("getResult() applied to non-function");return new e(this.suite,this.ttype.result)},e.prototype.getType=function(){return this.ttype},e.prototype._doCheck=function(e,t){if(!e(t,new r.NoopContext)){var n=new r.DetailContext;throw e(t,n),n.getError(this._path)}},e.prototype._doValidate=function(e,t){if(e(t,new r.NoopContext))return null;var n=new r.DetailContext;return e(t,n),n.getErrorDetail(this._path)},e.prototype._getMethod=function(e){var t=this.props.get(e);if(!t)throw new Error("Type has no property "+e);if(!(t instanceof o.TFunc))throw new Error("Property "+e+" is not a method");return t},e}();t.Checker=c},1680:function(e,t,n){"use strict";var s,o=this&&this.__extends||(s=function(e,t){return s=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},s(e,t)},function(e,t){function n(){this.constructor=e}s(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});Object.defineProperty(t,"__esModule",{value:!0}),t.basicTypes=t.BasicType=t.TParamList=t.TParam=t.param=t.TFunc=t.func=t.TProp=t.TOptional=t.opt=t.TIface=t.iface=t.TEnumLiteral=t.enumlit=t.TEnumType=t.enumtype=t.TIntersection=t.intersection=t.TUnion=t.union=t.TTuple=t.tuple=t.TArray=t.array=t.TLiteral=t.lit=t.TName=t.name=t.TType=void 0;var r=n(31977),i=function(){};function a(e){return"string"==typeof e?l(e):e}function c(e,t){var n=e[t];if(!n)throw new Error("Unknown type "+t);return n}function l(e){return new u(e)}t.TType=i,t.name=l;var u=function(e){function t(t){var n=e.call(this)||this;return n.name=t,n._failMsg="is not a "+t,n}return o(t,e),t.prototype.getChecker=function(e,n,s){var o=this,r=c(e,this.name),i=r.getChecker(e,n,s);return r instanceof w||r instanceof t?i:function(e,t){return!!i(e,t)||t.fail(null,o._failMsg,0)}},t}(i);t.TName=u,t.lit=function(e){return new h(e)};var h=function(e){function t(t){var n=e.call(this)||this;return n.value=t,n.name=JSON.stringify(t),n._failMsg="is not "+n.name,n}return o(t,e),t.prototype.getChecker=function(e,t){var n=this;return function(e,t){return e===n.value||t.fail(null,n._failMsg,-1)}},t}(i);t.TLiteral=h,t.array=function(e){return new p(a(e))};var p=function(e){function t(t){var n=e.call(this)||this;return n.ttype=t,n}return o(t,e),t.prototype.getChecker=function(e,t){var n=this.ttype.getChecker(e,t);return function(e,t){if(!Array.isArray(e))return t.fail(null,"is not an array",0);for(var s=0;s<e.length;s++){if(!n(e[s],t))return t.fail(s,null,1)}return!0}},t}(i);t.TArray=p,t.tuple=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return new d(e.map((function(e){return a(e)})))};var d=function(e){function t(t){var n=e.call(this)||this;return n.ttypes=t,n}return o(t,e),t.prototype.getChecker=function(e,t){var n=this.ttypes.map((function(n){return n.getChecker(e,t)})),s=function(e,t){if(!Array.isArray(e))return t.fail(null,"is not an array",0);for(var s=0;s<n.length;s++){if(!n[s](e[s],t))return t.fail(s,null,1)}return!0};return t?function(e,t){return!!s(e,t)&&(e.length<=n.length||t.fail(n.length,"is extraneous",2))}:s},t}(i);t.TTuple=d,t.union=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return new f(e.map((function(e){return a(e)})))};var f=function(e){function t(t){var n=e.call(this)||this;n.ttypes=t;var s=t.map((function(e){return e instanceof u||e instanceof h?e.name:null})).filter((function(e){return e})),o=t.length-s.length;return s.length?(o>0&&s.push(o+" more"),n._failMsg="is none of "+s.join(", ")):n._failMsg="is none of "+o+" types",n}return o(t,e),t.prototype.getChecker=function(e,t){var n=this,s=this.ttypes.map((function(n){return n.getChecker(e,t)}));return function(e,t){for(var o=t.unionResolver(),r=0;r<s.length;r++){if(s[r](e,o.createContext()))return!0}return t.resolveUnion(o),t.fail(null,n._failMsg,0)}},t}(i);t.TUnion=f,t.intersection=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return new m(e.map((function(e){return a(e)})))};var m=function(e){function t(t){var n=e.call(this)||this;return n.ttypes=t,n}return o(t,e),t.prototype.getChecker=function(e,t){var n=new Set,s=this.ttypes.map((function(s){return s.getChecker(e,t,n)}));return function(e,t){return!!s.every((function(n){return n(e,t)}))||t.fail(null,null,0)}},t}(i);t.TIntersection=m,t.enumtype=function(e){return new k(e)};var k=function(e){function t(t){var n=e.call(this)||this;return n.members=t,n.validValues=new Set,n._failMsg="is not a valid enum value",n.validValues=new Set(Object.keys(t).map((function(e){return t[e]}))),n}return o(t,e),t.prototype.getChecker=function(e,t){var n=this;return function(e,t){return!!n.validValues.has(e)||t.fail(null,n._failMsg,0)}},t}(i);t.TEnumType=k,t.enumlit=function(e,t){return new g(e,t)};var g=function(e){function t(t,n){var s=e.call(this)||this;return s.enumName=t,s.prop=n,s._failMsg="is not "+t+"."+n,s}return o(t,e),t.prototype.getChecker=function(e,t){var n=this,s=c(e,this.enumName);if(!(s instanceof k))throw new Error("Type "+this.enumName+" used in enumlit is not an enum type");var o=s.members[this.prop];if(!s.members.hasOwnProperty(this.prop))throw new Error("Unknown value "+this.enumName+"."+this.prop+" used in enumlit");return function(e,t){return e===o||t.fail(null,n._failMsg,-1)}},t}(i);function x(e){return Object.keys(e).map((function(t){return function(e,t){return t instanceof _?new T(e,t.ttype,!0):new T(e,a(t),!1)}(t,e[t])}))}t.TEnumLiteral=g,t.iface=function(e,t){return new y(e,x(t))};var y=function(e){function t(t,n){var s=e.call(this)||this;return s.bases=t,s.props=n,s.propSet=new Set(n.map((function(e){return e.name}))),s}return o(t,e),t.prototype.getChecker=function(e,t,n){var s=this,o=this.bases.map((function(n){return c(e,n).getChecker(e,t)})),i=this.props.map((function(n){return n.ttype.getChecker(e,t)})),a=new r.NoopContext,l=this.props.map((function(e,t){return!e.isOpt&&!i[t](void 0,a)})),u=function(e,t){if("object"!=typeof e||null===e)return t.fail(null,"is not an object",0);for(var n=0;n<o.length;n++)if(!o[n](e,t))return!1;for(n=0;n<i.length;n++){var r=s.props[n].name,a=e[r];if(void 0===a){if(l[n])return t.fail(r,"is missing",1)}else if(!i[n](a,t))return t.fail(r,null,1)}return!0};if(!t)return u;var h=this.propSet;return n&&(this.propSet.forEach((function(e){return n.add(e)})),h=n),function(e,t){if(!u(e,t))return!1;for(var n in e)if(!h.has(n))return t.fail(n,"is extraneous",2);return!0}},t}(i);t.TIface=y,t.opt=function(e){return new _(a(e))};var _=function(e){function t(t){var n=e.call(this)||this;return n.ttype=t,n}return o(t,e),t.prototype.getChecker=function(e,t){var n=this.ttype.getChecker(e,t);return function(e,t){return void 0===e||n(e,t)}},t}(i);t.TOptional=_;var T=function(e,t,n){this.name=e,this.ttype=t,this.isOpt=n};t.TProp=T,t.func=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];return new b(new I(t),a(e))};var b=function(e){function t(t,n){var s=e.call(this)||this;return s.paramList=t,s.result=n,s}return o(t,e),t.prototype.getChecker=function(e,t){return function(e,t){return"function"==typeof e||t.fail(null,"is not a function",0)}},t}(i);t.TFunc=b,t.param=function(e,t,n){return new v(e,a(t),Boolean(n))};var v=function(e,t,n){this.name=e,this.ttype=t,this.isOpt=n};t.TParam=v;var I=function(e){function t(t){var n=e.call(this)||this;return n.params=t,n}return o(t,e),t.prototype.getChecker=function(e,t){var n=this,s=this.params.map((function(n){return n.ttype.getChecker(e,t)})),o=new r.NoopContext,i=this.params.map((function(e,t){return!e.isOpt&&!s[t](void 0,o)})),a=function(e,t){if(!Array.isArray(e))return t.fail(null,"is not an array",0);for(var o=0;o<s.length;o++){var r=n.params[o];if(void 0===e[o]){if(i[o])return t.fail(r.name,"is missing",1)}else if(!s[o](e[o],t))return t.fail(r.name,null,1)}return!0};return t?function(e,t){return!!a(e,t)&&(e.length<=s.length||t.fail(s.length,"is extraneous",2))}:a},t}(i);t.TParamList=I;var w=function(e){function t(t,n){var s=e.call(this)||this;return s.validator=t,s.message=n,s}return o(t,e),t.prototype.getChecker=function(e,t){var n=this;return function(e,t){return!!n.validator(e)||t.fail(null,n.message,0)}},t}(i);t.BasicType=w,t.basicTypes={any:new w((function(e){return!0}),"is invalid"),number:new w((function(e){return"number"==typeof e}),"is not a number"),object:new w((function(e){return"object"==typeof e&&e}),"is not an object"),boolean:new w((function(e){return"boolean"==typeof e}),"is not a boolean"),string:new w((function(e){return"string"==typeof e}),"is not a string"),symbol:new w((function(e){return"symbol"==typeof e}),"is not a symbol"),void:new w((function(e){return null==e}),"is not void"),undefined:new w((function(e){return void 0===e}),"is not undefined"),null:new w((function(e){return null===e}),"is not null"),never:new w((function(e){return!1}),"is unexpected"),Date:new w(A("[object Date]"),"is not a Date"),RegExp:new w(A("[object RegExp]"),"is not a RegExp")};var C=Object.prototype.toString;function A(e){return function(t){return"object"==typeof t&&t&&C.call(t)===e}}"undefined"!=typeof Buffer&&(t.basicTypes.Buffer=new w((function(e){return Buffer.isBuffer(e)}),"is not a Buffer"));for(var E=function(e){t.basicTypes[e.name]=new w((function(t){return t instanceof e}),"is not a "+e.name)},N=0,S=[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,ArrayBuffer];N<S.length;N++){E(S[N])}},31977:function(e,t){"use strict";var n,s=this&&this.__extends||(n=function(e,t){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},n(e,t)},function(e,t){function s(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(s.prototype=t.prototype,new s)});Object.defineProperty(t,"__esModule",{value:!0}),t.DetailContext=t.NoopContext=t.VError=void 0;var o=function(e){function t(n,s){var o=e.call(this,s)||this;return o.path=n,Object.setPrototypeOf(o,t.prototype),o}return s(t,e),t}(Error);t.VError=o;var r=function(){function e(){}return e.prototype.fail=function(e,t,n){return!1},e.prototype.unionResolver=function(){return this},e.prototype.createContext=function(){return this},e.prototype.resolveUnion=function(e){},e}();t.NoopContext=r;var i=function(){function e(){this._propNames=[""],this._messages=[null],this._score=0}return e.prototype.fail=function(e,t,n){return this._propNames.push(e),this._messages.push(t),this._score+=n,!1},e.prototype.unionResolver=function(){return new a},e.prototype.resolveUnion=function(e){for(var t,n,s=null,o=0,r=e.contexts;o<r.length;o++){var i=r[o];(!s||i._score>=s._score)&&(s=i)}s&&s._score>0&&((t=this._propNames).push.apply(t,s._propNames),(n=this._messages).push.apply(n,s._messages))},e.prototype.getError=function(e){for(var t=[],n=this._propNames.length-1;n>=0;n--){var s=this._propNames[n];e+="number"==typeof s?"["+s+"]":s?"."+s:"";var r=this._messages[n];r&&t.push(e+" "+r)}return new o(e,t.join("; "))},e.prototype.getErrorDetail=function(e){for(var t=[],n=this._propNames.length-1;n>=0;n--){var s=this._propNames[n];e+="number"==typeof s?"["+s+"]":s?"."+s:"";var o=this._messages[n];o&&t.push({path:e,message:o})}var r=null;for(n=t.length-1;n>=0;n--)r&&(t[n].nested=[r]),r=t[n];return r},e}();t.DetailContext=i;var a=function(){function e(){this.contexts=[]}return e.prototype.createContext=function(){var e=new i;return this.contexts.push(e),e},e}()},28453:(e,t,n)=>{"use strict";n.d(t,{R:()=>i,x:()=>a});var s=n(96540);const o={},r=s.createContext(o);function i(e){const t=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:i(e.components),s.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/9c121bda.3d40b146.js b/assets/js/9c121bda.3d40b146.js new file mode 100644 index 00000000..06539a34 --- /dev/null +++ b/assets/js/9c121bda.3d40b146.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7638],{47469:e=>{e.exports=JSON.parse('{"tag":{"label":"Phoenix Code","permalink":"/blog/tags/phoenix-code","allTagsPath":"/blog/tags","count":1,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/phoenix-code","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]); \ No newline at end of file diff --git a/assets/js/9e4087bc.4d6c96c4.js b/assets/js/9e4087bc.4d6c96c4.js new file mode 100644 index 00000000..261facd3 --- /dev/null +++ b/assets/js/9e4087bc.4d6c96c4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2711],{89331:(e,r,a)=>{a.r(r),a.d(r,{default:()=>m});a(96540);var t=a(28774),s=a(21312),n=a(45500),i=a(36266),c=a(36882),l=a(51107),o=a(74848);function d({year:e,posts:r}){const a=(0,i.i)({day:"numeric",month:"long",timeZone:"UTC"});return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(l.A,{as:"h3",id:e,children:e}),(0,o.jsx)("ul",{children:r.map((e=>{return(0,o.jsx)("li",{children:(0,o.jsxs)(t.A,{to:e.metadata.permalink,children:[(r=e.metadata.date,a.format(new Date(r)))," - ",e.metadata.title]})},e.metadata.date);var r}))})]})}function h({years:e}){return(0,o.jsx)("section",{className:"margin-vert--lg",children:(0,o.jsx)("div",{className:"container",children:(0,o.jsx)("div",{className:"row",children:e.map(((e,r)=>(0,o.jsx)("div",{className:"col col--4 margin-vert--lg",children:(0,o.jsx)(d,{...e})},r)))})})})}function m({archive:e}){const r=(0,s.T)({id:"theme.blog.archive.title",message:"Archive",description:"The page & hero title of the blog archive page"}),a=(0,s.T)({id:"theme.blog.archive.description",message:"Archive",description:"The page & hero description of the blog archive page"}),t=function(e){const r=e.reduce(((e,r)=>{const a=r.metadata.date.split("-")[0],t=e.get(a)??[];return e.set(a,[r,...t])}),new Map);return Array.from(r,(([e,r])=>({year:e,posts:r})))}(e.blogPosts);return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.be,{title:r,description:a}),(0,o.jsxs)(c.A,{children:[(0,o.jsx)("header",{className:"hero hero--primary",children:(0,o.jsxs)("div",{className:"container",children:[(0,o.jsx)(l.A,{as:"h1",className:"hero__title",children:r}),(0,o.jsx)("p",{className:"hero__subtitle",children:a})]})}),(0,o.jsx)("main",{children:t.length>0&&(0,o.jsx)(h,{years:t})})]})]})}},36266:(e,r,a)=>{a.d(r,{i:()=>s});var t=a(44586);function s(e={}){const{i18n:{currentLocale:r}}=(0,t.A)(),a=function(){const{i18n:{currentLocale:e,localeConfigs:r}}=(0,t.A)();return r[e].calendar}();return new Intl.DateTimeFormat(r,{calendar:a,...e})}}}]); \ No newline at end of file diff --git a/assets/js/9f7cf2f5.07983fbf.js b/assets/js/9f7cf2f5.07983fbf.js new file mode 100644 index 00000000..b9f51fa9 --- /dev/null +++ b/assets/js/9f7cf2f5.07983fbf.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2735],{34294:(e,i,t)=>{t.r(i),t.d(i,{assets:()=>l,contentTitle:()=>d,default:()=>h,frontMatter:()=>c,metadata:()=>n,toc:()=>r});const n=JSON.parse('{"id":"API-Reference/widgets/NotificationUI","title":"NotificationUI","description":"Import :","source":"@site/api/API-Reference/widgets/NotificationUI.md","sourceDirName":"API-Reference/widgets","slug":"/API-Reference/widgets/NotificationUI","permalink":"/api/API-Reference/widgets/NotificationUI","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"ModalBar","permalink":"/api/API-Reference/widgets/ModalBar"},"next":{"title":"PopUpManager","permalink":"/api/API-Reference/widgets/PopUpManager"}}');var s=t(74848),o=t(28453);const c={},d=void 0,l={},r=[{value:"Import :",id:"import-",level:3},{value:"widgets/NotificationUI",id:"widgetsnotificationui",level:2},{value:"Usage",id:"usage",level:2},{value:"Simple example",id:"simple-example",level:3},{value:"Advanced example",id:"advanced-example",level:3},{value:"widgets/NotificationUI.API",id:"widgetsnotificationuiapi",level:3},{value:"widgets/NotificationUI.NOTIFICATION_STYLES_CSS_CLASS : <code>enum</code>",id:"widgetsnotificationuinotification_styles_css_class--enum",level:3},{value:"widgets/NotificationUI.CLOSE_REASON : <code>enum</code>",id:"widgetsnotificationuiclose_reason--enum",level:3},{value:"widgets/NotificationUI.createFromTemplate(title, template, [elementID], [options]) \u21d2 <code>Notification</code>",id:"widgetsnotificationuicreatefromtemplatetitle-template-elementid-options--notification",level:3},{value:"widgets/NotificationUI.createToastFromTemplate(title, template, [options]) \u21d2 <code>Notification</code>",id:"widgetsnotificationuicreatetoastfromtemplatetitle-template-options--notification",level:3},{value:"widgets/NotificationUI.showToastOn(containerOrSelector, template, [options]) \u21d2 <code>Notification</code>",id:"widgetsnotificationuishowtoastoncontainerorselector-template-options--notification",level:3},{value:"widgets/NotificationUI.showHUD(iconClass, label, [options]) \u21d2 <code>Notification</code>",id:"widgetsnotificationuishowhudiconclass-label-options--notification",level:3}];function a(e){const i={a:"a",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(i.h3,{id:"import-",children:"Import :"}),"\n",(0,s.jsx)(i.pre,{children:(0,s.jsx)(i.code,{className:"language-js",children:'const NotificationUI = brackets.getModule("widgets/NotificationUI")\n'})}),"\n",(0,s.jsx)("a",{name:"module_widgets/NotificationUI"}),"\n",(0,s.jsx)(i.h2,{id:"widgetsnotificationui",children:"widgets/NotificationUI"}),"\n",(0,s.jsx)(i.p,{children:"The global NotificationUI can be used to create popup notifications over dom elements or generics app notifications."}),"\n",(0,s.jsxs)(i.p,{children:["A global ",(0,s.jsx)(i.code,{children:"window.EventManager"})," object is made available in phoenix that can be called anytime after AppStart.\nThis global can be triggered from anywhere without using require context."]}),"\n",(0,s.jsx)(i.h2,{id:"usage",children:"Usage"}),"\n",(0,s.jsx)(i.h3,{id:"simple-example",children:"Simple example"}),"\n",(0,s.jsxs)(i.p,{children:["For Eg. Let's say we have to create a popup notification over the HTML element with ID ",(0,s.jsx)(i.code,{children:"showInfileTree"}),".\nWe can do this with the following"]}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.strong,{children:"Example"})}),"\n",(0,s.jsx)(i.pre,{children:(0,s.jsx)(i.code,{className:"language-js",children:'const NotificationUI = brackets.getModule("widgets/NotificationUI");\n// or use window.NotificationUI global object has the same effect.\nlet notification = NotificationUI.createFromTemplate("Click me to locate the file in file tree", "showInfileTree",{});\nnotification.done(()=>{\n console.log("notification is closed in ui.");\n})\n'})}),"\n",(0,s.jsx)(i.h3,{id:"advanced-example",children:"Advanced example"}),"\n",(0,s.jsxs)(i.p,{children:["Another advanced example where you can specify html and interactive components in the notification\n",(0,s.jsx)(i.strong,{children:"Example"})]}),"\n",(0,s.jsx)(i.pre,{children:(0,s.jsx)(i.code,{className:"language-js",children:'// note that you can even provide an HTML Element node with\n// custom event handlers directly here instead of HTML text.\nlet notification1 = NotificationUI.createFromTemplate(\n "<div>Click me to locate the file in file tree</div>", "showInfileTree",{\n allowedPlacements: [\'top\', \'bottom\'],\n dismissOnClick: false,\n autoCloseTimeS: 300 // auto close the popup after 5 minutes\n });\n// do stuff\nnotification1.done((closeReason)=>{\n console.log("notification is closed in ui reason:", closeReason);\n})\n'})}),"\n",(0,s.jsxs)(i.p,{children:["The ",(0,s.jsx)(i.code,{children:"createFromTemplate"})," API can be configured with numerous options. See API options below."]}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.a,{href:"#module_widgets/NotificationUI",children:"widgets/NotificationUI"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsx)(i.li,{children:(0,s.jsx)(i.a,{href:"#module_widgets/NotificationUI..API",children:".API"})}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.a,{href:"#module_widgets/NotificationUI..NOTIFICATION_STYLES_CSS_CLASS",children:".NOTIFICATION_STYLES_CSS_CLASS"})," : ",(0,s.jsx)("code",{children:"enum"})]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.a,{href:"#module_widgets/NotificationUI..CLOSE_REASON",children:".CLOSE_REASON"})," : ",(0,s.jsx)("code",{children:"enum"})]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.a,{href:"#module_widgets/NotificationUI..createFromTemplate",children:".createFromTemplate(title, template, [elementID], [options])"})," \u21d2 ",(0,s.jsx)("code",{children:"Notification"})]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.a,{href:"#module_widgets/NotificationUI..createToastFromTemplate",children:".createToastFromTemplate(title, template, [options])"})," \u21d2 ",(0,s.jsx)("code",{children:"Notification"})]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.a,{href:"#module_widgets/NotificationUI..showToastOn",children:".showToastOn(containerOrSelector, template, [options])"})," \u21d2 ",(0,s.jsx)("code",{children:"Notification"})]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.a,{href:"#module_widgets/NotificationUI..showHUD",children:".showHUD(iconClass, label, [options])"})," \u21d2 ",(0,s.jsx)("code",{children:"Notification"})]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)("a",{name:"module_widgets/NotificationUI..API"}),"\n",(0,s.jsx)(i.h3,{id:"widgetsnotificationuiapi",children:"widgets/NotificationUI.API"}),"\n",(0,s.jsx)(i.p,{children:"This section outlines the properties and methods available in this module"}),"\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.strong,{children:"Kind"}),": inner property of ",(0,s.jsx)(i.a,{href:"#module_widgets/NotificationUI",children:(0,s.jsx)("code",{children:"widgets/NotificationUI"})})]}),"\n",(0,s.jsx)("a",{name:"module_widgets/NotificationUI..NOTIFICATION_STYLES_CSS_CLASS"}),"\n",(0,s.jsxs)(i.h3,{id:"widgetsnotificationuinotification_styles_css_class--enum",children:["widgets/NotificationUI.NOTIFICATION_STYLES_CSS_CLASS : ",(0,s.jsx)("code",{children:"enum"})]}),"\n",(0,s.jsx)(i.p,{children:"CSS class names for notification styles."}),"\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.strong,{children:"Kind"}),": inner enum of ",(0,s.jsx)(i.a,{href:"#module_widgets/NotificationUI",children:(0,s.jsx)("code",{children:"widgets/NotificationUI"})}),(0,s.jsx)(i.br,{}),"\n",(0,s.jsx)(i.strong,{children:"Properties"})]}),"\n",(0,s.jsxs)(i.table,{children:[(0,s.jsx)(i.thead,{children:(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.th,{children:"Name"}),(0,s.jsx)(i.th,{children:"Type"}),(0,s.jsx)(i.th,{children:"Default"})]})}),(0,s.jsxs)(i.tbody,{children:[(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"INFO"}),(0,s.jsx)(i.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(i.td,{children:(0,s.jsx)("code",{children:'"style-info"'})})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"WARNING"}),(0,s.jsx)(i.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(i.td,{children:(0,s.jsx)("code",{children:'"style-warning"'})})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"SUCCESS"}),(0,s.jsx)(i.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(i.td,{children:(0,s.jsx)("code",{children:'"style-success"'})})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"ERROR"}),(0,s.jsx)(i.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(i.td,{children:(0,s.jsx)("code",{children:'"style-error"'})})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"DANGER"}),(0,s.jsx)(i.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(i.td,{children:(0,s.jsx)("code",{children:'"style-danger"'})})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"SUBTLE"}),(0,s.jsx)(i.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(i.td,{children:(0,s.jsx)("code",{children:'"style-subtle"'})})]})]})]}),"\n",(0,s.jsx)("a",{name:"module_widgets/NotificationUI..CLOSE_REASON"}),"\n",(0,s.jsxs)(i.h3,{id:"widgetsnotificationuiclose_reason--enum",children:["widgets/NotificationUI.CLOSE_REASON : ",(0,s.jsx)("code",{children:"enum"})]}),"\n",(0,s.jsx)(i.p,{children:"Closing notification reason."}),"\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.strong,{children:"Kind"}),": inner enum of ",(0,s.jsx)(i.a,{href:"#module_widgets/NotificationUI",children:(0,s.jsx)("code",{children:"widgets/NotificationUI"})}),(0,s.jsx)(i.br,{}),"\n",(0,s.jsx)(i.strong,{children:"Properties"})]}),"\n",(0,s.jsxs)(i.table,{children:[(0,s.jsx)(i.thead,{children:(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.th,{children:"Name"}),(0,s.jsx)(i.th,{children:"Type"}),(0,s.jsx)(i.th,{children:"Default"})]})}),(0,s.jsxs)(i.tbody,{children:[(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"TIMEOUT"}),(0,s.jsx)(i.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(i.td,{children:(0,s.jsx)("code",{children:'"closeTimeout"'})})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"CLICK_DISMISS"}),(0,s.jsx)(i.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(i.td,{children:(0,s.jsx)("code",{children:'"clickDismiss"'})})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"CLOSE_BTN_CLICK"}),(0,s.jsx)(i.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(i.td,{children:(0,s.jsx)("code",{children:'"closeBtnClick"'})})]})]})]}),"\n",(0,s.jsx)("a",{name:"module_widgets/NotificationUI..createFromTemplate"}),"\n",(0,s.jsxs)(i.h3,{id:"widgetsnotificationuicreatefromtemplatetitle-template-elementid-options--notification",children:["widgets/NotificationUI.createFromTemplate(title, template, [elementID], [options]) \u21d2 ",(0,s.jsx)("code",{children:"Notification"})]}),"\n",(0,s.jsxs)(i.p,{children:["Creates a new notification popup from given template.\nThe template can either be a string or a jQuery object representing a DOM node that is ",(0,s.jsx)(i.em,{children:"not"})," in the current DOM."]}),"\n",(0,s.jsx)(i.p,{children:"Creating a notification popup"}),"\n",(0,s.jsx)(i.pre,{children:(0,s.jsx)(i.code,{className:"language-js",children:"// note that you can even provide an HTML Element node with\n// custom event handlers directly here instead of HTML text.\nlet notification1 = NotificationUI.createFromTemplate(\n \"<div>Click me to locate the file in file tree</div>\", \"showInfileTree\",{\n allowedPlacements: ['top', 'bottom'],\n dismissOnClick: false,\n autoCloseTimeS: 300 // auto close the popup after 5 minutes\n });\n"})}),"\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.strong,{children:"Kind"}),": inner method of ",(0,s.jsx)(i.a,{href:"#module_widgets/NotificationUI",children:(0,s.jsx)("code",{children:"widgets/NotificationUI"})}),(0,s.jsx)(i.br,{}),"\n",(0,s.jsx)(i.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"Notification"})," - Object with a done handler that resolves when the notification closes."]}),"\n",(0,s.jsxs)(i.table,{children:[(0,s.jsx)(i.thead,{children:(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.th,{children:"Param"}),(0,s.jsx)(i.th,{children:"Type"}),(0,s.jsx)(i.th,{children:"Description"})]})}),(0,s.jsxs)(i.tbody,{children:[(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"title"}),(0,s.jsx)(i.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(i.td,{children:"The title for the notification."})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"template"}),(0,s.jsxs)(i.td,{children:[(0,s.jsx)("code",{children:"string"})," | ",(0,s.jsx)("code",{children:"Element"})]}),(0,s.jsx)(i.td,{children:"A string template or HTML Element to use as the dialog HTML."})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"[elementID]"}),(0,s.jsx)(i.td,{children:(0,s.jsx)("code",{children:"String"})}),(0,s.jsx)(i.td,{children:"optional id string if provided will show the notification pointing to the element. If no element is specified, it will be managed as a generic notification."})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"[options]"}),(0,s.jsx)(i.td,{children:(0,s.jsx)("code",{children:"Object"})}),(0,s.jsxs)(i.td,{children:["optional, supported * options are: * ",(0,s.jsx)(i.code,{children:"allowedPlacements"})," - Optional String array with values restricting where the notification will be shown. Values can be a mix of ",(0,s.jsx)(i.code,{children:"['top', 'bottom', 'left', 'right']"})," * ",(0,s.jsx)(i.code,{children:"autoCloseTimeS"})," - Time in seconds after which the notification should be auto closed. Default is never. * ",(0,s.jsx)(i.code,{children:"dismissOnClick"})," - when clicked, the notification is closed. Default is true(dismiss). * ",(0,s.jsx)(i.code,{children:"toastStyle"})," - To style the toast notification for error, warning, info etc. Can be one of ",(0,s.jsx)(i.code,{children:"NotificationUI.NOTIFICATION_STYLES_CSS_CLASS.*"})," or your own css class name."]})]})]})]}),"\n",(0,s.jsx)("a",{name:"module_widgets/NotificationUI..createToastFromTemplate"}),"\n",(0,s.jsxs)(i.h3,{id:"widgetsnotificationuicreatetoastfromtemplatetitle-template-options--notification",children:["widgets/NotificationUI.createToastFromTemplate(title, template, [options]) \u21d2 ",(0,s.jsx)("code",{children:"Notification"})]}),"\n",(0,s.jsxs)(i.p,{children:["Creates a new toast notification popup from given title and html message.\nThe message can either be a string or a jQuery object representing a DOM node that is ",(0,s.jsx)(i.em,{children:"not"})," in the current DOM."]}),"\n",(0,s.jsx)(i.p,{children:"Creating a toast notification popup"}),"\n",(0,s.jsx)(i.pre,{children:(0,s.jsx)(i.code,{className:"language-js",children:'// note that you can even provide an HTML Element node with\n// custom event handlers directly here instead of HTML text.\nlet notification1 = NotificationUI.createToastFromTemplate( "Title here",\n "<div>Click me to locate the file in file tree</div>", {\n dismissOnClick: false,\n autoCloseTimeS: 300 // auto close the popup after 5 minutes\n });\n'})}),"\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.strong,{children:"Kind"}),": inner method of ",(0,s.jsx)(i.a,{href:"#module_widgets/NotificationUI",children:(0,s.jsx)("code",{children:"widgets/NotificationUI"})}),(0,s.jsx)(i.br,{}),"\n",(0,s.jsx)(i.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"Notification"})," - Object with a done handler that resolves when the notification closes."]}),"\n",(0,s.jsxs)(i.table,{children:[(0,s.jsx)(i.thead,{children:(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.th,{children:"Param"}),(0,s.jsx)(i.th,{children:"Type"}),(0,s.jsx)(i.th,{children:"Description"})]})}),(0,s.jsxs)(i.tbody,{children:[(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"title"}),(0,s.jsx)(i.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(i.td,{children:"The title for the notification."})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"template"}),(0,s.jsxs)(i.td,{children:[(0,s.jsx)("code",{children:"string"})," | ",(0,s.jsx)("code",{children:"Element"})]}),(0,s.jsx)(i.td,{children:"A string template or HTML Element to use as the dialog HTML."})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"[options]"}),(0,s.jsx)(i.td,{children:(0,s.jsx)("code",{children:"Object"})}),(0,s.jsxs)(i.td,{children:["optional, supported * options are: * ",(0,s.jsx)(i.code,{children:"autoCloseTimeS"})," - Time in seconds after which the notification should be auto closed. Default is never. * ",(0,s.jsx)(i.code,{children:"dismissOnClick"})," - when clicked, the notification is closed. Default is true(dismiss). * ",(0,s.jsx)(i.code,{children:"toastStyle"})," - To style the toast notification for error, warning, info etc. Can be one of ",(0,s.jsx)(i.code,{children:"NotificationUI.NOTIFICATION_STYLES_CSS_CLASS.*"})," or your own css class name. * ",(0,s.jsx)(i.code,{children:"instantOpen"})," - To instantly open the popup without any open animation delays"]})]})]})]}),"\n",(0,s.jsx)("a",{name:"module_widgets/NotificationUI..showToastOn"}),"\n",(0,s.jsxs)(i.h3,{id:"widgetsnotificationuishowtoastoncontainerorselector-template-options--notification",children:["widgets/NotificationUI.showToastOn(containerOrSelector, template, [options]) \u21d2 ",(0,s.jsx)("code",{children:"Notification"})]}),"\n",(0,s.jsx)(i.p,{children:"Shows a small, transient inline toast notification inside a given DOM container.\nThe toast is centered at the bottom of the container and auto-dismisses."}),"\n",(0,s.jsx)(i.pre,{children:(0,s.jsx)(i.code,{className:"language-js",children:'NotificationUI.showToastOn(document.getElementById("my-panel"), "Hello!", {\n autoCloseTimeS: 5,\n dismissOnClick: true\n});\n'})}),"\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.strong,{children:"Kind"}),": inner method of ",(0,s.jsx)(i.a,{href:"#module_widgets/NotificationUI",children:(0,s.jsx)("code",{children:"widgets/NotificationUI"})}),(0,s.jsx)(i.br,{}),"\n",(0,s.jsx)(i.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"Notification"})," - Object with a done handler that resolves when the toast closes."]}),"\n",(0,s.jsxs)(i.table,{children:[(0,s.jsx)(i.thead,{children:(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.th,{children:"Param"}),(0,s.jsx)(i.th,{children:"Type"}),(0,s.jsx)(i.th,{children:"Description"})]})}),(0,s.jsxs)(i.tbody,{children:[(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"containerOrSelector"}),(0,s.jsxs)(i.td,{children:[(0,s.jsx)("code",{children:"Element"})," | ",(0,s.jsx)("code",{children:"string"})]}),(0,s.jsxs)(i.td,{children:["A DOM element or CSS selector for the parent container. The container should have ",(0,s.jsx)(i.code,{children:"position: relative"})," or ",(0,s.jsx)(i.code,{children:"absolute"})," so the toast is positioned correctly."]})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"template"}),(0,s.jsxs)(i.td,{children:[(0,s.jsx)("code",{children:"string"})," | ",(0,s.jsx)("code",{children:"Element"})]}),(0,s.jsx)(i.td,{children:"HTML string or DOM Element for the toast content."})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"[options]"}),(0,s.jsx)(i.td,{children:(0,s.jsx)("code",{children:"Object"})}),(0,s.jsxs)(i.td,{children:["optional, supported options: * ",(0,s.jsx)(i.code,{children:"autoCloseTimeS"})," - Time in seconds after which the toast auto-closes. Default is 5. * ",(0,s.jsx)(i.code,{children:"dismissOnClick"})," - If true, clicking the toast dismisses it. Default is true."]})]})]})]}),"\n",(0,s.jsx)("a",{name:"module_widgets/NotificationUI..showHUD"}),"\n",(0,s.jsxs)(i.h3,{id:"widgetsnotificationuishowhudiconclass-label-options--notification",children:["widgets/NotificationUI.showHUD(iconClass, label, [options]) \u21d2 ",(0,s.jsx)("code",{children:"Notification"})]}),"\n",(0,s.jsx)(i.p,{children:"Shows a large, centered HUD overlay (like macOS volume/brightness indicator) with an icon and label.\nThe HUD fades in/out and auto-dismisses. Only one HUD is shown at a time \u2014 calling this while a\nprevious HUD is visible replaces it instantly."}),"\n",(0,s.jsx)(i.pre,{children:(0,s.jsx)(i.code,{className:"language-js",children:'NotificationUI.showHUD("fa-solid fa-magnifying-glass-plus", "110%");\n'})}),"\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.strong,{children:"Kind"}),": inner method of ",(0,s.jsx)(i.a,{href:"#module_widgets/NotificationUI",children:(0,s.jsx)("code",{children:"widgets/NotificationUI"})}),(0,s.jsx)(i.br,{}),"\n",(0,s.jsx)(i.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"Notification"})," - Object with a done handler that resolves when the HUD closes."]}),"\n",(0,s.jsxs)(i.table,{children:[(0,s.jsx)(i.thead,{children:(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.th,{children:"Param"}),(0,s.jsx)(i.th,{children:"Type"}),(0,s.jsx)(i.th,{children:"Description"})]})}),(0,s.jsxs)(i.tbody,{children:[(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"iconClass"}),(0,s.jsx)(i.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(i.td,{children:'Font Awesome class string for the icon (e.g. "fa-solid fa-magnifying-glass-plus").'})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"label"}),(0,s.jsx)(i.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(i.td,{children:'Text to display below the icon (e.g. "110%").'})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"[options]"}),(0,s.jsx)(i.td,{children:(0,s.jsx)("code",{children:"Object"})}),(0,s.jsxs)(i.td,{children:["optional, supported options: * ",(0,s.jsx)(i.code,{children:"autoCloseTimeS"})," - Time in seconds after which the HUD auto-closes. Default is 1."]})]})]})]})]})}function h(e={}){const{wrapper:i}={...(0,o.R)(),...e.components};return i?(0,s.jsx)(i,{...e,children:(0,s.jsx)(a,{...e})}):a(e)}},28453:(e,i,t)=>{t.d(i,{R:()=>c,x:()=>d});var n=t(96540);const s={},o=n.createContext(s);function c(e){const i=n.useContext(o);return n.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function d(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:c(e.components),n.createElement(o.Provider,{value:i},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/a1b3ebea.8d8f2dbd.js b/assets/js/a1b3ebea.8d8f2dbd.js new file mode 100644 index 00000000..961cfddd --- /dev/null +++ b/assets/js/a1b3ebea.8d8f2dbd.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5403],{78595:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>a,frontMatter:()=>d,metadata:()=>r,toc:()=>h});const r=JSON.parse('{"id":"API-Reference/filesystem/WatchedRoot","title":"WatchedRoot","description":"Import :","source":"@site/api/API-Reference/filesystem/WatchedRoot.md","sourceDirName":"API-Reference/filesystem","slug":"/API-Reference/filesystem/WatchedRoot","permalink":"/api/API-Reference/filesystem/WatchedRoot","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"RemoteFile","permalink":"/api/API-Reference/filesystem/RemoteFile"},"next":{"title":"CSSUtils","permalink":"/api/API-Reference/language/CSSUtils"}}');var o=n(74848),c=n(28453);const d={},i=void 0,s={},h=[{value:"Import :",id:"import-",level:3},{value:"WatchedRoot",id:"watchedroot",level:2},{value:"new WatchedRoot(entry, filter, filterGitIgnore)",id:"new-watchedrootentry-filter-filtergitignore",level:3},{value:"watchedRoot.entry : <code>File</code> | <code>Directory</code>",id:"watchedrootentry--file--directory",level:3},{value:"watchedRoot.filter : <code>function</code>",id:"watchedrootfilter--function",level:3},{value:"watchedRoot.filterGitIgnore : <code>string</code> | <code>Array.<string></code>",id:"watchedrootfiltergitignore--string--arraystring",level:3},{value:"watchedRoot.status : <code>number</code>",id:"watchedrootstatus--number",level:3},{value:"WatchedRoot.INACTIVE : <code>number</code>",id:"watchedrootinactive--number",level:3},{value:"WatchedRoot.STARTING : <code>number</code>",id:"watchedrootstarting--number",level:3},{value:"WatchedRoot.ACTIVE : <code>number</code>",id:"watchedrootactive--number",level:3}];function l(e){const t={a:"a",code:"code",em:"em",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,c.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(t.h3,{id:"import-",children:"Import :"}),"\n",(0,o.jsx)(t.pre,{children:(0,o.jsx)(t.code,{className:"language-js",children:'const WatchedRoot = brackets.getModule("filesystem/WatchedRoot")\n'})}),"\n",(0,o.jsx)("a",{name:"WatchedRoot"}),"\n",(0,o.jsx)(t.h2,{id:"watchedroot",children:"WatchedRoot"}),"\n",(0,o.jsxs)(t.p,{children:[(0,o.jsx)(t.strong,{children:"Kind"}),": global class"]}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.a,{href:"#WatchedRoot",children:"WatchedRoot"}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsx)(t.li,{children:(0,o.jsx)(t.a,{href:"#new_WatchedRoot_new",children:"new WatchedRoot(entry, filter, filterGitIgnore)"})}),"\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.em,{children:"instance"}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.a,{href:"#WatchedRoot+entry",children:".entry"})," : ",(0,o.jsx)("code",{children:"File"})," | ",(0,o.jsx)("code",{children:"Directory"})]}),"\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.a,{href:"#WatchedRoot+filter",children:".filter"})," : ",(0,o.jsx)("code",{children:"function"})]}),"\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.a,{href:"#WatchedRoot+filterGitIgnore",children:".filterGitIgnore"})," : ",(0,o.jsx)("code",{children:"string"})," | ",(0,o.jsx)("code",{children:"Array.<string>"})]}),"\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.a,{href:"#WatchedRoot+status",children:".status"})," : ",(0,o.jsx)("code",{children:"number"})]}),"\n"]}),"\n"]}),"\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.em,{children:"static"}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.a,{href:"#WatchedRoot.INACTIVE",children:".INACTIVE"})," : ",(0,o.jsx)("code",{children:"number"})]}),"\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.a,{href:"#WatchedRoot.STARTING",children:".STARTING"})," : ",(0,o.jsx)("code",{children:"number"})]}),"\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.a,{href:"#WatchedRoot.ACTIVE",children:".ACTIVE"})," : ",(0,o.jsx)("code",{children:"number"})]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,o.jsx)("a",{name:"new_WatchedRoot_new"}),"\n",(0,o.jsx)(t.h3,{id:"new-watchedrootentry-filter-filtergitignore",children:"new WatchedRoot(entry, filter, filterGitIgnore)"}),"\n",(0,o.jsx)(t.p,{children:"Represents file or directory structure watched by the FileSystem. If the\nentry is a directory, all children (that pass the supplied filter function)\nare also watched. A WatchedRoot object begins and ends its life in the\nINACTIVE state. While in the process of starting up watchers, the WatchedRoot\nis in the STARTING state. When watchers are ready, the WatchedRoot enters\nthe ACTIVE state."}),"\n",(0,o.jsx)(t.p,{children:"See the FileSystem class for more details."}),"\n",(0,o.jsxs)(t.table,{children:[(0,o.jsx)(t.thead,{children:(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.th,{children:"Param"}),(0,o.jsx)(t.th,{children:"Type"})]})}),(0,o.jsxs)(t.tbody,{children:[(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"entry"}),(0,o.jsxs)(t.td,{children:[(0,o.jsx)("code",{children:"File"})," | ",(0,o.jsx)("code",{children:"Directory"})]})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"filter"}),(0,o.jsx)(t.td,{children:(0,o.jsx)("code",{children:"function"})})]}),(0,o.jsxs)(t.tr,{children:[(0,o.jsx)(t.td,{children:"filterGitIgnore"}),(0,o.jsxs)(t.td,{children:[(0,o.jsx)("code",{children:"string"})," | ",(0,o.jsx)("code",{children:"Array.<string>"})]})]})]})]}),"\n",(0,o.jsx)("a",{name:"WatchedRoot+entry"}),"\n",(0,o.jsxs)(t.h3,{id:"watchedrootentry--file--directory",children:["watchedRoot.entry : ",(0,o.jsx)("code",{children:"File"})," | ",(0,o.jsx)("code",{children:"Directory"})]}),"\n",(0,o.jsxs)(t.p,{children:[(0,o.jsx)(t.strong,{children:"Kind"}),": instance property of ",(0,o.jsx)(t.a,{href:"#WatchedRoot",children:(0,o.jsx)("code",{children:"WatchedRoot"})})]}),"\n",(0,o.jsx)("a",{name:"WatchedRoot+filter"}),"\n",(0,o.jsxs)(t.h3,{id:"watchedrootfilter--function",children:["watchedRoot.filter : ",(0,o.jsx)("code",{children:"function"})]}),"\n",(0,o.jsxs)(t.p,{children:[(0,o.jsx)(t.strong,{children:"Kind"}),": instance property of ",(0,o.jsx)(t.a,{href:"#WatchedRoot",children:(0,o.jsx)("code",{children:"WatchedRoot"})})]}),"\n",(0,o.jsx)("a",{name:"WatchedRoot+filterGitIgnore"}),"\n",(0,o.jsxs)(t.h3,{id:"watchedrootfiltergitignore--string--arraystring",children:["watchedRoot.filterGitIgnore : ",(0,o.jsx)("code",{children:"string"})," | ",(0,o.jsx)("code",{children:"Array.<string>"})]}),"\n",(0,o.jsxs)(t.p,{children:[(0,o.jsx)(t.strong,{children:"Kind"}),": instance property of ",(0,o.jsx)(t.a,{href:"#WatchedRoot",children:(0,o.jsx)("code",{children:"WatchedRoot"})})]}),"\n",(0,o.jsx)("a",{name:"WatchedRoot+status"}),"\n",(0,o.jsxs)(t.h3,{id:"watchedrootstatus--number",children:["watchedRoot.status : ",(0,o.jsx)("code",{children:"number"})]}),"\n",(0,o.jsxs)(t.p,{children:[(0,o.jsx)(t.strong,{children:"Kind"}),": instance property of ",(0,o.jsx)(t.a,{href:"#WatchedRoot",children:(0,o.jsx)("code",{children:"WatchedRoot"})})]}),"\n",(0,o.jsx)("a",{name:"WatchedRoot.INACTIVE"}),"\n",(0,o.jsxs)(t.h3,{id:"watchedrootinactive--number",children:["WatchedRoot.INACTIVE : ",(0,o.jsx)("code",{children:"number"})]}),"\n",(0,o.jsx)(t.p,{children:"WatchedRoot inactive"}),"\n",(0,o.jsxs)(t.p,{children:[(0,o.jsx)(t.strong,{children:"Kind"}),": static constant of ",(0,o.jsx)(t.a,{href:"#WatchedRoot",children:(0,o.jsx)("code",{children:"WatchedRoot"})})]}),"\n",(0,o.jsx)("a",{name:"WatchedRoot.STARTING"}),"\n",(0,o.jsxs)(t.h3,{id:"watchedrootstarting--number",children:["WatchedRoot.STARTING : ",(0,o.jsx)("code",{children:"number"})]}),"\n",(0,o.jsx)(t.p,{children:"WatchedRoot starting"}),"\n",(0,o.jsxs)(t.p,{children:[(0,o.jsx)(t.strong,{children:"Kind"}),": static constant of ",(0,o.jsx)(t.a,{href:"#WatchedRoot",children:(0,o.jsx)("code",{children:"WatchedRoot"})})]}),"\n",(0,o.jsx)("a",{name:"WatchedRoot.ACTIVE"}),"\n",(0,o.jsxs)(t.h3,{id:"watchedrootactive--number",children:["WatchedRoot.ACTIVE : ",(0,o.jsx)("code",{children:"number"})]}),"\n",(0,o.jsx)(t.p,{children:"WatchedRoot active"}),"\n",(0,o.jsxs)(t.p,{children:[(0,o.jsx)(t.strong,{children:"Kind"}),": static constant of ",(0,o.jsx)(t.a,{href:"#WatchedRoot",children:(0,o.jsx)("code",{children:"WatchedRoot"})})]})]})}function a(e={}){const{wrapper:t}={...(0,c.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(l,{...e})}):l(e)}},28453:(e,t,n)=>{n.d(t,{R:()=>d,x:()=>i});var r=n(96540);const o={},c=r.createContext(o);function d(e){const t=r.useContext(c);return r.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function i(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:d(e.components),r.createElement(c.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/a60aeb44.f3d971fa.js b/assets/js/a60aeb44.f3d971fa.js new file mode 100644 index 00000000..793b3448 --- /dev/null +++ b/assets/js/a60aeb44.f3d971fa.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7934],{32857:(e,i,n)=>{n.r(i),n.d(i,{assets:()=>l,contentTitle:()=>d,default:()=>p,frontMatter:()=>a,metadata:()=>o,toc:()=>h});var o=n(26470),t=n(74848),s=n(28453),r=(n(96540),n(56399));const a={slug:"release-5.1",title:"Phoenix Code 5.1: AI, Design Mode & More",description:"Phoenix Code 5.1 introduces an AI assistant powered by Claude Code, a brand new Design Mode, a rich Markdown editor, an integrated terminal, and Phoenix Neo themes.",authors:["arun","charly","devvaannsh","electrofist","ansu","phoenixBot"],tags:["AI","Claude Code","Design Mode","Markdown Editor","Terminal","Live Preview Edit","Phoenix Pro","Phoenix Neo","Windows","Linux","Mac","Release"]},d=void 0,l={authorsImageUrls:[void 0,void 0,void 0,void 0,void 0,void 0]},h=[{value:"AI with visual and runtime context",id:"ai-with-visual-and-runtime-context",level:2},{value:"Design Mode",id:"design-mode",level:2},{value:"Rich Markdown Editor",id:"rich-markdown-editor",level:2},{value:"Live Preview Edit Upgrades",id:"live-preview-edit-upgrades",level:2},{value:"View your page at any device size",id:"view-your-page-at-any-device-size",level:2},{value:"Built-in Terminal",id:"built-in-terminal",level:2},{value:"New Linux Platform",id:"new-linux-platform",level:2},{value:"All Your Tools, One Place",id:"all-your-tools-one-place",level:2},{value:"Phoenix Neo Themes",id:"phoenix-neo-themes",level:2},{value:"Notable changes and fixes",id:"notable-changes-and-fixes",level:2},{value:"Performance & Stability",id:"performance--stability",level:2},{value:"Platform Notes",id:"platform-notes",level:2},{value:"Linux",id:"linux",level:3},{value:"macOS",id:"macos",level:3},{value:"Windows",id:"windows",level:3},{value:"All changes",id:"all-changes",level:2},{value:"A Request from the Phoenix Team:",id:"a-request-from-the-phoenix-team",level:2}];function c(e){const i={a:"a",code:"code",h2:"h2",h3:"h3",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(i.p,{children:["Phoenix Code 5.1 is now available at ",(0,t.jsx)(i.a,{href:"https://phcode.io",children:"phcode.io"}),"."]}),"\n",(0,t.jsxs)(i.p,{children:["This release brings AI into the editor with ",(0,t.jsx)(i.a,{href:"#try-ideas-build-pages-and-fix-issues-with-ai",children:"Claude Code"}),", a new ",(0,t.jsx)(i.a,{href:"#design-mode",children:"Design Mode"})," for visual editing, a rich ",(0,t.jsx)(i.a,{href:"#rich-markdown-editor",children:"Markdown editor"}),", a built-in ",(0,t.jsx)(i.a,{href:"#built-in-terminal",children:"terminal"}),", responsive ",(0,t.jsx)(i.a,{href:"#view-your-page-at-any-device-size",children:"device previews"}),", a ",(0,t.jsx)(i.a,{href:"#linux",children:"rebuilt Linux app"}),", and a fresh new look with the ",(0,t.jsx)(i.a,{href:"#phoenix-neo-themes",children:"Phoenix Neo"})," themes."]}),"\n",(0,t.jsx)(i.h2,{id:"ai-with-visual-and-runtime-context",children:"AI with visual and runtime context"}),"\n",(0,t.jsx)(i.p,{children:"Phoenix Code now includes an AI assistant powered by Claude Code, designed to support your creative workflow - not replace it."}),"\n",(0,t.jsx)(i.p,{children:"Most AI coding agents only read source code. AI in Phoenix Code looks at the rendered page too. It sees what the browser shows you, not just what the stylesheet or code implies."}),"\n",(0,t.jsx)(i.p,{children:"Ask why a layout feels off, fix tricky CSS issues, improve spacing or typography, or attach files and screenshots to show exactly what you mean. Bring AI in when you need it, and keep creating without leaving your flow."}),"\n",(0,t.jsx)(r.A,{src:"https://docs-images.phcode.dev/website/videos/ai-pro-dialog.mp4"}),"\n",(0,t.jsx)(i.h2,{id:"design-mode",children:"Design Mode"}),"\n",(0,t.jsxs)(i.p,{children:["Focus fully on your content while your code stays out of the way. Work side by side with AI and Live Preview. Edit content visually, whether you're building web pages or Markdown documents. ",(0,t.jsx)(i.a,{href:"https://docs.phcode.dev/app-links/design-mode",children:"Read More..."})]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{src:"https://docs-images.phcode.dev/in-app/pro-designMode.png",alt:"Design Mode"})}),"\n",(0,t.jsx)(i.h2,{id:"rich-markdown-editor",children:"Rich Markdown Editor"}),"\n",(0,t.jsx)(i.p,{children:"Edit Markdown like a document in Live Preview. Format text, edit tables, and it\u2019s easy to add images - just paste or pick one from your device, like in Google Docs or Word."}),"\n",(0,t.jsxs)(i.p,{children:["An easier way to create Markdown files that you can share with others. ",(0,t.jsx)(i.a,{href:"https://docs.phcode.dev/app-links/markdown-editor",children:"Read More..."})]}),"\n",(0,t.jsx)(r.A,{src:"https://docs-images.phcode.dev/website/videos/markdown-pro-dialog.mp4"}),"\n",(0,t.jsx)(i.h2,{id:"live-preview-edit-upgrades",children:"Live Preview Edit Upgrades"}),"\n",(0,t.jsxs)(i.p,{children:["Live Preview Edit just got a major upgrade. You can format text with bold, italics, and more. Add new elements and update tags, classes, and attributes, all directly in Live Preview. ",(0,t.jsx)(i.a,{href:"https://docs.phcode.dev/app-links/live-preview-edit",children:"Read More..."})]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{src:"https://docs-images.phcode.dev/in-app/pro-controlBox.png",alt:"Live Preview Edit"})}),"\n",(0,t.jsx)(i.h2,{id:"view-your-page-at-any-device-size",children:"View your page at any device size"}),"\n",(0,t.jsx)(i.p,{children:"Now you can quickly see how your page looks at different device sizes right inside Phoenix Code with a single click."}),"\n",(0,t.jsxs)(i.p,{children:["Phoenix Code also picks up your CSS ",(0,t.jsx)(i.code,{children:"@media"})," breakpoints so you can jump straight to where your layout switches. ",(0,t.jsx)(i.a,{href:"https://docs.phcode.dev/app-links/resize-ruler",children:"Read More..."})]}),"\n",(0,t.jsx)(r.A,{src:"https://docs-images.phcode.dev/website/videos/device-size-pro-dialog.mp4"}),"\n",(0,t.jsx)(i.h2,{id:"built-in-terminal",children:"Built-in Terminal"}),"\n",(0,t.jsxs)(i.p,{children:["Phoenix Code now has a built-in tabbed terminal, so you can run commands right next to your code without switching windows. It supports your preferred shell and works across all supported platforms. ",(0,t.jsx)(i.a,{href:"https://docs.phcode.dev/app-links/terminal",children:"Read More..."})]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{src:"https://docs-images.phcode.dev/in-app/terminal.png",alt:"Built-in Terminal"})}),"\n",(0,t.jsx)(i.h2,{id:"new-linux-platform",children:"New Linux Platform"}),"\n",(0,t.jsx)(i.p,{children:"Phoenix Code for Linux has been rebuilt from the ground up."}),"\n",(0,t.jsx)(i.p,{children:"The previous Linux app was harder to install and didn\u2019t match the experience we wanted to deliver. We heard that feedback loud and clear. This release is powered by a brand-new Linux platform, bringing faster performance, easier installation, and a desktop experience that now stands alongside Windows and macOS."}),"\n",(0,t.jsx)(i.h2,{id:"all-your-tools-one-place",children:"All Your Tools, One Place"}),"\n",(0,t.jsxs)(i.p,{children:["We've changed how the Bottom Panel works to make it easier to access all your tools with a new tools drawer interface. Git, Terminal, Problems, and more are now all in one place. You can switch between them instantly or open multiple tools at once. ",(0,t.jsx)(i.a,{href:"https://docs.phcode.dev/app-links/git",children:"Read More..."})]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{src:"https://docs-images.phcode.dev/in-app/bottom-panel.png",alt:"Bottom Panel"})}),"\n",(0,t.jsx)(i.h2,{id:"phoenix-neo-themes",children:"Phoenix Neo Themes"}),"\n",(0,t.jsxs)(i.p,{children:["Meet ",(0,t.jsx)(i.code,{children:"Phoenix Dark Neo"})," and ",(0,t.jsx)(i.code,{children:"Phoenix Light Neo"}),", the redesigned default themes with a cleaner, modernized look."]}),"\n",(0,t.jsxs)(i.p,{children:["Switch between them anytime from ",(0,t.jsx)(i.code,{children:"View > Themes..."}),". ",(0,t.jsx)(i.a,{href:"https://docs.phcode.dev/app-links/themes",children:"Read More..."})]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{src:"https://docs-images.phcode.dev/in-app/themes-settings.png",alt:"Themes"})}),"\n",(0,t.jsx)(i.h2,{id:"notable-changes-and-fixes",children:"Notable changes and fixes"}),"\n",(0,t.jsxs)(i.ul,{children:["\n",(0,t.jsxs)(i.li,{children:["Prevented an out-of-memory crash that could occur while indexing very large projects \u2014 Phoenix now detects binary files and caps its index cache so big repos stay smooth. (",(0,t.jsx)(i.a,{href:"https://github.com/phcode-dev/phoenix/pull/2801",children:"#2801"}),")"]}),"\n",(0,t.jsxs)(i.li,{children:["Phoenix now recovers gracefully from a corrupted local database instead of crashing on startup. (",(0,t.jsx)(i.a,{href:"https://github.com/phcode-dev/phoenix/pull/2782",children:"#2782"}),")"]}),"\n",(0,t.jsxs)(i.li,{children:['Fixed a reflected XSS issue on the "browser not supported" page. (',(0,t.jsx)(i.a,{href:"https://github.com/phcode-dev/phoenix/pull/2851",children:"#2851"}),")"]}),"\n",(0,t.jsxs)(i.li,{children:["Fixed ",(0,t.jsx)(i.code,{children:"File > Quit"})," not closing multi-window sessions on the desktop app. (",(0,t.jsx)(i.a,{href:"https://github.com/phcode-dev/phoenix/pull/2639",children:"#2639"}),")"]}),"\n",(0,t.jsxs)(i.li,{children:["Fixed a thin white line at the edges of Live Preview. (",(0,t.jsx)(i.a,{href:"https://github.com/phcode-dev/phoenix/pull/2855",children:"#2855"}),")"]}),"\n",(0,t.jsxs)(i.li,{children:["Fixed a modal overlay that could remain on screen when dialogs opened in quick succession. (",(0,t.jsx)(i.a,{href:"https://github.com/phcode-dev/phoenix/pull/2789",children:"#2789"}),")"]}),"\n",(0,t.jsxs)(i.li,{children:["Fixed Find in Files button placement when the input boxes were empty. (",(0,t.jsx)(i.a,{href:"https://github.com/phcode-dev/phoenix/pull/2680",children:"#2680"}),")"]}),"\n",(0,t.jsxs)(i.li,{children:["Fixed an issue where some pro trial users were being signed out early. (",(0,t.jsx)(i.a,{href:"https://github.com/phcode-dev/phoenix/pull/2658",children:"#2658"}),")"]}),"\n"]}),"\n",(0,t.jsx)(i.h2,{id:"performance--stability",children:"Performance & Stability"}),"\n",(0,t.jsxs)(i.ul,{children:["\n",(0,t.jsxs)(i.li,{children:["Sidebar layout is now preserved across hide and show, making expansion feel near-instant. (",(0,t.jsx)(i.a,{href:"https://github.com/phcode-dev/phoenix/pull/2834",children:"#2834"}),")"]}),"\n",(0,t.jsxs)(i.li,{children:["Fixed a race condition during Live Preview load that could cause a stale page to overwrite a fresh one. (",(0,t.jsx)(i.a,{href:"https://github.com/phcode-dev/phoenix/pull/2668",children:"#2668"}),")"]}),"\n",(0,t.jsxs)(i.li,{children:["Tightened Live Preview document handling and reduced editor event leaks. (",(0,t.jsx)(i.a,{href:"https://github.com/phcode-dev/phoenix/pull/2671",children:"#2671"}),")"]}),"\n",(0,t.jsxs)(i.li,{children:["Improved Live Preview edit performance for larger pages. (",(0,t.jsx)(i.a,{href:"https://github.com/phcode-dev/phoenix/pull/2793",children:"#2793"}),")"]}),"\n",(0,t.jsxs)(i.li,{children:["Smoother scrollbar behavior in the sidebar. (",(0,t.jsx)(i.a,{href:"https://github.com/phcode-dev/phoenix/pull/2726",children:"#2726"}),", ",(0,t.jsx)(i.a,{href:"https://github.com/phcode-dev/phoenix/pull/2727",children:"#2727"}),")"]}),"\n"]}),"\n",(0,t.jsx)(i.h2,{id:"platform-notes",children:"Platform Notes"}),"\n",(0,t.jsx)(i.h3,{id:"linux",children:"Linux"}),"\n",(0,t.jsxs)(i.ul,{children:["\n",(0,t.jsxs)(i.li,{children:["The desktop app is now built on a ",(0,t.jsx)(i.strong,{children:"Chromium-based renderer"}),", replacing the previous WebKit2GTK build (which was painfully slow). It ships as a ",(0,t.jsx)(i.strong,{children:"single AppImage"})," that runs across most major distributions, and now supports ",(0,t.jsx)(i.strong,{children:"auto-update"}),", bringing it to parity with macOS and Windows. (",(0,t.jsx)(i.a,{href:"https://github.com/phcode-dev/phoenix/pull/2635",children:"#2635"}),", ",(0,t.jsx)(i.a,{href:"https://github.com/phcode-dev/phoenix/pull/2637",children:"#2637"}),", ",(0,t.jsx)(i.a,{href:"https://github.com/phcode-dev/phoenix/pull/2651",children:"#2651"}),")"]}),"\n"]}),"\n",(0,t.jsx)(i.h3,{id:"macos",children:"macOS"}),"\n",(0,t.jsxs)(i.ul,{children:["\n",(0,t.jsxs)(i.li,{children:['Avoided the Xcode "git install" dialog popping up at startup on Macs without git. (',(0,t.jsx)(i.a,{href:"https://github.com/phcode-dev/phoenix/pull/2662",children:"#2662"}),")"]}),"\n",(0,t.jsxs)(i.li,{children:["Fixed new-window dimensions being slightly off due to inner/outer measurement mix-up. (",(0,t.jsx)(i.a,{href:"https://github.com/phcode-dev/phoenix/pull/2720",children:"#2720"}),")"]}),"\n"]}),"\n",(0,t.jsx)(i.h3,{id:"windows",children:"Windows"}),"\n",(0,t.jsxs)(i.ul,{children:["\n",(0,t.jsxs)(i.li,{children:["Fixed window size jumping when opening a new window from ",(0,t.jsx)(i.code,{children:"File > New Window"}),". (",(0,t.jsx)(i.a,{href:"https://github.com/phcode-dev/phoenix/pull/2723",children:"#2723"}),")"]}),"\n"]}),"\n",(0,t.jsx)(i.h2,{id:"all-changes",children:"All changes"}),"\n",(0,t.jsxs)(i.p,{children:["Please see ",(0,t.jsx)(i.a,{href:"https://github.com/phcode-dev/phoenix/commits/main/?since=2026-01-18&until=2026-05-22",children:"this link"})," for a full list of changes in GitHub."]}),"\n",(0,t.jsx)(i.h2,{id:"a-request-from-the-phoenix-team",children:"A Request from the Phoenix Team:"}),"\n",(0,t.jsxs)(i.ul,{children:["\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.strong,{children:"Share your feedback:"})," ",(0,t.jsx)(i.a,{href:"https://github.com/orgs/phcode-dev/discussions",children:"https://github.com/orgs/phcode-dev/discussions"})]}),"\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.strong,{children:"Spread the word"})," about Phoenix to friends and colleagues."]}),"\n"]}),"\n",(0,t.jsx)(i.p,{children:"With gratitude,"}),"\n",(0,t.jsx)(i.p,{children:"The Phoenix Team"})]})}function p(e={}){const{wrapper:i}={...(0,s.R)(),...e.components};return i?(0,t.jsx)(i,{...e,children:(0,t.jsx)(c,{...e})}):c(e)}},56399:(e,i,n)=>{n.d(i,{A:()=>s});var o=n(96540),t=n(74848);const s=({src:e,winLinuxTitle:i,macTitle:n})=>{const[s,r]=(0,o.useState)("");(0,o.useEffect)((()=>{navigator.platform.toLowerCase().includes("mac")?r(n):r(i)}),[i,n]);return(0,t.jsxs)("div",{style:{maxHeight:"68vh",width:"100%",display:"flex",justifyContent:"center",alignItems:"center",flexDirection:"column"},children:[(0,t.jsxs)("video",{style:{height:"90%",width:"100%"},controls:!0,autoPlay:!0,muted:!0,loop:!0,children:[(0,t.jsx)("source",{src:e,type:"video/mp4"}),"Your browser does not support the video tag."]}),(0,t.jsx)("div",{style:{width:"100%",textAlign:"center",fontSize:"1em",marginTop:"10px"},children:s})]})}},28453:(e,i,n)=>{n.d(i,{R:()=>r,x:()=>a});var o=n(96540);const t={},s=o.createContext(t);function r(e){const i=o.useContext(s);return o.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function a(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:r(e.components),o.createElement(s.Provider,{value:i},e.children)}},26470:e=>{e.exports=JSON.parse('{"permalink":"/blog/release-5.1","editUrl":"https://github.com/phcode-dev/docs/blob/main/blog/2026-05-08-Release-5.1/index.md","source":"@site/blog/2026-05-08-Release-5.1/index.md","title":"Phoenix Code 5.1: AI, Design Mode & More","description":"Phoenix Code 5.1 introduces an AI assistant powered by Claude Code, a brand new Design Mode, a rich Markdown editor, an integrated terminal, and Phoenix Neo themes.","date":"2026-05-08T00:00:00.000Z","tags":[{"inline":true,"label":"AI","permalink":"/blog/tags/ai"},{"inline":true,"label":"Claude Code","permalink":"/blog/tags/claude-code"},{"inline":true,"label":"Design Mode","permalink":"/blog/tags/design-mode"},{"inline":true,"label":"Markdown Editor","permalink":"/blog/tags/markdown-editor"},{"inline":true,"label":"Terminal","permalink":"/blog/tags/terminal"},{"inline":true,"label":"Live Preview Edit","permalink":"/blog/tags/live-preview-edit"},{"inline":true,"label":"Phoenix Pro","permalink":"/blog/tags/phoenix-pro"},{"inline":true,"label":"Phoenix Neo","permalink":"/blog/tags/phoenix-neo"},{"inline":true,"label":"Windows","permalink":"/blog/tags/windows"},{"inline":true,"label":"Linux","permalink":"/blog/tags/linux"},{"inline":true,"label":"Mac","permalink":"/blog/tags/mac"},{"inline":true,"label":"Release","permalink":"/blog/tags/release"}],"readingTime":5.76,"hasTruncateMarker":false,"authors":[{"name":"Arun Bose","title":"Co-Founder, Phoenix Code","url":"https://github.com/abose","imageURL":"https://github.com/abose.png","key":"arun","page":null},{"name":"Charly P Abraham","title":"Co-Founder, Phoenix Code","url":"https://github.com/charlypa","imageURL":"https://github.com/charlypa.png","key":"charly","page":null},{"name":"Devansh Agarwal","title":"Founding Engineer, Phoenix Code","url":"https://github.com/devvaannsh","imageURL":"https://github.com/devvaannsh.png","key":"devvaannsh","page":null},{"name":"Krrish Parmar","title":"Designer, Phoenix Code","url":"https://github.com/Electrofist","imageURL":"https://github.com/Electrofist.png","key":"electrofist","page":null},{"name":"Ansu Ann Koshy","title":"Product Growth, Phoenix Code","url":"https://github.com/AnsuKoshy","imageURL":"https://github.com/AnsuKoshy.png","key":"ansu","page":null},{"name":"Phoenix Code Bot","title":"Our little elf who keeps the whole place together","url":"https://github.com/phoenixide","imageURL":"https://github.com/phoenixide.png","key":"phoenixBot","page":null}],"frontMatter":{"slug":"release-5.1","title":"Phoenix Code 5.1: AI, Design Mode & More","description":"Phoenix Code 5.1 introduces an AI assistant powered by Claude Code, a brand new Design Mode, a rich Markdown editor, an integrated terminal, and Phoenix Neo themes.","authors":["arun","charly","devvaannsh","electrofist","ansu","phoenixBot"],"tags":["AI","Claude Code","Design Mode","Markdown Editor","Terminal","Live Preview Edit","Phoenix Pro","Phoenix Neo","Windows","Linux","Mac","Release"]},"unlisted":false,"nextItem":{"title":"Brackets Editor in 2026: Phoenix Code Picks Up Where It Left Off","permalink":"/blog/brackets-editor-phoenix-code"}}')}}]); \ No newline at end of file diff --git a/assets/js/a6aa9e1f.460c50a4.js b/assets/js/a6aa9e1f.460c50a4.js new file mode 100644 index 00000000..2b3996ba --- /dev/null +++ b/assets/js/a6aa9e1f.460c50a4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7643],{35124:(e,t,a)=>{a.r(t),a.d(t,{default:()=>j});a(96540);var n=a(34164),s=a(44586),r=a(45500),i=a(17559),l=a(28027),o=a(47713),c=a(41463),d=a(33892),g=a(5260),m=a(44096),u=a(74848);function h(e){const t=(0,m.kJ)(e);return(0,u.jsx)(g.A,{children:(0,u.jsx)("script",{type:"application/ld+json",children:JSON.stringify(t)})})}function p(e){const{metadata:t}=e,{siteConfig:{title:a}}=(0,s.A)(),{blogDescription:n,blogTitle:i,permalink:l}=t,o="/"===l?a:i;return(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(r.be,{title:o,description:n}),(0,u.jsx)(c.A,{tag:"blog_posts_list"})]})}function x(e){const{metadata:t,items:a,sidebar:n}=e;return(0,u.jsxs)(l.A,{sidebar:n,children:[(0,u.jsx)(d.A,{items:a}),(0,u.jsx)(o.A,{metadata:t})]})}function j(e){return(0,u.jsxs)(r.e3,{className:(0,n.A)(i.G.wrapper.blogPages,i.G.page.blogListPage),children:[(0,u.jsx)(p,{...e}),(0,u.jsx)(h,{...e}),(0,u.jsx)(x,{...e})]})}},47713:(e,t,a)=>{a.d(t,{A:()=>i});a(96540);var n=a(21312),s=a(39022),r=a(74848);function i(e){const{metadata:t}=e,{previousPage:a,nextPage:i}=t;return(0,r.jsxs)("nav",{className:"pagination-nav","aria-label":(0,n.T)({id:"theme.blog.paginator.navAriaLabel",message:"Blog list page navigation",description:"The ARIA label for the blog pagination"}),children:[a&&(0,r.jsx)(s.A,{permalink:a,title:(0,r.jsx)(n.A,{id:"theme.blog.paginator.newerEntries",description:"The label used to navigate to the newer blog posts page (previous page)",children:"Newer entries"})}),i&&(0,r.jsx)(s.A,{permalink:i,title:(0,r.jsx)(n.A,{id:"theme.blog.paginator.olderEntries",description:"The label used to navigate to the older blog posts page (next page)",children:"Older entries"}),isNext:!0})]})}},82907:(e,t,a)=>{a.d(t,{A:()=>U});a(96540);var n=a(34164),s=a(44096),r=a(74848);function i({children:e,className:t}){return(0,r.jsx)("article",{className:t,children:e})}var l=a(28774);const o={title:"title_f1Hy"};function c({className:e}){const{metadata:t,isBlogPostPage:a}=(0,s.e7)(),{permalink:i,title:c}=t,d=a?"h1":"h2";return(0,r.jsx)(d,{className:(0,n.A)(o.title,e),children:a?c:(0,r.jsx)(l.A,{to:i,children:c})})}var d=a(21312),g=a(53465),m=a(36266);const u={container:"container_mt6G"};function h({readingTime:e}){const t=function(){const{selectMessage:e}=(0,g.W)();return t=>{const a=Math.ceil(t);return e(a,(0,d.T)({id:"theme.blog.post.readingTime.plurals",description:'Pluralized label for "{readingTime} min read". Use as much plural forms (separated by "|") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)',message:"One min read|{readingTime} min read"},{readingTime:a}))}}();return(0,r.jsx)(r.Fragment,{children:t(e)})}function p({date:e,formattedDate:t}){return(0,r.jsx)("time",{dateTime:e,children:t})}function x(){return(0,r.jsx)(r.Fragment,{children:" \xb7 "})}function j({className:e}){const{metadata:t}=(0,s.e7)(),{date:a,readingTime:i}=t,l=(0,m.i)({day:"numeric",month:"long",year:"numeric",timeZone:"UTC"});return(0,r.jsxs)("div",{className:(0,n.A)(u.container,"margin-vert--md",e),children:[(0,r.jsx)(p,{date:a,formattedDate:(o=a,l.format(new Date(o)))}),void 0!==i&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(x,{}),(0,r.jsx)(h,{readingTime:i})]})]});var o}var A=a(39907);const b={authorCol:"authorCol_Hf19",imageOnlyAuthorRow:"imageOnlyAuthorRow_pa_O",imageOnlyAuthorCol:"imageOnlyAuthorCol_G86a"};function f({className:e}){const{metadata:{authors:t},assets:a}=(0,s.e7)();if(0===t.length)return null;const i=t.every((({name:e})=>!e)),l=1===t.length;return(0,r.jsx)("div",{className:(0,n.A)("margin-top--md margin-bottom--sm",i?b.imageOnlyAuthorRow:"row",e),children:t.map(((e,t)=>(0,r.jsx)("div",{className:(0,n.A)(!i&&(l?"col col--12":"col col--6"),i?b.imageOnlyAuthorCol:b.authorCol),children:(0,r.jsx)(A.A,{author:{...e,imageURL:a.authorsImageUrls[t]??e.imageURL}})},t)))})}function v(){return(0,r.jsxs)("header",{children:[(0,r.jsx)(c,{}),(0,r.jsx)(j,{}),(0,r.jsx)(f,{})]})}var N=a(70440),_=a(56314);function T({children:e,className:t}){const{isBlogPostPage:a}=(0,s.e7)();return(0,r.jsx)("div",{id:a?N.LU:void 0,className:(0,n.A)("markdown",t),children:(0,r.jsx)(_.A,{children:e})})}var k=a(17559),w=a(4336),y=a(62053);function P(){return(0,r.jsx)("b",{children:(0,r.jsx)(d.A,{id:"theme.blog.post.readMore",description:"The label used in blog post item excerpts to link to full blog posts",children:"Read more"})})}function R(e){const{blogPostTitle:t,...a}=e;return(0,r.jsx)(l.A,{"aria-label":(0,d.T)({message:"Read more about {title}",id:"theme.blog.post.readMoreLabel",description:"The ARIA label for the link to full blog posts from excerpts"},{title:t}),...a,children:(0,r.jsx)(P,{})})}function C(){const{metadata:e,isBlogPostPage:t}=(0,s.e7)(),{tags:a,title:i,editUrl:l,hasTruncateMarker:o,lastUpdatedBy:c,lastUpdatedAt:d}=e,g=!t&&o,m=a.length>0;if(!(m||g||l))return null;if(t){const e=!!(l||d||c);return(0,r.jsxs)("footer",{className:"docusaurus-mt-lg",children:[m&&(0,r.jsx)("div",{className:(0,n.A)("row","margin-top--sm",k.G.blog.blogFooterEditMetaRow),children:(0,r.jsx)("div",{className:"col",children:(0,r.jsx)(y.A,{tags:a})})}),e&&(0,r.jsx)(w.A,{className:(0,n.A)("margin-top--sm",k.G.blog.blogFooterEditMetaRow),editUrl:l,lastUpdatedAt:d,lastUpdatedBy:c})]})}return(0,r.jsxs)("footer",{className:"row docusaurus-mt-lg",children:[m&&(0,r.jsx)("div",{className:(0,n.A)("col",{"col--9":g}),children:(0,r.jsx)(y.A,{tags:a})}),g&&(0,r.jsx)("div",{className:(0,n.A)("col text--right",{"col--3":m}),children:(0,r.jsx)(R,{blogPostTitle:i,to:e.permalink})})]})}function U({children:e,className:t}){const a=function(){const{isBlogPostPage:e}=(0,s.e7)();return e?void 0:"margin-bottom--xl"}();return(0,r.jsxs)(i,{className:(0,n.A)(a,t),children:[(0,r.jsx)(v,{}),(0,r.jsx)(T,{children:e}),(0,r.jsx)(C,{})]})}},33892:(e,t,a)=>{a.d(t,{A:()=>i});a(96540);var n=a(44096),s=a(82907),r=a(74848);function i({items:e,component:t=s.A}){return(0,r.jsx)(r.Fragment,{children:e.map((({content:e})=>(0,r.jsx)(n.in,{content:e,children:(0,r.jsx)(t,{children:(0,r.jsx)(e,{})})},e.metadata.permalink)))})}},39022:(e,t,a)=>{a.d(t,{A:()=>i});a(96540);var n=a(34164),s=a(28774),r=a(74848);function i(e){const{permalink:t,title:a,subLabel:i,isNext:l}=e;return(0,r.jsxs)(s.A,{className:(0,n.A)("pagination-nav__link",l?"pagination-nav__link--next":"pagination-nav__link--prev"),to:t,children:[i&&(0,r.jsx)("div",{className:"pagination-nav__sublabel",children:i}),(0,r.jsx)("div",{className:"pagination-nav__label",children:a})]})}},56133:(e,t,a)=>{a.d(t,{A:()=>l});a(96540);var n=a(34164),s=a(28774);const r={tag:"tag_zVej",tagRegular:"tagRegular_sFm0",tagWithCount:"tagWithCount_h2kH"};var i=a(74848);function l({permalink:e,label:t,count:a,description:l}){return(0,i.jsxs)(s.A,{rel:"tag",href:e,title:l,className:(0,n.A)(r.tag,a?r.tagWithCount:r.tagRegular),children:[t,a&&(0,i.jsx)("span",{children:a})]})}},62053:(e,t,a)=>{a.d(t,{A:()=>o});a(96540);var n=a(34164),s=a(21312),r=a(56133);const i={tags:"tags_jXut",tag:"tag_QGVx"};var l=a(74848);function o({tags:e}){return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("b",{children:(0,l.jsx)(s.A,{id:"theme.tags.tagsListLabel",description:"The label alongside a tag list",children:"Tags:"})}),(0,l.jsx)("ul",{className:(0,n.A)(i.tags,"padding--none","margin-left--sm"),children:e.map((e=>(0,l.jsx)("li",{className:i.tag,children:(0,l.jsx)(r.A,{...e})},e.permalink)))})]})}}}]); \ No newline at end of file diff --git a/assets/js/a7456010.db4ccd1a.js b/assets/js/a7456010.db4ccd1a.js new file mode 100644 index 00000000..94359761 --- /dev/null +++ b/assets/js/a7456010.db4ccd1a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1235],{88552:s=>{s.exports=JSON.parse('{"name":"docusaurus-plugin-content-pages","id":"default"}')}}]); \ No newline at end of file diff --git a/assets/js/a7690819.a89e099f.js b/assets/js/a7690819.a89e099f.js new file mode 100644 index 00000000..d5c09f3b --- /dev/null +++ b/assets/js/a7690819.a89e099f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[750],{59484:(e,n,l)=>{l.r(n),l.d(n,{assets:()=>a,contentTitle:()=>r,default:()=>o,frontMatter:()=>d,metadata:()=>i,toc:()=>E});const i=JSON.parse('{"id":"API-Reference/command/Commands","title":"Commands","description":"Import :","source":"@site/api/API-Reference/command/Commands.md","sourceDirName":"API-Reference/command","slug":"/API-Reference/command/Commands","permalink":"/api/API-Reference/command/Commands","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"CommandManager","permalink":"/api/API-Reference/command/CommandManager"},"next":{"title":"KeyBindingManager","permalink":"/api/API-Reference/command/KeyBindingManager"}}');var _=l(74848),s=l(28453);const d={},r=void 0,a={},E=[{value:"Import :",id:"import-",level:3},{value:"FILE_NEW_UNTITLED",id:"file_new_untitled",level:2},{value:"FILE_NEW",id:"file_new",level:2},{value:"FILE_NEW_PROJECT",id:"file_new_project",level:2},{value:"FILE_NEW_FOLDER",id:"file_new_folder",level:2},{value:"FILE_DUPLICATE",id:"file_duplicate",level:2},{value:"FILE_DUPLICATE_FILE",id:"file_duplicate_file",level:2},{value:"FILE_DOWNLOAD",id:"file_download",level:2},{value:"FILE_DOWNLOAD_PROJECT",id:"file_download_project",level:2},{value:"FILE_CUT",id:"file_cut",level:2},{value:"FILE_COPY",id:"file_copy",level:2},{value:"FILE_COPY_PATH",id:"file_copy_path",level:2},{value:"FILE_PASTE",id:"file_paste",level:2},{value:"FILE_OPEN",id:"file_open",level:2},{value:"FILE_OPEN_FOLDER",id:"file_open_folder",level:2},{value:"FILE_SAVE",id:"file_save",level:2},{value:"FILE_SAVE_ALL",id:"file_save_all",level:2},{value:"FILE_SAVE_AS",id:"file_save_as",level:2},{value:"FILE_CLOSE",id:"file_close",level:2},{value:"FILE_CLOSE_ALL",id:"file_close_all",level:2},{value:"FILE_CLOSE_LIST",id:"file_close_list",level:2},{value:"FILE_REOPEN_CLOSED",id:"file_reopen_closed",level:2},{value:"FILE_OPEN_DROPPED_FILES",id:"file_open_dropped_files",level:2},{value:"FILE_LIVE_FILE_PREVIEW",id:"file_live_file_preview",level:2},{value:"FILE_LIVE_FILE_PREVIEW_SETTINGS",id:"file_live_file_preview_settings",level:2},{value:"TOGGLE_LIVE_PREVIEW_MB_MODE",id:"toggle_live_preview_mb_mode",level:2},{value:"CMD_RELOAD_LIVE_PREVIEW",id:"cmd_reload_live_preview",level:2},{value:"FILE_PROJECT_SETTINGS",id:"file_project_settings",level:2},{value:"FILE_RENAME",id:"file_rename",level:2},{value:"FILE_DELETE",id:"file_delete",level:2},{value:"FILE_EXTENSION_MANAGER",id:"file_extension_manager",level:2},{value:"FILE_REFRESH",id:"file_refresh",level:2},{value:"FILE_SHOW_FOLDERS_FIRST",id:"file_show_folders_first",level:2},{value:"FILE_OPEN_PREFERENCES",id:"file_open_preferences",level:2},{value:"FILE_OPEN_KEYMAP",id:"file_open_keymap",level:2},{value:"FILE_NEW_WINDOW",id:"file_new_window",level:2},{value:"FILE_CLOSE_WINDOW",id:"file_close_window",level:2},{value:"FILE_QUIT",id:"file_quit",level:2},{value:"EDIT_UNDO",id:"edit_undo",level:2},{value:"EDIT_REDO",id:"edit_redo",level:2},{value:"EDIT_CUT",id:"edit_cut",level:2},{value:"EDIT_COPY",id:"edit_copy",level:2},{value:"EDIT_PASTE",id:"edit_paste",level:2},{value:"EDIT_SELECT_ALL",id:"edit_select_all",level:2},{value:"EDIT_SELECT_LINE",id:"edit_select_line",level:2},{value:"EDIT_SPLIT_SEL_INTO_LINES",id:"edit_split_sel_into_lines",level:2},{value:"EDIT_ADD_CUR_TO_NEXT_LINE",id:"edit_add_cur_to_next_line",level:2},{value:"EDIT_ADD_CUR_TO_PREV_LINE",id:"edit_add_cur_to_prev_line",level:2},{value:"EDIT_INDENT",id:"edit_indent",level:2},{value:"EDIT_UNINDENT",id:"edit_unindent",level:2},{value:"EDIT_DUPLICATE",id:"edit_duplicate",level:2},{value:"EDIT_DELETE_LINES",id:"edit_delete_lines",level:2},{value:"EDIT_LINE_COMMENT",id:"edit_line_comment",level:2},{value:"EDIT_BLOCK_COMMENT",id:"edit_block_comment",level:2},{value:"EDIT_LINE_UP",id:"edit_line_up",level:2},{value:"EDIT_LINE_DOWN",id:"edit_line_down",level:2},{value:"EDIT_OPEN_LINE_ABOVE",id:"edit_open_line_above",level:2},{value:"EDIT_OPEN_LINE_BELOW",id:"edit_open_line_below",level:2},{value:"TOGGLE_CLOSE_BRACKETS",id:"toggle_close_brackets",level:2},{value:"SHOW_CODE_HINTS",id:"show_code_hints",level:2},{value:"EDIT_BEAUTIFY_CODE",id:"edit_beautify_code",level:2},{value:"EDIT_BEAUTIFY_CODE_ON_SAVE",id:"edit_beautify_code_on_save",level:2},{value:"CMD_FIND",id:"cmd_find",level:2},{value:"CMD_FIND_IN_FILES",id:"cmd_find_in_files",level:2},{value:"CMD_FIND_IN_SUBTREE",id:"cmd_find_in_subtree",level:2},{value:"CMD_FIND_NEXT",id:"cmd_find_next",level:2},{value:"CMD_FIND_PREVIOUS",id:"cmd_find_previous",level:2},{value:"CMD_FIND_ALL_AND_SELECT",id:"cmd_find_all_and_select",level:2},{value:"CMD_ADD_NEXT_MATCH",id:"cmd_add_next_match",level:2},{value:"CMD_SKIP_CURRENT_MATCH",id:"cmd_skip_current_match",level:2},{value:"CMD_REPLACE",id:"cmd_replace",level:2},{value:"CMD_REPLACE_IN_FILES",id:"cmd_replace_in_files",level:2},{value:"CMD_REPLACE_IN_SUBTREE",id:"cmd_replace_in_subtree",level:2},{value:"CMD_FIND_ALL_REFERENCES",id:"cmd_find_all_references",level:2},{value:"CMD_THEMES_OPEN_SETTINGS",id:"cmd_themes_open_settings",level:2},{value:"VIEW_HIDE_SIDEBAR",id:"view_hide_sidebar",level:2},{value:"VIEW_TOGGLE_DESIGN_MODE",id:"view_toggle_design_mode",level:2},{value:"TOGGLE_TABBAR",id:"toggle_tabbar",level:2},{value:"VIEW_ZOOM_IN",id:"view_zoom_in",level:2},{value:"VIEW_ZOOM_OUT",id:"view_zoom_out",level:2},{value:"VIEW_ZOOM_SUBMENU",id:"view_zoom_submenu",level:2},{value:"OPEN_IN_SUBMENU",id:"open_in_submenu",level:2},{value:"OPEN_IN_SUBMENU_WS",id:"open_in_submenu_ws",level:2},{value:"VIEW_INCREASE_FONT_SIZE",id:"view_increase_font_size",level:2},{value:"VIEW_DECREASE_FONT_SIZE",id:"view_decrease_font_size",level:2},{value:"VIEW_RESTORE_FONT_SIZE",id:"view_restore_font_size",level:2},{value:"VIEW_SCROLL_LINE_UP",id:"view_scroll_line_up",level:2},{value:"VIEW_SCROLL_LINE_DOWN",id:"view_scroll_line_down",level:2},{value:"VIEW_TOGGLE_INSPECTION",id:"view_toggle_inspection",level:2},{value:"VIEW_TOGGLE_PROBLEMS",id:"view_toggle_problems",level:2},{value:"VIEW_TERMINAL",id:"view_terminal",level:2},{value:"TOGGLE_LINE_NUMBERS",id:"toggle_line_numbers",level:2},{value:"TOGGLE_ACTIVE_LINE",id:"toggle_active_line",level:2},{value:"TOGGLE_WORD_WRAP",id:"toggle_word_wrap",level:2},{value:"TOGGLE_RULERS",id:"toggle_rulers",level:2},{value:"TOGGLE_INDENT_GUIDES",id:"toggle_indent_guides",level:2},{value:"TOGGLE_SEARCH_AUTOHIDE",id:"toggle_search_autohide",level:2},{value:"CMD_OPEN",id:"cmd_open",level:2},{value:"CMD_ADD_TO_WORKINGSET_AND_OPEN",id:"cmd_add_to_workingset_and_open",level:2},{value:"NAVIGATE_NEXT_DOC",id:"navigate_next_doc",level:2},{value:"NAVIGATE_PREV_DOC",id:"navigate_prev_doc",level:2},{value:"NAVIGATE_NEXT_DOC_LIST_ORDER",id:"navigate_next_doc_list_order",level:2},{value:"NAVIGATE_PREV_DOC_LIST_ORDER",id:"navigate_prev_doc_list_order",level:2},{value:"NAVIGATE_SHOW_IN_FILE_TREE",id:"navigate_show_in_file_tree",level:2},{value:"NAVIGATE_SHOW_IN_OS",id:"navigate_show_in_os",level:2},{value:"NAVIGATE_OPEN_IN_TERMINAL",id:"navigate_open_in_terminal",level:2},{value:"NAVIGATE_OPEN_IN_INTEGRATED_TERMINAL",id:"navigate_open_in_integrated_terminal",level:2},{value:"NAVIGATE_OPEN_IN_POWERSHELL",id:"navigate_open_in_powershell",level:2},{value:"NAVIGATE_OPEN_IN_DEFAULT_APP",id:"navigate_open_in_default_app",level:2},{value:"NAVIGATE_QUICK_OPEN",id:"navigate_quick_open",level:2},{value:"NAVIGATE_JUMPTO_DEFINITION",id:"navigate_jumpto_definition",level:2},{value:"NAVIGATE_GOTO_DEFINITION",id:"navigate_goto_definition",level:2},{value:"NAVIGATE_GOTO_DEFINITION_PROJECT",id:"navigate_goto_definition_project",level:2},{value:"NAVIGATE_GOTO_LINE",id:"navigate_goto_line",level:2},{value:"NAVIGATE_GOTO_FIRST_PROBLEM",id:"navigate_goto_first_problem",level:2},{value:"NAVIGATE_GOTO_NEXT_PROBLEM",id:"navigate_goto_next_problem",level:2},{value:"NAVIGATE_GOTO_PREV_PROBLEM",id:"navigate_goto_prev_problem",level:2},{value:"TOGGLE_QUICK_EDIT",id:"toggle_quick_edit",level:2},{value:"TOGGLE_QUICK_DOCS",id:"toggle_quick_docs",level:2},{value:"QUICK_EDIT_NEXT_MATCH",id:"quick_edit_next_match",level:2},{value:"QUICK_EDIT_PREV_MATCH",id:"quick_edit_prev_match",level:2},{value:"CSS_QUICK_EDIT_NEW_RULE",id:"css_quick_edit_new_rule",level:2},{value:"HELP_HOW_TO_USE_BRACKETS",id:"help_how_to_use_brackets",level:2},{value:"HELP_DOCS",id:"help_docs",level:2},{value:"HELP_SUPPORT",id:"help_support",level:2},{value:"HELP_GET_PRO",id:"help_get_pro",level:2},{value:"HELP_CANCEL_TRIAL",id:"help_cancel_trial",level:2},{value:"HELP_VIEW_LICENSE",id:"help_view_license",level:2},{value:"HELP_MANAGE_LICENSES",id:"help_manage_licenses",level:2},{value:"HELP_SUGGEST",id:"help_suggest",level:2},{value:"HELP_REPORT_ISSUE",id:"help_report_issue",level:2},{value:"HELP_RELEASE_NOTES",id:"help_release_notes",level:2},{value:"HELP_GET_INVOLVED",id:"help_get_involved",level:2},{value:"HELP_SHOW_EXT_FOLDER",id:"help_show_ext_folder",level:2},{value:"HELP_HOMEPAGE",id:"help_homepage",level:2},{value:"HELP_YOUTUBE",id:"help_youtube",level:2},{value:"HELP_TWITTER",id:"help_twitter",level:2},{value:"HELP_TOGGLE_SHORTCUTS_PANEL",id:"help_toggle_shortcuts_panel",level:2},{value:"HELP_CHECK_UPDATES",id:"help_check_updates",level:2},{value:"HELP_AUTO_UPDATE",id:"help_auto_update",level:2},{value:"CMD_WORKINGSET_SORT_BY_ADDED",id:"cmd_workingset_sort_by_added",level:2},{value:"CMD_WORKINGSET_SORT_BY_NAME",id:"cmd_workingset_sort_by_name",level:2},{value:"CMD_WORKINGSET_SORT_BY_TYPE",id:"cmd_workingset_sort_by_type",level:2},{value:"CMD_WORKING_SORT_TOGGLE_AUTO",id:"cmd_working_sort_toggle_auto",level:2},{value:"CMD_TOGGLE_SHOW_WORKING_SET",id:"cmd_toggle_show_working_set",level:2},{value:"CMD_TOGGLE_SHOW_FILE_TABS",id:"cmd_toggle_show_file_tabs",level:2},{value:"CMD_KEYBOARD_NAV_UI_OVERLAY",id:"cmd_keyboard_nav_ui_overlay",level:2},{value:"CMD_SPLITVIEW_NONE",id:"cmd_splitview_none",level:2},{value:"CMD_SPLITVIEW_VERTICAL",id:"cmd_splitview_vertical",level:2},{value:"CMD_SPLITVIEW_HORIZONTAL",id:"cmd_splitview_horizontal",level:2},{value:"CMD_SWITCH_PANE_FOCUS",id:"cmd_switch_pane_focus",level:2},{value:"HELP_ABOUT",id:"help_about",level:2},{value:"APP_RELOAD",id:"app_reload",level:2},{value:"APP_RELOAD_WITHOUT_EXTS",id:"app_reload_without_exts",level:2},{value:"APP_ABORT_QUIT",id:"app_abort_quit",level:2},{value:"APP_BEFORE_MENUPOPUP",id:"app_before_menupopup",level:2},{value:"HIDE_SIDEBAR",id:"hide_sidebar",level:2},{value:"SHOW_SIDEBAR",id:"show_sidebar",level:2},{value:"REINSTALL_CREDS",id:"reinstall_creds",level:2},{value:"CMD_GIT_INIT",id:"cmd_git_init",level:2},{value:"CMD_GIT_CLONE",id:"cmd_git_clone",level:2},{value:"CMD_GIT_CLONE_WITH_URL",id:"cmd_git_clone_with_url",level:2},{value:"CMD_GIT_SETTINGS_COMMAND_ID",id:"cmd_git_settings_command_id",level:2},{value:"CMD_GIT_CLOSE_UNMODIFIED",id:"cmd_git_close_unmodified",level:2},{value:"CMD_GIT_CHECKOUT",id:"cmd_git_checkout",level:2},{value:"CMD_GIT_RESET_HARD",id:"cmd_git_reset_hard",level:2},{value:"CMD_GIT_RESET_SOFT",id:"cmd_git_reset_soft",level:2},{value:"CMD_GIT_RESET_MIXED",id:"cmd_git_reset_mixed",level:2},{value:"CMD_GIT_TOGGLE_PANEL",id:"cmd_git_toggle_panel",level:2},{value:"CMD_CUSTOM_SNIPPETS_PANEL",id:"cmd_custom_snippets_panel",level:2},{value:"CMD_GIT_GOTO_NEXT_CHANGE",id:"cmd_git_goto_next_change",level:2},{value:"CMD_GIT_GOTO_PREVIOUS_CHANGE",id:"cmd_git_goto_previous_change",level:2},{value:"CMD_GIT_COMMIT_CURRENT",id:"cmd_git_commit_current",level:2},{value:"CMD_GIT_COMMIT_ALL",id:"cmd_git_commit_all",level:2},{value:"CMD_GIT_FETCH",id:"cmd_git_fetch",level:2},{value:"CMD_GIT_PULL",id:"cmd_git_pull",level:2},{value:"CMD_GIT_PUSH",id:"cmd_git_push",level:2},{value:"CMD_GIT_REFRESH",id:"cmd_git_refresh",level:2},{value:"CMD_GIT_TAG",id:"cmd_git_tag",level:2},{value:"CMD_GIT_DISCARD_ALL_CHANGES",id:"cmd_git_discard_all_changes",level:2},{value:"CMD_GIT_UNDO_LAST_COMMIT",id:"cmd_git_undo_last_commit",level:2},{value:"CMD_GIT_CHANGE_USERNAME",id:"cmd_git_change_username",level:2},{value:"CMD_GIT_CHANGE_EMAIL",id:"cmd_git_change_email",level:2},{value:"CMD_GIT_GERRIT_PUSH_REF",id:"cmd_git_gerrit_push_ref",level:2},{value:"CMD_GIT_AUTHORS_OF_SELECTION",id:"cmd_git_authors_of_selection",level:2},{value:"CMD_GIT_AUTHORS_OF_FILE",id:"cmd_git_authors_of_file",level:2},{value:"CMD_GIT_TOGGLE_UNTRACKED",id:"cmd_git_toggle_untracked",level:2},{value:"CMD_GIT_HISTORY_GLOBAL",id:"cmd_git_history_global",level:2},{value:"CMD_GIT_HISTORY_FILE",id:"cmd_git_history_file",level:2}];function c(e){const n={code:"code",h2:"h2",h3:"h3",p:"p",pre:"pre",strong:"strong",...(0,s.R)(),...e.components};return(0,_.jsxs)(_.Fragment,{children:[(0,_.jsx)(n.h3,{id:"import-",children:"Import :"}),"\n",(0,_.jsx)(n.pre,{children:(0,_.jsx)(n.code,{className:"language-js",children:'const Commands = brackets.getModule("command/Commands")\n'})}),"\n",(0,_.jsx)("a",{name:"FILE_NEW_UNTITLED"}),"\n",(0,_.jsx)(n.h2,{id:"file_new_untitled",children:"FILE_NEW_UNTITLED"}),"\n",(0,_.jsx)(n.p,{children:"Creates a new untitled document"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"FILE_NEW"}),"\n",(0,_.jsx)(n.h2,{id:"file_new",children:"FILE_NEW"}),"\n",(0,_.jsx)(n.p,{children:"Creates a new file in the current project"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"FILE_NEW_PROJECT"}),"\n",(0,_.jsx)(n.h2,{id:"file_new_project",children:"FILE_NEW_PROJECT"}),"\n",(0,_.jsx)(n.p,{children:"Creates a new project"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"FILE_NEW_FOLDER"}),"\n",(0,_.jsx)(n.h2,{id:"file_new_folder",children:"FILE_NEW_FOLDER"}),"\n",(0,_.jsx)(n.p,{children:"Creates a new folder in the current project"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"FILE_DUPLICATE"}),"\n",(0,_.jsx)(n.h2,{id:"file_duplicate",children:"FILE_DUPLICATE"}),"\n",(0,_.jsx)(n.p,{children:"Duplicates the selected file or folder"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"FILE_DUPLICATE_FILE"}),"\n",(0,_.jsx)(n.h2,{id:"file_duplicate_file",children:"FILE_DUPLICATE_FILE"}),"\n",(0,_.jsx)(n.p,{children:"Duplicates the selected file"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"FILE_DOWNLOAD"}),"\n",(0,_.jsx)(n.h2,{id:"file_download",children:"FILE_DOWNLOAD"}),"\n",(0,_.jsx)(n.p,{children:"Downloads the selected file"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"FILE_DOWNLOAD_PROJECT"}),"\n",(0,_.jsx)(n.h2,{id:"file_download_project",children:"FILE_DOWNLOAD_PROJECT"}),"\n",(0,_.jsx)(n.p,{children:"Downloads the entire project"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"FILE_CUT"}),"\n",(0,_.jsx)(n.h2,{id:"file_cut",children:"FILE_CUT"}),"\n",(0,_.jsx)(n.p,{children:"Cuts the selected file or folder to clipboard"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"FILE_COPY"}),"\n",(0,_.jsx)(n.h2,{id:"file_copy",children:"FILE_COPY"}),"\n",(0,_.jsx)(n.p,{children:"Copies the selected file or folder to clipboard"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"FILE_COPY_PATH"}),"\n",(0,_.jsx)(n.h2,{id:"file_copy_path",children:"FILE_COPY_PATH"}),"\n",(0,_.jsx)(n.p,{children:"Copies the path of selected file or folder"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"FILE_PASTE"}),"\n",(0,_.jsx)(n.h2,{id:"file_paste",children:"FILE_PASTE"}),"\n",(0,_.jsx)(n.p,{children:"Pastes file or folder from clipboard"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"FILE_OPEN"}),"\n",(0,_.jsx)(n.h2,{id:"file_open",children:"FILE_OPEN"}),"\n",(0,_.jsx)(n.p,{children:"Opens a file"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"FILE_OPEN_FOLDER"}),"\n",(0,_.jsx)(n.h2,{id:"file_open_folder",children:"FILE_OPEN_FOLDER"}),"\n",(0,_.jsx)(n.p,{children:"Opens a folder as a project"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"FILE_SAVE"}),"\n",(0,_.jsx)(n.h2,{id:"file_save",children:"FILE_SAVE"}),"\n",(0,_.jsx)(n.p,{children:"Saves the current file"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"FILE_SAVE_ALL"}),"\n",(0,_.jsx)(n.h2,{id:"file_save_all",children:"FILE_SAVE_ALL"}),"\n",(0,_.jsx)(n.p,{children:"Saves all open files"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"FILE_SAVE_AS"}),"\n",(0,_.jsx)(n.h2,{id:"file_save_as",children:"FILE_SAVE_AS"}),"\n",(0,_.jsx)(n.p,{children:"Saves current file with a new name"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"FILE_CLOSE"}),"\n",(0,_.jsx)(n.h2,{id:"file_close",children:"FILE_CLOSE"}),"\n",(0,_.jsx)(n.p,{children:"Closes the current file"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"FILE_CLOSE_ALL"}),"\n",(0,_.jsx)(n.h2,{id:"file_close_all",children:"FILE_CLOSE_ALL"}),"\n",(0,_.jsx)(n.p,{children:"Closes all open files"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"FILE_CLOSE_LIST"}),"\n",(0,_.jsx)(n.h2,{id:"file_close_list",children:"FILE_CLOSE_LIST"}),"\n",(0,_.jsx)(n.p,{children:"Closes files from list"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"FILE_REOPEN_CLOSED"}),"\n",(0,_.jsx)(n.h2,{id:"file_reopen_closed",children:"FILE_REOPEN_CLOSED"}),"\n",(0,_.jsx)(n.p,{children:"Reopens last closed file"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"FILE_OPEN_DROPPED_FILES"}),"\n",(0,_.jsx)(n.h2,{id:"file_open_dropped_files",children:"FILE_OPEN_DROPPED_FILES"}),"\n",(0,_.jsx)(n.p,{children:"Opens files that were dropped"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"FILE_LIVE_FILE_PREVIEW"}),"\n",(0,_.jsx)(n.h2,{id:"file_live_file_preview",children:"FILE_LIVE_FILE_PREVIEW"}),"\n",(0,_.jsx)(n.p,{children:"Toggles live file preview"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"FILE_LIVE_FILE_PREVIEW_SETTINGS"}),"\n",(0,_.jsx)(n.h2,{id:"file_live_file_preview_settings",children:"FILE_LIVE_FILE_PREVIEW_SETTINGS"}),"\n",(0,_.jsx)(n.p,{children:"Opens live preview settings"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"TOGGLE_LIVE_PREVIEW_MB_MODE"}),"\n",(0,_.jsx)(n.h2,{id:"toggle_live_preview_mb_mode",children:"TOGGLE_LIVE_PREVIEW_MB_MODE"}),"\n",(0,_.jsx)(n.p,{children:"Toggles live preview multi-browser mode"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"CMD_RELOAD_LIVE_PREVIEW"}),"\n",(0,_.jsx)(n.h2,{id:"cmd_reload_live_preview",children:"CMD_RELOAD_LIVE_PREVIEW"}),"\n",(0,_.jsx)(n.p,{children:"Reloads live preview"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"FILE_PROJECT_SETTINGS"}),"\n",(0,_.jsx)(n.h2,{id:"file_project_settings",children:"FILE_PROJECT_SETTINGS"}),"\n",(0,_.jsx)(n.p,{children:"Opens project settings"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"FILE_RENAME"}),"\n",(0,_.jsx)(n.h2,{id:"file_rename",children:"FILE_RENAME"}),"\n",(0,_.jsx)(n.p,{children:"Renames selected file or folder"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"FILE_DELETE"}),"\n",(0,_.jsx)(n.h2,{id:"file_delete",children:"FILE_DELETE"}),"\n",(0,_.jsx)(n.p,{children:"Deletes selected file or folder"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"FILE_EXTENSION_MANAGER"}),"\n",(0,_.jsx)(n.h2,{id:"file_extension_manager",children:"FILE_EXTENSION_MANAGER"}),"\n",(0,_.jsx)(n.p,{children:"Opens extension manager"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"FILE_REFRESH"}),"\n",(0,_.jsx)(n.h2,{id:"file_refresh",children:"FILE_REFRESH"}),"\n",(0,_.jsx)(n.p,{children:"Refreshes the file tree"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"FILE_SHOW_FOLDERS_FIRST"}),"\n",(0,_.jsx)(n.h2,{id:"file_show_folders_first",children:"FILE_SHOW_FOLDERS_FIRST"}),"\n",(0,_.jsx)(n.p,{children:"Toggles show folders first in file tree"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"FILE_OPEN_PREFERENCES"}),"\n",(0,_.jsx)(n.h2,{id:"file_open_preferences",children:"FILE_OPEN_PREFERENCES"}),"\n",(0,_.jsx)(n.p,{children:"Opens preferences"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"FILE_OPEN_KEYMAP"}),"\n",(0,_.jsx)(n.h2,{id:"file_open_keymap",children:"FILE_OPEN_KEYMAP"}),"\n",(0,_.jsx)(n.p,{children:"Opens keymap settings"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"FILE_NEW_WINDOW"}),"\n",(0,_.jsx)(n.h2,{id:"file_new_window",children:"FILE_NEW_WINDOW"}),"\n",(0,_.jsx)(n.p,{children:"Opens new window"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"FILE_CLOSE_WINDOW"}),"\n",(0,_.jsx)(n.h2,{id:"file_close_window",children:"FILE_CLOSE_WINDOW"}),"\n",(0,_.jsx)(n.p,{children:"Closes current window"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"FILE_QUIT"}),"\n",(0,_.jsx)(n.h2,{id:"file_quit",children:"FILE_QUIT"}),"\n",(0,_.jsx)(n.p,{children:"Quits the application"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"EDIT_UNDO"}),"\n",(0,_.jsx)(n.h2,{id:"edit_undo",children:"EDIT_UNDO"}),"\n",(0,_.jsx)(n.p,{children:"Undoes the last edit operation"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"EDIT_REDO"}),"\n",(0,_.jsx)(n.h2,{id:"edit_redo",children:"EDIT_REDO"}),"\n",(0,_.jsx)(n.p,{children:"Redoes the last undone edit operation"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"EDIT_CUT"}),"\n",(0,_.jsx)(n.h2,{id:"edit_cut",children:"EDIT_CUT"}),"\n",(0,_.jsx)(n.p,{children:"Cuts the selected text to clipboard"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"EDIT_COPY"}),"\n",(0,_.jsx)(n.h2,{id:"edit_copy",children:"EDIT_COPY"}),"\n",(0,_.jsx)(n.p,{children:"Copies the selected text to clipboard"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"EDIT_PASTE"}),"\n",(0,_.jsx)(n.h2,{id:"edit_paste",children:"EDIT_PASTE"}),"\n",(0,_.jsx)(n.p,{children:"Pastes text from clipboard"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"EDIT_SELECT_ALL"}),"\n",(0,_.jsx)(n.h2,{id:"edit_select_all",children:"EDIT_SELECT_ALL"}),"\n",(0,_.jsx)(n.p,{children:"Selects all text in the current document"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"EDIT_SELECT_LINE"}),"\n",(0,_.jsx)(n.h2,{id:"edit_select_line",children:"EDIT_SELECT_LINE"}),"\n",(0,_.jsx)(n.p,{children:"Selects the current line"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"EDIT_SPLIT_SEL_INTO_LINES"}),"\n",(0,_.jsx)(n.h2,{id:"edit_split_sel_into_lines",children:"EDIT_SPLIT_SEL_INTO_LINES"}),"\n",(0,_.jsx)(n.p,{children:"Splits selection into individual lines"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"EDIT_ADD_CUR_TO_NEXT_LINE"}),"\n",(0,_.jsx)(n.h2,{id:"edit_add_cur_to_next_line",children:"EDIT_ADD_CUR_TO_NEXT_LINE"}),"\n",(0,_.jsx)(n.p,{children:"Adds cursor to the next line"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"EDIT_ADD_CUR_TO_PREV_LINE"}),"\n",(0,_.jsx)(n.h2,{id:"edit_add_cur_to_prev_line",children:"EDIT_ADD_CUR_TO_PREV_LINE"}),"\n",(0,_.jsx)(n.p,{children:"Adds cursor to the previous line"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"EDIT_INDENT"}),"\n",(0,_.jsx)(n.h2,{id:"edit_indent",children:"EDIT_INDENT"}),"\n",(0,_.jsx)(n.p,{children:"Indents the selected text"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"EDIT_UNINDENT"}),"\n",(0,_.jsx)(n.h2,{id:"edit_unindent",children:"EDIT_UNINDENT"}),"\n",(0,_.jsx)(n.p,{children:"Unindents the selected text"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"EDIT_DUPLICATE"}),"\n",(0,_.jsx)(n.h2,{id:"edit_duplicate",children:"EDIT_DUPLICATE"}),"\n",(0,_.jsx)(n.p,{children:"Duplicates the selected text"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"EDIT_DELETE_LINES"}),"\n",(0,_.jsx)(n.h2,{id:"edit_delete_lines",children:"EDIT_DELETE_LINES"}),"\n",(0,_.jsx)(n.p,{children:"Deletes the current line(s)"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"EDIT_LINE_COMMENT"}),"\n",(0,_.jsx)(n.h2,{id:"edit_line_comment",children:"EDIT_LINE_COMMENT"}),"\n",(0,_.jsx)(n.p,{children:"Toggles line comment for current selection"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"EDIT_BLOCK_COMMENT"}),"\n",(0,_.jsx)(n.h2,{id:"edit_block_comment",children:"EDIT_BLOCK_COMMENT"}),"\n",(0,_.jsx)(n.p,{children:"Toggles block comment for current selection"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"EDIT_LINE_UP"}),"\n",(0,_.jsx)(n.h2,{id:"edit_line_up",children:"EDIT_LINE_UP"}),"\n",(0,_.jsx)(n.p,{children:"Moves current line up"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"EDIT_LINE_DOWN"}),"\n",(0,_.jsx)(n.h2,{id:"edit_line_down",children:"EDIT_LINE_DOWN"}),"\n",(0,_.jsx)(n.p,{children:"Moves current line down"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"EDIT_OPEN_LINE_ABOVE"}),"\n",(0,_.jsx)(n.h2,{id:"edit_open_line_above",children:"EDIT_OPEN_LINE_ABOVE"}),"\n",(0,_.jsx)(n.p,{children:"Opens a new line above current line"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"EDIT_OPEN_LINE_BELOW"}),"\n",(0,_.jsx)(n.h2,{id:"edit_open_line_below",children:"EDIT_OPEN_LINE_BELOW"}),"\n",(0,_.jsx)(n.p,{children:"Opens a new line below current line"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"TOGGLE_CLOSE_BRACKETS"}),"\n",(0,_.jsx)(n.h2,{id:"toggle_close_brackets",children:"TOGGLE_CLOSE_BRACKETS"}),"\n",(0,_.jsx)(n.p,{children:"Toggles auto close brackets"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"SHOW_CODE_HINTS"}),"\n",(0,_.jsx)(n.h2,{id:"show_code_hints",children:"SHOW_CODE_HINTS"}),"\n",(0,_.jsx)(n.p,{children:"Shows code hints"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"EDIT_BEAUTIFY_CODE"}),"\n",(0,_.jsx)(n.h2,{id:"edit_beautify_code",children:"EDIT_BEAUTIFY_CODE"}),"\n",(0,_.jsx)(n.p,{children:"Beautifies the current code"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"EDIT_BEAUTIFY_CODE_ON_SAVE"}),"\n",(0,_.jsx)(n.h2,{id:"edit_beautify_code_on_save",children:"EDIT_BEAUTIFY_CODE_ON_SAVE"}),"\n",(0,_.jsx)(n.p,{children:"Toggles code beautification on save"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"CMD_FIND"}),"\n",(0,_.jsx)(n.h2,{id:"cmd_find",children:"CMD_FIND"}),"\n",(0,_.jsx)(n.p,{children:"Opens find dialog"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"CMD_FIND_IN_FILES"}),"\n",(0,_.jsx)(n.h2,{id:"cmd_find_in_files",children:"CMD_FIND_IN_FILES"}),"\n",(0,_.jsx)(n.p,{children:"Opens find in files dialog"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"CMD_FIND_IN_SUBTREE"}),"\n",(0,_.jsx)(n.h2,{id:"cmd_find_in_subtree",children:"CMD_FIND_IN_SUBTREE"}),"\n",(0,_.jsx)(n.p,{children:"Opens find in subtree dialog"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"CMD_FIND_NEXT"}),"\n",(0,_.jsx)(n.h2,{id:"cmd_find_next",children:"CMD_FIND_NEXT"}),"\n",(0,_.jsx)(n.p,{children:"Finds next match"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"CMD_FIND_PREVIOUS"}),"\n",(0,_.jsx)(n.h2,{id:"cmd_find_previous",children:"CMD_FIND_PREVIOUS"}),"\n",(0,_.jsx)(n.p,{children:"Finds previous match"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"CMD_FIND_ALL_AND_SELECT"}),"\n",(0,_.jsx)(n.h2,{id:"cmd_find_all_and_select",children:"CMD_FIND_ALL_AND_SELECT"}),"\n",(0,_.jsx)(n.p,{children:"Finds all matches and selects them"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"CMD_ADD_NEXT_MATCH"}),"\n",(0,_.jsx)(n.h2,{id:"cmd_add_next_match",children:"CMD_ADD_NEXT_MATCH"}),"\n",(0,_.jsx)(n.p,{children:"Adds next match to selection"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"CMD_SKIP_CURRENT_MATCH"}),"\n",(0,_.jsx)(n.h2,{id:"cmd_skip_current_match",children:"CMD_SKIP_CURRENT_MATCH"}),"\n",(0,_.jsx)(n.p,{children:"Skips current match"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"CMD_REPLACE"}),"\n",(0,_.jsx)(n.h2,{id:"cmd_replace",children:"CMD_REPLACE"}),"\n",(0,_.jsx)(n.p,{children:"Replaces current match"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"CMD_REPLACE_IN_FILES"}),"\n",(0,_.jsx)(n.h2,{id:"cmd_replace_in_files",children:"CMD_REPLACE_IN_FILES"}),"\n",(0,_.jsx)(n.p,{children:"Opens replace in files dialog"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"CMD_REPLACE_IN_SUBTREE"}),"\n",(0,_.jsx)(n.h2,{id:"cmd_replace_in_subtree",children:"CMD_REPLACE_IN_SUBTREE"}),"\n",(0,_.jsx)(n.p,{children:"Opens replace in subtree dialog"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"CMD_FIND_ALL_REFERENCES"}),"\n",(0,_.jsx)(n.h2,{id:"cmd_find_all_references",children:"CMD_FIND_ALL_REFERENCES"}),"\n",(0,_.jsx)(n.p,{children:"Opens find references panel"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"CMD_THEMES_OPEN_SETTINGS"}),"\n",(0,_.jsx)(n.h2,{id:"cmd_themes_open_settings",children:"CMD_THEMES_OPEN_SETTINGS"}),"\n",(0,_.jsx)(n.p,{children:"Opens theme settings"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"VIEW_HIDE_SIDEBAR"}),"\n",(0,_.jsx)(n.h2,{id:"view_hide_sidebar",children:"VIEW_HIDE_SIDEBAR"}),"\n",(0,_.jsx)(n.p,{children:"Toggles sidebar visibility"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"VIEW_TOGGLE_DESIGN_MODE"}),"\n",(0,_.jsx)(n.h2,{id:"view_toggle_design_mode",children:"VIEW_TOGGLE_DESIGN_MODE"}),"\n",(0,_.jsx)(n.p,{children:"Toggles the design (full live-preview) mode \u2014 collapses/expands the editor"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"TOGGLE_TABBAR"}),"\n",(0,_.jsx)(n.h2,{id:"toggle_tabbar",children:"TOGGLE_TABBAR"}),"\n",(0,_.jsx)(n.p,{children:"Toggles tabbar visibility"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"VIEW_ZOOM_IN"}),"\n",(0,_.jsx)(n.h2,{id:"view_zoom_in",children:"VIEW_ZOOM_IN"}),"\n",(0,_.jsx)(n.p,{children:"Zooms in the editor view"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"VIEW_ZOOM_OUT"}),"\n",(0,_.jsx)(n.h2,{id:"view_zoom_out",children:"VIEW_ZOOM_OUT"}),"\n",(0,_.jsx)(n.p,{children:"Zooms out the editor view"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"VIEW_ZOOM_SUBMENU"}),"\n",(0,_.jsx)(n.h2,{id:"view_zoom_submenu",children:"VIEW_ZOOM_SUBMENU"}),"\n",(0,_.jsx)(n.p,{children:"Submenu for zoom options"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"OPEN_IN_SUBMENU"}),"\n",(0,_.jsx)(n.h2,{id:"open_in_submenu",children:"OPEN_IN_SUBMENU"}),"\n",(0,_.jsx)(n.p,{children:"Submenu for Open in project context menu"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"OPEN_IN_SUBMENU_WS"}),"\n",(0,_.jsx)(n.h2,{id:"open_in_submenu_ws",children:"OPEN_IN_SUBMENU_WS"}),"\n",(0,_.jsx)(n.p,{children:"Submenu for Open in working set context menu"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"VIEW_INCREASE_FONT_SIZE"}),"\n",(0,_.jsx)(n.h2,{id:"view_increase_font_size",children:"VIEW_INCREASE_FONT_SIZE"}),"\n",(0,_.jsx)(n.p,{children:"Increases editor font size"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"VIEW_DECREASE_FONT_SIZE"}),"\n",(0,_.jsx)(n.h2,{id:"view_decrease_font_size",children:"VIEW_DECREASE_FONT_SIZE"}),"\n",(0,_.jsx)(n.p,{children:"Decreases editor font size"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"VIEW_RESTORE_FONT_SIZE"}),"\n",(0,_.jsx)(n.h2,{id:"view_restore_font_size",children:"VIEW_RESTORE_FONT_SIZE"}),"\n",(0,_.jsx)(n.p,{children:"Restores editor font size to default"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"VIEW_SCROLL_LINE_UP"}),"\n",(0,_.jsx)(n.h2,{id:"view_scroll_line_up",children:"VIEW_SCROLL_LINE_UP"}),"\n",(0,_.jsx)(n.p,{children:"Scrolls editor view up by one line"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"VIEW_SCROLL_LINE_DOWN"}),"\n",(0,_.jsx)(n.h2,{id:"view_scroll_line_down",children:"VIEW_SCROLL_LINE_DOWN"}),"\n",(0,_.jsx)(n.p,{children:"Scrolls editor view down by one line"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"VIEW_TOGGLE_INSPECTION"}),"\n",(0,_.jsx)(n.h2,{id:"view_toggle_inspection",children:"VIEW_TOGGLE_INSPECTION"}),"\n",(0,_.jsx)(n.p,{children:"Toggles code inspection"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"VIEW_TOGGLE_PROBLEMS"}),"\n",(0,_.jsx)(n.h2,{id:"view_toggle_problems",children:"VIEW_TOGGLE_PROBLEMS"}),"\n",(0,_.jsx)(n.p,{children:"Toggles problems panel visibility"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"VIEW_TERMINAL"}),"\n",(0,_.jsx)(n.h2,{id:"view_terminal",children:"VIEW_TERMINAL"}),"\n",(0,_.jsx)(n.p,{children:"Opens the terminal panel"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"TOGGLE_LINE_NUMBERS"}),"\n",(0,_.jsx)(n.h2,{id:"toggle_line_numbers",children:"TOGGLE_LINE_NUMBERS"}),"\n",(0,_.jsx)(n.p,{children:"Toggles line numbers visibility"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"TOGGLE_ACTIVE_LINE"}),"\n",(0,_.jsx)(n.h2,{id:"toggle_active_line",children:"TOGGLE_ACTIVE_LINE"}),"\n",(0,_.jsx)(n.p,{children:"Toggles active line highlight"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"TOGGLE_WORD_WRAP"}),"\n",(0,_.jsx)(n.h2,{id:"toggle_word_wrap",children:"TOGGLE_WORD_WRAP"}),"\n",(0,_.jsx)(n.p,{children:"Toggles word wrap"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"TOGGLE_RULERS"}),"\n",(0,_.jsx)(n.h2,{id:"toggle_rulers",children:"TOGGLE_RULERS"}),"\n",(0,_.jsx)(n.p,{children:"Toggles rulers visibility"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"TOGGLE_INDENT_GUIDES"}),"\n",(0,_.jsx)(n.h2,{id:"toggle_indent_guides",children:"TOGGLE_INDENT_GUIDES"}),"\n",(0,_.jsx)(n.p,{children:"Toggles indent guides visibility"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"TOGGLE_SEARCH_AUTOHIDE"}),"\n",(0,_.jsx)(n.h2,{id:"toggle_search_autohide",children:"TOGGLE_SEARCH_AUTOHIDE"}),"\n",(0,_.jsx)(n.p,{children:"Toggles search auto-hide behavior"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"CMD_OPEN"}),"\n",(0,_.jsx)(n.h2,{id:"cmd_open",children:"CMD_OPEN"}),"\n",(0,_.jsx)(n.p,{children:"Opens a file"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"CMD_ADD_TO_WORKINGSET_AND_OPEN"}),"\n",(0,_.jsx)(n.h2,{id:"cmd_add_to_workingset_and_open",children:"CMD_ADD_TO_WORKINGSET_AND_OPEN"}),"\n",(0,_.jsx)(n.p,{children:"Adds file to working set and opens it"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"NAVIGATE_NEXT_DOC"}),"\n",(0,_.jsx)(n.h2,{id:"navigate_next_doc",children:"NAVIGATE_NEXT_DOC"}),"\n",(0,_.jsx)(n.p,{children:"Goes to next document"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"NAVIGATE_PREV_DOC"}),"\n",(0,_.jsx)(n.h2,{id:"navigate_prev_doc",children:"NAVIGATE_PREV_DOC"}),"\n",(0,_.jsx)(n.p,{children:"Goes to previous document"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"NAVIGATE_NEXT_DOC_LIST_ORDER"}),"\n",(0,_.jsx)(n.h2,{id:"navigate_next_doc_list_order",children:"NAVIGATE_NEXT_DOC_LIST_ORDER"}),"\n",(0,_.jsx)(n.p,{children:"Goes to next document in list order"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"NAVIGATE_PREV_DOC_LIST_ORDER"}),"\n",(0,_.jsx)(n.h2,{id:"navigate_prev_doc_list_order",children:"NAVIGATE_PREV_DOC_LIST_ORDER"}),"\n",(0,_.jsx)(n.p,{children:"Goes to previous document in list order"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"NAVIGATE_SHOW_IN_FILE_TREE"}),"\n",(0,_.jsx)(n.h2,{id:"navigate_show_in_file_tree",children:"NAVIGATE_SHOW_IN_FILE_TREE"}),"\n",(0,_.jsx)(n.p,{children:"Shows current file in file tree"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"NAVIGATE_SHOW_IN_OS"}),"\n",(0,_.jsx)(n.h2,{id:"navigate_show_in_os",children:"NAVIGATE_SHOW_IN_OS"}),"\n",(0,_.jsx)(n.p,{children:"Shows current file in OS file explorer"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"NAVIGATE_OPEN_IN_TERMINAL"}),"\n",(0,_.jsx)(n.h2,{id:"navigate_open_in_terminal",children:"NAVIGATE_OPEN_IN_TERMINAL"}),"\n",(0,_.jsx)(n.p,{children:"Shows current file in OS Terminal"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"NAVIGATE_OPEN_IN_INTEGRATED_TERMINAL"}),"\n",(0,_.jsx)(n.h2,{id:"navigate_open_in_integrated_terminal",children:"NAVIGATE_OPEN_IN_INTEGRATED_TERMINAL"}),"\n",(0,_.jsx)(n.p,{children:"Opens integrated terminal at the selected file/folder path"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"NAVIGATE_OPEN_IN_POWERSHELL"}),"\n",(0,_.jsx)(n.h2,{id:"navigate_open_in_powershell",children:"NAVIGATE_OPEN_IN_POWERSHELL"}),"\n",(0,_.jsx)(n.p,{children:"Shows current file in open powershell in Windows os"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"NAVIGATE_OPEN_IN_DEFAULT_APP"}),"\n",(0,_.jsx)(n.h2,{id:"navigate_open_in_default_app",children:"NAVIGATE_OPEN_IN_DEFAULT_APP"}),"\n",(0,_.jsx)(n.p,{children:"Open current file in the default associated app in the os"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"NAVIGATE_QUICK_OPEN"}),"\n",(0,_.jsx)(n.h2,{id:"navigate_quick_open",children:"NAVIGATE_QUICK_OPEN"}),"\n",(0,_.jsx)(n.p,{children:"Opens quick open dialog"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"NAVIGATE_JUMPTO_DEFINITION"}),"\n",(0,_.jsx)(n.h2,{id:"navigate_jumpto_definition",children:"NAVIGATE_JUMPTO_DEFINITION"}),"\n",(0,_.jsx)(n.p,{children:"Jumps to definition of symbol at cursor"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"NAVIGATE_GOTO_DEFINITION"}),"\n",(0,_.jsx)(n.h2,{id:"navigate_goto_definition",children:"NAVIGATE_GOTO_DEFINITION"}),"\n",(0,_.jsx)(n.p,{children:"Opens go to definition search"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"NAVIGATE_GOTO_DEFINITION_PROJECT"}),"\n",(0,_.jsx)(n.h2,{id:"navigate_goto_definition_project",children:"NAVIGATE_GOTO_DEFINITION_PROJECT"}),"\n",(0,_.jsx)(n.p,{children:"Opens go to definition in project search"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"NAVIGATE_GOTO_LINE"}),"\n",(0,_.jsx)(n.h2,{id:"navigate_goto_line",children:"NAVIGATE_GOTO_LINE"}),"\n",(0,_.jsx)(n.p,{children:"Opens go to line dialog"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"NAVIGATE_GOTO_FIRST_PROBLEM"}),"\n",(0,_.jsx)(n.h2,{id:"navigate_goto_first_problem",children:"NAVIGATE_GOTO_FIRST_PROBLEM"}),"\n",(0,_.jsx)(n.p,{children:"Goes to first problem in current file"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"NAVIGATE_GOTO_NEXT_PROBLEM"}),"\n",(0,_.jsx)(n.h2,{id:"navigate_goto_next_problem",children:"NAVIGATE_GOTO_NEXT_PROBLEM"}),"\n",(0,_.jsx)(n.p,{children:"Goes to next problem in current file"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"NAVIGATE_GOTO_PREV_PROBLEM"}),"\n",(0,_.jsx)(n.h2,{id:"navigate_goto_prev_problem",children:"NAVIGATE_GOTO_PREV_PROBLEM"}),"\n",(0,_.jsx)(n.p,{children:"Goes to previous problem in current file"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"TOGGLE_QUICK_EDIT"}),"\n",(0,_.jsx)(n.h2,{id:"toggle_quick_edit",children:"TOGGLE_QUICK_EDIT"}),"\n",(0,_.jsx)(n.p,{children:"Toggles quick edit widget"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"TOGGLE_QUICK_DOCS"}),"\n",(0,_.jsx)(n.h2,{id:"toggle_quick_docs",children:"TOGGLE_QUICK_DOCS"}),"\n",(0,_.jsx)(n.p,{children:"Toggles quick docs widget"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"QUICK_EDIT_NEXT_MATCH"}),"\n",(0,_.jsx)(n.h2,{id:"quick_edit_next_match",children:"QUICK_EDIT_NEXT_MATCH"}),"\n",(0,_.jsx)(n.p,{children:"Goes to next match in quick edit"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"QUICK_EDIT_PREV_MATCH"}),"\n",(0,_.jsx)(n.h2,{id:"quick_edit_prev_match",children:"QUICK_EDIT_PREV_MATCH"}),"\n",(0,_.jsx)(n.p,{children:"Goes to previous match in quick edit"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"CSS_QUICK_EDIT_NEW_RULE"}),"\n",(0,_.jsx)(n.h2,{id:"css_quick_edit_new_rule",children:"CSS_QUICK_EDIT_NEW_RULE"}),"\n",(0,_.jsx)(n.p,{children:"Creates new CSS rule in quick edit"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"HELP_HOW_TO_USE_BRACKETS"}),"\n",(0,_.jsx)(n.h2,{id:"help_how_to_use_brackets",children:"HELP_HOW_TO_USE_BRACKETS"}),"\n",(0,_.jsx)(n.p,{children:"Opens how to use Brackets guide"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"HELP_DOCS"}),"\n",(0,_.jsx)(n.h2,{id:"help_docs",children:"HELP_DOCS"}),"\n",(0,_.jsx)(n.p,{children:"Opens documentation"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"HELP_SUPPORT"}),"\n",(0,_.jsx)(n.h2,{id:"help_support",children:"HELP_SUPPORT"}),"\n",(0,_.jsx)(n.p,{children:"Opens support resources"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"HELP_GET_PRO"}),"\n",(0,_.jsx)(n.h2,{id:"help_get_pro",children:"HELP_GET_PRO"}),"\n",(0,_.jsx)(n.p,{children:"Opens Phoenix Pro page"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"HELP_CANCEL_TRIAL"}),"\n",(0,_.jsx)(n.h2,{id:"help_cancel_trial",children:"HELP_CANCEL_TRIAL"}),"\n",(0,_.jsx)(n.p,{children:"Cancels Phoenix Pro trial"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"HELP_VIEW_LICENSE"}),"\n",(0,_.jsx)(n.h2,{id:"help_view_license",children:"HELP_VIEW_LICENSE"}),"\n",(0,_.jsx)(n.p,{children:"Opens Phoenix License page"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"HELP_MANAGE_LICENSES"}),"\n",(0,_.jsx)(n.h2,{id:"help_manage_licenses",children:"HELP_MANAGE_LICENSES"}),"\n",(0,_.jsx)(n.p,{children:"Manage Pro licenses"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"HELP_SUGGEST"}),"\n",(0,_.jsx)(n.h2,{id:"help_suggest",children:"HELP_SUGGEST"}),"\n",(0,_.jsx)(n.p,{children:"Opens feature suggestion page"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"HELP_REPORT_ISSUE"}),"\n",(0,_.jsx)(n.h2,{id:"help_report_issue",children:"HELP_REPORT_ISSUE"}),"\n",(0,_.jsx)(n.p,{children:"Opens report issue page"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"HELP_RELEASE_NOTES"}),"\n",(0,_.jsx)(n.h2,{id:"help_release_notes",children:"HELP_RELEASE_NOTES"}),"\n",(0,_.jsx)(n.p,{children:"Opens release notes"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"HELP_GET_INVOLVED"}),"\n",(0,_.jsx)(n.h2,{id:"help_get_involved",children:"HELP_GET_INVOLVED"}),"\n",(0,_.jsx)(n.p,{children:"Opens contributor guidelines"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"HELP_SHOW_EXT_FOLDER"}),"\n",(0,_.jsx)(n.h2,{id:"help_show_ext_folder",children:"HELP_SHOW_EXT_FOLDER"}),"\n",(0,_.jsx)(n.p,{children:"Shows extensions folder in OS"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"HELP_HOMEPAGE"}),"\n",(0,_.jsx)(n.h2,{id:"help_homepage",children:"HELP_HOMEPAGE"}),"\n",(0,_.jsx)(n.p,{children:"Opens project homepage"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"HELP_YOUTUBE"}),"\n",(0,_.jsx)(n.h2,{id:"help_youtube",children:"HELP_YOUTUBE"}),"\n",(0,_.jsx)(n.p,{children:"Opens YouTube channel"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"HELP_TWITTER"}),"\n",(0,_.jsx)(n.h2,{id:"help_twitter",children:"HELP_TWITTER"}),"\n",(0,_.jsx)(n.p,{children:"Opens Twitter page"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"HELP_TOGGLE_SHORTCUTS_PANEL"}),"\n",(0,_.jsx)(n.h2,{id:"help_toggle_shortcuts_panel",children:"HELP_TOGGLE_SHORTCUTS_PANEL"}),"\n",(0,_.jsx)(n.p,{children:"Toggles keyboard shortcuts panel"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"HELP_CHECK_UPDATES"}),"\n",(0,_.jsx)(n.h2,{id:"help_check_updates",children:"HELP_CHECK_UPDATES"}),"\n",(0,_.jsx)(n.p,{children:"Checks for updates"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"HELP_AUTO_UPDATE"}),"\n",(0,_.jsx)(n.h2,{id:"help_auto_update",children:"HELP_AUTO_UPDATE"}),"\n",(0,_.jsx)(n.p,{children:"Toggles auto update"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"CMD_WORKINGSET_SORT_BY_ADDED"}),"\n",(0,_.jsx)(n.h2,{id:"cmd_workingset_sort_by_added",children:"CMD_WORKINGSET_SORT_BY_ADDED"}),"\n",(0,_.jsx)(n.p,{children:"Sorts working set by order files were added"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"CMD_WORKINGSET_SORT_BY_NAME"}),"\n",(0,_.jsx)(n.h2,{id:"cmd_workingset_sort_by_name",children:"CMD_WORKINGSET_SORT_BY_NAME"}),"\n",(0,_.jsx)(n.p,{children:"Sorts working set by file name"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"CMD_WORKINGSET_SORT_BY_TYPE"}),"\n",(0,_.jsx)(n.h2,{id:"cmd_workingset_sort_by_type",children:"CMD_WORKINGSET_SORT_BY_TYPE"}),"\n",(0,_.jsx)(n.p,{children:"Sorts working set by file type"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"CMD_WORKING_SORT_TOGGLE_AUTO"}),"\n",(0,_.jsx)(n.h2,{id:"cmd_working_sort_toggle_auto",children:"CMD_WORKING_SORT_TOGGLE_AUTO"}),"\n",(0,_.jsx)(n.p,{children:"Toggles automatic working set sorting"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"CMD_TOGGLE_SHOW_WORKING_SET"}),"\n",(0,_.jsx)(n.h2,{id:"cmd_toggle_show_working_set",children:"CMD_TOGGLE_SHOW_WORKING_SET"}),"\n",(0,_.jsx)(n.p,{children:"Toggles working set visibility"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"CMD_TOGGLE_SHOW_FILE_TABS"}),"\n",(0,_.jsx)(n.h2,{id:"cmd_toggle_show_file_tabs",children:"CMD_TOGGLE_SHOW_FILE_TABS"}),"\n",(0,_.jsx)(n.p,{children:"Toggles file tabs visibility"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"CMD_KEYBOARD_NAV_UI_OVERLAY"}),"\n",(0,_.jsx)(n.h2,{id:"cmd_keyboard_nav_ui_overlay",children:"CMD_KEYBOARD_NAV_UI_OVERLAY"}),"\n",(0,_.jsx)(n.p,{children:"Opens keyboard navigation UI overlay"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"CMD_SPLITVIEW_NONE"}),"\n",(0,_.jsx)(n.h2,{id:"cmd_splitview_none",children:"CMD_SPLITVIEW_NONE"}),"\n",(0,_.jsx)(n.p,{children:"Removes split view"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"CMD_SPLITVIEW_VERTICAL"}),"\n",(0,_.jsx)(n.h2,{id:"cmd_splitview_vertical",children:"CMD_SPLITVIEW_VERTICAL"}),"\n",(0,_.jsx)(n.p,{children:"Splits view vertically"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"CMD_SPLITVIEW_HORIZONTAL"}),"\n",(0,_.jsx)(n.h2,{id:"cmd_splitview_horizontal",children:"CMD_SPLITVIEW_HORIZONTAL"}),"\n",(0,_.jsx)(n.p,{children:"Splits view horizontally"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"CMD_SWITCH_PANE_FOCUS"}),"\n",(0,_.jsx)(n.h2,{id:"cmd_switch_pane_focus",children:"CMD_SWITCH_PANE_FOCUS"}),"\n",(0,_.jsx)(n.p,{children:"Switches focus between split panes"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"HELP_ABOUT"}),"\n",(0,_.jsx)(n.h2,{id:"help_about",children:"HELP_ABOUT"}),"\n",(0,_.jsx)(n.p,{children:"Shows about dialog"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"APP_RELOAD"}),"\n",(0,_.jsx)(n.h2,{id:"app_reload",children:"APP_RELOAD"}),"\n",(0,_.jsx)(n.p,{children:"Reloads the application"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"APP_RELOAD_WITHOUT_EXTS"}),"\n",(0,_.jsx)(n.h2,{id:"app_reload_without_exts",children:"APP_RELOAD_WITHOUT_EXTS"}),"\n",(0,_.jsx)(n.p,{children:"Reloads the application without extensions"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"APP_ABORT_QUIT"}),"\n",(0,_.jsx)(n.h2,{id:"app_abort_quit",children:"APP_ABORT_QUIT"}),"\n",(0,_.jsx)(n.p,{children:"Aborts application quit"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"APP_BEFORE_MENUPOPUP"}),"\n",(0,_.jsx)(n.h2,{id:"app_before_menupopup",children:"APP_BEFORE_MENUPOPUP"}),"\n",(0,_.jsx)(n.p,{children:"Handler before menu popup"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"HIDE_SIDEBAR"}),"\n",(0,_.jsx)(n.h2,{id:"hide_sidebar",children:"HIDE_SIDEBAR"}),"\n",(0,_.jsx)(n.p,{children:"Hides the sidebar"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"SHOW_SIDEBAR"}),"\n",(0,_.jsx)(n.h2,{id:"show_sidebar",children:"SHOW_SIDEBAR"}),"\n",(0,_.jsx)(n.p,{children:"Shows the sidebar"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"REINSTALL_CREDS"}),"\n",(0,_.jsx)(n.h2,{id:"reinstall_creds",children:"REINSTALL_CREDS"}),"\n",(0,_.jsx)(n.p,{children:"Reinstalls credentials in keychain"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"CMD_GIT_INIT"}),"\n",(0,_.jsx)(n.h2,{id:"cmd_git_init",children:"CMD_GIT_INIT"}),"\n",(0,_.jsx)(n.p,{children:"Initializes a new git repository"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"CMD_GIT_CLONE"}),"\n",(0,_.jsx)(n.h2,{id:"cmd_git_clone",children:"CMD_GIT_CLONE"}),"\n",(0,_.jsx)(n.p,{children:"Clones a git repository"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"CMD_GIT_CLONE_WITH_URL"}),"\n",(0,_.jsx)(n.h2,{id:"cmd_git_clone_with_url",children:"CMD_GIT_CLONE_WITH_URL"}),"\n",(0,_.jsx)(n.p,{children:"Clones a git repository with a specific URL"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"CMD_GIT_SETTINGS_COMMAND_ID"}),"\n",(0,_.jsx)(n.h2,{id:"cmd_git_settings_command_id",children:"CMD_GIT_SETTINGS_COMMAND_ID"}),"\n",(0,_.jsx)(n.p,{children:"Opens git settings"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"CMD_GIT_CLOSE_UNMODIFIED"}),"\n",(0,_.jsx)(n.h2,{id:"cmd_git_close_unmodified",children:"CMD_GIT_CLOSE_UNMODIFIED"}),"\n",(0,_.jsx)(n.p,{children:"Closes unmodified files"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"CMD_GIT_CHECKOUT"}),"\n",(0,_.jsx)(n.h2,{id:"cmd_git_checkout",children:"CMD_GIT_CHECKOUT"}),"\n",(0,_.jsx)(n.p,{children:"Checks out a branch or commit"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"CMD_GIT_RESET_HARD"}),"\n",(0,_.jsx)(n.h2,{id:"cmd_git_reset_hard",children:"CMD_GIT_RESET_HARD"}),"\n",(0,_.jsx)(n.p,{children:"Performs a hard reset"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"CMD_GIT_RESET_SOFT"}),"\n",(0,_.jsx)(n.h2,{id:"cmd_git_reset_soft",children:"CMD_GIT_RESET_SOFT"}),"\n",(0,_.jsx)(n.p,{children:"Performs a soft reset"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"CMD_GIT_RESET_MIXED"}),"\n",(0,_.jsx)(n.h2,{id:"cmd_git_reset_mixed",children:"CMD_GIT_RESET_MIXED"}),"\n",(0,_.jsx)(n.p,{children:"Performs a mixed reset"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"CMD_GIT_TOGGLE_PANEL"}),"\n",(0,_.jsx)(n.h2,{id:"cmd_git_toggle_panel",children:"CMD_GIT_TOGGLE_PANEL"}),"\n",(0,_.jsx)(n.p,{children:"Toggles the git panel"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"CMD_CUSTOM_SNIPPETS_PANEL"}),"\n",(0,_.jsx)(n.h2,{id:"cmd_custom_snippets_panel",children:"CMD_CUSTOM_SNIPPETS_PANEL"}),"\n",(0,_.jsx)(n.p,{children:"Toggles the custom snippets panel"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"CMD_GIT_GOTO_NEXT_CHANGE"}),"\n",(0,_.jsx)(n.h2,{id:"cmd_git_goto_next_change",children:"CMD_GIT_GOTO_NEXT_CHANGE"}),"\n",(0,_.jsx)(n.p,{children:"Goes to next git change"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"CMD_GIT_GOTO_PREVIOUS_CHANGE"}),"\n",(0,_.jsx)(n.h2,{id:"cmd_git_goto_previous_change",children:"CMD_GIT_GOTO_PREVIOUS_CHANGE"}),"\n",(0,_.jsx)(n.p,{children:"Goes to previous git change"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"CMD_GIT_COMMIT_CURRENT"}),"\n",(0,_.jsx)(n.h2,{id:"cmd_git_commit_current",children:"CMD_GIT_COMMIT_CURRENT"}),"\n",(0,_.jsx)(n.p,{children:"Commits current file changes"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"CMD_GIT_COMMIT_ALL"}),"\n",(0,_.jsx)(n.h2,{id:"cmd_git_commit_all",children:"CMD_GIT_COMMIT_ALL"}),"\n",(0,_.jsx)(n.p,{children:"Commits all changes"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"CMD_GIT_FETCH"}),"\n",(0,_.jsx)(n.h2,{id:"cmd_git_fetch",children:"CMD_GIT_FETCH"}),"\n",(0,_.jsx)(n.p,{children:"Fetches from remote"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"CMD_GIT_PULL"}),"\n",(0,_.jsx)(n.h2,{id:"cmd_git_pull",children:"CMD_GIT_PULL"}),"\n",(0,_.jsx)(n.p,{children:"Pulls from remote"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"CMD_GIT_PUSH"}),"\n",(0,_.jsx)(n.h2,{id:"cmd_git_push",children:"CMD_GIT_PUSH"}),"\n",(0,_.jsx)(n.p,{children:"Pushes to remote"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"CMD_GIT_REFRESH"}),"\n",(0,_.jsx)(n.h2,{id:"cmd_git_refresh",children:"CMD_GIT_REFRESH"}),"\n",(0,_.jsx)(n.p,{children:"Refreshes git status"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"CMD_GIT_TAG"}),"\n",(0,_.jsx)(n.h2,{id:"cmd_git_tag",children:"CMD_GIT_TAG"}),"\n",(0,_.jsx)(n.p,{children:"Creates a git tag"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"CMD_GIT_DISCARD_ALL_CHANGES"}),"\n",(0,_.jsx)(n.h2,{id:"cmd_git_discard_all_changes",children:"CMD_GIT_DISCARD_ALL_CHANGES"}),"\n",(0,_.jsx)(n.p,{children:"Discards all changes"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"CMD_GIT_UNDO_LAST_COMMIT"}),"\n",(0,_.jsx)(n.h2,{id:"cmd_git_undo_last_commit",children:"CMD_GIT_UNDO_LAST_COMMIT"}),"\n",(0,_.jsx)(n.p,{children:"Undoes the last commit"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"CMD_GIT_CHANGE_USERNAME"}),"\n",(0,_.jsx)(n.h2,{id:"cmd_git_change_username",children:"CMD_GIT_CHANGE_USERNAME"}),"\n",(0,_.jsx)(n.p,{children:"Changes git username"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"CMD_GIT_CHANGE_EMAIL"}),"\n",(0,_.jsx)(n.h2,{id:"cmd_git_change_email",children:"CMD_GIT_CHANGE_EMAIL"}),"\n",(0,_.jsx)(n.p,{children:"Changes git email"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"CMD_GIT_GERRIT_PUSH_REF"}),"\n",(0,_.jsx)(n.h2,{id:"cmd_git_gerrit_push_ref",children:"CMD_GIT_GERRIT_PUSH_REF"}),"\n",(0,_.jsx)(n.p,{children:"Pushes to Gerrit code review"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"CMD_GIT_AUTHORS_OF_SELECTION"}),"\n",(0,_.jsx)(n.h2,{id:"cmd_git_authors_of_selection",children:"CMD_GIT_AUTHORS_OF_SELECTION"}),"\n",(0,_.jsx)(n.p,{children:"Shows authors of selected code"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"CMD_GIT_AUTHORS_OF_FILE"}),"\n",(0,_.jsx)(n.h2,{id:"cmd_git_authors_of_file",children:"CMD_GIT_AUTHORS_OF_FILE"}),"\n",(0,_.jsx)(n.p,{children:"Shows authors of current file"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"CMD_GIT_TOGGLE_UNTRACKED"}),"\n",(0,_.jsx)(n.h2,{id:"cmd_git_toggle_untracked",children:"CMD_GIT_TOGGLE_UNTRACKED"}),"\n",(0,_.jsx)(n.p,{children:"Toggles display of untracked files"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"CMD_GIT_HISTORY_GLOBAL"}),"\n",(0,_.jsx)(n.h2,{id:"cmd_git_history_global",children:"CMD_GIT_HISTORY_GLOBAL"}),"\n",(0,_.jsx)(n.p,{children:"Toggles global history view in history panel"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,_.jsx)("a",{name:"CMD_GIT_HISTORY_FILE"}),"\n",(0,_.jsx)(n.h2,{id:"cmd_git_history_file",children:"CMD_GIT_HISTORY_FILE"}),"\n",(0,_.jsx)(n.p,{children:"Toggles file history view in history panel"}),"\n",(0,_.jsxs)(n.p,{children:[(0,_.jsx)(n.strong,{children:"Kind"}),": global variable"]})]})}function o(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,_.jsx)(n,{...e,children:(0,_.jsx)(c,{...e})}):c(e)}},28453:(e,n,l)=>{l.d(n,{R:()=>d,x:()=>r});var i=l(96540);const _={},s=i.createContext(_);function d(e){const n=i.useContext(s);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(_):e.components||_:d(e.components),i.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/a7aa3fcc.0e8bd60b.js b/assets/js/a7aa3fcc.0e8bd60b.js new file mode 100644 index 00000000..ebd93fd0 --- /dev/null +++ b/assets/js/a7aa3fcc.0e8bd60b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5376],{84908:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>l,contentTitle:()=>h,default:()=>o,frontMatter:()=>d,metadata:()=>t,toc:()=>c});const t=JSON.parse('{"id":"API-Reference/view/ThemeManager","title":"ThemeManager","description":"Import :","source":"@site/api/API-Reference/view/ThemeManager.md","sourceDirName":"API-Reference/view","slug":"/API-Reference/view/ThemeManager","permalink":"/api/API-Reference/view/ThemeManager","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"SidebarTabs","permalink":"/api/API-Reference/view/SidebarTabs"},"next":{"title":"VideoPlayer","permalink":"/api/API-Reference/view/VideoPlayer"}}');var s=r(74848),i=r(28453);const d={},h=void 0,l={},c=[{value:"Import :",id:"import-",level:3},{value:"EVENT_THEME_CHANGE : <code>string</code>",id:"event_theme_change--string",level:2},{value:"EVENT_THEME_LOADED : <code>string</code>",id:"event_theme_loaded--string",level:2},{value:"getCurrentTheme() \u21d2 <code>Theme</code>",id:"getcurrenttheme--theme",level:2},{value:"getAllThemes() \u21d2 <code>Array.<Theme></code>",id:"getallthemes--arraytheme",level:2},{value:"refresh(force)",id:"refreshforce",level:2},{value:"loadFile(fileName, options) \u21d2 <code>$.Promise</code>",id:"loadfilefilename-options--promise",level:2},{value:"loadPackage(themePackage) \u21d2 <code>$.Promise</code>",id:"loadpackagethemepackage--promise",level:2},{value:"isOSInDarkTheme()",id:"isosindarktheme",level:2},{value:"setCurrentTheme(themeID) \u21d2 <code>boolean</code>",id:"setcurrentthemethemeid--boolean",level:2}];function a(e){const n={a:"a",br:"br",code:"code",h2:"h2",h3:"h3",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h3,{id:"import-",children:"Import :"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-js",children:'const ThemeManager = brackets.getModule("view/ThemeManager")\n'})}),"\n",(0,s.jsx)("a",{name:"EVENT_THEME_CHANGE"}),"\n",(0,s.jsxs)(n.h2,{id:"event_theme_change--string",children:["EVENT_THEME_CHANGE : ",(0,s.jsx)("code",{children:"string"})]}),"\n",(0,s.jsx)(n.p,{children:"Event when theme is changed"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,s.jsx)("a",{name:"EVENT_THEME_LOADED"}),"\n",(0,s.jsxs)(n.h2,{id:"event_theme_loaded--string",children:["EVENT_THEME_LOADED : ",(0,s.jsx)("code",{children:"string"})]}),"\n",(0,s.jsx)(n.p,{children:"Event when theme is loaded"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,s.jsx)("a",{name:"getCurrentTheme"}),"\n",(0,s.jsxs)(n.h2,{id:"getcurrenttheme--theme",children:["getCurrentTheme() \u21d2 ",(0,s.jsx)(n.a,{href:"#new_Theme_new",children:(0,s.jsx)("code",{children:"Theme"})})]}),"\n",(0,s.jsx)(n.p,{children:"Get current theme object that is loaded in the editor."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)(n.a,{href:"#new_Theme_new",children:(0,s.jsx)("code",{children:"Theme"})})," - the current theme instance"]}),"\n",(0,s.jsx)("a",{name:"getAllThemes"}),"\n",(0,s.jsxs)(n.h2,{id:"getallthemes--arraytheme",children:["getAllThemes() \u21d2 ",(0,s.jsx)(n.a,{href:"#new_Theme_new",children:(0,s.jsx)("code",{children:"Array.<Theme>"})})]}),"\n",(0,s.jsx)(n.p,{children:"Gets all available themes"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)(n.a,{href:"#new_Theme_new",children:(0,s.jsx)("code",{children:"Array.<Theme>"})})," - collection of all available themes"]}),"\n",(0,s.jsx)("a",{name:"refresh"}),"\n",(0,s.jsx)(n.h2,{id:"refreshforce",children:"refresh(force)"}),"\n",(0,s.jsx)(n.p,{children:"Refresh current theme in the editor"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"force"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"boolean"})}),(0,s.jsx)(n.td,{children:"Forces a reload of the current theme. It reloads the theme file."})]})})]}),"\n",(0,s.jsx)("a",{name:"loadFile"}),"\n",(0,s.jsxs)(n.h2,{id:"loadfilefilename-options--promise",children:["loadFile(fileName, options) \u21d2 ",(0,s.jsx)("code",{children:"$.Promise"})]}),"\n",(0,s.jsx)(n.p,{children:"Loads a theme from a file."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"$.Promise"})," - promise object resolved with the theme to be loaded from fileName"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"fileName"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(n.td,{children:"is the full path to the file to be opened"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"options"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"Object"})}),(0,s.jsx)(n.td,{children:"is an optional parameter to specify metadata for the theme."})]})]})]}),"\n",(0,s.jsx)("a",{name:"loadPackage"}),"\n",(0,s.jsxs)(n.h2,{id:"loadpackagethemepackage--promise",children:["loadPackage(themePackage) \u21d2 ",(0,s.jsx)("code",{children:"$.Promise"})]}),"\n",(0,s.jsx)(n.p,{children:"Loads a theme from an extension package."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"$.Promise"})," - promise object resolved with the theme to be loaded from the pacakge"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"themePackage"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"Object"})}),(0,s.jsx)(n.td,{children:"is a package from the extension manager for the theme to be loaded."})]})})]}),"\n",(0,s.jsx)("a",{name:"isOSInDarkTheme"}),"\n",(0,s.jsx)(n.h2,{id:"isosindarktheme",children:"isOSInDarkTheme()"}),"\n",(0,s.jsx)(n.p,{children:"Detects if the os settings is set to dark theme or not"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsx)("a",{name:"setCurrentTheme"}),"\n",(0,s.jsxs)(n.h2,{id:"setcurrentthemethemeid--boolean",children:["setCurrentTheme(themeID) \u21d2 ",(0,s.jsx)("code",{children:"boolean"})]}),"\n",(0,s.jsx)(n.p,{children:"Sets the current theme for the given theme id if present."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"boolean"})," - true if the theme was applied, else false"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"themeID"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})})]})})]})]})}function o(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(a,{...e})}):a(e)}},28453:(e,n,r)=>{r.d(n,{R:()=>d,x:()=>h});var t=r(96540);const s={},i=t.createContext(s);function d(e){const n=t.useContext(i);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function h(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:d(e.components),t.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/a7bd4aaa.1ee1999d.js b/assets/js/a7bd4aaa.1ee1999d.js new file mode 100644 index 00000000..b042d17b --- /dev/null +++ b/assets/js/a7bd4aaa.1ee1999d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4717],{74532:(n,e,s)=>{s.r(e),s.d(e,{default:()=>d});s(96540);var r=s(45500),o=s(82565),t=s(23025),c=s(22831),i=s(41463),u=s(74848);function a(n){const{version:e}=n;return(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(i.A,{version:e.version,tag:(0,o.k)(e.pluginId,e.version)}),(0,u.jsx)(r.be,{children:e.noIndex&&(0,u.jsx)("meta",{name:"robots",content:"noindex, nofollow"})})]})}function l(n){const{version:e,route:s}=n;return(0,u.jsx)(r.e3,{className:e.className,children:(0,u.jsx)(t.n,{version:e,children:(0,c.v)(s.routes)})})}function d(n){return(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(a,{...n}),(0,u.jsx)(l,{...n})]})}}}]); \ No newline at end of file diff --git a/assets/js/a7e06872.93b2e993.js b/assets/js/a7e06872.93b2e993.js new file mode 100644 index 00000000..bf47bb4f --- /dev/null +++ b/assets/js/a7e06872.93b2e993.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3565],{86226:(e,s,t)=>{t.r(s),t.d(s,{assets:()=>a,contentTitle:()=>c,default:()=>h,frontMatter:()=>i,metadata:()=>n,toc:()=>l});const n=JSON.parse('{"id":"API-Reference/features/TaskManager","title":"TaskManager","description":"Import :","source":"@site/api/API-Reference/features/TaskManager.md","sourceDirName":"API-Reference/features","slug":"/API-Reference/features/TaskManager","permalink":"/api/API-Reference/features/TaskManager","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"SelectionViewManager","permalink":"/api/API-Reference/features/SelectionViewManager"},"next":{"title":"FileUtils","permalink":"/api/API-Reference/file/FileUtils"}}');var r=t(74848),d=t(28453);const i={},c=void 0,a={},l=[{value:"Import :",id:"import-",level:3},{value:"features/TaskManager",id:"featurestaskmanager",level:2},{value:"features/TaskManager.addNewTask(taskTitle, message, [iconHTML], [options]) \u21d2 <code>TaskObject</code>",id:"featurestaskmanageraddnewtasktasktitle-message-iconhtml-options--taskobject",level:3},{value:"features/TaskManager.TaskObject : <code>Object</code>",id:"featurestaskmanagertaskobject--object",level:3}];function o(e){const s={a:"a",br:"br",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,d.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(s.h3,{id:"import-",children:"Import :"}),"\n",(0,r.jsx)(s.pre,{children:(0,r.jsx)(s.code,{className:"language-js",children:'const TaskManager = brackets.getModule("features/TaskManager")\n'})}),"\n",(0,r.jsx)("a",{name:"module_features/TaskManager"}),"\n",(0,r.jsx)(s.h2,{id:"featurestaskmanager",children:"features/TaskManager"}),"\n",(0,r.jsxs)(s.p,{children:["TaskManager module deals with managing long running tasks in phcode. It handles the ",(0,r.jsx)(s.code,{children:"Tasks"})," dropdown in the status\nbar where the user can see all running tasks, monitor its progress and close/pause the execution of the task if\nsupported by the task."]}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.a,{href:"#module_features/TaskManager",children:"features/TaskManager"}),"\n",(0,r.jsxs)(s.ul,{children:["\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.a,{href:"#module_features/TaskManager..addNewTask",children:".addNewTask(taskTitle, message, [iconHTML], [options])"})," \u21d2 ",(0,r.jsx)("code",{children:"TaskObject"})]}),"\n",(0,r.jsxs)(s.li,{children:[(0,r.jsx)(s.a,{href:"#module_features/TaskManager..TaskObject",children:".TaskObject"})," : ",(0,r.jsx)("code",{children:"Object"})]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)("a",{name:"module_features/TaskManager..addNewTask"}),"\n",(0,r.jsxs)(s.h3,{id:"featurestaskmanageraddnewtasktasktitle-message-iconhtml-options--taskobject",children:["features/TaskManager.addNewTask(taskTitle, message, [iconHTML], [options]) \u21d2 ",(0,r.jsx)("code",{children:"TaskObject"})]}),"\n",(0,r.jsx)(s.p,{children:"The addNewTask is designed for adding new tasks to the task management system. This function is central to\nmanaging long-running tasks, providing a way to visually represent task progress, status, and control actions\ndirectly from the UI in the status bar."}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"Kind"}),": inner method of ",(0,r.jsx)(s.a,{href:"#module_features/TaskManager",children:(0,r.jsx)("code",{children:"features/TaskManager"})}),(0,r.jsx)(s.br,{}),"\n",(0,r.jsx)(s.strong,{children:"Returns"}),": ",(0,r.jsx)("code",{children:"TaskObject"})," - Returns a task object with methods for updating the task's state and UI representation,\nsuch as ",(0,r.jsx)(s.code,{children:"setProgressPercent"}),", ",(0,r.jsx)(s.code,{children:"setMessage"}),", ",(0,r.jsx)(s.code,{children:"setSucceeded"}),", ",(0,r.jsx)(s.code,{children:"setFailed"}),", and control visibility methods\nlike ",(0,r.jsx)(s.code,{children:"showStopIcon"}),", ",(0,r.jsx)(s.code,{children:"hideStopIcon"}),", etc."]}),"\n",(0,r.jsxs)(s.table,{children:[(0,r.jsx)(s.thead,{children:(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.th,{children:"Param"}),(0,r.jsx)(s.th,{children:"Type"}),(0,r.jsx)(s.th,{children:"Default"}),(0,r.jsx)(s.th,{children:"Description"})]})}),(0,r.jsxs)(s.tbody,{children:[(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"taskTitle"}),(0,r.jsx)(s.td,{children:(0,r.jsx)("code",{children:"string"})}),(0,r.jsx)(s.td,{}),(0,r.jsx)(s.td,{children:"The title of the task. This is a mandatory parameter and is displayed in the UI."})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"message"}),(0,r.jsx)(s.td,{children:(0,r.jsx)("code",{children:"string"})}),(0,r.jsx)(s.td,{}),(0,r.jsx)(s.td,{children:"A message or status associated with the task. Displayed as additional information in the UI."})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"[iconHTML]"}),(0,r.jsx)(s.td,{children:(0,r.jsx)("code",{children:"string"})}),(0,r.jsx)(s.td,{children:(0,r.jsx)("code",{children:"null"})}),(0,r.jsx)(s.td,{children:"Optional HTML string for the task's icon. Used to visually represent the task in the UI."})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"[options]"}),(0,r.jsx)(s.td,{children:(0,r.jsx)("code",{children:"Object"})}),(0,r.jsx)(s.td,{}),(0,r.jsx)(s.td,{children:"Optional settings and callbacks for the task."})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"[options.onPauseClick]"}),(0,r.jsx)(s.td,{children:(0,r.jsx)("code",{children:"function"})}),(0,r.jsx)(s.td,{}),(0,r.jsx)(s.td,{children:"Callback function triggered when the pause button is clicked."})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"[options.onPlayClick]"}),(0,r.jsx)(s.td,{children:(0,r.jsx)("code",{children:"function"})}),(0,r.jsx)(s.td,{}),(0,r.jsx)(s.td,{children:"Callback function triggered when the play button is clicked."})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"[options.onStopClick]"}),(0,r.jsx)(s.td,{children:(0,r.jsx)("code",{children:"function"})}),(0,r.jsx)(s.td,{}),(0,r.jsx)(s.td,{children:"Callback function triggered when the stop button is clicked."})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"[options.onRetryClick]"}),(0,r.jsx)(s.td,{children:(0,r.jsx)("code",{children:"function"})}),(0,r.jsx)(s.td,{}),(0,r.jsx)(s.td,{children:"Callback function triggered when the retry button is clicked."})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"[options.onSelect]"}),(0,r.jsx)(s.td,{children:(0,r.jsx)("code",{children:"function"})}),(0,r.jsx)(s.td,{}),(0,r.jsx)(s.td,{children:"Callback function triggered when the task is selected from the dropdown."})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"[options.progressPercent]"}),(0,r.jsx)(s.td,{children:(0,r.jsx)("code",{children:"number"})}),(0,r.jsx)(s.td,{}),(0,r.jsx)(s.td,{children:"Initial progress percentage of the task."})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"[options.noSpinnerNotification]"}),(0,r.jsx)(s.td,{children:(0,r.jsx)("code",{children:"boolean"})}),(0,r.jsx)(s.td,{}),(0,r.jsx)(s.td,{children:"If set to true, will not show the task spinners for this task. This can be used for silent background tasks where user attention is not needed."})]})]})]}),"\n",(0,r.jsx)(s.p,{children:(0,r.jsx)(s.strong,{children:"Example"})}),"\n",(0,r.jsx)(s.pre,{children:(0,r.jsx)(s.code,{className:"language-js",children:"// Example: Adding a new task with initial progress and attaching event handlers\nconst task = TaskManager.addNewTask(\n 'Data Processing',\n 'Processing data...',\n '<i class=\"fa fa-spinner fa-spin\"></i>',\n {\n onPauseClick: () => console.log('Task paused'),\n onPlayClick: () => console.log('Task resumed'),\n onStopClick: () => console.log('Task stopped'),\n onRetryClick: () => console.log('Task retried'),\n onSelect: () => console.log('Task selected'),\n progressPercent: 20\n }\n);\n\n// Updating task progress\ntask.setProgressPercent(60);\n\n// Updating task message\ntask.setMessage('60% completed');\n\n// Marking task as succeeded\ntask.setSucceeded();\n"})}),"\n",(0,r.jsx)("a",{name:"module_features/TaskManager..TaskObject"}),"\n",(0,r.jsxs)(s.h3,{id:"featurestaskmanagertaskobject--object",children:["features/TaskManager.TaskObject : ",(0,r.jsx)("code",{children:"Object"})]}),"\n",(0,r.jsx)(s.p,{children:"Methods for managing the task's state and UI representation in the TaskManager."}),"\n",(0,r.jsxs)(s.p,{children:[(0,r.jsx)(s.strong,{children:"Kind"}),": inner typedef of ",(0,r.jsx)(s.a,{href:"#module_features/TaskManager",children:(0,r.jsx)("code",{children:"features/TaskManager"})}),(0,r.jsx)(s.br,{}),"\n",(0,r.jsx)(s.strong,{children:"Properties"})]}),"\n",(0,r.jsxs)(s.table,{children:[(0,r.jsx)(s.thead,{children:(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.th,{children:"Name"}),(0,r.jsx)(s.th,{children:"Type"}),(0,r.jsx)(s.th,{children:"Description"})]})}),(0,r.jsxs)(s.tbody,{children:[(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"show"}),(0,r.jsx)(s.td,{children:(0,r.jsx)("code",{children:"function"})}),(0,r.jsx)(s.td,{children:"Shows the task popup in the ui."})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"close"}),(0,r.jsx)(s.td,{children:(0,r.jsx)("code",{children:"function"})}),(0,r.jsx)(s.td,{children:"Closes the task and removes it from the UI."})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"setTitle"}),(0,r.jsx)(s.td,{children:(0,r.jsx)("code",{children:"function"})}),(0,r.jsx)(s.td,{children:"Sets the task's title."})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"getTitle"}),(0,r.jsx)(s.td,{children:(0,r.jsx)("code",{children:"function"})}),(0,r.jsx)(s.td,{children:"Returns the task's title."})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"setMessage"}),(0,r.jsx)(s.td,{children:(0,r.jsx)("code",{children:"function"})}),(0,r.jsx)(s.td,{children:"Sets the task's message."})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"getMessage"}),(0,r.jsx)(s.td,{children:(0,r.jsx)("code",{children:"function"})}),(0,r.jsx)(s.td,{children:"Returns the task's message."})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"setProgressPercent"}),(0,r.jsx)(s.td,{children:(0,r.jsx)("code",{children:"function"})}),(0,r.jsx)(s.td,{children:"Sets the task's progress percentage."})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"getProgressPercent"}),(0,r.jsx)(s.td,{children:(0,r.jsx)("code",{children:"function"})}),(0,r.jsx)(s.td,{children:"Returns the task's current progress percentage."})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"setFailed"}),(0,r.jsx)(s.td,{children:(0,r.jsx)("code",{children:"function"})}),(0,r.jsx)(s.td,{children:"Marks the task as failed."})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"isFailed"}),(0,r.jsx)(s.td,{children:(0,r.jsx)("code",{children:"function"})}),(0,r.jsx)(s.td,{children:"Returns true if the task is marked as failed."})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"setSucceded"}),(0,r.jsx)(s.td,{children:(0,r.jsx)("code",{children:"function"})}),(0,r.jsx)(s.td,{children:"Marks the task as succeeded."})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"isSucceded"}),(0,r.jsx)(s.td,{children:(0,r.jsx)("code",{children:"function"})}),(0,r.jsx)(s.td,{children:"Returns true if the task is marked as succeeded."})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"showStopIcon"}),(0,r.jsx)(s.td,{children:(0,r.jsx)("code",{children:"function"})}),(0,r.jsx)(s.td,{children:"Shows the stop icon with an optional tooltip message."})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"hideStopIcon"}),(0,r.jsx)(s.td,{children:(0,r.jsx)("code",{children:"function"})}),(0,r.jsx)(s.td,{children:"Hides the stop icon."})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"showPlayIcon"}),(0,r.jsx)(s.td,{children:(0,r.jsx)("code",{children:"function"})}),(0,r.jsx)(s.td,{children:"Shows the play icon with an optional tooltip message."})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"hidePlayIcon"}),(0,r.jsx)(s.td,{children:(0,r.jsx)("code",{children:"function"})}),(0,r.jsx)(s.td,{children:"Hides the play icon."})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"showPauseIcon"}),(0,r.jsx)(s.td,{children:(0,r.jsx)("code",{children:"function"})}),(0,r.jsx)(s.td,{children:"Shows the pause icon with an optional tooltip message."})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"hidePauseIcon"}),(0,r.jsx)(s.td,{children:(0,r.jsx)("code",{children:"function"})}),(0,r.jsx)(s.td,{children:"Hides the pause icon."})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"showRestartIcon"}),(0,r.jsx)(s.td,{children:(0,r.jsx)("code",{children:"function"})}),(0,r.jsx)(s.td,{children:"Shows the restart (retry) icon with an optional tooltip message."})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"hideRestartIcon"}),(0,r.jsx)(s.td,{children:(0,r.jsx)("code",{children:"function"})}),(0,r.jsx)(s.td,{children:"Hides the restart (retry) icon."})]}),(0,r.jsxs)(s.tr,{children:[(0,r.jsx)(s.td,{children:"flashSpinnerForAttention"}),(0,r.jsx)(s.td,{children:(0,r.jsx)("code",{children:"function"})}),(0,r.jsx)(s.td,{children:"briefly flashes the task spinner icon for attention."})]})]})]})]})}function h(e={}){const{wrapper:s}={...(0,d.R)(),...e.components};return s?(0,r.jsx)(s,{...e,children:(0,r.jsx)(o,{...e})}):o(e)}},28453:(e,s,t)=>{t.d(s,{R:()=>i,x:()=>c});var n=t(96540);const r={},d=n.createContext(r);function i(e){const s=n.useContext(d);return n.useMemo((function(){return"function"==typeof e?e(s):{...s,...e}}),[s,e])}function c(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:i(e.components),n.createElement(d.Provider,{value:s},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/a94105c0.89d8f292.js b/assets/js/a94105c0.89d8f292.js new file mode 100644 index 00000000..ac7f97be --- /dev/null +++ b/assets/js/a94105c0.89d8f292.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[468],{88796:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>c,contentTitle:()=>d,default:()=>a,frontMatter:()=>l,metadata:()=>t,toc:()=>o});const t=JSON.parse('{"id":"API-Reference/project/ProjectManager","title":"ProjectManager","description":"Import :","source":"@site/api/API-Reference/project/ProjectManager.md","sourceDirName":"API-Reference/project","slug":"/API-Reference/project/ProjectManager","permalink":"/api/API-Reference/project/ProjectManager","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"FileViewController","permalink":"/api/API-Reference/project/FileViewController"},"next":{"title":"ProjectModel","permalink":"/api/API-Reference/project/ProjectModel"}}');var i=r(74848),s=r(28453);const l={},d=void 0,c={},o=[{value:"Import :",id:"import-",level:3},{value:"EVENT_PROJECT_BEFORE_CLOSE : <code>string</code>",id:"event_project_before_close--string",level:2},{value:"EVENT_PROJECT_CLOSE : <code>string</code>",id:"event_project_close--string",level:2},{value:"EVENT_PROJECT_OPEN_FAILED : <code>string</code>",id:"event_project_open_failed--string",level:2},{value:"EVENT_PROJECT_OPEN : <code>string</code>",id:"event_project_open--string",level:2},{value:"EVENT_AFTER_PROJECT_OPEN : <code>string</code>",id:"event_after_project_open--string",level:2},{value:"EVENT_AFTER_STARTUP_FILES_LOADED : <code>string</code>",id:"event_after_startup_files_loaded--string",level:2},{value:"EVENT_PROJECT_REFRESH : <code>string</code>",id:"event_project_refresh--string",level:2},{value:"EVENT_CONTENT_CHANGED : <code>string</code>",id:"event_content_changed--string",level:2},{value:"EVENT_PROJECT_FILE_CHANGED : <code>string</code>",id:"event_project_file_changed--string",level:2},{value:"EVENT_PROJECT_FILE_RENAMED : <code>string</code>",id:"event_project_file_renamed--string",level:2},{value:"EVENT_PROJECT_CHANGED_OR_RENAMED_PATH : <code>string</code>",id:"event_project_changed_or_renamed_path--string",level:2},{value:"getFileTreeContext() \u21d2 <code>File</code> | <code>Directory</code>",id:"getfiletreecontext--file--directory",level:2},{value:"getSelectedItem() \u21d2 <code>File</code> | <code>Directory</code>",id:"getselecteditem--file--directory",level:2},{value:"getBaseUrl() \u21d2 <code>String</code>",id:"getbaseurl--string",level:2},{value:"setBaseUrl(projectBaseUrl)",id:"setbaseurlprojectbaseurl",level:2},{value:"isWithinProject(absPathOrEntry) \u21d2 <code>boolean</code>",id:"iswithinprojectabspathorentry--boolean",level:2},{value:"filterProjectFiles(absPathOrEntryArray) \u21d2 <code>string</code> | <code>Array.<FileSystemEntry></code>",id:"filterprojectfilesabspathorentryarray--string--arrayfilesystementry",level:2},{value:"makeProjectRelativeIfPossible(absPath) \u21d2 <code>string</code>",id:"makeprojectrelativeifpossibleabspath--string",level:2},{value:"getProjectRelativeOrDisplayPath(fullPath) \u21d2 <code>string</code>",id:"getprojectrelativeordisplaypathfullpath--string",level:2},{value:"getProjectRoot() \u21d2 <code>Directory</code>",id:"getprojectroot--directory",level:2},{value:"getWelcomeProjectPath(sampleUrl, initialPath) \u21d2 <code>string</code>",id:"getwelcomeprojectpathsampleurl-initialpath--string",level:2},{value:"getLocalProjectsPath() \u21d2 <code>string</code>",id:"getlocalprojectspath--string",level:2},{value:"isWelcomeProjectPath(path) \u21d2 <code>boolean</code>",id:"iswelcomeprojectpathpath--boolean",level:2},{value:"updateWelcomeProjectPath()",id:"updatewelcomeprojectpath",level:2},{value:"getStartupProjectPath()",id:"getstartupprojectpath",level:2},{value:"_continueLoadProject()",id:"_continueloadproject",level:2},{value:"refreshFileTree()",id:"refreshfiletree",level:2},{value:"showInTree(entry) \u21d2 <code>$.Promise</code>",id:"showintreeentry--promise",level:2},{value:"openProject([path]) \u21d2 <code>$.Promise</code>",id:"openprojectpath--promise",level:2},{value:"createNewItem(baseDir, initialName, skipRename, isFolder) \u21d2 <code>$.Promise</code>",id:"createnewitembasedir-initialname-skiprename-isfolder--promise",level:2},{value:"deleteItem(entry)",id:"deleteitementry",level:2},{value:"getLanguageFilter(languageId) \u21d2 <code>function</code>",id:"getlanguagefilterlanguageid--function",level:2},{value:"forceFinishRename()",id:"forcefinishrename",level:2},{value:"setProjectBusy(isBusy, message)",id:"setprojectbusyisbusy-message",level:2},{value:"getProjectRelativePath(path) \u21d2 <code>string</code>",id:"getprojectrelativepathpath--string",level:2},{value:"getContext()",id:"getcontext",level:2},{value:"renameItemInline(entry, [isMoved]) \u21d2 <code>$.Promise</code>",id:"renameiteminlineentry-ismoved--promise",level:2},{value:"getAllFiles(filter, [includeWorkingSet], [sort], options) \u21d2 <code>$.Promise</code>",id:"getallfilesfilter-includeworkingset-sort-options--promise",level:2},{value:"addIconProvider(callback, [priority])",id:"addiconprovidercallback-priority",level:2},{value:"addClassesProvider(callback, [priority])",id:"addclassesprovidercallback-priority",level:2},{value:"rerenderTree()",id:"rerendertree",level:2}];function h(e){const n={br:"br",code:"code",em:"em",h2:"h2",h3:"h3",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,s.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.h3,{id:"import-",children:"Import :"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-js",children:'const ProjectManager = brackets.getModule("project/ProjectManager")\n'})}),"\n",(0,i.jsx)("a",{name:"EVENT_PROJECT_BEFORE_CLOSE"}),"\n",(0,i.jsxs)(n.h2,{id:"event_project_before_close--string",children:["EVENT_PROJECT_BEFORE_CLOSE : ",(0,i.jsx)("code",{children:"string"})]}),"\n",(0,i.jsx)(n.p,{children:"Triggered before the project closes."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,i.jsx)("a",{name:"EVENT_PROJECT_CLOSE"}),"\n",(0,i.jsxs)(n.h2,{id:"event_project_close--string",children:["EVENT_PROJECT_CLOSE : ",(0,i.jsx)("code",{children:"string"})]}),"\n",(0,i.jsx)(n.p,{children:"Triggered when the project has closed."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,i.jsx)("a",{name:"EVENT_PROJECT_OPEN_FAILED"}),"\n",(0,i.jsxs)(n.h2,{id:"event_project_open_failed--string",children:["EVENT_PROJECT_OPEN_FAILED : ",(0,i.jsx)("code",{children:"string"})]}),"\n",(0,i.jsx)(n.p,{children:"Triggered when opening a project file fails."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,i.jsx)("a",{name:"EVENT_PROJECT_OPEN"}),"\n",(0,i.jsxs)(n.h2,{id:"event_project_open--string",children:["EVENT_PROJECT_OPEN : ",(0,i.jsx)("code",{children:"string"})]}),"\n",(0,i.jsx)(n.p,{children:"Triggered when a project is opened."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,i.jsx)("a",{name:"EVENT_AFTER_PROJECT_OPEN"}),"\n",(0,i.jsxs)(n.h2,{id:"event_after_project_open--string",children:["EVENT_AFTER_PROJECT_OPEN : ",(0,i.jsx)("code",{children:"string"})]}),"\n",(0,i.jsx)(n.p,{children:"Triggered after a project is successfully opened."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,i.jsx)("a",{name:"EVENT_AFTER_STARTUP_FILES_LOADED"}),"\n",(0,i.jsxs)(n.h2,{id:"event_after_startup_files_loaded--string",children:["EVENT_AFTER_STARTUP_FILES_LOADED : ",(0,i.jsx)("code",{children:"string"})]}),"\n",(0,i.jsxs)(n.p,{children:["Triggered after startup files (from OS or CLI) are loaded.\nNote: This may occur before extensions are loaded, so check ",(0,i.jsx)(n.code,{children:"isStartupFilesLoaded()"}),"."]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,i.jsx)("a",{name:"EVENT_PROJECT_REFRESH"}),"\n",(0,i.jsxs)(n.h2,{id:"event_project_refresh--string",children:["EVENT_PROJECT_REFRESH : ",(0,i.jsx)("code",{children:"string"})]}),"\n",(0,i.jsx)(n.p,{children:"Triggered when the project is refreshed."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,i.jsx)("a",{name:"EVENT_CONTENT_CHANGED"}),"\n",(0,i.jsxs)(n.h2,{id:"event_content_changed--string",children:["EVENT_CONTENT_CHANGED : ",(0,i.jsx)("code",{children:"string"})]}),"\n",(0,i.jsx)(n.p,{children:"Triggered when content in the project changes."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,i.jsx)("a",{name:"EVENT_PROJECT_FILE_CHANGED"}),"\n",(0,i.jsxs)(n.h2,{id:"event_project_file_changed--string",children:["EVENT_PROJECT_FILE_CHANGED : ",(0,i.jsx)("code",{children:"string"})]}),"\n",(0,i.jsx)(n.p,{children:"Triggered when any file or folder in the project changes, excluding renames."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,i.jsx)("a",{name:"EVENT_PROJECT_FILE_RENAMED"}),"\n",(0,i.jsxs)(n.h2,{id:"event_project_file_renamed--string",children:["EVENT_PROJECT_FILE_RENAMED : ",(0,i.jsx)("code",{children:"string"})]}),"\n",(0,i.jsx)(n.p,{children:"Triggered specifically when a project file is renamed."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,i.jsx)("a",{name:"EVENT_PROJECT_CHANGED_OR_RENAMED_PATH"}),"\n",(0,i.jsxs)(n.h2,{id:"event_project_changed_or_renamed_path--string",children:["EVENT_PROJECT_CHANGED_OR_RENAMED_PATH : ",(0,i.jsx)("code",{children:"string"})]}),"\n",(0,i.jsx)(n.p,{children:"Triggered when paths in the project are changed or renamed."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,i.jsx)("a",{name:"getFileTreeContext"}),"\n",(0,i.jsxs)(n.h2,{id:"getfiletreecontext--file--directory",children:["getFileTreeContext() \u21d2 ",(0,i.jsx)("code",{children:"File"})," | ",(0,i.jsx)("code",{children:"Directory"})]}),"\n",(0,i.jsx)(n.p,{children:"Returns the File or Directory corresponding to the item that was right-clicked on in the file tree menu."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,i.jsx)("a",{name:"getSelectedItem"}),"\n",(0,i.jsxs)(n.h2,{id:"getselecteditem--file--directory",children:["getSelectedItem() \u21d2 ",(0,i.jsx)("code",{children:"File"})," | ",(0,i.jsx)("code",{children:"Directory"})]}),"\n",(0,i.jsx)(n.p,{children:"Returns the File or Directory corresponding to the item selected in the sidebar panel, whether in\nthe file tree OR in the working set; or null if no item is selected anywhere in the sidebar.\nMay NOT be identical to the current Document - a folder may be selected in the sidebar, or the sidebar may not\nhave the current document visible in the tree & working set."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,i.jsx)("a",{name:"getBaseUrl"}),"\n",(0,i.jsxs)(n.h2,{id:"getbaseurl--string",children:["getBaseUrl() \u21d2 ",(0,i.jsx)("code",{children:"String"})]}),"\n",(0,i.jsx)(n.p,{children:"Returns the encoded Base URL of the currently loaded project, or empty string if no project\nis open (during startup, or running outside of app shell)."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,i.jsx)("a",{name:"setBaseUrl"}),"\n",(0,i.jsx)(n.h2,{id:"setbaseurlprojectbaseurl",children:"setBaseUrl(projectBaseUrl)"}),"\n",(0,i.jsx)(n.p,{children:"Sets the encoded Base URL of the currently loaded project."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"})]})}),(0,i.jsx)(n.tbody,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"projectBaseUrl"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"String"})})]})})]}),"\n",(0,i.jsx)("a",{name:"isWithinProject"}),"\n",(0,i.jsxs)(n.h2,{id:"iswithinprojectabspathorentry--boolean",children:["isWithinProject(absPathOrEntry) \u21d2 ",(0,i.jsx)("code",{children:"boolean"})]}),"\n",(0,i.jsx)(n.p,{children:'Returns true if absPath lies within the project, false otherwise.\nDoes not support paths containing ".."'}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"})]})}),(0,i.jsx)(n.tbody,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"absPathOrEntry"}),(0,i.jsxs)(n.td,{children:[(0,i.jsx)("code",{children:"string"})," | ",(0,i.jsx)("code",{children:"FileSystemEntry"})]})]})})]}),"\n",(0,i.jsx)("a",{name:"filterProjectFiles"}),"\n",(0,i.jsxs)(n.h2,{id:"filterprojectfilesabspathorentryarray--string--arrayfilesystementry",children:["filterProjectFiles(absPathOrEntryArray) \u21d2 ",(0,i.jsx)("code",{children:"string"})," | ",(0,i.jsx)("code",{children:"Array.<FileSystemEntry>"})]}),"\n",(0,i.jsx)(n.p,{children:"Returns an array of files that is within the project from the supplied list of paths."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function",(0,i.jsx)(n.br,{}),"\n",(0,i.jsx)(n.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"string"})," | ",(0,i.jsx)("code",{children:"Array.<FileSystemEntry>"})," - A array that contains only files paths that are in the project"]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsx)(n.tbody,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"absPathOrEntryArray"}),(0,i.jsxs)(n.td,{children:[(0,i.jsx)("code",{children:"string"})," | ",(0,i.jsx)("code",{children:"Array.<FileSystemEntry>"})]}),(0,i.jsx)(n.td,{children:"array which can be either a string path or FileSystemEntry"})]})})]}),"\n",(0,i.jsx)("a",{name:"makeProjectRelativeIfPossible"}),"\n",(0,i.jsxs)(n.h2,{id:"makeprojectrelativeifpossibleabspath--string",children:["makeProjectRelativeIfPossible(absPath) \u21d2 ",(0,i.jsx)("code",{children:"string"})]}),"\n",(0,i.jsx)(n.p,{children:'If absPath lies within the project, returns a project-relative path. Else returns absPath\nunmodified.\nDoes not support paths containing ".."'}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"})]})}),(0,i.jsx)(n.tbody,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"absPath"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})})]})})]}),"\n",(0,i.jsx)("a",{name:"getProjectRelativeOrDisplayPath"}),"\n",(0,i.jsxs)(n.h2,{id:"getprojectrelativeordisplaypathfullpath--string",children:["getProjectRelativeOrDisplayPath(fullPath) \u21d2 ",(0,i.jsx)("code",{children:"string"})]}),"\n",(0,i.jsx)(n.p,{children:"Gets a generally displayable path that can be shown to the user in most cases.\nGets the project relative path if possible. If paths is not in project, then if its a platform path(Eg. in tauri)\nit will return the full platform path. If not, then it will return a mount relative path for fs access mount\nfolders opened in the bowser. at last, falling back to vfs path. This should only be used for display purposes\nas this path will be changed by phcode depending on the situation in the future."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsx)(n.tr,{children:(0,i.jsx)(n.th,{children:"Param"})})}),(0,i.jsx)(n.tbody,{children:(0,i.jsx)(n.tr,{children:(0,i.jsx)(n.td,{children:"fullPath"})})})]}),"\n",(0,i.jsx)("a",{name:"getProjectRoot"}),"\n",(0,i.jsxs)(n.h2,{id:"getprojectroot--directory",children:["getProjectRoot() \u21d2 ",(0,i.jsx)("code",{children:"Directory"})]}),"\n",(0,i.jsx)(n.p,{children:"Returns the root folder of the currently loaded project, or null if no project is open (during\nstartup, or running outside of app shell)."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,i.jsx)("a",{name:"getWelcomeProjectPath"}),"\n",(0,i.jsxs)(n.h2,{id:"getwelcomeprojectpathsampleurl-initialpath--string",children:["getWelcomeProjectPath(sampleUrl, initialPath) \u21d2 ",(0,i.jsx)("code",{children:"string"})]}),"\n",(0,i.jsx)(n.p,{children:"Returns the full path to the welcome project, which we open on first launch."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function",(0,i.jsx)(n.br,{}),"\n",(0,i.jsx)(n.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"string"})," - fullPath reference"]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"sampleUrl"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(n.td,{children:"URL for getting started project"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"initialPath"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(n.td,{children:"Path to Brackets directory (see FileUtils.getNativeBracketsDirectoryPath())"})]})]})]}),"\n",(0,i.jsx)("a",{name:"getLocalProjectsPath"}),"\n",(0,i.jsxs)(n.h2,{id:"getlocalprojectspath--string",children:["getLocalProjectsPath() \u21d2 ",(0,i.jsx)("code",{children:"string"})]}),"\n",(0,i.jsx)(n.p,{children:"The folder where all the system managed projects live"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,i.jsx)("a",{name:"isWelcomeProjectPath"}),"\n",(0,i.jsxs)(n.h2,{id:"iswelcomeprojectpathpath--boolean",children:["isWelcomeProjectPath(path) \u21d2 ",(0,i.jsx)("code",{children:"boolean"})]}),"\n",(0,i.jsx)(n.p,{children:"Returns true if the given path is the same as one of the welcome projects we've previously opened,\nor the one for the current build."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function",(0,i.jsx)(n.br,{}),"\n",(0,i.jsx)(n.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"boolean"})," - true if this is a welcome project path"]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsx)(n.tbody,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"path"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(n.td,{children:"Path to check to see if it's a welcome project path"})]})})]}),"\n",(0,i.jsx)("a",{name:"updateWelcomeProjectPath"}),"\n",(0,i.jsx)(n.h2,{id:"updatewelcomeprojectpath",children:"updateWelcomeProjectPath()"}),"\n",(0,i.jsx)(n.p,{children:"If the provided path is to an old welcome project, returns the current one instead."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,i.jsx)("a",{name:"getStartupProjectPath"}),"\n",(0,i.jsx)(n.h2,{id:"getstartupprojectpath",children:"getStartupProjectPath()"}),"\n",(0,i.jsx)(n.p,{children:"Initial project path is stored in prefs, which defaults to the welcome project on\nfirst launch."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,i.jsx)("a",{name:"_continueLoadProject"}),"\n",(0,i.jsx)(n.h2,{id:"_continueloadproject",children:"_continueLoadProject()"}),"\n",(0,i.jsx)(n.p,{children:"Internal: continue loading a project after beforeProjectClose handlers have resolved."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,i.jsx)("a",{name:"refreshFileTree"}),"\n",(0,i.jsx)(n.h2,{id:"refreshfiletree",children:"refreshFileTree()"}),"\n",(0,i.jsx)(n.p,{children:"Refresh the project's file tree, maintaining the current selection."}),"\n",(0,i.jsxs)(n.p,{children:["Note that the original implementation of this returned a promise to be resolved when the refresh is complete.\nThat use is deprecated and ",(0,i.jsx)(n.code,{children:"refreshFileTree"}),' is now a "fire and forget" kind of function.']}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,i.jsx)("a",{name:"showInTree"}),"\n",(0,i.jsxs)(n.h2,{id:"showintreeentry--promise",children:["showInTree(entry) \u21d2 ",(0,i.jsx)("code",{children:"$.Promise"})]}),"\n",(0,i.jsx)(n.p,{children:"Expands tree nodes to show the given file or folder and selects it. Silently no-ops if the\npath lies outside the project, or if it doesn't exist."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function",(0,i.jsx)(n.br,{}),"\n",(0,i.jsx)(n.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"$.Promise"})," - Resolved when done; or rejected if not found"]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsx)(n.tbody,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"entry"}),(0,i.jsxs)(n.td,{children:[(0,i.jsx)("code",{children:"File"})," | ",(0,i.jsx)("code",{children:"Directory"})]}),(0,i.jsx)(n.td,{children:"File or Directory to show"})]})})]}),"\n",(0,i.jsx)("a",{name:"openProject"}),"\n",(0,i.jsxs)(n.h2,{id:"openprojectpath--promise",children:["openProject([path]) \u21d2 ",(0,i.jsx)("code",{children:"$.Promise"})]}),"\n",(0,i.jsx)(n.p,{children:"Open a new project. Currently, Brackets must always have a project open, so\nthis method handles both closing the current project and opening a new project."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function",(0,i.jsx)(n.br,{}),"\n",(0,i.jsx)(n.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"$.Promise"})," - A promise object that will be resolved when the\nproject is loaded and tree is rendered, or rejected if the project path\nfails to load."]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsx)(n.tbody,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"[path]"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(n.td,{children:"Optional absolute path to the root folder of the project. If path is undefined or null, displays a dialog where the user can choose a folder to load. If the user cancels the dialog, nothing more happens."})]})})]}),"\n",(0,i.jsx)("a",{name:"createNewItem"}),"\n",(0,i.jsxs)(n.h2,{id:"createnewitembasedir-initialname-skiprename-isfolder--promise",children:["createNewItem(baseDir, initialName, skipRename, isFolder) \u21d2 ",(0,i.jsx)("code",{children:"$.Promise"})]}),"\n",(0,i.jsx)(n.p,{children:"Create a new item in the current project."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function",(0,i.jsx)(n.br,{}),"\n",(0,i.jsx)(n.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"$.Promise"})," - A promise object that will be resolved with the File\nof the created object, or rejected if the user cancelled or entered an illegal\nfilename."]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"baseDir"}),(0,i.jsxs)(n.td,{children:[(0,i.jsx)("code",{children:"string"})," | ",(0,i.jsx)("code",{children:"Directory"})]}),(0,i.jsx)(n.td,{children:"Full path of the directory where the item should go. Defaults to the project root if the entry is not valid or not within the project."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"initialName"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(n.td,{children:"Initial name for the item"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"skipRename"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"boolean"})}),(0,i.jsx)(n.td,{children:"If true, don't allow the user to rename the item"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"isFolder"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"boolean"})}),(0,i.jsx)(n.td,{children:"If true, create a folder instead of a file"})]})]})]}),"\n",(0,i.jsx)("a",{name:"deleteItem"}),"\n",(0,i.jsx)(n.h2,{id:"deleteitementry",children:"deleteItem(entry)"}),"\n",(0,i.jsx)(n.p,{children:"Delete file or directore from project"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsx)(n.tbody,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"entry"}),(0,i.jsxs)(n.td,{children:[(0,i.jsx)("code",{children:"File"})," | ",(0,i.jsx)("code",{children:"Directory"})]}),(0,i.jsx)(n.td,{children:"File or Directory to delete"})]})})]}),"\n",(0,i.jsx)("a",{name:"getLanguageFilter"}),"\n",(0,i.jsxs)(n.h2,{id:"getlanguagefilterlanguageid--function",children:["getLanguageFilter(languageId) \u21d2 ",(0,i.jsx)("code",{children:"function"})]}),"\n",(0,i.jsx)(n.p,{children:"Returns a filter for use with getAllFiles() that filters files based on LanguageManager language id"}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsx)(n.tbody,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"languageId"}),(0,i.jsxs)(n.td,{children:[(0,i.jsx)("code",{children:"string"})," | ",(0,i.jsx)("code",{children:"Array.<string>"})]}),(0,i.jsx)(n.td,{children:"a single string of a language id or an array of language ids"})]})})]}),"\n",(0,i.jsx)("a",{name:"forceFinishRename"}),"\n",(0,i.jsx)(n.h2,{id:"forcefinishrename",children:"forceFinishRename()"}),"\n",(0,i.jsx)(n.p,{children:"Causes the rename operation that's in progress to complete."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,i.jsx)("a",{name:"setProjectBusy"}),"\n",(0,i.jsx)(n.h2,{id:"setprojectbusyisbusy-message",children:"setProjectBusy(isBusy, message)"}),"\n",(0,i.jsx)(n.p,{children:"Sets or unsets project busy spinner with the specified message as reason."}),"\n",(0,i.jsxs)(n.p,{children:["For Eg., if you want to mark project as busy with reason compiling project:\n",(0,i.jsx)(n.code,{children:'setProjectBusy(true, "compiling project...")'})," . The project spinner will be shown with the specified reason."]}),"\n",(0,i.jsxs)(n.p,{children:["Once the compilation is complete, call, we need to unset the busy status by calling:\n",(0,i.jsx)(n.code,{children:'setProjectBusy(false, "compiling project...")'})," . Make sure to pass in the exact message when\ncalling set and unset."]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"isBusy"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"boolean"})}),(0,i.jsx)(n.td,{children:"true or false to set the project as busy or not"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"message"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(n.td,{children:"The reason why the project is busy. Will be displayed as a hover tooltip on busy spinner."})]})]})]}),"\n",(0,i.jsx)("a",{name:"getProjectRelativePath"}),"\n",(0,i.jsxs)(n.h2,{id:"getprojectrelativepathpath--string",children:["getProjectRelativePath(path) \u21d2 ",(0,i.jsx)("code",{children:"string"})]}),"\n",(0,i.jsx)(n.p,{children:"Return the project root relative path of the given path."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"})]})}),(0,i.jsx)(n.tbody,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"path"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"string"})})]})})]}),"\n",(0,i.jsx)("a",{name:"getContext"}),"\n",(0,i.jsx)(n.h2,{id:"getcontext",children:"getContext()"}),"\n",(0,i.jsx)(n.p,{children:"Gets the filesystem object for the current context in the file tree."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,i.jsx)("a",{name:"renameItemInline"}),"\n",(0,i.jsxs)(n.h2,{id:"renameiteminlineentry-ismoved--promise",children:["renameItemInline(entry, [isMoved]) \u21d2 ",(0,i.jsx)("code",{children:"$.Promise"})]}),"\n",(0,i.jsx)(n.p,{children:"Starts a rename operation, completing the current operation if there is one."}),"\n",(0,i.jsxs)(n.p,{children:["The Promise returned is resolved with an object with a ",(0,i.jsx)(n.code,{children:"newPath"})," property with the renamed path. If the user cancels the operation, the promise is resolved with the value RENAME_CANCELLED."]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function",(0,i.jsx)(n.br,{}),"\n",(0,i.jsx)(n.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"$.Promise"})," - a promise resolved when the rename is done."]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"entry"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"FileSystemEntry"})}),(0,i.jsx)(n.td,{children:"file or directory filesystem object to rename"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"[isMoved]"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"boolean"})}),(0,i.jsx)(n.td,{children:"optional flag which indicates whether the entry is being moved instead of renamed"})]})]})]}),"\n",(0,i.jsx)("a",{name:"getAllFiles"}),"\n",(0,i.jsxs)(n.h2,{id:"getallfilesfilter-includeworkingset-sort-options--promise",children:["getAllFiles(filter, [includeWorkingSet], [sort], options) \u21d2 ",(0,i.jsx)("code",{children:"$.Promise"})]}),"\n",(0,i.jsxs)(n.p,{children:["Returns an Array of all files for this project, optionally including\nfiles in the working set that are ",(0,i.jsx)(n.em,{children:"not"})," under the project root. Files are\nfiltered first by ProjectModel.shouldShow(), then by the custom filter\nargument (if one was provided)."]}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function",(0,i.jsx)(n.br,{}),"\n",(0,i.jsx)(n.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"$.Promise"})," - Promise that is resolved with an Array of File objects."]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"filter"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"function"})}),(0,i.jsx)(n.td,{children:"Optional function to filter the file list (does not filter directory traversal). API matches Array.filter()."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"[includeWorkingSet]"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"boolean"})}),(0,i.jsxs)(n.td,{children:["If true, include files in the working set that are not under the project root (",(0,i.jsx)(n.em,{children:"except"})," for untitled documents)."]})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"[sort]"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"boolean"})}),(0,i.jsx)(n.td,{children:"If true, The files will be sorted by their paths"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"options"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"Object"})}),(0,i.jsx)(n.td,{children:"optional path within project to narrow down the search"})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"options.scope"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"File"})}),(0,i.jsx)(n.td,{children:"optional path within project to narrow down the search"})]})]})]}),"\n",(0,i.jsx)("a",{name:"addIconProvider"}),"\n",(0,i.jsx)(n.h2,{id:"addiconprovidercallback-priority",children:"addIconProvider(callback, [priority])"}),"\n",(0,i.jsx)(n.p,{children:"Adds an icon provider. The callback is invoked before each working set item is created, and can\nreturn content to prepend to the item if it supports the icon."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"}),(0,i.jsx)(n.th,{children:"Default"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"callback"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"function"})}),(0,i.jsx)(n.td,{}),(0,i.jsx)(n.td,{children:"Return a string representing the HTML, a jQuery object or DOM node, or undefined. If undefined, nothing is prepended to the list item and the default or an available icon will be used."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"[priority]"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"number"})}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"0"})}),(0,i.jsx)(n.td,{children:"optional priority. 0 being lowest. The icons with the highest priority wins if there are multiple callback providers attached. icon providers of the same priority first valid response wins."})]})]})]}),"\n",(0,i.jsx)("a",{name:"addClassesProvider"}),"\n",(0,i.jsx)(n.h2,{id:"addclassesprovidercallback-priority",children:"addClassesProvider(callback, [priority])"}),"\n",(0,i.jsx)(n.p,{children:"Adds a CSS class provider, invoked before each working set item is created or updated. When called\nto update an existing item, all previously applied classes have been cleared."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,i.jsxs)(n.table,{children:[(0,i.jsx)(n.thead,{children:(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.th,{children:"Param"}),(0,i.jsx)(n.th,{children:"Type"}),(0,i.jsx)(n.th,{children:"Description"})]})}),(0,i.jsxs)(n.tbody,{children:[(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"callback"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"function"})}),(0,i.jsx)(n.td,{children:"Return a string containing space-separated CSS class(es) to add, or undefined to leave CSS unchanged."})]}),(0,i.jsxs)(n.tr,{children:[(0,i.jsx)(n.td,{children:"[priority]"}),(0,i.jsx)(n.td,{children:(0,i.jsx)("code",{children:"number"})}),(0,i.jsx)(n.td,{children:"optional priority. 0 being lowest. The class with the highest priority wins if there are multiple callback classes attached. class providers of the same priority will be appended."})]})]})]}),"\n",(0,i.jsx)("a",{name:"rerenderTree"}),"\n",(0,i.jsx)(n.h2,{id:"rerendertree",children:"rerenderTree()"}),"\n",(0,i.jsx)(n.p,{children:"Forces the file tree to rerender. Typically, the tree only rerenders the portions of the\ntree that have changed data. If an extension that augments the tree has changes that it\nneeds to display, calling rerenderTree will cause the components for the whole tree to\nbe rerendered."}),"\n",(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.strong,{children:"Kind"}),": global function"]})]})}function a(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(h,{...e})}):h(e)}},28453:(e,n,r)=>{r.d(n,{R:()=>l,x:()=>d});var t=r(96540);const i={},s=t.createContext(i);function l(e){const n=t.useContext(s);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:l(e.components),t.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/a94703ab.7a511b7b.js b/assets/js/a94703ab.7a511b7b.js new file mode 100644 index 00000000..d291cc35 --- /dev/null +++ b/assets/js/a94703ab.7a511b7b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9048],{78115:(e,t,n)=>{n.r(t),n.d(t,{default:()=>je});var a=n(96540),i=n(34164),o=n(45500),s=n(17559),l=n(26972),r=n(60609),c=n(21312),d=n(23104),u=n(75062);const m={backToTopButton:"backToTopButton_sjWU",backToTopButtonShow:"backToTopButtonShow_xfvO"};var b=n(74848);function h(){const{shown:e,scrollToTop:t}=function({threshold:e}){const[t,n]=(0,a.useState)(!1),i=(0,a.useRef)(!1),{startScroll:o,cancelScroll:s}=(0,d.gk)();return(0,d.Mq)((({scrollY:t},a)=>{const o=a?.scrollY;o&&(i.current?i.current=!1:t>=o?(s(),n(!1)):t<e?n(!1):t+window.innerHeight<document.documentElement.scrollHeight&&n(!0))})),(0,u.$)((e=>{e.location.hash&&(i.current=!0,n(!1))})),{shown:t,scrollToTop:()=>o(0)}}({threshold:300});return(0,b.jsx)("button",{"aria-label":(0,c.T)({id:"theme.BackToTopButton.buttonAriaLabel",message:"Scroll back to top",description:"The ARIA label for the back to top button"}),className:(0,i.A)("clean-btn",s.G.common.backToTopButton,m.backToTopButton,e&&m.backToTopButtonShow),type:"button",onClick:t})}var p=n(53109),x=n(56347),f=n(24581),j=n(6342),k=n(23465);function g(e){return(0,b.jsx)("svg",{width:"20",height:"20","aria-hidden":"true",...e,children:(0,b.jsxs)("g",{fill:"#7a7a7a",children:[(0,b.jsx)("path",{d:"M9.992 10.023c0 .2-.062.399-.172.547l-4.996 7.492a.982.982 0 01-.828.454H1c-.55 0-1-.453-1-1 0-.2.059-.403.168-.551l4.629-6.942L.168 3.078A.939.939 0 010 2.528c0-.548.45-.997 1-.997h2.996c.352 0 .649.18.828.45L9.82 9.472c.11.148.172.347.172.55zm0 0"}),(0,b.jsx)("path",{d:"M19.98 10.023c0 .2-.058.399-.168.547l-4.996 7.492a.987.987 0 01-.828.454h-3c-.547 0-.996-.453-.996-1 0-.2.059-.403.168-.551l4.625-6.942-4.625-6.945a.939.939 0 01-.168-.55 1 1 0 01.996-.997h3c.348 0 .649.18.828.45l4.996 7.492c.11.148.168.347.168.55zm0 0"})]})})}const v={collapseSidebarButton:"collapseSidebarButton_PEFL",collapseSidebarButtonIcon:"collapseSidebarButtonIcon_kv0_"};function _({onClick:e}){return(0,b.jsx)("button",{type:"button",title:(0,c.T)({id:"theme.docs.sidebar.collapseButtonTitle",message:"Collapse sidebar",description:"The title attribute for collapse button of doc sidebar"}),"aria-label":(0,c.T)({id:"theme.docs.sidebar.collapseButtonAriaLabel",message:"Collapse sidebar",description:"The title attribute for collapse button of doc sidebar"}),className:(0,i.A)("button button--secondary button--outline",v.collapseSidebarButton),onClick:e,children:(0,b.jsx)(g,{className:v.collapseSidebarButtonIcon})})}var A=n(65041),C=n(89532);const S=Symbol("EmptyContext"),T=a.createContext(S);function N({children:e}){const[t,n]=(0,a.useState)(null),i=(0,a.useMemo)((()=>({expandedItem:t,setExpandedItem:n})),[t]);return(0,b.jsx)(T.Provider,{value:i,children:e})}var I=n(41422),y=n(99169),L=n(28774),B=n(92303),w=n(16654),E=n(43186);const M={menuExternalLink:"menuExternalLink_NmtK",linkLabel:"linkLabel_WmDU"};function H({label:e}){return(0,b.jsx)("span",{title:e,className:M.linkLabel,children:e})}function W({item:e,onItemClick:t,activePath:n,level:a,index:o,...r}){const{href:c,label:d,className:u,autoAddBaseUrl:m}=e,h=(0,l.w8)(e,n),p=(0,w.A)(c);return(0,b.jsx)("li",{className:(0,i.A)(s.G.docs.docSidebarItemLink,s.G.docs.docSidebarItemLinkLevel(a),"menu__list-item",u),children:(0,b.jsxs)(L.A,{className:(0,i.A)("menu__link",!p&&M.menuExternalLink,{"menu__link--active":h}),autoAddBaseUrl:m,"aria-current":h?"page":void 0,to:c,...p&&{onClick:t?()=>t(e):void 0},...r,children:[(0,b.jsx)(H,{label:d}),!p&&(0,b.jsx)(E.A,{})]})},d)}const P={categoryLink:"categoryLink_byQd",categoryLinkLabel:"categoryLinkLabel_W154"};function G({collapsed:e,categoryLabel:t,onClick:n}){return(0,b.jsx)("button",{"aria-label":e?(0,c.T)({id:"theme.DocSidebarItem.expandCategoryAriaLabel",message:"Expand sidebar category '{label}'",description:"The ARIA label to expand the sidebar category"},{label:t}):(0,c.T)({id:"theme.DocSidebarItem.collapseCategoryAriaLabel",message:"Collapse sidebar category '{label}'",description:"The ARIA label to collapse the sidebar category"},{label:t}),"aria-expanded":!e,type:"button",className:"clean-btn menu__caret",onClick:n})}function R({label:e}){return(0,b.jsx)("span",{title:e,className:P.categoryLinkLabel,children:e})}function D(e){return 0===(0,l.Y)(e.item.items,e.activePath).length?(0,b.jsx)(U,{...e}):(0,b.jsx)(F,{...e})}function U({item:e,...t}){if("string"!=typeof e.href)return null;const{type:n,collapsed:a,collapsible:i,items:o,linkUnlisted:s,...l}=e,r={type:"link",...l};return(0,b.jsx)(W,{item:r,...t})}function F({item:e,onItemClick:t,activePath:n,level:o,index:r,...c}){const{items:d,label:u,collapsible:m,className:h,href:p}=e,{docs:{sidebar:{autoCollapseCategories:x}}}=(0,j.p)(),f=function(e){const t=(0,B.A)();return(0,a.useMemo)((()=>e.href&&!e.linkUnlisted?e.href:!t&&e.collapsible?(0,l.Nr)(e):void 0),[e,t])}(e),k=(0,l.w8)(e,n),g=(0,y.ys)(p,n),{collapsed:v,setCollapsed:_}=(0,I.u)({initialState:()=>!!m&&(!k&&e.collapsed)}),{expandedItem:A,setExpandedItem:N}=function(){const e=(0,a.useContext)(T);if(e===S)throw new C.dV("DocSidebarItemsExpandedStateProvider");return e}(),w=(e=!v)=>{N(e?null:r),_(e)};!function({isActive:e,collapsed:t,updateCollapsed:n,activePath:i}){const o=(0,C.ZC)(e),s=(0,C.ZC)(i);(0,a.useEffect)((()=>{(e&&!o||e&&o&&i!==s)&&t&&n(!1)}),[e,o,t,n,i,s])}({isActive:k,collapsed:v,updateCollapsed:w,activePath:n}),(0,a.useEffect)((()=>{m&&null!=A&&A!==r&&x&&_(!0)}),[m,A,r,_,x]);return(0,b.jsxs)("li",{className:(0,i.A)(s.G.docs.docSidebarItemCategory,s.G.docs.docSidebarItemCategoryLevel(o),"menu__list-item",{"menu__list-item--collapsed":v},h),children:[(0,b.jsxs)("div",{className:(0,i.A)("menu__list-item-collapsible",{"menu__list-item-collapsible--active":g}),children:[(0,b.jsx)(L.A,{className:(0,i.A)(P.categoryLink,"menu__link",{"menu__link--sublist":m,"menu__link--sublist-caret":!p&&m,"menu__link--active":k}),onClick:n=>{t?.(e),m&&(p?g?(n.preventDefault(),w()):w(!1):(n.preventDefault(),w()))},"aria-current":g?"page":void 0,role:m&&!p?"button":void 0,"aria-expanded":m&&!p?!v:void 0,href:m?f??"#":f,...c,children:(0,b.jsx)(R,{label:u})}),p&&m&&(0,b.jsx)(G,{collapsed:v,categoryLabel:u,onClick:e=>{e.preventDefault(),w()}})]}),(0,b.jsx)(I.N,{lazy:!0,as:"ul",className:"menu__list",collapsed:v,children:(0,b.jsx)(q,{items:d,tabIndex:v?-1:0,onItemClick:t,activePath:n,level:o+1})})]})}const V={menuHtmlItem:"menuHtmlItem_M9Kj"};function Y({item:e,level:t,index:n}){const{value:a,defaultStyle:o,className:l}=e;return(0,b.jsx)("li",{className:(0,i.A)(s.G.docs.docSidebarItemLink,s.G.docs.docSidebarItemLinkLevel(t),o&&[V.menuHtmlItem,"menu__list-item"],l),dangerouslySetInnerHTML:{__html:a}},n)}function K({item:e,...t}){switch(e.type){case"category":return(0,b.jsx)(D,{item:e,...t});case"html":return(0,b.jsx)(Y,{item:e,...t});default:return(0,b.jsx)(W,{item:e,...t})}}function z({items:e,...t}){const n=(0,l.Y)(e,t.activePath);return(0,b.jsx)(N,{children:n.map(((e,n)=>(0,b.jsx)(K,{item:e,index:n,...t},n)))})}const q=(0,a.memo)(z),O={menu:"menu_SIkG",menuWithAnnouncementBar:"menuWithAnnouncementBar_GW3s"};function Q({path:e,sidebar:t,className:n}){const o=function(){const{isActive:e}=(0,A.M)(),[t,n]=(0,a.useState)(e);return(0,d.Mq)((({scrollY:t})=>{e&&n(0===t)}),[e]),e&&t}();return(0,b.jsx)("nav",{"aria-label":(0,c.T)({id:"theme.docs.sidebar.navAriaLabel",message:"Docs sidebar",description:"The ARIA label for the sidebar navigation"}),className:(0,i.A)("menu thin-scrollbar",O.menu,o&&O.menuWithAnnouncementBar,n),children:(0,b.jsx)("ul",{className:(0,i.A)(s.G.docs.docSidebarMenu,"menu__list"),children:(0,b.jsx)(q,{items:t,activePath:e,level:1})})})}const Z="sidebar_njMd",J="sidebarWithHideableNavbar_wUlq",X="sidebarHidden_VK0M",$="sidebarLogo_isFc";function ee({path:e,sidebar:t,onCollapse:n,isHidden:a}){const{navbar:{hideOnScroll:o},docs:{sidebar:{hideable:s}}}=(0,j.p)();return(0,b.jsxs)("div",{className:(0,i.A)(Z,o&&J,a&&X),children:[o&&(0,b.jsx)(k.A,{tabIndex:-1,className:$}),(0,b.jsx)(Q,{path:e,sidebar:t}),s&&(0,b.jsx)(_,{onClick:n})]})}const te=a.memo(ee);var ne=n(75600),ae=n(22069);const ie=({sidebar:e,path:t})=>{const n=(0,ae.M)();return(0,b.jsx)("ul",{className:(0,i.A)(s.G.docs.docSidebarMenu,"menu__list"),children:(0,b.jsx)(q,{items:e,activePath:t,onItemClick:e=>{"category"===e.type&&e.href&&n.toggle(),"link"===e.type&&n.toggle()},level:1})})};function oe(e){return(0,b.jsx)(ne.GX,{component:ie,props:e})}const se=a.memo(oe);function le(e){const t=(0,f.l)(),n="desktop"===t||"ssr"===t,a="mobile"===t;return(0,b.jsxs)(b.Fragment,{children:[n&&(0,b.jsx)(te,{...e}),a&&(0,b.jsx)(se,{...e})]})}const re={expandButton:"expandButton_TmdG",expandButtonIcon:"expandButtonIcon_i1dp"};function ce({toggleSidebar:e}){return(0,b.jsx)("div",{className:re.expandButton,title:(0,c.T)({id:"theme.docs.sidebar.expandButtonTitle",message:"Expand sidebar",description:"The ARIA label and title attribute for expand button of doc sidebar"}),"aria-label":(0,c.T)({id:"theme.docs.sidebar.expandButtonAriaLabel",message:"Expand sidebar",description:"The ARIA label and title attribute for expand button of doc sidebar"}),tabIndex:0,role:"button",onKeyDown:e,onClick:e,children:(0,b.jsx)(g,{className:re.expandButtonIcon})})}const de={docSidebarContainer:"docSidebarContainer_YfHR",docSidebarContainerHidden:"docSidebarContainerHidden_DPk8",sidebarViewport:"sidebarViewport_aRkj"};function ue({children:e}){const t=(0,r.t)();return(0,b.jsx)(a.Fragment,{children:e},t?.name??"noSidebar")}function me({sidebar:e,hiddenSidebarContainer:t,setHiddenSidebarContainer:n}){const{pathname:o}=(0,x.zy)(),[l,r]=(0,a.useState)(!1),c=(0,a.useCallback)((()=>{l&&r(!1),!l&&(0,p.O)()&&r(!0),n((e=>!e))}),[n,l]);return(0,b.jsx)("aside",{className:(0,i.A)(s.G.docs.docSidebarContainer,de.docSidebarContainer,t&&de.docSidebarContainerHidden),onTransitionEnd:e=>{e.currentTarget.classList.contains(de.docSidebarContainer)&&t&&r(!0)},children:(0,b.jsx)(ue,{children:(0,b.jsxs)("div",{className:(0,i.A)(de.sidebarViewport,l&&de.sidebarViewportHidden),children:[(0,b.jsx)(le,{sidebar:e,path:o,onCollapse:c,isHidden:l}),l&&(0,b.jsx)(ce,{toggleSidebar:c})]})})})}const be={docMainContainer:"docMainContainer_TBSr",docMainContainerEnhanced:"docMainContainerEnhanced_lQrH",docItemWrapperEnhanced:"docItemWrapperEnhanced_JWYK"};function he({hiddenSidebarContainer:e,children:t}){const n=(0,r.t)();return(0,b.jsx)("main",{className:(0,i.A)(be.docMainContainer,(e||!n)&&be.docMainContainerEnhanced),children:(0,b.jsx)("div",{className:(0,i.A)("container padding-top--md padding-bottom--lg",be.docItemWrapper,e&&be.docItemWrapperEnhanced),children:t})})}const pe={docRoot:"docRoot_UBD9",docsWrapper:"docsWrapper_hBAB"};function xe({children:e}){const t=(0,r.t)(),[n,i]=(0,a.useState)(!1);return(0,b.jsxs)("div",{className:pe.docsWrapper,children:[(0,b.jsx)(h,{}),(0,b.jsxs)("div",{className:pe.docRoot,children:[t&&(0,b.jsx)(me,{sidebar:t.items,hiddenSidebarContainer:n,setHiddenSidebarContainer:i}),(0,b.jsx)(he,{hiddenSidebarContainer:n,children:e})]})]})}var fe=n(23363);function je(e){const t=(0,l.B5)(e);if(!t)return(0,b.jsx)(fe.A,{});const{docElement:n,sidebarName:a,sidebarItems:c}=t;return(0,b.jsx)(o.e3,{className:(0,i.A)(s.G.page.docsDocPage),children:(0,b.jsx)(r.V,{name:a,items:c,children:(0,b.jsx)(xe,{children:n})})})}},23363:(e,t,n)=>{n.d(t,{A:()=>l});n(96540);var a=n(34164),i=n(21312),o=n(51107),s=n(74848);function l({className:e}){return(0,s.jsx)("main",{className:(0,a.A)("container margin-vert--xl",e),children:(0,s.jsx)("div",{className:"row",children:(0,s.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,s.jsx)(o.A,{as:"h1",className:"hero__title",children:(0,s.jsx)(i.A,{id:"theme.NotFound.title",description:"The title of the 404 page",children:"Page Not Found"})}),(0,s.jsx)("p",{children:(0,s.jsx)(i.A,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page",children:"We could not find what you were looking for."})}),(0,s.jsx)("p",{children:(0,s.jsx)(i.A,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page",children:"Please contact the owner of the site that linked you to the original URL and let them know their link is broken."})})]})})})}}}]); \ No newline at end of file diff --git a/assets/js/aa459d6f.9f26b285.js b/assets/js/aa459d6f.9f26b285.js new file mode 100644 index 00000000..9916c2c8 --- /dev/null +++ b/assets/js/aa459d6f.9f26b285.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7827],{64369:(e,l,s)=>{s.r(l),s.d(l,{assets:()=>t,contentTitle:()=>o,default:()=>c,frontMatter:()=>d,metadata:()=>i,toc:()=>r});const i=JSON.parse('{"id":"API-Reference/widgets/DefaultDialogs","title":"DefaultDialogs","description":"Import :","source":"@site/api/API-Reference/widgets/DefaultDialogs.md","sourceDirName":"API-Reference/widgets","slug":"/API-Reference/widgets/DefaultDialogs","permalink":"/api/API-Reference/widgets/DefaultDialogs","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"WorkspaceManager","permalink":"/api/API-Reference/view/WorkspaceManager"},"next":{"title":"Dialogs","permalink":"/api/API-Reference/widgets/Dialogs"}}');var n=s(74848),a=s(28453);const d={},o=void 0,t={},r=[{value:"Import :",id:"import-",level:3},{value:"DefaultDialogs",id:"defaultdialogs",level:2},{value:"DefaultDialogs.DIALOG_ID_ERROR : <code>string</code>",id:"defaultdialogsdialog_id_error--string",level:3},{value:"DefaultDialogs.DIALOG_ID_INFO : <code>string</code>",id:"defaultdialogsdialog_id_info--string",level:3},{value:"DefaultDialogs.DIALOG_ID_SAVE_CLOSE : <code>string</code>",id:"defaultdialogsdialog_id_save_close--string",level:3},{value:"DefaultDialogs.DIALOG_ID_EXT_CHANGED : <code>string</code>",id:"defaultdialogsdialog_id_ext_changed--string",level:3},{value:"DefaultDialogs.DIALOG_ID_EXT_DELETED : <code>string</code>",id:"defaultdialogsdialog_id_ext_deleted--string",level:3},{value:"DefaultDialogs.DIALOG_ID_CHANGE_EXTENSIONS : <code>string</code>",id:"defaultdialogsdialog_id_change_extensions--string",level:3}];function D(e){const l={a:"a",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,a.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(l.h3,{id:"import-",children:"Import :"}),"\n",(0,n.jsx)(l.pre,{children:(0,n.jsx)(l.code,{className:"language-js",children:'const DefaultDialogs = brackets.getModule("widgets/DefaultDialogs")\n'})}),"\n",(0,n.jsx)("a",{name:"module_DefaultDialogs"}),"\n",(0,n.jsx)(l.h2,{id:"defaultdialogs",children:"DefaultDialogs"}),"\n",(0,n.jsx)(l.p,{children:"Constants representing dialog IDs\nThese IDs are used to identify different types of dialogs"}),"\n",(0,n.jsxs)(l.ul,{children:["\n",(0,n.jsxs)(l.li,{children:[(0,n.jsx)(l.a,{href:"#module_DefaultDialogs",children:"DefaultDialogs"}),"\n",(0,n.jsxs)(l.ul,{children:["\n",(0,n.jsxs)(l.li,{children:[(0,n.jsx)(l.a,{href:"#module_DefaultDialogs.DIALOG_ID_ERROR",children:".DIALOG_ID_ERROR"})," : ",(0,n.jsx)("code",{children:"string"})]}),"\n",(0,n.jsxs)(l.li,{children:[(0,n.jsx)(l.a,{href:"#module_DefaultDialogs.DIALOG_ID_INFO",children:".DIALOG_ID_INFO"})," : ",(0,n.jsx)("code",{children:"string"})]}),"\n",(0,n.jsxs)(l.li,{children:[(0,n.jsx)(l.a,{href:"#module_DefaultDialogs.DIALOG_ID_SAVE_CLOSE",children:".DIALOG_ID_SAVE_CLOSE"})," : ",(0,n.jsx)("code",{children:"string"})]}),"\n",(0,n.jsxs)(l.li,{children:[(0,n.jsx)(l.a,{href:"#module_DefaultDialogs.DIALOG_ID_EXT_CHANGED",children:".DIALOG_ID_EXT_CHANGED"})," : ",(0,n.jsx)("code",{children:"string"})]}),"\n",(0,n.jsxs)(l.li,{children:[(0,n.jsx)(l.a,{href:"#module_DefaultDialogs.DIALOG_ID_EXT_DELETED",children:".DIALOG_ID_EXT_DELETED"})," : ",(0,n.jsx)("code",{children:"string"})]}),"\n",(0,n.jsxs)(l.li,{children:[(0,n.jsx)(l.a,{href:"#module_DefaultDialogs.DIALOG_ID_CHANGE_EXTENSIONS",children:".DIALOG_ID_CHANGE_EXTENSIONS"})," : ",(0,n.jsx)("code",{children:"string"})]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,n.jsx)("a",{name:"module_DefaultDialogs.DIALOG_ID_ERROR"}),"\n",(0,n.jsxs)(l.h3,{id:"defaultdialogsdialog_id_error--string",children:["DefaultDialogs.DIALOG_ID_ERROR : ",(0,n.jsx)("code",{children:"string"})]}),"\n",(0,n.jsx)(l.p,{children:"ID for error dialog"}),"\n",(0,n.jsxs)(l.p,{children:[(0,n.jsx)(l.strong,{children:"Kind"}),": static constant of ",(0,n.jsx)(l.a,{href:"#module_DefaultDialogs",children:(0,n.jsx)("code",{children:"DefaultDialogs"})})]}),"\n",(0,n.jsx)("a",{name:"module_DefaultDialogs.DIALOG_ID_INFO"}),"\n",(0,n.jsxs)(l.h3,{id:"defaultdialogsdialog_id_info--string",children:["DefaultDialogs.DIALOG_ID_INFO : ",(0,n.jsx)("code",{children:"string"})]}),"\n",(0,n.jsx)(l.p,{children:"ID for information dialog (currently uses the same template as DIALOG_ID_ERROR)"}),"\n",(0,n.jsxs)(l.p,{children:[(0,n.jsx)(l.strong,{children:"Kind"}),": static constant of ",(0,n.jsx)(l.a,{href:"#module_DefaultDialogs",children:(0,n.jsx)("code",{children:"DefaultDialogs"})})]}),"\n",(0,n.jsx)("a",{name:"module_DefaultDialogs.DIALOG_ID_SAVE_CLOSE"}),"\n",(0,n.jsxs)(l.h3,{id:"defaultdialogsdialog_id_save_close--string",children:["DefaultDialogs.DIALOG_ID_SAVE_CLOSE : ",(0,n.jsx)("code",{children:"string"})]}),"\n",(0,n.jsx)(l.p,{children:"ID for save and close dialog"}),"\n",(0,n.jsxs)(l.p,{children:[(0,n.jsx)(l.strong,{children:"Kind"}),": static constant of ",(0,n.jsx)(l.a,{href:"#module_DefaultDialogs",children:(0,n.jsx)("code",{children:"DefaultDialogs"})})]}),"\n",(0,n.jsx)("a",{name:"module_DefaultDialogs.DIALOG_ID_EXT_CHANGED"}),"\n",(0,n.jsxs)(l.h3,{id:"defaultdialogsdialog_id_ext_changed--string",children:["DefaultDialogs.DIALOG_ID_EXT_CHANGED : ",(0,n.jsx)("code",{children:"string"})]}),"\n",(0,n.jsxs)(l.p,{children:["ID for ",(0,n.jsx)(l.code,{children:"external change detected"})," dialog"]}),"\n",(0,n.jsxs)(l.p,{children:[(0,n.jsx)(l.strong,{children:"Kind"}),": static constant of ",(0,n.jsx)(l.a,{href:"#module_DefaultDialogs",children:(0,n.jsx)("code",{children:"DefaultDialogs"})})]}),"\n",(0,n.jsx)("a",{name:"module_DefaultDialogs.DIALOG_ID_EXT_DELETED"}),"\n",(0,n.jsxs)(l.h3,{id:"defaultdialogsdialog_id_ext_deleted--string",children:["DefaultDialogs.DIALOG_ID_EXT_DELETED : ",(0,n.jsx)("code",{children:"string"})]}),"\n",(0,n.jsxs)(l.p,{children:["ID for ",(0,n.jsx)(l.code,{children:"external deletion detected"})," dialog"]}),"\n",(0,n.jsxs)(l.p,{children:[(0,n.jsx)(l.strong,{children:"Kind"}),": static constant of ",(0,n.jsx)(l.a,{href:"#module_DefaultDialogs",children:(0,n.jsx)("code",{children:"DefaultDialogs"})})]}),"\n",(0,n.jsx)("a",{name:"module_DefaultDialogs.DIALOG_ID_CHANGE_EXTENSIONS"}),"\n",(0,n.jsxs)(l.h3,{id:"defaultdialogsdialog_id_change_extensions--string",children:["DefaultDialogs.DIALOG_ID_CHANGE_EXTENSIONS : ",(0,n.jsx)("code",{children:"string"})]}),"\n",(0,n.jsxs)(l.p,{children:["ID for ",(0,n.jsx)(l.code,{children:"change extensions"})," dialog"]}),"\n",(0,n.jsxs)(l.p,{children:[(0,n.jsx)(l.strong,{children:"Kind"}),": static constant of ",(0,n.jsx)(l.a,{href:"#module_DefaultDialogs",children:(0,n.jsx)("code",{children:"DefaultDialogs"})})]})]})}function c(e={}){const{wrapper:l}={...(0,a.R)(),...e.components};return l?(0,n.jsx)(l,{...e,children:(0,n.jsx)(D,{...e})}):D(e)}},28453:(e,l,s)=>{s.d(l,{R:()=>d,x:()=>o});var i=s(96540);const n={},a=i.createContext(n);function d(e){const l=i.useContext(a);return i.useMemo((function(){return"function"==typeof e?e(l):{...l,...e}}),[l,e])}function o(e){let l;return l=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:d(e.components),i.createElement(a.Provider,{value:l},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/ab6fafad.51758465.js b/assets/js/ab6fafad.51758465.js new file mode 100644 index 00000000..dfd886da --- /dev/null +++ b/assets/js/ab6fafad.51758465.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9644],{89201:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>r,contentTitle:()=>a,default:()=>c,frontMatter:()=>l,metadata:()=>t,toc:()=>d});var t=i(86161),s=i(74848),o=i(28453);const l={slug:"release-3.5",title:"March-2024 Release (V-3.5) is now Live",description:"Phoenix Code 3.5 improves large project support, Find in Files, inline HTML number dials, and app stability. Download for Windows, Mac, and Linux.",authors:["arun","charly","kiran","phoenixBot"],tags:["Native Apps","Windows","Linux","Mac","Release"]},a=void 0,r={authorsImageUrls:[void 0,void 0,void 0,void 0]},d=[{value:"Inline HTML Number Dials",id:"inline-html-number-dials",level:2},{value:"Search Filters - Advanced Find in Files",id:"search-filters---advanced-find-in-files",level:2},{value:"Other Improvements",id:"other-improvements",level:2},{value:"A Request from the Phoenix Team:",id:"a-request-from-the-phoenix-team",level:2}];function h(e){const n={a:"a",code:"code",h2:"h2",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.p,{children:["The March release(3.5) of Phoenix Code is now available for download\nat ",(0,s.jsx)(n.a,{href:"https://phcode.io",children:"phcode.io"}),".\nThis month's update improves support for large projects, Find in Files, and app stability."]}),"\n",(0,s.jsx)(n.h2,{id:"inline-html-number-dials",children:"Inline HTML Number Dials"}),"\n",(0,s.jsx)(n.p,{children:"You can now use number dials in inline HTML styles, not just in CSS files."}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:"https://github.com/phcode-dev/phoenix/assets/5336369/f56ab73b-c080-4f01-a083-f41aa10c3d16",alt:"image"})}),"\n",(0,s.jsx)(n.h2,{id:"search-filters---advanced-find-in-files",children:"Search Filters - Advanced Find in Files"}),"\n",(0,s.jsxs)(n.p,{children:["All new search filters to find exactly what you want. ",(0,s.jsx)(n.code,{children:"Search in files"})," or\n",(0,s.jsx)(n.code,{children:"Exclude files"})," matching the given pattern instantly."]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:"https://github.com/phcode-dev/phoenix/assets/5336369/9a46a6a8-01a2-45db-aebc-9b280977bdc1",alt:"new find in files"})}),"\n",(0,s.jsx)(n.h2,{id:"other-improvements",children:"Other Improvements"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Projects with very large number of files can now be opened."}),"\n",(0,s.jsx)(n.li,{children:"Performance improvement when opening minified CSS/JS files and other formats\nwith very long lines."}),"\n",(0,s.jsx)(n.li,{children:"Added support for beautifying SCSS, SASS, LESS, TSX, and JSX files. The\nbeautification feature now preserves the cursor position."}),"\n",(0,s.jsx)(n.li,{children:"Improved startup speed and overall app stability."}),"\n",(0,s.jsx)(n.li,{children:"Bug fixes and improvements to new project dialog."}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"a-request-from-the-phoenix-team",children:"A Request from the Phoenix Team:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Share your feedback:"})," ",(0,s.jsx)(n.a,{href:"https://github.com/orgs/phcode-dev/discussions",children:"https://github.com/orgs/phcode-dev/discussions"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Spread the word"})," about Phoenix to friends and colleagues."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsxs)(n.a,{href:"https://opencollective.com/phoenix-ide",children:[(0,s.jsx)(n.strong,{children:"Consider supporting us"})," on Open Collective"]}),". Every contribution helps us to keep improving and expanding Phoenix Code."]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"With gratitude,"}),"\n",(0,s.jsx)(n.p,{children:"The Phoenix Team"})]})}function c(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},28453:(e,n,i)=>{i.d(n,{R:()=>l,x:()=>a});var t=i(96540);const s={},o=t.createContext(s);function l(e){const n=t.useContext(o);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),t.createElement(o.Provider,{value:n},e.children)}},86161:e=>{e.exports=JSON.parse('{"permalink":"/blog/release-3.5","editUrl":"https://github.com/phcode-dev/docs/blob/main/blog/2024-03-26-Release-3.5/index.md","source":"@site/blog/2024-03-26-Release-3.5/index.md","title":"March-2024 Release (V-3.5) is now Live","description":"Phoenix Code 3.5 improves large project support, Find in Files, inline HTML number dials, and app stability. Download for Windows, Mac, and Linux.","date":"2024-03-26T00:00:00.000Z","tags":[{"inline":true,"label":"Native Apps","permalink":"/blog/tags/native-apps"},{"inline":true,"label":"Windows","permalink":"/blog/tags/windows"},{"inline":true,"label":"Linux","permalink":"/blog/tags/linux"},{"inline":true,"label":"Mac","permalink":"/blog/tags/mac"},{"inline":true,"label":"Release","permalink":"/blog/tags/release"}],"readingTime":1.09,"hasTruncateMarker":false,"authors":[{"name":"Arun Bose","title":"Co-Founder, Phoenix Code","url":"https://github.com/abose","imageURL":"https://github.com/abose.png","key":"arun","page":null},{"name":"Charly P Abraham","title":"Co-Founder, Phoenix Code","url":"https://github.com/charlypa","imageURL":"https://github.com/charlypa.png","key":"charly","page":null},{"name":"Kiran Bose","title":"Community Contributor","url":"https://github.com/kiranbose","imageURL":"https://github.com/kiranbose.png","key":"kiran","page":null},{"name":"Phoenix Code Bot","title":"Our little elf who keeps the whole place together","url":"https://github.com/phoenixide","imageURL":"https://github.com/phoenixide.png","key":"phoenixBot","page":null}],"frontMatter":{"slug":"release-3.5","title":"March-2024 Release (V-3.5) is now Live","description":"Phoenix Code 3.5 improves large project support, Find in Files, inline HTML number dials, and app stability. Download for Windows, Mac, and Linux.","authors":["arun","charly","kiran","phoenixBot"],"tags":["Native Apps","Windows","Linux","Mac","Release"]},"unlisted":false,"prevItem":{"title":"April-2024 Release (V-3.6) is now Live","permalink":"/blog/release-3.6"},"nextItem":{"title":"Introducing Phoenix Code Desktop- Now on Windows, Mac & Linux","permalink":"/blog/welcome"}}')}}]); \ No newline at end of file diff --git a/assets/js/aba21aa0.a23de4c8.js b/assets/js/aba21aa0.a23de4c8.js new file mode 100644 index 00000000..92f8843f --- /dev/null +++ b/assets/js/aba21aa0.a23de4c8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5742],{27093:s=>{s.exports=JSON.parse('{"name":"docusaurus-plugin-content-docs","id":"default"}')}}]); \ No newline at end of file diff --git a/assets/js/acecf23e.28f9a35b.js b/assets/js/acecf23e.28f9a35b.js new file mode 100644 index 00000000..693f387f --- /dev/null +++ b/assets/js/acecf23e.28f9a35b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1903],{1912:s=>{s.exports=JSON.parse('{"blogBasePath":"/blog","blogTitle":"Blog","authorsListPath":"/blog/authors"}')}}]); \ No newline at end of file diff --git a/assets/js/ad04a8d9.d169250b.js b/assets/js/ad04a8d9.d169250b.js new file mode 100644 index 00000000..8585426c --- /dev/null +++ b/assets/js/ad04a8d9.d169250b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2042],{39411:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>i,contentTitle:()=>s,default:()=>h,frontMatter:()=>c,metadata:()=>r,toc:()=>a});const r=JSON.parse('{"id":"API-Reference/NodeConnector","title":"NodeConnector","description":"Import :","source":"@site/api/API-Reference/NodeConnector.md","sourceDirName":"API-Reference","slug":"/API-Reference/NodeConnector","permalink":"/api/API-Reference/NodeConnector","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"Session","permalink":"/api/API-Reference/JSUtils/Session"},"next":{"title":"CommandManager","permalink":"/api/API-Reference/command/CommandManager"}}');var d=o(74848),t=o(28453);const c={},s=void 0,i={},a=[{value:"Import :",id:"import-",level:3},{value:"NodeConnector",id:"nodeconnector",level:2},{value:"Setting Up a <code>NodeConnector</code>",id:"setting-up-a-nodeconnector",level:2},{value:"Create <code>NodeConnector</code> in Phoenix (<code>x.js</code>)",id:"create-nodeconnector-in-phoenix-xjs",level:3},{value:"Create <code>NodeConnector</code> in Node.js (<code>y.js</code>)",id:"create-nodeconnector-in-nodejs-yjs",level:3},{value:"Executing Functions",id:"executing-functions",level:2},{value:"Event Handling",id:"event-handling",level:2},{value:"Handling ArrayBuffer Data in Function Execution",id:"handling-arraybuffer-data-in-function-execution",level:3},{value:"Handling ArrayBuffer Data in Event Handling",id:"handling-arraybuffer-data-in-event-handling",level:3},{value:"Caveats",id:"caveats",level:2},{value:"NodeConnector.createNodeConnector(nodeConnectorID, moduleExports) \u21d2 <code>Object</code>",id:"nodeconnectorcreatenodeconnectornodeconnectorid-moduleexports--object",level:3},{value:"NodeConnector.isNodeAvailable() \u21d2 <code>boolean</code>",id:"nodeconnectorisnodeavailable--boolean",level:3},{value:"NodeConnector.isNodeReady() \u21d2 <code>boolean</code>",id:"nodeconnectorisnodeready--boolean",level:3},{value:"NodeConnector.terminateNode() \u21d2 <code>Promise</code>",id:"nodeconnectorterminatenode--promise",level:3},{value:"NodeConnector.setInspectEnabled(enabled)",id:"nodeconnectorsetinspectenabledenabled",level:3},{value:"NodeConnector.isInspectEnabled() \u21d2 <code>boolean</code>",id:"nodeconnectorisinspectenabled--boolean",level:3},{value:"NodeConnector.getInspectPort() \u21d2 <code>number</code>",id:"nodeconnectorgetinspectport--number",level:3}];function l(e){const n={a:"a",br:"br",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,t.R)(),...e.components};return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(n.h3,{id:"import-",children:"Import :"}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-js",children:'const NodeConnector = brackets.getModule("NodeConnector")\n'})}),"\n",(0,d.jsx)("a",{name:"module_NodeConnector"}),"\n",(0,d.jsx)(n.h2,{id:"nodeconnector",children:"NodeConnector"}),"\n",(0,d.jsx)(n.p,{children:"Node Connector Communication Module"}),"\n",(0,d.jsxs)(n.p,{children:["This module simplifies communication between Node.js and Phoenix (phcode). A ",(0,d.jsx)(n.code,{children:"NodeConnector"})," acts as an intermediary,\nallowing you to execute functions in Node.js from Phoenix and vice versa. You can use the ",(0,d.jsx)(n.code,{children:"execPeer"})," method to call\nfunctions on the other side and handle communication seamlessly. Use ",(0,d.jsx)(n.code,{children:"triggerPeer"})," to trigger events\non the other side."]}),"\n",(0,d.jsxs)(n.h2,{id:"setting-up-a-nodeconnector",children:["Setting Up a ",(0,d.jsx)(n.code,{children:"NodeConnector"})]}),"\n",(0,d.jsxs)(n.p,{children:["To establish communication between two modules, such as ",(0,d.jsx)(n.code,{children:"x.js"})," in Phoenix and ",(0,d.jsx)(n.code,{children:"y.js"})," in Node.js, follow these steps:"]}),"\n",(0,d.jsxs)(n.h3,{id:"create-nodeconnector-in-phoenix-xjs",children:["Create ",(0,d.jsx)(n.code,{children:"NodeConnector"})," in Phoenix (",(0,d.jsx)(n.code,{children:"x.js"}),")"]}),"\n",(0,d.jsx)(n.p,{children:(0,d.jsx)(n.strong,{children:"Example"})}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-js",children:"const NodeConnector = require('NodeConnector');\nconst XY_NODE_CONNECTOR_ID = 'ext_x_y'; // Use a unique ID\nlet nodeConnector = NodeConnector.createNodeConnector(XY_NODE_CONNECTOR_ID, exports);\n\nexports.modifyImage = async function(imageName, imageArrayBuffer) {\n // Perform image operations with the imageArrayBuffer\n // To return an ArrayBuffer, return an object with a `buffer` key.\n return {\n operationDone: 'colored, cropped',\n buffer: imageArrayBuffer,\n };\n};\n"})}),"\n",(0,d.jsxs)(n.h3,{id:"create-nodeconnector-in-nodejs-yjs",children:["Create ",(0,d.jsx)(n.code,{children:"NodeConnector"})," in Node.js (",(0,d.jsx)(n.code,{children:"y.js"}),")"]}),"\n",(0,d.jsx)(n.p,{children:(0,d.jsx)(n.strong,{children:"Example"})}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-js",children:"const XY_NODE_CONNECTOR_ID = 'ext_x_y'; // Use the same unique ID\nlet nodeConnector = global.createNodeConnector(XY_NODE_CONNECTOR_ID, exports);\n\nexports.getPWDRelative = async function(subPath) {\n return process.cwd + '/' + subPath;\n};\n"})}),"\n",(0,d.jsxs)(n.p,{children:["With these steps, a ",(0,d.jsx)(n.code,{children:"NodeConnector"})," is set up, enabling two-way communication."]}),"\n",(0,d.jsx)(n.h2,{id:"executing-functions",children:"Executing Functions"}),"\n",(0,d.jsxs)(n.p,{children:["To call a Node.js function from Phoenix, use the ",(0,d.jsx)(n.code,{children:"execPeer"})," method.\n",(0,d.jsx)(n.strong,{children:"Example"})]}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-js",children:"// In `x.js` (Phoenix)\nconst fullPath = await nodeConnector.execPeer('getPWDRelative', 'sub/path.html');\n"})}),"\n",(0,d.jsxs)(n.p,{children:["To execute a Phoenix function from Node.js and transfer binary data, pass an optional ArrayBuffer.\n",(0,d.jsx)(n.strong,{children:"Example"})]}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-js",children:"// In `y.js` (Node.js)\nconst { operationDone, buffer } = await nodeConnector.execPeer('modifyImage', {name:'theHills.png'}, imageAsArrayBuffer);\n"})}),"\n",(0,d.jsx)(n.h2,{id:"event-handling",children:"Event Handling"}),"\n",(0,d.jsxs)(n.p,{children:["The ",(0,d.jsx)(n.code,{children:"NodeConnector"})," object implements all the APIs supported by ",(0,d.jsx)(n.code,{children:"utils/EventDispatcher"}),". You can trigger and listen\nto events between Node.js and Phoenix using the ",(0,d.jsx)(n.code,{children:"triggerPeer"})," and (",(0,d.jsx)(n.code,{children:"on"}),", ",(0,d.jsx)(n.code,{children:"one"})," or ",(0,d.jsx)(n.code,{children:"off"}),") methods.\n",(0,d.jsx)(n.strong,{children:"Example"})]}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-js",children:"// In `y.js` (Node.js)\nnodeConnector.on('phoenixProjectOpened', (_event, projectPath) => {\n console.log(projectPath);\n});\n\nnodeConnector.one('phoenixProjectOpened', (_event, projectPath) => {\n console.log(projectPath + \"will be received only once\");\n});\n"})}),"\n",(0,d.jsxs)(n.p,{children:["To raise an event from Phoenix to Node.js:\n",(0,d.jsx)(n.strong,{children:"Example"})]}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-js",children:"// In `x.js` (Phoenix)\nnodeConnector.triggerPeer('phoenixProjectOpened', '/x/project/folder');\n"})}),"\n",(0,d.jsxs)(n.p,{children:["To Switch off events\n",(0,d.jsx)(n.strong,{children:"Example"})]}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-js",children:"nodeConnector.off('phoenixProjectOpened'); // will switch off all event handlers of that name.\n"})}),"\n",(0,d.jsxs)(n.p,{children:["By Default, all events handlers with the eventName is removed when you call ",(0,d.jsx)(n.code,{children:"nodeConnector.off(eventName)"})," fn.\nTo selectively switch off event handlers, please see reference for ",(0,d.jsx)(n.code,{children:"utils/EventDispatcher"})," module."]}),"\n",(0,d.jsx)(n.h3,{id:"handling-arraybuffer-data-in-function-execution",children:"Handling ArrayBuffer Data in Function Execution"}),"\n",(0,d.jsxs)(n.p,{children:["When executing functions that send or receive binary data, ensure that the functions are asynchronous and accept an\noptional ArrayBuffer as a parameter. To return binary data, use an object with a ",(0,d.jsx)(n.code,{children:"buffer"})," key."]}),"\n",(0,d.jsxs)(n.p,{children:["Example of calling a function in Node.js with binary data transfer:\n",(0,d.jsx)(n.strong,{children:"Example"})]}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-js",children:"// In `y.js` (Node.js)\nconst { operationDone, buffer } = await nodeConnector.execPeer('modifyImage', {name:'name.png'}, imageArrayBuffer);\n"})}),"\n",(0,d.jsx)(n.h3,{id:"handling-arraybuffer-data-in-event-handling",children:"Handling ArrayBuffer Data in Event Handling"}),"\n",(0,d.jsxs)(n.p,{children:["Use the ",(0,d.jsx)(n.code,{children:"triggerPeer"})," method to send binary data in events. Include the ArrayBuffer as an optional parameter."]}),"\n",(0,d.jsxs)(n.p,{children:["Example of sending binary data in an event from Phoenix to Node.js:\n",(0,d.jsx)(n.strong,{children:"Example"})]}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-js",children:"// In `x.js` (Phoenix)\nconst imageArrayBuffer = getSomeImageArrayBuffer(); // Get the ArrayBuffer\nnodeConnector.triggerPeer('imageEdited', 'name.png', imageArrayBuffer);\n"})}),"\n",(0,d.jsx)(n.h2,{id:"caveats",children:"Caveats"}),"\n",(0,d.jsxs)(n.ul,{children:["\n",(0,d.jsx)(n.li,{children:"Be cautious when sending large binary data, as it may affect performance and memory usage. Transferring large\ndata is fully supported, but be mindful of performance."}),"\n",(0,d.jsxs)(n.li,{children:["Functions called with ",(0,d.jsx)(n.code,{children:"execPeer"})," and ",(0,d.jsx)(n.code,{children:"triggerPeer"})," must be asynchronous and accept a single argument. An optional\nsecond argument can be used to transfer large binary data as an ArrayBuffer."]}),"\n"]}),"\n",(0,d.jsxs)(n.p,{children:["For more event handling operations and details, refer to the documentation for the ",(0,d.jsx)(n.code,{children:"utils/EventDispatcher"})," module."]}),"\n",(0,d.jsxs)(n.ul,{children:["\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#module_NodeConnector",children:"NodeConnector"}),"\n",(0,d.jsxs)(n.ul,{children:["\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#module_NodeConnector..createNodeConnector",children:".createNodeConnector(nodeConnectorID, moduleExports)"})," \u21d2 ",(0,d.jsx)("code",{children:"Object"})]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#module_NodeConnector..isNodeAvailable",children:".isNodeAvailable()"})," \u21d2 ",(0,d.jsx)("code",{children:"boolean"})]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#module_NodeConnector..isNodeReady",children:".isNodeReady()"})," \u21d2 ",(0,d.jsx)("code",{children:"boolean"})]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#module_NodeConnector..terminateNode",children:".terminateNode()"})," \u21d2 ",(0,d.jsx)("code",{children:"Promise"})]}),"\n",(0,d.jsx)(n.li,{children:(0,d.jsx)(n.a,{href:"#module_NodeConnector..setInspectEnabled",children:".setInspectEnabled(enabled)"})}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#module_NodeConnector..isInspectEnabled",children:".isInspectEnabled()"})," \u21d2 ",(0,d.jsx)("code",{children:"boolean"})]}),"\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)(n.a,{href:"#module_NodeConnector..getInspectPort",children:".getInspectPort()"})," \u21d2 ",(0,d.jsx)("code",{children:"number"})]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,d.jsx)("a",{name:"module_NodeConnector..createNodeConnector"}),"\n",(0,d.jsxs)(n.h3,{id:"nodeconnectorcreatenodeconnectornodeconnectorid-moduleexports--object",children:["NodeConnector.createNodeConnector(nodeConnectorID, moduleExports) \u21d2 ",(0,d.jsx)("code",{children:"Object"})]}),"\n",(0,d.jsx)(n.p,{children:"Creates a new node connector with the specified ID and module exports."}),"\n",(0,d.jsxs)(n.p,{children:["Returns a NodeConnector Object (which is an EventDispatcher with\nadditional ",(0,d.jsx)(n.code,{children:"execPeer"})," and ",(0,d.jsx)(n.code,{children:"triggerPeer"})," methods. ",(0,d.jsx)(n.code,{children:"peer"})," here means, if you are executing ",(0,d.jsx)(n.code,{children:"execPeer"}),"\nin Phoenix, it will execute the named function in node side, and vice versa. You can right away start\nusing ",(0,d.jsx)(n.code,{children:"execPeer"}),", ",(0,d.jsx)(n.code,{children:"triggerPeer"}),"(to send/receive events) APIs without waiting to check if the\nother side nodeConnector is created."]}),"\n",(0,d.jsxs)(n.p,{children:["Note: If the NodeConnector has not been created on the other end, requests made with ",(0,d.jsx)(n.code,{children:"execPeer"})," or\n",(0,d.jsx)(n.code,{children:"triggerPeer"})," will be temporarily queued for up to 10 seconds to allow time for the connector to be created.\nIf the connector is not created within this timeout period, all queued ",(0,d.jsx)(n.code,{children:"execPeer"})," requests will be rejected,\nand all queued events will be dropped. It is recommended to call the ",(0,d.jsx)(n.code,{children:"createNodeConnector"})," API on both ends\nwithin a timeframe of less than 10 seconds(ideally same time) for seamless communication."]}),"\n",(0,d.jsxs)(n.ul,{children:["\n",(0,d.jsx)(n.li,{children:"execPeer: A function that executes a peer function with specified parameters."}),"\n",(0,d.jsx)(n.li,{children:"triggerPeer: A function that triggers an event to be sent to a peer."}),"\n",(0,d.jsxs)(n.li,{children:["Also contains all the APIs supported by ",(0,d.jsx)(n.code,{children:"utils/EventDispatcher"})," module."]}),"\n"]}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,d.jsx)(n.a,{href:"#module_NodeConnector",children:(0,d.jsx)("code",{children:"NodeConnector"})}),(0,d.jsx)(n.br,{}),"\n",(0,d.jsx)(n.strong,{children:"Returns"}),": ",(0,d.jsx)("code",{children:"Object"})," - - A NodeConnector Object. Also contains all the APIs supported by ",(0,d.jsx)(n.code,{children:"utils/EventDispatcher"})," module.",(0,d.jsx)(n.br,{}),"\n",(0,d.jsx)(n.strong,{children:"Throws"}),":"]}),"\n",(0,d.jsxs)(n.ul,{children:["\n",(0,d.jsxs)(n.li,{children:[(0,d.jsx)("code",{children:"Error"})," - If a node connector with the same ID already exists/invalid args passed."]}),"\n"]}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Param"}),(0,d.jsx)(n.th,{children:"Type"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsxs)(n.tbody,{children:[(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:"nodeConnectorID"}),(0,d.jsx)(n.td,{children:(0,d.jsx)("code",{children:"string"})}),(0,d.jsx)(n.td,{children:"The unique identifier for the new node connector."})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:"moduleExports"}),(0,d.jsx)(n.td,{children:(0,d.jsx)("code",{children:"Object"})}),(0,d.jsx)(n.td,{children:"The exports of the module that contains the functions to be executed on the other side."})]})]})]}),"\n",(0,d.jsx)("a",{name:"module_NodeConnector..isNodeAvailable"}),"\n",(0,d.jsxs)(n.h3,{id:"nodeconnectorisnodeavailable--boolean",children:["NodeConnector.isNodeAvailable() \u21d2 ",(0,d.jsx)("code",{children:"boolean"})]}),"\n",(0,d.jsx)(n.p,{children:"Checks if Node.js Engine is available. (returns true even if the node instance is terminated)"}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,d.jsx)(n.a,{href:"#module_NodeConnector",children:(0,d.jsx)("code",{children:"NodeConnector"})}),(0,d.jsx)(n.br,{}),"\n",(0,d.jsx)(n.strong,{children:"Returns"}),": ",(0,d.jsx)("code",{children:"boolean"})," - Returns true if Node.js Engine is available."]}),"\n",(0,d.jsx)("a",{name:"module_NodeConnector..isNodeReady"}),"\n",(0,d.jsxs)(n.h3,{id:"nodeconnectorisnodeready--boolean",children:["NodeConnector.isNodeReady() \u21d2 ",(0,d.jsx)("code",{children:"boolean"})]}),"\n",(0,d.jsx)(n.p,{children:"Node is available and is ready to exec requests"}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,d.jsx)(n.a,{href:"#module_NodeConnector",children:(0,d.jsx)("code",{children:"NodeConnector"})})]}),"\n",(0,d.jsx)("a",{name:"module_NodeConnector..terminateNode"}),"\n",(0,d.jsxs)(n.h3,{id:"nodeconnectorterminatenode--promise",children:["NodeConnector.terminateNode() \u21d2 ",(0,d.jsx)("code",{children:"Promise"})]}),"\n",(0,d.jsx)(n.p,{children:"Terminate the PhNodeEngine node if it is available. Else does nothing."}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,d.jsx)(n.a,{href:"#module_NodeConnector",children:(0,d.jsx)("code",{children:"NodeConnector"})}),(0,d.jsx)(n.br,{}),"\n",(0,d.jsx)(n.strong,{children:"Returns"}),": ",(0,d.jsx)("code",{children:"Promise"})," - promise that resolves when node process is terminated and exits."]}),"\n",(0,d.jsx)("a",{name:"module_NodeConnector..setInspectEnabled"}),"\n",(0,d.jsx)(n.h3,{id:"nodeconnectorsetinspectenabledenabled",children:"NodeConnector.setInspectEnabled(enabled)"}),"\n",(0,d.jsx)(n.p,{children:"Sets weather to enable node inspector in next boot."}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,d.jsx)(n.a,{href:"#module_NodeConnector",children:(0,d.jsx)("code",{children:"NodeConnector"})})]}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Param"}),(0,d.jsx)(n.th,{children:"Type"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsx)(n.tbody,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:"enabled"}),(0,d.jsx)(n.td,{children:(0,d.jsx)("code",{children:"boolean"})}),(0,d.jsx)(n.td,{children:"true to enable, else false."})]})})]}),"\n",(0,d.jsx)("a",{name:"module_NodeConnector..isInspectEnabled"}),"\n",(0,d.jsxs)(n.h3,{id:"nodeconnectorisinspectenabled--boolean",children:["NodeConnector.isInspectEnabled() \u21d2 ",(0,d.jsx)("code",{children:"boolean"})]}),"\n",(0,d.jsx)(n.p,{children:"Returns whether node inspector is enabled. If node is not present, always returns false."}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,d.jsx)(n.a,{href:"#module_NodeConnector",children:(0,d.jsx)("code",{children:"NodeConnector"})}),(0,d.jsx)(n.br,{}),"\n",(0,d.jsx)(n.strong,{children:"Returns"}),": ",(0,d.jsx)("code",{children:"boolean"})," - True if inspect mode is enabled, false otherwise."]}),"\n",(0,d.jsx)("a",{name:"module_NodeConnector..getInspectPort"}),"\n",(0,d.jsxs)(n.h3,{id:"nodeconnectorgetinspectport--number",children:["NodeConnector.getInspectPort() \u21d2 ",(0,d.jsx)("code",{children:"number"})]}),"\n",(0,d.jsx)(n.p,{children:"Retrieves the node inspector port for the Phoenix Node.js engine."}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,d.jsx)(n.a,{href:"#module_NodeConnector",children:(0,d.jsx)("code",{children:"NodeConnector"})}),(0,d.jsx)(n.br,{}),"\n",(0,d.jsx)(n.strong,{children:"Returns"}),": ",(0,d.jsx)("code",{children:"number"})," - The inspection port number."]})]})}function h(e={}){const{wrapper:n}={...(0,t.R)(),...e.components};return n?(0,d.jsx)(n,{...e,children:(0,d.jsx)(l,{...e})}):l(e)}},28453:(e,n,o)=>{o.d(n,{R:()=>c,x:()=>s});var r=o(96540);const d={},t=r.createContext(d);function c(e){const n=r.useContext(t);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(d):e.components||d:c(e.components),r.createElement(t.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/ad9487c3.f0e39c3a.js b/assets/js/ad9487c3.f0e39c3a.js new file mode 100644 index 00000000..7c1eb36c --- /dev/null +++ b/assets/js/ad9487c3.f0e39c3a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1706],{87035:a=>{a.exports=JSON.parse('{"tag":{"label":"Brackets","permalink":"/blog/tags/brackets","allTagsPath":"/blog/tags","count":2,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/brackets","page":1,"postsPerPage":10,"totalPages":1,"totalCount":2,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]); \ No newline at end of file diff --git a/assets/js/b00410e3.c3ba0681.js b/assets/js/b00410e3.c3ba0681.js new file mode 100644 index 00000000..342ae198 --- /dev/null +++ b/assets/js/b00410e3.c3ba0681.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6638],{29318:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>h,contentTitle:()=>d,default:()=>o,frontMatter:()=>l,metadata:()=>t,toc:()=>a});const t=JSON.parse('{"id":"API-Reference/file/FileUtils","title":"FileUtils","description":"Import :","source":"@site/api/API-Reference/file/FileUtils.md","sourceDirName":"API-Reference/file","slug":"/API-Reference/file/FileUtils","permalink":"/api/API-Reference/file/FileUtils","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"TaskManager","permalink":"/api/API-Reference/features/TaskManager"},"next":{"title":"FileSystem","permalink":"/api/API-Reference/filesystem/"}}');var s=i(74848),r=i(28453);const l={},d=void 0,h={},a=[{value:"Import :",id:"import-",level:3},{value:"LINE_ENDINGS_CRLF : <code>enum</code>",id:"line_endings_crlf--enum",level:2},{value:"LINE_ENDINGS_LF : <code>enum</code>",id:"line_endings_lf--enum",level:2},{value:"Maximium : <code>Number</code>",id:"maximium--number",level:2},{value:"readAsText(file, bypassCache, [options]) \u21d2 <code>$.Promise</code>",id:"readastextfile-bypasscache-options--promise",level:2},{value:"writeText(file, text, [allowBlindWrite]) \u21d2 <code>$.Promise</code>",id:"writetextfile-text-allowblindwrite--promise",level:2},{value:"getPlatformLineEndings() \u21d2 <code>LINE_ENDINGS_CRLF</code> | <code>LINE_ENDINGS_LF</code>",id:"getplatformlineendings--line_endings_crlf--line_endings_lf",level:2},{value:"sniffLineEndings(text) \u21d2 <code>null</code> | <code>LINE_ENDINGS_CRLF</code> | <code>LINE_ENDINGS_LF</code>",id:"snifflineendingstext--null--line_endings_crlf--line_endings_lf",level:2},{value:"translateLineEndings(text, lineEndings) \u21d2 <code>string</code>",id:"translatelineendingstext-lineendings--string",level:2},{value:"getFileErrorString(name) \u21d2 <code>string</code>",id:"getfileerrorstringname--string",level:2},{value:"makeDialogFileList(Array)",id:"makedialogfilelistarray",level:2},{value:"convertToNativePath(path) \u21d2 <code>string</code>",id:"converttonativepathpath--string",level:2},{value:"convertWindowsPathToUnixPath(path) \u21d2 <code>string</code>",id:"convertwindowspathtounixpathpath--string",level:2},{value:"stripTrailingSlash(path) \u21d2 <code>string</code>",id:"striptrailingslashpath--string",level:2},{value:"getBaseName(fullPath) \u21d2 <code>string</code>",id:"getbasenamefullpath--string",level:2},{value:"getNativeBracketsDirectoryPath() \u21d2 <code>string</code>",id:"getnativebracketsdirectorypath--string",level:2},{value:"getNativeModuleDirectoryPath() \u21d2 <code>string</code>",id:"getnativemoduledirectorypath--string",level:2},{value:"getFileExtension(fullPath) \u21d2 <code>string</code>",id:"getfileextensionfullpath--string",level:2},{value:"getRelativeFilename(basePath, filename) \u21d2 <code>string</code>",id:"getrelativefilenamebasepath-filename--string",level:2},{value:"isStaticHtmlFileExt(filePath) \u21d2 <code>boolean</code>",id:"isstatichtmlfileextfilepath--boolean",level:2},{value:"getDirectoryPath(fullPath) \u21d2 <code>string</code>",id:"getdirectorypathfullpath--string",level:2},{value:"getParentPath(fullPath) \u21d2 <code>string</code>",id:"getparentpathfullpath--string",level:2},{value:"getFilenameWithoutExtension(filename) \u21d2 <code>string</code>",id:"getfilenamewithoutextensionfilename--string",level:2},{value:"compareFilenames(filename1, filename2, extFirst) \u21d2 <code>number</code>",id:"comparefilenamesfilename1-filename2-extfirst--number",level:2},{value:"comparePaths(path1, path2) \u21d2 <code>number</code>",id:"comparepathspath1-path2--number",level:2},{value:"encodeFilePath(path) \u21d2 <code>string</code>",id:"encodefilepathpath--string",level:2},{value:"shouldOpenInExternalApplication(ext) \u21d2 <code>string</code>",id:"shouldopeninexternalapplicationext--string",level:2},{value:"addExtensionToExternalAppList(ext)",id:"addextensiontoexternalapplistext",level:2}];function c(e){const n={a:"a",br:"br",code:"code",h2:"h2",h3:"h3",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,r.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h3,{id:"import-",children:"Import :"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-js",children:'const FileUtils = brackets.getModule("file/FileUtils")\n'})}),"\n",(0,s.jsx)("a",{name:"LINE_ENDINGS_CRLF"}),"\n",(0,s.jsxs)(n.h2,{id:"line_endings_crlf--enum",children:["LINE_ENDINGS_CRLF : ",(0,s.jsx)("code",{children:"enum"})]}),"\n",(0,s.jsx)(n.p,{children:"Line endings crlf"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global enum"]}),"\n",(0,s.jsx)("a",{name:"LINE_ENDINGS_LF"}),"\n",(0,s.jsxs)(n.h2,{id:"line_endings_lf--enum",children:["LINE_ENDINGS_LF : ",(0,s.jsx)("code",{children:"enum"})]}),"\n",(0,s.jsx)(n.p,{children:"Line endings lf"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global enum"]}),"\n",(0,s.jsx)("a",{name:"Maximium"}),"\n",(0,s.jsxs)(n.h2,{id:"maximium--number",children:["Maximium : ",(0,s.jsx)("code",{children:"Number"})]}),"\n",(0,s.jsx)(n.p,{children:"file size (in bytes)\nThis must be a hard-coded value since this value\ntells how low-level APIs should behave which cannot\nhave a load order dependency on preferences manager"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,s.jsx)("a",{name:"readAsText"}),"\n",(0,s.jsxs)(n.h2,{id:"readastextfile-bypasscache-options--promise",children:["readAsText(file, bypassCache, [options]) \u21d2 ",(0,s.jsx)("code",{children:"$.Promise"})]}),"\n",(0,s.jsx)(n.p,{children:"Asynchronously reads a file as UTF-8 encoded text."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"$.Promise"})," - a jQuery promise that will be resolved with the\nfile's text content plus its timestamp, or rejected with a FileSystemError string\nconstant if the file can not be read."]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"file"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"File"})}),(0,s.jsx)(n.td,{children:"File to read"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"bypassCache"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"boolean"})}),(0,s.jsx)(n.td,{children:"an optional argument, if specified will read from disc instead of using cache."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"[options]"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"object"})}),(0,s.jsx)(n.td,{})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"[options.ignoreFileSizeLimits]"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"boolean"})}),(0,s.jsx)(n.td,{children:"Will read larger files than 16MB limit. will bypassCache + won't cache if enabled."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"[options.doNotCache]"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"boolean"})}),(0,s.jsx)(n.td,{children:"will not cache if enabled. Auto-enabled if ignoreFileSizeLimits = true"})]})]})]}),"\n",(0,s.jsx)("a",{name:"writeText"}),"\n",(0,s.jsxs)(n.h2,{id:"writetextfile-text-allowblindwrite--promise",children:["writeText(file, text, [allowBlindWrite]) \u21d2 ",(0,s.jsx)("code",{children:"$.Promise"})]}),"\n",(0,s.jsx)(n.p,{children:"Asynchronously writes a file as UTF-8 encoded text."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"$.Promise"})," - a jQuery promise that will be resolved when\nfile writing completes, or rejected with a FileSystemError string constant."]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"file"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"File"})}),(0,s.jsx)(n.td,{children:"File to write"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"text"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(n.td,{})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"[allowBlindWrite]"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"boolean"})}),(0,s.jsx)(n.td,{children:"Indicates whether or not CONTENTS_MODIFIED errors---which can be triggered if the actual file contents differ from the FileSystem's last-known contents---should be ignored."})]})]})]}),"\n",(0,s.jsx)("a",{name:"getPlatformLineEndings"}),"\n",(0,s.jsxs)(n.h2,{id:"getplatformlineendings--line_endings_crlf--line_endings_lf",children:["getPlatformLineEndings() \u21d2 ",(0,s.jsx)(n.a,{href:"#LINE_ENDINGS_CRLF",children:(0,s.jsx)("code",{children:"LINE_ENDINGS_CRLF"})})," | ",(0,s.jsx)(n.a,{href:"#LINE_ENDINGS_LF",children:(0,s.jsx)("code",{children:"LINE_ENDINGS_LF"})})]}),"\n",(0,s.jsx)(n.p,{children:"Returns the standard line endings for the current platform"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsx)("a",{name:"sniffLineEndings"}),"\n",(0,s.jsxs)(n.h2,{id:"snifflineendingstext--null--line_endings_crlf--line_endings_lf",children:["sniffLineEndings(text) \u21d2 ",(0,s.jsx)("code",{children:"null"})," | ",(0,s.jsx)(n.a,{href:"#LINE_ENDINGS_CRLF",children:(0,s.jsx)("code",{children:"LINE_ENDINGS_CRLF"})})," | ",(0,s.jsx)(n.a,{href:"#LINE_ENDINGS_LF",children:(0,s.jsx)("code",{children:"LINE_ENDINGS_LF"})})]}),"\n",(0,s.jsx)(n.p,{children:"Scans the first 1000 chars of the text to determine how it encodes line endings. Returns\nnull if usage is mixed or if no line endings found."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"text"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})})]})})]}),"\n",(0,s.jsx)("a",{name:"translateLineEndings"}),"\n",(0,s.jsxs)(n.h2,{id:"translatelineendingstext-lineendings--string",children:["translateLineEndings(text, lineEndings) \u21d2 ",(0,s.jsx)("code",{children:"string"})]}),"\n",(0,s.jsx)(n.p,{children:"Translates any line ending types in the given text to the be the single form specified"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"text"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"lineEndings"}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("code",{children:"null"})," | ",(0,s.jsx)(n.a,{href:"#LINE_ENDINGS_CRLF",children:(0,s.jsx)("code",{children:"LINE_ENDINGS_CRLF"})})," | ",(0,s.jsx)(n.a,{href:"#LINE_ENDINGS_LF",children:(0,s.jsx)("code",{children:"LINE_ENDINGS_LF"})})]})]})]})]}),"\n",(0,s.jsx)("a",{name:"getFileErrorString"}),"\n",(0,s.jsxs)(n.h2,{id:"getfileerrorstringname--string",children:["getFileErrorString(name) \u21d2 ",(0,s.jsx)("code",{children:"string"})]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"string"})," - User-friendly, localized error message"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"name"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"FileSystemError"})})]})})]}),"\n",(0,s.jsx)("a",{name:"makeDialogFileList"}),"\n",(0,s.jsx)(n.h2,{id:"makedialogfilelistarray",children:"makeDialogFileList(Array)"}),"\n",(0,s.jsx)(n.p,{children:"Creates an HTML string for a list of files to be reported on, suitable for use in a dialog."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Array"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"Array.<string>"})}),(0,s.jsx)(n.td,{children:"of filenames or paths to display."})]})})]}),"\n",(0,s.jsx)("a",{name:"convertToNativePath"}),"\n",(0,s.jsxs)(n.h2,{id:"converttonativepathpath--string",children:["convertToNativePath(path) \u21d2 ",(0,s.jsx)("code",{children:"string"})]}),"\n",(0,s.jsx)(n.p,{children:'Convert a URI path to a native path.\nOn both platforms, this unescapes the URI\nOn windows, URI paths start with a "/", but have a drive letter ("C:"). In this\ncase, remove the initial "/".'}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"path"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})})]})})]}),"\n",(0,s.jsx)("a",{name:"convertWindowsPathToUnixPath"}),"\n",(0,s.jsxs)(n.h2,{id:"convertwindowspathtounixpathpath--string",children:["convertWindowsPathToUnixPath(path) \u21d2 ",(0,s.jsx)("code",{children:"string"})]}),"\n",(0,s.jsx)(n.p,{children:'Convert a Windows-native path to use Unix style slashes.\nOn Windows, this converts "C:\\foo\\bar\\baz.txt" to "C:/foo/bar/baz.txt".\nOn Mac, this does nothing, since Mac paths are already in Unix syntax.\n(Note that this does not add an initial forward-slash. Internally, our\nAPIs generally use the "C:/foo/bar/baz.txt" style for "native" paths.)'}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"string"})," - A Unix-style path."]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"path"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(n.td,{children:"A native-style path."})]})})]}),"\n",(0,s.jsx)("a",{name:"stripTrailingSlash"}),"\n",(0,s.jsxs)(n.h2,{id:"striptrailingslashpath--string",children:["stripTrailingSlash(path) \u21d2 ",(0,s.jsx)("code",{children:"string"})]}),"\n",(0,s.jsx)(n.p,{children:'Removes the trailing slash from a path or URL, if it has one.\nWarning: this differs from the format of most paths used in Brackets! Use paths ending in "/"\nnormally, as this is the format used by Directory.fullPath.'}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"path"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(n.td,{children:"or URL"})]})})]}),"\n",(0,s.jsx)("a",{name:"getBaseName"}),"\n",(0,s.jsxs)(n.h2,{id:"getbasenamefullpath--string",children:["getBaseName(fullPath) \u21d2 ",(0,s.jsx)("code",{children:"string"})]}),"\n",(0,s.jsx)(n.p,{children:"Get the name of a file or a directory, removing any preceding path."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"string"})," - Returns the base name of a file or the name of a\ndirectory"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"fullPath"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(n.td,{children:"full path to a file or directory"})]})})]}),"\n",(0,s.jsx)("a",{name:"getNativeBracketsDirectoryPath"}),"\n",(0,s.jsxs)(n.h2,{id:"getnativebracketsdirectorypath--string",children:["getNativeBracketsDirectoryPath() \u21d2 ",(0,s.jsx)("code",{children:"string"})]}),"\n",(0,s.jsx)(n.p,{children:"Returns a native absolute path to the 'brackets' source directory.\nNote that this only works when run in brackets/src/index.html, so it does\nnot work for unit tests (which is run from brackets/test/SpecRunner.html)"}),"\n",(0,s.jsx)(n.p,{children:'WARNING: unlike most paths in Brackets, this path EXCLUDES the trailing "/".'}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsx)("a",{name:"getNativeModuleDirectoryPath"}),"\n",(0,s.jsxs)(n.h2,{id:"getnativemoduledirectorypath--string",children:["getNativeModuleDirectoryPath() \u21d2 ",(0,s.jsx)("code",{children:"string"})]}),"\n",(0,s.jsx)(n.p,{children:"Given the module object passed to JS module define function,\nconvert the path to a native absolute path.\nReturns a native absolute path to the module folder."}),"\n",(0,s.jsx)(n.p,{children:'WARNING: unlike most paths in Brackets, this path EXCLUDES the trailing "/".'}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsx)("a",{name:"getFileExtension"}),"\n",(0,s.jsxs)(n.h2,{id:"getfileextensionfullpath--string",children:["getFileExtension(fullPath) \u21d2 ",(0,s.jsx)("code",{children:"string"})]}),"\n",(0,s.jsx)(n.p,{children:'Get the file extension (excluding ".") given a path OR a bare filename.\nReturns "" for names with no extension. If the name starts with ".", the\nfull remaining text is considered the extension.'}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"string"})," - Returns the extension of a filename or empty string if\nthe argument is a directory or a filename with no extension"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"fullPath"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(n.td,{children:"full path to a file or directory"})]})})]}),"\n",(0,s.jsx)("a",{name:"getRelativeFilename"}),"\n",(0,s.jsxs)(n.h2,{id:"getrelativefilenamebasepath-filename--string",children:["getRelativeFilename(basePath, filename) \u21d2 ",(0,s.jsx)("code",{children:"string"})]}),"\n",(0,s.jsx)(n.p,{children:"Computes filename as relative to the basePath. For example:\nbasePath: /foo/bar/, filename: /foo/bar/baz.txt\nreturns: baz.txt"}),"\n",(0,s.jsx)(n.p,{children:"The net effect is that the common prefix is stripped away. If basePath is not\na prefix of filename, then undefined is returned."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"string"})," - relative path"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"basePath"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(n.td,{children:"Path against which we're computing the relative path"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"filename"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(n.td,{children:"Full path to the file for which we are computing a relative path"})]})]})]}),"\n",(0,s.jsx)("a",{name:"isStaticHtmlFileExt"}),"\n",(0,s.jsxs)(n.h2,{id:"isstatichtmlfileextfilepath--boolean",children:["isStaticHtmlFileExt(filePath) \u21d2 ",(0,s.jsx)("code",{children:"boolean"})]}),"\n",(0,s.jsx)(n.p,{children:"Determine if file extension is a static html file extension."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"boolean"})," - Returns true if fileExt is in the list"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"filePath"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(n.td,{children:"could be a path, a file name or just a file extension"})]})})]}),"\n",(0,s.jsx)("a",{name:"getDirectoryPath"}),"\n",(0,s.jsxs)(n.h2,{id:"getdirectorypathfullpath--string",children:["getDirectoryPath(fullPath) \u21d2 ",(0,s.jsx)("code",{children:"string"})]}),"\n",(0,s.jsx)(n.p,{children:"Get the parent directory of a file. If a directory is passed, the SAME directory is returned."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"string"}),' - Returns the path to the parent directory of a file or the path of a directory,\nincluding trailing "/"']}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"fullPath"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(n.td,{children:"full path to a file or directory"})]})})]}),"\n",(0,s.jsx)("a",{name:"getParentPath"}),"\n",(0,s.jsxs)(n.h2,{id:"getparentpathfullpath--string",children:["getParentPath(fullPath) \u21d2 ",(0,s.jsx)("code",{children:"string"})]}),"\n",(0,s.jsx)(n.p,{children:"Get the parent folder of the given file/folder path. Differs from getDirectoryPath() when 'fullPath'\nis a directory itself: returns its parent instead of the original path. (Note: if you already have a\nFileSystemEntry, it's faster to use entry.parentPath instead)."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"string"}),' - Path of containing folder (including trailing "/"); or "" if path was the root']}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"fullPath"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(n.td,{children:"full path to a file or directory"})]})})]}),"\n",(0,s.jsx)("a",{name:"getFilenameWithoutExtension"}),"\n",(0,s.jsxs)(n.h2,{id:"getfilenamewithoutextensionfilename--string",children:["getFilenameWithoutExtension(filename) \u21d2 ",(0,s.jsx)("code",{children:"string"})]}),"\n",(0,s.jsx)(n.p,{children:'Get the file name without the extension. Returns "" if name starts with "."'}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"string"})," - Returns the file name without the extension"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"filename"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(n.td,{children:"File name of a file or directory, without preceding path"})]})})]}),"\n",(0,s.jsx)("a",{name:"compareFilenames"}),"\n",(0,s.jsxs)(n.h2,{id:"comparefilenamesfilename1-filename2-extfirst--number",children:["compareFilenames(filename1, filename2, extFirst) \u21d2 ",(0,s.jsx)("code",{children:"number"})]}),"\n",(0,s.jsx)(n.p,{children:"Compares 2 filenames in lowercases. In Windows it compares the names without the\nextension first and then the extensions to fix issue #4409"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"number"})," - The result of the compare function"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"filename1"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(n.td,{})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"filename2"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(n.td,{})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"extFirst"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"boolean"})}),(0,s.jsx)(n.td,{children:"If true it compares the extensions first and then the file names."})]})]})]}),"\n",(0,s.jsx)("a",{name:"comparePaths"}),"\n",(0,s.jsxs)(n.h2,{id:"comparepathspath1-path2--number",children:["comparePaths(path1, path2) \u21d2 ",(0,s.jsx)("code",{children:"number"})]}),"\n",(0,s.jsxs)(n.p,{children:["Compares two paths segment-by-segment, used for sorting. When two files share a path prefix,\nthe less deeply nested one is sorted earlier in the list. Sorts files within the same parent\nfolder based on ",(0,s.jsx)(n.code,{children:"compareFilenames()"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"number"})," - -1, 0, or 1 depending on whether path1 is less than, equal to, or greater than\npath2 according to this ordering."]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"path1"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"path2"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})})]})]})]}),"\n",(0,s.jsx)("a",{name:"encodeFilePath"}),"\n",(0,s.jsxs)(n.h2,{id:"encodefilepathpath--string",children:["encodeFilePath(path) \u21d2 ",(0,s.jsx)("code",{children:"string"})]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"string"})," - URI-encoded version suitable for appending to 'file:///`. It's not safe to use encodeURI()\ndirectly since it doesn't escape chars like \"#\"."]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"path"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(n.td,{children:"Native path in the format used by FileSystemEntry.fullPath"})]})})]}),"\n",(0,s.jsx)("a",{name:"shouldOpenInExternalApplication"}),"\n",(0,s.jsxs)(n.h2,{id:"shouldopeninexternalapplicationext--string",children:["shouldOpenInExternalApplication(ext) \u21d2 ",(0,s.jsx)("code",{children:"string"})]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"string"})," - returns true If file to be opened in External Application."]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"ext"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(n.td,{children:"extension string a file"})]})})]}),"\n",(0,s.jsx)("a",{name:"addExtensionToExternalAppList"}),"\n",(0,s.jsx)(n.h2,{id:"addextensiontoexternalapplistext",children:"addExtensionToExternalAppList(ext)"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"ext"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(n.td,{children:"File Extensions to be added in External App List"})]})})]})]})}function o(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(c,{...e})}):c(e)}},28453:(e,n,i)=>{i.d(n,{R:()=>l,x:()=>d});var t=i(96540);const s={},r=t.createContext(s);function l(e){const n=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),t.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/b0600349.4403ca3f.js b/assets/js/b0600349.4403ca3f.js new file mode 100644 index 00000000..ae2ebff2 --- /dev/null +++ b/assets/js/b0600349.4403ca3f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4221],{37867:(A,e,n)=>{n.r(e),n.d(e,{assets:()=>a,contentTitle:()=>t,default:()=>c,frontMatter:()=>i,metadata:()=>o,toc:()=>d});const o=JSON.parse('{"id":"How-To/Dialogs","title":"Show Dialogs","description":"This document outlines the basic features of working with Dialogs, including:","source":"@site/api/08-How-To/Dialogs.md","sourceDirName":"08-How-To","slug":"/How-To/Dialogs","permalink":"/api/How-To/Dialogs","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{"title":"Show Dialogs"},"sidebar":"tutorialSidebar","previous":{"title":"Available Standard Libraries","permalink":"/api/available-standard-libs"},"next":{"title":"Add Menus, Menu items and Keyboard Shortcuts","permalink":"/api/How-To/Menus"}}');var s=n(74848),l=n(28453);const i={title:"Show Dialogs"},t=void 0,a={},d=[{value:"Adding a Dialog Box and Buttons",id:"adding-a-dialog-box-and-buttons",level:2},{value:"Creating Custom Dialog Boxes",id:"creating-custom-dialog-boxes",level:2},{value:"Handle Button Clicks",id:"handle-button-clicks",level:2}];function r(A){const e={a:"a",code:"code",h2:"h2",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,l.R)(),...A.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(e.p,{children:"This document outlines the basic features of working with Dialogs, including:"}),"\n",(0,s.jsxs)(e.ul,{children:["\n",(0,s.jsx)(e.li,{children:(0,s.jsx)(e.a,{href:"#adding-a-dialog-box-and-buttons",children:"How to add a Dialog Box with buttons"})}),"\n",(0,s.jsx)(e.li,{children:(0,s.jsx)(e.a,{href:"#creating-custom-dialog-boxes",children:"How to create custom Dialog Box"})}),"\n",(0,s.jsx)(e.li,{children:(0,s.jsx)(e.a,{href:"#handle-button-clicks",children:"How to handle the button clicks"})}),"\n"]}),"\n",(0,s.jsx)(e.h2,{id:"adding-a-dialog-box-and-buttons",children:"Adding a Dialog Box and Buttons"}),"\n",(0,s.jsx)(e.p,{children:"To add a dialog box, follow these steps:"}),"\n",(0,s.jsxs)(e.ol,{children:["\n",(0,s.jsxs)(e.li,{children:[(0,s.jsx)(e.strong,{children:"Import the required modules."}),"\nImport the ",(0,s.jsx)(e.code,{children:"Dialogs"})," and ",(0,s.jsx)(e.code,{children:"DefaultDialogs"})," modules along with other necessary modules:"]}),"\n"]}),"\n",(0,s.jsx)(e.pre,{children:(0,s.jsx)(e.code,{className:"language-jsx",children:'const DefaultDialogs = brackets.getModule("widgets/DefaultDialogs"),\n Dialogs = brackets.getModule("widgets/Dialogs");\n \n // other modules you may require\nconst AppInit = brackets.getModule("utils/AppInit"),\n CommandManager = brackets.getModule("command/CommandManager"),\n Menus = brackets.getModule("command/Menus");\n\n'})}),"\n",(0,s.jsxs)(e.ol,{start:"2",children:["\n",(0,s.jsxs)(e.li,{children:["\n",(0,s.jsx)(e.p,{children:(0,s.jsx)(e.strong,{children:"Create a function to show the dialog"})}),"\n",(0,s.jsxs)(e.p,{children:["To create a dialog you can use the specialized dialog APIs such as ",(0,s.jsx)(e.code,{children:"Dialogs.showConfirmDialog"}),", ",(0,s.jsx)(e.code,{children:"Dialogs.showInfoDialog"})," and ",(0,s.jsx)(e.code,{children:"Dialogs.showErrorDialog"})," provided by the ",(0,s.jsx)(e.code,{children:"Dialogs"})," module:"]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(e.pre,{children:(0,s.jsx)(e.code,{className:"language-jsx",children:'function handleHelloWorld() {\n Dialogs.showInfoDialog(\n "hello", // Title\n "world" // Message\n );\n}\n'})}),"\n",(0,s.jsxs)(e.p,{children:["The ",(0,s.jsx)(e.code,{children:"Dialogs.showInfoDialog()"})," method is the preferred way to display information messages."]}),"\n",(0,s.jsxs)(e.p,{children:["Similarly, you can use ",(0,s.jsx)(e.code,{children:"Dialogs.showErrorDialog()"})," for error messages:"]}),"\n",(0,s.jsx)(e.pre,{children:(0,s.jsx)(e.code,{className:"language-jsx",children:'function handleError() {\n Dialogs.showErrorDialog(\n\t\t\t\t"Error",\n\t\t\t\t"Something went wrong!"\n\t);\n}\n'})}),"\n",(0,s.jsxs)(e.p,{children:["You can also close the dialog programmatically using the ",(0,s.jsx)(e.code,{children:"Dialog.close()"})," method."]}),"\n",(0,s.jsx)(e.pre,{children:(0,s.jsx)(e.code,{className:"language-jsx",children:'function handleHelloWorld() {\n const dialog = Dialogs.showInfoDialog(\n "hello",\n "world"\n );\n\n // Close the dialog after 2 seconds\n setTimeout(() => {\n dialog.close();\n }, 2000);\n}\n'})}),"\n",(0,s.jsx)(e.p,{children:"This will automatically close the dialog after 2 seconds."}),"\n",(0,s.jsx)(e.p,{children:"These specialized dialog methods handle the common use cases."}),"\n",(0,s.jsxs)(e.p,{children:["Click on the functions to read more about them : ",(0,s.jsx)(e.a,{href:"https://docs.phcode.dev/api/API-Reference/widgets/Dialogs#showConfirmDialog",children:"showConfirmDialog()"}),", ",(0,s.jsx)(e.a,{href:"https://docs.phcode.dev/api/API-Reference/widgets/Dialogs#showInfoDialog",children:"showInfoDialog"}),", ",(0,s.jsx)(e.a,{href:"https://docs.phcode.dev/api/API-Reference/widgets/Dialogs#showErrorDialog",children:"showErrorDialog"}),"."]}),"\n",(0,s.jsxs)(e.p,{children:["If you require custom buttons or advanced functionality, you can use the generic ",(0,s.jsx)(e.code,{children:"showModalDialog()"})," method."]}),"\n",(0,s.jsxs)(e.p,{children:[(0,s.jsx)(e.a,{href:"#creating-custom-dialog-boxes",children:"Click here"})," to read more about creating custom dialog boxes."]}),"\n",(0,s.jsxs)(e.ol,{start:"3",children:["\n",(0,s.jsxs)(e.li,{children:[(0,s.jsx)(e.strong,{children:"Register the command"}),"\nRegister a command that will trigger the dialog:"]}),"\n"]}),"\n",(0,s.jsx)(e.pre,{children:(0,s.jsx)(e.code,{className:"language-jsx",children:'const MY_COMMAND_ID = "helloworld_sayhello";\nCommandManager.register("Hello World", MY_COMMAND_ID, handleHelloWorld);\n'})}),"\n",(0,s.jsxs)(e.ol,{start:"4",children:["\n",(0,s.jsxs)(e.li,{children:[(0,s.jsx)(e.strong,{children:"Add the menu item"}),"\nAdd a menu item that will execute the command:"]}),"\n"]}),"\n",(0,s.jsx)(e.pre,{children:(0,s.jsx)(e.code,{className:"language-jsx",children:"const menu = Menus.getMenu(Menus.AppMenuBar.FILE_MENU);\nmenu.addMenuItem(MY_COMMAND_ID);\n"})}),"\n",(0,s.jsx)(e.p,{children:"Full Code Example:"}),"\n",(0,s.jsx)(e.pre,{children:(0,s.jsx)(e.code,{className:"language-jsx",children:'define(function (require, exports, module) {\n "use strict";\n\n // Brackets modules\n const AppInit = brackets.getModule("utils/AppInit"),\n DefaultDialogs = brackets.getModule("widgets/DefaultDialogs"),\n Dialogs = brackets.getModule("widgets/Dialogs"),\n CommandManager = brackets.getModule("command/CommandManager"),\n Menus = brackets.getModule("command/Menus");\n\n // Function to run when the menu item is clicked\n function handleHelloWorld() {\n Dialogs.showInfoDialog(\n "hello",\n "world"\n );\n }\n\n // Register command\n const MY_COMMAND_ID = "helloworld_sayhello";\n CommandManager.register("Hello World", MY_COMMAND_ID, handleHelloWorld);\n\n // Add menu item\n const menu = Menus.getMenu(Menus.AppMenuBar.FILE_MENU);\n menu.addMenuItem(MY_COMMAND_ID);\n\n // Initialize extension\n AppInit.appReady(function () {\n console.log("hello world");\n });\n});\n'})}),"\n",(0,s.jsx)(e.p,{children:"Expected Output:"}),"\n",(0,s.jsx)(e.p,{children:"When the menu item is clicked, a dialog box appears:"}),"\n",(0,s.jsx)(e.p,{children:(0,s.jsx)(e.img,{alt:"Dialog box",src:n(58924).A+"",width:"865",height:"250"})}),"\n",(0,s.jsx)(e.h2,{id:"creating-custom-dialog-boxes",children:"Creating Custom Dialog Boxes"}),"\n",(0,s.jsxs)(e.p,{children:["While the specialized dialog methods like ",(0,s.jsx)(e.code,{children:"showInfoDialog()"}),", ",(0,s.jsx)(e.code,{children:"showConfirmDialog()"})," and ",(0,s.jsx)(e.code,{children:"showErrorDialog()"})," cover the common use cases, you can also create more complex custom dialog boxes using ",(0,s.jsx)(e.code,{children:"showModalDialog()"}),". Here's how:"]}),"\n",(0,s.jsx)(e.pre,{children:(0,s.jsx)(e.code,{className:"language-jsx",children:'const dialog = Dialogs.showModalDialog(\n DefaultDialogs.DIALOG_ID_INFO,\n "Custom Dialog",\n // Custom HTML content with CSS styling\n \'<div class="custom-dialog">\' +\n \'<p style="text-align: center">This is a custom message</p>\' +\n \'<input style="width: 97%" type="text" id="custom-input" placeholder="Enter some text...">\' +\n "</div>",\n [\n // For buttons\n {\n className: Dialogs.DIALOG_BTN_CLASS_PRIMARY,\n id: Dialogs.DIALOG_BTN_OK,\n text: "OK",\n },\n {\n className: Dialogs.DIALOG_BTN_CLASS_NORMAL,\n id: Dialogs.DIALOG_BTN_CANCEL,\n text: "Cancel",\n },\n ]\n);\n'})}),"\n",(0,s.jsxs)(e.p,{children:["The ",(0,s.jsx)(e.code,{children:"showModalDialog()"})," method provides more flexibility, allowing you to create custom dialog boxes with HTML content and buttons. However, it's recommended to use the specialized dialog APIs like ",(0,s.jsx)(e.code,{children:"showInfoDialog()"}),", ",(0,s.jsx)(e.code,{children:"showConfirmDialog()"})," and ",(0,s.jsx)(e.code,{children:"showErrorDialog()"})," whenever possible, as they provide a simpler and more standardized interface for the most common dialog types."]}),"\n",(0,s.jsx)(e.p,{children:"Visual Reference"}),"\n",(0,s.jsx)(e.p,{children:(0,s.jsx)(e.img,{alt:"Custom Dialog Box",src:n(87808).A+"",width:"862",height:"326"})}),"\n",(0,s.jsxs)(e.p,{children:[(0,s.jsx)(e.a,{href:"https://docs.phcode.dev/api/API-Reference/widgets/Dialogs#showModalDialog",children:"Click Here"})," to read more about ",(0,s.jsx)(e.code,{children:"showModalDialog()"}),"."]}),"\n",(0,s.jsx)(e.p,{children:"\u2192 Each button object can have:"}),"\n",(0,s.jsxs)(e.ul,{children:["\n",(0,s.jsxs)(e.li,{children:[(0,s.jsx)(e.code,{children:"className"}),": Button styling class"]}),"\n",(0,s.jsxs)(e.li,{children:[(0,s.jsx)(e.code,{children:"id"}),": Button identifier"]}),"\n",(0,s.jsxs)(e.li,{children:[(0,s.jsx)(e.code,{children:"text"}),": Button label text"]}),"\n"]}),"\n",(0,s.jsx)(e.p,{children:"\u2192 Available Button Classes:"}),"\n",(0,s.jsxs)(e.ul,{children:["\n",(0,s.jsxs)(e.li,{children:[(0,s.jsx)(e.code,{children:"Dialogs.DIALOG_BTN_CLASS_PRIMARY"}),": Primary action button"]}),"\n",(0,s.jsxs)(e.li,{children:[(0,s.jsx)(e.code,{children:"Dialogs.DIALOG_BTN_CLASS_NORMAL"}),": Normal button"]}),"\n",(0,s.jsxs)(e.li,{children:[(0,s.jsx)(e.code,{children:"Dialogs.DIALOG_BTN_CLASS_LEFT"}),": Left-aligned button"]}),"\n"]}),"\n",(0,s.jsx)(e.p,{children:"\u2192 Common Button IDs:"}),"\n",(0,s.jsxs)(e.ul,{children:["\n",(0,s.jsx)(e.li,{children:(0,s.jsx)(e.code,{children:"Dialogs.DIALOG_BTN_OK"})}),"\n",(0,s.jsx)(e.li,{children:(0,s.jsx)(e.code,{children:"Dialogs.DIALOG_BTN_CANCEL"})}),"\n",(0,s.jsx)(e.li,{children:(0,s.jsx)(e.code,{children:"Dialogs.DIALOG_BTN_SAVE_AS"})}),"\n",(0,s.jsx)(e.li,{children:(0,s.jsx)(e.code,{children:"Dialogs.DIALOG_BTN_DONTSAVE"})}),"\n",(0,s.jsx)(e.li,{children:(0,s.jsx)(e.code,{children:"Dialogs.DIALOG_BTN_DOWNLOAD"})}),"\n"]}),"\n",(0,s.jsx)(e.h2,{id:"handle-button-clicks",children:"Handle Button Clicks"}),"\n",(0,s.jsx)(e.p,{children:"You can handle button clicks using the dialog's promise:"}),"\n",(0,s.jsx)(e.pre,{children:(0,s.jsx)(e.code,{className:"language-jsx",children:'dialog.done(function (buttonId) {\n if (buttonId === Dialogs.DIALOG_BTN_OK) {\n const inputValue = $input.val();\n alert("Input value: " + inputValue);\n }\n});\n'})}),"\n",(0,s.jsx)(e.p,{children:"Complete Code Block with Custom Dialog Box and handling the button clicks."}),"\n",(0,s.jsx)(e.pre,{children:(0,s.jsx)(e.code,{className:"language-jsx",children:'define(function (require, exports, module) {\n "use strict";\n \n const AppInit = brackets.getModule("utils/AppInit"),\n DefaultDialogs = brackets.getModule("widgets/DefaultDialogs"),\n Dialogs = brackets.getModule("widgets/Dialogs"),\n CommandManager = brackets.getModule("command/CommandManager"),\n Menus = brackets.getModule("command/Menus");\n\n function showCustomDialog() {\n const dialog = Dialogs.showModalDialog(\n DefaultDialogs.DIALOG_ID_INFO,\n "Custom Dialog",\n // Custom HTML content\n \'<div class="custom-dialog">\' +\n \'<p style="text-align: center">This is a custom message</p>\' +\n \'<input style="width: 97%" type="text" id="custom-input" placeholder="Enter some text...">\' +\n "</div>",\n [\n {\n className: Dialogs.DIALOG_BTN_CLASS_PRIMARY,\n id: Dialogs.DIALOG_BTN_OK,\n text: "OK"\n },\n {\n className: Dialogs.DIALOG_BTN_CLASS_NORMAL,\n id: Dialogs.DIALOG_BTN_CANCEL,\n text: "Cancel"\n }\n ]\n );\n\n // Get dialog element and ensure input is accessible\n const $dlg = dialog.getElement();\n const $input = $dlg.find("#custom-input");\n\n if (!$input.length) {\n console.error("Failed to find input element in dialog");\n return;\n }\n\n // Handle dialog button clicks\n dialog.done(function (buttonId) {\n if (buttonId === Dialogs.DIALOG_BTN_OK) {\n const inputValue = $input.val();\n alert("Input value: " + inputValue);\n }\n });\n }\n\n // Register command\n const MY_COMMAND_ID = "test_customdialog";\n CommandManager.register("Show Custom Dialog", MY_COMMAND_ID, showCustomDialog);\n\n // Add menu item\n const menu = Menus.getMenu(Menus.AppMenuBar.FILE_MENU);\n menu.addMenuItem(MY_COMMAND_ID);\n\n // Initialize extension\n AppInit.appReady(function () {\n console.log("Custom dialog extension loaded");\n });\n});\n'})}),"\n",(0,s.jsx)(e.p,{children:"Visual Reference"}),"\n",(0,s.jsx)(e.p,{children:(0,s.jsx)(e.img,{alt:"Custom-dialog-box-gif",src:n(65942).A+"",width:"600",height:"338"})})]})}function c(A={}){const{wrapper:e}={...(0,l.R)(),...A.components};return e?(0,s.jsx)(e,{...A,children:(0,s.jsx)(r,{...A})}):r(A)}},65942:(A,e,n)=>{n.d(e,{A:()=>o});const o=n.p+"assets/images/custom-dialog-box-gif-11573dfb6efabd5555e4bb9f6b5c73ee.gif"},87808:(A,e,n)=>{n.d(e,{A:()=>o});const o=n.p+"assets/images/custom-dialog-fb30b696c3fa6e2736f84a24e76e1e6f.png"},58924:(A,e,n)=>{n.d(e,{A:()=>o});const o="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA2EAAAD6CAYAAAAoRU8iAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAABV/SURBVHhe7d17kFXVnejxXz9ougF5Kg8RVCApsVrHUjHDEI3xTiRPBsfchBkdy2u8GYyVh6mYZKwbH3lOlTdlRssk9zpDUiQmOpOMuQaNGjOJJj4ilEboEUWRBETlIYi8m35c1upzSIONmISzBvDzqeo6+6y999kc/vvWXnudusGDB3ePGjUqOjs7AwAAgP2noaEhVq1aFdu2bcvbEXVRf8QRRwgwAACAGkitlZqrq6srurvTSHfUd/dsAQAAUAOpuYYNG7YzyDpyiNVXxgEAAKiRQYMG7YywrrwtwgAAAGqsvr4+urtFGAAAQDHVR8FEGAAAQI31XotDhAEAABQkwgAAAAoSYQAAAAWJMAAAgIJEGAAAQEEiDAAAoCARBgAAUJAIAwAAKEiEAQAAFCTCAAAAChJhAAAABYkwAACAgkQYAABAQTWLsKlTp8aDDz4YS5cuza/pfWn7+jccCP9GAADgjcWdMAAAgIJEGAAAQEEiDAAAoCARBgAAUJAIAwAAKKhIhG3bti1efPHFyjsAAIA3riIRtmPHjli2bFmcccYZMXfu3Fi0aFFeFv6ZZ56JBQsWxFVXXRUDBw6sHN230aNHx5e//OV46KGHYsmSJfn8xYsXx1133RUXX3xx5ajaqV7//vvv33X99Jr+PWk87QcAANiXYtMRP/nJT8b1118f06ZNiwEDBuSxurq6GDZsWJx33nlxzTXX5LG+zJw5M374wx/GBz/4wRg5cmQ0NDTk8aampnjTm94Un/70p+OrX/3qPkPuj9X7+mPHjt11/fSa/j1pPO1PxwEAALyWIhGWwuXDH/5w3r755ptj+vTp+e/WW2+N7du355g566yzYsaMGfmY3t72trfF5Zdfnu80dXZ25jtPF110UUycODEuu+yyeOKJJ6K+vj7e9a53xezZsytn7T97Xn/+/Pn5uun6l1xySX6fxtP+dFw6HgAAYG+KRFhLS0usWbMmPvWpT8WVV16ZpyGmvyuuuCIefPDBfMzgwYPjLW95S96uSne2Lr300hw4aUrjnDlz4vzzz4/77rsv77/99ttzEKXP6t+/f7zzne+MY489Nu/bH3pfv6urK+bNmxezZs3K103uueeeXe+rIZaOr9UdOQAA4OBXJMLWrVsXX/rSl+Lee++tjPxeupOVAitNTRw/fnxltMc555wTkydPztsLFy6MG264IW/3lgLs7rvvzp9x5JFHxjve8Y7Knj9d7+uvXLkyvvOd7+TtPX3zm9+MFStW5O10fDoPAACgL8UW5tiwYUPl3e7Wrl2b9/fltNNOy8+Ppf1pGuLmzZsre3b31FNP5X3Nzc379U5Y9fpJisDHHnssb+8phWBabKS7uzsfn84DAADoS7GFOfZm48aNOV76cswxx+TXFFgptPZm/fr1+dmyZMyYMfl1f6hev729PZ5++um8vTdptcRqTFbPAwAA2NN/eYS9lvScVzJ06NA8FTGFTl9/3/3ud2PUqFH52OrKhftD9foprp577rm8vTdpfzXCqucBAADs6YCOsD9GWiADAADgQHVAR1h1imGaslhdFn5ffxdeeGE+Z3+oXr9fv35x1FFH5e29SfvTcUn1PAAAgD0d0BH229/+Nr+mBTdSYJVWvX6Kq/RbZ68l7a9GWPU8AACAPR3QEfbII4/Eli1bctxMnTq1+O9vVa+fls+fMmVKTJo0qbJnd2k87U/HpePTeQAAAH05oCPstttui8WLF+ftk046Ka655pq83Zf0Q8n7O9J6X3/cuHExe/bsvL2nNJ72J2mhkHQeAABAXw7oCEtL0994443x4osv5lUPZ86cGfPmzYsLLrggR1cyY8aMmDt3bvz0pz+Nq6++Oo9VdXR07Fr+Pt1NGzJkSN6u2tf+Pa+frnXLLbfk1+Tss8/e9T7tT8ddd911e/09MwAAgAM6wpL77rsvrr322lixYkWe7jd58uS46qqr4oEHHsh3nVL0TJs2LVpaWvK+4447rnJmxPz58/N5yfDhw+NrX/taXuCjal/7k+r1qyGWph2ma6Zrf+Mb38jvqwGWjkvHAwAA7M0BH2HJj370o5g1a1bcdNNNOZrSjycn6S5WegZr0aJF8YUvfCHe+973xpNPPpn3VaVQSsGUjm1sbMyx1du+9ifp+ueee27ceuutsXLlyl3L4KfX1atX5/G0Px0HAADwWuomTJjQMx8PAACAmnn22Wejubnl4LgTBgAAcKgQYQAAAAWJMAAAgIJEGAAAQEEiDAAAoCARBgAAUJAIAwAAKEiEAQAAFCTCAAAAChJhAAAABYkwAACAgkQYAABAQSIMAACgIBEGAABQkAgDAAAoSIQBAAAUJMIAAAAKEmEAAAAFiTAAAICCRBgAAEBBIgwAAKAgEQYAAFCQCAMAACio7tRTT+2ubAMAAFAjCxYsiObmlqhrbW0VYQAAADXW1taWI8x0RAAAgIJEGAAAQEEiDAAAoCARBgAAUJAIAwAAKEiEAQAAFCTCAAAAChJhAAAABYkwAACAgkQYAABAQSIMAACgIBEGAABQkAgDAAAoSIQBAAAUJMIAAAAKEmEAAAAFiTAAAICCRBgAAEBBIgwAAKAgEQYAAFCQCAMAAChIhAEAABQkwgAAAAoSYQAAAAWJMAAAgIJEGAAAQEEiDAAAoCARBgAAUNAhG2GzZs2Kb3/72/l1X84+++y46aab4uMf/3hlBAAAoDbcCQMAAChIhAEAABQkwgAAAApqGDly5NWV7f1iwoQJceWVV8bb3/72+M1vfhNbtmzJ4+973/viM5/5TJxyyilx//33R3d3dx7/wAc+EJdddll+v2TJkjw2fvz4mD17dlx44YVx7rnnxvTp0+Poo4+OZcuW7fq8JD3vdemll8aqVavi/PPPjw996ENx5plnxpNPPhnjxo2LSZMmxTPPPBNtbW2VM3o+O52TPnvmzJlxxhlnRHt7exx11FGxevXq+PWvf105EgAAYP9JvdHY2G//3wl79tlnY+3atTFkyJAYO3ZsZTTiyCOPjLq6uhg8eHAcc8wxldHI2ymCfve73+X3KbY+9rGP5ePnzp0bF110Ufz4xz+OE044IcdTOr+3xsbGHGNr1qyJT3ziE/G5z31u12ftqfrZ6d/1/e9/Pz7ykY/EvHnzorW1Nfr161c5CgAAoHZqMh0xhVj//v1j4sSJ+f2gQYPyHagVK1ZEU1NTvkOVHH744TF8+PBYv359Pid5//vfnwPujjvuiF/+8pfR1dUVd955Z/zqV7/KEXXOOefk46pSPC1dujS+9a1vxSuvvBKbNm2q7Hm19NlDhw6Nu+66K+69997Ytm1b/PznP4+f/OQnsWPHjspRAAAAtVOTCEtRlO5upWhK0hTFFFZpamAaP/bYY3eNpyhavnx5jqf0Pk0LfOmll+LRRx/Nx1TNnz8/Nm/eHG9+85tz1PWWIm5fqp/98ssvv+qzAQAASqnZnbAUO6NGjcp3u1KMpWe+Hn/88Tye7oqlkEpR1NDQEM8//3w+b8CAAdHc3Bzbt2/PUxp7SwGWxtP+FG5/qOpnp89ZuXJlZRQAAKCsmkRYCqi0WEb1ubB0FypNFUxxlp7XShGVQizFWZoS+NRTT1XOBAAAOLTVJMKSFFvp+a/jjjsuxowZk1cCSVMO01TF+vr6mDx5cr5TlqYSpmmKSVr5MEVZep4s3UHrbeDAgXk8PbuVjvlDpWmQHR0dfX42AABAKTWLsBRWafpgWpwjBVR14Y00FTBFVHq267DDDsvv0+IbSTrmueeeixEjRsTJJ5+cx6qmTJmSP2fx4sWvmqr4eqR/z7p16/Jnp9UQe0tTFVMYAgAA1FrNyiMFVbrLlRbhSM+DpTtg1fEUUWmKYnoeLP32V28/+MEPYsOGDfGe97wnTj/99BxH6fe83vrWt+a7a7fddlvlyNeWwi5dN12j+j79PlmSfrMsRV16Riz9DtlZZ52Vl88HAACotZpFWJp6mFY9TEvIb9y4MW9XpRBLv++1devWXVMRq1JoXX/99XmxjgsuuCDmzJmTf6x50aJFceONN+Zny16PtAJiWmUx/Wj0u9/97jz2s5/9LC9ln1xyySXx9a9/PU+XvOWWW/K/BQAAoNbqWltbuyvbAAAA1EhbW1s0N7fU7k4YAAAArybCAAAAChJhAAAABYkwAACAgkQYAABAQSIMAACgIBEGAABQkAgDAAAoSIQBAAAUJMIAAAAKEmEAAAAFiTAAAICCRBgAAEBBIgwAAKAgEQYAAFCQCAMAAChIhAEAABQkwgAAAAoSYQAAAAWJMAAAgIJEGAAAQEEiDAAAoCARBgAAUJAIAwAAKEiEAQAAFCTCAAAAChJhAAAABYkwAACAgkQYAABAQSIMAACgIBEGAABQkAgDAAAoSIQBAAAUJMIAAAAKEmEAAAAFiTAAAICCRBgAAEBBIgwAAKAgEQYAAFCQCAMAAChIhAEAABQkwgAAAAoSYQAAAAWJMAAAgIJEGAAAQEEiDAAAoCARBgAAUJAIAwAAKEiEAQAAFCTCAAAAChJhAAAABYkwAACAgkQYAABAQSIMAACgIBEGAABQkAgDAAAoSIQBAAAUVHfqqad2V7YBAACokQULFkRzc0vUtba2ijAAAIAaa2tryxFmOiIAAEBBIgwAAKAgEQYAAFCQCAMAAChIhAEAABQkwgAAAAoSYQAAAAWJMAAAgIJEGAAAQEEiDAAAoCARBgAAUJAIAwAAKEiEAQAAFCTCAAAAChJhAAAABYkwAACAgupaW1u7K9sAAACvMmzsxBg18cRoGnBYZeTQ0r5lY6xaujDWr1xaGamNtra2aG5uEWEAAEDfBg4fFdPO+2xMmPKXlZFD27Pz740Hbv7H2LxuVWVk/xJhAADAXqUAm/EPc6Jp6JFx96PPxBMr1kR7R2dl76GlqbEhjh93REw/eVK0v/x83P6Vi2oSYiIMAADYq7M/el2MOfHM+MadC2LdlvborOsXDfV1lb2Hls6u7mjo3hHDBzTFJe8+NV5Y+Iu454bLKnv3n2qENYwcOfLqyhgAAEB+Buz0C66IO+YviaWrX4nu+qbY0RWRboR1pNdD7C/dlWpoaIxt7e2xddv2mPqW02LpI/fEto3re/5D9pPVq1dHY2M/qyMCAAC7S4twJGkKYkc0xsbtnbFtZ4Vt31ksh+Jf+m7pO6bvmr5zUv0/qAURBgAA7Ka6CmJ6Bmx7R0T3G+ABpvQd03etPvdWy5UgRRgAALBXHV1vnCUkSn1XEQYAAFCQCAMAAChIhAEAABQkwgAAAAoSYQAAAAWJMAAAgIJEGAAAQEEiDAAAoCARBgAAFHPU0Kb4v38zKZ7/4pTo/Kdp0XX9tNj0v6fGrz/1Z/F3U0ZWjvq9m3Yem47ZcO2f77b/+NED4jefPSnvW/75KfFXJwyv7DnwiTAAAKCIM980JO6+tDUunjoqRg9uirq6nvEBTfUxZfyg+OasifGVGUf3DL6Gw/o3xNfOPTZOGDMwtu3oin95aFX8v0XrKnsPfCIMAACouRRO/2v6uJg8qiU6u7rjP5ZsiLNuaIshlz8cV96xPNZu3hEt/erj76eNjtlvHV05q2/X7Qywt+8Muq7u7vjXx9bGNT9ZXtlzcBBhAABAzf3daSPjtKMH5e2Hf7sxzrlpcfzi6Q2xcXtnfPHuFfHFu1bE5vbOGNrSGH9zyhH5uL6kQPvrPxsR9XV18fOd53/0356t7Dl4iDAAAKDmThw7IAY2NeTpg3f+5/ocX7196+HVsWT1trx97IjmOH3i4Lzd2+jB/eKKs8flUFv0wub4xA+XvepzDgYiDAAAqLmJhzfnZ8Be2dYZbS9sqYz+XoqpFeu35+0hLQ1xzPDmvF3VsPPkj5w+Ji/skazd1LHr+IONCAMAAIrZ0dWdpx32Zc2mHZWtV0uLdxw9vH/lXcTUYw+LS88YU3l3cBFhAABAzXV29bymxTdGDOzX82YP44b1RFbXzmM7u7vzdm9pQY9/e2xtLHtpW/6c//HnI/NS9QcbEQYAANTc02u2xs6GikH9G6J1zKvDKa2eOHZIz1TD9Vs74unVW/N2VWqytBDHxd97Jm5buC52dHbHhBHNccnpr72S4oFIhAEAADX30LKNsWFnXDU11MW7jh+Wo6u3NLVwwuE9z4H95wtbYv7yTXm7alN7Z3znkTX52bFr7lwej6/cHA31dfHfTzo8zjlxROWog4MIAwAAau57C9bksEp3tE4ZNyjmzT4+/3hzWmjj8+8ZH5f/t7F5iuH6LR1x2+MvVc7qWwqx785fnZ8tO2JQv/j7ffyu2IFGhAEAAEV88t+XxcLnN+fttAT9f3y0NZZ/fkr+EedhAxpj646uuPGXL8Sch1flY17L9fe9kH/wOZk24bD42NsOnkU6RBgAAFDEEy9uiff9nyfiX3ZG1ouvtOe7YsmW9q78A85//c+L48o7lvcMvg7ffnh1XlEx/f7Y//yL0QfNIh11ra2tr152BAAAeMM68Z0XxF/87eVx9fd+ES9t73slw0PViP474uq/PTMe/N61sfCuuZXR/aOtrS2am1vcCQMAAChJhAEAABQkwgAAAAoSYQAAAAWJMAAAgIJEGAAAQEEiDAAAoCARBgAA7KZ9y8b82tTYEPV1b5yfFU7fNX3npPp/UAsiDAAA2M2qpQvz6/HjjogBDZ15+40gfdf0nZPq/0EtiDAAAGA361cujWfn3xvTT54URwzqH4MaOw7pO2Lpu6XvmL5r+s7pu6f/g1qpa21tfePcXwQAAF6XgcNHxYx/mBNNQ4+Mux99Jp5YsSbaOw7Nu2JpCmK6A5YCrP3l5+P2r1wUm9etquzdf9ra2qK5uUWEAQAAfUshNu28z8aEKX9ZGTm0pTtgD9z8jzUJsESEAQAAr8uwsRNj1MQTo2nAYZWRQ0tahCM9A1bLKYiJCAMAACioGmEW5gAAAChIhAEAABQkwgAAAAoSYQAAAAWJMAAAgIJEGAAAQEEiDAAAoCARBgAAUJAIAwAAqLHOzs6oq6vL2yIMAACgxrZu3SrCAAAASlm79qWor2/I2/WbNm3aVWQAAADsP6m1UnNt3rwpGhsrEbZ8+fJob28XYgAAAPtRaqzUWqm5Ghv7pZGe8cbGxu6urq4YP358DBo0KA8CAADwp0l3wFKA1dfX74ywxp0jlQjr3795Z4R1RkdHRwwcOCgOP3xEtLS0RENDz60yAAAAXp+0CmJahCM9A9YzBbExPwvWe+ZhXXNzc3d3d8+bdEIKsjSwaxAAAIDXJcVW+kvhVb2x1dNfu0VYS6W2Unj1bAEAAPCn2TO+qnotUZ+KrXogAAAAf4zfd1XfcbXH74Slg8QYAADAH2r3+NpbUEX8f6oCnl6jUTgnAAAAAElFTkSuQmCC"},28453:(A,e,n)=>{n.d(e,{R:()=>i,x:()=>t});var o=n(96540);const s={},l=o.createContext(s);function i(A){const e=o.useContext(l);return o.useMemo((function(){return"function"==typeof A?A(e):{...e,...A}}),[e,A])}function t(A){let e;return e=A.disableParentContext?"function"==typeof A.components?A.components(s):A.components||s:i(A.components),o.createElement(l.Provider,{value:e},A.children)}}}]); \ No newline at end of file diff --git a/assets/js/b06279cf.f7007253.js b/assets/js/b06279cf.f7007253.js new file mode 100644 index 00000000..e99628e6 --- /dev/null +++ b/assets/js/b06279cf.f7007253.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[842],{21901:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>o,frontMatter:()=>d,metadata:()=>r,toc:()=>c});const r=JSON.parse('{"id":"API-Reference/utils/PerfUtils","title":"PerfUtils","description":"Import :","source":"@site/api/API-Reference/utils/PerfUtils.md","sourceDirName":"API-Reference/utils","slug":"/API-Reference/utils/PerfUtils","permalink":"/api/API-Reference/utils/PerfUtils","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"NodeUtils","permalink":"/api/API-Reference/utils/NodeUtils"},"next":{"title":"Resizer","permalink":"/api/API-Reference/utils/Resizer"}}');var s=t(74848),i=t(28453);const d={},a=void 0,l={},c=[{value:"Import :",id:"import-",level:3},{value:"_",id:"_",level:2},{value:"createPerfMeasurement(id, name)",id:"createperfmeasurementid-name",level:2},{value:"markStart(name) \u21d2 <code>Object</code> | <code>Array.<Object></code>",id:"markstartname--object--arrayobject",level:2},{value:"addMeasurement(id)",id:"addmeasurementid",level:2},{value:"updateMeasurement(id)",id:"updatemeasurementid",level:2},{value:"finalizeMeasurement(id)",id:"finalizemeasurementid",level:2},{value:"isActive(id) \u21d2 <code>boolean</code>",id:"isactiveid--boolean",level:2},{value:"getDelimitedPerfData() \u21d2 <code>string</code>",id:"getdelimitedperfdata--string",level:2},{value:"getData(id)",id:"getdataid",level:2},{value:"getHealthReport() \u21d2 <code>Object</code>",id:"gethealthreport--object",level:2},{value:"searchData(regExp) \u21d2 <code>Array</code>",id:"searchdataregexp--array",level:2},{value:"clear()",id:"clear",level:2}];function h(e){const n={br:"br",code:"code",em:"em",h2:"h2",h3:"h3",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h3,{id:"import-",children:"Import :"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-js",children:'const PerfUtils = brackets.getModule("utils/PerfUtils")\n'})}),"\n",(0,s.jsx)("a",{name:"_"}),"\n",(0,s.jsx)(n.h2,{id:"_",children:"_"}),"\n",(0,s.jsx)(n.p,{children:"This is a collection of utility functions for gathering performance data."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,s.jsx)("a",{name:"createPerfMeasurement"}),"\n",(0,s.jsx)(n.h2,{id:"createperfmeasurementid-name",children:"createPerfMeasurement(id, name)"}),"\n",(0,s.jsx)(n.p,{children:"Create a new PerfMeasurement key. Adds itself to the module export.\nCan be accessed on the module, e.g. PerfUtils.MY_PERF_KEY."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"id"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(n.td,{children:"Unique ID for this measurement name"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"name"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"name"})}),(0,s.jsx)(n.td,{children:"A short name for this measurement"})]})]})]}),"\n",(0,s.jsx)("a",{name:"markStart"}),"\n",(0,s.jsxs)(n.h2,{id:"markstartname--object--arrayobject",children:["markStart(name) \u21d2 ",(0,s.jsx)("code",{children:"Object"})," | ",(0,s.jsx)("code",{children:"Array.<Object>"})]}),"\n",(0,s.jsx)(n.p,{children:'Start a new named timer. The name should be as descriptive as possible, since\nthis name will appear as an entry in the performance report.\nFor example: "Open file: /Users/brackets/src/ProjectManager.js"'}),"\n",(0,s.jsx)(n.p,{children:"Multiple timers can be opened simultaneously."}),"\n",(0,s.jsx)(n.p,{children:"Returns an opaque set of timer ids which can be stored and used for calling\naddMeasurement(). Since name is often creating via concatenating strings this\nreturn value allows clients to construct the name once."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"Object"})," | ",(0,s.jsx)("code",{children:"Array.<Object>"})," - Opaque timer id or array of timer ids."]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"name"}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("code",{children:"string"})," | ",(0,s.jsx)("code",{children:"Array.<string>"})]}),(0,s.jsx)(n.td,{children:"Single name or an Array of names."})]})})]}),"\n",(0,s.jsx)("a",{name:"addMeasurement"}),"\n",(0,s.jsx)(n.h2,{id:"addmeasurementid",children:"addMeasurement(id)"}),"\n",(0,s.jsx)(n.p,{children:"Stop a timer and add its measurements to the performance data."}),"\n",(0,s.jsx)(n.p,{children:"Multiple measurements can be stored for any given name. If there are\nmultiple values for a name, they are stored in an Array."}),"\n",(0,s.jsx)(n.p,{children:"If markStart() was not called for the specified timer, the\nmeasured time is relative to app startup."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"id"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"Object"})}),(0,s.jsx)(n.td,{children:"Timer id."})]})})]}),"\n",(0,s.jsx)("a",{name:"updateMeasurement"}),"\n",(0,s.jsx)(n.h2,{id:"updatemeasurementid",children:"updateMeasurement(id)"}),"\n",(0,s.jsxs)(n.p,{children:["This function is similar to addMeasurement(), but it allows timing the\n",(0,s.jsx)(n.em,{children:"last"})," event, when you don't know which event will be the last one."]}),"\n",(0,s.jsx)(n.p,{children:"Tests that are in the activeTests list, have not yet been added, so add\nmeasurements to the performance data, and move test to updatableTests list.\nA test is moved to the updatable list so that it no longer passes isActive()."}),"\n",(0,s.jsx)(n.p,{children:"Tests that are already in the updatableTests list are updated."}),"\n",(0,s.jsx)(n.p,{children:"Caller must explicitly remove test from the updatableTests list using\nfinalizeMeasurement()."}),"\n",(0,s.jsx)(n.p,{children:"If markStart() was not called for the specified timer, there is no way to\ndetermine if this is the first or subsequent call, so the measurement is\nnot updatable, and it is handled in addMeasurement()."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"id"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"Object"})}),(0,s.jsx)(n.td,{children:"Timer id."})]})})]}),"\n",(0,s.jsx)("a",{name:"finalizeMeasurement"}),"\n",(0,s.jsx)(n.h2,{id:"finalizemeasurementid",children:"finalizeMeasurement(id)"}),"\n",(0,s.jsx)(n.p,{children:"Remove timer from lists so next action starts a new measurement"}),"\n",(0,s.jsx)(n.p,{children:"updateMeasurement may not have been called, so timer may be\nin either or neither list, but should never be in both."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"id"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"Object"})}),(0,s.jsx)(n.td,{children:"Timer id."})]})})]}),"\n",(0,s.jsx)("a",{name:"isActive"}),"\n",(0,s.jsxs)(n.h2,{id:"isactiveid--boolean",children:["isActive(id) \u21d2 ",(0,s.jsx)("code",{children:"boolean"})]}),"\n",(0,s.jsx)(n.p,{children:'Returns whether a timer is active or not, where "active" means that\ntimer has been started with addMark(), but has not been added to perfdata\nwith addMeasurement().'}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"boolean"})," - Whether a timer is active or not."]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"id"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"Object"})}),(0,s.jsx)(n.td,{children:"Timer id."})]})})]}),"\n",(0,s.jsx)("a",{name:"getDelimitedPerfData"}),"\n",(0,s.jsxs)(n.h2,{id:"getdelimitedperfdata--string",children:["getDelimitedPerfData() \u21d2 ",(0,s.jsx)("code",{children:"string"})]}),"\n",(0,s.jsx)(n.p,{children:"Returns the performance data as a tab delimited string"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsx)("a",{name:"getData"}),"\n",(0,s.jsx)(n.h2,{id:"getdataid",children:"getData(id)"}),"\n",(0,s.jsx)(n.p,{children:"Returns the measured value for the given measurement name."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"id"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"Object"})}),(0,s.jsx)(n.td,{children:"The measurement to retrieve."})]})})]}),"\n",(0,s.jsx)("a",{name:"getHealthReport"}),"\n",(0,s.jsxs)(n.h2,{id:"gethealthreport--object",children:["getHealthReport() \u21d2 ",(0,s.jsx)("code",{children:"Object"})]}),"\n",(0,s.jsx)(n.p,{children:"Returns the Performance metrics to be logged for health report"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"Object"})," - An object with the health data logs to be sent"]}),"\n",(0,s.jsx)("a",{name:"searchData"}),"\n",(0,s.jsxs)(n.h2,{id:"searchdataregexp--array",children:["searchData(regExp) \u21d2 ",(0,s.jsx)("code",{children:"Array"})]}),"\n",(0,s.jsx)(n.p,{children:"To search data given the regular expression"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"regExp"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"RegExp"})}),(0,s.jsx)(n.td,{children:"the regular expression"})]})})]}),"\n",(0,s.jsx)("a",{name:"clear"}),"\n",(0,s.jsx)(n.h2,{id:"clear",children:"clear()"}),"\n",(0,s.jsx)(n.p,{children:"Clear all logs including metric data and active tests."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function"]})]})}function o(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},28453:(e,n,t)=>{t.d(n,{R:()=>d,x:()=>a});var r=t(96540);const s={},i=r.createContext(s);function d(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:d(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/b0f28a71.edf0d55d.js b/assets/js/b0f28a71.edf0d55d.js new file mode 100644 index 00000000..f129340d --- /dev/null +++ b/assets/js/b0f28a71.edf0d55d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6508],{43122:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>i,default:()=>a,frontMatter:()=>s,metadata:()=>d,toc:()=>c});const d=JSON.parse('{"id":"API-Reference/widgets/DropdownButton","title":"DropdownButton","description":"Import :","source":"@site/api/API-Reference/widgets/DropdownButton.md","sourceDirName":"API-Reference/widgets","slug":"/API-Reference/widgets/DropdownButton","permalink":"/api/API-Reference/widgets/DropdownButton","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"Dialogs","permalink":"/api/API-Reference/widgets/Dialogs"},"next":{"title":"ModalBar","permalink":"/api/API-Reference/widgets/ModalBar"}}');var o=t(74848),r=t(28453);const s={},i=void 0,l={},c=[{value:"Import :",id:"import-",level:3},{value:"EVENT_SELECTED : <code>string</code>",id:"event_selected--string",level:2},{value:"EVENT_LIST_RENDERED : <code>string</code>",id:"event_list_rendered--string",level:2},{value:"EVENT_DROPDOWN_SHOWN : <code>string</code>",id:"event_dropdown_shown--string",level:2},{value:"EVENT_DROPDOWN_CLOSED : <code>string</code>",id:"event_dropdown_closed--string",level:2},{value:"DropdownButton(label, items, [itemRenderer], [options])",id:"dropdownbuttonlabel-items-itemrenderer-options",level:2},{value:"dropdownButton.items : <code>Array.<*></code>",id:"dropdownbuttonitems--array",level:3},{value:"dropdownButton.itemsSearchFilterText : <code>null</code>",id:"dropdownbuttonitemssearchfiltertext--null",level:3},{value:"dropdownButton.$button : <code>jQueryObject</code>",id:"dropdownbuttonbutton--jqueryobject",level:3},{value:"dropdownButton.$dropdown : <code>jQueryObject</code>",id:"dropdownbuttondropdown--jqueryobject",level:3},{value:"dropdownButton.dropdownExtraClasses : <code>string</code>",id:"dropdownbuttondropdownextraclasses--string",level:3},{value:"dropdownButton.setButtonLabel(label)",id:"dropdownbuttonsetbuttonlabellabel",level:3},{value:"dropdownButton.isOpen()",id:"dropdownbuttonisopen",level:3},{value:"dropdownButton.itemRenderer(item, index) \u21d2 <code>string</code> | <code>Object</code>",id:"dropdownbuttonitemrendereritem-index--string--object",level:3},{value:"dropdownButton.refresh()",id:"dropdownbuttonrefresh",level:3},{value:"dropdownButton.setChecked(index, checked)",id:"dropdownbuttonsetcheckedindex-checked",level:3},{value:"dropdownButton.showDropdown()",id:"dropdownbuttonshowdropdown",level:3},{value:"dropdownButton.filterDropdown(searchString)",id:"dropdownbuttonfilterdropdownsearchstring",level:3},{value:"dropdownButton.closeDropdown()",id:"dropdownbuttonclosedropdown",level:3},{value:"dropdownButton.toggleDropdown()",id:"dropdownbuttontoggledropdown",level:3}];function h(e){const n={a:"a",br:"br",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,r.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.h3,{id:"import-",children:"Import :"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-js",children:'const DropdownButton = brackets.getModule("widgets/DropdownButton")\n'})}),"\n",(0,o.jsx)("a",{name:"EVENT_SELECTED"}),"\n",(0,o.jsxs)(n.h2,{id:"event_selected--string",children:["EVENT_SELECTED : ",(0,o.jsx)("code",{children:"string"})]}),"\n",(0,o.jsx)(n.p,{children:"Event triggered when an item is selected."}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,o.jsx)("a",{name:"EVENT_LIST_RENDERED"}),"\n",(0,o.jsxs)(n.h2,{id:"event_list_rendered--string",children:["EVENT_LIST_RENDERED : ",(0,o.jsx)("code",{children:"string"})]}),"\n",(0,o.jsx)(n.p,{children:"Event triggered when the list is rendered."}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,o.jsx)("a",{name:"EVENT_DROPDOWN_SHOWN"}),"\n",(0,o.jsxs)(n.h2,{id:"event_dropdown_shown--string",children:["EVENT_DROPDOWN_SHOWN : ",(0,o.jsx)("code",{children:"string"})]}),"\n",(0,o.jsx)(n.p,{children:"Event triggered when the dropdown is shown."}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,o.jsx)("a",{name:"EVENT_DROPDOWN_CLOSED"}),"\n",(0,o.jsxs)(n.h2,{id:"event_dropdown_closed--string",children:["EVENT_DROPDOWN_CLOSED : ",(0,o.jsx)("code",{children:"string"})]}),"\n",(0,o.jsx)(n.p,{children:"Event triggered when the dropdown is closed."}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,o.jsx)("a",{name:"DropdownButton"}),"\n",(0,o.jsx)(n.h2,{id:"dropdownbuttonlabel-items-itemrenderer-options",children:"DropdownButton(label, items, [itemRenderer], [options])"}),"\n",(0,o.jsxs)(n.p,{children:["Creates a single dropdown-button instance. The DOM node is created but not attached to\nthe document anywhere - clients should append ",(0,o.jsx)(n.code,{children:"this.$button"})," to the appropriate location."]}),"\n",(0,o.jsx)(n.p,{children:"DropdownButton dispatches the following events:"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:'"select" - triggered when an option in the dropdown is clicked. Passed item object and index.'}),"\n"]}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,o.jsxs)(n.table,{children:[(0,o.jsx)(n.thead,{children:(0,o.jsxs)(n.tr,{children:[(0,o.jsx)(n.th,{children:"Param"}),(0,o.jsx)(n.th,{children:"Type"}),(0,o.jsx)(n.th,{children:"Default"}),(0,o.jsx)(n.th,{children:"Description"})]})}),(0,o.jsxs)(n.tbody,{children:[(0,o.jsxs)(n.tr,{children:[(0,o.jsx)(n.td,{children:"label"}),(0,o.jsx)(n.td,{children:(0,o.jsx)("code",{children:"string"})}),(0,o.jsx)(n.td,{}),(0,o.jsx)(n.td,{children:"The label to display on the button."})]}),(0,o.jsxs)(n.tr,{children:[(0,o.jsx)(n.td,{children:"items"}),(0,o.jsx)(n.td,{children:(0,o.jsx)("code",{children:"Array.<*>"})}),(0,o.jsx)(n.td,{}),(0,o.jsxs)(n.td,{children:["Items in the dropdown list. Items can have any type/value. An item with the value ",(0,o.jsx)(n.code,{children:'"---"'})," will be treated as a divider, which is not clickable, and ",(0,o.jsx)(n.code,{children:"itemRenderer()"})," will not be called for it."]})]}),(0,o.jsxs)(n.tr,{children:[(0,o.jsx)(n.td,{children:"[itemRenderer]"}),(0,o.jsx)(n.td,{children:(0,o.jsx)("code",{children:"function"})}),(0,o.jsx)(n.td,{}),(0,o.jsx)(n.td,{children:"Optional function to convert a single item to HTML. If not provided, items are assumed to be plain text strings. The function receives the item and its index."})]}),(0,o.jsxs)(n.tr,{children:[(0,o.jsx)(n.td,{children:"[options]"}),(0,o.jsx)(n.td,{children:(0,o.jsx)("code",{children:"Object"})}),(0,o.jsx)(n.td,{}),(0,o.jsx)(n.td,{children:"Additional options for the dropdown."})]}),(0,o.jsxs)(n.tr,{children:[(0,o.jsx)(n.td,{children:"[options.enableFilter]"}),(0,o.jsx)(n.td,{children:(0,o.jsx)("code",{children:"boolean"})}),(0,o.jsx)(n.td,{children:(0,o.jsx)("code",{children:"false"})}),(0,o.jsxs)(n.td,{children:["Set to ",(0,o.jsx)(n.code,{children:"true"})," to enable filtering by typing."]})]}),(0,o.jsxs)(n.tr,{children:[(0,o.jsx)(n.td,{children:"[options.cssClasses]"}),(0,o.jsx)(n.td,{children:(0,o.jsx)("code",{children:"string"})}),(0,o.jsx)(n.td,{}),(0,o.jsx)(n.td,{children:"A space-separated list of CSS classes to apply to the button."})]}),(0,o.jsxs)(n.tr,{children:[(0,o.jsx)(n.td,{children:"[options.customFilter]"}),(0,o.jsx)(n.td,{children:(0,o.jsx)("code",{children:"function"})}),(0,o.jsx)(n.td,{}),(0,o.jsxs)(n.td,{children:["Optional. When ",(0,o.jsx)(n.code,{children:"enableFilter"})," is enabled, this function is used as a custom filtering callback. It receives the user's search text, the text of the element being filtered, and the element's index. Return ",(0,o.jsx)(n.code,{children:"true"})," to display the list item, or ",(0,o.jsx)(n.code,{children:"false"})," to hide it."]})]})]})]}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.a,{href:"#DropdownButton",children:"DropdownButton(label, items, [itemRenderer], [options])"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.a,{href:"#DropdownButton+items",children:".items"})," : ",(0,o.jsx)("code",{children:"Array.<*>"})]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.a,{href:"#DropdownButton+itemsSearchFilterText",children:".itemsSearchFilterText"})," : ",(0,o.jsx)("code",{children:"null"})]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.a,{href:"#DropdownButton+$button",children:".$button"})," : ",(0,o.jsx)("code",{children:"jQueryObject"})]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.a,{href:"#DropdownButton+$dropdown",children:".$dropdown"})," : ",(0,o.jsx)("code",{children:"jQueryObject"})]}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.a,{href:"#DropdownButton+dropdownExtraClasses",children:".dropdownExtraClasses"})," : ",(0,o.jsx)("code",{children:"string"})]}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"#DropdownButton+setButtonLabel",children:".setButtonLabel(label)"})}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"#DropdownButton+isOpen",children:".isOpen()"})}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.a,{href:"#DropdownButton+itemRenderer",children:".itemRenderer(item, index)"})," \u21d2 ",(0,o.jsx)("code",{children:"string"})," | ",(0,o.jsx)("code",{children:"Object"})]}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"#DropdownButton+refresh",children:".refresh()"})}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"#DropdownButton+setChecked",children:".setChecked(index, checked)"})}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"#DropdownButton+showDropdown",children:".showDropdown()"})}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"#DropdownButton+filterDropdown",children:".filterDropdown(searchString)"})}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"#DropdownButton+closeDropdown",children:".closeDropdown()"})}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"#DropdownButton+toggleDropdown",children:".toggleDropdown()"})}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,o.jsx)("a",{name:"DropdownButton+items"}),"\n",(0,o.jsxs)(n.h3,{id:"dropdownbuttonitems--array",children:["dropdownButton.items : ",(0,o.jsx)("code",{children:"Array.<*>"})]}),"\n",(0,o.jsx)(n.p,{children:"Items in dropdown list - may be changed any time dropdown isn't open"}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.strong,{children:"Kind"}),": instance property of ",(0,o.jsx)(n.a,{href:"#DropdownButton",children:(0,o.jsx)("code",{children:"DropdownButton"})})]}),"\n",(0,o.jsx)("a",{name:"DropdownButton+itemsSearchFilterText"}),"\n",(0,o.jsxs)(n.h3,{id:"dropdownbuttonitemssearchfiltertext--null",children:["dropdownButton.itemsSearchFilterText : ",(0,o.jsx)("code",{children:"null"})]}),"\n",(0,o.jsx)(n.p,{children:"This is filter text corresponding to each items. it will be used to filter the items based on\nthe keyboard key presses the user does to enter search filter in popup."}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.strong,{children:"Kind"}),": instance property of ",(0,o.jsx)(n.a,{href:"#DropdownButton",children:(0,o.jsx)("code",{children:"DropdownButton"})})]}),"\n",(0,o.jsx)("a",{name:"DropdownButton+$button"}),"\n",(0,o.jsxs)(n.h3,{id:"dropdownbuttonbutton--jqueryobject",children:["dropdownButton.$button : ",(0,o.jsx)("code",{children:"jQueryObject"})]}),"\n",(0,o.jsx)(n.p,{children:"The clickable button. Available as soon as the DropdownButton is constructed."}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.strong,{children:"Kind"}),": instance property of ",(0,o.jsx)(n.a,{href:"#DropdownButton",children:(0,o.jsx)("code",{children:"DropdownButton"})})]}),"\n",(0,o.jsx)("a",{name:"DropdownButton+$dropdown"}),"\n",(0,o.jsxs)(n.h3,{id:"dropdownbuttondropdown--jqueryobject",children:["dropdownButton.$dropdown : ",(0,o.jsx)("code",{children:"jQueryObject"})]}),"\n",(0,o.jsx)(n.p,{children:"The dropdown element. Only non-null while open."}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.strong,{children:"Kind"}),": instance property of ",(0,o.jsx)(n.a,{href:"#DropdownButton",children:(0,o.jsx)("code",{children:"DropdownButton"})})]}),"\n",(0,o.jsx)("a",{name:"DropdownButton+dropdownExtraClasses"}),"\n",(0,o.jsxs)(n.h3,{id:"dropdownbuttondropdownextraclasses--string",children:["dropdownButton.dropdownExtraClasses : ",(0,o.jsx)("code",{children:"string"})]}),"\n",(0,o.jsx)(n.p,{children:"Extra CSS class(es) to apply to $dropdown"}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.strong,{children:"Kind"}),": instance property of ",(0,o.jsx)(n.a,{href:"#DropdownButton",children:(0,o.jsx)("code",{children:"DropdownButton"})})]}),"\n",(0,o.jsx)("a",{name:"DropdownButton+setButtonLabel"}),"\n",(0,o.jsx)(n.h3,{id:"dropdownbuttonsetbuttonlabellabel",children:"dropdownButton.setButtonLabel(label)"}),"\n",(0,o.jsx)(n.p,{children:"Update the button label."}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,o.jsx)(n.a,{href:"#DropdownButton",children:(0,o.jsx)("code",{children:"DropdownButton"})})]}),"\n",(0,o.jsxs)(n.table,{children:[(0,o.jsx)(n.thead,{children:(0,o.jsxs)(n.tr,{children:[(0,o.jsx)(n.th,{children:"Param"}),(0,o.jsx)(n.th,{children:"Type"})]})}),(0,o.jsx)(n.tbody,{children:(0,o.jsxs)(n.tr,{children:[(0,o.jsx)(n.td,{children:"label"}),(0,o.jsx)(n.td,{children:(0,o.jsx)("code",{children:"string"})})]})})]}),"\n",(0,o.jsx)("a",{name:"DropdownButton+isOpen"}),"\n",(0,o.jsx)(n.h3,{id:"dropdownbuttonisopen",children:"dropdownButton.isOpen()"}),"\n",(0,o.jsx)(n.p,{children:"returns true if the dropdown is open"}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,o.jsx)(n.a,{href:"#DropdownButton",children:(0,o.jsx)("code",{children:"DropdownButton"})})]}),"\n",(0,o.jsx)("a",{name:"DropdownButton+itemRenderer"}),"\n",(0,o.jsxs)(n.h3,{id:"dropdownbuttonitemrendereritem-index--string--object",children:["dropdownButton.itemRenderer(item, index) \u21d2 ",(0,o.jsx)("code",{children:"string"})," | ",(0,o.jsx)("code",{children:"Object"})]}),"\n",(0,o.jsx)(n.p,{children:"Called for each item when rendering the dropdown."}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,o.jsx)(n.a,{href:"#DropdownButton",children:(0,o.jsx)("code",{children:"DropdownButton"})}),(0,o.jsx)(n.br,{}),"\n",(0,o.jsx)(n.strong,{children:"Returns"}),": ",(0,o.jsx)("code",{children:"string"})," | ",(0,o.jsx)("code",{children:"Object"})," - Formatted & escaped HTML, either as a simple string\nor as the 'html' field in an object that also conveys enabled state. Disabled items inherit gray\ntext color and cannot be selected."]}),"\n",(0,o.jsxs)(n.table,{children:[(0,o.jsx)(n.thead,{children:(0,o.jsxs)(n.tr,{children:[(0,o.jsx)(n.th,{children:"Param"}),(0,o.jsx)(n.th,{children:"Type"}),(0,o.jsx)(n.th,{children:"Description"})]})}),(0,o.jsxs)(n.tbody,{children:[(0,o.jsxs)(n.tr,{children:[(0,o.jsx)(n.td,{children:"item"}),(0,o.jsx)(n.td,{children:(0,o.jsx)("code",{children:"*"})}),(0,o.jsx)(n.td,{children:"from items array"})]}),(0,o.jsxs)(n.tr,{children:[(0,o.jsx)(n.td,{children:"index"}),(0,o.jsx)(n.td,{children:(0,o.jsx)("code",{children:"number"})}),(0,o.jsx)(n.td,{children:"in items array"})]})]})]}),"\n",(0,o.jsx)("a",{name:"DropdownButton+refresh"}),"\n",(0,o.jsx)(n.h3,{id:"dropdownbuttonrefresh",children:"dropdownButton.refresh()"}),"\n",(0,o.jsx)(n.p,{children:"Refresh the dropdown list by removing and re-creating all list items.\nCall this after deleting/adding any item in the dropdown list."}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,o.jsx)(n.a,{href:"#DropdownButton",children:(0,o.jsx)("code",{children:"DropdownButton"})})]}),"\n",(0,o.jsx)("a",{name:"DropdownButton+setChecked"}),"\n",(0,o.jsx)(n.h3,{id:"dropdownbuttonsetcheckedindex-checked",children:"dropdownButton.setChecked(index, checked)"}),"\n",(0,o.jsx)(n.p,{children:"Check/Uncheck the list item of the given index."}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,o.jsx)(n.a,{href:"#DropdownButton",children:(0,o.jsx)("code",{children:"DropdownButton"})})]}),"\n",(0,o.jsxs)(n.table,{children:[(0,o.jsx)(n.thead,{children:(0,o.jsxs)(n.tr,{children:[(0,o.jsx)(n.th,{children:"Param"}),(0,o.jsx)(n.th,{children:"Type"}),(0,o.jsx)(n.th,{children:"Description"})]})}),(0,o.jsxs)(n.tbody,{children:[(0,o.jsxs)(n.tr,{children:[(0,o.jsx)(n.td,{children:"index"}),(0,o.jsx)(n.td,{children:(0,o.jsx)("code",{children:"number"})}),(0,o.jsx)(n.td,{children:"The index of the list item to be checked or unchecked"})]}),(0,o.jsxs)(n.tr,{children:[(0,o.jsx)(n.td,{children:"checked"}),(0,o.jsx)(n.td,{children:(0,o.jsx)("code",{children:"boolean"})}),(0,o.jsx)(n.td,{children:"True if the list item is to be checked, false to get check mark removed."})]})]})]}),"\n",(0,o.jsx)("a",{name:"DropdownButton+showDropdown"}),"\n",(0,o.jsx)(n.h3,{id:"dropdownbuttonshowdropdown",children:"dropdownButton.showDropdown()"}),"\n",(0,o.jsx)(n.p,{children:"Pops open the dropdown if currently closed. Does nothing if items.length == 0"}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,o.jsx)(n.a,{href:"#DropdownButton",children:(0,o.jsx)("code",{children:"DropdownButton"})})]}),"\n",(0,o.jsx)("a",{name:"DropdownButton+filterDropdown"}),"\n",(0,o.jsx)(n.h3,{id:"dropdownbuttonfilterdropdownsearchstring",children:"dropdownButton.filterDropdown(searchString)"}),"\n",(0,o.jsx)(n.p,{children:"hides all elements in popup that doesn't match the given search string, also shows the search bar in popup"}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,o.jsx)(n.a,{href:"#DropdownButton",children:(0,o.jsx)("code",{children:"DropdownButton"})})]}),"\n",(0,o.jsxs)(n.table,{children:[(0,o.jsx)(n.thead,{children:(0,o.jsx)(n.tr,{children:(0,o.jsx)(n.th,{children:"Param"})})}),(0,o.jsx)(n.tbody,{children:(0,o.jsx)(n.tr,{children:(0,o.jsx)(n.td,{children:"searchString"})})})]}),"\n",(0,o.jsx)("a",{name:"DropdownButton+closeDropdown"}),"\n",(0,o.jsx)(n.h3,{id:"dropdownbuttonclosedropdown",children:"dropdownButton.closeDropdown()"}),"\n",(0,o.jsx)(n.p,{children:"Closes the dropdown if currently open"}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,o.jsx)(n.a,{href:"#DropdownButton",children:(0,o.jsx)("code",{children:"DropdownButton"})})]}),"\n",(0,o.jsx)("a",{name:"DropdownButton+toggleDropdown"}),"\n",(0,o.jsx)(n.h3,{id:"dropdownbuttontoggledropdown",children:"dropdownButton.toggleDropdown()"}),"\n",(0,o.jsx)(n.p,{children:"Opens the dropdown if closed; closes it if open"}),"\n",(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,o.jsx)(n.a,{href:"#DropdownButton",children:(0,o.jsx)("code",{children:"DropdownButton"})})]})]})}function a(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(h,{...e})}):h(e)}},28453:(e,n,t)=>{t.d(n,{R:()=>s,x:()=>i});var d=t(96540);const o={},r=d.createContext(o);function s(e){const n=d.useContext(r);return d.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:s(e.components),d.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/b2ade0e8.f871161a.js b/assets/js/b2ade0e8.f871161a.js new file mode 100644 index 00000000..2b47530d --- /dev/null +++ b/assets/js/b2ade0e8.f871161a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6216],{60391:e=>{e.exports=JSON.parse('{"tag":{"label":"Open Source","permalink":"/blog/tags/open-source","allTagsPath":"/blog/tags","count":1,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/open-source","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]); \ No newline at end of file diff --git a/assets/js/b2d73ca9.f32ea66b.js b/assets/js/b2d73ca9.f32ea66b.js new file mode 100644 index 00000000..75b50e23 --- /dev/null +++ b/assets/js/b2d73ca9.f32ea66b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3208],{2756:(e,l,s)=>{s.r(l),s.d(l,{assets:()=>c,contentTitle:()=>d,default:()=>a,frontMatter:()=>r,metadata:()=>n,toc:()=>o});const n=JSON.parse('{"id":"API-Reference/utils/ViewUtils","title":"ViewUtils","description":"Import :","source":"@site/api/API-Reference/utils/ViewUtils.md","sourceDirName":"API-Reference/utils","slug":"/API-Reference/utils/ViewUtils","permalink":"/api/API-Reference/utils/ViewUtils","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"ValidationUtils","permalink":"/api/API-Reference/utils/ValidationUtils"},"next":{"title":"ZipUtils","permalink":"/api/API-Reference/utils/ZipUtils"}}');var t=s(74848),i=s(28453);const r={},d=void 0,c={},o=[{value:"Import :",id:"import-",level:3},{value:"addScrollerShadow(displayElement, scrollElement, showBottom)",id:"addscrollershadowdisplayelement-scrollelement-showbottom",level:2},{value:"removeScrollerShadow(displayElement, scrollElement)",id:"removescrollershadowdisplayelement-scrollelement",level:2},{value:"toggleClass($domElement, className, addClass)",id:"toggleclassdomelement-classname-addclass",level:2},{value:"sidebarList(scrollElement, selectedClassName)",id:"sidebarlistscrollelement-selectedclassname",level:2},{value:"getElementClipSize($view, elementRect) \u21d2 <code>Object</code>",id:"getelementclipsizeview-elementrect--object",level:2},{value:"scrollElementIntoView($view, $element, scrollHorizontal)",id:"scrollelementintoviewview-element-scrollhorizontal",level:2},{value:"getFileEntryDisplay(entry) \u21d2 <code>string</code>",id:"getfileentrydisplayentry--string",level:2},{value:"getDirNamesForDuplicateFiles(files) \u21d2 <code>Array.<string></code>",id:"getdirnamesforduplicatefilesfiles--arraystring",level:2},{value:"hideMainToolBar()",id:"hidemaintoolbar",level:2},{value:"showMainToolBar()",id:"showmaintoolbar",level:2}];function h(e){const l={br:"br",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(l.h3,{id:"import-",children:"Import :"}),"\n",(0,t.jsx)(l.pre,{children:(0,t.jsx)(l.code,{className:"language-js",children:'const ViewUtils = brackets.getModule("utils/ViewUtils")\n'})}),"\n",(0,t.jsx)("a",{name:"addScrollerShadow"}),"\n",(0,t.jsx)(l.h2,{id:"addscrollershadowdisplayelement-scrollelement-showbottom",children:"addScrollerShadow(displayElement, scrollElement, showBottom)"}),"\n",(0,t.jsx)(l.p,{children:"Installs event handlers for updatng shadow background elements to indicate vertical scrolling."}),"\n",(0,t.jsxs)(l.p,{children:[(0,t.jsx)(l.strong,{children:"Kind"}),": global function"]}),"\n",(0,t.jsxs)(l.table,{children:[(0,t.jsx)(l.thead,{children:(0,t.jsxs)(l.tr,{children:[(0,t.jsx)(l.th,{children:"Param"}),(0,t.jsx)(l.th,{children:"Type"}),(0,t.jsx)(l.th,{children:"Description"})]})}),(0,t.jsxs)(l.tbody,{children:[(0,t.jsxs)(l.tr,{children:[(0,t.jsx)(l.td,{children:"displayElement"}),(0,t.jsx)(l.td,{children:(0,t.jsx)("code",{children:"DOMElement"})}),(0,t.jsx)(l.td,{children:'the DOMElement that displays the shadow. Must fire "contentChanged" events when the element is resized or repositioned.'})]}),(0,t.jsxs)(l.tr,{children:[(0,t.jsx)(l.td,{children:"scrollElement"}),(0,t.jsx)(l.td,{children:(0,t.jsx)("code",{children:"Object"})}),(0,t.jsx)(l.td,{children:'the object that is scrolled. Must fire "scroll" events when the element is scrolled. If null, the displayElement is used.'})]}),(0,t.jsxs)(l.tr,{children:[(0,t.jsx)(l.td,{children:"showBottom"}),(0,t.jsx)(l.td,{children:(0,t.jsx)("code",{children:"boolean"})}),(0,t.jsx)(l.td,{children:"optionally show the bottom shadow"})]})]})]}),"\n",(0,t.jsx)("a",{name:"removeScrollerShadow"}),"\n",(0,t.jsx)(l.h2,{id:"removescrollershadowdisplayelement-scrollelement",children:"removeScrollerShadow(displayElement, scrollElement)"}),"\n",(0,t.jsx)(l.p,{children:"Remove scroller-shadow effect."}),"\n",(0,t.jsxs)(l.p,{children:[(0,t.jsx)(l.strong,{children:"Kind"}),": global function"]}),"\n",(0,t.jsxs)(l.table,{children:[(0,t.jsx)(l.thead,{children:(0,t.jsxs)(l.tr,{children:[(0,t.jsx)(l.th,{children:"Param"}),(0,t.jsx)(l.th,{children:"Type"}),(0,t.jsx)(l.th,{children:"Description"})]})}),(0,t.jsxs)(l.tbody,{children:[(0,t.jsxs)(l.tr,{children:[(0,t.jsx)(l.td,{children:"displayElement"}),(0,t.jsx)(l.td,{children:(0,t.jsx)("code",{children:"DOMElement"})}),(0,t.jsx)(l.td,{children:"the DOMElement that displays the shadow"})]}),(0,t.jsxs)(l.tr,{children:[(0,t.jsx)(l.td,{children:"scrollElement"}),(0,t.jsx)(l.td,{children:(0,t.jsx)("code",{children:"Object"})}),(0,t.jsx)(l.td,{children:"the object that is scrolled"})]})]})]}),"\n",(0,t.jsx)("a",{name:"toggleClass"}),"\n",(0,t.jsx)(l.h2,{id:"toggleclassdomelement-classname-addclass",children:"toggleClass($domElement, className, addClass)"}),"\n",(0,t.jsx)(l.p,{children:"Utility function to replace jQuery.toggleClass when used with the second argument, which needs to be a true boolean for jQuery"}),"\n",(0,t.jsxs)(l.p,{children:[(0,t.jsx)(l.strong,{children:"Kind"}),": global function"]}),"\n",(0,t.jsxs)(l.table,{children:[(0,t.jsx)(l.thead,{children:(0,t.jsxs)(l.tr,{children:[(0,t.jsx)(l.th,{children:"Param"}),(0,t.jsx)(l.th,{children:"Type"}),(0,t.jsx)(l.th,{children:"Description"})]})}),(0,t.jsxs)(l.tbody,{children:[(0,t.jsxs)(l.tr,{children:[(0,t.jsx)(l.td,{children:"$domElement"}),(0,t.jsx)(l.td,{children:(0,t.jsx)("code",{children:"jQueryObject"})}),(0,t.jsx)(l.td,{children:"The jQueryObject to toggle the Class on"})]}),(0,t.jsxs)(l.tr,{children:[(0,t.jsx)(l.td,{children:"className"}),(0,t.jsx)(l.td,{children:(0,t.jsx)("code",{children:"string"})}),(0,t.jsx)(l.td,{children:"Class name or names (separated by spaces) to toggle"})]}),(0,t.jsxs)(l.tr,{children:[(0,t.jsx)(l.td,{children:"addClass"}),(0,t.jsx)(l.td,{children:(0,t.jsx)("code",{children:"boolean"})}),(0,t.jsx)(l.td,{children:"A truthy value to add the class and a falsy value to remove the class"})]})]})]}),"\n",(0,t.jsx)("a",{name:"sidebarList"}),"\n",(0,t.jsx)(l.h2,{id:"sidebarlistscrollelement-selectedclassname",children:"sidebarList(scrollElement, selectedClassName)"}),"\n",(0,t.jsx)(l.p,{children:"Within a scrolling DOMElement, creates and positions a styled selection\ndiv to align a single selected list item from a ul list element."}),"\n",(0,t.jsx)(l.p,{children:"Assumptions:"}),"\n",(0,t.jsxs)(l.ul,{children:["\n",(0,t.jsx)(l.li,{children:"scrollerElement is a child of the #sidebar div"}),"\n",(0,t.jsx)(l.li,{children:'ul list element fires a "selectionChanged" event after the\nselectedClassName is assigned to a new list item'}),"\n"]}),"\n",(0,t.jsxs)(l.p,{children:[(0,t.jsx)(l.strong,{children:"Kind"}),": global function"]}),"\n",(0,t.jsxs)(l.table,{children:[(0,t.jsx)(l.thead,{children:(0,t.jsxs)(l.tr,{children:[(0,t.jsx)(l.th,{children:"Param"}),(0,t.jsx)(l.th,{children:"Type"}),(0,t.jsx)(l.th,{children:"Description"})]})}),(0,t.jsxs)(l.tbody,{children:[(0,t.jsxs)(l.tr,{children:[(0,t.jsx)(l.td,{children:"scrollElement"}),(0,t.jsx)(l.td,{children:(0,t.jsx)("code",{children:"DOMElement"})}),(0,t.jsx)(l.td,{children:"A DOMElement containing a ul list element"})]}),(0,t.jsxs)(l.tr,{children:[(0,t.jsx)(l.td,{children:"selectedClassName"}),(0,t.jsx)(l.td,{children:(0,t.jsx)("code",{children:"string"})}),(0,t.jsx)(l.td,{children:"A CSS class name on at most one list item in the contained list"})]})]})]}),"\n",(0,t.jsx)("a",{name:"getElementClipSize"}),"\n",(0,t.jsxs)(l.h2,{id:"getelementclipsizeview-elementrect--object",children:["getElementClipSize($view, elementRect) \u21d2 ",(0,t.jsx)("code",{children:"Object"})]}),"\n",(0,t.jsx)(l.p,{children:"Determine how much of an element rect is clipped in view."}),"\n",(0,t.jsxs)(l.p,{children:[(0,t.jsx)(l.strong,{children:"Kind"}),": global function",(0,t.jsx)(l.br,{}),"\n",(0,t.jsx)(l.strong,{children:"Returns"}),": ",(0,t.jsx)("code",{children:"Object"})," - amount element rect is clipped in each direction"]}),"\n",(0,t.jsxs)(l.table,{children:[(0,t.jsx)(l.thead,{children:(0,t.jsxs)(l.tr,{children:[(0,t.jsx)(l.th,{children:"Param"}),(0,t.jsx)(l.th,{children:"Type"}),(0,t.jsx)(l.th,{children:"Description"})]})}),(0,t.jsxs)(l.tbody,{children:[(0,t.jsxs)(l.tr,{children:[(0,t.jsx)(l.td,{children:"$view"}),(0,t.jsx)(l.td,{children:(0,t.jsx)("code",{children:"DOMElement"})}),(0,t.jsx)(l.td,{children:"A jQuery scrolling container"})]}),(0,t.jsxs)(l.tr,{children:[(0,t.jsx)(l.td,{children:"elementRect"}),(0,t.jsx)(l.td,{children:(0,t.jsx)("code",{children:"Object"})}),(0,t.jsx)(l.td,{children:"rectangle of element's default position/size"})]})]})]}),"\n",(0,t.jsx)("a",{name:"scrollElementIntoView"}),"\n",(0,t.jsx)(l.h2,{id:"scrollelementintoviewview-element-scrollhorizontal",children:"scrollElementIntoView($view, $element, scrollHorizontal)"}),"\n",(0,t.jsx)(l.p,{children:"Within a scrolling DOMElement, if necessary, scroll element into viewport."}),"\n",(0,t.jsx)(l.p,{children:"To Perform the minimum amount of scrolling necessary, cases should be handled as follows:"}),"\n",(0,t.jsxs)(l.ul,{children:["\n",(0,t.jsx)(l.li,{children:"element already completely in view : no scrolling"}),"\n",(0,t.jsx)(l.li,{children:"element above viewport : scroll view so element is at top"}),"\n",(0,t.jsx)(l.li,{children:"element left of viewport : scroll view so element is at left"}),"\n",(0,t.jsx)(l.li,{children:"element below viewport : scroll view so element is at bottom"}),"\n",(0,t.jsx)(l.li,{children:"element right of viewport : scroll view so element is at right"}),"\n"]}),"\n",(0,t.jsx)(l.p,{children:"Assumptions:"}),"\n",(0,t.jsxs)(l.ul,{children:["\n",(0,t.jsx)(l.li,{children:"$view is a scrolling container"}),"\n"]}),"\n",(0,t.jsxs)(l.p,{children:[(0,t.jsx)(l.strong,{children:"Kind"}),": global function"]}),"\n",(0,t.jsxs)(l.table,{children:[(0,t.jsx)(l.thead,{children:(0,t.jsxs)(l.tr,{children:[(0,t.jsx)(l.th,{children:"Param"}),(0,t.jsx)(l.th,{children:"Type"}),(0,t.jsx)(l.th,{children:"Description"})]})}),(0,t.jsxs)(l.tbody,{children:[(0,t.jsxs)(l.tr,{children:[(0,t.jsx)(l.td,{children:"$view"}),(0,t.jsx)(l.td,{children:(0,t.jsx)("code",{children:"DOMElement"})}),(0,t.jsx)(l.td,{children:"A jQuery scrolling container"})]}),(0,t.jsxs)(l.tr,{children:[(0,t.jsx)(l.td,{children:"$element"}),(0,t.jsx)(l.td,{children:(0,t.jsx)("code",{children:"DOMElement"})}),(0,t.jsx)(l.td,{children:"A jQuery element"})]}),(0,t.jsxs)(l.tr,{children:[(0,t.jsx)(l.td,{children:"scrollHorizontal"}),(0,t.jsx)(l.td,{children:(0,t.jsx)("code",{children:"boolean"})}),(0,t.jsx)(l.td,{children:"whether to also scroll horizontally"})]})]})]}),"\n",(0,t.jsx)("a",{name:"getFileEntryDisplay"}),"\n",(0,t.jsxs)(l.h2,{id:"getfileentrydisplayentry--string",children:["getFileEntryDisplay(entry) \u21d2 ",(0,t.jsx)("code",{children:"string"})]}),"\n",(0,t.jsx)(l.p,{children:"HTML formats a file entry name for display in the sidebar."}),"\n",(0,t.jsxs)(l.p,{children:[(0,t.jsx)(l.strong,{children:"Kind"}),": global function",(0,t.jsx)(l.br,{}),"\n",(0,t.jsx)(l.strong,{children:"Returns"}),": ",(0,t.jsx)("code",{children:"string"})," - HTML formatted string"]}),"\n",(0,t.jsxs)(l.table,{children:[(0,t.jsx)(l.thead,{children:(0,t.jsxs)(l.tr,{children:[(0,t.jsx)(l.th,{children:"Param"}),(0,t.jsx)(l.th,{children:"Type"}),(0,t.jsx)(l.th,{children:"Description"})]})}),(0,t.jsx)(l.tbody,{children:(0,t.jsxs)(l.tr,{children:[(0,t.jsx)(l.td,{children:"entry"}),(0,t.jsx)(l.td,{children:(0,t.jsx)("code",{children:"File"})}),(0,t.jsx)(l.td,{children:"File entry to display"})]})})]}),"\n",(0,t.jsx)("a",{name:"getDirNamesForDuplicateFiles"}),"\n",(0,t.jsxs)(l.h2,{id:"getdirnamesforduplicatefilesfiles--arraystring",children:["getDirNamesForDuplicateFiles(files) \u21d2 ",(0,t.jsx)("code",{children:"Array.<string>"})]}),"\n",(0,t.jsx)(l.p,{children:"Determine the minimum directory path to distinguish duplicate file names\nfor each file in list."}),"\n",(0,t.jsxs)(l.p,{children:[(0,t.jsx)(l.strong,{children:"Kind"}),": global function",(0,t.jsx)(l.br,{}),"\n",(0,t.jsx)(l.strong,{children:"Returns"}),": ",(0,t.jsx)("code",{children:"Array.<string>"})," - directory paths to match list of files"]}),"\n",(0,t.jsxs)(l.table,{children:[(0,t.jsx)(l.thead,{children:(0,t.jsxs)(l.tr,{children:[(0,t.jsx)(l.th,{children:"Param"}),(0,t.jsx)(l.th,{children:"Type"}),(0,t.jsx)(l.th,{children:"Description"})]})}),(0,t.jsx)(l.tbody,{children:(0,t.jsxs)(l.tr,{children:[(0,t.jsx)(l.td,{children:"files"}),(0,t.jsx)(l.td,{children:(0,t.jsx)("code",{children:"Array.<File>"})}),(0,t.jsx)(l.td,{children:"list of Files with the same filename"})]})})]}),"\n",(0,t.jsx)("a",{name:"hideMainToolBar"}),"\n",(0,t.jsx)(l.h2,{id:"hidemaintoolbar",children:"hideMainToolBar()"}),"\n",(0,t.jsx)(l.p,{children:"Hides the main toolbar"}),"\n",(0,t.jsxs)(l.p,{children:[(0,t.jsx)(l.strong,{children:"Kind"}),": global function"]}),"\n",(0,t.jsx)("a",{name:"showMainToolBar"}),"\n",(0,t.jsx)(l.h2,{id:"showmaintoolbar",children:"showMainToolBar()"}),"\n",(0,t.jsx)(l.p,{children:"Shows the main toolbar"}),"\n",(0,t.jsxs)(l.p,{children:[(0,t.jsx)(l.strong,{children:"Kind"}),": global function"]})]})}function a(e={}){const{wrapper:l}={...(0,i.R)(),...e.components};return l?(0,t.jsx)(l,{...e,children:(0,t.jsx)(h,{...e})}):h(e)}},28453:(e,l,s)=>{s.d(l,{R:()=>r,x:()=>d});var n=s(96540);const t={},i=n.createContext(t);function r(e){const l=n.useContext(i);return n.useMemo((function(){return"function"==typeof e?e(l):{...l,...e}}),[l,e])}function d(e){let l;return l=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:r(e.components),n.createElement(i.Provider,{value:l},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/b4123993.49de850e.js b/assets/js/b4123993.49de850e.js new file mode 100644 index 00000000..6c8984d3 --- /dev/null +++ b/assets/js/b4123993.49de850e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7612],{12150:(e,i,t)=>{t.r(i),t.d(i,{assets:()=>d,contentTitle:()=>s,default:()=>h,frontMatter:()=>o,metadata:()=>r,toc:()=>l});const r=JSON.parse('{"id":"API-Reference/features/BeautificationManager","title":"BeautificationManager","description":"Import :","source":"@site/api/API-Reference/features/BeautificationManager.md","sourceDirName":"API-Reference/features","slug":"/API-Reference/features/BeautificationManager","permalink":"/api/API-Reference/features/BeautificationManager","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"EditorManager","permalink":"/api/API-Reference/editor/EditorManager"},"next":{"title":"NewFileContentManager","permalink":"/api/API-Reference/features/NewFileContentManager"}}');var n=t(74848),a=t(28453);const o={},s=void 0,d={},l=[{value:"Import :",id:"import-",level:3},{value:"features/BeautificationManager",id:"featuresbeautificationmanager",level:2},{value:"API",id:"api",level:2},{value:"registerBeautificationProvider",id:"registerbeautificationprovider",level:3},{value:"removeBeautificationProvider",id:"removebeautificationprovider",level:3},{value:"provider.beautifyEditorProvider",id:"providerbeautifyeditorprovider",level:3},{value:"The resolved promise object",id:"the-resolved-promise-object",level:4},{value:"provider.beautifyTextProvider",id:"providerbeautifytextprovider",level:3},{value:"Parameters",id:"parameters",level:4},{value:"The resolved promise object",id:"the-resolved-promise-object-1",level:4},{value:"features/BeautificationManager.beautifyEditor(editor) \u21d2 <code>Promise</code>",id:"featuresbeautificationmanagerbeautifyeditoreditor--promise",level:3},{value:"features/BeautificationManager.beautifyText(textToBeautify, filePathOrFileName) \u21d2 <code>Promise</code>",id:"featuresbeautificationmanagerbeautifytexttexttobeautify-filepathorfilename--promise",level:3},{value:"The resolved promise object",id:"the-resolved-promise-object-2",level:4}];function c(e){const i={a:"a",br:"br",code:"code",h2:"h2",h3:"h3",h4:"h4",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,a.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(i.h3,{id:"import-",children:"Import :"}),"\n",(0,n.jsx)(i.pre,{children:(0,n.jsx)(i.code,{className:"language-js",children:'const BeautificationManager = brackets.getModule("features/BeautificationManager")\n'})}),"\n",(0,n.jsx)("a",{name:"module_features/BeautificationManager"}),"\n",(0,n.jsx)(i.h2,{id:"featuresbeautificationmanager",children:"features/BeautificationManager"}),"\n",(0,n.jsxs)(i.p,{children:["Beautification manager interacts with beautify extensions to determine what to do when user issues ",(0,n.jsx)(i.code,{children:"beautify code"}),"\ncommand. Beautification providers can use this module to register new providers to beautify new languages."]}),"\n",(0,n.jsx)(i.h2,{id:"api",children:"API"}),"\n",(0,n.jsx)(i.h3,{id:"registerbeautificationprovider",children:"registerBeautificationProvider"}),"\n",(0,n.jsx)(i.p,{children:"Register a Beautification provider with this api."}),"\n",(0,n.jsx)(i.p,{children:(0,n.jsx)(i.strong,{children:"Example"})}),"\n",(0,n.jsx)(i.pre,{children:(0,n.jsx)(i.code,{className:"language-js",children:"// syntax\nBeautificationManager.registerBeautificationProvider(provider, supportedLanguages, priority);\n"})}),"\n",(0,n.jsx)(i.p,{children:"The API requires three parameters:"}),"\n",(0,n.jsxs)(i.ol,{children:["\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"provider"}),": must implement a ",(0,n.jsx)(i.code,{children:"beautifyEditorProvider"})," and ",(0,n.jsx)(i.code,{children:"beautifyTextProvider"})," function. See doc below:"]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"supportedLanguages"}),": An array of languages that the provider supports. If ",(0,n.jsx)(i.code,{children:'["all"]'})," is supplied, then the\nprovider will be invoked for all languages. Restrict to specific languages: Eg: ",(0,n.jsx)(i.code,{children:'["javascript", "html", "php"]'})]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"priority"}),": Used to break ties among providers for a particular language. Providers with a higher number\nwill be asked for beatified code before those with a lower priority value. Defaults to zero.\n",(0,n.jsx)(i.strong,{children:"Example"})]}),"\n"]}),"\n",(0,n.jsx)(i.pre,{children:(0,n.jsx)(i.code,{className:"language-js",children:'// to register a provider that will be invoked for all languages. where provider is any object that implements\n// a `beautifyEditorProvider` and `beautifyTextProvider` function\nBeautificationManager.registerBeautificationProvider(provider, ["all"]);\n\n// to register a provider that will be invoked for specific languages\nBeautificationManager.registerBeautificationProvider(provider, ["javascript", "html", "php"]);\n'})}),"\n",(0,n.jsx)(i.h3,{id:"removebeautificationprovider",children:"removeBeautificationProvider"}),"\n",(0,n.jsxs)(i.p,{children:["Removes a registered Beautification provider. The API takes the same arguments as ",(0,n.jsx)(i.code,{children:"registerBeautificationProvider"}),".\n",(0,n.jsx)(i.strong,{children:"Example"})]}),"\n",(0,n.jsx)(i.pre,{children:(0,n.jsx)(i.code,{className:"language-js",children:'// syntax\nBeautificationManager.removeBeautificationProvider(provider, supportedLanguages);\n// Example\nBeautificationManager.removeBeautificationProvider(provider, ["javascript", "html"]);\n'})}),"\n",(0,n.jsx)(i.h3,{id:"providerbeautifyeditorprovider",children:"provider.beautifyEditorProvider"}),"\n",(0,n.jsxs)(i.p,{children:["Each provider must implement the ",(0,n.jsx)(i.code,{children:"beautifyEditorProvider"})," function that returns a promise. The promise either resolves with\nthe beautified code details or rejects if there is nothing to beautify for the provider.\n",(0,n.jsx)(i.strong,{children:"Example"})]}),"\n",(0,n.jsx)(i.pre,{children:(0,n.jsx)(i.code,{className:"language-js",children:'// function signature\nprovider.beautifyEditorProvider = function(editor) {\n return new Promise((resolve, reject)=>{\n resolve({\n originalText: "the original text sent to beautify",\n changedText: "partial or full text that changed.",\n // Optional cursor offset if given will set the editor cursor to the position after beautification.\n // either `cursorOffset` or `ranges` can be specified, but not both.\n cursorOffset: number,\n // Optional: If range is specified, only the given range will be replaced. else full text is replaced\n ranges:{\n replaceStart: {line,ch},\n replaceEnd: {line,ch}\n }\n });\n });\n };\n'})}),"\n",(0,n.jsx)(i.h4,{id:"the-resolved-promise-object",children:"The resolved promise object"}),"\n",(0,n.jsxs)(i.p,{children:["The resolved promise should either be ",(0,n.jsx)(i.code,{children:"null"}),"(indicating that the extension itself has prettified the code and\ndoesn't want any further processing from BeautificationManager.) or contain the following details:"]}),"\n",(0,n.jsxs)(i.ol,{children:["\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"originalText"})," - string, the original text sent to beautify"]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"changedText"})," - string, this should be the fully prettified text of the whole ",(0,n.jsx)(i.code,{children:"originalText"})," or a fragment of\npretty text in ",(0,n.jsx)(i.code,{children:"originalText"})," if a range was selected. If a ",(0,n.jsx)(i.code,{children:"fragment"})," is returned, then the\n",(0,n.jsx)(i.code,{children:"ranges"})," object must be specified."]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"cursorOffset"})," - Optional number, if given will set the editor cursor to the position after beautification.\neither ",(0,n.jsx)(i.code,{children:"cursorOffset"})," or ",(0,n.jsx)(i.code,{children:"ranges"})," can be specified, but not both."]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"ranges"})," - Optional object, set of 2 cursors that gives details on what range to replace with given changed text.\nIf range is not specified, the full text in the editor will be replaced. range has 2 fields:","\n",(0,n.jsxs)(i.ol,{children:["\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"replaceStart{line,ch}"})," - the start of range to replace"]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"replaceEnd{line,ch}"})," - the end of range to replace"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,n.jsx)(i.h3,{id:"providerbeautifytextprovider",children:"provider.beautifyTextProvider"}),"\n",(0,n.jsxs)(i.p,{children:["Each provider must implement the ",(0,n.jsx)(i.code,{children:"beautifyTextProvider"})," function that returns a promise.\nThe promise either resolves with the beautified code details(same as beautifyEditorProvider) or rejects if\nthere is nothing to beautify for the provider.\n",(0,n.jsx)(i.strong,{children:"Example"})]}),"\n",(0,n.jsx)(i.pre,{children:(0,n.jsx)(i.code,{className:"language-js",children:'// function signature.\nprovider.beautifyTextProvider = function(textToBeautify, filePathOrFileName) {\n return new Promise((resolve, reject)=>{\n resolve({\n originalText: "the original text sent to beautify",\n changedText: "partial or full text that changed.",\n // Optional: If range is specified, only the given range is assumed changed. else full text changed.\n ranges:{\n replaceStart: {line,ch},\n replaceEnd: {line,ch}\n }\n });\n });\n };\n'})}),"\n",(0,n.jsx)(i.h4,{id:"parameters",children:"Parameters"}),"\n",(0,n.jsxs)(i.p,{children:["The ",(0,n.jsx)(i.code,{children:"beautifyTextProvider"})," callback will receive the following arguments."]}),"\n",(0,n.jsxs)(i.ol,{children:["\n",(0,n.jsx)(i.li,{children:"textToBeautify - string"}),"\n",(0,n.jsx)(i.li,{children:"filePathOrFileName - string. This will either be a valid file path, or a file name to deduce which language the\nbeautifier is dealing with."}),"\n"]}),"\n",(0,n.jsx)(i.h4,{id:"the-resolved-promise-object-1",children:"The resolved promise object"}),"\n",(0,n.jsx)(i.p,{children:"The resolved object has the same structure as beautifyEditorProvider resolved promise object."}),"\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.a,{href:"#module_features/BeautificationManager",children:"features/BeautificationManager"}),"\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.a,{href:"#module_features/BeautificationManager..beautifyEditor",children:".beautifyEditor(editor)"})," \u21d2 ",(0,n.jsx)("code",{children:"Promise"})]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.a,{href:"#module_features/BeautificationManager..beautifyText",children:".beautifyText(textToBeautify, filePathOrFileName)"})," \u21d2 ",(0,n.jsx)("code",{children:"Promise"})]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,n.jsx)("a",{name:"module_features/BeautificationManager..beautifyEditor"}),"\n",(0,n.jsxs)(i.h3,{id:"featuresbeautificationmanagerbeautifyeditoreditor--promise",children:["features/BeautificationManager.beautifyEditor(editor) \u21d2 ",(0,n.jsx)("code",{children:"Promise"})]}),"\n",(0,n.jsx)(i.p,{children:"Beautifies text in the given editor with available providers."}),"\n",(0,n.jsxs)(i.p,{children:[(0,n.jsx)(i.strong,{children:"Kind"}),": inner method of ",(0,n.jsx)(i.a,{href:"#module_features/BeautificationManager",children:(0,n.jsx)("code",{children:"features/BeautificationManager"})}),(0,n.jsx)(i.br,{}),"\n",(0,n.jsx)(i.strong,{children:"Returns"}),": ",(0,n.jsx)("code",{children:"Promise"})," - - A promise that will be resolved to null if the selected text is beautified or rejects\nif beautification failed."]}),"\n",(0,n.jsxs)(i.table,{children:[(0,n.jsx)(i.thead,{children:(0,n.jsx)(i.tr,{children:(0,n.jsx)(i.th,{children:"Param"})})}),(0,n.jsx)(i.tbody,{children:(0,n.jsx)(i.tr,{children:(0,n.jsx)(i.td,{children:"editor"})})})]}),"\n",(0,n.jsx)("a",{name:"module_features/BeautificationManager..beautifyText"}),"\n",(0,n.jsxs)(i.h3,{id:"featuresbeautificationmanagerbeautifytexttexttobeautify-filepathorfilename--promise",children:["features/BeautificationManager.beautifyText(textToBeautify, filePathOrFileName) \u21d2 ",(0,n.jsx)("code",{children:"Promise"})]}),"\n",(0,n.jsx)(i.p,{children:"Beautifies text with available providers."}),"\n",(0,n.jsxs)(i.p,{children:[(0,n.jsx)(i.strong,{children:"Kind"}),": inner method of ",(0,n.jsx)(i.a,{href:"#module_features/BeautificationManager",children:(0,n.jsx)("code",{children:"features/BeautificationManager"})}),(0,n.jsx)(i.br,{}),"\n",(0,n.jsx)(i.strong,{children:"Returns"}),": ",(0,n.jsx)("code",{children:"Promise"})," - - A promise that will be resolved to null if the selected text is beautified or rejects\nif beautification failed.."]}),"\n",(0,n.jsx)(i.h4,{id:"the-resolved-promise-object-2",children:"The resolved promise object"}),"\n",(0,n.jsx)(i.p,{children:"The resolved promise object contain the following details:"}),"\n",(0,n.jsxs)(i.ol,{children:["\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"originalText"})," - string, the original text sent to beautify"]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"changedText"})," - string, the prettified text."]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"ranges"})," - Optional. if range object is returned, it means that only a part of the original text changed in\nthe original text ",(0,n.jsx)(i.code,{children:"textToBeautify"}),". The part that changed is supplied by two cursor positions below:","\n",(0,n.jsxs)(i.ol,{children:["\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"replaceStart{line,ch}"})," - the start of range to replace"]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.code,{children:"replaceEnd{line,ch}"})," - the end of range to replace"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,n.jsxs)(i.table,{children:[(0,n.jsx)(i.thead,{children:(0,n.jsxs)(i.tr,{children:[(0,n.jsx)(i.th,{children:"Param"}),(0,n.jsx)(i.th,{children:"Type"}),(0,n.jsx)(i.th,{children:"Description"})]})}),(0,n.jsxs)(i.tbody,{children:[(0,n.jsxs)(i.tr,{children:[(0,n.jsx)(i.td,{children:"textToBeautify"}),(0,n.jsx)(i.td,{children:(0,n.jsx)("code",{children:"string"})}),(0,n.jsx)(i.td,{})]}),(0,n.jsxs)(i.tr,{children:[(0,n.jsx)(i.td,{children:"filePathOrFileName"}),(0,n.jsx)(i.td,{children:(0,n.jsx)("code",{children:"string"})}),(0,n.jsx)(i.td,{children:"Note that the file path may not actually exist on disk. It is just used to infer what language beautifier is to be applied."})]})]})]})]})}function h(e={}){const{wrapper:i}={...(0,a.R)(),...e.components};return i?(0,n.jsx)(i,{...e,children:(0,n.jsx)(c,{...e})}):c(e)}},28453:(e,i,t)=>{t.d(i,{R:()=>o,x:()=>s});var r=t(96540);const n={},a=r.createContext(n);function o(e){const i=r.useContext(a);return r.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function s(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:o(e.components),r.createElement(a.Provider,{value:i},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/b5d8f427.c05a2a4c.js b/assets/js/b5d8f427.c05a2a4c.js new file mode 100644 index 00000000..511c3f8d --- /dev/null +++ b/assets/js/b5d8f427.c05a2a4c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8219],{5633:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>l,default:()=>u,frontMatter:()=>a,metadata:()=>i,toc:()=>c});const i=JSON.parse('{"id":"Editing & Code/beautify-code","title":"Beautify Code","description":"The Beautify Code feature ensures your code is consistently formatted, improving readability and maintainability. It automatically aligns your code with your preferred style, taking into account indentation, spacing, and other formatting rules.","source":"@site/docs/04-Editing & Code/07-beautify-code.md","sourceDirName":"04-Editing & Code","slug":"/Features/beautify-code","permalink":"/docs/Features/beautify-code","draft":false,"unlisted":false,"editUrl":"https://github.com/phcode-dev/docs/blob/main/docs/04-Editing & Code/07-beautify-code.md","tags":[],"version":"current","sidebarPosition":7,"frontMatter":{"title":"Beautify Code","slug":"/Features/beautify-code"},"sidebar":"tutorialSidebar","previous":{"title":"Custom Snippets","permalink":"/docs/Features/custom-snippets"},"next":{"title":"File Management","permalink":"/docs/file-management"}}');var s=n(74848),o=n(28453),r=(n(96540),n(56399));const a={title:"Beautify Code",slug:"/Features/beautify-code"},l=void 0,d={},c=[{value:"How to Use",id:"how-to-use",level:2},{value:"Context Menu :",id:"context-menu-",level:3},{value:"Keyboard Shortcut :",id:"keyboard-shortcut-",level:3},{value:"Automatic Formatting on Save",id:"automatic-formatting-on-save",level:2},{value:"Customizing Beautify Code",id:"customizing-beautify-code",level:2},{value:"Modifying Indentation with Beautify Code",id:"modifying-indentation-with-beautify-code",level:2},{value:"Visual Demonstration",id:"visual-demonstration",level:2}];function h(e){const t={code:"code",em:"em",h2:"h2",h3:"h3",hr:"hr",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(t.p,{children:["The ",(0,s.jsx)(t.strong,{children:"Beautify Code"})," feature ensures your code is consistently formatted, improving readability and maintainability. It automatically aligns your code with your preferred style, taking into account indentation, spacing, and other formatting rules."]}),"\n",(0,s.jsx)(t.h2,{id:"how-to-use",children:"How to Use"}),"\n",(0,s.jsx)(t.p,{children:"You can format your code using Beautify Code through the following methods:"}),"\n",(0,s.jsx)(t.h3,{id:"context-menu-",children:"Context Menu :"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:"Right-click in the editor."}),"\n",(0,s.jsxs)(t.li,{children:["Select ",(0,s.jsx)(t.strong,{children:"Beautify Code"})," from the context menu."]}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"Beautify Code Context Menu Image",src:n(15).A+"",title:"Click on Beautify Code option",width:"907",height:"911"})}),"\n",(0,s.jsx)(t.h3,{id:"keyboard-shortcut-",children:"Keyboard Shortcut :"}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:["Press ",(0,s.jsx)(t.code,{children:"Ctrl+B"})," to format your code. (",(0,s.jsx)(t.code,{children:"Cmd+B"})," in MacOS)"]}),"\n"]}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"Note"}),": ",(0,s.jsx)(t.em,{children:"You can also format just a selected part of your code using the Beautify Code feature. However, this option will only work if the selected code is syntactically valid."})]}),"\n",(0,s.jsx)(t.h2,{id:"automatic-formatting-on-save",children:"Automatic Formatting on Save"}),"\n",(0,s.jsx)(t.p,{children:"To automatically format your code every time you save :"}),"\n",(0,s.jsxs)(t.ol,{children:["\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:["Go to ",(0,s.jsx)(t.code,{children:"Edit"})," > ",(0,s.jsx)(t.code,{children:"Beautify Code After Save"}),"."]}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:["Toggle this option on.\n",(0,s.jsx)(t.img,{alt:"Beautify Code after Save Image",src:n(23856).A+"",title:"Click on Beautify Code After Save",width:"1184",height:"986"})]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(t.h2,{id:"customizing-beautify-code",children:"Customizing Beautify Code"}),"\n",(0,s.jsx)(t.p,{children:"You can adjust the settings for Beautify Code to match your coding preferences:"}),"\n",(0,s.jsxs)(t.ol,{children:["\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:["Go to ",(0,s.jsx)(t.code,{children:"File"})," > ",(0,s.jsx)(t.code,{children:"Open Preferences File"}),".\nWhen you open the preferences, two files will appear:"]}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"defaultPreferences.json"})," on the left pane: This file contains the default settings and is not editable."]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"phcode.json"})," on the right pane: This is the file you should edit to customize your settings."]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:["Look for the section named ",(0,s.jsx)(t.code,{children:"beautify.options"}),"."]}),"\n",(0,s.jsx)(t.pre,{children:(0,s.jsx)(t.code,{className:"language-json",children:'{\n "beautify.options": {\n "bracketSameLine": true,\n "printWidth": 120,\n "proseWrap": "preserve",\n "quoteProps": "as-needed",\n "semi": true,\n "singleAttributePerLine": false,\n "singleQuote": false,\n "trailingComma": "none"\n }\n}\n'})}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsx)(t.p,{children:"Modify the options as needed to control aspects like :"}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"bracketSameLine"})," :- This option controls the placement of the closing > bracket in multi-line HTML, JSX, Vue, or Angular elements. When set to ",(0,s.jsx)(t.code,{children:"false"}),", the closing bracket is placed on its own line. Setting this option to ",(0,s.jsx)(t.code,{children:"true"})," positions the closing bracket at the end of the last line, aligning it with the content for a more compact and readable format, but this does not apply to self-closing elements."]}),"\n",(0,s.jsxs)(t.p,{children:["Default value of bracketSameLine is ",(0,s.jsx)(t.em,{children:"True"}),"."]}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(t.p,{children:["When set to ",(0,s.jsx)(t.em,{children:"True"})," :\n",(0,s.jsx)(t.img,{alt:"Bracket Same Line Image",src:n(61749).A+"",title:"bracketSameLine = true",width:"1091",height:"429"})]}),"\n",(0,s.jsxs)(t.p,{children:["When set to ",(0,s.jsx)(t.em,{children:"False"})," :\n",(0,s.jsx)(t.img,{alt:"Bracket Same Line Image",src:n(20228).A+"",title:"bracketSameLine = false",width:"1154",height:"494"})]}),"\n",(0,s.jsx)(t.hr,{}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"printWidth"}),": Sets the maximum line length for code formatting. The beautifier will wrap lines that exceed the number of characters specified by the ",(0,s.jsx)(t.code,{children:"printWidth"})," value."]}),"\n",(0,s.jsxs)(t.p,{children:["Default value of printWidth is ",(0,s.jsx)(t.em,{children:"120"}),"."]}),"\n",(0,s.jsx)(t.hr,{}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"proseWrap"}),": Determines how text in Markdown files is wrapped. The different values of ",(0,s.jsx)(t.code,{children:"proseWrap"})," are :\n",(0,s.jsx)(t.strong,{children:'"always"'}),": Automatically wraps prose to fit within the printWidth, regardless of original formatting.\n",(0,s.jsx)(t.strong,{children:'"never"'}),": Prevents any automatic wrapping, keeping prose as-is even if it exceeds the printWidth.\n",(0,s.jsx)(t.strong,{children:'"preserve"'}),": Maintains the original formatting of prose, wrapping text only where line breaks are already present."]}),"\n",(0,s.jsxs)(t.p,{children:["Default value of proseWrap is ",(0,s.jsx)(t.em,{children:"preserve"}),"."]}),"\n",(0,s.jsx)(t.hr,{}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"quoteProps"}),": Determines when properties in objects should be quoted:\n",(0,s.jsx)(t.strong,{children:'"as-needed"'}),": Quotes properties only when necessary, such as when a property name contains special characters or conflicts with reserved keywords.\n",(0,s.jsx)(t.strong,{children:'"consistent"'}),": Quotes all properties consistently based on the first property's quoting style. If the first property is quoted, all properties will be quoted, and vice versa.\n",(0,s.jsx)(t.strong,{children:'"preserve"'}),": Maintains the existing quoting style of properties, leaving them quoted or unquoted as they are in the original code."]}),"\n",(0,s.jsxs)(t.p,{children:["Default value of quoteProps is ",(0,s.jsx)(t.em,{children:"as-needed"}),"."]}),"\n",(0,s.jsx)(t.hr,{}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"semi"}),": Determines whether to add a semicolon at the end of every statement. When set to ",(0,s.jsx)(t.code,{children:"true"}),", a semicolon is automatically inserted at the end of each statement. If set to ",(0,s.jsx)(t.code,{children:"false"}),", semicolons are omitted."]}),"\n",(0,s.jsxs)(t.p,{children:["Default value of semi is ",(0,s.jsx)(t.em,{children:"true"}),"."]}),"\n",(0,s.jsx)(t.hr,{}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"singleAttributePerLine"}),": Controls whether to enforce placing each attribute on a new line in HTML, Vue, and JSX elements. When set to ",(0,s.jsx)(t.code,{children:"false"}),", multiple attributes can be on the same line. If set to ",(0,s.jsx)(t.code,{children:"true"}),", each attribute will be placed on its own line."]}),"\n",(0,s.jsxs)(t.p,{children:["Default value of singleAttributePerLine is ",(0,s.jsx)(t.em,{children:"false"}),"."]}),"\n",(0,s.jsxs)(t.p,{children:["When set to ",(0,s.jsx)(t.em,{children:"True"})," :\n",(0,s.jsx)(t.img,{alt:"Single Attribute Per Line Image",src:n(66890).A+"",title:"singleAttributePerLine = true",width:"1322",height:"406"})]}),"\n",(0,s.jsxs)(t.p,{children:["When set to ",(0,s.jsx)(t.em,{children:"False"})," :\n",(0,s.jsx)(t.img,{alt:"Single Attribute Per Line Image",src:n(49713).A+"",title:"singleAttributePerLine = false",width:"1595",height:"108"})]}),"\n",(0,s.jsx)(t.hr,{}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"singleQuote"}),": Determines whether to use single quotes instead of double quotes in your code. When set to ",(0,s.jsx)(t.code,{children:"false"}),", double quotes are used for strings. If set to ",(0,s.jsx)(t.code,{children:"true"}),", single quotes are used instead."]}),"\n",(0,s.jsxs)(t.p,{children:["Default value of singleQuote is ",(0,s.jsx)(t.em,{children:"false"}),"."]}),"\n",(0,s.jsxs)(t.p,{children:["When set to ",(0,s.jsx)(t.em,{children:"True"})," :\n",(0,s.jsx)(t.img,{alt:"Single Quote Image",src:n(25522).A+"",title:"singleQuote = true",width:"1353",height:"123"})]}),"\n",(0,s.jsxs)(t.p,{children:["When set to ",(0,s.jsx)(t.em,{children:"False"})," :\n",(0,s.jsx)(t.img,{alt:"Single Quote Image",src:n(16857).A+"",title:"singleQuote = false",width:"1370",height:"129"})]}),"\n",(0,s.jsx)(t.hr,{}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"trailingComma"}),": Controls the use of trailing commas in multi-line comma-separated structures.\n",(0,s.jsx)(t.strong,{children:'"none"'}),": No trailing commas are added.\n",(0,s.jsx)(t.strong,{children:'"es5"'}),": Adds trailing commas where valid in ES5 (e.g., in objects, arrays, etc., but not in function parameters).\n",(0,s.jsx)(t.strong,{children:'"all"'}),": Adds trailing commas in all possible places, including function parameters and imports."]}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"Note"}),": ",(0,s.jsx)(t.code,{children:"All JavaScript environments does not support trailing commas in function parameters, and including them could cause compatibility issues."})]}),"\n",(0,s.jsxs)(t.p,{children:["Default value of trailingComma is ",(0,s.jsx)(t.em,{children:"none"}),"."]}),"\n",(0,s.jsxs)(t.p,{children:["When set to ",(0,s.jsx)(t.em,{children:"none"}),":\n",(0,s.jsx)(t.img,{alt:"Trailing Comma Image",src:n(98680).A+"",title:"trailingComma = none",width:"901",height:"344"})]}),"\n",(0,s.jsxs)(t.p,{children:["When set to ",(0,s.jsx)(t.em,{children:"es5"}),":\n",(0,s.jsx)(t.img,{alt:"Trailing Comma Image",src:n(74097).A+"",title:"trailingComma = es5",width:"967",height:"334"})]}),"\n",(0,s.jsxs)(t.p,{children:["When set to ",(0,s.jsx)(t.em,{children:"all"}),":\n",(0,s.jsx)(t.img,{alt:"Trailing Comma Image",src:n(91909).A+"",title:"trailingComma = all",width:"1550",height:"288"})]}),"\n",(0,s.jsx)(t.hr,{}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(t.h2,{id:"modifying-indentation-with-beautify-code",children:"Modifying Indentation with Beautify Code"}),"\n",(0,s.jsx)(t.p,{children:"To adjust the indentation style or size in your code, use the Spaces/Tabs button in the status bar."}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"Toggle between spaces and tabs"}),": Click on the button to switch between ",(0,s.jsx)(t.code,{children:"spaces"})," or ",(0,s.jsx)(t.code,{children:"tabs"})," for indentation."]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"Adjust the number of spaces or tabs"}),": Click on the value in the status bar beside ",(0,s.jsx)(t.code,{children:"spaces"}),"/",(0,s.jsx)(t.code,{children:"tabs"})," and modify it as required to select your desired indentation size."]}),"\n"]}),"\n",(0,s.jsxs)(t.p,{children:["After you change the indentation style or size, use ",(0,s.jsx)(t.strong,{children:"Beautify Code"})," to reformat the entire file."]}),"\n",(0,s.jsx)(t.h2,{id:"visual-demonstration",children:"Visual Demonstration"}),"\n",(0,s.jsx)(r.A,{src:"https://docs-images.phcode.dev/videos/editing-text/beautify_format.mp4",winLinuxTitle:"Beautify Code: Ctrl + B",macTitle:"Beautify Code: Cmd + B"})]})}function u(e={}){const{wrapper:t}={...(0,o.R)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},56399:(e,t,n)=>{n.d(t,{A:()=>o});var i=n(96540),s=n(74848);const o=({src:e,winLinuxTitle:t,macTitle:n})=>{const[o,r]=(0,i.useState)("");(0,i.useEffect)((()=>{navigator.platform.toLowerCase().includes("mac")?r(n):r(t)}),[t,n]);return(0,s.jsxs)("div",{style:{maxHeight:"68vh",width:"100%",display:"flex",justifyContent:"center",alignItems:"center",flexDirection:"column"},children:[(0,s.jsxs)("video",{style:{height:"90%",width:"100%"},controls:!0,autoPlay:!0,muted:!0,loop:!0,children:[(0,s.jsx)("source",{src:e,type:"video/mp4"}),"Your browser does not support the video tag."]}),(0,s.jsx)("div",{style:{width:"100%",textAlign:"center",fontSize:"1em",marginTop:"10px"},children:o})]})}},23856:(e,t,n)=>{n.d(t,{A:()=>i});const i=n.p+"assets/images/Beautify-Code-after-save-82acb2723da86a54d9302d0874831c2b.png"},15:(e,t,n)=>{n.d(t,{A:()=>i});const i=n.p+"assets/images/Context-Menu-8173aa5d559f358ddc3fd6054581e178.png"},20228:(e,t,n)=>{n.d(t,{A:()=>i});const i=n.p+"assets/images/bracketSameLine-false-5cddd00f353ce49fe53bc4a15e92a4d8.png"},61749:(e,t,n)=>{n.d(t,{A:()=>i});const i=n.p+"assets/images/bracketSameLine-true-49e7c4cffaa9809a9cd50a55cedf707f.png"},49713:(e,t,n)=>{n.d(t,{A:()=>i});const i=n.p+"assets/images/singleAttributePerLine-false-2813438e4f99ec944ceb3f903ba7dd9f.png"},66890:(e,t,n)=>{n.d(t,{A:()=>i});const i=n.p+"assets/images/singleAttributePerLine-true-16ca7e6cae6aa418a6a57e214175630b.png"},16857:(e,t,n)=>{n.d(t,{A:()=>i});const i=n.p+"assets/images/singleQuotes-false-2ebb32c4c58a77cd4ef3e8a9f7c06cf7.png"},25522:(e,t,n)=>{n.d(t,{A:()=>i});const i=n.p+"assets/images/singleQuotes-true-cfa5db909f6d80e807c8b75697db6c45.png"},91909:(e,t,n)=>{n.d(t,{A:()=>i});const i=n.p+"assets/images/trailingComma-all-d7612732831ca0714af8ed936c6aa2fb.png"},74097:(e,t,n)=>{n.d(t,{A:()=>i});const i=n.p+"assets/images/trailingComma-es5-bab95c16817f40598bc90a5d50ae0e2e.png"},98680:(e,t,n)=>{n.d(t,{A:()=>i});const i=n.p+"assets/images/trailingComma-none-8968557a47087024c5a4121896440004.png"},28453:(e,t,n)=>{n.d(t,{R:()=>r,x:()=>a});var i=n(96540);const s={},o=i.createContext(s);function r(e){const t=i.useContext(o);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),i.createElement(o.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/b6bae295.aaa0e22e.js b/assets/js/b6bae295.aaa0e22e.js new file mode 100644 index 00000000..aa3f8aa6 --- /dev/null +++ b/assets/js/b6bae295.aaa0e22e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[711],{84824:t=>{t.exports=JSON.parse('{"tag":{"label":"Stability Improvements","permalink":"/blog/tags/stability-improvements","allTagsPath":"/blog/tags","count":2,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/stability-improvements","page":1,"postsPerPage":10,"totalPages":1,"totalCount":2,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]); \ No newline at end of file diff --git a/assets/js/b7684e33.7ac4bbaf.js b/assets/js/b7684e33.7ac4bbaf.js new file mode 100644 index 00000000..93d61854 --- /dev/null +++ b/assets/js/b7684e33.7ac4bbaf.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4923],{80444:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>i,default:()=>h,frontMatter:()=>d,metadata:()=>r,toc:()=>l});const r=JSON.parse('{"id":"API-Reference/project/WorkingSetSort","title":"WorkingSetSort","description":"Import :","source":"@site/api/API-Reference/project/WorkingSetSort.md","sourceDirName":"API-Reference/project","slug":"/API-Reference/project/WorkingSetSort","permalink":"/api/API-Reference/project/WorkingSetSort","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"SidebarView","permalink":"/api/API-Reference/project/SidebarView"},"next":{"title":"WorkingSetView","permalink":"/api/API-Reference/project/WorkingSetView"}}');var s=t(74848),o=t(28453);const d={},i=void 0,c={},l=[{value:"Import :",id:"import-",level:3},{value:"Sort",id:"sort",level:2},{value:"new Sort(commandID, compareFn, events)",id:"new-sortcommandid-comparefn-events",level:3},{value:"sort.getCommandID() \u21d2 <code>string</code>",id:"sortgetcommandid--string",level:3},{value:"sort.getCompareFn() \u21d2 <code>function</code>",id:"sortgetcomparefn--function",level:3},{value:"sort.getEvents() \u21d2 <code>string</code>",id:"sortgetevents--string",level:3},{value:"sort.setChecked(value)",id:"sortsetcheckedvalue",level:3},{value:"sort.execute()",id:"sortexecute",level:3},{value:"sort.sort()",id:"sortsort",level:3},{value:"Commands",id:"commands",level:2},{value:"get(command) \u21d2 <code>Sort</code>",id:"getcommand--sort",level:2},{value:"getAutomatic() \u21d2 <code>boolean</code>",id:"getautomatic--boolean",level:2},{value:"setAutomatic(enable)",id:"setautomaticenable",level:2},{value:"register(command, compareFn, events) \u21d2 <code>Sort</code>",id:"registercommand-comparefn-events--sort",level:2}];function a(e){const n={a:"a",br:"br",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h3,{id:"import-",children:"Import :"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-js",children:'const WorkingSetSort = brackets.getModule("project/WorkingSetSort")\n'})}),"\n",(0,s.jsx)("a",{name:"Sort"}),"\n",(0,s.jsx)(n.h2,{id:"sort",children:"Sort"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global class"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"#Sort",children:"Sort"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"#new_Sort_new",children:"new Sort(commandID, compareFn, events)"})}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"#Sort+getCommandID",children:".getCommandID()"})," \u21d2 ",(0,s.jsx)("code",{children:"string"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"#Sort+getCompareFn",children:".getCompareFn()"})," \u21d2 ",(0,s.jsx)("code",{children:"function"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"#Sort+getEvents",children:".getEvents()"})," \u21d2 ",(0,s.jsx)("code",{children:"string"})]}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"#Sort+setChecked",children:".setChecked(value)"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"#Sort+execute",children:".execute()"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"#Sort+sort",children:".sort()"})}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)("a",{name:"new_Sort_new"}),"\n",(0,s.jsx)(n.h3,{id:"new-sortcommandid-comparefn-events",children:"new Sort(commandID, compareFn, events)"}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"commandID"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(n.td,{children:"A valid command identifier."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"compareFn"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"function"})}),(0,s.jsx)(n.td,{children:"A valid sort function (see register for a longer explanation)."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"events"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(n.td,{children:'Space-separated WorkingSetSort possible events ending with ".sort".'})]})]})]}),"\n",(0,s.jsx)("a",{name:"Sort+getCommandID"}),"\n",(0,s.jsxs)(n.h3,{id:"sortgetcommandid--string",children:["sort.getCommandID() \u21d2 ",(0,s.jsx)("code",{children:"string"})]}),"\n",(0,s.jsx)(n.p,{children:"The Command ID"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,s.jsx)(n.a,{href:"#Sort",children:(0,s.jsx)("code",{children:"Sort"})})]}),"\n",(0,s.jsx)("a",{name:"Sort+getCompareFn"}),"\n",(0,s.jsxs)(n.h3,{id:"sortgetcomparefn--function",children:["sort.getCompareFn() \u21d2 ",(0,s.jsx)("code",{children:"function"})]}),"\n",(0,s.jsx)(n.p,{children:"The compare function"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,s.jsx)(n.a,{href:"#Sort",children:(0,s.jsx)("code",{children:"Sort"})})]}),"\n",(0,s.jsx)("a",{name:"Sort+getEvents"}),"\n",(0,s.jsxs)(n.h3,{id:"sortgetevents--string",children:["sort.getEvents() \u21d2 ",(0,s.jsx)("code",{children:"string"})]}),"\n",(0,s.jsx)(n.p,{children:"Gets the event that this sort object is listening to"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,s.jsx)(n.a,{href:"#Sort",children:(0,s.jsx)("code",{children:"Sort"})})]}),"\n",(0,s.jsx)("a",{name:"Sort+setChecked"}),"\n",(0,s.jsx)(n.h3,{id:"sortsetcheckedvalue",children:"sort.setChecked(value)"}),"\n",(0,s.jsx)(n.p,{children:"Checks/Unchecks the command which will show a check in the menu"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,s.jsx)(n.a,{href:"#Sort",children:(0,s.jsx)("code",{children:"Sort"})})]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"value"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"boolean"})})]})})]}),"\n",(0,s.jsx)("a",{name:"Sort+execute"}),"\n",(0,s.jsx)(n.h3,{id:"sortexecute",children:"sort.execute()"}),"\n",(0,s.jsx)(n.p,{children:"Performs the sort and makes it the current sort method."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,s.jsx)(n.a,{href:"#Sort",children:(0,s.jsx)("code",{children:"Sort"})})]}),"\n",(0,s.jsx)("a",{name:"Sort+sort"}),"\n",(0,s.jsx)(n.h3,{id:"sortsort",children:"sort.sort()"}),"\n",(0,s.jsx)(n.p,{children:"Only performs the working set sort if this is the current sort."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,s.jsx)(n.a,{href:"#Sort",children:(0,s.jsx)("code",{children:"Sort"})})]}),"\n",(0,s.jsx)("a",{name:"Commands"}),"\n",(0,s.jsx)(n.h2,{id:"commands",children:"Commands"}),"\n",(0,s.jsx)(n.p,{children:"Manages the workingSetList sort methods."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,s.jsx)("a",{name:"get"}),"\n",(0,s.jsxs)(n.h2,{id:"getcommand--sort",children:["get(command) \u21d2 ",(0,s.jsx)(n.a,{href:"#Sort",children:(0,s.jsx)("code",{children:"Sort"})})]}),"\n",(0,s.jsx)(n.p,{children:"Retrieves a Sort object by id"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"command"}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("code",{children:"string"})," | ",(0,s.jsx)("code",{children:"Command"})]}),(0,s.jsx)(n.td,{children:"A command ID or a command object."})]})})]}),"\n",(0,s.jsx)("a",{name:"getAutomatic"}),"\n",(0,s.jsxs)(n.h2,{id:"getautomatic--boolean",children:["getAutomatic() \u21d2 ",(0,s.jsx)("code",{children:"boolean"})]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"boolean"})," - Enabled state of Automatic Sort."]}),"\n",(0,s.jsx)("a",{name:"setAutomatic"}),"\n",(0,s.jsx)(n.h2,{id:"setautomaticenable",children:"setAutomatic(enable)"}),"\n",(0,s.jsx)(n.p,{children:"Enables/Disables Automatic Sort depending on the value."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"enable"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"boolean"})}),(0,s.jsx)(n.td,{children:"True to enable, false to disable."})]})})]}),"\n",(0,s.jsx)("a",{name:"register"}),"\n",(0,s.jsxs)(n.h2,{id:"registercommand-comparefn-events--sort",children:["register(command, compareFn, events) \u21d2 ",(0,s.jsx)(n.a,{href:"#Sort",children:(0,s.jsx)("code",{children:"Sort"})})]}),"\n",(0,s.jsx)(n.p,{children:"Registers a working set sort method."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"command"}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("code",{children:"string"})," | ",(0,s.jsx)("code",{children:"Command"})]}),(0,s.jsx)(n.td,{children:"A command ID or a command object"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"compareFn"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"function"})}),(0,s.jsxs)(n.td,{children:["The function that will be used inside JavaScript's sort function. The return a value should be >0 (sort a to a lower index than b), =0 (leaves a and b unchanged with respect to each other) or < 0 (sort b to a lower index than a) and must always returns the same value when given a specific pair of elements a and b as its two arguments. Documentation at: ",(0,s.jsx)(n.a,{href:"https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/sort",children:"https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/sort"})]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"events"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(n.td,{children:"One or more space-separated event types that DocumentManger uses. Each event passed will trigger the automatic sort. If no events are passed, the automatic sort will be disabled for that sort method."})]})]})]})]})}function h(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(a,{...e})}):a(e)}},28453:(e,n,t)=>{t.d(n,{R:()=>d,x:()=>i});var r=t(96540);const s={},o=r.createContext(s);function d(e){const n=r.useContext(o);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:d(e.components),r.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/b7a3ea93.4bf2f2ca.js b/assets/js/b7a3ea93.4bf2f2ca.js new file mode 100644 index 00000000..7fa8fa91 --- /dev/null +++ b/assets/js/b7a3ea93.4bf2f2ca.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3180],{52807:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>c,contentTitle:()=>l,default:()=>a,frontMatter:()=>r,metadata:()=>d,toc:()=>o});const d=JSON.parse('{"id":"API-Reference/language/HTMLSimpleDOM","title":"HTMLSimpleDOM","description":"Import :","source":"@site/api/API-Reference/language/HTMLSimpleDOM.md","sourceDirName":"API-Reference/language","slug":"/API-Reference/language/HTMLSimpleDOM","permalink":"/api/API-Reference/language/HTMLSimpleDOM","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"HTMLDOMDiff","permalink":"/api/API-Reference/language/HTMLDOMDiff"},"next":{"title":"HTMLUtils","permalink":"/api/API-Reference/language/HTMLUtils"}}');var t=i(74848),s=i(28453);const r={},l=void 0,c={},o=[{value:"Import :",id:"import-",level:3},{value:"SimpleNode",id:"simplenode",level:2},{value:"new SimpleNode(properties)",id:"new-simplenodeproperties",level:3},{value:"simpleNode.update()",id:"simplenodeupdate",level:3},{value:"simpleNode.updateAttributeSignature()",id:"simplenodeupdateattributesignature",level:3},{value:"simpleNode.isElement() \u21d2 <code>bool</code>",id:"simplenodeiselement--bool",level:3},{value:"simpleNode.isText() \u21d2 <code>bool</code>",id:"simplenodeistext--bool",level:3},{value:"Builder",id:"builder",level:2},{value:"new Builder(text, startOffset, startOffsetPos)",id:"new-buildertext-startoffset-startoffsetpos",level:3},{value:"builder.getID \u21d2 <code>int</code>",id:"buildergetid--int",level:3},{value:"builder.build(strict, markCache) \u21d2 <code>SimpleNode</code>",id:"builderbuildstrict-markcache--simplenode",level:3},{value:"builder.getNewID() \u21d2 <code>int</code>",id:"buildergetnewid--int",level:3},{value:"build(text, strict) \u21d2 <code>SimpleNode</code>",id:"buildtext-strict--simplenode",level:2}];function h(e){const n={a:"a",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h3,{id:"import-",children:"Import :"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-js",children:'const HTMLSimpleDOM = brackets.getModule("language/HTMLSimpleDOM")\n'})}),"\n",(0,t.jsx)("a",{name:"SimpleNode"}),"\n",(0,t.jsx)(n.h2,{id:"simplenode",children:"SimpleNode"}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Kind"}),": global class"]}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.a,{href:"#SimpleNode",children:"SimpleNode"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.a,{href:"#new_SimpleNode_new",children:"new SimpleNode(properties)"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.a,{href:"#SimpleNode+update",children:".update()"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.a,{href:"#SimpleNode+updateAttributeSignature",children:".updateAttributeSignature()"})}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.a,{href:"#SimpleNode+isElement",children:".isElement()"})," \u21d2 ",(0,t.jsx)("code",{children:"bool"})]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.a,{href:"#SimpleNode+isText",children:".isText()"})," \u21d2 ",(0,t.jsx)("code",{children:"bool"})]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)("a",{name:"new_SimpleNode_new"}),"\n",(0,t.jsx)(n.h3,{id:"new-simplenodeproperties",children:"new SimpleNode(properties)"}),"\n",(0,t.jsxs)(n.p,{children:["A SimpleNode represents one node in a SimpleDOM tree. Each node can have\nany set of properties on it, though there are a couple of assumptions made.\nElements will have ",(0,t.jsx)(n.code,{children:"children"})," and ",(0,t.jsx)(n.code,{children:"attributes"})," properties. Text nodes will have a ",(0,t.jsx)(n.code,{children:"content"}),"\nproperty. All Elements will have a ",(0,t.jsx)(n.code,{children:"tagID"})," and text nodes ",(0,t.jsx)(n.em,{children:"can"})," have one."]}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Param"}),(0,t.jsx)(n.th,{children:"Type"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsx)(n.tbody,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"properties"}),(0,t.jsx)(n.td,{children:(0,t.jsx)("code",{children:"Object"})}),(0,t.jsx)(n.td,{children:"the properties provided will be set on the new object."})]})})]}),"\n",(0,t.jsx)("a",{name:"SimpleNode+update"}),"\n",(0,t.jsx)(n.h3,{id:"simplenodeupdate",children:"simpleNode.update()"}),"\n",(0,t.jsx)(n.p,{children:"Updates signatures used to optimize the number of comparisons done during\ndiffing. This is important to call if you change:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"children"}),"\n",(0,t.jsx)(n.li,{children:"child node attributes"}),"\n",(0,t.jsx)(n.li,{children:"text content of a text node"}),"\n",(0,t.jsx)(n.li,{children:"child node text"}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,t.jsx)(n.a,{href:"#SimpleNode",children:(0,t.jsx)("code",{children:"SimpleNode"})})]}),"\n",(0,t.jsx)("a",{name:"SimpleNode+updateAttributeSignature"}),"\n",(0,t.jsx)(n.h3,{id:"simplenodeupdateattributesignature",children:"simpleNode.updateAttributeSignature()"}),"\n",(0,t.jsx)(n.p,{children:"Updates the signature of this node's attributes. Call this after making attribute changes."}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,t.jsx)(n.a,{href:"#SimpleNode",children:(0,t.jsx)("code",{children:"SimpleNode"})})]}),"\n",(0,t.jsx)("a",{name:"SimpleNode+isElement"}),"\n",(0,t.jsxs)(n.h3,{id:"simplenodeiselement--bool",children:["simpleNode.isElement() \u21d2 ",(0,t.jsx)("code",{children:"bool"})]}),"\n",(0,t.jsx)(n.p,{children:"Is this node an element node?"}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,t.jsx)(n.a,{href:"#SimpleNode",children:(0,t.jsx)("code",{children:"SimpleNode"})}),(0,t.jsx)(n.br,{}),"\n",(0,t.jsx)(n.strong,{children:"Returns"}),": ",(0,t.jsx)("code",{children:"bool"})," - true if it is an element"]}),"\n",(0,t.jsx)("a",{name:"SimpleNode+isText"}),"\n",(0,t.jsxs)(n.h3,{id:"simplenodeistext--bool",children:["simpleNode.isText() \u21d2 ",(0,t.jsx)("code",{children:"bool"})]}),"\n",(0,t.jsx)(n.p,{children:"Is this node a text node?"}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,t.jsx)(n.a,{href:"#SimpleNode",children:(0,t.jsx)("code",{children:"SimpleNode"})}),(0,t.jsx)(n.br,{}),"\n",(0,t.jsx)(n.strong,{children:"Returns"}),": ",(0,t.jsx)("code",{children:"bool"})," - true if it is text"]}),"\n",(0,t.jsx)("a",{name:"Builder"}),"\n",(0,t.jsx)(n.h2,{id:"builder",children:"Builder"}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Kind"}),": global class"]}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.a,{href:"#Builder",children:"Builder"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.a,{href:"#new_Builder_new",children:"new Builder(text, startOffset, startOffsetPos)"})}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.a,{href:"#Builder+getID",children:".getID"})," \u21d2 ",(0,t.jsx)("code",{children:"int"})]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.a,{href:"#Builder+build",children:".build(strict, markCache)"})," \u21d2 ",(0,t.jsx)(n.a,{href:"#SimpleNode",children:(0,t.jsx)("code",{children:"SimpleNode"})})]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.a,{href:"#Builder+getNewID",children:".getNewID()"})," \u21d2 ",(0,t.jsx)("code",{children:"int"})]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)("a",{name:"new_Builder_new"}),"\n",(0,t.jsx)(n.h3,{id:"new-buildertext-startoffset-startoffsetpos",children:"new Builder(text, startOffset, startOffsetPos)"}),"\n",(0,t.jsx)(n.p,{children:'A Builder creates a SimpleDOM tree of SimpleNode objects representing the\n"important" contents of an HTML document. It does not include things like comments.\nThe nodes include information about their position in the text provided.'}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Param"}),(0,t.jsx)(n.th,{children:"Type"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"text"}),(0,t.jsx)(n.td,{children:(0,t.jsx)("code",{children:"string"})}),(0,t.jsx)(n.td,{children:"The text to parse"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"startOffset"}),(0,t.jsx)(n.td,{children:(0,t.jsx)("code",{children:"int"})}),(0,t.jsx)(n.td,{children:"starting offset in the text"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"startOffsetPos"}),(0,t.jsx)(n.td,{children:(0,t.jsx)("code",{children:"Object"})}),(0,t.jsx)(n.td,{children:"line/ch position in the text"})]})]})]}),"\n",(0,t.jsx)("a",{name:"Builder+getID"}),"\n",(0,t.jsxs)(n.h3,{id:"buildergetid--int",children:["builder.getID \u21d2 ",(0,t.jsx)("code",{children:"int"})]}),"\n",(0,t.jsxs)(n.p,{children:["Returns the best tag ID for the new tag object given.\nThe default implementation just calls ",(0,t.jsx)(n.code,{children:"getNewID"}),"\nand returns a unique ID."]}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Kind"}),": instance property of ",(0,t.jsx)(n.a,{href:"#Builder",children:(0,t.jsx)("code",{children:"Builder"})}),(0,t.jsx)(n.br,{}),"\n",(0,t.jsx)(n.strong,{children:"Returns"}),": ",(0,t.jsx)("code",{children:"int"})," - unique tag ID"]}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Param"}),(0,t.jsx)(n.th,{children:"Type"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsx)(n.tbody,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"newTag"}),(0,t.jsx)(n.td,{children:(0,t.jsx)("code",{children:"Object"})}),(0,t.jsx)(n.td,{children:"tag object to potentially inspect to choose an ID"})]})})]}),"\n",(0,t.jsx)("a",{name:"Builder+build"}),"\n",(0,t.jsxs)(n.h3,{id:"builderbuildstrict-markcache--simplenode",children:["builder.build(strict, markCache) \u21d2 ",(0,t.jsx)(n.a,{href:"#SimpleNode",children:(0,t.jsx)("code",{children:"SimpleNode"})})]}),"\n",(0,t.jsx)(n.p,{children:"Builds the SimpleDOM."}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,t.jsx)(n.a,{href:"#Builder",children:(0,t.jsx)("code",{children:"Builder"})}),(0,t.jsx)(n.br,{}),"\n",(0,t.jsx)(n.strong,{children:"Returns"}),": ",(0,t.jsx)(n.a,{href:"#SimpleNode",children:(0,t.jsx)("code",{children:"SimpleNode"})})," - root of tree or null if parsing failed"]}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Param"}),(0,t.jsx)(n.th,{children:"Type"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"strict"}),(0,t.jsx)(n.td,{children:(0,t.jsx)("code",{children:"bool"})}),(0,t.jsx)(n.td,{children:"if errors are detected, halt and return null"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"markCache"}),(0,t.jsx)(n.td,{children:(0,t.jsx)("code",{children:"Object"})}),(0,t.jsxs)(n.td,{children:["a cache that can be used in ID generation (is passed to ",(0,t.jsx)(n.code,{children:"getID"}),")"]})]})]})]}),"\n",(0,t.jsx)("a",{name:"Builder+getNewID"}),"\n",(0,t.jsxs)(n.h3,{id:"buildergetnewid--int",children:["builder.getNewID() \u21d2 ",(0,t.jsx)("code",{children:"int"})]}),"\n",(0,t.jsx)(n.p,{children:"Returns a new tag ID."}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,t.jsx)(n.a,{href:"#Builder",children:(0,t.jsx)("code",{children:"Builder"})}),(0,t.jsx)(n.br,{}),"\n",(0,t.jsx)(n.strong,{children:"Returns"}),": ",(0,t.jsx)("code",{children:"int"})," - unique tag ID"]}),"\n",(0,t.jsx)("a",{name:"build"}),"\n",(0,t.jsxs)(n.h2,{id:"buildtext-strict--simplenode",children:["build(text, strict) \u21d2 ",(0,t.jsx)(n.a,{href:"#SimpleNode",children:(0,t.jsx)("code",{children:"SimpleNode"})})]}),"\n",(0,t.jsxs)(n.p,{children:["Builds a SimpleDOM from the text provided. If ",(0,t.jsx)(n.code,{children:"strict"})," mode is true, parsing\nwill halt as soon as any error is seen and null will be returned."]}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Kind"}),": global function",(0,t.jsx)(n.br,{}),"\n",(0,t.jsx)(n.strong,{children:"Returns"}),": ",(0,t.jsx)(n.a,{href:"#SimpleNode",children:(0,t.jsx)("code",{children:"SimpleNode"})})," - root of tree or null if strict failed"]}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Param"}),(0,t.jsx)(n.th,{children:"Type"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"text"}),(0,t.jsx)(n.td,{children:(0,t.jsx)("code",{children:"string"})}),(0,t.jsx)(n.td,{children:"Text of document to parse"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"strict"}),(0,t.jsx)(n.td,{children:(0,t.jsx)("code",{children:"bool"})}),(0,t.jsx)(n.td,{children:"True for strict parsing"})]})]})]})]})}function a(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(h,{...e})}):h(e)}},28453:(e,n,i)=>{i.d(n,{R:()=>r,x:()=>l});var d=i(96540);const t={},s=d.createContext(t);function r(e){const n=d.useContext(s);return d.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:r(e.components),d.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/b8206c20.33bb2cba.js b/assets/js/b8206c20.33bb2cba.js new file mode 100644 index 00000000..2bd7c339 --- /dev/null +++ b/assets/js/b8206c20.33bb2cba.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3516],{52084:(e,i,n)=>{n.r(i),n.d(i,{assets:()=>o,contentTitle:()=>l,default:()=>a,frontMatter:()=>d,metadata:()=>s,toc:()=>c});const s=JSON.parse('{"id":"Workspace/customizing-editor","title":"Customizing the Editor","description":"This section provides an overview of the editor appearance and display settings in Phoenix Code.","source":"@site/docs/05-Workspace/03-customizing-editor.md","sourceDirName":"05-Workspace","slug":"/customizing-editor","permalink":"/docs/customizing-editor","draft":false,"unlisted":false,"editUrl":"https://github.com/phcode-dev/docs/blob/main/docs/05-Workspace/03-customizing-editor.md","tags":[],"version":"current","sidebarPosition":3,"frontMatter":{"title":"Customizing the Editor","slug":"/customizing-editor"},"sidebar":"tutorialSidebar","previous":{"title":"Find In Files","permalink":"/docs/Features/find-in-files"},"next":{"title":"Keyboard Shortcuts","permalink":"/docs/Features/keyboard-shortcuts"}}');var t=n(74848),r=n(28453);n(96540),n(56399);const d={title:"Customizing the Editor",slug:"/customizing-editor"},l=void 0,o={},c=[{value:"Themes",id:"themes",level:2},{value:"Switching the Theme",id:"switching-the-theme",level:3},{value:"Use Theme Scrollbars",id:"use-theme-scrollbars",level:3},{value:"Font",id:"font",level:2},{value:"Font Size",id:"font-size",level:3},{value:"Font Family",id:"font-family",level:3},{value:"Line Height",id:"line-height",level:2},{value:"Adjusting Line Height",id:"adjusting-line-height",level:3},{value:"Modifying Line Height via Preferences",id:"modifying-line-height-via-preferences",level:3},{value:"Scroll Sensitivity",id:"scroll-sensitivity",level:2},{value:"Adjusting Scroll Sensitivity",id:"adjusting-scroll-sensitivity",level:3},{value:"Modifying Scroll Sensitivity via Preferences",id:"modifying-scroll-sensitivity-via-preferences",level:3},{value:"Indent Guide Lines",id:"indent-guide-lines",level:2},{value:"Enabling/Disabling Indent Guide Lines",id:"enablingdisabling-indent-guide-lines",level:3},{value:"Editor Preferences for Indent Guides",id:"editor-preferences-for-indent-guides",level:3},{value:"Editor Rulers",id:"editor-rulers",level:2},{value:"Enabling and Disabling Rulers",id:"enabling-and-disabling-rulers",level:3},{value:"Adding Multiple Rulers",id:"adding-multiple-rulers",level:3},{value:"Configuration Options",id:"configuration-options",level:4},{value:"Q: How do I add different rulers for each project?",id:"q-how-do-i-add-different-rulers-for-each-project",level:4},{value:"No-Distractions Mode",id:"no-distractions-mode",level:2},{value:"Activating No-Distractions Mode",id:"activating-no-distractions-mode",level:3},{value:"<strong>Using Editor Interface</strong> :",id:"using-editor-interface-",level:4},{value:"<strong>Using Keyboard</strong> :",id:"using-keyboard-",level:4}];function h(e){const i={a:"a",admonition:"admonition",blockquote:"blockquote",code:"code",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,r.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(i.p,{children:["This section provides an overview of the editor appearance and display settings in ",(0,t.jsx)(i.strong,{children:"Phoenix Code"}),"."]}),"\n",(0,t.jsx)(i.h2,{id:"themes",children:"Themes"}),"\n",(0,t.jsx)(i.p,{children:"Phoenix Code ships with two built-in themes:"}),"\n",(0,t.jsxs)(i.ul,{children:["\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.strong,{children:"Phoenix Dark Neo"}),": default dark theme"]}),"\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.strong,{children:"Phoenix Light Neo"}),": default light theme"]}),"\n"]}),"\n",(0,t.jsxs)(i.p,{children:["You can install more themes, create your own, or remove themes you have installed, see ",(0,t.jsx)(i.a,{href:"./extensions",children:"Extensions"}),"."]}),"\n",(0,t.jsx)(i.h3,{id:"switching-the-theme",children:"Switching the Theme"}),"\n",(0,t.jsxs)(i.p,{children:["Open ",(0,t.jsx)(i.code,{children:"View > Themes..."})," and pick a theme from the ",(0,t.jsx)(i.strong,{children:"Current Theme"})," dropdown. The change applies immediately."]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"Current Theme and Use Theme Scrollbars in the Themes Settings dialog",src:n(85639).A+"",title:"View > Themes...: pick a theme and toggle theme scrollbars",width:"658",height:"474"})}),"\n",(0,t.jsxs)(i.p,{children:["Click ",(0,t.jsx)(i.strong,{children:"Get More..."})," to browse community themes. See ",(0,t.jsx)(i.a,{href:"./extensions",children:"Extensions"})," for installation steps."]}),"\n",(0,t.jsx)(i.h3,{id:"use-theme-scrollbars",children:"Use Theme Scrollbars"}),"\n",(0,t.jsxs)(i.p,{children:["The ",(0,t.jsx)(i.strong,{children:"Use Theme Scrollbars"})," checkbox controls scrollbar styling."]}),"\n",(0,t.jsxs)(i.ul,{children:["\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.strong,{children:"On"})," (default): scrollbars use colors from the active theme."]}),"\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.strong,{children:"Off"}),": scrollbars use your operating system's default style."]}),"\n"]}),"\n",(0,t.jsx)(i.h2,{id:"font",children:"Font"}),"\n",(0,t.jsxs)(i.p,{children:["Phoenix Code uses ",(0,t.jsx)(i.strong,{children:"SourceCodePro"})," as the default editor font. Change the size and family from ",(0,t.jsx)(i.code,{children:"View > Themes..."}),"."]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"Font Size and Font Family in the Themes Settings dialog",src:n(20373).A+"",title:"Font Size and Font Family fields in View > Themes...",width:"658",height:"474"})}),"\n",(0,t.jsx)(i.h3,{id:"font-size",children:"Font Size"}),"\n",(0,t.jsxs)(i.p,{children:["Type a value into the ",(0,t.jsx)(i.strong,{children:"Font Size"})," field. Accepted units: ",(0,t.jsx)(i.code,{children:"px"})," (1 to 72) or ",(0,t.jsx)(i.code,{children:"em"})," (0.1 to 7.2). Decimals work, e.g. ",(0,t.jsx)(i.code,{children:"12.5px"}),". The default is ",(0,t.jsx)(i.code,{children:"12px"}),"."]}),"\n",(0,t.jsx)(i.p,{children:"Keyboard shortcuts to resize the editor text:"}),"\n",(0,t.jsxs)(i.table,{children:[(0,t.jsx)(i.thead,{children:(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.th,{children:"Action"}),(0,t.jsx)(i.th,{children:"Windows / Linux"}),(0,t.jsx)(i.th,{children:"macOS"})]})}),(0,t.jsxs)(i.tbody,{children:[(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.td,{children:"Increase font size"}),(0,t.jsx)(i.td,{children:(0,t.jsx)(i.code,{children:"Ctrl + Shift + +"})}),(0,t.jsx)(i.td,{children:(0,t.jsx)(i.code,{children:"Cmd + Shift + +"})})]}),(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.td,{children:"Decrease font size"}),(0,t.jsx)(i.td,{children:(0,t.jsx)(i.code,{children:"Ctrl + Shift + -"})}),(0,t.jsx)(i.td,{children:(0,t.jsx)(i.code,{children:"Cmd + Shift + -"})})]}),(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.td,{children:"Restore default"}),(0,t.jsx)(i.td,{children:(0,t.jsx)(i.code,{children:"Ctrl + Shift + ("})}),(0,t.jsx)(i.td,{children:(0,t.jsx)(i.code,{children:"Cmd + Shift + ("})})]})]})]}),"\n",(0,t.jsxs)(i.admonition,{type:"note",children:[(0,t.jsx)(i.p,{children:"The shortcuts above change only the editor text size. To zoom the entire interface at once, use these:"}),(0,t.jsxs)(i.table,{children:[(0,t.jsx)(i.thead,{children:(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.th,{children:"Action"}),(0,t.jsx)(i.th,{children:"Windows / Linux"}),(0,t.jsx)(i.th,{children:"macOS"})]})}),(0,t.jsxs)(i.tbody,{children:[(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.td,{children:"Zoom in"}),(0,t.jsx)(i.td,{children:(0,t.jsx)(i.code,{children:"Ctrl + +"})}),(0,t.jsx)(i.td,{children:(0,t.jsx)(i.code,{children:"Cmd + +"})})]}),(0,t.jsxs)(i.tr,{children:[(0,t.jsx)(i.td,{children:"Zoom out"}),(0,t.jsx)(i.td,{children:(0,t.jsx)(i.code,{children:"Ctrl + -"})}),(0,t.jsx)(i.td,{children:(0,t.jsx)(i.code,{children:"Cmd + -"})})]})]})]}),(0,t.jsxs)(i.p,{children:["The current zoom level is shown next to ",(0,t.jsx)(i.strong,{children:"Zoom In"})," under ",(0,t.jsx)(i.code,{children:"View > Zoom UI and Fonts"}),"."]})]}),"\n",(0,t.jsx)(i.h3,{id:"font-family",children:"Font Family"}),"\n",(0,t.jsxs)(i.p,{children:["Type a CSS ",(0,t.jsx)(i.code,{children:"font-family"})," string into the ",(0,t.jsx)(i.strong,{children:"Font Family"})," field. The first available font in the list is used:"]}),"\n",(0,t.jsx)(i.pre,{children:(0,t.jsx)(i.code,{children:"'Fira Code', 'JetBrains Mono', monospace\n"})}),"\n",(0,t.jsx)(i.p,{children:"Wrap names containing spaces in single quotes."}),"\n",(0,t.jsxs)(i.blockquote,{children:["\n",(0,t.jsxs)(i.p,{children:["The font must be installed on your system. Phoenix Code only bundles ",(0,t.jsx)(i.code,{children:"SourceCodePro"})," (the default)."]}),"\n"]}),"\n",(0,t.jsx)(i.h2,{id:"line-height",children:"Line Height"}),"\n",(0,t.jsxs)(i.p,{children:["The ",(0,t.jsx)(i.strong,{children:"Line Height"})," feature lets you customize the vertical spacing between lines of text in the editor."]}),"\n",(0,t.jsx)(i.h3,{id:"adjusting-line-height",children:"Adjusting Line Height"}),"\n",(0,t.jsx)(i.p,{children:"To adjust line height:"}),"\n",(0,t.jsxs)(i.ol,{children:["\n",(0,t.jsxs)(i.li,{children:["Click on ",(0,t.jsx)(i.code,{children:"View"})," in the menu bar."]}),"\n",(0,t.jsxs)(i.li,{children:["Navigate to the ",(0,t.jsx)(i.code,{children:"Themes..."})," option."]}),"\n",(0,t.jsx)(i.li,{children:"Use the Line Height slider to set a value between 1 and 3. The default is 1.5."}),"\n"]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"Line Height slider in Themes Settings",src:n(12870).A+"",title:"Go to View > Themes... to adjust line height",width:"658",height:"474"})}),"\n",(0,t.jsx)(i.p,{children:"Adjustments apply instantly, updating the editor dynamically."}),"\n",(0,t.jsx)(i.h3,{id:"modifying-line-height-via-preferences",children:"Modifying Line Height via Preferences"}),"\n",(0,t.jsxs)(i.p,{children:["You can also modify the line height by updating the ",(0,t.jsx)(i.code,{children:"themes.editorLineHeight"})," property in the preferences file. ",(0,t.jsx)(i.a,{href:"./editing-text#editing-preferences",children:"Click Here"})," to read on how to edit the preferences."]}),"\n",(0,t.jsx)(i.h2,{id:"scroll-sensitivity",children:"Scroll Sensitivity"}),"\n",(0,t.jsxs)(i.p,{children:[(0,t.jsx)(i.strong,{children:"Scroll Sensitivity"})," sets a multiplier for mouse-wheel scroll speed in the editor. Increase it if scrolling feels too slow, decrease it if scrolling feels too fast."]}),"\n",(0,t.jsx)(i.h3,{id:"adjusting-scroll-sensitivity",children:"Adjusting Scroll Sensitivity"}),"\n",(0,t.jsxs)(i.ol,{children:["\n",(0,t.jsxs)(i.li,{children:["Click ",(0,t.jsx)(i.code,{children:"View"})," in the menu bar."]}),"\n",(0,t.jsxs)(i.li,{children:["Select ",(0,t.jsx)(i.code,{children:"Themes..."}),"."]}),"\n",(0,t.jsxs)(i.li,{children:["Use the ",(0,t.jsx)(i.strong,{children:"Scroll Sensitivity"})," slider to set a value between ",(0,t.jsx)(i.code,{children:"0.1"})," and ",(0,t.jsx)(i.code,{children:"10"}),". The default is ",(0,t.jsx)(i.code,{children:"1"})," (normal speed)."]}),"\n"]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"Scroll Sensitivity slider in Themes Settings",src:n(22439).A+"",title:"Go to View > Themes... to adjust scroll sensitivity",width:"658",height:"474"})}),"\n",(0,t.jsx)(i.p,{children:"The new value applies immediately."}),"\n",(0,t.jsx)(i.h3,{id:"modifying-scroll-sensitivity-via-preferences",children:"Modifying Scroll Sensitivity via Preferences"}),"\n",(0,t.jsxs)(i.p,{children:["Set the ",(0,t.jsx)(i.code,{children:"mouseWheelScrollSensitivity"})," property in the preferences file. Accepts any number from ",(0,t.jsx)(i.code,{children:"0.1"})," to ",(0,t.jsx)(i.code,{children:"10"}),". ",(0,t.jsx)(i.a,{href:"./editing-text#editing-preferences",children:"Click Here"})," to read on how to edit the preferences."]}),"\n",(0,t.jsx)(i.h2,{id:"indent-guide-lines",children:"Indent Guide Lines"}),"\n",(0,t.jsxs)(i.p,{children:[(0,t.jsx)(i.img,{alt:"Indent Guide Lines Image",src:n(36612).A+"",title:"The vertical lines are Indent Guide Lines",width:"1337",height:"682"}),"\n",(0,t.jsx)(i.strong,{children:"Indent Guide Lines"})," are vertical lines that help visually align code blocks and indicate indentation levels. They assist in understanding code hierarchy and nested structures, improving overall readability."]}),"\n",(0,t.jsx)(i.h3,{id:"enablingdisabling-indent-guide-lines",children:"Enabling/Disabling Indent Guide Lines"}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"Indent Guide Lines Enable Image",src:n(77511).A+"",title:"Click on View menu and toggle Indent Guide Lines option",width:"839",height:"671"})}),"\n",(0,t.jsxs)(i.p,{children:["To enable or disable Indent Guide Lines, go to ",(0,t.jsx)(i.code,{children:"View > Indent Guide Lines"}),"."]}),"\n",(0,t.jsx)(i.h3,{id:"editor-preferences-for-indent-guides",children:"Editor Preferences for Indent Guides"}),"\n",(0,t.jsx)(i.p,{children:"You can customize indent guide behavior in the editor preferences with the following options:"}),"\n",(0,t.jsxs)(i.p,{children:[(0,t.jsx)(i.a,{href:"./editing-text#editing-preferences",children:"Click here"})," to read on how to edit the preferences."]}),"\n",(0,t.jsxs)(i.p,{children:[(0,t.jsx)(i.strong,{children:"editor.indentGuides"}),": Set to ",(0,t.jsx)(i.code,{children:"true"})," to display indent guide lines; set to ",(0,t.jsx)(i.code,{children:"false"})," to hide them.\n",(0,t.jsx)(i.strong,{children:"editor.indentHideFirst"}),": Set to ",(0,t.jsx)(i.code,{children:"true"})," to hide the first indent guide line; set to ",(0,t.jsx)(i.code,{children:"false"})," to display it."]}),"\n",(0,t.jsx)(i.h2,{id:"editor-rulers",children:"Editor Rulers"}),"\n",(0,t.jsx)(i.p,{children:"Add vertical column rulers to the editor to keep track of line lengths. By\ndefault, a single ruler is set at the 120-character position."}),"\n",(0,t.jsx)(i.h3,{id:"enabling-and-disabling-rulers",children:"Enabling and Disabling Rulers"}),"\n",(0,t.jsxs)(i.p,{children:["Toggle the visibility of rulers through the ",(0,t.jsx)(i.code,{children:"View > Rulers"})," menu option."]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{src:"https://github.com/phcode-dev/phoenix/assets/5336369/bb68fafa-395c-4da6-8aa2-a617918286ce",alt:"Screenshot from 2024-04-27 12-42-50"})}),"\n",(0,t.jsx)(i.h3,{id:"adding-multiple-rulers",children:"Adding Multiple Rulers"}),"\n",(0,t.jsxs)(i.p,{children:["To add multiple rulers, edit the preferences file. ",(0,t.jsx)(i.a,{href:"./editing-text#editing-preferences",children:"Click Here"})," to read on how to edit the preferences."]}),"\n",(0,t.jsx)(i.p,{children:"Add the following entries to the JSON configuration:"}),"\n",(0,t.jsx)(i.pre,{children:(0,t.jsx)(i.code,{className:"language-js",children:'{\n // existing json items\n "editor.rulers": [40, 80],\n "editor.rulerColors": ["green", "#f34d5a"],\n}\n'})}),"\n",(0,t.jsx)(i.p,{children:"These settings introduce two rulers at the 40th and 80th character positions,\ncolored green and red respectively."}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{src:"https://github.com/phcode-dev/phoenix/assets/5336369/71b8b04c-d2ca-47b8-84bb-53cd0fb4593c",alt:"image"})}),"\n",(0,t.jsx)(i.h4,{id:"configuration-options",children:"Configuration Options"}),"\n",(0,t.jsxs)(i.ol,{children:["\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.code,{children:"editor.rulers"})," : Specifies an array of column numbers where vertical rulers\nwill appear."]}),"\n",(0,t.jsxs)(i.li,{children:[(0,t.jsx)(i.code,{children:"editor.rulerColors"})," : An optional array to set colors for each ruler,\ncorresponding to the positions listed in ",(0,t.jsx)(i.code,{children:"editor.rulers"}),"."]}),"\n"]}),"\n",(0,t.jsx)(i.h4,{id:"q-how-do-i-add-different-rulers-for-each-project",children:"Q: How do I add different rulers for each project?"}),"\n",(0,t.jsxs)(i.p,{children:["To set up different rulers for individual projects, create a ",(0,t.jsx)(i.code,{children:".phcode.json"})," file\nin the root directory of each project. Include the same ruler configurations as\nshown in the example above."]}),"\n",(0,t.jsx)(i.h2,{id:"no-distractions-mode",children:"No-Distractions Mode"}),"\n",(0,t.jsxs)(i.p,{children:[(0,t.jsx)(i.strong,{children:"No-Distractions Mode"})," helps you focus by minimizing visual clutter and hiding non-essential interface elements, creating a clean, minimalist editing environment."]}),"\n",(0,t.jsx)(i.h3,{id:"activating-no-distractions-mode",children:"Activating No-Distractions Mode"}),"\n",(0,t.jsxs)(i.h4,{id:"using-editor-interface-",children:[(0,t.jsx)(i.strong,{children:"Using Editor Interface"})," :"]}),"\n",(0,t.jsxs)(i.p,{children:["Toggle between ",(0,t.jsx)(i.code,{children:"No-Distractions"})," Mode and ",(0,t.jsx)(i.code,{children:"Normal"})," Mode through ",(0,t.jsx)(i.code,{children:"View > Menu"})," option."]}),"\n",(0,t.jsx)(i.p,{children:(0,t.jsx)(i.img,{alt:"No Distractions Mode Image",src:n(48246).A+"",title:"Click on View tab in menu bar and select No Distractions",width:"753",height:"517"})}),"\n",(0,t.jsxs)(i.h4,{id:"using-keyboard-",children:[(0,t.jsx)(i.strong,{children:"Using Keyboard"})," :"]}),"\n",(0,t.jsxs)(i.p,{children:["Press ",(0,t.jsx)(i.code,{children:"Shift + F11"})," to toggle between ",(0,t.jsx)(i.code,{children:"No-Distractions"})," Mode and ",(0,t.jsx)(i.code,{children:"Normal"})," Mode."]})]})}function a(e={}){const{wrapper:i}={...(0,r.R)(),...e.components};return i?(0,t.jsx)(i,{...e,children:(0,t.jsx)(h,{...e})}):h(e)}},56399:(e,i,n)=>{n.d(i,{A:()=>r});var s=n(96540),t=n(74848);const r=({src:e,winLinuxTitle:i,macTitle:n})=>{const[r,d]=(0,s.useState)("");(0,s.useEffect)((()=>{navigator.platform.toLowerCase().includes("mac")?d(n):d(i)}),[i,n]);return(0,t.jsxs)("div",{style:{maxHeight:"68vh",width:"100%",display:"flex",justifyContent:"center",alignItems:"center",flexDirection:"column"},children:[(0,t.jsxs)("video",{style:{height:"90%",width:"100%"},controls:!0,autoPlay:!0,muted:!0,loop:!0,children:[(0,t.jsx)("source",{src:e,type:"video/mp4"}),"Your browser does not support the video tag."]}),(0,t.jsx)("div",{style:{width:"100%",textAlign:"center",fontSize:"1em",marginTop:"10px"},children:r})]})}},36612:(e,i,n)=>{n.d(i,{A:()=>s});const s=n.p+"assets/images/indent-display-6b6313994236e9d96a00e1c77684d83a.png"},77511:(e,i,n)=>{n.d(i,{A:()=>s});const s=n.p+"assets/images/indent-lines-70d9e82eca5f62913c73453579959fb3.png"},48246:(e,i,n)=>{n.d(i,{A:()=>s});const s=n.p+"assets/images/no-distractions-55a29450d30f7cd7c911ef741ee35278.png"},20373:(e,i,n)=>{n.d(i,{A:()=>s});const s=n.p+"assets/images/themes-settings-font-c1bd03068320c72db68189255677bc3e.png"},12870:(e,i,n)=>{n.d(i,{A:()=>s});const s=n.p+"assets/images/themes-settings-line-height-19fc715ce5632a4fcb08ebcd78598900.png"},22439:(e,i,n)=>{n.d(i,{A:()=>s});const s=n.p+"assets/images/themes-settings-scroll-sensitivity-c79a1bcf395d79dc3c603733ce5e8279.png"},85639:(e,i,n)=>{n.d(i,{A:()=>s});const s=n.p+"assets/images/themes-settings-theme-36806d853065f560f3336d8d64b3462c.png"},28453:(e,i,n)=>{n.d(i,{R:()=>d,x:()=>l});var s=n(96540);const t={},r=s.createContext(t);function d(e){const i=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function l(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:d(e.components),s.createElement(r.Provider,{value:i},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/b9a5b618.ab385020.js b/assets/js/b9a5b618.ab385020.js new file mode 100644 index 00000000..ecdbcb13 --- /dev/null +++ b/assets/js/b9a5b618.ab385020.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4581],{51110:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>l,contentTitle:()=>d,default:()=>h,frontMatter:()=>s,metadata:()=>a,toc:()=>c});const a=JSON.parse('{"id":"API-Reference/view/ViewStateManager","title":"ViewStateManager","description":"Import :","source":"@site/api/API-Reference/view/ViewStateManager.md","sourceDirName":"API-Reference/view","slug":"/API-Reference/view/ViewStateManager","permalink":"/api/API-Reference/view/ViewStateManager","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"ViewCommandHandlers","permalink":"/api/API-Reference/view/ViewCommandHandlers"},"next":{"title":"WorkspaceManager","permalink":"/api/API-Reference/view/WorkspaceManager"}}');var n=i(74848),r=i(28453);const s={},d=void 0,l={},c=[{value:"Import :",id:"import-",level:3},{value:"view/ViewStateManager",id:"viewviewstatemanager",level:2},{value:"view/ViewStateManager.reset()",id:"viewviewstatemanagerreset",level:3},{value:"view/ViewStateManager.updateViewState(view, viewState)",id:"viewviewstatemanagerupdateviewstateview-viewstate",level:3},{value:"view/ViewStateManager.getViewState(file) \u21d2 <code>*</code>",id:"viewviewstatemanagergetviewstatefile--",level:3},{value:"view/ViewStateManager.addViewStates(viewStates)",id:"viewviewstatemanageraddviewstatesviewstates",level:3}];function w(e){const t={a:"a",br:"br",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,r.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(t.h3,{id:"import-",children:"Import :"}),"\n",(0,n.jsx)(t.pre,{children:(0,n.jsx)(t.code,{className:"language-js",children:'const ViewStateManager = brackets.getModule("view/ViewStateManager")\n'})}),"\n",(0,n.jsx)("a",{name:"module_view/ViewStateManager"}),"\n",(0,n.jsx)(t.h2,{id:"viewviewstatemanager",children:"view/ViewStateManager"}),"\n",(0,n.jsx)(t.p,{children:"ViewStateManager is a singleton for views to park their global viwe state. The state is saved\nwith project data but the View or View Factory is responsible for restoring the view state\nwhen the view is created."}),"\n",(0,n.jsxs)(t.p,{children:["Views should implement ",(0,n.jsx)(t.code,{children:"getViewState()"})," so that the view state can be saved and that data is cached\nfor later use."]}),"\n",(0,n.jsx)(t.p,{children:"Views or View Factories are responsible for restoring the view state when the view of that file is created\nby recalling the cached state. Views determine what data is store in the view state and how to restore it."}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.a,{href:"#module_view/ViewStateManager",children:"view/ViewStateManager"}),"\n",(0,n.jsxs)(t.ul,{children:["\n",(0,n.jsx)(t.li,{children:(0,n.jsx)(t.a,{href:"#module_view/ViewStateManager..reset",children:".reset()"})}),"\n",(0,n.jsx)(t.li,{children:(0,n.jsx)(t.a,{href:"#module_view/ViewStateManager..updateViewState",children:".updateViewState(view, viewState)"})}),"\n",(0,n.jsxs)(t.li,{children:[(0,n.jsx)(t.a,{href:"#module_view/ViewStateManager..getViewState",children:".getViewState(file)"})," \u21d2 ",(0,n.jsx)("code",{children:"*"})]}),"\n",(0,n.jsx)(t.li,{children:(0,n.jsx)(t.a,{href:"#module_view/ViewStateManager..addViewStates",children:".addViewStates(viewStates)"})}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,n.jsx)("a",{name:"module_view/ViewStateManager..reset"}),"\n",(0,n.jsx)(t.h3,{id:"viewviewstatemanagerreset",children:"view/ViewStateManager.reset()"}),"\n",(0,n.jsx)(t.p,{children:"resets the view state cache"}),"\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"Kind"}),": inner method of ",(0,n.jsx)(t.a,{href:"#module_view/ViewStateManager",children:(0,n.jsx)("code",{children:"view/ViewStateManager"})})]}),"\n",(0,n.jsx)("a",{name:"module_view/ViewStateManager..updateViewState"}),"\n",(0,n.jsx)(t.h3,{id:"viewviewstatemanagerupdateviewstateview-viewstate",children:"view/ViewStateManager.updateViewState(view, viewState)"}),"\n",(0,n.jsx)(t.p,{children:"Updates the view state for the specified view"}),"\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"Kind"}),": inner method of ",(0,n.jsx)(t.a,{href:"#module_view/ViewStateManager",children:(0,n.jsx)("code",{children:"view/ViewStateManager"})})]}),"\n",(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Param"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsxs)(t.tbody,{children:[(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"view"}),(0,n.jsx)(t.td,{children:(0,n.jsx)("code",{children:"Object"})}),(0,n.jsx)(t.td,{children:"the to save state"})]}),(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"viewState"}),(0,n.jsx)(t.td,{children:(0,n.jsx)("code",{children:"*"})}),(0,n.jsx)(t.td,{children:"any data that the view needs to restore the view state."})]})]})]}),"\n",(0,n.jsx)("a",{name:"module_view/ViewStateManager..getViewState"}),"\n",(0,n.jsxs)(t.h3,{id:"viewviewstatemanagergetviewstatefile--",children:["view/ViewStateManager.getViewState(file) \u21d2 ",(0,n.jsx)("code",{children:"*"})]}),"\n",(0,n.jsx)(t.p,{children:"gets the view state for the specified file"}),"\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"Kind"}),": inner method of ",(0,n.jsx)(t.a,{href:"#module_view/ViewStateManager",children:(0,n.jsx)("code",{children:"view/ViewStateManager"})}),(0,n.jsx)(t.br,{}),"\n",(0,n.jsx)(t.strong,{children:"Returns"}),": ",(0,n.jsx)("code",{children:"*"})," - whatever data that was saved earlier with a call setViewState"]}),"\n",(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Param"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsx)(t.tbody,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"file"}),(0,n.jsx)(t.td,{children:(0,n.jsx)("code",{children:"File"})}),(0,n.jsx)(t.td,{children:"the file to record the view state for"})]})})]}),"\n",(0,n.jsx)("a",{name:"module_view/ViewStateManager..addViewStates"}),"\n",(0,n.jsx)(t.h3,{id:"viewviewstatemanageraddviewstatesviewstates",children:"view/ViewStateManager.addViewStates(viewStates)"}),"\n",(0,n.jsx)(t.p,{children:"adds an array of view states"}),"\n",(0,n.jsxs)(t.p,{children:[(0,n.jsx)(t.strong,{children:"Kind"}),": inner method of ",(0,n.jsx)(t.a,{href:"#module_view/ViewStateManager",children:(0,n.jsx)("code",{children:"view/ViewStateManager"})})]}),"\n",(0,n.jsxs)(t.table,{children:[(0,n.jsx)(t.thead,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.th,{children:"Param"}),(0,n.jsx)(t.th,{children:"Type"}),(0,n.jsx)(t.th,{children:"Description"})]})}),(0,n.jsx)(t.tbody,{children:(0,n.jsxs)(t.tr,{children:[(0,n.jsx)(t.td,{children:"viewStates"}),(0,n.jsx)(t.td,{children:(0,n.jsx)("code",{children:"object.<string, *>"})}),(0,n.jsx)(t.td,{children:"View State object to append to the current set of view states"})]})})]})]})}function h(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(w,{...e})}):w(e)}},28453:(e,t,i)=>{i.d(t,{R:()=>s,x:()=>d});var a=i(96540);const n={},r=a.createContext(n);function s(e){const t=a.useContext(r);return a.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function d(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:s(e.components),a.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/b9e6ac85.a0140763.js b/assets/js/b9e6ac85.a0140763.js new file mode 100644 index 00000000..b4f0ce4b --- /dev/null +++ b/assets/js/b9e6ac85.a0140763.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[524],{21990:(e,l,i)=>{i.r(l),i.d(l,{assets:()=>d,contentTitle:()=>c,default:()=>o,frontMatter:()=>r,metadata:()=>t,toc:()=>h});const t=JSON.parse('{"id":"API-Reference/filesystem/RemoteFile","title":"RemoteFile","description":"Import :","source":"@site/api/API-Reference/filesystem/RemoteFile.md","sourceDirName":"API-Reference/filesystem","slug":"/API-Reference/filesystem/RemoteFile","permalink":"/api/API-Reference/filesystem/RemoteFile","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"FileSystemStats","permalink":"/api/API-Reference/filesystem/FileSystemStats"},"next":{"title":"WatchedRoot","permalink":"/api/API-Reference/filesystem/WatchedRoot"}}');var n=i(74848),s=i(28453);const r={},c=void 0,d={},h=[{value:"Import :",id:"import-",level:3},{value:"RemoteFile",id:"remotefile",level:2},{value:"new RemoteFile(fullPath, fileSystem)",id:"new-remotefilefullpath-filesystem",level:3},{value:"remoteFile.toString()",id:"remotefiletostring",level:3},{value:"remoteFile.stat(callback)",id:"remotefilestatcallback",level:3},{value:"remoteFile.read([options], callback)",id:"remotefilereadoptions-callback",level:3},{value:"remoteFile.write(data, [options], [callback])",id:"remotefilewritedata-options-callback",level:3},{value:"remoteFile.exists(callback)",id:"remotefileexistscallback",level:3},{value:"remoteFile.unlink(callback)",id:"remotefileunlinkcallback",level:3},{value:"remoteFile.rename(callback)",id:"remotefilerenamecallback",level:3},{value:"remoteFile.moveToTrash(callback)",id:"remotefilemovetotrashcallback",level:3}];function a(e){const l={a:"a",code:"code",em:"em",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(l.h3,{id:"import-",children:"Import :"}),"\n",(0,n.jsx)(l.pre,{children:(0,n.jsx)(l.code,{className:"language-js",children:'const RemoteFile = brackets.getModule("filesystem/RemoteFile")\n'})}),"\n",(0,n.jsx)("a",{name:"RemoteFile"}),"\n",(0,n.jsx)(l.h2,{id:"remotefile",children:"RemoteFile"}),"\n",(0,n.jsxs)(l.p,{children:[(0,n.jsx)(l.strong,{children:"Kind"}),": global class"]}),"\n",(0,n.jsxs)(l.ul,{children:["\n",(0,n.jsxs)(l.li,{children:[(0,n.jsx)(l.a,{href:"#RemoteFile",children:"RemoteFile"}),"\n",(0,n.jsxs)(l.ul,{children:["\n",(0,n.jsx)(l.li,{children:(0,n.jsx)(l.a,{href:"#new_RemoteFile_new",children:"new RemoteFile(fullPath, fileSystem)"})}),"\n",(0,n.jsx)(l.li,{children:(0,n.jsx)(l.a,{href:"#RemoteFile+toString",children:".toString()"})}),"\n",(0,n.jsx)(l.li,{children:(0,n.jsx)(l.a,{href:"#RemoteFile+stat",children:".stat(callback)"})}),"\n",(0,n.jsx)(l.li,{children:(0,n.jsx)(l.a,{href:"#RemoteFile+read",children:".read([options], callback)"})}),"\n",(0,n.jsx)(l.li,{children:(0,n.jsx)(l.a,{href:"#RemoteFile+write",children:".write(data, [options], [callback])"})}),"\n",(0,n.jsx)(l.li,{children:(0,n.jsx)(l.a,{href:"#RemoteFile+exists",children:".exists(callback)"})}),"\n",(0,n.jsx)(l.li,{children:(0,n.jsx)(l.a,{href:"#RemoteFile+unlink",children:".unlink(callback)"})}),"\n",(0,n.jsx)(l.li,{children:(0,n.jsx)(l.a,{href:"#RemoteFile+rename",children:".rename(callback)"})}),"\n",(0,n.jsx)(l.li,{children:(0,n.jsx)(l.a,{href:"#RemoteFile+moveToTrash",children:".moveToTrash(callback)"})}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,n.jsx)("a",{name:"new_RemoteFile_new"}),"\n",(0,n.jsx)(l.h3,{id:"new-remotefilefullpath-filesystem",children:"new RemoteFile(fullPath, fileSystem)"}),"\n",(0,n.jsx)(l.p,{children:"Model for a RemoteFile."}),"\n",(0,n.jsxs)(l.p,{children:["This class should ",(0,n.jsx)(l.em,{children:"not"})," be instantiated directly. Use FileSystem.getFileForPath"]}),"\n",(0,n.jsx)(l.p,{children:"See the FileSystem class for more details."}),"\n",(0,n.jsxs)(l.table,{children:[(0,n.jsx)(l.thead,{children:(0,n.jsxs)(l.tr,{children:[(0,n.jsx)(l.th,{children:"Param"}),(0,n.jsx)(l.th,{children:"Type"}),(0,n.jsx)(l.th,{children:"Description"})]})}),(0,n.jsxs)(l.tbody,{children:[(0,n.jsxs)(l.tr,{children:[(0,n.jsx)(l.td,{children:"fullPath"}),(0,n.jsx)(l.td,{children:(0,n.jsx)("code",{children:"string"})}),(0,n.jsx)(l.td,{children:"The full path for this File."})]}),(0,n.jsxs)(l.tr,{children:[(0,n.jsx)(l.td,{children:"fileSystem"}),(0,n.jsx)(l.td,{children:(0,n.jsx)("code",{children:"FileSystem"})}),(0,n.jsx)(l.td,{children:"The file system associated with this File."})]})]})]}),"\n",(0,n.jsx)("a",{name:"RemoteFile+toString"}),"\n",(0,n.jsx)(l.h3,{id:"remotefiletostring",children:"remoteFile.toString()"}),"\n",(0,n.jsx)(l.p,{children:"Helpful toString for debugging and equality check purposes"}),"\n",(0,n.jsxs)(l.p,{children:[(0,n.jsx)(l.strong,{children:"Kind"}),": instance method of ",(0,n.jsx)(l.a,{href:"#RemoteFile",children:(0,n.jsx)("code",{children:"RemoteFile"})})]}),"\n",(0,n.jsx)("a",{name:"RemoteFile+stat"}),"\n",(0,n.jsx)(l.h3,{id:"remotefilestatcallback",children:"remoteFile.stat(callback)"}),"\n",(0,n.jsx)(l.p,{children:"Returns the stats for the remote entry."}),"\n",(0,n.jsxs)(l.p,{children:[(0,n.jsx)(l.strong,{children:"Kind"}),": instance method of ",(0,n.jsx)(l.a,{href:"#RemoteFile",children:(0,n.jsx)("code",{children:"RemoteFile"})})]}),"\n",(0,n.jsxs)(l.table,{children:[(0,n.jsx)(l.thead,{children:(0,n.jsxs)(l.tr,{children:[(0,n.jsx)(l.th,{children:"Param"}),(0,n.jsx)(l.th,{children:"Type"}),(0,n.jsx)(l.th,{children:"Description"})]})}),(0,n.jsx)(l.tbody,{children:(0,n.jsxs)(l.tr,{children:[(0,n.jsx)(l.td,{children:"callback"}),(0,n.jsx)(l.td,{children:(0,n.jsx)("code",{children:"function"})}),(0,n.jsx)(l.td,{children:"Callback with a FileSystemError string or FileSystemStats object."})]})})]}),"\n",(0,n.jsx)("a",{name:"RemoteFile+read"}),"\n",(0,n.jsx)(l.h3,{id:"remotefilereadoptions-callback",children:"remoteFile.read([options], callback)"}),"\n",(0,n.jsx)(l.p,{children:"Reads a remote file."}),"\n",(0,n.jsxs)(l.p,{children:[(0,n.jsx)(l.strong,{children:"Kind"}),": instance method of ",(0,n.jsx)(l.a,{href:"#RemoteFile",children:(0,n.jsx)("code",{children:"RemoteFile"})})]}),"\n",(0,n.jsxs)(l.table,{children:[(0,n.jsx)(l.thead,{children:(0,n.jsxs)(l.tr,{children:[(0,n.jsx)(l.th,{children:"Param"}),(0,n.jsx)(l.th,{children:"Type"}),(0,n.jsx)(l.th,{children:"Description"})]})}),(0,n.jsxs)(l.tbody,{children:[(0,n.jsxs)(l.tr,{children:[(0,n.jsx)(l.td,{children:"[options]"}),(0,n.jsx)(l.td,{children:(0,n.jsx)("code",{children:"Object"})}),(0,n.jsx)(l.td,{children:"Currently unused."})]}),(0,n.jsxs)(l.tr,{children:[(0,n.jsx)(l.td,{children:"callback"}),(0,n.jsx)(l.td,{children:(0,n.jsx)("code",{children:"function"})}),(0,n.jsx)(l.td,{children:"Callback that is passed the FileSystemError string or the file's contents and its stats."})]})]})]}),"\n",(0,n.jsx)("a",{name:"RemoteFile+write"}),"\n",(0,n.jsx)(l.h3,{id:"remotefilewritedata-options-callback",children:"remoteFile.write(data, [options], [callback])"}),"\n",(0,n.jsx)(l.p,{children:"Write a file."}),"\n",(0,n.jsxs)(l.p,{children:[(0,n.jsx)(l.strong,{children:"Kind"}),": instance method of ",(0,n.jsx)(l.a,{href:"#RemoteFile",children:(0,n.jsx)("code",{children:"RemoteFile"})})]}),"\n",(0,n.jsxs)(l.table,{children:[(0,n.jsx)(l.thead,{children:(0,n.jsxs)(l.tr,{children:[(0,n.jsx)(l.th,{children:"Param"}),(0,n.jsx)(l.th,{children:"Type"}),(0,n.jsx)(l.th,{children:"Description"})]})}),(0,n.jsxs)(l.tbody,{children:[(0,n.jsxs)(l.tr,{children:[(0,n.jsx)(l.td,{children:"data"}),(0,n.jsx)(l.td,{children:(0,n.jsx)("code",{children:"string"})}),(0,n.jsx)(l.td,{children:"Data to write."})]}),(0,n.jsxs)(l.tr,{children:[(0,n.jsx)(l.td,{children:"[options]"}),(0,n.jsx)(l.td,{children:(0,n.jsx)("code",{children:"object"})}),(0,n.jsx)(l.td,{children:"Currently unused."})]}),(0,n.jsxs)(l.tr,{children:[(0,n.jsx)(l.td,{children:"[callback]"}),(0,n.jsx)(l.td,{children:(0,n.jsx)("code",{children:"function"})}),(0,n.jsx)(l.td,{children:"Callback that is passed the FileSystemError string or the file's new stats."})]})]})]}),"\n",(0,n.jsx)("a",{name:"RemoteFile+exists"}),"\n",(0,n.jsx)(l.h3,{id:"remotefileexistscallback",children:"remoteFile.exists(callback)"}),"\n",(0,n.jsx)(l.p,{children:"Check if the remote file exists or not"}),"\n",(0,n.jsxs)(l.p,{children:[(0,n.jsx)(l.strong,{children:"Kind"}),": instance method of ",(0,n.jsx)(l.a,{href:"#RemoteFile",children:(0,n.jsx)("code",{children:"RemoteFile"})})]}),"\n",(0,n.jsxs)(l.table,{children:[(0,n.jsx)(l.thead,{children:(0,n.jsxs)(l.tr,{children:[(0,n.jsx)(l.th,{children:"Param"}),(0,n.jsx)(l.th,{children:"Type"})]})}),(0,n.jsx)(l.tbody,{children:(0,n.jsxs)(l.tr,{children:[(0,n.jsx)(l.td,{children:"callback"}),(0,n.jsx)(l.td,{children:(0,n.jsx)("code",{children:"function"})})]})})]}),"\n",(0,n.jsx)("a",{name:"RemoteFile+unlink"}),"\n",(0,n.jsx)(l.h3,{id:"remotefileunlinkcallback",children:"remoteFile.unlink(callback)"}),"\n",(0,n.jsx)(l.p,{children:"Unlink the remote file"}),"\n",(0,n.jsxs)(l.p,{children:[(0,n.jsx)(l.strong,{children:"Kind"}),": instance method of ",(0,n.jsx)(l.a,{href:"#RemoteFile",children:(0,n.jsx)("code",{children:"RemoteFile"})})]}),"\n",(0,n.jsxs)(l.table,{children:[(0,n.jsx)(l.thead,{children:(0,n.jsxs)(l.tr,{children:[(0,n.jsx)(l.th,{children:"Param"}),(0,n.jsx)(l.th,{children:"Type"})]})}),(0,n.jsx)(l.tbody,{children:(0,n.jsxs)(l.tr,{children:[(0,n.jsx)(l.td,{children:"callback"}),(0,n.jsx)(l.td,{children:(0,n.jsx)("code",{children:"function"})})]})})]}),"\n",(0,n.jsx)("a",{name:"RemoteFile+rename"}),"\n",(0,n.jsx)(l.h3,{id:"remotefilerenamecallback",children:"remoteFile.rename(callback)"}),"\n",(0,n.jsx)(l.p,{children:"Rename the remote file"}),"\n",(0,n.jsxs)(l.p,{children:[(0,n.jsx)(l.strong,{children:"Kind"}),": instance method of ",(0,n.jsx)(l.a,{href:"#RemoteFile",children:(0,n.jsx)("code",{children:"RemoteFile"})})]}),"\n",(0,n.jsxs)(l.table,{children:[(0,n.jsx)(l.thead,{children:(0,n.jsxs)(l.tr,{children:[(0,n.jsx)(l.th,{children:"Param"}),(0,n.jsx)(l.th,{children:"Type"})]})}),(0,n.jsx)(l.tbody,{children:(0,n.jsxs)(l.tr,{children:[(0,n.jsx)(l.td,{children:"callback"}),(0,n.jsx)(l.td,{children:(0,n.jsx)("code",{children:"function"})})]})})]}),"\n",(0,n.jsx)("a",{name:"RemoteFile+moveToTrash"}),"\n",(0,n.jsx)(l.h3,{id:"remotefilemovetotrashcallback",children:"remoteFile.moveToTrash(callback)"}),"\n",(0,n.jsx)(l.p,{children:"Move the remote file to trash"}),"\n",(0,n.jsxs)(l.p,{children:[(0,n.jsx)(l.strong,{children:"Kind"}),": instance method of ",(0,n.jsx)(l.a,{href:"#RemoteFile",children:(0,n.jsx)("code",{children:"RemoteFile"})})]}),"\n",(0,n.jsxs)(l.table,{children:[(0,n.jsx)(l.thead,{children:(0,n.jsxs)(l.tr,{children:[(0,n.jsx)(l.th,{children:"Param"}),(0,n.jsx)(l.th,{children:"Type"})]})}),(0,n.jsx)(l.tbody,{children:(0,n.jsxs)(l.tr,{children:[(0,n.jsx)(l.td,{children:"callback"}),(0,n.jsx)(l.td,{children:(0,n.jsx)("code",{children:"function"})})]})})]})]})}function o(e={}){const{wrapper:l}={...(0,s.R)(),...e.components};return l?(0,n.jsx)(l,{...e,children:(0,n.jsx)(a,{...e})}):a(e)}},28453:(e,l,i)=>{i.d(l,{R:()=>r,x:()=>c});var t=i(96540);const n={},s=t.createContext(n);function r(e){const l=t.useContext(s);return t.useMemo((function(){return"function"==typeof e?e(l):{...l,...e}}),[l,e])}function c(e){let l;return l=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:r(e.components),t.createElement(s.Provider,{value:l},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/b9f21073.654926c8.js b/assets/js/b9f21073.654926c8.js new file mode 100644 index 00000000..6aca7550 --- /dev/null +++ b/assets/js/b9f21073.654926c8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7197],{82331:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>h,contentTitle:()=>a,default:()=>o,frontMatter:()=>c,metadata:()=>n,toc:()=>i});const n=JSON.parse('{"id":"API-Reference/search/SearchResultsView","title":"SearchResultsView","description":"Import :","source":"@site/api/API-Reference/search/SearchResultsView.md","sourceDirName":"API-Reference/search","slug":"/API-Reference/search/SearchResultsView","permalink":"/api/API-Reference/search/SearchResultsView","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"SearchModel","permalink":"/api/API-Reference/search/SearchModel"},"next":{"title":"AppInit","permalink":"/api/API-Reference/utils/AppInit"}}');var r=s(74848),l=s(28453);const c={},a=void 0,h={},i=[{value:"Import :",id:"import-",level:3},{value:"Handles the search results panel.",id:"handles-the-search-results-panel",level:2},{value:"new Handles the search results panel.",id:"new-handles-the-search-results-panel",level:3}];function d(e){const t={code:"code",h2:"h2",h3:"h3",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,l.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.h3,{id:"import-",children:"Import :"}),"\n",(0,r.jsx)(t.pre,{children:(0,r.jsx)(t.code,{className:"language-js",children:'const SearchResultsView = brackets.getModule("search/SearchResultsView")\n'})}),"\n",(0,r.jsx)("a",{name:"Handles the search results panel.\nDispatches the following events_\nreplaceBatch - when the Replace button is clicked.\nclose - when the panel is closed."}),"\n",(0,r.jsx)(t.h2,{id:"handles-the-search-results-panel",children:"Handles the search results panel."}),"\n",(0,r.jsxs)(t.p,{children:["Dispatches the following events:\nreplaceBatch - when the Replace button is clicked.\nclose - when the panel is closed.\n",(0,r.jsx)(t.strong,{children:"Kind"}),": global class"]}),"\n",(0,r.jsx)("a",{name:"new_Handles the search results panel.\nDispatches the following events_\nreplaceBatch - when the Replace button is clicked.\nclose - when the panel is closed._new"}),"\n",(0,r.jsx)(t.h3,{id:"new-handles-the-search-results-panel",children:"new Handles the search results panel."}),"\n",(0,r.jsx)(t.p,{children:"Dispatches the following events:\nreplaceBatch - when the Replace button is clicked.\nclose - when the panel is closed.(model, panelID, panelName, type, [title])"}),"\n",(0,r.jsxs)(t.table,{children:[(0,r.jsx)(t.thead,{children:(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.th,{children:"Param"}),(0,r.jsx)(t.th,{children:"Type"}),(0,r.jsx)(t.th,{children:"Description"})]})}),(0,r.jsxs)(t.tbody,{children:[(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"model"}),(0,r.jsx)(t.td,{children:(0,r.jsx)("code",{children:"SearchModel"})}),(0,r.jsx)(t.td,{children:"The model that this view is showing."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"panelID"}),(0,r.jsx)(t.td,{children:(0,r.jsx)("code",{children:"string"})}),(0,r.jsx)(t.td,{children:"The CSS ID to use for the panel."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"panelName"}),(0,r.jsx)(t.td,{children:(0,r.jsx)("code",{children:"string"})}),(0,r.jsx)(t.td,{children:"The name to use for the panel, as passed to WorkspaceManager.createBottomPanel()."})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"type"}),(0,r.jsx)(t.td,{children:(0,r.jsx)("code",{children:"string"})}),(0,r.jsx)(t.td,{children:"type to identify if it is reference search or string match serach"})]}),(0,r.jsxs)(t.tr,{children:[(0,r.jsx)(t.td,{children:"[title]"}),(0,r.jsx)(t.td,{children:(0,r.jsx)("code",{children:"string"})}),(0,r.jsx)(t.td,{children:"Display title for the panel tab."})]})]})]})]})}function o(e={}){const{wrapper:t}={...(0,l.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},28453:(e,t,s)=>{s.d(t,{R:()=>c,x:()=>a});var n=s(96540);const r={},l=n.createContext(r);function c(e){const t=n.useContext(l);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:c(e.components),n.createElement(l.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/bbcda5d1.2227c33b.js b/assets/js/bbcda5d1.2227c33b.js new file mode 100644 index 00000000..62c478d3 --- /dev/null +++ b/assets/js/bbcda5d1.2227c33b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2585],{45239:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>a,default:()=>m,frontMatter:()=>r,metadata:()=>s,toc:()=>c});const s=JSON.parse('{"id":"Editing & Code/emmet","title":"Emmet","description":"Emmet helps you quickly expand shorthand abbreviations into full code blocks. When you type an Emmet-compatible abbreviation, Phoenix Code displays a code hint with the abbreviation text and a small Emmet icon on the right, indicating that the hint comes from Emmet. Selecting the hint expands it into a complete code snippet.","source":"@site/docs/04-Editing & Code/05-emmet.md","sourceDirName":"04-Editing & Code","slug":"/Features/emmet","permalink":"/docs/Features/emmet","draft":false,"unlisted":false,"editUrl":"https://github.com/phcode-dev/docs/blob/main/docs/04-Editing & Code/05-emmet.md","tags":[],"version":"current","sidebarPosition":5,"frontMatter":{"title":"Emmet","slug":"/Features/emmet"},"sidebar":"tutorialSidebar","previous":{"title":"Syntax Highlighting","permalink":"/docs/Features/syntax-highlighting"},"next":{"title":"Custom Snippets","permalink":"/docs/Features/custom-snippets"}}');var i=n(74848),l=n(28453),o=(n(96540),n(56399));const r={title:"Emmet",slug:"/Features/emmet"},a=void 0,d={},c=[{value:"Emmet in Markup Languages",id:"emmet-in-markup-languages",level:3},{value:"Emmet in Stylesheet Languages",id:"emmet-in-stylesheet-languages",level:3},{value:"Enabling/Disabling Emmet",id:"enablingdisabling-emmet",level:3},{value:"FAQ",id:"faq",level:2},{value:"Q. What happens if I try to expand a very large abbreviation?",id:"q-what-happens-if-i-try-to-expand-a-very-large-abbreviation",level:4}];function h(e){const t={a:"a",blockquote:"blockquote",code:"code",h2:"h2",h3:"h3",h4:"h4",img:"img",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,l.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.strong,{children:"Emmet"})," helps you quickly expand shorthand abbreviations into full code blocks. When you type an Emmet-compatible abbreviation, ",(0,i.jsx)(t.strong,{children:"Phoenix Code"})," displays a code hint with the abbreviation text and a small ",(0,i.jsx)(t.code,{children:"Emmet"})," icon on the right, indicating that the hint comes from Emmet. Selecting the hint expands it into a complete code snippet."]}),"\n",(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.strong,{children:"Phoenix Code"})," includes smart cursor positioning. After expanding an Emmet abbreviation, it automatically places the cursor at the most relevant position so you can start typing immediately. It also adjusts the indentation of the expanded code automatically."]}),"\n",(0,i.jsxs)(t.blockquote,{children:["\n",(0,i.jsxs)(t.p,{children:["See the ",(0,i.jsx)(t.a,{href:"https://docs.emmet.io/cheat-sheet/",children:"complete Emmet abbreviations cheat sheet"}),"."]}),"\n"]}),"\n",(0,i.jsx)(t.h3,{id:"emmet-in-markup-languages",children:"Emmet in Markup Languages"}),"\n",(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.strong,{children:"Emmet"})," works in ",(0,i.jsx)(t.strong,{children:"HTML"}),", ",(0,i.jsx)(t.strong,{children:"PHP"})," or HTML-like files such as ",(0,i.jsx)(t.strong,{children:"JSP"}),".\n",(0,i.jsx)(t.strong,{children:"Examples:"})]}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:["\n",(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.code,{children:"ul>li*2"})," expands to:"]}),"\n",(0,i.jsx)(t.pre,{children:(0,i.jsx)(t.code,{className:"language-html",children:"<ul>\n <li></li>\n <li></li>\n</ul>\n"})}),"\n"]}),"\n",(0,i.jsxs)(t.li,{children:["\n",(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.code,{children:"!"})," expands to:"]}),"\n",(0,i.jsx)(t.pre,{children:(0,i.jsx)(t.code,{className:"language-html",children:'<!DOCTYPE html>\n<html lang="en">\n<head>\n <meta charset="UTF-8">\n <meta name="viewport" content="width=device-width, initial-scale=1.0">\n <title>Document\n\n\n\n\n\n'})}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(t.blockquote,{children:["\n",(0,i.jsxs)(t.p,{children:["Refer to ",(0,i.jsx)(t.a,{href:"https://docs.emmet.io/abbreviations/",children:"this link"})," to read more about Emmet abbreviations for markup languages."]}),"\n"]}),"\n",(0,i.jsx)(t.p,{children:(0,i.jsx)(t.strong,{children:"Visual Reference"})}),"\n",(0,i.jsx)(o.A,{src:"https://docs-images.phcode.dev/videos/editing-text/emmet-html.mp4"}),"\n",(0,i.jsx)(t.h3,{id:"emmet-in-stylesheet-languages",children:"Emmet in Stylesheet Languages"}),"\n",(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.strong,{children:"Emmet"})," also works in stylesheets (",(0,i.jsx)(t.strong,{children:"CSS"}),", ",(0,i.jsx)(t.strong,{children:"SCSS"}),", ",(0,i.jsx)(t.strong,{children:"Less"}),"). In stylesheets, the Emmet icon acts as a clickable link that opens the corresponding MDN documentation for that property (if available).\n",(0,i.jsx)(t.img,{alt:"Emmet MDN link",src:n(64477).A+"",title:"Emmet MDN link",width:"1478",height:"629"})]}),"\n",(0,i.jsx)(t.p,{children:(0,i.jsx)(t.strong,{children:"Examples:"})}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:["\n",(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.code,{children:"bgc"})," expands to:"]}),"\n",(0,i.jsx)(t.pre,{children:(0,i.jsx)(t.code,{className:"language-css",children:"background-color:\n"})}),"\n"]}),"\n",(0,i.jsxs)(t.li,{children:["\n",(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.code,{children:"mt10"})," expands to:"]}),"\n",(0,i.jsx)(t.pre,{children:(0,i.jsx)(t.code,{className:"language-css",children:"margin-top: 10px;\n"})}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(t.blockquote,{children:["\n",(0,i.jsxs)(t.p,{children:["Refer to ",(0,i.jsx)(t.a,{href:"https://docs.emmet.io/css-abbreviations/",children:"this link"})," to read more about Emmet abbreviations for stylesheets."]}),"\n"]}),"\n",(0,i.jsx)(t.p,{children:(0,i.jsx)(t.strong,{children:"Visual Reference"})}),"\n",(0,i.jsx)(o.A,{src:"https://docs-images.phcode.dev/videos/editing-text/emmet-css.mp4"}),"\n",(0,i.jsx)(t.h3,{id:"enablingdisabling-emmet",children:"Enabling/Disabling Emmet"}),"\n",(0,i.jsxs)(t.p,{children:["To enable or disable the ",(0,i.jsx)(t.strong,{children:"Emmet"})," feature, go to ",(0,i.jsx)(t.code,{children:"Edit"})," > ",(0,i.jsx)(t.code,{children:"Emmet"}),"."]}),"\n",(0,i.jsx)(t.p,{children:(0,i.jsx)(t.img,{alt:"Toggle Emmet feature",src:n(35635).A+"",title:"Toggle Emmet",width:"821",height:"737"})}),"\n",(0,i.jsxs)(t.p,{children:["You can also toggle Emmet by updating the ",(0,i.jsx)(t.code,{children:"emmet"})," property in the preferences file.\nSee ",(0,i.jsx)(t.a,{href:"../editing-text#editing-preferences",children:"Editing Preferences"})," for more details."]}),"\n",(0,i.jsx)(t.h2,{id:"faq",children:"FAQ"}),"\n",(0,i.jsx)(t.h4,{id:"q-what-happens-if-i-try-to-expand-a-very-large-abbreviation",children:"Q. What happens if I try to expand a very large abbreviation?"}),"\n",(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.strong,{children:"Phoenix Code"})," supports large Emmet expansions but applies limits to keep the app stable."]}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:["\n",(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.strong,{children:"Maximum repeat count:"})," 400\nExample: ",(0,i.jsx)(t.code,{children:"ul>li*10000"})," creates at most ",(0,i.jsx)(t.strong,{children:"400"})," ",(0,i.jsx)(t.code,{children:"li"})," elements."]}),"\n"]}),"\n",(0,i.jsxs)(t.li,{children:["\n",(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.strong,{children:"Maximum word expansion:"})," 100,000 words\nExample: ",(0,i.jsx)(t.strong,{children:"Phoenix Code"})," sets a limit of ",(0,i.jsx)(t.strong,{children:"100,000"})," words. The hint will not appear if the abbreviation exceeds this limit. ",(0,i.jsx)(t.code,{children:"lorem100000"})," works but ",(0,i.jsx)(t.code,{children:"lorem100001"})," does not."]}),"\n"]}),"\n"]})]})}function m(e={}){const{wrapper:t}={...(0,l.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(h,{...e})}):h(e)}},56399:(e,t,n)=>{n.d(t,{A:()=>l});var s=n(96540),i=n(74848);const l=({src:e,winLinuxTitle:t,macTitle:n})=>{const[l,o]=(0,s.useState)("");(0,s.useEffect)((()=>{navigator.platform.toLowerCase().includes("mac")?o(n):o(t)}),[t,n]);return(0,i.jsxs)("div",{style:{maxHeight:"68vh",width:"100%",display:"flex",justifyContent:"center",alignItems:"center",flexDirection:"column"},children:[(0,i.jsxs)("video",{style:{height:"90%",width:"100%"},controls:!0,autoPlay:!0,muted:!0,loop:!0,children:[(0,i.jsx)("source",{src:e,type:"video/mp4"}),"Your browser does not support the video tag."]}),(0,i.jsx)("div",{style:{width:"100%",textAlign:"center",fontSize:"1em",marginTop:"10px"},children:l})]})}},64477:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/emmet-link-mdn-7dad55e620c8c0f3fd8de43f852418d8.png"},35635:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/toggle-emmet-9566153c219ead2bc651fb62d58853f6.png"},28453:(e,t,n)=>{n.d(t,{R:()=>o,x:()=>r});var s=n(96540);const i={},l=s.createContext(i);function o(e){const t=s.useContext(l);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function r(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:o(e.components),s.createElement(l.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/bcb9d12b.97aa0bb9.js b/assets/js/bcb9d12b.97aa0bb9.js new file mode 100644 index 00000000..17589a74 --- /dev/null +++ b/assets/js/bcb9d12b.97aa0bb9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9696],{75155:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>d,contentTitle:()=>c,default:()=>o,frontMatter:()=>l,metadata:()=>n,toc:()=>h});const n=JSON.parse('{"id":"API-Reference/filesystem/FileSystemEntry","title":"FileSystemEntry","description":"Import :","source":"@site/api/API-Reference/filesystem/FileSystemEntry.md","sourceDirName":"API-Reference/filesystem","slug":"/API-Reference/filesystem/FileSystemEntry","permalink":"/api/API-Reference/filesystem/FileSystemEntry","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"FileIndex","permalink":"/api/API-Reference/filesystem/FileIndex"},"next":{"title":"FileSystemError","permalink":"/api/API-Reference/filesystem/FileSystemError"}}');var i=s(74848),r=s(28453);const l={},c=void 0,d={},h=[{value:"Import :",id:"import-",level:3},{value:"FileSystemEntry",id:"filesystementry",level:2},{value:"new FileSystemEntry(path, fileSystem)",id:"new-filesystementrypath-filesystem",level:3},{value:"fileSystemEntry.toString()",id:"filesystementrytostring",level:3},{value:"fileSystemEntry.exists(callback)",id:"filesystementryexistscallback",level:3},{value:"fileSystemEntry.existsAsync()",id:"filesystementryexistsasync",level:3},{value:"fileSystemEntry.stat(callback)",id:"filesystementrystatcallback",level:3},{value:"fileSystemEntry.statAsync() \u21d2 Promise.<FileSystemStats>",id:"filesystementrystatasync--promisefilesystemstats",level:3},{value:"fileSystemEntry.rename(newFullPath, [callback])",id:"filesystementryrenamenewfullpath-callback",level:3},{value:"fileSystemEntry.unlinkAsync() \u21d2 Promise.<void>",id:"filesystementryunlinkasync--promisevoid",level:3},{value:"fileSystemEntry.unlink([callback])",id:"filesystementryunlinkcallback",level:3},{value:"fileSystemEntry.moveToTrash([callback])",id:"filesystementrymovetotrashcallback",level:3},{value:"fileSystemEntry.visit(visitor, [options], [callback])",id:"filesystementryvisitvisitor-options-callback",level:3}];function a(e){const t={a:"a",br:"br",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.h3,{id:"import-",children:"Import :"}),"\n",(0,i.jsx)(t.pre,{children:(0,i.jsx)(t.code,{className:"language-js",children:'const FileSystemEntry = brackets.getModule("filesystem/FileSystemEntry")\n'})}),"\n",(0,i.jsx)("a",{name:"FileSystemEntry"}),"\n",(0,i.jsx)(t.h2,{id:"filesystementry",children:"FileSystemEntry"}),"\n",(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.strong,{children:"Kind"}),": global class"]}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.a,{href:"#FileSystemEntry",children:"FileSystemEntry"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"#new_FileSystemEntry_new",children:"new FileSystemEntry(path, fileSystem)"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"#FileSystemEntry+toString",children:".toString()"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"#FileSystemEntry+exists",children:".exists(callback)"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"#FileSystemEntry+existsAsync",children:".existsAsync()"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"#FileSystemEntry+stat",children:".stat(callback)"})}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.a,{href:"#FileSystemEntry+statAsync",children:".statAsync()"})," \u21d2 ",(0,i.jsx)("code",{children:"Promise."})]}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"#FileSystemEntry+rename",children:".rename(newFullPath, [callback])"})}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.a,{href:"#FileSystemEntry+unlinkAsync",children:".unlinkAsync()"})," \u21d2 ",(0,i.jsx)("code",{children:"Promise."})]}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"#FileSystemEntry+unlink",children:".unlink([callback])"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"#FileSystemEntry+moveToTrash",children:".moveToTrash([callback])"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"#FileSystemEntry+visit",children:".visit(visitor, [options], [callback])"})}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)("a",{name:"new_FileSystemEntry_new"}),"\n",(0,i.jsx)(t.h3,{id:"new-filesystementrypath-filesystem",children:"new FileSystemEntry(path, fileSystem)"}),"\n",(0,i.jsx)(t.p,{children:"Model for a file system entry. This is the base class for File and Directory,\nand is never used directly."}),"\n",(0,i.jsx)(t.p,{children:"See the File, Directory, and FileSystem classes for more details."}),"\n",(0,i.jsxs)(t.table,{children:[(0,i.jsx)(t.thead,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.th,{children:"Param"}),(0,i.jsx)(t.th,{children:"Type"}),(0,i.jsx)(t.th,{children:"Description"})]})}),(0,i.jsxs)(t.tbody,{children:[(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"path"}),(0,i.jsx)(t.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(t.td,{children:"The path for this entry."})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"fileSystem"}),(0,i.jsx)(t.td,{children:(0,i.jsx)("code",{children:"FileSystem"})}),(0,i.jsx)(t.td,{children:"The file system associated with this entry."})]})]})]}),"\n",(0,i.jsx)("a",{name:"FileSystemEntry+toString"}),"\n",(0,i.jsx)(t.h3,{id:"filesystementrytostring",children:"fileSystemEntry.toString()"}),"\n",(0,i.jsx)(t.p,{children:"Helpful toString for debugging purposes"}),"\n",(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(t.a,{href:"#FileSystemEntry",children:(0,i.jsx)("code",{children:"FileSystemEntry"})})]}),"\n",(0,i.jsx)("a",{name:"FileSystemEntry+exists"}),"\n",(0,i.jsx)(t.h3,{id:"filesystementryexistscallback",children:"fileSystemEntry.exists(callback)"}),"\n",(0,i.jsx)(t.p,{children:"Check to see if the entry exists on disk. Note that there will NOT be an\nerror returned if the file does not exist on the disk; in that case the\nerror parameter will be null and the boolean will be false. The error\nparameter will only be truthy when an unexpected error was encountered\nduring the test, in which case the state of the entry should be considered\nunknown."}),"\n",(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(t.a,{href:"#FileSystemEntry",children:(0,i.jsx)("code",{children:"FileSystemEntry"})})]}),"\n",(0,i.jsxs)(t.table,{children:[(0,i.jsx)(t.thead,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.th,{children:"Param"}),(0,i.jsx)(t.th,{children:"Type"}),(0,i.jsx)(t.th,{children:"Description"})]})}),(0,i.jsx)(t.tbody,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"callback"}),(0,i.jsx)(t.td,{children:(0,i.jsx)("code",{children:"function"})}),(0,i.jsx)(t.td,{children:"Callback with a FileSystemError string or a boolean indicating whether or not the file exists."})]})})]}),"\n",(0,i.jsx)("a",{name:"FileSystemEntry+existsAsync"}),"\n",(0,i.jsx)(t.h3,{id:"filesystementryexistsasync",children:"fileSystemEntry.existsAsync()"}),"\n",(0,i.jsx)(t.p,{children:"Async version of exists API. Returns true or false if the entry exists. or error rejects."}),"\n",(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(t.a,{href:"#FileSystemEntry",children:(0,i.jsx)("code",{children:"FileSystemEntry"})})]}),"\n",(0,i.jsx)("a",{name:"FileSystemEntry+stat"}),"\n",(0,i.jsx)(t.h3,{id:"filesystementrystatcallback",children:"fileSystemEntry.stat(callback)"}),"\n",(0,i.jsx)(t.p,{children:"Returns the stats for the entry."}),"\n",(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(t.a,{href:"#FileSystemEntry",children:(0,i.jsx)("code",{children:"FileSystemEntry"})})]}),"\n",(0,i.jsxs)(t.table,{children:[(0,i.jsx)(t.thead,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.th,{children:"Param"}),(0,i.jsx)(t.th,{children:"Type"}),(0,i.jsx)(t.th,{children:"Description"})]})}),(0,i.jsx)(t.tbody,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"callback"}),(0,i.jsx)(t.td,{children:(0,i.jsx)("code",{children:"function"})}),(0,i.jsx)(t.td,{children:"Callback with a FileSystemError string or FileSystemStats object."})]})})]}),"\n",(0,i.jsx)("a",{name:"FileSystemEntry+statAsync"}),"\n",(0,i.jsxs)(t.h3,{id:"filesystementrystatasync--promisefilesystemstats",children:["fileSystemEntry.statAsync() \u21d2 ",(0,i.jsx)("code",{children:"Promise."})]}),"\n",(0,i.jsx)(t.p,{children:"Returns a promise that resolves to the stats for the entry."}),"\n",(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(t.a,{href:"#FileSystemEntry",children:(0,i.jsx)("code",{children:"FileSystemEntry"})})]}),"\n",(0,i.jsx)("a",{name:"FileSystemEntry+rename"}),"\n",(0,i.jsx)(t.h3,{id:"filesystementryrenamenewfullpath-callback",children:"fileSystemEntry.rename(newFullPath, [callback])"}),"\n",(0,i.jsx)(t.p,{children:"Rename this entry."}),"\n",(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(t.a,{href:"#FileSystemEntry",children:(0,i.jsx)("code",{children:"FileSystemEntry"})})]}),"\n",(0,i.jsxs)(t.table,{children:[(0,i.jsx)(t.thead,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.th,{children:"Param"}),(0,i.jsx)(t.th,{children:"Type"}),(0,i.jsx)(t.th,{children:"Description"})]})}),(0,i.jsxs)(t.tbody,{children:[(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"newFullPath"}),(0,i.jsx)(t.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(t.td,{children:"New path & name for this entry."})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"[callback]"}),(0,i.jsx)(t.td,{children:(0,i.jsx)("code",{children:"function"})}),(0,i.jsx)(t.td,{children:"Callback with a single FileSystemError string parameter."})]})]})]}),"\n",(0,i.jsx)("a",{name:"FileSystemEntry+unlinkAsync"}),"\n",(0,i.jsxs)(t.h3,{id:"filesystementryunlinkasync--promisevoid",children:["fileSystemEntry.unlinkAsync() \u21d2 ",(0,i.jsx)("code",{children:"Promise."})]}),"\n",(0,i.jsxs)(t.p,{children:["Permanently deletes this entry. For directories, this will delete the directory\nand all of its contents. For a reversible delete, see ",(0,i.jsx)(t.code,{children:"moveToTrash()"}),"."]}),"\n",(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(t.a,{href:"#FileSystemEntry",children:(0,i.jsx)("code",{children:"FileSystemEntry"})}),(0,i.jsx)(t.br,{}),"\n",(0,i.jsx)(t.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"Promise."})," - A promise that resolves when the delete is successful or rejects with an error."]}),"\n",(0,i.jsx)("a",{name:"FileSystemEntry+unlink"}),"\n",(0,i.jsx)(t.h3,{id:"filesystementryunlinkcallback",children:"fileSystemEntry.unlink([callback])"}),"\n",(0,i.jsx)(t.p,{children:"Permanently delete this entry. For Directories, this will delete the directory\nand all of its contents. For reversible delete, see moveToTrash()."}),"\n",(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(t.a,{href:"#FileSystemEntry",children:(0,i.jsx)("code",{children:"FileSystemEntry"})})]}),"\n",(0,i.jsxs)(t.table,{children:[(0,i.jsx)(t.thead,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.th,{children:"Param"}),(0,i.jsx)(t.th,{children:"Type"}),(0,i.jsx)(t.th,{children:"Description"})]})}),(0,i.jsx)(t.tbody,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"[callback]"}),(0,i.jsx)(t.td,{children:(0,i.jsx)("code",{children:"function"})}),(0,i.jsx)(t.td,{children:"Callback with a single FileSystemError string parameter."})]})})]}),"\n",(0,i.jsx)("a",{name:"FileSystemEntry+moveToTrash"}),"\n",(0,i.jsx)(t.h3,{id:"filesystementrymovetotrashcallback",children:"fileSystemEntry.moveToTrash([callback])"}),"\n",(0,i.jsx)(t.p,{children:"Move this entry to the trash. If the underlying file system doesn't support move\nto trash, the item is permanently deleted."}),"\n",(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(t.a,{href:"#FileSystemEntry",children:(0,i.jsx)("code",{children:"FileSystemEntry"})})]}),"\n",(0,i.jsxs)(t.table,{children:[(0,i.jsx)(t.thead,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.th,{children:"Param"}),(0,i.jsx)(t.th,{children:"Type"}),(0,i.jsx)(t.th,{children:"Description"})]})}),(0,i.jsx)(t.tbody,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"[callback]"}),(0,i.jsx)(t.td,{children:(0,i.jsx)("code",{children:"function"})}),(0,i.jsx)(t.td,{children:"Callback with a single FileSystemError string parameter."})]})})]}),"\n",(0,i.jsx)("a",{name:"FileSystemEntry+visit"}),"\n",(0,i.jsx)(t.h3,{id:"filesystementryvisitvisitor-options-callback",children:"fileSystemEntry.visit(visitor, [options], [callback])"}),"\n",(0,i.jsx)(t.p,{children:"Visit this entry and its descendents with the supplied visitor function.\nCorrectly handles symbolic link cycles and options can be provided to limit\nsearch depth and total number of entries visited. No particular traversal\norder is guaranteed; instead of relying on such an order, it is preferable\nto use the visit function to build a list of visited entries, sort those\nentries as desired, and then process them. Whenever possible, deep\nfilesystem traversals should use this method. Will not visit all files/dirs\nthat are not shown in the file tree by default, unless the visitHiddenTree option is specified."}),"\n",(0,i.jsxs)(t.p,{children:[(0,i.jsx)(t.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(t.a,{href:"#FileSystemEntry",children:(0,i.jsx)("code",{children:"FileSystemEntry"})})]}),"\n",(0,i.jsxs)(t.table,{children:[(0,i.jsx)(t.thead,{children:(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.th,{children:"Param"}),(0,i.jsx)(t.th,{children:"Type"}),(0,i.jsx)(t.th,{children:"Description"})]})}),(0,i.jsxs)(t.tbody,{children:[(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"visitor"}),(0,i.jsx)(t.td,{children:(0,i.jsx)("code",{children:"function"})}),(0,i.jsx)(t.td,{children:"A visitor function (can be async), which is applied to this entry and all descendent FileSystemEntry objects. It can have two args, the first one is the entry being visited, the second is an array of sibling entries that share the same parent dir as the given entry. If the function returns false (or promise that resolved to false)for a particular Directory entry, that directory's descendents will not be visited."})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"[options]"}),(0,i.jsx)(t.td,{children:(0,i.jsx)("code",{children:"Object"})}),(0,i.jsx)(t.td,{})]}),(0,i.jsxs)(t.tr,{children:[(0,i.jsx)(t.td,{children:"[callback]"}),(0,i.jsx)(t.td,{children:(0,i.jsx)("code",{children:"function"})}),(0,i.jsx)(t.td,{children:"Callback with single FileSystemError string parameter."})]})]})]})]})}function o(e={}){const{wrapper:t}={...(0,r.R)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(a,{...e})}):a(e)}},28453:(e,t,s)=>{s.d(t,{R:()=>l,x:()=>c});var n=s(96540);const i={},r=n.createContext(i);function l(e){const t=n.useContext(r);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function c(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:l(e.components),n.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/bcd0835e.8aba0c2e.js b/assets/js/bcd0835e.8aba0c2e.js new file mode 100644 index 00000000..e8861c1c --- /dev/null +++ b/assets/js/bcd0835e.8aba0c2e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6887],{82967:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>u,frontMatter:()=>o,metadata:()=>s,toc:()=>c});const s=JSON.parse('{"id":"Live Preview/measurements","title":"Measurements","description":"Upgrade to Phoenix Code Pro to access this feature.","source":"@site/docs/02-Live Preview/04-measurements.md","sourceDirName":"02-Live Preview","slug":"/Pro Features/measurements","permalink":"/docs/Pro Features/measurements","draft":false,"unlisted":false,"editUrl":"https://github.com/phcode-dev/docs/blob/main/docs/02-Live Preview/04-measurements.md","tags":[],"version":"current","sidebarPosition":4,"frontMatter":{"title":"Measurements","slug":"/Pro Features/measurements"},"sidebar":"tutorialSidebar","previous":{"title":"Device Preview","permalink":"/docs/Pro Features/device-preview"},"next":{"title":"Image Gallery","permalink":"/docs/Pro Features/image-gallery"}}');var r=n(74848),i=n(28453);const o={title:"Measurements",slug:"/Pro Features/measurements"},a=void 0,l={},c=[{value:"Enabling Measurements",id:"enabling-measurements",level:2}];function d(e){const t={a:"a",admonition:"admonition",blockquote:"blockquote",br:"br",code:"code",em:"em",h2:"h2",img:"img",p:"p",strong:"strong",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(t.admonition,{title:"Pro Feature",type:"info",children:(0,r.jsxs)(t.p,{children:[(0,r.jsx)(t.a,{href:"https://phcode.io/pricing",children:"Upgrade to Phoenix Code Pro"})," to access this feature."]})}),"\n",(0,r.jsxs)(t.p,{children:["The ",(0,r.jsx)(t.strong,{children:"Measurements"})," feature displays ruler lines extending from the edges of a selected element to the edges of the Live Preview document, with labels showing exact pixel positions. This helps you position elements more accurately."]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"Measurements",src:n(92448).A+"",title:"Measurements",width:"997",height:"578"})}),"\n",(0,r.jsxs)(t.blockquote,{children:["\n",(0,r.jsx)(t.p,{children:"Ruler lines appear in blue for editable elements and gray for non-editable (dynamically created) elements."}),"\n"]}),"\n",(0,r.jsx)(t.h2,{id:"enabling-measurements",children:"Enabling Measurements"}),"\n",(0,r.jsxs)(t.p,{children:["While in ",(0,r.jsx)(t.a,{href:"./live-preview-edit",children:"Edit Mode"}),", click the dropdown arrow next to the pen icon in the Live Preview toolbar. This opens a menu where you can toggle ",(0,r.jsx)(t.strong,{children:"Show Measurements"})," on or off."]}),"\n",(0,r.jsxs)(t.blockquote,{children:["\n",(0,r.jsx)(t.p,{children:"By default, measurements are disabled."}),"\n"]}),"\n",(0,r.jsx)(t.p,{children:(0,r.jsx)(t.img,{alt:"Enable Show Measurements",src:n(34506).A+"",title:"Enable Show Measurements",width:"382",height:"209"})}),"\n",(0,r.jsxs)(t.p,{children:["Alternatively, you can enable measurements from the ",(0,r.jsx)(t.strong,{children:"More Options"})," menu ",(0,r.jsx)(t.em,{children:"(three-dots icon)"})," in the Control Box. Select ",(0,r.jsx)(t.strong,{children:"Show Measurements"})," to toggle it on or off."]}),"\n",(0,r.jsxs)(t.p,{children:["You can also change this setting by updating the ",(0,r.jsx)(t.code,{children:"livePreviewShowMeasurements"})," preference in the preferences file. Set it to ",(0,r.jsx)(t.code,{children:"true"})," or ",(0,r.jsx)(t.code,{children:"false"})," (default).",(0,r.jsx)(t.br,{}),"\n","See ",(0,r.jsx)(t.a,{href:"../editing-text#editing-preferences",children:"Editing Preferences"})," to learn how to edit the preferences file."]})]})}function u(e={}){const{wrapper:t}={...(0,i.R)(),...e.components};return t?(0,r.jsx)(t,{...e,children:(0,r.jsx)(d,{...e})}):d(e)}},34506:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/enable-show-measurements-6269f78f8c6fe1d060fd682ebe2d4cbb.png"},92448:(e,t,n)=>{n.d(t,{A:()=>s});const s=n.p+"assets/images/measurements-b9b5af176bc880f6e7c0f8042c8df901.png"},28453:(e,t,n)=>{n.d(t,{R:()=>o,x:()=>a});var s=n(96540);const r={},i=s.createContext(r);function o(e){const t=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),s.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/bd24e4f6.23914f2e.js b/assets/js/bd24e4f6.23914f2e.js new file mode 100644 index 00000000..77d22f09 --- /dev/null +++ b/assets/js/bd24e4f6.23914f2e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6680],{10980:(e,o,t)=>{t.r(o),t.d(o,{assets:()=>l,contentTitle:()=>r,default:()=>c,frontMatter:()=>s,metadata:()=>n,toc:()=>h});var n=t(79464),i=t(74848),a=t(28453);const s={slug:"welcome",title:"Introducing Phoenix Code Desktop- Now on Windows, Mac & Linux",description:"Phoenix Code native desktop apps are now available for Windows, Mac, and Linux. Web version available for ChromeOS and other platforms.",authors:["arun","charly","kiran","mathew","phoenixBot"],tags:["hello world","Native Apps","Windows","Linux","Mac","Release"]},r=void 0,l={authorsImageUrls:[void 0,void 0,void 0,void 0,void 0]},h=[{value:"Looking Back",id:"looking-back",level:2},{value:"Acknowledgements",id:"acknowledgements",level:2},{value:"Looking Ahead",id:"looking-ahead",level:2},{value:"How You Can Support:",id:"how-you-can-support",level:2}];function d(e){const o={a:"a",blockquote:"blockquote",code:"code",em:"em",h2:"h2",li:"li",p:"p",strong:"strong",ul:"ul",...(0,a.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(o.p,{children:["We're thrilled to share a huge update with you all today - Phoenix Code native apps are officially here! \ud83c\udf89 . Get your copy from ",(0,i.jsx)(o.a,{href:"https://phcode.io",children:"phcode.io"})," !"]}),"\n",(0,i.jsx)(o.p,{children:"We have been working hard over the last several months to make native apps possible. It took a lot of effort and perseverance with our limited resources to reach this far. We hope to have your support in doing more :)"}),"\n",(0,i.jsx)(o.p,{children:"With this update, Phoenix Code can now run almost anywhere! Native apps are available for Windows, Mac and most Linux distributions. For Chrome-OS and other platforms, simply use the web browser version; no install needed."}),"\n",(0,i.jsx)(o.h2,{id:"looking-back",children:"Looking Back"}),"\n",(0,i.jsxs)(o.p,{children:["The team building Phoenix Code started its history as some of the initial team members building Brackets at Adobe from 2014. Phoenix Code took over the full time development of Brackets in 2021. We had a mammoth task to bring Brackets up to date with the latest web technologies. ",(0,i.jsx)(o.a,{href:"https://www.reddit.com/r/brackets/comments/tz06tn/brackets_community_announcement_phoenix_code/",children:"The result was Phoenix Code"}),"- A Platform rewrite of Brackets that allowed it to run on any Web Browser. But our users were pretty clear that a desktop app was needed."]}),"\n",(0,i.jsxs)(o.p,{children:["It was at this time that this hot new rust based tech called ",(0,i.jsx)(o.a,{href:"https://tauri.app/",children:(0,i.jsx)(o.code,{children:"Tauri framework"})})," came into the picture and we finally had the missing piece to build a truly modern and light-weight desktop app. Fast forward to 2024 and Phoenix Code now runs ",(0,i.jsx)(o.em,{children:"almost"})," anywhere(",(0,i.jsx)(o.em,{children:"almost"})," as we are one step short with touch and mobile screens)."]}),"\n",(0,i.jsx)(o.p,{children:"Phoenix Code marks the first large-scale, truly independent release from the Brackets community. Entirely homegrown within the community, it is also the largest engineering effort put into Brackets since 2015 (including Adobe)."}),"\n",(0,i.jsx)(o.h2,{id:"acknowledgements",children:"Acknowledgements"}),"\n",(0,i.jsxs)(o.p,{children:["This release is made possible by the Phoenix Code Team- ",(0,i.jsx)(o.a,{href:"https://github.com/abose",children:"Arun"}),", ",(0,i.jsx)(o.a,{href:"https://github.com/charlypa",children:"Charly"})," and ",(0,i.jsx)(o.a,{href:"https://github.com/mathewdennis1",children:"Mathew"}),". Our shiny new website ",(0,i.jsx)(o.a,{href:"https://phcode.io",children:"phcode.io"})," is built by community contribution from ",(0,i.jsx)(o.a,{href:"https://github.com/kiranbose",children:"Kiran"}),"."]}),"\n",(0,i.jsxs)(o.p,{children:["We would also like to thank the S-tier community support provided by the ",(0,i.jsx)(o.a,{href:"https://tauri.app/",children:"Tauri"})," development team, esp. ",(0,i.jsx)(o.a,{href:"https://github.com/FabianLars",children:"Fabian"}),"."]}),"\n",(0,i.jsx)(o.h2,{id:"looking-ahead",children:"Looking Ahead"}),"\n",(0,i.jsxs)(o.blockquote,{children:["\n",(0,i.jsx)(o.p,{children:"Our guiding principle is to make coding as intuitive and fun as playing a video game - for web developers, designers, and students."}),"\n"]}),"\n",(0,i.jsxs)(o.p,{children:["With the native apps now available, we're starting the next phase of our journey. Beginning this month, there will be\na new update of Phoenix Code released every month with all the features that you ",(0,i.jsx)(o.a,{href:"https://github.com/phcode-dev/phoenix/issues?q=is%3Aissue+is%3Aopen+label%3A%22customer+raised%22",children:"requested"})," and ",(0,i.jsx)(o.a,{href:"https://github.com/phcode-dev/phoenix/issues?q=is%3Aissue+is%3Aopen+label%3A%22Feature+Request%22",children:"more"}),"."]}),"\n",(0,i.jsx)(o.p,{children:"However, our ambitions come with costs, and it's your support that makes all the difference."}),"\n",(0,i.jsx)(o.h2,{id:"how-you-can-support",children:"How You Can Support:"}),"\n",(0,i.jsxs)(o.ul,{children:["\n",(0,i.jsxs)(o.li,{children:[(0,i.jsx)(o.strong,{children:"Share your feedback:"})," ",(0,i.jsx)(o.a,{href:"https://github.com/orgs/phcode-dev/discussions",children:"https://github.com/orgs/phcode-dev/discussions"})]}),"\n",(0,i.jsxs)(o.li,{children:[(0,i.jsx)(o.strong,{children:"Spread the word"})," about Phoenix to friends and colleagues."]}),"\n",(0,i.jsxs)(o.li,{children:[(0,i.jsxs)(o.a,{href:"https://opencollective.com/phoenix-ide",children:[(0,i.jsx)(o.strong,{children:"Consider supporting us"})," on Open Collective"]}),". Every contribution helps us to keep improving and expanding Phoenix Code."]}),"\n"]}),"\n",(0,i.jsx)(o.p,{children:"We're grateful for the incredible support this community has shown us so far. Let's continue to make Phoenix Code even better, together."}),"\n",(0,i.jsx)(o.p,{children:"With gratitude,"}),"\n",(0,i.jsx)(o.p,{children:"The Phoenix Team"})]})}function c(e={}){const{wrapper:o}={...(0,a.R)(),...e.components};return o?(0,i.jsx)(o,{...e,children:(0,i.jsx)(d,{...e})}):d(e)}},28453:(e,o,t)=>{t.d(o,{R:()=>s,x:()=>r});var n=t(96540);const i={},a=n.createContext(i);function s(e){const o=n.useContext(a);return n.useMemo((function(){return"function"==typeof e?e(o):{...o,...e}}),[o,e])}function r(e){let o;return o=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:s(e.components),n.createElement(a.Provider,{value:o},e.children)}},79464:e=>{e.exports=JSON.parse('{"permalink":"/blog/welcome","editUrl":"https://github.com/phcode-dev/docs/blob/main/blog/2024-03-05-welcome/index.md","source":"@site/blog/2024-03-05-welcome/index.md","title":"Introducing Phoenix Code Desktop- Now on Windows, Mac & Linux","description":"Phoenix Code native desktop apps are now available for Windows, Mac, and Linux. Web version available for ChromeOS and other platforms.","date":"2024-03-05T00:00:00.000Z","tags":[{"inline":true,"label":"hello world","permalink":"/blog/tags/hello-world"},{"inline":true,"label":"Native Apps","permalink":"/blog/tags/native-apps"},{"inline":true,"label":"Windows","permalink":"/blog/tags/windows"},{"inline":true,"label":"Linux","permalink":"/blog/tags/linux"},{"inline":true,"label":"Mac","permalink":"/blog/tags/mac"},{"inline":true,"label":"Release","permalink":"/blog/tags/release"}],"readingTime":2.64,"hasTruncateMarker":false,"authors":[{"name":"Arun Bose","title":"Co-Founder, Phoenix Code","url":"https://github.com/abose","imageURL":"https://github.com/abose.png","key":"arun","page":null},{"name":"Charly P Abraham","title":"Co-Founder, Phoenix Code","url":"https://github.com/charlypa","imageURL":"https://github.com/charlypa.png","key":"charly","page":null},{"name":"Kiran Bose","title":"Community Contributor","url":"https://github.com/kiranbose","imageURL":"https://github.com/kiranbose.png","key":"kiran","page":null},{"name":"Mathew Dennis","title":"Quality Control & Social Media","url":"https://github.com/mathewdennis1","imageURL":"https://github.com/mathewdennis1.png","key":"mathew","page":null},{"name":"Phoenix Code Bot","title":"Our little elf who keeps the whole place together","url":"https://github.com/phoenixide","imageURL":"https://github.com/phoenixide.png","key":"phoenixBot","page":null}],"frontMatter":{"slug":"welcome","title":"Introducing Phoenix Code Desktop- Now on Windows, Mac & Linux","description":"Phoenix Code native desktop apps are now available for Windows, Mac, and Linux. Web version available for ChromeOS and other platforms.","authors":["arun","charly","kiran","mathew","phoenixBot"],"tags":["hello world","Native Apps","Windows","Linux","Mac","Release"]},"unlisted":false,"prevItem":{"title":"March-2024 Release (V-3.5) is now Live","permalink":"/blog/release-3.5"}}')}}]); \ No newline at end of file diff --git a/assets/js/be461192.bb4be1f6.js b/assets/js/be461192.bb4be1f6.js new file mode 100644 index 00000000..1be8fb6f --- /dev/null +++ b/assets/js/be461192.bb4be1f6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4349],{85728:(e,i,n)=>{n.r(i),n.d(i,{assets:()=>o,contentTitle:()=>d,default:()=>h,frontMatter:()=>s,metadata:()=>t,toc:()=>a});const t=JSON.parse('{"id":"API-Reference/utils/ValidationUtils","title":"ValidationUtils","description":"Import :","source":"@site/api/API-Reference/utils/ValidationUtils.md","sourceDirName":"API-Reference/utils","slug":"/API-Reference/utils/ValidationUtils","permalink":"/api/API-Reference/utils/ValidationUtils","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"TokenUtils","permalink":"/api/API-Reference/utils/TokenUtils"},"next":{"title":"ViewUtils","permalink":"/api/API-Reference/utils/ViewUtils"}}');var l=n(74848),r=n(28453);const s={},d=void 0,o={},a=[{value:"Import :",id:"import-",level:3},{value:"isInteger(value) \u21d2 boolean",id:"isintegervalue--boolean",level:2},{value:"isIntegerInRange(value, [lowerLimit], [upperLimit]) \u21d2 boolean",id:"isintegerinrangevalue-lowerlimit-upperlimit--boolean",level:2},{value:"isWithinRange(value, [lowerLimit], [upperLimit]) \u21d2 boolean",id:"iswithinrangevalue-lowerlimit-upperlimit--boolean",level:2}];function c(e){const i={br:"br",code:"code",h2:"h2",h3:"h3",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,r.R)(),...e.components};return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(i.h3,{id:"import-",children:"Import :"}),"\n",(0,l.jsx)(i.pre,{children:(0,l.jsx)(i.code,{className:"language-js",children:'const ValidationUtils = brackets.getModule("utils/ValidationUtils")\n'})}),"\n",(0,l.jsx)("a",{name:"isInteger"}),"\n",(0,l.jsxs)(i.h2,{id:"isintegervalue--boolean",children:["isInteger(value) \u21d2 ",(0,l.jsx)("code",{children:"boolean"})]}),"\n",(0,l.jsx)(i.p,{children:"Used to validate whether type of unknown value is an integer."}),"\n",(0,l.jsxs)(i.p,{children:[(0,l.jsx)(i.strong,{children:"Kind"}),": global function",(0,l.jsx)(i.br,{}),"\n",(0,l.jsx)(i.strong,{children:"Returns"}),": ",(0,l.jsx)("code",{children:"boolean"})," - true if value is a finite integer"]}),"\n",(0,l.jsxs)(i.table,{children:[(0,l.jsx)(i.thead,{children:(0,l.jsxs)(i.tr,{children:[(0,l.jsx)(i.th,{children:"Param"}),(0,l.jsx)(i.th,{children:"Type"}),(0,l.jsx)(i.th,{children:"Description"})]})}),(0,l.jsx)(i.tbody,{children:(0,l.jsxs)(i.tr,{children:[(0,l.jsx)(i.td,{children:"value"}),(0,l.jsx)(i.td,{children:(0,l.jsx)("code",{children:"*"})}),(0,l.jsx)(i.td,{children:"Value for which to validate its type"})]})})]}),"\n",(0,l.jsx)("a",{name:"isIntegerInRange"}),"\n",(0,l.jsxs)(i.h2,{id:"isintegerinrangevalue-lowerlimit-upperlimit--boolean",children:["isIntegerInRange(value, [lowerLimit], [upperLimit]) \u21d2 ",(0,l.jsx)("code",{children:"boolean"})]}),"\n",(0,l.jsx)(i.p,{children:"Used to validate whether type of unknown value is an integer, and, if so,\nis it within the option lower and upper limits."}),"\n",(0,l.jsxs)(i.p,{children:[(0,l.jsx)(i.strong,{children:"Kind"}),": global function",(0,l.jsx)(i.br,{}),"\n",(0,l.jsx)(i.strong,{children:"Returns"}),": ",(0,l.jsx)("code",{children:"boolean"})," - true if value is an interger, and optionally in specified range."]}),"\n",(0,l.jsxs)(i.table,{children:[(0,l.jsx)(i.thead,{children:(0,l.jsxs)(i.tr,{children:[(0,l.jsx)(i.th,{children:"Param"}),(0,l.jsx)(i.th,{children:"Type"}),(0,l.jsx)(i.th,{children:"Description"})]})}),(0,l.jsxs)(i.tbody,{children:[(0,l.jsxs)(i.tr,{children:[(0,l.jsx)(i.td,{children:"value"}),(0,l.jsx)(i.td,{children:(0,l.jsx)("code",{children:"*"})}),(0,l.jsx)(i.td,{children:"Value for which to validate its type"})]}),(0,l.jsxs)(i.tr,{children:[(0,l.jsx)(i.td,{children:"[lowerLimit]"}),(0,l.jsx)(i.td,{children:(0,l.jsx)("code",{children:"number"})}),(0,l.jsx)(i.td,{children:"Optional lower limit (inclusive)"})]}),(0,l.jsxs)(i.tr,{children:[(0,l.jsx)(i.td,{children:"[upperLimit]"}),(0,l.jsx)(i.td,{children:(0,l.jsx)("code",{children:"number"})}),(0,l.jsx)(i.td,{children:"Optional upper limit (inclusive)"})]})]})]}),"\n",(0,l.jsx)("a",{name:"isWithinRange"}),"\n",(0,l.jsxs)(i.h2,{id:"iswithinrangevalue-lowerlimit-upperlimit--boolean",children:["isWithinRange(value, [lowerLimit], [upperLimit]) \u21d2 ",(0,l.jsx)("code",{children:"boolean"})]}),"\n",(0,l.jsx)(i.p,{children:"Used to validate whether type of unknown value is a number (including decimals),\nand, if so, is it within the optional lower and upper limits."}),"\n",(0,l.jsxs)(i.p,{children:[(0,l.jsx)(i.strong,{children:"Kind"}),": global function",(0,l.jsx)(i.br,{}),"\n",(0,l.jsx)(i.strong,{children:"Returns"}),": ",(0,l.jsx)("code",{children:"boolean"})," - true if value is a finite number, and optionally in specified range."]}),"\n",(0,l.jsxs)(i.table,{children:[(0,l.jsx)(i.thead,{children:(0,l.jsxs)(i.tr,{children:[(0,l.jsx)(i.th,{children:"Param"}),(0,l.jsx)(i.th,{children:"Type"}),(0,l.jsx)(i.th,{children:"Description"})]})}),(0,l.jsxs)(i.tbody,{children:[(0,l.jsxs)(i.tr,{children:[(0,l.jsx)(i.td,{children:"value"}),(0,l.jsx)(i.td,{children:(0,l.jsx)("code",{children:"*"})}),(0,l.jsx)(i.td,{children:"Value for which to validate its type"})]}),(0,l.jsxs)(i.tr,{children:[(0,l.jsx)(i.td,{children:"[lowerLimit]"}),(0,l.jsx)(i.td,{children:(0,l.jsx)("code",{children:"number"})}),(0,l.jsx)(i.td,{children:"Optional lower limit (inclusive)"})]}),(0,l.jsxs)(i.tr,{children:[(0,l.jsx)(i.td,{children:"[upperLimit]"}),(0,l.jsx)(i.td,{children:(0,l.jsx)("code",{children:"number"})}),(0,l.jsx)(i.td,{children:"Optional upper limit (inclusive)"})]})]})]})]})}function h(e={}){const{wrapper:i}={...(0,r.R)(),...e.components};return i?(0,l.jsx)(i,{...e,children:(0,l.jsx)(c,{...e})}):c(e)}},28453:(e,i,n)=>{n.d(i,{R:()=>s,x:()=>d});var t=n(96540);const l={},r=t.createContext(l);function s(e){const i=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function d(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(l):e.components||l:s(e.components),t.createElement(r.Provider,{value:i},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/be80fff9.ac76c9e1.js b/assets/js/be80fff9.ac76c9e1.js new file mode 100644 index 00000000..af9f4f8d --- /dev/null +++ b/assets/js/be80fff9.ac76c9e1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4679],{79480:(e,r,n)=>{n.r(r),n.d(r,{assets:()=>i,contentTitle:()=>s,default:()=>h,frontMatter:()=>a,metadata:()=>o,toc:()=>d});const o=JSON.parse('{"id":"API-Reference/widgets/ModalBar","title":"ModalBar","description":"Import :","source":"@site/api/API-Reference/widgets/ModalBar.md","sourceDirName":"API-Reference/widgets","slug":"/API-Reference/widgets/ModalBar","permalink":"/api/API-Reference/widgets/ModalBar","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"DropdownButton","permalink":"/api/API-Reference/widgets/DropdownButton"},"next":{"title":"NotificationUI","permalink":"/api/API-Reference/widgets/NotificationUI"}}');var t=n(74848),l=n(28453);const a={},s=void 0,i={},d=[{value:"Import :",id:"import-",level:3},{value:"ModalBar",id:"modalbar",level:2},{value:"new ModalBar(template, autoClose, animate)",id:"new-modalbartemplate-autoclose-animate",level:3},{value:"modalBar.isLockedOpen : function",id:"modalbarislockedopen--function",level:3},{value:"modalBar.height() \u21d2 number",id:"modalbarheight--number",level:3},{value:"modalBar.prepareClose([restoreScrollPos])",id:"modalbarpreparecloserestorescrollpos",level:3},{value:"modalBar.close([restoreScrollPos], [animate], [_reason]) \u21d2 $.Promise",id:"modalbarcloserestorescrollpos-animate-_reason--promise",level:3},{value:"modalBar.getRoot() \u21d2 jQueryObject",id:"modalbargetroot--jqueryobject",level:3},{value:"MainViewManager",id:"mainviewmanager",level:2}];function c(e){const r={a:"a",br:"br",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,l.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(r.h3,{id:"import-",children:"Import :"}),"\n",(0,t.jsx)(r.pre,{children:(0,t.jsx)(r.code,{className:"language-js",children:'const ModalBar = brackets.getModule("widgets/ModalBar")\n'})}),"\n",(0,t.jsx)("a",{name:"ModalBar"}),"\n",(0,t.jsx)(r.h2,{id:"modalbar",children:"ModalBar"}),"\n",(0,t.jsxs)(r.p,{children:[(0,t.jsx)(r.strong,{children:"Kind"}),": global class"]}),"\n",(0,t.jsxs)(r.ul,{children:["\n",(0,t.jsxs)(r.li,{children:[(0,t.jsx)(r.a,{href:"#ModalBar",children:"ModalBar"}),"\n",(0,t.jsxs)(r.ul,{children:["\n",(0,t.jsx)(r.li,{children:(0,t.jsx)(r.a,{href:"#new_ModalBar_new",children:"new ModalBar(template, autoClose, animate)"})}),"\n",(0,t.jsxs)(r.li,{children:[(0,t.jsx)(r.a,{href:"#ModalBar+isLockedOpen",children:".isLockedOpen"})," : ",(0,t.jsx)("code",{children:"function"})]}),"\n",(0,t.jsxs)(r.li,{children:[(0,t.jsx)(r.a,{href:"#ModalBar+height",children:".height()"})," \u21d2 ",(0,t.jsx)("code",{children:"number"})]}),"\n",(0,t.jsx)(r.li,{children:(0,t.jsx)(r.a,{href:"#ModalBar+prepareClose",children:".prepareClose([restoreScrollPos])"})}),"\n",(0,t.jsxs)(r.li,{children:[(0,t.jsx)(r.a,{href:"#ModalBar+close",children:".close([restoreScrollPos], [animate], [_reason])"})," \u21d2 ",(0,t.jsx)("code",{children:"$.Promise"})]}),"\n",(0,t.jsxs)(r.li,{children:[(0,t.jsx)(r.a,{href:"#ModalBar+getRoot",children:".getRoot()"})," \u21d2 ",(0,t.jsx)("code",{children:"jQueryObject"})]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)("a",{name:"new_ModalBar_new"}),"\n",(0,t.jsx)(r.h3,{id:"new-modalbartemplate-autoclose-animate",children:"new ModalBar(template, autoClose, animate)"}),"\n",(0,t.jsx)(r.p,{children:"Creates a modal bar whose contents are the given template."}),"\n",(0,t.jsx)(r.p,{children:"Dispatches one event:"}),"\n",(0,t.jsxs)(r.ul,{children:["\n",(0,t.jsx)(r.li,{children:'close - When the bar is closed, either via close() or via autoClose. After this event, the\nbar may remain visible and in the DOM while its closing animation is playing. However,\nby the time "close" is fired, the bar has been "popped out" of the layout and the\neditor scroll position has already been restored.\nSecond argument is the reason for closing (one of ModalBar.CLOSE_*).\nThird argument is the Promise that close() will be returning.'}),"\n"]}),"\n",(0,t.jsxs)(r.table,{children:[(0,t.jsx)(r.thead,{children:(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.th,{children:"Param"}),(0,t.jsx)(r.th,{children:"Type"}),(0,t.jsx)(r.th,{children:"Description"})]})}),(0,t.jsxs)(r.tbody,{children:[(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"template"}),(0,t.jsx)(r.td,{children:(0,t.jsx)("code",{children:"string"})}),(0,t.jsx)(r.td,{children:"The HTML contents of the modal bar."})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"autoClose"}),(0,t.jsx)(r.td,{children:(0,t.jsx)("code",{children:"boolean"})}),(0,t.jsx)(r.td,{children:"If true, then close the dialog if the user hits Esc or if the bar loses focus."})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"animate"}),(0,t.jsx)(r.td,{children:(0,t.jsx)("code",{children:"boolean"})}),(0,t.jsx)(r.td,{children:"If true (the default), animate the dialog closed, otherwise close it immediately."})]})]})]}),"\n",(0,t.jsx)("a",{name:"ModalBar+isLockedOpen"}),"\n",(0,t.jsxs)(r.h3,{id:"modalbarislockedopen--function",children:["modalBar.isLockedOpen : ",(0,t.jsx)("code",{children:"function"})]}),"\n",(0,t.jsx)(r.p,{children:"Allows client code to block autoClose from closing the ModalBar: if set, this function is called whenever\nautoClose would normally close the ModalBar. Returning true prevents the close from occurring. Programmatically\ncalling close() will still close the bar, however."}),"\n",(0,t.jsxs)(r.p,{children:[(0,t.jsx)(r.strong,{children:"Kind"}),": instance property of ",(0,t.jsx)(r.a,{href:"#ModalBar",children:(0,t.jsx)("code",{children:"ModalBar"})})]}),"\n",(0,t.jsx)("a",{name:"ModalBar+height"}),"\n",(0,t.jsxs)(r.h3,{id:"modalbarheight--number",children:["modalBar.height() \u21d2 ",(0,t.jsx)("code",{children:"number"})]}),"\n",(0,t.jsxs)(r.p,{children:[(0,t.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,t.jsx)(r.a,{href:"#ModalBar",children:(0,t.jsx)("code",{children:"ModalBar"})}),(0,t.jsx)(r.br,{}),"\n",(0,t.jsx)(r.strong,{children:"Returns"}),": ",(0,t.jsx)("code",{children:"number"})," - Height of the modal bar in pixels, if open."]}),"\n",(0,t.jsx)("a",{name:"ModalBar+prepareClose"}),"\n",(0,t.jsx)(r.h3,{id:"modalbarpreparecloserestorescrollpos",children:"modalBar.prepareClose([restoreScrollPos])"}),"\n",(0,t.jsxs)(r.p,{children:["Prepares the ModalBar for closing by popping it out of the main flow and resizing/\nrescrolling the Editor to maintain its current apparent code position. Useful if\nyou want to do that as a separate operation from actually animating the ModalBar\nclosed and removing it (for example, if you need to switch full editors in between).\nIf you don't call this explicitly, it will get called at the beginning of ",(0,t.jsx)(r.code,{children:"close()"}),"."]}),"\n",(0,t.jsxs)(r.p,{children:[(0,t.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,t.jsx)(r.a,{href:"#ModalBar",children:(0,t.jsx)("code",{children:"ModalBar"})})]}),"\n",(0,t.jsxs)(r.table,{children:[(0,t.jsx)(r.thead,{children:(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.th,{children:"Param"}),(0,t.jsx)(r.th,{children:"Type"}),(0,t.jsx)(r.th,{children:"Description"})]})}),(0,t.jsx)(r.tbody,{children:(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"[restoreScrollPos]"}),(0,t.jsx)(r.td,{children:(0,t.jsx)("code",{children:"boolean"})}),(0,t.jsx)(r.td,{children:"If true (the default), adjust the scroll position of the editor to account for the ModalBar disappearing. If not set, the caller should do it immediately on return of this function (before the animation completes), because the editor will already have been resized."})]})})]}),"\n",(0,t.jsx)("a",{name:"ModalBar+close"}),"\n",(0,t.jsxs)(r.h3,{id:"modalbarcloserestorescrollpos-animate-_reason--promise",children:["modalBar.close([restoreScrollPos], [animate], [_reason]) \u21d2 ",(0,t.jsx)("code",{children:"$.Promise"})]}),"\n",(0,t.jsx)(r.p,{children:"Closes the modal bar and returns focus to the active editor. Returns a promise that is\nresolved when the bar is fully closed and the container is removed from the DOM."}),"\n",(0,t.jsxs)(r.p,{children:[(0,t.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,t.jsx)(r.a,{href:"#ModalBar",children:(0,t.jsx)("code",{children:"ModalBar"})}),(0,t.jsx)(r.br,{}),"\n",(0,t.jsx)(r.strong,{children:"Returns"}),": ",(0,t.jsx)("code",{children:"$.Promise"})," - promise resolved when close is finished"]}),"\n",(0,t.jsxs)(r.table,{children:[(0,t.jsx)(r.thead,{children:(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.th,{children:"Param"}),(0,t.jsx)(r.th,{children:"Type"}),(0,t.jsx)(r.th,{children:"Description"})]})}),(0,t.jsxs)(r.tbody,{children:[(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"[restoreScrollPos]"}),(0,t.jsx)(r.td,{children:(0,t.jsx)("code",{children:"boolean"})}),(0,t.jsxs)(r.td,{children:["If true (the default), adjust the scroll position of the editor to account for the ModalBar disappearing. If not set, the caller should do it immediately on return of this function (before the animation completes), because the editor will already have been resized. Note that this is ignored if ",(0,t.jsx)(r.code,{children:"prepareClose()"})," was already called (you need to pass the parameter to that function if you call it first)."]})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"[animate]"}),(0,t.jsx)(r.td,{children:(0,t.jsx)("code",{children:"boolean"})}),(0,t.jsx)(r.td,{children:"If true (the default), animate the closing of the ModalBar, otherwise close it immediately."})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"[_reason]"}),(0,t.jsx)(r.td,{children:(0,t.jsx)("code",{children:"string"})}),(0,t.jsx)(r.td,{children:"For internal use only."})]})]})]}),"\n",(0,t.jsx)("a",{name:"ModalBar+getRoot"}),"\n",(0,t.jsxs)(r.h3,{id:"modalbargetroot--jqueryobject",children:["modalBar.getRoot() \u21d2 ",(0,t.jsx)("code",{children:"jQueryObject"})]}),"\n",(0,t.jsxs)(r.p,{children:[(0,t.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,t.jsx)(r.a,{href:"#ModalBar",children:(0,t.jsx)("code",{children:"ModalBar"})}),(0,t.jsx)(r.br,{}),"\n",(0,t.jsx)(r.strong,{children:"Returns"}),": ",(0,t.jsx)("code",{children:"jQueryObject"})," - A jQuery object representing the root of the ModalBar."]}),"\n",(0,t.jsx)("a",{name:"MainViewManager"}),"\n",(0,t.jsx)(r.h2,{id:"mainviewmanager",children:"MainViewManager"}),"\n",(0,t.jsx)(r.p,{children:'A "modal bar" component. This is a lightweight replacement for modal dialogs that\nappears at the top of the editor area for operations like Find and Quick Open.'}),"\n",(0,t.jsxs)(r.p,{children:[(0,t.jsx)(r.strong,{children:"Kind"}),": global variable"]})]})}function h(e={}){const{wrapper:r}={...(0,l.R)(),...e.components};return r?(0,t.jsx)(r,{...e,children:(0,t.jsx)(c,{...e})}):c(e)}},28453:(e,r,n)=>{n.d(r,{R:()=>a,x:()=>s});var o=n(96540);const t={},l=o.createContext(t);function a(e){const r=o.useContext(l);return o.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function s(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:a(e.components),o.createElement(l.Provider,{value:r},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/be8121a6.42dda21b.js b/assets/js/be8121a6.42dda21b.js new file mode 100644 index 00000000..b7cd3991 --- /dev/null +++ b/assets/js/be8121a6.42dda21b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7187],{40588:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>d,contentTitle:()=>c,default:()=>a,frontMatter:()=>r,metadata:()=>s,toc:()=>l});const s=JSON.parse('{"id":"creating-extensions","title":"Creating Extensions","description":"This document outlines how to write your own extensions for Phoenix Code.","source":"@site/api/03-creating-extensions.md","sourceDirName":".","slug":"/creating-extensions","permalink":"/api/creating-extensions","draft":false,"unlisted":false,"tags":[],"version":"current","sidebarPosition":3,"frontMatter":{"title":"Creating Extensions"},"sidebar":"tutorialSidebar","previous":{"title":"Creating Themes","permalink":"/api/creating-themes"},"next":{"title":"Use node.js from your extension","permalink":"/api/creating-node-extensions"}}');var t=o(74848),i=o(28453);const r={title:"Creating Extensions"},c=void 0,d={},l=[{value:"How to create a new Extension",id:"how-to-create-a-new-extension",level:2},{value:"API docs",id:"api-docs",level:2},{value:"Running and Debugging your Extension",id:"running-and-debugging-your-extension",level:2}];function h(e){const n={a:"a",blockquote:"blockquote",code:"code",h2:"h2",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,i.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(n.p,{children:["This document outlines how to write your own extensions for ",(0,t.jsx)(n.strong,{children:"Phoenix Code"}),"."]}),"\n",(0,t.jsx)(n.h2,{id:"how-to-create-a-new-extension",children:"How to create a new Extension"}),"\n",(0,t.jsxs)(n.p,{children:["Click on the link below and follow the instructions there to start:\n",(0,t.jsx)(n.a,{href:"https://github.com/phcode-dev/extension-template",children:"Create an Extension"})]}),"\n",(0,t.jsx)(n.h2,{id:"api-docs",children:"API docs"}),"\n",(0,t.jsx)(n.p,{children:"Please refer to the links below for extension API docs and code references."}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["Phoenix Code APIs - ",(0,t.jsx)(n.a,{href:"./API-Reference/NodeConnector",children:"API Reference"})]}),"\n",(0,t.jsxs)(n.li,{children:["Take a look at our default extensions for code reference - ",(0,t.jsx)(n.a,{href:"https://github.com/phcode-dev/phoenix/tree/main/src/extensions/default",children:"Default Extensions"})]}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"running-and-debugging-your-extension",children:"Running and Debugging your Extension"}),"\n",(0,t.jsx)(n.p,{children:"Follow the steps below to run and debug your extension:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"Clone your extension repository onto the machine."}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Go to ",(0,t.jsx)(n.a,{href:"https://create.phcode.dev",children:"https://create.phcode.dev"}),". This is a development-focused version of phcode.dev which shows non minified JS/CSS files in the browser developer tools."]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Now, open the cloned folder in ",(0,t.jsx)(n.code,{children:"create.phcode.dev"}),"."]}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.blockquote,{children:["\n",(0,t.jsxs)(n.p,{children:["Refer to ",(0,t.jsx)(n.a,{href:"https://docs.phcode.dev/docs/quick-start-project#open-folder",children:"this guide"})," to see how to open a folder in Phoenix Code."]}),"\n"]}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["Select ",(0,t.jsx)(n.code,{children:"Debug > Load Project As Extension"})]}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{alt:"Debug Menu Image",src:o(78732).A+"",title:"Click on Debug > Load Project As Extension",width:"506",height:"377"})}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"The extension will be loaded in Phoenix Code."}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"You can now make code changes and live preview them."}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.blockquote,{children:["\n",(0,t.jsxs)(n.p,{children:["You can also select ",(0,t.jsx)(n.code,{children:"Debug > Reload Project As Extension"})," to test the new code changes."]}),"\n"]}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["When you are done developing the extension, select ",(0,t.jsx)(n.code,{children:"Debug > Unload Project As Extension"})," to unload the extension."]}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"You can use the browser developer tools to debug the extension."})})]})}function a(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(h,{...e})}):h(e)}},78732:(e,n,o)=>{o.d(n,{A:()=>s});const s=o.p+"assets/images/debug-menu-23e79f25995442a5665046bc8c8d6bb4.png"},28453:(e,n,o)=>{o.d(n,{R:()=>r,x:()=>c});var s=o(96540);const t={},i=s.createContext(t);function r(e){const n=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:r(e.components),s.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/bfc1e538.fb95b000.js b/assets/js/bfc1e538.fb95b000.js new file mode 100644 index 00000000..5f0241f6 --- /dev/null +++ b/assets/js/bfc1e538.fb95b000.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1284],{96001:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>o,contentTitle:()=>l,default:()=>j,frontMatter:()=>d,metadata:()=>t,toc:()=>c});const t=JSON.parse('{"id":"API-Reference/JSUtils/ScopeManager","title":"ScopeManager","description":"Import :","source":"@site/api/API-Reference/JSUtils/ScopeManager.md","sourceDirName":"API-Reference/JSUtils","slug":"/API-Reference/JSUtils/ScopeManager","permalink":"/api/API-Reference/JSUtils/ScopeManager","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"Preferences","permalink":"/api/API-Reference/JSUtils/Preferences"},"next":{"title":"Session","permalink":"/api/API-Reference/JSUtils/Session"}}');var r=s(74848),i=s(28453);const d={},l=void 0,o={},c=[{value:"Import :",id:"import-",level:3},{value:"getBuiltins() \u21d2 Array.<string>",id:"getbuiltins--arraystring",level:2},{value:"postMessage()",id:"postmessage",level:2},{value:"addPendingRequest(file, offset, type) \u21d2 jQuery.Promise",id:"addpendingrequestfile-offset-type--jquerypromise",level:2},{value:"getPendingRequest(file, offset, type) \u21d2 jQuery.Deferred",id:"getpendingrequestfile-offset-type--jquerydeferred",level:2},{value:"getResolvedPath(file) \u21d2 string",id:"getresolvedpathfile--string",level:2},{value:"filterText(the) \u21d2 string",id:"filtertextthe--string",level:2},{value:"requestJumptoDef(session, document, offset) \u21d2 jQuery.Promise",id:"requestjumptodefsession-document-offset--jquerypromise",level:2},{value:"getTernHints(fileInfo, offset, isProperty) \u21d2 jQuery.Promise",id:"getternhintsfileinfo-offset-isproperty--jquerypromise",level:2},{value:"requestGuesses(session, document) \u21d2 jQuery.Promise",id:"requestguessessession-document--jquerypromise",level:2},{value:"TernModule()",id:"ternmodule",level:2},{value:"TernModule.getResolvedPath(file) \u21d2 string",id:"ternmodulegetresolvedpathfile--string",level:3},{value:"TernModule.postMessage()",id:"ternmodulepostmessage",level:3},{value:"TernModule.handleEditorChange(session, document, previousDocument)",id:"ternmodulehandleeditorchangesession-document-previousdocument",level:3},{value:"requestParameterHint(session, functionOffset) \u21d2 jQuery.Promise",id:"requestparameterhintsession-functionoffset--jquerypromise",level:2},{value:"requestHints(session, document) \u21d2 jQuery.Promise",id:"requesthintssession-document--jquerypromise",level:2},{value:"handleFileChange(changeList)",id:"handlefilechangechangelist",level:2},{value:"handleEditorChange(session, document, previousDocument)",id:"handleeditorchangesession-document-previousdocument",level:2},{value:"handleProjectClose()",id:"handleprojectclose",level:2},{value:"handleProjectOpen([projectRootPath])",id:"handleprojectopenprojectrootpath",level:2}];function h(e){const n={a:"a",br:"br",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(n.h3,{id:"import-",children:"Import :"}),"\n",(0,r.jsx)(n.pre,{children:(0,r.jsx)(n.code,{className:"language-js",children:'const ScopeManager = brackets.getModule("JSUtils/ScopeManager")\n'})}),"\n",(0,r.jsx)("a",{name:"getBuiltins"}),"\n",(0,r.jsxs)(n.h2,{id:"getbuiltins--arraystring",children:["getBuiltins() \u21d2 ",(0,r.jsx)("code",{children:"Array."})]}),"\n",(0,r.jsx)(n.p,{children:"An array of library names that contain JavaScript builtins definitions."}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global function",(0,r.jsx)(n.br,{}),"\n",(0,r.jsx)(n.strong,{children:"Returns"}),": ",(0,r.jsx)("code",{children:"Array."})," - - array of library names."]}),"\n",(0,r.jsx)("a",{name:"postMessage"}),"\n",(0,r.jsx)(n.h2,{id:"postmessage",children:"postMessage()"}),"\n",(0,r.jsx)(n.p,{children:"Send a message to the tern module - if the module is being initialized,\nthe message will not be posted until initialization is complete"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,r.jsx)("a",{name:"addPendingRequest"}),"\n",(0,r.jsxs)(n.h2,{id:"addpendingrequestfile-offset-type--jquerypromise",children:["addPendingRequest(file, offset, type) \u21d2 ",(0,r.jsx)("code",{children:"jQuery.Promise"})]}),"\n",(0,r.jsx)(n.p,{children:"Add a pending request waiting for the tern-module to complete.\nIf file is a detected exclusion, then reject request."}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global function",(0,r.jsx)(n.br,{}),"\n",(0,r.jsx)(n.strong,{children:"Returns"}),": ",(0,r.jsx)("code",{children:"jQuery.Promise"})," - - the promise for the request"]}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Param"}),(0,r.jsx)(n.th,{children:"Type"}),(0,r.jsx)(n.th,{children:"Description"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"file"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"string"})}),(0,r.jsx)(n.td,{children:"the name of the file"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"offset"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"Object"})}),(0,r.jsx)(n.td,{children:"the offset into the file the request is for"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"type"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"string"})}),(0,r.jsx)(n.td,{children:"the type of request"})]})]})]}),"\n",(0,r.jsx)("a",{name:"getPendingRequest"}),"\n",(0,r.jsxs)(n.h2,{id:"getpendingrequestfile-offset-type--jquerydeferred",children:["getPendingRequest(file, offset, type) \u21d2 ",(0,r.jsx)("code",{children:"jQuery.Deferred"})]}),"\n",(0,r.jsx)(n.p,{children:"Get any pending $.Deferred object waiting on the specified file and request type"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global function",(0,r.jsx)(n.br,{}),"\n",(0,r.jsx)(n.strong,{children:"Returns"}),": ",(0,r.jsx)("code",{children:"jQuery.Deferred"})," - - the $.Deferred for the request"]}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Param"}),(0,r.jsx)(n.th,{children:"Type"}),(0,r.jsx)(n.th,{children:"Description"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"file"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"string"})}),(0,r.jsx)(n.td,{children:"the file"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"offset"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"Object"})}),(0,r.jsx)(n.td,{children:"the offset into the file the request is for"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"type"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"string"})}),(0,r.jsx)(n.td,{children:"the type of request"})]})]})]}),"\n",(0,r.jsx)("a",{name:"getResolvedPath"}),"\n",(0,r.jsxs)(n.h2,{id:"getresolvedpathfile--string",children:["getResolvedPath(file) \u21d2 ",(0,r.jsx)("code",{children:"string"})]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global function",(0,r.jsx)(n.br,{}),"\n",(0,r.jsx)(n.strong,{children:"Returns"}),": ",(0,r.jsx)("code",{children:"string"})," - returns the path we resolved when we tried to parse the file, or undefined"]}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Param"}),(0,r.jsx)(n.th,{children:"Type"}),(0,r.jsx)(n.th,{children:"Description"})]})}),(0,r.jsx)(n.tbody,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"file"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"string"})}),(0,r.jsx)(n.td,{children:"a relative path"})]})})]}),"\n",(0,r.jsx)("a",{name:"filterText"}),"\n",(0,r.jsxs)(n.h2,{id:"filtertextthe--string",children:["filterText(the) \u21d2 ",(0,r.jsx)("code",{children:"string"})]}),"\n",(0,r.jsx)(n.p,{children:"check to see if the text we are sending to Tern is too long."}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global function",(0,r.jsx)(n.br,{}),"\n",(0,r.jsx)(n.strong,{children:"Returns"}),": ",(0,r.jsx)("code",{children:"string"})," - the text, or the empty text if the original was too long"]}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Param"}),(0,r.jsx)(n.th,{children:"Type"}),(0,r.jsx)(n.th,{children:"Description"})]})}),(0,r.jsx)(n.tbody,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"the"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"string"})}),(0,r.jsx)(n.td,{children:"text to check"})]})})]}),"\n",(0,r.jsx)("a",{name:"requestJumptoDef"}),"\n",(0,r.jsxs)(n.h2,{id:"requestjumptodefsession-document-offset--jquerypromise",children:["requestJumptoDef(session, document, offset) \u21d2 ",(0,r.jsx)("code",{children:"jQuery.Promise"})]}),"\n",(0,r.jsx)(n.p,{children:"Request Jump-To-Definition from Tern."}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global function",(0,r.jsx)(n.br,{}),"\n",(0,r.jsx)(n.strong,{children:"Returns"}),": ",(0,r.jsx)("code",{children:"jQuery.Promise"})," - - The promise will not complete until tern\nhas completed."]}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Param"}),(0,r.jsx)(n.th,{children:"Type"}),(0,r.jsx)(n.th,{children:"Description"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"session"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"session"})}),(0,r.jsx)(n.td,{children:"the session"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"document"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"Document"})}),(0,r.jsx)(n.td,{children:"the document"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"offset"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"Object"})}),(0,r.jsx)(n.td,{children:"the offset into the document"})]})]})]}),"\n",(0,r.jsx)("a",{name:"getTernHints"}),"\n",(0,r.jsxs)(n.h2,{id:"getternhintsfileinfo-offset-isproperty--jquerypromise",children:["getTernHints(fileInfo, offset, isProperty) \u21d2 ",(0,r.jsx)("code",{children:"jQuery.Promise"})]}),"\n",(0,r.jsx)(n.p,{children:"Get a Promise for the completions from TernJS, for the file & offset passed in."}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global function",(0,r.jsx)(n.br,{}),"\n",(0,r.jsx)(n.strong,{children:"Returns"}),": ",(0,r.jsx)("code",{children:"jQuery.Promise"})," - - a promise that will resolve to an array of completions when\nit is done"]}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Param"}),(0,r.jsx)(n.th,{children:"Type"}),(0,r.jsx)(n.th,{children:"Description"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"fileInfo"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"Object"})}),(0,r.jsx)(n.td,{children:'- type of update, name of file, and the text of the update. For "full" updates, the whole text of the file is present. For "part" updates, the changed portion of the text. For "empty" updates, the file has not been modified and the text is empty.'})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"offset"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"Object"})}),(0,r.jsx)(n.td,{children:"the offset in the file the hints should be calculate at"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"isProperty"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"boolean"})}),(0,r.jsx)(n.td,{children:"true if getting a property hint, otherwise getting an identifier hint."})]})]})]}),"\n",(0,r.jsx)("a",{name:"requestGuesses"}),"\n",(0,r.jsxs)(n.h2,{id:"requestguessessession-document--jquerypromise",children:["requestGuesses(session, document) \u21d2 ",(0,r.jsx)("code",{children:"jQuery.Promise"})]}),"\n",(0,r.jsx)(n.p,{children:"Get a Promise for all of the known properties from TernJS, for the directory and file.\nThe properties will be used as guesses in tern."}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global function",(0,r.jsx)(n.br,{}),"\n",(0,r.jsx)(n.strong,{children:"Returns"}),": ",(0,r.jsx)("code",{children:"jQuery.Promise"})," - - The promise will not complete until the tern\nrequest has completed."]}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Param"}),(0,r.jsx)(n.th,{children:"Type"}),(0,r.jsx)(n.th,{children:"Description"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"session"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"Session"})}),(0,r.jsx)(n.td,{children:"the active hinting session"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"document"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"Document"})}),(0,r.jsx)(n.td,{children:"the document for which scope info is desired"})]})]})]}),"\n",(0,r.jsx)("a",{name:"TernModule"}),"\n",(0,r.jsx)(n.h2,{id:"ternmodule",children:"TernModule()"}),"\n",(0,r.jsx)(n.p,{children:"Encapsulate all the logic to talk to the tern module. This will create\na new instance of a TernModule, which the rest of the hinting code can use to talk\nto the tern node domain, without worrying about initialization, priming the pump, etc."}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.a,{href:"#TernModule",children:"TernModule()"}),"\n",(0,r.jsxs)(n.ul,{children:["\n",(0,r.jsxs)(n.li,{children:[(0,r.jsx)(n.a,{href:"#TernModule..getResolvedPath",children:".getResolvedPath(file)"})," \u21d2 ",(0,r.jsx)("code",{children:"string"})]}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#TernModule..postMessage",children:".postMessage()"})}),"\n",(0,r.jsx)(n.li,{children:(0,r.jsx)(n.a,{href:"#TernModule..handleEditorChange",children:".handleEditorChange(session, document, previousDocument)"})}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,r.jsx)("a",{name:"TernModule..getResolvedPath"}),"\n",(0,r.jsxs)(n.h3,{id:"ternmodulegetresolvedpathfile--string",children:["TernModule.getResolvedPath(file) \u21d2 ",(0,r.jsx)("code",{children:"string"})]}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,r.jsx)(n.a,{href:"#TernModule",children:(0,r.jsx)("code",{children:"TernModule"})}),(0,r.jsx)(n.br,{}),"\n",(0,r.jsx)(n.strong,{children:"Returns"}),": ",(0,r.jsx)("code",{children:"string"})," - returns the path we resolved when we tried to parse the file, or undefined"]}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Param"}),(0,r.jsx)(n.th,{children:"Type"}),(0,r.jsx)(n.th,{children:"Description"})]})}),(0,r.jsx)(n.tbody,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"file"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"string"})}),(0,r.jsx)(n.td,{children:"a relative path"})]})})]}),"\n",(0,r.jsx)("a",{name:"TernModule..postMessage"}),"\n",(0,r.jsx)(n.h3,{id:"ternmodulepostmessage",children:"TernModule.postMessage()"}),"\n",(0,r.jsx)(n.p,{children:"Send a message to the tern node domain - if the module is being initialized,\nthe message will not be posted until initialization is complete"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,r.jsx)(n.a,{href:"#TernModule",children:(0,r.jsx)("code",{children:"TernModule"})})]}),"\n",(0,r.jsx)("a",{name:"TernModule..handleEditorChange"}),"\n",(0,r.jsx)(n.h3,{id:"ternmodulehandleeditorchangesession-document-previousdocument",children:"TernModule.handleEditorChange(session, document, previousDocument)"}),"\n",(0,r.jsx)(n.p,{children:"Called each time a new editor becomes active."}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": inner method of ",(0,r.jsx)(n.a,{href:"#TernModule",children:(0,r.jsx)("code",{children:"TernModule"})})]}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Param"}),(0,r.jsx)(n.th,{children:"Type"}),(0,r.jsx)(n.th,{children:"Description"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"session"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"Session"})}),(0,r.jsx)(n.td,{children:"the active hinting session (TODO: currently unused by doEditorChange())"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"document"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"Document"})}),(0,r.jsx)(n.td,{children:"the document of the editor that has changed"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"previousDocument"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"Document"})}),(0,r.jsx)(n.td,{children:"the document of the editor is changing from"})]})]})]}),"\n",(0,r.jsx)("a",{name:"requestParameterHint"}),"\n",(0,r.jsxs)(n.h2,{id:"requestparameterhintsession-functionoffset--jquerypromise",children:["requestParameterHint(session, functionOffset) \u21d2 ",(0,r.jsx)("code",{children:"jQuery.Promise"})]}),"\n",(0,r.jsx)(n.p,{children:"Request a parameter hint from Tern."}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global function",(0,r.jsx)(n.br,{}),"\n",(0,r.jsx)(n.strong,{children:"Returns"}),": ",(0,r.jsx)("code",{children:"jQuery.Promise"})," - - The promise will not complete until the\nhint has completed."]}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Param"}),(0,r.jsx)(n.th,{children:"Type"}),(0,r.jsx)(n.th,{children:"Description"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"session"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"Session"})}),(0,r.jsx)(n.td,{children:"the active hinting session"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"functionOffset"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"Object"})}),(0,r.jsx)(n.td,{children:"the offset of the function call."})]})]})]}),"\n",(0,r.jsx)("a",{name:"requestHints"}),"\n",(0,r.jsxs)(n.h2,{id:"requesthintssession-document--jquerypromise",children:["requestHints(session, document) \u21d2 ",(0,r.jsx)("code",{children:"jQuery.Promise"})]}),"\n",(0,r.jsx)(n.p,{children:"Request hints from Tern."}),"\n",(0,r.jsx)(n.p,{children:"Note that successive calls to getScope may return the same objects, so\nclients that wish to modify those objects (e.g., by annotating them based\non some temporary context) should copy them first. See, e.g.,\nSession.getHints()."}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global function",(0,r.jsx)(n.br,{}),"\n",(0,r.jsx)(n.strong,{children:"Returns"}),": ",(0,r.jsx)("code",{children:"jQuery.Promise"})," - - The promise will not complete until the tern\nhints have completed."]}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Param"}),(0,r.jsx)(n.th,{children:"Type"}),(0,r.jsx)(n.th,{children:"Description"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"session"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"Session"})}),(0,r.jsx)(n.td,{children:"the active hinting session"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"document"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"Document"})}),(0,r.jsx)(n.td,{children:"the document for which scope info is desired"})]})]})]}),"\n",(0,r.jsx)("a",{name:"handleFileChange"}),"\n",(0,r.jsx)(n.h2,{id:"handlefilechangechangelist",children:"handleFileChange(changeList)"}),"\n",(0,r.jsx)(n.p,{children:"Called each time the file associated with the active editor changes.\nMarks the file as being dirty."}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Param"}),(0,r.jsx)(n.th,{children:"Type"}),(0,r.jsx)(n.th,{children:"Description"})]})}),(0,r.jsx)(n.tbody,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"changeList"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"Object"})}),(0,r.jsxs)(n.td,{children:["An object representing the change range with ",(0,r.jsx)(n.code,{children:"from"})," and ",(0,r.jsx)(n.code,{children:"to"})," properties, each containing ",(0,r.jsx)(n.code,{children:"line"})," and ",(0,r.jsx)(n.code,{children:"ch"})," numbers."]})]})})]}),"\n",(0,r.jsx)("a",{name:"handleEditorChange"}),"\n",(0,r.jsx)(n.h2,{id:"handleeditorchangesession-document-previousdocument",children:"handleEditorChange(session, document, previousDocument)"}),"\n",(0,r.jsx)(n.p,{children:"Called each time a new editor becomes active."}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Param"}),(0,r.jsx)(n.th,{children:"Type"}),(0,r.jsx)(n.th,{children:"Description"})]})}),(0,r.jsxs)(n.tbody,{children:[(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"session"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"Session"})}),(0,r.jsx)(n.td,{children:"the active hinting session"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"document"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"Document"})}),(0,r.jsx)(n.td,{children:"the document of the editor that has changed"})]}),(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"previousDocument"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"Document"})}),(0,r.jsx)(n.td,{children:"the document of the editor is changing from"})]})]})]}),"\n",(0,r.jsx)("a",{name:"handleProjectClose"}),"\n",(0,r.jsx)(n.h2,{id:"handleprojectclose",children:"handleProjectClose()"}),"\n",(0,r.jsx)(n.p,{children:"Do some cleanup when a project is closed.\nClean up previous analysis data from the module"}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,r.jsx)("a",{name:"handleProjectOpen"}),"\n",(0,r.jsx)(n.h2,{id:"handleprojectopenprojectrootpath",children:"handleProjectOpen([projectRootPath])"}),"\n",(0,r.jsx)(n.p,{children:"Read in project preferences when a new project is opened.\nLook in the project root directory for a preference file."}),"\n",(0,r.jsxs)(n.p,{children:[(0,r.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,r.jsxs)(n.table,{children:[(0,r.jsx)(n.thead,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.th,{children:"Param"}),(0,r.jsx)(n.th,{children:"Type"}),(0,r.jsx)(n.th,{children:"Description"})]})}),(0,r.jsx)(n.tbody,{children:(0,r.jsxs)(n.tr,{children:[(0,r.jsx)(n.td,{children:"[projectRootPath]"}),(0,r.jsx)(n.td,{children:(0,r.jsx)("code",{children:"string"})}),(0,r.jsx)(n.td,{children:"new project root path(optional). Only needed for unit tests."})]})})]})]})}function j(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,r.jsx)(n,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},28453:(e,n,s)=>{s.d(n,{R:()=>d,x:()=>l});var t=s(96540);const r={},i=t.createContext(r);function d(e){const n=t.useContext(i);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:d(e.components),t.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/c069d0ce.73297186.js b/assets/js/c069d0ce.73297186.js new file mode 100644 index 00000000..a85af941 --- /dev/null +++ b/assets/js/c069d0ce.73297186.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3489],{47698:a=>{a.exports=JSON.parse('{"tag":{"label":"Mac","permalink":"/blog/tags/mac","allTagsPath":"/blog/tags","count":10,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/mac","page":1,"postsPerPage":10,"totalPages":1,"totalCount":10,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]); \ No newline at end of file diff --git a/assets/js/c141421f.810a01be.js b/assets/js/c141421f.810a01be.js new file mode 100644 index 00000000..78aca515 --- /dev/null +++ b/assets/js/c141421f.810a01be.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[957],{40936:e=>{e.exports=JSON.parse('{"name":"docusaurus-theme-search-algolia","id":"default"}')}}]); \ No newline at end of file diff --git a/assets/js/c15d9823.5d84c33f.js b/assets/js/c15d9823.5d84c33f.js new file mode 100644 index 00000000..9a798625 --- /dev/null +++ b/assets/js/c15d9823.5d84c33f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8146],{29328:e=>{e.exports=JSON.parse('{"metadata":{"permalink":"/blog","page":1,"postsPerPage":10,"totalPages":2,"totalCount":12,"nextPage":"/blog/page/2","blogDescription":"Blog","blogTitle":"Blog"}}')}}]); \ No newline at end of file diff --git a/assets/js/c3217c04.e3a0e728.js b/assets/js/c3217c04.e3a0e728.js new file mode 100644 index 00000000..e0492ba7 --- /dev/null +++ b/assets/js/c3217c04.e3a0e728.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5300],{91469:(e,r,n)=>{n.r(r),n.d(r,{assets:()=>l,contentTitle:()=>o,default:()=>p,frontMatter:()=>d,metadata:()=>t,toc:()=>a});const t=JSON.parse('{"id":"API-Reference/utils/DragAndDrop","title":"DragAndDrop","description":"Import :","source":"@site/api/API-Reference/utils/DragAndDrop.md","sourceDirName":"API-Reference/utils","slug":"/API-Reference/utils/DragAndDrop","permalink":"/api/API-Reference/utils/DragAndDrop","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"DeprecationWarning","permalink":"/api/API-Reference/utils/DeprecationWarning"},"next":{"title":"DropdownEventHandler","permalink":"/api/API-Reference/utils/DropdownEventHandler"}}');var s=n(74848),i=n(28453);const d={},o=void 0,l={},a=[{value:"Import :",id:"import-",level:3},{value:"isValidDrop(items) \u21d2 boolean",id:"isvaliddropitems--boolean",level:2},{value:"openDroppedFiles(paths) \u21d2 Promise",id:"opendroppedfilespaths--promise",level:2},{value:"attachHandlers()",id:"attachhandlers",level:2}];function c(e){const r={br:"br",code:"code",h2:"h2",h3:"h3",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(r.h3,{id:"import-",children:"Import :"}),"\n",(0,s.jsx)(r.pre,{children:(0,s.jsx)(r.code,{className:"language-js",children:'const DragAndDrop = brackets.getModule("utils/DragAndDrop")\n'})}),"\n",(0,s.jsx)("a",{name:"isValidDrop"}),"\n",(0,s.jsxs)(r.h2,{id:"isvaliddropitems--boolean",children:["isValidDrop(items) \u21d2 ",(0,s.jsx)("code",{children:"boolean"})]}),"\n",(0,s.jsx)(r.p,{children:"Returns true if the drag and drop items contains valid drop objects."}),"\n",(0,s.jsxs)(r.p,{children:[(0,s.jsx)(r.strong,{children:"Kind"}),": global function",(0,s.jsx)(r.br,{}),"\n",(0,s.jsx)(r.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"boolean"})," - True if one or more items can be dropped."]}),"\n",(0,s.jsxs)(r.table,{children:[(0,s.jsx)(r.thead,{children:(0,s.jsxs)(r.tr,{children:[(0,s.jsx)(r.th,{children:"Param"}),(0,s.jsx)(r.th,{children:"Type"}),(0,s.jsx)(r.th,{children:"Description"})]})}),(0,s.jsx)(r.tbody,{children:(0,s.jsxs)(r.tr,{children:[(0,s.jsx)(r.td,{children:"items"}),(0,s.jsx)(r.td,{children:(0,s.jsx)("code",{children:"Array."})}),(0,s.jsx)(r.td,{children:"Array of items being dragged"})]})})]}),"\n",(0,s.jsx)("a",{name:"openDroppedFiles"}),"\n",(0,s.jsxs)(r.h2,{id:"opendroppedfilespaths--promise",children:["openDroppedFiles(paths) \u21d2 ",(0,s.jsx)("code",{children:"Promise"})]}),"\n",(0,s.jsx)(r.p,{children:"Open dropped files"}),"\n",(0,s.jsxs)(r.p,{children:[(0,s.jsx)(r.strong,{children:"Kind"}),": global function",(0,s.jsx)(r.br,{}),"\n",(0,s.jsx)(r.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"Promise"})," - Promise that is resolved if all files are opened, or rejected\nif there was an error."]}),"\n",(0,s.jsxs)(r.table,{children:[(0,s.jsx)(r.thead,{children:(0,s.jsxs)(r.tr,{children:[(0,s.jsx)(r.th,{children:"Param"}),(0,s.jsx)(r.th,{children:"Type"}),(0,s.jsx)(r.th,{children:"Description"})]})}),(0,s.jsx)(r.tbody,{children:(0,s.jsxs)(r.tr,{children:[(0,s.jsx)(r.td,{children:"paths"}),(0,s.jsx)(r.td,{children:(0,s.jsx)("code",{children:"Array."})}),(0,s.jsx)(r.td,{children:"Array of file paths dropped on the application."})]})})]}),"\n",(0,s.jsx)("a",{name:"attachHandlers"}),"\n",(0,s.jsx)(r.h2,{id:"attachhandlers",children:"attachHandlers()"}),"\n",(0,s.jsx)(r.p,{children:"Attaches global drag & drop handlers to this window. This enables dropping files/folders to open them, and also\nprotects the Brackets app from being replaced by the browser trying to load the dropped file in its place."}),"\n",(0,s.jsxs)(r.p,{children:[(0,s.jsx)(r.strong,{children:"Kind"}),": global function"]})]})}function p(e={}){const{wrapper:r}={...(0,i.R)(),...e.components};return r?(0,s.jsx)(r,{...e,children:(0,s.jsx)(c,{...e})}):c(e)}},28453:(e,r,n)=>{n.d(r,{R:()=>d,x:()=>o});var t=n(96540);const s={},i=t.createContext(s);function d(e){const r=t.useContext(i);return t.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function o(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:d(e.components),t.createElement(i.Provider,{value:r},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/c3e0eab3.69bf5af2.js b/assets/js/c3e0eab3.69bf5af2.js new file mode 100644 index 00000000..4f9962ec --- /dev/null +++ b/assets/js/c3e0eab3.69bf5af2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8933],{58790:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>a,default:()=>m,frontMatter:()=>o,metadata:()=>i,toc:()=>d});const i=JSON.parse('{"id":"Workspace/terminal","title":"Terminal","description":"Phoenix Code has a built-in terminal so you can run commands without leaving the editor.","source":"@site/docs/05-Workspace/05-terminal.md","sourceDirName":"05-Workspace","slug":"/Features/terminal","permalink":"/docs/Features/terminal","draft":false,"unlisted":false,"editUrl":"https://github.com/phcode-dev/docs/blob/main/docs/05-Workspace/05-terminal.md","tags":[],"version":"current","sidebarPosition":5,"frontMatter":{"title":"Terminal","slug":"/Features/terminal"},"sidebar":"tutorialSidebar","previous":{"title":"Keyboard Shortcuts","permalink":"/docs/Features/keyboard-shortcuts"},"next":{"title":"Git","permalink":"/docs/Features/git"}}');var s=t(74848),r=t(28453),l=(t(96540),t(56399));const o={title:"Terminal",slug:"/Features/terminal"},a=void 0,c={},d=[{value:"What you can do",id:"what-you-can-do",level:2},{value:"Opening the Terminal",id:"opening-the-terminal",level:2},{value:"Tabs",id:"tabs",level:2},{value:"Shell Selection",id:"shell-selection",level:2},{value:"Keyboard Shortcuts",id:"keyboard-shortcuts",level:2}];function h(e){const n={a:"a",admonition:"admonition",blockquote:"blockquote",code:"code",em:"em",h2:"h2",img:"img",li:"li",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,r.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.p,{children:"Phoenix Code has a built-in terminal so you can run commands without leaving the editor."}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsx)(n.p,{children:"The terminal is available only in desktop apps."}),"\n"]}),"\n",(0,s.jsx)(l.A,{src:"https://docs-images.phcode.dev/videos/terminal/terminal-workflow.mp4"}),"\n",(0,s.jsx)(n.h2,{id:"what-you-can-do",children:"What you can do"}),"\n",(0,s.jsx)(n.p,{children:"A real terminal lives inside Phoenix Code now."}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.a,{href:"#tabs",children:"Tabbed terminal"})})," \u2014 open multiple shells at once, each with running-process info and friendly close prompts."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Right-click"})," for Copy, Paste, and Clear."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.a,{href:"#opening-the-terminal",children:"Open in Integrated Terminal"})})," from any folder in the file tree."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.a,{href:"#keyboard-shortcuts",children:"Shift+Escape"})})," flips focus between editor and terminal; ",(0,s.jsx)(n.strong,{children:"F4"})," opens the panel and cycles between terminal tabs when multiple are open."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.a,{href:"#keyboard-shortcuts",children:"All keyboard shortcuts"})})," route to the terminal when it's focused \u2014 ",(0,s.jsx)(n.code,{children:"Ctrl+L"}),", ",(0,s.jsx)(n.code,{children:"Ctrl+K"}),", the works."]}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"opening-the-terminal",children:"Opening the Terminal"}),"\n",(0,s.jsx)(n.p,{children:"Open the terminal in any of these ways:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["Click the ",(0,s.jsx)(n.strong,{children:"Terminal"})," button in the bottom-right toolbar"]}),"\n",(0,s.jsxs)(n.li,{children:["Go to ",(0,s.jsx)(n.strong,{children:"View > Terminal"})," from the menu bar"]}),"\n",(0,s.jsxs)(n.li,{children:["Press ",(0,s.jsx)(n.code,{children:"F4"})]}),"\n",(0,s.jsxs)(n.li,{children:["Right-click a file or folder in the project tree and choose ",(0,s.jsx)(n.strong,{children:"Integrated Terminal"}),". The terminal opens at that folder (or the file's containing folder)"]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"Integrated Terminal item in the project tree right-click menu",src:t(34698).A+"",title:"Right-click a file or folder, then Open In > Integrated Terminal",width:"621",height:"634"})}),"\n",(0,s.jsxs)(n.admonition,{type:"note",children:[(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Terminal"})," opens your system's terminal app (macOS Terminal, Windows Command Prompt, etc.) at that location."]}),(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Integrated Terminal"})," opens inside Phoenix Code's built-in panel."]})]}),"\n",(0,s.jsx)(n.h2,{id:"tabs",children:"Tabs"}),"\n",(0,s.jsx)(n.p,{children:"You can have multiple terminals open at the same time, each in its own tab. The tab sidebar shows the running process name for each terminal."}),"\n",(0,s.jsxs)(n.p,{children:["To create a new tab, click the ",(0,s.jsx)(n.strong,{children:"+"})," button at the bottom of the tab sidebar."]}),"\n",(0,s.jsxs)(n.p,{children:["To close a single tab, hover over it and click the ",(0,s.jsx)(n.strong,{children:"X"})," button. To close every terminal at once, click the panel's X button. Phoenix Code asks for confirmation if any process is still running."]}),"\n",(0,s.jsxs)(n.p,{children:["When the terminal is focused and more than one tab is open, pressing ",(0,s.jsx)(n.code,{children:"F4"})," cycles to the next tab."]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"Terminal panel with multiple tabs in the sidebar",src:t(47627).A+"",title:"Terminal panel showing the tab sidebar, new-tab button, and shell dropdown",width:"1352",height:"529"})}),"\n",(0,s.jsx)(n.h2,{id:"shell-selection",children:"Shell Selection"}),"\n",(0,s.jsxs)(n.p,{children:["Click the ",(0,s.jsx)(n.strong,{children:"dropdown button"})," ",(0,s.jsx)(n.em,{children:"(chevron icon)"})," next to the new tab button to pick a different shell. The default options are:"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"macOS"}),": zsh, bash, fish"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Linux"}),": bash, zsh, fish"]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Windows"}),": PowerShell, Command Prompt, Git Bash, WSL"]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"Selecting a shell sets it as the default and opens a new terminal with it right away."}),"\n",(0,s.jsxs)(n.blockquote,{children:["\n",(0,s.jsx)(n.p,{children:"Only shells installed on your system are shown. Any other compatible shell on your system (for example, PowerShell Core on Windows) also appears in the list."}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"keyboard-shortcuts",children:"Keyboard Shortcuts"}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Action"}),(0,s.jsx)(n.th,{children:"Shortcut"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Open terminal / cycle to next tab (when more than one is open)"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"F4"})})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Switch focus between editor and terminal"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"Shift + Escape"})})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Clear terminal buffer"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.code,{children:"Ctrl/Cmd + K"})})]})]})]})]})}function m(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},56399:(e,n,t)=>{t.d(n,{A:()=>r});var i=t(96540),s=t(74848);const r=({src:e,winLinuxTitle:n,macTitle:t})=>{const[r,l]=(0,i.useState)("");(0,i.useEffect)((()=>{navigator.platform.toLowerCase().includes("mac")?l(t):l(n)}),[n,t]);return(0,s.jsxs)("div",{style:{maxHeight:"68vh",width:"100%",display:"flex",justifyContent:"center",alignItems:"center",flexDirection:"column"},children:[(0,s.jsxs)("video",{style:{height:"90%",width:"100%"},controls:!0,autoPlay:!0,muted:!0,loop:!0,children:[(0,s.jsx)("source",{src:e,type:"video/mp4"}),"Your browser does not support the video tag."]}),(0,s.jsx)("div",{style:{width:"100%",textAlign:"center",fontSize:"1em",marginTop:"10px"},children:r})]})}},34698:(e,n,t)=>{t.d(n,{A:()=>i});const i=t.p+"assets/images/integrated-terminal-context-menu-b8078ea73080b9ebeaa1c9919fa3fea5.png"},47627:(e,n,t)=>{t.d(n,{A:()=>i});const i=t.p+"assets/images/terminal-tabs-024d68ec2b11e757bebb7293503e4457.png"},28453:(e,n,t)=>{t.d(n,{R:()=>l,x:()=>o});var i=t(96540);const s={},r=i.createContext(s);function l(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/c4f5d8e4.289d9470.js b/assets/js/c4f5d8e4.289d9470.js new file mode 100644 index 00000000..081cb565 --- /dev/null +++ b/assets/js/c4f5d8e4.289d9470.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2634],{43735:(c,s,m)=>{m.d(s,{A:()=>t});var l,a=m(96540);function e(){return e=Object.assign?Object.assign.bind():function(c){for(var s=1;sa.createElement("svg",e({xmlns:"http://www.w3.org/2000/svg",width:400,height:400,viewBox:"0 0 400 400","aria-labelledby":s},m),c?a.createElement("title",{id:s},c):null,l||(l=a.createElement("g",{fillRule:"evenodd"},a.createElement("path",{fill:"#f0f0f0",d:"M240.889 18c-.458.147-.477.181-.111.197.244.01.594-.079.778-.197.389-.252.119-.252-.667 0m-55 7.556-.667.169.709.026c.39.015.771-.073.847-.195.152-.246.077-.246-.889 0m-26 3.555c-.429.184-.427.192.042.207.268.008.549-.085.625-.207.162-.263-.055-.263-.667 0M152 30.222c-.458.147-.477.181-.111.197.244.01.594-.078.778-.197.389-.251.119-.251-.667 0m10.667 72.53c0 .047.25.133.555.191.306.059.556.02.556-.085s-.25-.191-.556-.191c-.305 0-.555.038-.555.085m8 1.111c0 .047.25.133.555.191.306.059.556.02.556-.085s-.25-.191-.556-.191c-.305 0-.555.038-.555.085M202 108.222c.76.244 1.344.244.778 0a2.6 2.6 0 0 0-.889-.184c-.357.005-.336.041.111.184m7.574.969c.051.044.393.147.759.229.487.109.577.088.334-.077-.3-.203-1.316-.344-1.093-.152m7.778 1.11c.051.044.442.144.87.222.547.101.679.078.445-.075-.302-.198-1.536-.335-1.315-.147M64.288 111.63c.063.163-.001.299-.143.302-.576.013-2.354 1.136-2.009 1.269.63.242.953.139 1.745-.557.768-.675 1.03-1.311.54-1.311-.136 0-.195.134-.133.297m6.423.092c.065.329.284.378 1.405.319 2.715-.144 2.963-.708.312-.708-1.59 0-1.785.045-1.717.389m8.845-.171c0 .225.391.338 1.846.534.995.133 1.487-.013 1.487-.442 0-.237-.39-.31-1.667-.31-.941 0-1.666.095-1.666.218m8.892-.044c-.002.157.146.342.33.413.183.07.333.317.333.548 0 .268.156.421.431.421.641 0 .754-.371.303-.991-.428-.588-.954-.745-.96-.287q-.003.278-.218-.055c-.151-.234-.217-.248-.219-.049m144.663 1.023c0 .048.295.129.655.182s.604.015.542-.086c-.11-.178-1.197-.265-1.197-.096m-175.271.845c-.889.455-.916.497-.504.785.543.381 1.331.028 1.331-.596 0-.231.175-.466.389-.522.275-.072.292-.108.055-.124-.183-.013-.755.193-1.271.457m36.7-.137c.192.192.349.439.349.548 0 .314.821.67 1.206.523.554-.213.418-.418-.619-.936-1.148-.573-1.413-.611-.936-.135m-40.753 1.306c-.147.177-.633.443-1.079.59-.753.249-.778.284-.339.479.666.298 1.734-.242 1.767-.894.03-.585.003-.599-.349-.175m45.247.254c.39.596 1.123.98 1.869.98.635 0 .523-.373-.163-.545-.327-.082-.84-.343-1.141-.58-.764-.601-1.012-.537-.565.145m2.897.69a.69.69 0 0 1 .555.581c.075.522.853.693 1.01.222.103-.311-1.072-.971-1.652-.927-.295.022-.272.055.087.124m-52.042.527c-.367.235-.967.431-1.333.435-.583.007-.615.038-.257.246.939.546 2.368.123 2.368-.702 0-.241-.025-.431-.056-.422-.03.009-.355.208-.722.443m-3.412 1.102c-.444.37-.469.456-.166.572.537.206 1.022-.065 1.022-.571 0-.559-.186-.559-.856-.001m59.301-.159c0 .71 1.085 1.423 1.514.994.166-.166.007-.391-.538-.76-.896-.608-.976-.627-.976-.234m-61.548 1.123c-.324.324-.286.816.053.686.461-.178.849-.915.481-.915a.88.88 0 0 0-.534.229m64.328.21c.029.268.065.562.08.653.049.288.918.182.911-.111-.004-.152-.24-.447-.525-.653-.5-.363-.516-.36-.466.111m-66.614.838c-.408.238-.538.871-.179.871.329 0 .518-.444.193-.452-.16-.005-.041-.151.264-.326.306-.174.456-.318.334-.318-.123-.001-.398.1-.612.225m69.203.539c.056.492.206.684.575.736.64.091.629-.02-.075-.78l-.576-.621zm-71.914 1.21c-.614.641-.623.678-.171.678.263 0 .588-.206.722-.457.428-.799.121-.922-.551-.221m73.998.028c.331.639 1.569 1.398 1.924 1.178.283-.175-.08-.751-.473-.751-.21 0-.617-.25-.904-.555-.713-.759-.974-.698-.547.128m-75.964 1.227c-.219.293-.627.534-.905.534-.279 0-.749.272-1.045.604-.297.332-.38.483-.185.335.194-.148.413-.21.485-.137.281.281 1.954-.676 2.084-1.192q.27-1.084-.434-.144m79.997 1.145c.228.641.544.944.985.944.59 0 .518-.327-.138-.626-.305-.139-.555-.355-.555-.48a.22.22 0 0 0-.216-.227c-.118 0-.153.175-.076.389m-83.922 1.175c-.423.362-.881.658-1.017.658s-.49.258-.786.574l-.539.573.667-.164c1.046-.259 2.333-1.16 2.333-1.634 0-.233.125-.473.278-.535s.178-.116.055-.121c-.122-.004-.568.288-.991.649m87.517 1.238c.158.6 1.881 1.865 2.159 1.587.218-.218-.192-.823-.65-.961-.263-.08-.749-.397-1.079-.706l-.601-.562zm-92.147 2.319c-.156.25-.472.525-.701.611-.899.338-8.9 8.101-8.9 8.636 0 .156-.3.59-.667.965-.366.375-.666.781-.666.902 0 .122.3.066.666-.124s.667-.418.667-.507c0-.591 4.949-5.709 7.833-8.1 1.614-1.337 2.167-1.929 2.167-2.317 0-.636-.039-.643-.399-.066m99.416 3.822c.222.698 4.447 4.918 4.742 4.735s-1.027-1.9-1.463-1.9c-.163 0-.296-.097-.296-.214 0-.287-2.66-3.12-2.929-3.12-.119 0-.142.22-.054.499m-28.35 1.636c-4.322 1.161-7.27 4.613-7.512 8.797-.612 10.557 13.478 14.395 18.426 5.02l.972-1.841.001-2.455c.004-6.417-5.883-11.132-11.887-9.521m-82.889 6.272c0 .142-.335.634-.745 1.093s-.811 1.106-.891 1.438c-.081.333-.346.711-.589.842-.243.13-.442.377-.442.549s-.203.455-.452.63c-.483.338-1.861 2.498-2.121 3.323-.086.273-.392.844-.68 1.27s-.525.889-.525 1.03-.25.42-.555.62c-.384.252-.556.566-.556 1.018 0 .427-.231.891-.666 1.336-.648.663-.91 1.451-.428 1.291.131-.044.223-.166.203-.272-.019-.105.055-.253.165-.328.111-.074.425-.602.697-1.173.273-.571.641-1.158.818-1.305s.322-.389.322-.537.3-.537.667-.863c.58-.517.734-.848.645-1.389-.012-.073.22-.398.515-.723.824-.906 1.355-1.851 1.388-2.471.021-.388.302-.745.908-1.155.499-.337 1.082-1.008 1.353-1.556.818-1.659 1.215-2.681 1.09-2.806-.067-.066-.121-.004-.121.138m118.829.303c.19.759 1.175 2.063 1.854 2.452.841.483.669-.029-.533-1.588-1.039-1.349-1.52-1.663-1.321-.864m2.855 3.79c.181.398.437 1.001.569 1.34s.55.779.929.975l.69.357-.383-.531c-.21-.291-.626-1.055-.923-1.696-.303-.652-.689-1.167-.876-1.167-.298 0-.298.081-.006.722m-67.017.268c-5.432.569-12.589 2.796-13.429 4.178-.236.389.687 2.387 2.284 4.943.305.489.894 1.539 1.308 2.334 2.553 4.902 2.311 4.749 5.672 3.579 6.194-2.157 15.807-1.803 20.276.746.489.279 1.139.58 1.444.671 6.271 1.849 14.544 12.001 15.939 19.559.828 4.483.254 4.174 7.654 4.126 6.543-.042 6.629-.061 6.629-1.417 0-7.13-4.236-17.29-9.906-23.755-1.908-2.176-2.637-2.51-4.695-2.152-6.37 1.109-12.597-2.032-15.492-7.814-.56-1.118-1.018-2.159-1.018-2.314 0-2.21-8.351-3.555-16.666-2.684m69.221 2.955c.087.213.235.644.33.957.281.934.856 1.925 1.19 2.053.172.067.379.469.459.894.079.425.297.9.484 1.055.387.321.753.951.872 1.499.122.566.982 2.656 1.697 4.128.349.72.635 1.432.635 1.581s.188.511.417.803c.229.291.49 1.065.579 1.72.164 1.193.708 2.032 1.317 2.032.433 0 .186-.851-.343-1.182-.3-.187-.414-.523-.414-1.216 0-.944-.434-2.068-1.029-2.663-.167-.167-.306-.622-.308-1.011-.004-.813-.172-1.125-.719-1.326-.289-.107-.388-.393-.388-1.117 0-.707-.169-1.211-.616-1.841-.338-.476-.96-1.566-1.382-2.422s-.995-1.776-1.274-2.045c-.278-.269-.506-.737-.506-1.04 0-.56-.512-1.248-.929-1.248-.131 0-.162.167-.072.389m-90.999 6.076c-6.841 5.681-11.551 12.31-13.868 19.518-.956 2.977-.956 2.982.832 5.527 4.302 6.128 4.269 11.847-.104 17.668-1.409 1.877-1.653 2.471-1.443 3.518.46 2.301 3.744 9.414 5.423 11.748 2.422 3.366 6.324 7.619 8.382 9.137.367.27 1.079.883 1.582 1.362 1.392 1.323 1.916 1.163 3.186-.977.556-.936 1.448-2.436 1.984-3.334 4.013-6.725 3.864-6.158 2.015-7.641-7.794-6.251-12.055-18.255-9.984-28.123 1.523-7.254 3.39-10.738 8.48-15.827 2.971-2.971 3.142-3.274 2.389-4.231-.252-.321-1.097-1.71-1.877-3.086-.781-1.376-1.713-2.902-2.071-3.391a15 15 0 0 1-1.115-1.81c-1.042-2.074-1.377-2.079-3.811-.058m-42.3 2.387c-.203.224-.518.91-.701 1.525s-.532 1.372-.777 1.683c-.255.324-.444.902-.444 1.355 0 .507-.162.94-.451 1.209-.511.476-.883 1.589-.883 2.64 0 .392-.25 1.182-.555 1.757-.612 1.15-.673 1.423-.321 1.423.13 0 .174-.1.098-.222s.058-.222.297-.222c.555 0 1.148-1.422 1.148-2.753 0-.634.155-1.162.452-1.54.55-.7 1.332-2.828 1.483-4.041.062-.489.303-1.098.538-1.353.459-.5.94-1.869.657-1.869-.095 0-.338.183-.541.408m141.633 11.029c0 .467.529 1.008.986 1.008.269 0 .107-.876-.224-1.207-.5-.5-.762-.432-.762.199M3.115 168.077c-.005.801-.632 2.984-.907 3.154-.115.071-.208.323-.208.56s-.15.431-.333.431a.335.335 0 0 0-.334.334c0 .52.529.392 1.151-.278.872-.94 1.387-3.668.849-4.5-.167-.258-.216-.191-.218.299m147.139.326c-.018.406-.129.919-.248 1.142-.149.277-.113.804.114 1.674.299 1.149.986 2.528.995 1.997.001-.119.099-.066.217.117.117.184.168.484.112.667-.125.416.248 1.048.482.815.095-.095.025-.275-.155-.4-.247-.171-.259-.254-.049-.339.421-.171.333-.91-.166-1.409-.245-.245-.445-.675-.445-.956s-.117-.628-.259-.77-.329-.938-.413-1.767c-.085-.829-.168-1.176-.185-.771M1.333 175.778c0 2.435.409 3.458.733 1.833.332-1.661.426-3.389.185-3.389-.138 0-.251-.2-.251-.444 0-.247-.148-.445-.333-.445-.276 0-.334.42-.334 2.445m149.88.903c-.292.474.137 3.743.475 3.613.459-.176.451-3.85-.008-3.85-.176 0-.386.107-.467.237m-127.393.779c-6.155 1.06-9.688 8.225-6.869 13.929 3.639 7.362 14.759 6.909 17.702-.721 2.841-7.368-3.048-14.549-10.833-13.208m82.885 12.592c-.786.204-1.01.678-1.494 3.17-1.68 8.641-9.008 17.628-16.783 20.582-.641.244-1.47.601-1.844.794-4.378 2.264-15.601 2.177-20.39-.159-1.449-.706-1.966-.514-2.845 1.057a508 508 0 0 1-1.283 2.282c-.311.55-1.119 2-1.794 3.222s-1.462 2.578-1.749 3.012c-.867 1.309-.605 2.064.922 2.662 8.73 3.42 16.177 4.315 24.316 2.922 3.815-.653 3.523-.436 5.215-3.888 3.341-6.818 8.778-9.745 15.916-8.566 1.207.199 1.68.193 2.221-.032 1.497-.62 6.311-7.107 8.043-10.837.495-1.067 1.038-2.097 1.205-2.29 1.413-1.626 3.583-13.196 2.575-13.735-.475-.255-11.338-.429-12.231-.196m44.785 3.576c-.533 1.389-.403 4.453.179 4.229.262-.1.331-.583.331-2.325 0-1.977-.198-2.717-.51-1.904M1.333 198.667c0 1.608.064 2 .326 2 .758 0 .882-.989.423-3.389-.287-1.498-.749-.641-.749 1.389m149.609 1.994c-.694.88-1.305 3.631-.97 4.366.373.818.311 1.048-.387 1.445-.667.379-1.094 1.441-.727 1.808.139.139.338-.022.563-.457.191-.369.463-.71.605-.758.152-.05.302-.79.367-1.803.061-.944.197-1.77.303-1.836.106-.065.193-.357.193-.648s.11-.597.243-.68c.134-.083.202-.44.15-.794-.08-.542-.031-.623.312-.514.304.096.406.013.406-.331 0-.64-.463-.552-1.058.202m-149.609.672c0 .123.15.223.334.223.183 0 .333-.1.333-.223 0-.122-.15-.222-.333-.222s-.334.1-.334.222m0 1.223c0 .336.127.555.321.555.474 0 1.013.89 1.013 1.672 0 .712.441 1.879.711 1.882.086.001.125-.573.088-1.276-.074-1.373-.66-3.057-.994-2.851-.112.069-.261-.023-.331-.206-.213-.557-.808-.392-.808.224m1.808 4.82c-.016.329.07.66.192.735.123.076.223.324.223.553 0 .228.138.553.306.722.169.169.38.941.47 1.717.124 1.068.293 1.53.694 1.901.392.364.53.728.53 1.403 0 .663.113.971.416 1.133.235.126.53.674.677 1.259.143.57.495 1.348.781 1.729.287.382.595 1.041.685 1.465.205.964.57 1.563.953 1.563.373 0 .172-.765-.42-1.603-.234-.331-.426-.842-.426-1.136s-.225-.819-.5-1.167-.618-1.086-.762-1.641c-.429-1.647-1.197-3.649-1.552-4.046-.183-.203-.361-.603-.397-.889-.265-2.121-.741-3.296-1.334-3.296-.172 0-.356-.225-.409-.5-.084-.438-.1-.426-.127.098m145.765 2.828c-.009.173-.08.251-.157.174-.352-.351-.945.368-1.197 1.451-.15.644-.461 1.483-.69 1.864-.23.381-.418.993-.418 1.359s-.219.945-.488 1.287c-.336.427-.517 1.023-.582 1.915-.053.734-.185 1.239-.303 1.165-.254-.157-1.071.543-1.071.918 0 .147-.249.634-.553 1.082-.616.908-1.619 3.594-1.418 3.795.317.317.859-.214.977-.958.071-.446.227-.962.346-1.145s.388-.619.599-.969c.21-.349.656-1.049.989-1.555.339-.514.609-1.235.612-1.633.002-.391.254-1.08.559-1.531s.556-.989.556-1.199c0-.678.48-1.78.775-1.78.368 0 .558-.5.558-1.467 0-.436.244-1.149.569-1.664.312-.496.52-1.019.462-1.163q-.105-.251-.125.054m-49.239 11.205c-11.446 3.821-9.046 19.743 2.897 19.212 7.1-.316 11.306-7.426 8.156-13.787-2.038-4.113-7.279-6.686-11.053-5.425M9.344 222.48c.11.386.383.911.605 1.167.222.255.778 1.23 1.235 2.165.456.936.963 1.753 1.126 1.815s.668.797 1.124 1.632 1.095 1.788 1.42 2.117c1.222 1.238 1.546 1.636 1.68 2.068.076.245.487.844.913 1.331.427.488.775.939.775 1.002s.2.241.445.394c.585.365.563.193-.056-.439-.275-.281-.534-.708-.577-.949-.113-.645-1.559-2.742-1.993-2.89-.526-.179-1.401-.94-1.47-1.277-.297-1.466-.871-2.566-2-3.838-.325-.367-.648-.938-.718-1.27-.07-.331-.357-.753-.638-.936-.28-.184-.574-.63-.654-.99-.137-.625-.97-1.804-1.275-1.804-.079 0-.053.316.058.702m131.587 3.751c-.268.249-.494.574-.504.722-.018.299-.105.671-.34 1.471-.111.378-.082.488.1.375.142-.087.257-.279.257-.427s.233-.617.518-1.043c.965-1.444.949-2.012-.031-1.098m-2.209 3.554c-.275.11-.5.304-.5.429 0 .126-.334.604-.743 1.063s-1.306 1.584-1.994 2.501-1.379 1.812-1.535 1.99c-.349.397-.878 1.6-.758 1.721.174.173 3.919-4.483 3.919-4.872 0-.095.148-.173.328-.173s.511-.375.734-.833.586-1.108.808-1.444.367-.605.322-.597a7 7 0 0 0-.581.215m-117.938 8.617c.363.344.777.819.919 1.056.221.368.242.318.146-.347-.145-1.001-.432-1.333-1.148-1.333h-.578zm2.025 2.154c.07.183.269.333.442.333s.425.244.562.543c.136.299.409.605.606.68.288.109.304.081.081-.143a1.1 1.1 0 0 1-.278-.668c0-.405-.789-1.079-1.264-1.079-.155 0-.221.147-.149.334m213.73 2.629c.07.224.141 1.474.157 2.778.027 2.251.038 2.303.217 1.037.202-1.433.06-3.347-.288-3.889-.172-.267-.189-.252-.086.074m-109.827.656c-.263.279-.681.523-.93.542s-.612.193-.805.386c-.194.194-.643.503-.998.686s-.646.423-.646.533c0 .109-.066.381-.147.605-.101.28.034.217.434-.204.32-.336.698-.611.84-.611s.601-.3 1.018-.667.831-.67.919-.674c.16-.007 1.029-1.104.874-1.104-.045 0-.297.229-.559.508m-98.045 2.15c.55.483 1.135.883 1.299.888.165.006.59.32.945.7.673.721.794.622.426-.346-.12-.316-.495-.678-.833-.805-1.367-.512-2.282-.968-2.282-1.137 0-.099-.125-.18-.278-.179-.152 0 .173.396.723.879m191.273 2.573c-1.096.744-1.06.915.058.276.488-.279.888-.582.889-.673.003-.24-.031-.226-.947.397m-100.773.464c-.549.233-.723.444-.723.878v.572l.612-.471c.336-.259.844-.644 1.13-.857.68-.505.059-.579-1.019-.122m-85.945.345c.245.139.727.488 1.073.774.345.286.745.512.889.502.181-.012.176-.051-.017-.13-.153-.061-.278-.306-.278-.544 0-.464-.127-.533-1.333-.73-.662-.107-.712-.088-.334.128m203.178.971c-.069.116-.19.562-.27.989l-.144.778.346-.761c.316-.695.372-1.516.068-1.006m-119.394.535c-.072.117-.276.157-.452.09-.413-.159-1.887.748-1.887 1.16 0 .174-.106.315-.236.315-.129 0-.173.101-.097.224.081.131.436-.005.867-.334.402-.306.828-.556.948-.556s.453-.25.74-.556c.287-.305.46-.555.385-.555s-.196.095-.268.212m-80.431.708c.065.105.304.191.532.191s.723.259 1.1.577c.708.596.966.063.295-.609-.29-.29-2.1-.439-1.927-.159m179.046 1.195a25 25 0 0 1-.899 1.167c-.274.333-.499.686-.5.783 0 .097-.244.44-.543.763-.299.322-.501.656-.447.743s-.052.28-.234.431-.331.412-.331.58c0 .169-.1.307-.223.307-.122 0-.222.147-.222.326s-.205.692-.455 1.137c-.251.446-.412.854-.36.907.092.092 1.699-2.711 2.155-3.758.12-.276.667-1.101 1.216-1.835 1.115-1.491 1.512-2.111 1.351-2.111-.059 0-.288.252-.508.56m-103.182.677c-.322.847-.273.893.339.319.634-.596.706-.889.216-.889-.186 0-.436.256-.555.57m-72.035.208c.363.305.719.555.79.555s.016-.25-.123-.555q-.254-.556-.79-.556c-.535 0-.535.002.123.556m69.741.881c-.198.515.142.561.714.098l.524-.424h-.557c-.306 0-.613.147-.681.326m-2.607 1.271c-.149.283-.381.588-.516.678-.154.102-.109.164.12.166.692.007 1.4-.75 1.007-1.076-.285-.236-.384-.199-.611.232m127.43-.223c-.257.404-.742 1.815-.653 1.904.04.04.291-.392.558-.96.452-.962.517-1.603.095-.944m-189.397.362c-.009.165-.135.224-.293.135-.153-.086-.105.028.106.251.457.486.629.382.382-.233-.099-.244-.186-.313-.195-.153m1.985.769c0 .393.783 1.124 1.091 1.018.343-.118-.249-1.171-.708-1.259-.218-.042-.383.062-.383.241m57.425-.112c-.275.185-.572 1.168-.349 1.154.547-.034 1.658-1.324 1.137-1.321-.301.002-.656.077-.788.167m-3.64 1.486c-.147.178-.204.428-.125.556s-.037.24-.258.249c-.222.01-.284.066-.14.125.513.209 1.688-.578 1.393-.934-.335-.403-.532-.402-.87.004m132.599-.189c-.089.089-.162.315-.162.503 0 .25.066.275.247.093.136-.136.209-.362.162-.502s-.158-.183-.247-.094m-182.607.31c-.425.263-.107.585.778.789.574.131.62.11.333-.151a7 7 0 0 1-.557-.573c-.146-.175-.339-.197-.554-.065m1.889.667-.444.191.444.02c.245.012.895.234 1.445.494 1.415.67 1.602.684 1.21.086a2.16 2.16 0 0 0-2.655-.791m45.054.072c-.616.342-1.298 1.245-.886 1.173.152-.027.698-.268 1.212-.536.515-.268 1.146-.487 1.402-.487.257 0 .405-.1.329-.222-.19-.309-1.451-.264-2.057.072m135.124.331c-.139.086-.321.427-.404.757s-.291.716-.462.858-.312.354-.312.471.25-.085.556-.449c.305-.363.555-.812.555-.998s.125-.383.278-.438.225-.157.16-.228c-.064-.071-.231-.059-.371.027m-175.178.93c-.266.172-.227.216.196.219.678.004 2.026.832 2.026 1.244 0 .173.1.315.223.315.443 0-.119-1.434-.708-1.808-.395-.25-1.328-.234-1.737.03m35.161.124c-.272.19-.494.49-.494.667 0 .176-.1.32-.222.32-.123 0-.223.15-.223.334 0 .183.1.333.223.333.122 0 .222-.132.222-.294 0-.329 1.706-1.253 2.358-1.277.395-.015.393-.027-.025-.207q-1.03-.443-1.839.124m-27.605 1.321c0 .185.197.333.444.333s.445-.148.445-.333-.198-.334-.445-.334-.444.148-.444.334m21.111 0c0 .183.1.333.222.333s.222-.15.222-.333-.1-.334-.222-.334-.222.15-.222.334m123.433.5a8 8 0 0 1-.333 1.111c-.124.307-.121.5.007.5.115 0 .323-.425.462-.945.14-.519.299-1.019.355-1.111.056-.091-.002-.166-.129-.166s-.29.275-.362.611m21.267.277c-.128.367-.19.667-.139.667.052 0 .249-.3.439-.667.189-.366.252-.666.138-.666s-.31.3-.438.666m-.878 1.156c-.147.147-.267.379-.267.517 0 .137-.259.492-.576.789-.696.649-1.518 2.077-.902 1.567.202-.168.367-.393.367-.5s.35-.565.778-1.019.778-.945.778-1.093.125-.319.278-.38c.152-.062.172-.12.044-.13s-.353.102-.5.249m-21.292 1.609c-.068.176-.084.501-.036.722.054.251.13.131.202-.32.121-.757.043-.946-.166-.402m-.715 3.277a5.1 5.1 0 0 1-.272 1.222c-.217.576-.207.597.126.269.25-.247.334-.624.272-1.222-.057-.562-.102-.656-.126-.269m-.686 5.969c-.376 1.757-.333 1.991.371 1.982.575-.006.587-.025.195-.322-.356-.269-.394-.493-.262-1.548.193-1.54.017-1.605-.304-.112m25.137-.888c-1.069.232-1.202.501-.155.312.489-.088.931-.197.981-.242.215-.189-.141-.219-.826-.07m8.401-.026c0 .13.125.238.277.24.153.001.528.058.834.126.405.09.465.067.222-.087-.592-.374-1.333-.53-1.333-.279m-60.556.571-.667.314.667-.132c.367-.072.817-.215 1-.317.598-.333-.25-.218-1 .135m5.111-.165c.122.119.569.282.993.361.469.088.687.065.556-.058-.119-.112-.566-.274-.993-.361-.506-.103-.7-.082-.556.058m44.013.171c-.237.18-.331.326-.209.326s.416-.146.654-.326c.237-.179.331-.326.209-.326s-.417.147-.654.326m-52.124.438c-.154.185-.178.333-.054.333.122 0 .346-.15.498-.333.155-.186.179-.334.055-.334-.122 0-.347.15-.499.334m14.791.437c.237.179.681.325.987.324.441-.003.372-.069-.334-.323-1.118-.403-1.185-.403-.653-.001m55.243.017c.202.206.488.335.636.285.148-.049-.017-.218-.367-.375-.596-.267-.613-.261-.269.09m-72.59.101c-.428.184-.427.192.043.207.268.008.549-.085.624-.207.163-.263-.055-.263-.667 0m37.468.698c-.723.272-.49.44.312.226.356-.096.551-.23.434-.3s-.453-.037-.746.074m-13.972.677c.11.332.616.515.616.223 0-.119-.159-.278-.352-.352-.217-.083-.318-.033-.264.129m-28.496.533c-.524.29-.528.308-.079.311.262.002.534-.147.604-.33.071-.183.106-.324.08-.312-.027.012-.299.161-.605.331m34.098 1.103c.478.357.885.431.697.127-.067-.107-.348-.252-.624-.322-.486-.123-.489-.116-.073.195m-36.637.449c-.236.173-.378.363-.317.424.061.062.304-.029.539-.201s.378-.363.317-.424-.304.029-.539.201m38.857-.011c.235.179.482.27.549.203.139-.139-.425-.536-.755-.53-.123.002-.03.149.206.327m2.407.482c.207.207.45.302.541.21.092-.091.019-.258-.161-.372-.541-.342-.781-.239-.38.162m3.275-.153c-.176.109-.246.272-.156.362s.281.047.423-.095c.336-.336.148-.524-.267-.267m-46.445 1.142c-.427.365-.577.565-.332.444.698-.346 1.343-.872 1.22-.995-.062-.062-.461.186-.888.551m91.034-.136c.072.187.344.45.604.586.436.226.431.199-.065-.34-.619-.673-.721-.72-.539-.246m-94.936 3.688c-.457.487-.513.61-.185.412.403-.245 1.112-1.106.909-1.106-.039 0-.365.312-.724.694m-2.143 2.431c-.331.469-.475.805-.321.746.29-.111 1.136-1.403 1-1.529-.043-.039-.348.313-.679.783m103.379-.068c0 .122.15.346.334.498.186.155.333.179.333.055 0-.122-.15-.347-.333-.499-.186-.154-.334-.178-.334-.054m-104.592 1.737c-.14.297-.171.539-.068.539.193 0 .538-.862.401-1-.043-.043-.193.164-.333.461m104.703.984c-.351.366-.588.666-.526.666s.449-.3.86-.666c.41-.367.647-.667.526-.667-.122 0-.508.3-.86.667m-106.478 1.69c-.086.231-.221.471-.3.532-.244.188-2.714 5.36-2.609 5.464.054.054.812-1.321 1.685-3.056.872-1.735 1.54-3.2 1.483-3.257s-.173.086-.259.317m99.701 5.028c-.306.381-.628.901-.716 1.154-.152.437-.146.439.111.038.149-.233.557-.758.905-1.167.349-.409.549-.738.445-.731s-.44.324-.745.706m-103.078 1.874c-.356.386-.256.572.167.31.164-.101.261-.286.216-.41-.048-.131-.21-.089-.383.1m101.385.467c-.245.162-2.421 3.875-2.894 4.941-.805 1.812-.989 2.672-.406 1.902.179-.238.326-.663.326-.945s.1-.513.222-.513.222-.2.222-.444c0-.245.1-.445.223-.445.122 0 .222-.2.222-.444 0-.245.1-.445.222-.445s.222-.158.222-.351c0-.293 1.07-2.119 1.846-3.149.235-.312.163-.35-.205-.107m-101.985 1.107a8 8 0 0 1-.333 1.111c-.121.301-.121.5 0 .5.212 0 .326-.3.567-1.5.08-.397.09-.722.021-.722s-.183.275-.255.611m-1.695 6.834c-.143.666-.074.965.167.724.07-.071.094-.412.052-.76l-.076-.631zm99.017 1.788c-.203.808-.003.872.291.092.136-.362.159-.658.05-.658-.11 0-.263.255-.341.566m-99.392 1.386c-.016.279-.192.754-.389 1.056-.197.301-.264.547-.149.547.349 0 .777-1.008.669-1.578-.099-.527-.101-.527-.131-.025m98.966.953c-.211.961-.008 1.03.279.095.131-.428.156-.778.055-.778s-.251.307-.334.683m-99.659 4.039c.002.692.061.856.218.611.284-.438.284-1.555 0-1.555-.122 0-.22.425-.218.944m99.25.08c-.166 1.21.051 3.376.357 3.566.132.081.15-.071.046-.396-.093-.29-.157-1.352-.143-2.361.029-2.063-.053-2.319-.26-.809m.438 6.643c.125.883.234 1.158.39.981.045-.051-.053-.493-.217-.981l-.298-.889zm-99.692 1.764c0 .557.1 1.013.222 1.013.123 0 .223-.394.223-.875 0-.482-.1-.938-.223-1.014-.135-.083-.222.257-.222.876m100.021.569c-.02.471.366 1.021.572.815.095-.095.065-.242-.066-.327s-.295-.305-.365-.488c-.113-.296-.128-.296-.141 0m.661 1.901c-.028.436.949 3.095 1.246 3.392.162.162.294.193.294.069s-.1-.287-.222-.362-.222-.291-.222-.48c0-.188-.136-.657-.303-1.042s-.41-.95-.541-1.256c-.13-.305-.244-.45-.252-.321M150.222 326c0 .122.092.222.204.222s.304.275.427.611q.224.617.241.208c.009-.222-.086-.597-.213-.833-.243-.454-.659-.585-.659-.208m102.667 3.774c0 .333.775 1.77 1.321 2.448.246.306.447.456.447.334 0-.123-.196-.473-.435-.778s-.437-.681-.439-.834-.105-.277-.227-.277-.223-.194-.223-.432c0-.237-.1-.493-.222-.568-.122-.076-.222-.028-.222.107m-101.762.282c.043.774.398 1.155.413.444.009-.397-.084-.722-.207-.722s-.215.125-.206.278m103.984 3.527c0 .191.211.539.469.771.258.233.802.924 1.21 1.535s.951 1.239 1.206 1.396c.267.163.027-.264-.562-1-1.517-1.898-1.523-1.906-1.939-2.501-.263-.377-.384-.44-.384-.201m-102.508 3.309c.125.479.508.835.508.473 0-.379-.263-.921-.447-.921-.098 0-.125.202-.061.448m.431 1.794c.141.173.307.564.368.87.077.386.101.324.077-.206-.021-.456-.168-.804-.368-.869-.263-.086-.279-.043-.077.205m.969 3.036c.01.487.435.811.438.334.002-.275-.097-.5-.219-.5s-.22.075-.219.166m114.074 2.462c.202.224.367.624.367.889s.1.483.223.483c.376 0 .245-1.156-.167-1.469-.573-.435-.848-.372-.423.097m-112.434 2.098c.316.891.786 1.693.795 1.356.01-.365-.62-1.809-.852-1.952-.108-.068-.083.201.057.596m112.434.061c-.204.531.018.579.433.095.321-.376.327-.438.036-.438-.186 0-.397.154-.469.343m-111.188 3.194c0 .132.1.241.222.241s.222.194.222.432c0 .492.884 2.091 1.06 1.916.063-.063.011-.243-.115-.398-.127-.156-.38-.73-.562-1.275-.305-.909-.827-1.488-.827-.916m109.104 2.253c-.134.251-.205.573-.158.714s.246-.064.441-.457c.385-.771.121-1.011-.283-.257m-1.152 2.601c-.21.457-.473.981-.584 1.165-.503.829-1.147 2.295-1.051 2.39.058.059.407-.516.775-1.277s.754-1.497.857-1.637c.334-.455.712-1.477.546-1.474-.089.001-.333.376-.543.833M158.889 354c0 .122.1.222.222.222s.222.217.222.482.062.419.138.343c.2-.2-.107-1.269-.364-1.269a.22.22 0 0 0-.218.222m.889 1.785c0 .118.1.215.222.215s.222.188.222.417c0 .23.15.542.334.694.183.152.333.431.333.62s.062.281.137.206c.196-.196-.636-2.131-.97-2.26-.153-.059-.278-.011-.278.108m102.484 3.406c-.545 1.09-.579 1.253-.262 1.253.122 0 .222-.2.222-.444s.1-.444.222-.444c.123 0 .223-.2.223-.445 0-.244.1-.444.222-.444s.222-.1.222-.223c0-.508-.397-.159-.849.747m-100.478.253c.002.123.199.473.438.778s.437.675.44.82c.002.146.09.318.195.383.104.064.146-.105.093-.376-.101-.516-1.173-1.991-1.166-1.605m99.187 2.056c-.521.715-.803 1.391-.575 1.383.151-.006 1.24-1.994 1.092-1.994-.039 0-.272.275-.517.611m-1.618 2.544c-.378.513-.686 1.088-.686 1.278.001.315.569-.46 1.255-1.711.425-.775.185-.593-.569.433m-94.015 1.207c.003.106.199.443.436.749.409.528.424.531.304.063-.126-.494-.749-1.177-.74-.812m92.301 1.297c-.226.59.022.783.285.223.143-.307.165-.549.048-.549-.114 0-.264.147-.333.326m-91.058.681c.202.31.413.518.467.464.154-.154-.37-1.026-.616-1.026-.121 0-.054.253.149.562m90.104.737c-.363.679-.288.868.115.291.196-.279.304-.56.241-.624-.064-.063-.224.086-.356.333m-1.233 1.72c-.54.824-.261.916.317.105.266-.374.388-.68.272-.68-.117 0-.382.259-.589.575m-85.978 1.55c.388.592.625.613.403.035-.074-.191-.276-.402-.45-.469-.252-.097-.242-.007.047.434m84.499.385c-.508.638-1.319 1.99-1.028 1.712.064-.061.485-.596.934-1.188.908-1.196.989-1.648.094-.524m-83.084 1.17c.183.231.583.672.889.982.305.309.733.812.951 1.117l.395.554-.261-.555c-.293-.626-1.711-2.285-2.072-2.425-.129-.051-.085.097.098.327m3.341 3.47c1.765 1.682 2.659 2.423 2.659 2.204 0-.117-.6-.685-1.333-1.261-.734-.576-1.334-1.129-1.334-1.229s-.225-.292-.5-.428c-.276-.136-.049.184.508.714m40.407 1.192c.948.412 1.118.412.572-.001-.237-.18-.631-.326-.876-.325-.307.001-.214.101.304.326m-10.267.695c-.27.27-.153.507.186.377.183-.071.333-.217.333-.327 0-.233-.306-.262-.519-.05m-27.259.609c0 .044.25.245.556.445.305.2.555.278.555.172 0-.105-.25-.305-.555-.445-.306-.139-.556-.216-.556-.172M193 382.222c-.162.263.055.263.667 0 .428-.184.427-.191-.043-.206-.268-.009-.548.084-.624.206m39.639.245c.276.257.563.405.637.331s-.057-.282-.292-.46c-.654-.495-.911-.399-.345.129m-47.528.2c0 .122.2.222.445.222.244 0 .444-.1.444-.222 0-.123-.2-.223-.444-.223-.245 0-.445.1-.445.223m6 0c0 .122.15.222.333.222s.334-.1.334-.222c0-.123-.15-.223-.334-.223-.183 0-.333.1-.333.223m43.556 0c0 .127.666.222 1.555.222s1.556-.095 1.556-.222-.667-.223-1.556-.223-1.555.096-1.555.223"}),a.createElement("path",{fill:"#040404",d:"M244.667 18.019c-.55.103-1.8.289-2.778.414-.978.126-2.878.388-4.222.583s-3.245.442-4.223.549-2.038.244-2.356.303c-.318.06-.693-.006-.833-.146-.19-.19-.329-.151-.554.157-.238.326-.489.385-1.212.289-.518-.07-.943-.028-.985.097-.04.121-.97.311-2.066.422-1.097.111-2.544.299-3.216.42-2.646.473-6.681.94-7.397.856-.436-.051-.868.033-1.021.197-.313.335-1.582.385-1.582.062 0-.122-.1-.222-.222-.222s-.222.134-.222.297c0 .341-3.982.954-4.969.766-.323-.062-.587-.031-.587.069 0 .308-1.565.503-1.839.229-.347-.347-.605-.312-.605.083 0 .207-.21.334-.552.334-.303 0-1.228.096-2.055.213-.827.118-2.304.326-3.282.462s-2.003.301-2.278.366l-.5.118v38.398l26.112-.056 26.113-.057.054-22.722.054-22.722-.888.028c-.489.015-1.339.111-1.889.213m-55.817 7.65c-.191.191-7.365 1.034-8.008.942-.332-.048-.644.021-.695.154-.106.275-6.829 1.14-7.339.944-.184-.071-.369-.026-.411.099s-1.873.468-4.069.763c-2.197.294-5.045.685-6.328.868s-3.222.437-4.307.564-2.386.325-2.889.442a9.6 9.6 0 0 1-1.73.216c-1.66.011-1.518-1.528-1.518 16.474v16.198h38.666V25.556h-.629c-.347 0-.681.051-.743.113m-37.294 59.078v16.08l1.388.149c.764.082 2.023.21 2.797.285.78.076 1.455.256 1.512.405.056.147.327.225.602.173s1.445.02 2.6.162 2.634.313 3.285.38c.7.072 1.233.245 1.301.424.073.191.235.236.437.123.177-.099.992-.098 1.811.002 2.586.317 4.975.638 7.155.96 1.162.172 3.012.427 4.112.566 1.359.173 2.091.372 2.286.62.237.303.319.313.475.061.131-.212.42-.263.936-.167.919.171 1.695.277 4.469.607 1.73.206 2.17.331 2.184.618.012.23.058.26.13.083.062-.153.354-.278.649-.278h.537V68.667h-38.666zm43.703-15.932c-.081.081-.148 8.623-.148 18.982v18.834l.722.155c.398.085.82.213.939.284.118.07.594.101 1.056.068.596-.043.878.04.972.285.092.238.248.289.5.162.457-.23 5.217.299 5.314.59.039.117.515.163 1.058.102.781-.088 1.016-.035 1.128.256.103.27.216.305.426.131.199-.166.707-.168 1.696-.007.776.125 1.782.229 2.236.23.453.001.953.139 1.109.307q.285.305 1.154.188c.671-.09.935-.025 1.161.284.231.315.36.344.608.138.243-.201.917-.182 2.935.082 4.173.547 4.318.58 4.337.976.011.23.058.26.13.082.153-.379 4.093-.131 5.408.34.183.066.475.095.649.066.173-.029.723.048 1.222.172s2.082.348 3.518.499c2.119.222 2.612.34 2.614.626.003.291.039.298.2.043.212-.335 1.847-.206 1.967.154.035.104.358.145.718.092.561-.082 5.092.429 6.612.746.275.057.5.252.5.433s.1.329.222.329.222-.093.222-.206c0-.114.202-.239.449-.278.451-.072.516-6.697.441-44.738l-.001-.555H221.37c-14.279 0-26.029.066-26.111.148M69.72 113.334c-.337.101-2.137.397-4 .658-1.863.26-3.837.612-4.387.781s-1.75.426-2.666.571c-.917.146-1.929.398-2.248.562-.32.163-1.201.397-1.958.519-.756.121-1.706.426-2.111.676s-.854.455-.999.455c-.241 0-2.326.811-6.018 2.34-.794.33-1.594.726-1.777.881-.184.155-1.284.75-2.445 1.321-2.623 1.29-3.981 2.047-4.555 2.542-.245.21-1.045.768-1.778 1.239-2.246 1.443-5.669 4.136-8.308 6.537-3.073 2.795-7.909 8.252-10.044 11.333-2.319 3.346-3.939 6.119-5.861 10.029-2.162 4.4-2.475 5.096-2.895 6.444a57 57 0 0 1-.883 2.556c-.276.733-.776 2.383-1.111 3.666a103 103 0 0 1-1.031 3.683c-.233.742-.423 1.703-.423 2.137s-.267 1.926-.593 3.317c-.593 2.527-.594 2.543-.602 11.863l-.009 9.334.602 2.364c.331 1.301.602 2.797.602 3.325s.247 1.714.548 2.635c.301.922 1.161 3.626 1.911 6.009 1.184 3.761 3.494 9.167 4.412 10.321.102.129.26.475.35.768.161.524 2.84 4.949 4.183 6.911 4.176 6.097 12.856 14.822 17.798 17.889.393.244 1.377.919 2.186 1.5s1.564 1.056 1.68 1.056.347.163.513.363.705.537 1.197.748 1.031.547 1.197.747.417.364.559.364c.291 0 3.451 1.586 4.189 2.103.268.188.644.341.835.341.192 0 .744.204 1.229.452.484.249 1.417.609 2.074.802.657.192 1.507.529 1.889.748.382.22 1.033.47 1.447.557.414.086 1.264.395 1.889.686s1.486.532 1.914.536 1.216.206 1.752.449c.535.243 1.914.546 3.064.675 1.149.128 2.561.376 3.137.551s2.197.424 3.603.553c1.405.128 3.472.329 4.593.446 2.588.269 7.246.257 9.407-.025.916-.12 2.766-.278 4.111-.353s2.694-.26 3-.413c.513-.256 2.001-.535 4.772-.896.609-.079 1.48-.334 1.936-.567s1.159-.424 1.561-.425 1.231-.234 1.842-.517 1.61-.64 2.219-.792c.61-.153 1.221-.37 1.357-.484.137-.114.789-.396 1.448-.627 1.66-.583 4.02-1.551 4.42-1.813.184-.12.684-.369 1.112-.553.427-.183.927-.432 1.111-.551s.833-.47 1.444-.78c.611-.309 1.397-.72 1.746-.912.849-.467 6.108-3.967 6.81-4.532 1.523-1.226 2.159-1.709 2.676-2.033.662-.415 4.275-3.791 6.615-6.182 2.149-2.195 5.501-6.192 6.709-8 .531-.794 1.099-1.525 1.262-1.623s.431-.499.595-.889c.164-.391.684-1.31 1.157-2.043.962-1.494 4.763-8.957 4.763-9.352 0-.14.181-.494.402-.785.382-.504 1.237-2.993 2.282-6.641.262-.917.752-2.567 1.088-3.667s.733-3 .882-4.222.36-2.772.467-3.444c.966-6.04 1.085-13.029.315-18.556-.187-1.344-.43-3.144-.54-4-.375-2.935-.692-4.669-1.118-6.111-.234-.795-.684-2.345-.999-3.445-1.155-4.032-1.745-5.797-2.226-6.666a12 12 0 0 1-.774-1.778c-.154-.489-.354-.989-.443-1.111s-.914-1.681-1.834-3.464c-.92-1.784-1.96-3.671-2.31-4.194-.556-.831-.859-1.347-1.394-2.37-.148-.282-3.456-4.615-5.069-6.638-2.215-2.779-10.181-10.229-12.688-11.868-2.184-1.426-4.167-2.84-4.629-3.299-.276-.275-.701-.5-.944-.5s-.502-.099-.577-.219c-.074-.121-.605-.456-1.179-.744-.575-.289-1.645-.85-2.378-1.246-1.34-.724-3.584-1.735-5.445-2.451-.55-.212-1.371-.55-1.826-.752-.454-.201-.954-.37-1.111-.375s-.835-.305-1.507-.667c-.672-.361-1.55-.657-1.951-.658-.401 0-1.301-.238-2-.53s-2.111-.641-3.137-.777-1.979-.342-2.118-.457-1.85-.415-3.801-.665-3.949-.555-4.438-.675c-1.069-.263-12.853-.268-13.724-.006m247.836 3.11c0 .131-.799.224-1.945.226-1.171.002-1.824.079-1.643.194.3.191-1.466.581-3.801.84-.581.064-1.056.207-1.056.317s-.45.201-1 .201-1 .1-1 .222c0 .123-.406.223-.902.223-.545 0-.848.088-.765.222.084.134-.224.222-.777.222-.521 0-.859.091-.785.211.072.116-.224.277-.656.359s-.841.236-.908.344c-.067.109-.36.197-.651.197s-.591.1-.667.222c-.076.123-.381.223-.68.223-.298 0-.542.1-.542.222s-.3.222-.667.222-.667.1-.667.222c0 .123-.316.223-.703.223s-.634.069-.549.154c.167.168-1.306.957-1.787.957-.162 0-.294.1-.294.222s-.2.222-.444.222c-.245 0-.445.1-.445.222 0 .123-.25.223-.555.223s-.556.1-.556.222-.2.222-.444.222c-.245 0-.445.084-.445.186 0 .103-.399.378-.886.612-.488.233-.888.499-.889.591s-.203.167-.447.167-.444.1-.444.222-.206.222-.458.222-.396.1-.32.222c.075.122-.069.222-.32.222-.252 0-.458.1-.458.223 0 .122-.126.222-.28.222s-.529.231-.833.512a5.6 5.6 0 0 1-1.276.833c-.397.175-.722.395-.722.487s-.15.168-.333.168-.334.1-.334.222a.23.23 0 0 1-.233.222c-.128 0-.464.25-.747.556-.283.305-.629.555-.767.555-.139 0-.253.1-.253.223 0 .122-.128.222-.284.222s-.428.2-.605.444c-.176.245-.4.445-.497.445s-.517.35-.933.778c-.415.427-.841.777-.947.777s-.335.2-.512.445c-.176.244-.4.444-.498.444s-.719.55-1.381 1.222c-.661.673-1.266 1.223-1.344 1.223-.171 0-.777.587-.777.752 0 .064-.85.99-1.888 2.058-1.812 1.86-2.569 3.412-1.667 3.412.122 0 .222.15.222.333s.1.334.222.334c.123 0 .223.2.223.444s.1.444.222.444.222.138.222.307.149.429.331.58.276.364.209.472-.032.197.078.197.39.399.624.886c.234.488.5.888.591.889.092.002.167.203.167.447 0 .245.1.445.222.445s.222.141.222.314.093.349.206.389.238.222.278.402c.069.314.163.457.794 1.211.153.182.278.49.278.684 0 .193.2.566.444.829.245.262.445.608.445.768s.1.292.222.292.222.137.222.306.149.429.331.58.284.351.227.443.091.394.329.668c.239.275.493.688.566.918s.226.418.34.418.207.25.207.555.1.556.223.556c.122 0 .222.153.222.34s.147.397.326.466.45.466.601.882.353.756.451.756c.097 0 .177.2.177.445 0 .244.076.444.168.444s.31.325.483.723c.172.397.389.773.48.835.092.062.2.26.24.439.041.179.174.45.296.601.122.152.328.404.457.561s.378.611.554 1.008.395.722.488.722.168.2.168.445c0 .244.078.444.174.444s.471.55.833 1.222c.363.671.734 1.221.826 1.222s.167.201.167.445.1.444.222.444.222.2.222.445c0 .244.1.444.222.444.123 0 .223.15.223.334 0 .183.105.333.235.333.129 0 .173.1.098.222-.076.122-.044.222.071.222s.333.3.484.667c.152.367.364.667.472.667s.195.181.195.402.2.618.445.88c.244.262.444.631.444.82s.1.342.222.342.222.138.222.306c0 .169.15.431.334.583.183.152.333.465.333.694s.088.417.195.417.32.3.472.667.364.667.471.667c.108 0 .195.138.195.307 0 .752 1.048 2.137 1.616 2.137.396 0 .829-.932.829-1.788 0-.361.1-.656.222-.656s.222-.3.222-.667.1-.667.223-.667c.122 0 .223-.225.224-.5s.252-.935.556-1.467.553-1.107.553-1.278.1-.31.222-.31.222-.2.222-.445c0-.244.1-.444.223-.444.122 0 .222-.2.222-.445 0-.244.1-.444.222-.444s.222-.175.222-.389c.001-.214.251-.679.556-1.035s.555-.714.555-.799c0-.135.265-.491 1.107-1.49.125-.148.227-.326.227-.396s.35-.478.777-.906.779-.849.779-.937c.003-.368 2.063-2.27 2.459-2.27.128 0 .179-.087.114-.193-.066-.106.194-.431.578-.722.383-.292.823-.655.979-.808.155-.152.389-.277.52-.277s.238-.1.238-.223c0-.122.15-.222.333-.222s.334-.1.334-.222.206-.222.457-.222c.252 0 .401-.093.33-.206-.07-.114.074-.271.321-.349.246-.078.447-.235.447-.349s.2-.207.445-.207c.244 0 .444-.1.444-.223 0-.122.2-.222.445-.222.244 0 .444-.1.444-.222s.256-.222.569-.222c.322 0 .509-.096.431-.222-.075-.123.076-.223.336-.223.261 0 .603-.129.762-.288.158-.158.726-.418 1.262-.577.535-.159 1.147-.379 1.359-.49.213-.11.738-.2 1.167-.2s.781-.1.781-.222c0-.128.671-.223 1.568-.223.863 0 1.517-.084 1.453-.188-.223-.36 6.76-.478 28.311-.478 11.938 0 26.222-.067 31.742-.148l10.037-.147v-.63c0-.347-.1-.631-.222-.631-.123 0-.223-.15-.223-.333s-.1-.334-.222-.334-.222-.2-.222-.444-.077-.444-.172-.444-.368-.375-.609-.834c-.24-.458-.494-.883-.563-.944s-.257-.436-.418-.834-.38-.722-.487-.722c-.108 0-.195-.095-.195-.212 0-.271-.956-1.748-1.548-2.391-.249-.271-.452-.646-.452-.833 0-.188-.1-.342-.223-.342-.122 0-.222-.155-.222-.346s-.1-.285-.222-.209-.222-.019-.222-.209c0-.191-.117-.347-.26-.347-.142 0-.196-.063-.119-.14s-.156-.417-.518-.756c-.362-.338-.659-.679-.659-.758 0-.163-.246-.468-1.333-1.649a19 19 0 0 1-1.222-1.47c-.788-1.105-7.03-7.227-7.369-7.227-.074 0-.297-.176-.494-.391-.198-.215-.76-.685-1.249-1.044-.488-.359-1.05-.833-1.248-1.053s-.473-.401-.611-.401-.252-.1-.252-.222-.15-.222-.333-.222-.333-.1-.333-.222-.15-.222-.334-.222c-.183 0-.333-.1-.333-.223 0-.122-.15-.222-.333-.222s-.334-.1-.334-.222-.15-.222-.333-.222-.333-.094-.333-.208-.202-.271-.448-.349-.39-.235-.32-.348c.07-.114-.079-.206-.33-.206-.252 0-.458-.1-.458-.223 0-.122-.15-.222-.333-.222s-.334-.1-.334-.222-.191-.222-.425-.222c-.235 0-.46-.075-.5-.167-.041-.092-.561-.413-1.156-.715-.594-.301-1.13-.676-1.19-.833s-.299-.285-.53-.285-.421-.1-.421-.223c0-.122-.2-.222-.444-.222-.245 0-.445-.1-.445-.222s-.25-.222-.555-.222-.556-.1-.556-.222c0-.123-.2-.223-.444-.223-.245 0-.445-.1-.445-.222s-.116-.222-.258-.222c-.415 0-1.964-.735-1.964-.932 0-.098-.256-.179-.569-.179-.322 0-.509-.096-.431-.222.08-.13-.146-.223-.542-.223-.374 0-.68-.1-.68-.222s-.3-.222-.667-.222c-.366 0-.666-.1-.666-.222 0-.123-.245-.223-.543-.223s-.604-.1-.68-.222c-.075-.122-.332-.222-.571-.222a2.1 2.1 0 0 1-.821-.201c-.212-.11-.785-.306-1.274-.436l-1.392-.371c-.277-.074-.446-.228-.376-.341.071-.116-.325-.207-.899-.207-.628 0-.973-.086-.889-.222.085-.137-.298-.222-1-.222s-1.085-.085-1-.222c.085-.138-.331-.222-1.098-.222-.679 0-1.235-.1-1.235-.223s-.593-.222-1.334-.222c-.74 0-1.333-.099-1.333-.222 0-.128-.699-.222-1.653-.222-.91 0-1.716-.1-1.791-.223-.088-.141-3.04-.222-8.125-.222-5.176 0-7.986.078-7.986.222m-213.933 15.548c2.853.467 6.04 2.681 7.78 5.404 6.838 10.702-8.475 22.324-17.244 13.086-7.066-7.443-.57-20.134 9.464-18.49m-23.067 10.664c5.991.965 7.219 1.398 8.335 2.938.365.504.665 1.028.665 1.164 0 .626 1.783 3.736 2.828 4.935 2.851 3.266 7.984 4.807 12.741 3.824 2.468-.51 3.851.665 8.498 7.219 4.443 6.265 8.584 19.946 6.629 21.901-.551.551-13.171.849-14.427.341-.911-.369-1.715-2.029-1.926-3.978-.377-3.487-2.638-8.302-5.727-12.194-1.691-2.131-6.42-5.775-9.031-6.96a84 84 0 0 1-2.474-1.18c-4.246-2.126-16.906-2.118-20.354.014-.807.498-2.241.556-2.825.113-.376-.285-.616-.684-2.237-3.712-.647-1.21-1.183-2.139-3.186-5.525-2.146-3.628-1.843-4.469 2.068-5.737.746-.242 1.676-.605 2.069-.808.922-.477 3.627-1.198 6.02-1.604l3.667-.62c1.978-.332 6.95-.408 8.667-.131m184.104 7.149c-.18.259-.447.598-.594.751s-.219.328-.161.386-.047.232-.233.387c-.186.154-.339.419-.339.587s-.1.306-.222.306-.222.2-.222.445c0 .244-.081.444-.181.444s-.318.35-.486.778-.386.778-.486.778-.18.2-.18.444c0 .245-.085.445-.189.445s-.374.45-.601 1-.492 1-.589 1c-.098 0-.177.2-.177.444s-.1.444-.222.444-.222.182-.222.403-.2.817-.445 1.323c-.244.506-.444 1.069-.444 1.251s-.1.392-.223.468c-.122.075-.222.324-.222.553 0 .228-.15.565-.333.748a1.3 1.3 0 0 0-.333.794c0 .253-.1.46-.223.46-.122 0-.222.3-.222.667s-.1.667-.222.667-.222.35-.222.778c0 .427-.089.777-.198.777-.186 0-.311.512-.612 2.5-.069.459-.215.834-.325.834-.109 0-.199.213-.199.474s-.096.836-.213 1.278a20 20 0 0 0-.344 1.643c-.073.461-.227.781-.343.709-.125-.078-.211.509-.211 1.451 0 .873-.089 1.527-.198 1.459-.705-.435-.49 22.13.217 22.863.112.117.203.736.203 1.376 0 .641.1 1.227.223 1.302.122.076.222.582.222 1.124s.1.987.222.987.222.442.222.982.08 1.015.176 1.055c.097.041.404.874.683 1.852.278.978.607 2.128.731 2.556.123.428.278 1.052.342 1.386.065.335.207.554.315.487s.198.191.198.574.15.846.333 1.029.333.526.333.762.1.428.223.428c.122 0 .222.195.222.432s.08.481.178.541.316.617.485 1.236c.168.618.388 1.125.488 1.125s.182.203.182.451.15.509.334.58c.183.07.333.317.333.548s.1.421.222.421.222.2.222.444c0 .245.1.445.223.445.122 0 .222.25.222.555s.1.556.222.556.222.2.222.444c0 .245.1.445.222.445.123 0 .223.095.223.21 0 .116.248.479.551.806s.502.674.442.771c-.059.097.017.31.171.473s.422.57.595.906c.174.336.399.611.5.611.102 0 .185.143.185.318s.157.475.349.667.288.349.214.349c-.145 0 .132.362.937 1.223.275.294.5.639.5.767 0 .127.106.232.235.232.13 0 .174.1.098.222s-.014.222.135.222.212.061.138.135.084.36.352.634c.727.747 1.487 1.664 1.487 1.796 0 .064.325.462.722.883 1.281 1.361 1.722 1.868 1.722 1.981 0 .15 4.419 4.571 4.569 4.571.216 0 1.209 1.087 1.209 1.324 0 .127.128.232.284.232s.428.2.605.444c.176.245.448.445.604.445.157 0 .285.1.285.222s.108.222.24.222c.133 0 .581.35.996.778s.857.778.982.778c.124 0 .226.1.226.222s.15.222.333.222.335.075.336.167.601.553 1.333 1.024c.732.472 1.331.947 1.331 1.056s.15.198.334.198c.183 0 .333.1.333.222s.15.222.333.222.334.1.334.222c0 .123.2.223.444.223.245 0 .445.1.445.222s.15.222.333.222.333.077.333.17.4.343.889.555.889.485.889.608c0 .122.206.223.458.223.251 0 .395.1.32.222-.078.126.113.222.444.222s.523.096.445.222.108.223.431.223c.313 0 .569.1.569.222s.2.222.444.222c.245 0 .445.1.445.222s.2.222.444.222.444.1.444.223c0 .122.133.222.294.222.481 0 1.955.789 1.787.956-.085.085.168.155.562.155.421 0 .66.092.58.222s.146.222.542.222c.374 0 .68.1.68.223 0 .122.25.222.555.222s.556.1.556.222.3.222.667.222c.366 0 .666.1.666.223 0 .122.168.222.373.222.396 0 1.73.386 2.301.665.188.092.663.238 1.056.324s.715.249.715.362.4.204.889.204.889.1.889.223c0 .122.45.222 1 .222s1 .1 1 .222.444.222.986.222c.543 0 1.049.1 1.125.222.075.123.294.223.487.223.42 0 1.219-.867 1.05-1.14-.065-.107-.013-.194.116-.194.13 0 .236-.15.236-.333s.1-.333.222-.333.222-.157.222-.35.125-.488.278-.658c.648-.723.801-.951.703-1.048-.056-.057.05-.23.236-.384.186-.155.339-.419.339-.588s.1-.306.222-.306.222-.2.222-.444c0-.245.081-.445.181-.445s.318-.35.486-.777.371-.778.452-.778.327-.4.548-.889c.22-.489.485-.889.589-.889s.188-.15.188-.333.1-.334.223-.334c.122 0 .222-.157.222-.349s.151-.5.335-.684.279-.428.209-.54c-.069-.112-.02-.204.109-.204.13 0 .236-.15.236-.334 0-.183.1-.333.222-.333s.222-.157.222-.349.125-.489.278-.659c.648-.723.801-.95.703-1.048-.056-.056.05-.229.236-.384s.339-.419.339-.587c0-.169.1-.306.222-.306s.222-.2.222-.445c0-.244.088-.444.195-.444s.327-.325.488-.722c.161-.398.349-.773.418-.834s.322-.486.563-.944c.241-.459.515-.834.609-.834s.172-.15.172-.333.1-.333.222-.333.222-.2.222-.445c0-.244.1-.444.222-.444.123 0 .223-.2.223-.445 0-.244.075-.444.168-.444.092 0 .311-.325.486-.722s.424-.844.554-.993c.482-.551.682-.866.753-1.183.039-.178.164-.358.277-.398s.206-.216.206-.389.1-.315.222-.315.222-.2.222-.444c0-.245.094-.445.208-.445.115 0 .335-.35.489-.778.155-.427.346-.777.425-.777s.325-.4.545-.889.486-.889.589-.889c.104 0 .189-.15.189-.334 0-.183.1-.333.222-.333s.222-.2.222-.444c0-.245.1-.445.223-.445.122 0 .222-.2.222-.444 0-.245.075-.445.168-.445.092 0 .311-.325.486-.722s.425-.844.554-.992c.482-.551.683-.867.753-1.183.04-.179.165-.358.278-.399s.205-.216.205-.389.1-.315.222-.315c.123 0 .223-.2.223-.444 0-.245.093-.445.208-.445s.334-.35.489-.777.361-.778.458-.778.178-.2.178-.445c0-.359-.148-.444-.778-.444-.428 0-.778.1-.778.222s-.555.222-1.235.222c-.679 0-1.186.08-1.126.177.501.811-9.388 1.026-12.305.268a21 21 0 0 0-1.652-.341c-.637-.101-.787-.193-.555-.34.216-.136-.026-.202-.751-.205-.655-.002-1.015-.089-.931-.225.082-.132-.183-.222-.654-.222-.435 0-.791-.1-.791-.223 0-.122-.25-.222-.555-.222s-.556-.1-.556-.222-.194-.222-.431-.222-.493-.1-.569-.223c-.075-.122-.331-.222-.568-.222-.238 0-.432-.1-.432-.222s-.157-.222-.349-.222-.488-.125-.659-.278c-.774-.694-.996-.833-1.329-.833-.195 0-.294-.1-.218-.223.075-.122-.069-.222-.32-.222-.252 0-.458-.1-.458-.222s-.15-.222-.333-.222-.334-.1-.334-.222c0-.123-.115-.223-.255-.223s-.595-.35-1.011-.777-.856-.778-.98-.778c-.123 0-.163-.1-.087-.222.076-.123.033-.223-.095-.223-.289 0-1.003-.573-1.769-1.42a49 49 0 0 0-.874-.944c-.162-.166-.234-.302-.161-.302s-.32-.453-.873-1.006-1.006-1.131-1.006-1.284-.2-.423-.444-.599c-.245-.176-.445-.43-.445-.563s-.187-.444-.417-.69c-.229-.247-.486-.665-.57-.931-.085-.266-.253-.483-.374-.483s-.159-.1-.083-.222c.075-.122.047-.222-.062-.222-.11 0-.391-.399-.625-.887-.233-.487-.499-.887-.591-.889-.092-.001-.167-.207-.167-.457s-.256-.711-.569-1.024c-.314-.314-.515-.714-.447-.89.067-.177.027-.262-.091-.189-.117.072-.277-.122-.355-.433s-.23-.565-.339-.565-.199-.154-.199-.342-.2-.558-.444-.82-.444-.664-.444-.893-.09-.36-.199-.293c-.109.068-.261-.126-.338-.431-.076-.305-.237-.554-.357-.554-.119 0-.218-.154-.218-.343 0-.188-.2-.557-.444-.819-.244-.263-.444-.659-.444-.88s-.1-.402-.223-.402c-.122 0-.222-.2-.222-.445 0-.244-.1-.444-.222-.444s-.222-.15-.222-.334c0-.183-.101-.333-.224-.333-.124 0-.384-.4-.58-.889s-.445-.889-.554-.889-.198-.2-.198-.444c0-.245-.1-.445-.222-.445s-.222-.15-.222-.333-.1-.333-.223-.333c-.122 0-.222-.157-.222-.35s-.125-.488-.278-.658c-.691-.771-.833-.996-.833-1.316 0-.189-.08-.343-.177-.343-.098 0-.305-.35-.459-.778s-.375-.778-.489-.778c-.115 0-.208-.2-.208-.444s-.1-.444-.222-.444a.22.22 0 0 1-.223-.213c0-.204-.864-1.612-1.33-2.167a1.1 1.1 0 0 1-.225-.611c0-.189-.1-.343-.222-.343-.123 0-.223-.181-.223-.402s-.186-.603-.413-.847c-.522-.559-1.587-2.453-1.587-2.821 0-.152-.2-.42-.444-.596-.245-.177-.445-.555-.445-.84 0-.286-.089-.465-.198-.397-.109.067-.261-.127-.338-.432-.076-.304-.237-.554-.357-.554s-.218-.2-.218-.444c0-.245-.081-.445-.181-.445-.196 0-1.152-1.685-1.152-2.03 0-.116-.209-.431-.464-.701s-.616-.866-.802-1.324-.427-.833-.536-.833-.198-.2-.198-.445c0-.244-.1-.444-.222-.444s-.222-.138-.222-.306c0-.169-.153-.433-.339-.588s-.291-.328-.233-.387-.014-.24-.161-.405c-.684-.765-.823-.986-.823-1.305 0-.188-.089-.343-.198-.343s-.259-.243-.334-.54c-.074-.297-.26-.672-.413-.833s-.476-.668-.717-1.127c-.242-.458-.496-.833-.566-.833s-.254-.35-.408-.778c-.155-.428-.375-.778-.489-.778-.115 0-.208-.2-.208-.444s-.089-.444-.198-.444-.261-.25-.338-.556-.243-.556-.371-.556c-.127 0-.169-.1-.093-.222.075-.122.047-.222-.063-.222-.109 0-.39-.399-.624-.886-.233-.488-.499-.888-.591-.889s-.167-.253-.167-.558-.1-.556-.222-.556-.222-.139-.222-.309c0-.171-.161-.372-.357-.447-.21-.08-.302-.277-.224-.48.073-.19.037-.284-.082-.211-.117.073-.277-.122-.355-.433-.078-.31-.231-.564-.34-.564s-.198-.157-.198-.35c0-.91-1.048-1.254-1.562-.512m-211.533.648c.237.127.732.827 1.1 1.557s1.155 2.051 1.747 2.936 1.41 2.21 1.816 2.943a44 44 0 0 0 1.634 2.667c1.272 1.893 1.253 2.787-.085 3.87-7.833 6.336-11.55 14.998-10.688 24.907.211 2.423.422 3.49 1.342 6.778 1.291 4.612 5.554 10.602 9.676 13.593 1.033.75.938 1.996-.289 3.792-.52.761-1.013 1.561-1.095 1.777-.082.217-.605 1.099-1.161 1.96a65 65 0 0 0-1.791 2.962c-2.295 4.117-3.085 4.46-5.408 2.347a95 95 0 0 0-2.876-2.472c-1.766-1.453-5.175-5.132-6.141-6.627a84 84 0 0 0-1.596-2.334c-.562-.793-1.33-2.069-1.707-2.834-.376-.766-.893-1.731-1.149-2.145-.648-1.049-2.445-5.831-2.599-6.914-.164-1.165.233-2.063 1.719-3.883 4.189-5.13 4.127-11.484-.164-16.97-1.725-2.203-1.805-3.143-.562-6.553 2.557-7.011 7.833-14.359 13.706-19.088.855-.689 1.655-1.363 1.777-1.498.836-.92 1.944-1.226 2.794-.771M348 164.737c0 .222.348.732.774 1.134.425.401.709.794.629.874s-.023.144.126.144c.308 0 1.36.993 1.36 1.284 0 .107.249.428.555.715.305.287.509.566.455.621-.055.055.02.224.167.377.799.829 1.267 1.488 1.267 1.782 0 .183.1.332.223.332.122 0 .222.15.222.333s.1.334.222.334.222.191.222.426.105.46.232.503c.128.042.249.294.269.559.02.264.102.44.184.39.155-.096.871 1.608.871 2.074 0 .148.1.27.222.27s.222.25.222.555.1.556.222.556c.123 0 .223.406.223.902 0 .545.088.848.222.765.136-.084.222.261.222.889 0 .606.088.971.216.892.209-.129.255.004.578 1.663.272 1.395.363 10.488.107 10.743-.129.129-.234.715-.234 1.302 0 .586-.1 1.066-.222 1.066-.123 0-.223.256-.223.57 0 .69-.643 2.723-.915 2.891-.108.067-.196.421-.196.788 0 .388-.093.609-.222.529-.126-.078-.222.109-.222.431 0 .313-.1.569-.222.569-.123 0-.223.25-.223.556 0 .305-.1.555-.222.555s-.222.2-.222.445c0 .244-.1.444-.222.444-.123 0-.223.2-.223.444 0 .245-.089.445-.198.445s-.256.231-.327.514c-.114.454-.328.775-1.248 1.865a1.1 1.1 0 0 0-.227.621c0 .193-.2.566-.444.829-.244.262-.444.608-.444.768s-.1.292-.223.292c-.122 0-.222.158-.222.351 0 .361-1.522 2.812-1.829 2.945-.094.041-.171.27-.171.509 0 .24-.2.65-.444.913-.245.262-.445.608-.445.768s-.1.292-.222.292-.222.147-.222.328c0 .46-.785 1.701-.964 1.523-.081-.081-.147.019-.147.223 0 .203-.1.37-.223.37-.122 0-.222.25-.222.556 0 .305-.1.555-.222.555s-.222.131-.222.292-.2.506-.445.768c-.244.262-.444.631-.444.82s-.1.342-.222.342c-.123 0-.223.143-.223.317s-.25.613-.555.976-.556.771-.556.906-.1.246-.222.246-.222.25-.222.555-.088.556-.195.556-.32.3-.472.667c-.152.366-.362.666-.467.666s-.254.25-.33.554-.231.498-.343.428c-.112-.069-.19-.043-.172.057.076.437-.033 1.023-.166.89-.08-.079-.492.554-.917 1.408s-.86 1.552-.966 1.552c-.107 0-.194.2-.194.445 0 .244-.094.444-.208.444s-.276.217-.36.483-.341.684-.571.931c-.229.246-.417.579-.417.739s-.1.291-.222.291-.225.175-.227.389-.201.639-.44.945-.437.68-.439.833-.103.278-.223.278-.281.249-.357.554c-.077.305-.231.497-.343.428-.113-.07-.19-.044-.173.057.088.504-.046.972-.243.85-.122-.076-.222.018-.222.209 0 .19-.1.346-.222.346s-.222.2-.222.445c0 .244-.1.444-.222.444-.123 0-.223.181-.223.403 0 .221-.2.617-.444.879-.245.263-.445.632-.445.82s-.098.343-.218.343c-.119 0-.28.249-.357.554-.076.304-.211.509-.3.454-.088-.055-.296.246-.462.668s-.382.768-.482.768-.183.175-.185.389-.201.639-.44.944c-.239.306-.437.638-.44.739-.002.1-.129.321-.282.492-.509.567-.722.895-.795 1.223-.039.178-.164.358-.277.398s-.206.216-.206.389-.1.315-.222.315-.222.2-.222.444c0 .245-.08.445-.178.445s-.304.35-.459.778c-.155.427-.359.777-.455.777s-.355.4-.575.889c-.221.489-.467.889-.548.889s-.284.35-.452.778-.387.778-.486.778-.181.2-.181.444c0 .245-.075.445-.168.445-.092 0-.311.325-.486.722s-.425.844-.554.992c-.673.771-.792.962-.792 1.276 0 .189-.1.343-.222.343s-.222.15-.222.333-.1.334-.222.334c-.123 0-.223.2-.223.444 0 .435.148.445 6.889.445 4.445 0 6.889-.079 6.889-.223 0-.129.745-.222 1.791-.222 1.137 0 1.741-.081 1.654-.222-.084-.136.261-.222.89-.222.565 0 1.246-.119 1.513-.264.477-.258 1.67-.536 3.319-.774.458-.066.833-.21.833-.319s.4-.199.889-.199.889-.1.889-.222.417-.222.926-.222.858-.068.776-.151c-.162-.162 1.137-.708 2.131-.896.336-.063.611-.204.611-.312s.3-.197.667-.197.667-.1.667-.222.25-.222.555-.222.556-.1.556-.223c0-.122.316-.222.703-.222.388 0 .641-.063.565-.139-.157-.157 1.335-.972 1.779-.972.157 0 .286-.1.286-.222s.2-.222.445-.222c.244 0 .444-.1.444-.223 0-.122.25-.222.556-.222.305 0 .555-.1.555-.222s.2-.222.445-.222c.244 0 .444-.1.444-.222 0-.123.189-.223.421-.223s.478-.15.548-.333a.55.55 0 0 1 .468-.333c.188 0 .341-.1.341-.223 0-.122.2-.222.444-.222.245 0 .445-.1.445-.222s.15-.222.333-.222.333-.1.333-.222c0-.123.2-.223.445-.223.244 0 .444-.1.444-.222s.206-.222.458-.222c.251 0 .4-.093.33-.206-.07-.114.074-.27.32-.349s.448-.235.448-.349.15-.207.333-.207.333-.1.333-.222c0-.123.15-.223.334-.223.183 0 .333-.1.333-.222s.206-.222.458-.222c.251 0 .395-.1.32-.222-.076-.123.068-.223.32-.223s.433-.075.402-.166a.177.177 0 0 1 .111-.222c.092-.031.352-.231.578-.445.761-.72 1.37-1.167 1.591-1.167.121 0 .22-.1.22-.222s.1-.222.222-.222c.123 0 .608-.375 1.078-.833 1.161-1.132 1.772-1.611 2.049-1.611.128 0 .171-.1.096-.223-.076-.122-.041-.222.078-.222s.77-.55 1.448-1.222 1.353-1.222 1.501-1.222.211-.059.14-.13c-.072-.071.515-.771 1.304-1.555.788-.785 1.364-1.426 1.28-1.426s.063-.187.326-.415c.263-.229.478-.489.478-.578s.275-.428.612-.752.906-.989 1.266-1.478.82-1.039 1.022-1.222.523-.633.713-1 .552-.917.806-1.222l.644-.778c.1-.122.42-.647.711-1.167.292-.519.612-.944.711-.944.1 0 .182-.2.182-.444 0-.245.1-.445.222-.445s.222-.15.222-.333.077-.334.17-.334c.169 0 .571-.658.846-1.388.081-.214.236-.389.343-.389s.197-.2.197-.445c0-.244.1-.444.222-.444s.222-.15.222-.334c0-.183.1-.333.222-.333.123 0 .223-.2.223-.444 0-.245.1-.445.222-.445s.222-.25.222-.555.1-.556.222-.556c.123 0 .223-.2.223-.444 0-.245.092-.445.206-.445.266 0 .905-1.279.905-1.812 0-.225.1-.41.222-.41s.222-.25.222-.556c0-.305.1-.555.222-.555.123 0 .223-.194.223-.431 0-.238.1-.494.222-.569.122-.076.222-.333.222-.572s.088-.608.195-.82c.472-.934.916-2.094.916-2.393 0-.18.1-.326.222-.326.123 0 .223-.356.223-.791 0-.471.09-.735.222-.654.134.083.222-.22.222-.764 0-.496.1-.902.222-.902s.222-.35.222-.778.09-.778.2-.778.253-.425.317-.944c.065-.52.23-1.445.368-2.056.349-1.55.584-2.981.905-5.515.171-1.348.348-2.07.462-1.889.247.388-.034-15.82-.282-16.304-.105-.205-.192-.974-.192-1.709 0-.734-.1-1.396-.222-1.472-.122-.075-.222-.731-.222-1.457 0-.732-.099-1.321-.222-1.321s-.223-.505-.223-1.124c0-.618-.087-1.07-.193-1.004-.18.111-.562-1.211-.847-2.929-.066-.399-.209-.779-.318-.847-.108-.067-.197-.466-.197-.886 0-.421-.1-.765-.222-.765-.123 0-.223-.356-.223-.791s-.093-.733-.207-.663-.239-.149-.278-.487l-.07-.615h-23.389c-22.456 0-23.389.016-23.389.404m-26.339-.079c.074.12-.362.279-.992.363-.618.082-1.177.236-1.243.342-.065.106-.413.193-.772.193s-.654.1-.654.222-.3.222-.667.222c-.366 0-.666.1-.666.222s-.25.222-.556.222c-.305 0-.555.1-.555.223 0 .122-.192.222-.426.222-.235 0-.46.075-.5.167-.107.239-1.911 1.388-2.181 1.388-.125 0-.227.1-.227.223 0 .122-.15.222-.333.222s-.333.1-.333.222a.226.226 0 0 1-.228.222c-.124 0-.768.55-1.43 1.223-.661.672-1.315 1.222-1.452 1.222-.138 0-.188.1-.113.222.076.122-.018.222-.209.222-.19 0-.321.088-.291.195s-.265.505-.657.882c-.392.378-.865.981-1.05 1.34s-.465.787-.621.951-.481.674-.723 1.132c-.241.459-.516.834-.61.834-.095 0-.172.25-.172.555s-.1.556-.222.556-.222.2-.222.444c0 .245-.1.445-.223.445-.122 0-.222.244-.222.542s-.088.597-.196.664-.254.398-.324.735c-.07.338-.238 1.114-.373 1.725-.788 3.552-.627 11.729.249 12.656.11.116.2.491.2.833s.1.622.222.622.222.306.222.68.084.628.186.565.466.531.81 1.32c.343.79.71 1.435.814 1.435.105 0 .19.2.19.445 0 .244.1.444.222.444.123 0 .223.104.223.232 0 .231.07.328 1.111 1.531a47 47 0 0 1 1.333 1.653c.428.557.909 1.016 1.069 1.02s.229.109.153.231c-.075.122.019.222.209.222.191 0 .347.1.347.222a.22.22 0 0 0 .218.223c.196 0 .792.473 2.026 1.611.233.214.522.389.645.389.122 0 .222.1.222.222s.2.222.444.222c.245 0 .445.1.445.222s.2.222.444.222c.245 0 .445.076.445.168s.275.282.611.422c2.055.851 2.5 1.07 2.5 1.231 0 .099.356.179.791.179.47 0 .735.09.653.223-.084.135.257.222.876.222.557 0 1.013.1 1.013.222 0 .13.741.222 1.778.222s1.778.093 1.778.223c0 .125.629.222 1.444.222s1.445-.097 1.445-.222c0-.131.782-.223 1.902-.223 1.211 0 1.852-.08 1.764-.222-.075-.122.044-.222.265-.221.426.001 2.361-.588 3.01-.917a2.2 2.2 0 0 1 .833-.195c.246 0 .448-.1.448-.222 0-.123.256-.223.568-.223.323 0 .51-.096.432-.222s.113-.222.444-.222.523-.096.445-.222c-.076-.123.058-.223.296-.223.239 0 .491-.15.562-.333a.55.55 0 0 1 .468-.333c.187 0 .34-.1.34-.222 0-.123.15-.223.334-.223.183 0 .333-.1.333-.222s.15-.222.333-.222.334-.1.334-.222c0-.123.15-.223.333-.223s.333-.1.333-.222.156-.222.347-.222.284-.1.209-.222c-.076-.122-.056-.222.043-.222.232 0 2.733-2.379 2.74-2.607.003-.094.353-.571.778-1.06 1.174-1.351 1.217-1.409 1.217-1.657 0-.128.1-.232.222-.232s.222-.2.222-.444c0-.245.092-.445.204-.445s.375-.448.584-.995c.209-.548.467-.942.574-.876s.194-.136.194-.449.1-.569.222-.569.222-.3.222-.666.1-.667.222-.667c.123 0 .223-.35.223-.778s.1-.778.222-.778.222-.444.222-.987.1-1.048.222-1.124c.136-.084.222-1.78.222-4.346 0-2.658-.081-4.209-.222-4.209-.122 0-.222-.494-.222-1.098s-.1-1.16-.222-1.236c-.122-.075-.222-.487-.222-.915s-.09-.722-.199-.655c-.228.141-.468-.375-.468-1.003 0-.235-.1-.427-.222-.427-.123 0-.223-.2-.223-.444 0-.245-.1-.445-.222-.445s-.222-.2-.222-.444-.1-.444-.222-.444-.222-.205-.222-.455-.225-.695-.5-.989c-.834-.892-1.056-1.194-1.056-1.436a.235.235 0 0 0-.235-.232c-.13 0-.174-.1-.098-.222s.014-.222-.135-.222-.217-.055-.15-.123c.149-.149-3.322-3.655-3.618-3.655-.115 0-.209-.075-.209-.166s-.45-.451-1-.799c-.55-.347-.944-.722-.876-.833.069-.111-.081-.202-.333-.202-.251 0-.457-.1-.457-.222s-.206-.222-.458-.222c-.251 0-.395-.1-.32-.222.076-.123-.068-.223-.32-.223s-.458-.1-.458-.222-.151-.222-.336-.222-.51-.088-.722-.196a13 13 0 0 0-.942-.414c-.305-.12-.934-.381-1.396-.582-.463-.2-1.043-.364-1.291-.364-.247 0-.388-.1-.313-.222.086-.138-.335-.222-1.111-.222-.775 0-1.196-.084-1.111-.222.09-.146-1.372-.223-4.222-.223-2.732 0-4.31.08-4.228.214M28.125 176.237c6.593 1.715 10.414 9.276 7.632 15.102-4.437 9.29-17.213 8.587-20.495-1.128-.952-2.817-.956-3.231-.06-6.044 1.603-5.03 5.461-8.044 10.701-8.361.252-.016 1.252.178 2.222.431m90.626 12.671c1.893.526 2.386 2.152 1.601 5.282-.173.69-.385 1.804-.472 2.477-.25 1.943-2.052 7.152-3.075 8.889-.18.305-.641 1.255-1.025 2.111-1.199 2.676-4.164 6.726-6.994 9.557-1.424 1.423-2.05 1.594-4.439 1.208-6.843-1.104-12.656 2.41-14.768 8.928-.531 1.636-1.679 2.529-3.912 3.041-6.914 1.586-17.565 1.028-22.584-1.183-.687-.303-1.461-.551-1.719-.551s-1.316-.421-2.353-.935c-2.596-1.287-2.905-2.163-1.512-4.288.501-.764 2.612-4.457 5.017-8.777 1.152-2.07 1.881-2.201 5.151-.929 4.672 1.818 14.177 1.73 18.444-.171 10.548-4.697 16.128-11.279 17.983-21.21.685-3.667.713-3.679 8.239-3.684 3.298-.002 5.906.093 6.418.235m-15.127 31.334c2.963.448 6.04 2.579 7.798 5.4 5.655 9.074-4.732 20.134-14.311 15.238-10.875-5.559-5.541-22.463 6.513-20.638m131.45 22.199c-.066.196-.942.44-2.963.826-.367.07-.717.19-.778.266-.061.075-.661.327-1.333.558-2.145.739-4.983 2.068-6.607 3.093-.517.327-1.033.594-1.148.594a.33.33 0 0 0-.282.195c-.041.107-.474.46-.963.784-1.029.682-5.444 4.978-5.444 5.297 0 .119-.239.499-.531.846-1.706 2.027-4.557 8.625-5.277 12.211-1.02 5.083-1.268 8.457-.649 8.836.354.216.445.218.402.009-.037-.179.438-.331 1.388-.444.794-.095 2-.274 2.68-.398s1.549-.225 1.931-.225.758-.1.833-.222c.076-.123.376-.223.667-.223s.582-.085.646-.189.596-.369 1.18-.589c4.73-1.78 11.257-8.731 14.405-15.341 2.217-4.657 3.634-12.413 2.786-15.246-.238-.792-.769-1.151-.943-.638M235 274.234c-2.814.182-4.969.525-6.667 1.061a37 37 0 0 1-2.666.709c-.734.16-1.429.374-1.545.476-.116.103-.421.187-.678.187-.256 0-.561.089-.677.198-.198.187-3.712 1.371-5.434 1.832-2.413.646-5.555 1.018-5.555.657 0-.134-.35-.243-.778-.243s-.778.112-.778.248c0 .437-4.51-.171-6.666-.898a30 30 0 0 0-1.445-.425c-2.377-.635-3.595-.985-4-1.153a8 8 0 0 0-1.111-.322l-1.667-.349c-.55-.116-1.65-.339-2.444-.496-1.158-.229-1.432-.361-1.379-.667.077-.455-.101-.489-.495-.096-.444.445-2.154.211-2.291-.312-.113-.435-.502-.587-.502-.197 0 .141-1.519.223-4.114.223-2.263 0-4.288.087-4.5.194s-1.536.469-2.941.804c-1.65.394-3.344.991-4.778 1.685-3.931 1.902-4.678 2.424-8.48 5.927-2.675 2.465-7.155 9.174-8.274 12.39-.17.489-.53 1.389-.801 2-.27.611-.615 1.611-.767 2.222-.151.611-.354 1.311-.451 1.555-.548 1.381-1.784 7.879-1.783 9.371.001 1.012-.203 1.404-.746 1.433-.375.02-.394.047-.087.127.355.093.389.522.389 4.987 0 2.687.101 5.555.224 6.373s.436 2.937.696 4.709c.682 4.653.977 6.235 1.303 7 .104.245.307.995.451 1.667.349 1.63 1.638 5.655 2.572 8.031.414 1.056.754 1.978.754 2.05s.3.785.667 1.586c.366.8.666 1.5.666 1.555s.35.819.778 1.698.778 1.663.778 1.742c0 .746 7.619 13.792 8.438 14.449.076.061.379.461.673.889 3.97 5.783 9.851 10.627 15.14 12.471 2.259.787 8.78.631 10.082-.242.122-.082.672-.277 1.222-.433s1.174-.374 1.386-.484c.212-.111.511-.201.664-.201.152 0 .779-.243 1.392-.541s1.764-.755 2.558-1.015c.795-.26 1.645-.56 1.889-.667 1.371-.597 5.94-1.407 6.382-1.131.364.227.49.228.628.006.281-.456 2.509-.546 2.936-.119.253.253.405.285.515.108.197-.319 2.437-.113 2.893.265.178.148.374.218.436.156.214-.214 3.799.612 5.099 1.175.245.106 1.145.408 2 .672.856.263 1.856.604 2.222.756 1.133.471 4.462 1.325 7.111 1.823 1.242.233 2.348.289 3.667.184 1.039-.083 2.139-.166 2.445-.184.305-.018.687-.16.849-.316a1.13 1.13 0 0 1 .678-.283c.211 0 .479-.079.595-.177s.585-.303 1.042-.458c3.817-1.291 9.821-7.176 14.769-14.476 2.168-3.199 6.733-10.988 6.733-11.489 0-.048.333-.807.739-1.688s.868-1.951 1.026-2.379a34 34 0 0 1 .601-1.492c.173-.393.502-1.293.731-2 .23-.707.487-1.461.573-1.676.127-.316-.089-.496-1.145-.955-2.075-.9-2.333-1.039-4.025-2.182-5.218-3.522-10.194-10.197-11.949-16.028-.221-.733-.473-1.433-.559-1.555-.087-.123-.21-.523-.274-.889-.064-.367-.276-1.517-.472-2.556-2.159-11.448 1.773-21.806 11.81-31.11 1.375-1.274 2.5-2.399 2.5-2.498 0-.487-6.33-6.836-6.815-6.836-.163 0-.296-.088-.296-.195 0-.569-6.001-3.915-8.278-4.615-.703-.216-1.278-.472-1.278-.569s-.294-.177-.653-.177-.716-.1-.791-.222-.477-.222-.891-.222-1.234-.093-1.821-.207c-1.487-.288-5.313-.397-7.955-.226"}),a.createElement("path",{fill:"#5a5a5a",d:"M218.693 21.253c-.266.3-.254.336.093.269.22-.043.441-.203.492-.355.128-.384-.214-.334-.585.086m-2.693.298c0 .125.317.227.704.227.809 0 .78-.097-.093-.307-.363-.087-.611-.054-.611.08m-5 .671c.076.122-.035.222-.246.222s-.324.06-.252.132c.206.206 1.075-.139.933-.37a.47.47 0 0 0-.35-.206c-.122 0-.161.1-.085.222m-2.778.445c0 .122.275.215.611.206.542-.014.561-.037.167-.206-.607-.261-.778-.261-.778 0m-7.889 1.111c-.075.122.013.222.196.222.184 0 .395-.1.471-.222s-.013-.222-.196-.222-.395.1-.471.222m-2.926.376c0 .338.412.279.53-.075.041-.125-.061-.227-.227-.227a.304.304 0 0 0-.303.302m-2.412 20.179c0 10.511.027 14.779.061 9.484.033-5.296.033-13.896-.001-19.111-.033-5.216-.06-.884-.06 9.627M169 28.148c-.391.313-.395.339-.037.215.224-.077.499-.141.611-.141s.204-.1.204-.222c0-.315-.263-.265-.778.148m26.111 35.682c0 .089 11.625.142 25.833.116 14.209-.026 23.184-.075 19.945-.108-14.748-.149-45.778-.155-45.778-.008m-33.944.114c5.347.034 14.097.034 19.444 0 5.347-.033.972-.06-9.722-.06-10.695 0-15.07.027-9.722.06m33.852 4.643c-.106.276-.071.308.143.132.155-.127.532-.278.838-.334.484-.089.465-.106-.143-.133-.463-.02-.746.093-.838.335m51.425-.28c0 .047.25.133.556.192s.556.02.556-.085-.25-.192-.556-.192-.556.039-.556.085M194.995 88c0 10.328.027 14.553.06 9.389.034-5.164.034-13.614 0-18.778-.033-5.164-.06-.939-.06 9.389m-41.271 13.259c.153.062.233.187.177.278-.141.227.715.147.928-.087.094-.103.053-.12-.091-.038-.145.083-.326.049-.402-.075s-.309-.218-.516-.208c-.233.011-.27.06-.096.13m5.048.879c.198.197.428.292.51.21.082-.083.002-.243-.177-.357-.525-.332-.724-.244-.333.147m15.895 2.195c.152.184.376.334.499.334s.099-.148-.055-.334c-.152-.183-.377-.333-.499-.333-.124 0-.1.147.055.333m10.666 1.479c0 .23.406.219 1-.027.361-.149.309-.182-.277-.173-.398.006-.723.096-.723.2m15.404 2.064c.3.303.467.343.655.154.184-.184.185-.252.004-.252-.137 0-.432-.07-.656-.154-.393-.149-.393-.141-.003.252m8.051 1.104c.236.173.524.256.639.184.116-.071.017-.205-.22-.298-.695-.272-.879-.222-.419.114m-142.562 2.476c-.002.128.1.336.226.462.583.583-.243 1.186-2.23 1.627-1.556.345-2.381.288-2.716-.191-.432-.617-1.506-.517-1.506.141 0 .826-1.631 1.591-2.778 1.303-.305-.077-.555-.291-.555-.477 0-.249-.102-.284-.389-.137-.214.11-.514.156-.667.101-.174-.063-.278.105-.278.447 0 .657-.299.933-1.333 1.228-.428.122-.627.231-.443.242.591.036 1.824-.399 2.264-.797.288-.26.713-.366 1.3-.323.832.06 3.187-.488 3.657-.851.122-.095 1.022-.228 2-.295 3.653-.253 5.2-.886 4.918-2.01-.153-.608-1.026-.875-1.033-.315q-.003.278-.219-.055c-.118-.184-.217-.229-.218-.1m3.48.189c-.394 1.026.047 1.094 7.073 1.092 7.076-.002 7.465-.064 7.054-1.136-.106-.275-.182-.219-.337.244-.11.33-.316.605-.459.613-.143.007-3.036.018-6.429.024-6.29.011-6.973-.074-6.682-.832.067-.174.072-.317.01-.317s-.165.141-.23.312m15.715.26c-.198.785-.011.912 2.26 1.539 2.362.651 3.193.509 3.204-.549.003-.208-.129-.138-.36.192-.562.803-3.252.159-3.147-.754.125-1.085-1.693-1.483-1.957-.428m7.023 1.671c0 .44.157.653.612.83 1.045.407 2.357.703 3.12.704.402.001 1.002.198 1.333.439s1.052.493 1.602.56l1 .121-.979-.324c-1.077-.357-1.407-.705-1.223-1.295.155-.498-.68-.538-1.163-.055-.743.743-3.413-.08-3.413-1.053 0-.371-.127-.519-.444-.519-.333 0-.445.148-.445.592m-40.824 3.083c-.392.239-1.292.602-2 .808-1.383.401-2.669.931-4.331 1.786-.624.321-1.272.496-1.611.435-.312-.057-.567-.01-.567.104 0 .41-.899 1.097-1.436 1.097-.3 0-.729.196-.952.435s-.704.564-1.068.722a7.6 7.6 0 0 0-1.215.69c-1.121.817-2.988 1.931-3.239 1.931-.142 0-.386.154-.542.342-.486.586-3.707 2.769-4.085 2.769-.197 0-.532.284-.744.631s-1.036 1.163-1.83 1.812c-1.768 1.444-7.478 7.203-8.229 8.298-.3.438-.77.917-1.043 1.063-.274.147-.549.428-.612.625-.153.483-2.168 3.287-3.001 4.176-.369.394-.671.85-.671 1.014s-.429.942-.954 1.728c-.524.787-1.085 1.752-1.246 2.145-.16.394-.432.831-.603.973-.273.227-.985 1.63-3.427 6.757-.349.733-.733 1.683-.853 2.111-.119.428-.527 1.578-.905 2.556-.906 2.343-1.751 5.48-3.023 11.222-.458 2.068-.986 5.726-.987 6.846-.003 1.971-.506 5.154-.815 5.154-.233 0-.298.604-.298 2.778 0 2.238.061 2.777.313 2.777.341 0 .534 1.021.797 4.223.086 1.039.109-.761.052-4-.114-6.439.193-12.788.736-15.223.19-.855.441-2.155.558-2.888.239-1.503.349-1.963 1.428-5.955.85-3.148 2.308-7.445 3.107-9.157 2.397-5.134 3.386-7.009 5.295-10.037a61 61 0 0 0 1.233-2.033c3.156-5.655 15.324-17.702 20.665-20.458a7 7 0 0 0 1.039-.679c.628-.526 3.135-2.015 3.392-2.015.118 0 .453-.185.744-.412.292-.227.893-.53 1.337-.675s.984-.459 1.201-.699.542-.436.723-.436 1.29-.434 2.465-.965c1.176-.531 2.798-1.184 3.605-1.452 1.834-.608 3.354-1.361 2.746-1.36-.24.001-.756.197-1.149.436m49.824.246c.734.357 1.493.649 1.688.65.194 0 1.544.55 3 1.221s2.807 1.221 3.005 1.222.597.188.889.416c.291.227 1.311.826 2.267 1.331s1.953 1.069 2.216 1.253.661.335.884.335.65.263.948.585 1.068.914 1.711 1.317c1.433.899 2.198 1.463 4.58 3.382 1.02.822 2.32 1.818 2.889 2.215s1.105.796 1.192.888c.087.093 1.537 1.593 3.222 3.334 3.373 3.484 8.069 9.351 8.738 10.916.123.289.431.789.685 1.111.821 1.045 2.499 4.091 3.937 7.151.773 1.644 1.647 3.49 1.941 4.101.567 1.177 1.203 2.917 1.867 5.111.223.734.506 1.634.63 2 .244.72.771 2.755 1.266 4.889 1.735 7.478 2.171 20.422.937 27.853-.331 1.997-.603 3.925-.603 4.285 0 .359-.3 1.563-.666 2.676s-.665 2.135-.663 2.271c.01.638-1.978 6.533-2.781 8.249-1.505 3.216-4.633 9.465-4.784 9.559-.288.178-1.55 2.52-1.55 2.877 0 .182-.239.487-.53.678s-.906.919-1.366 1.617c-2.585 3.921-11.192 12.982-13.816 14.544-.392.233-.772.611-.845.841s-.352.485-.621.569-.75.365-1.07.623c-.524.423-2.115 1.473-4.079 2.692a66 66 0 0 0-1.361.869l-1.435.944c-.435.286-.896.52-1.025.52s-.601.249-1.049.553-1.044.61-1.324.68c-.281.071-.794.372-1.14.67-.347.298-.83.541-1.074.541s-1.079.3-1.855.667-1.485.667-1.574.667c-.09 0-.665.237-1.277.526-.613.29-1.515.632-2.004.761-.488.129-1.488.44-2.222.691-2.775.951-3.617 1.184-5.759 1.595-2.977.572-3.438.892-3.101 2.149.221.823 1.062.676.896-.157-.18-.896.56-1.45 2.354-1.76 1.482-.257 2.388-.145 2.388.295 0 .148.15.27.334.27.291 0 .288-.051-.018-.39-.465-.513.098-.893 2.128-1.44.795-.213 1.816-.573 2.269-.798 1.193-.592 2.905-.382 2.481.303-.091.148-.05.183.105.087.141-.087.257-.349.257-.581 0-.595.74-1.215 1.839-1.539.516-.153 1.269-.479 1.672-.726.503-.307.941-.407 1.389-.317.36.072.655.052.655-.044 0-.401.947-1.147 1.455-1.147.303 0 .757-.241 1.015-.538.258-.296.699-.596.982-.667.282-.07 1.246-.628 2.142-1.238.895-.611 1.804-1.111 2.019-1.111.215-.001.565-.209.778-.463 1.403-1.67 4.522-2.95 4.202-1.723-.089.337-.049.378.178.189.316-.261.67-1.088.881-2.057.076-.349.39-.743.74-.929 2.091-1.108 9.52-8.802 12.66-13.111.705-.967 1.643-2.117 2.085-2.555s.88-1.047.973-1.353c.242-.796 1.152-2.311 1.67-2.78.243-.22.442-.54.442-.71 0-.171.8-1.882 1.778-3.803s1.778-3.62 1.778-3.774c0-.155.175-.547.389-.87.403-.61 1.108-2.495 1.83-4.893.23-.762.574-1.609.766-1.883.191-.273.35-.9.353-1.392s.187-1.296.409-1.785c.479-1.053.841-2.603 1.038-4.443.079-.734.277-1.934.441-2.667 1.061-4.738 1.075-22.366.02-24.073-.065-.104-.319-1.507-.566-3.116s-.614-3.245-.815-3.636c-.217-.419-.363-1.21-.356-1.934.009-.982-.088-1.325-.486-1.723-.274-.274-.613-.996-.753-1.605-.239-1.033-.817-2.542-2.436-6.357-.587-1.385-1.382-2.957-3.966-7.848-.408-.772-.97-1.687-1.249-2.034s-.808-1.156-1.175-1.798c-.366-.642-.887-1.384-1.158-1.65-.809-.796-3.619-4.778-3.619-5.129 0-.179-.325-.519-.723-.756-.967-.575-5.271-4.905-5.303-5.334a5 5 0 0 0-.077-.563 6 6 0 0 1-.086-.466c-.086-.621-.857-1.213-1.139-.874-.423.509-5.588-2.907-6.241-4.129-.124-.231-.396-.421-.606-.424-.639-.007-2.455-1.28-2.813-1.971-.24-.465-.457-.62-.757-.542-.385.101-2.568-.945-3.367-1.613-.183-.154-.598-.346-.923-.426-.324-.081-.817-.389-1.094-.684s-.723-.537-.99-.537c-1.131 0-4.853-2.027-4.752-2.588.117-.652-.044-.808-.364-.351-.458.653-1.285.634-2.59-.061-.574-.306-1.174-.548-1.332-.539s.312.309 1.045.666m-1.555 15.628c-8.276 2.036-11.219 12.134-5.221 17.912 5.3 5.107 13.366 3.611 16.949-3.145 3.846-7.25-3.693-16.743-11.728-14.767m6.333 1.045c5.284 2.513 7.599 8.544 5.201 13.547-3.816 7.961-14.85 8.1-18.704.235-4.142-8.453 5.028-17.812 13.503-13.782m-35.333 9.77c-3.504.526-7.178 1.4-8.708 2.069a65 65 0 0 1-2.593 1.05c-2.298.867-2.911 1.74-2.168 3.089 6.511 11.833 6.635 11.987 8.672 10.806 3.875-2.246 16.744-2.312 20.559-.104.419.242 1.253.627 1.852.855 7.391 2.808 14.435 11.62 15.852 19.831.492 2.854 1.331 4.173 2.467 3.878.333-.086.322-.108-.069-.13-.569-.031-1.613-1.028-1.75-1.671-.055-.256-.254-1.331-.443-2.388-1.798-10.064-10.902-19.292-21.338-21.631-5.82-1.305-13.965-.72-17.405 1.248-.857.491-.964.504-1.529.19-.57-.317-.881-.786-2.948-4.44-4.311-7.62-4.073-7.129-3.8-7.848.242-.638 1.568-1.395 3.571-2.04.672-.216 1.331-.478 1.463-.583 1.252-.984 11.268-2.542 15.093-2.348 7.605.386 10.207 1.304 11.292 3.985 2.817 6.965 9.437 10.673 16.211 9.08 1.805-.425 3.094.41 5.597 3.627 4.861 6.248 7.723 12.581 8.795 19.46.876 5.621 1.205 5.318-5.84 5.385l-5.389.051 5.111.067c6.652.087 6.778.051 6.778-1.967 0-6.361-3.885-16.373-8.723-22.478-3.076-3.882-4.531-4.858-6.588-4.416-6.038 1.294-12.247-1.663-14.817-7.056-1.709-3.587-1.757-3.658-2.924-4.303-2.704-1.492-10.665-2.113-16.281-1.268m-22.039 9.614c-6.467 5.418-11.406 12.37-13.716 19.303-1.031 3.093-.965 3.78.552 5.772 4.385 5.755 4.517 12.016.366 17.329-2.189 2.801-2.22 3.106-.709 7.105 2.821 7.464 6.906 12.986 14.406 19.473 2.456 2.126 3.151 1.956 4.781-1.166.319-.611 1.214-2.111 1.987-3.334 4.24-6.697 4.186-6.37 1.432-8.656-7.066-5.865-10.992-16.628-9.529-26.121 1.08-7.009 3.307-11.331 8.505-16.506 1.691-1.684 3.075-3.236 3.075-3.448 0-.455-.154-.733-2.778-5.03a481 481 0 0 1-2.938-4.867c-1.671-2.833-1.886-2.827-5.434.146m4.191-1.462c.313.336.922 1.211 1.354 1.944 1.75 2.972 3.488 5.852 4.301 7.127 1.122 1.76 1.13 2.482.039 3.467-5.404 4.878-7.94 8.577-9.587 13.987-3.566 11.709.013 23.455 9.722 31.911 1.033.9 1.004 1.645-.133 3.436A232 232 0 0 0 54.166 221c-1.377 2.438-2.005 2.662-3.56 1.27a81 81 0 0 0-2.566-2.148c-1.845-1.484-4.748-4.512-6.118-6.38-2.225-3.036-2.68-3.735-3.87-5.951-1.307-2.435-2.712-5.727-3.295-7.723-.449-1.539-.182-2.478 1.191-4.184 4.462-5.544 4.517-11.889.155-17.662-1.773-2.345-1.801-2.672-.543-6.318 2.273-6.592 6.607-12.805 12.611-18.08 3.616-3.175 3.936-3.328 4.87-2.324m-28.485 24.867c-6.785 1.006-10.985 7.695-8.84 14.079 2.992 8.906 15.477 9.471 19.595.887 3.368-7.018-3.154-16.093-10.755-14.966m4.537.836c8.616 3.152 9.242 15.238.986 19.026-10.107 4.637-19.349-7.457-12.168-15.924 2.639-3.113 7.481-4.456 11.182-3.102m77.018 12.216c-1 .436-1.134.705-1.666 3.344-1.998 9.917-8.014 16.823-18.556 21.301-4.117 1.749-13.611 1.867-18 .223-2.941-1.102-3.061-1.131-3.694-.911-.413.144-.847.61-1.271 1.366-.354.631-1.525 2.697-2.601 4.591-3.845 6.769-3.804 6.576-1.648 7.773 6.724 3.735 22.151 5.038 28.698 2.424.619-.247 1.55-1.467 1.847-2.422 2.042-6.56 8.228-10.178 15.507-9.07 2.507.381 3.34-.153 6.641-4.26 2.455-3.055 5.761-9.048 6.743-12.222.208-.673.566-1.823.797-2.556.946-3.01 1.546-7.93 1.074-8.811-.572-1.069-11.761-1.689-13.871-.77m13.353.649c1.119 1.302-.845 11.404-2.795 14.376-.201.306-.787 1.448-1.302 2.537-1.106 2.338-2.443 4.423-4.5 7.019-2.938 3.708-3.63 4.129-6.147 3.737-7.386-1.151-12.904 2.14-15.818 9.433-.759 1.899-1.268 2.222-4.488 2.85-6.197 1.208-16.259.6-20.647-1.247-.72-.303-1.415-.551-1.545-.551-.533 0-3.729-1.366-4.18-1.786-.982-.915-1.009-.849 3.885-9.504 2.151-3.804 2.365-3.93 4.837-2.836 4.632 2.048 15.568 2.116 19.458.121.428-.219 1.753-.862 2.945-1.429 8.039-3.821 13.757-11.146 15.523-19.884.75-3.709.425-3.569 8.163-3.508l6.075.048zM2.693 197.111c-.105 1.732 1.98 10.585 3.508 14.889.368 1.039.828 2.339 1.021 2.889.313.892 2.424 5.409 3.063 6.555.31.555 1.214 2.201 1.911 3.476.291.533.899 1.519 1.351 2.191 1.665 2.476 2.009 3.028 2.009 3.227 0 .112.347.557.771.988.425.432 1.52 1.735 2.435 2.896.914 1.161 2.07 2.511 2.567 3s.983 1.189 1.08 1.556c.124.47.374.732.849.889.92.304 1.364.708 1.874 1.707.246.483.598.85.817.853.211.003 1.284.762 2.384 1.687s2.373 1.923 2.829 2.217.892.786.969 1.091c.102.408.288.556.695.556.731 0 2.611 1.229 2.921 1.909.171.376.427.537.859.54.339.003.866.201 1.172.44s.663.436.794.439c.132.003.473.254.758.557s.859.616 1.274.694c.44.083.899.362 1.101.67.229.349.558.529.971.529.801 0 1.367.567 1.281 1.283-.075.62.585.918.798.361.175-.454 1.198-.38 1.851.133.311.245.755.445.987.445.903 0 1.944.626 2.1 1.263.207.845.5.988 1 .488.524-.524.889-.525 1.927-.006.453.227 1.524.59 2.38.808 1.003.255 1.714.58 2.001.913.324.375.537.459.778.306.183-.115.582-.218.888-.228q.857-.029-2.889-.992a25 25 0 0 1-2.607-.878c-.761-.31-1.614-.563-1.895-.563s-.732-.155-1.003-.345-1.017-.526-1.66-.747a17 17 0 0 1-2.054-.877c-.487-.262-1.145-.476-1.461-.476-.327 0-.802-.24-1.098-.555-.287-.306-.691-.556-.898-.556-.206 0-.634-.203-.95-.452a5.3 5.3 0 0 0-1.308-.703 5.5 5.5 0 0 1-1.288-.671c-1.044-.788-2.333-1.568-2.945-1.782-.336-.117-.611-.289-.611-.382 0-.203-2.348-1.787-2.65-1.787-.116 0-.654-.375-1.195-.834a253 253 0 0 0-2.291-1.907c-2.421-1.988-3.738-3.143-4.637-4.067-.491-.506-1.212-1.08-1.6-1.276s-.777-.578-.863-.85c-.086-.271-.584-.947-1.105-1.502-4.11-4.374-8.307-10.234-10.591-14.787a52 52 0 0 0-.7-1.333c-2.387-4.356-5.69-13.57-6.411-17.889-.113-.672-.396-2.172-.63-3.333a105 105 0 0 1-.513-2.667l-.087-.555zm96.829 23.556c-7.789 1.976-10.64 12.277-4.948 17.878 8.647 8.51 22.703-2.184 16.587-12.619-2.307-3.937-7.536-6.3-11.639-5.259m6.647 1.027c5.485 2.746 7.746 8.924 5.107 13.957-5.092 9.714-19.36 6.357-19.382-4.56l-.005-2.799.859-1.692c2.624-5.17 8.56-7.339 13.421-4.906m123.326 22.07c-.097.37-.055.395.293.178.223-.139.356-.333.296-.431-.193-.312-.473-.191-.589.253m-6.178 2.932c-.187.351-.152.354.463.048.789-.394.805-.427.202-.427-.254 0-.553.171-.665.379m12.927 1.415a11 11 0 0 1-.138 1.445c-.061.305-.045.405.036.222s.23-.388.332-.455.098-.567-.009-1.111l-.194-.99zm-18.152 2.684-1.314 1.24 1.389-1.178c.764-.648 1.389-1.206 1.389-1.24 0-.168-.254.036-1.464 1.178M60.443 259.69c1.63.461 1.84.663 1.69 1.629-.09.579-.068.673.079.348.173-.382.203-.39.217-.056.022.563.606.478.764-.111.342-1.275-.319-1.762-2.749-2.023l-1.222-.132zm4.713 1.021c-.147.147-.253.522-.237.833.028.524.038.529.127.067.185-.965 1.032-1.08 3.454-.47.487.122.833.344.833.534 0 .252.326.325 1.445.325 1.972 0 2.005-.515.055-.868-3.816-.69-5.299-.8-5.677-.421m20.955-.117c-3.238.404-5.296 1.406-2.889 1.406.729 0 1-.088 1-.325 0-.306.605-.534 2.376-.894.863-.175 1.624.191 1.624.782 0 .241.1.437.222.437.376 0 .247-.642-.222-1.111-.431-.431-.708-.47-2.111-.295m123.667 3.989c0 .295.06.31.333.084.183-.152.333-.315.333-.361s-.15-.084-.333-.084-.333.162-.333.361m18.097 2.139-.653.722.722-.652c.674-.609.825-.792.653-.792-.038 0-.363.325-.722.722m-18.625.953c-.077.199-.129.578-.116.843.014.305.09.196.205-.294.194-.826.141-1.15-.089-.549m16.403 1.492-.653.722.722-.653c.673-.608.825-.792.653-.792-.038 0-.363.325-.722.723m-17.431 2.264c0 .47.376.623.532.216.191-.495.175-.536-.198-.536a.33.33 0 0 0-.334.32m13.904.546c-.068.109.026.256.209.326.201.077.332-.001.332-.199 0-.359-.348-.441-.541-.127M220 273.532c0 .149-.1.21-.222.135s-.444.019-.716.209-.378.346-.236.346a.54.54 0 0 0 .406-.237c.08-.131.283-.185.45-.121.322.124.677-.246.451-.471-.073-.074-.133-.011-.133.139m15.43.101c-.365.204.135.256 2.445.259 1.596.001 2.628-.031 2.292-.071s-.611-.166-.611-.28c0-.295-3.575-.216-4.126.092m-4.023.478c0 .19.091.316.202.279a.32.32 0 0 0 .202-.279.31.31 0 0 0-.202-.278c-.111-.037-.202.088-.202.278m12.037-.111c-.075.122-.089.222-.031.222s.266.061.46.136c.259.1.317.04.217-.222-.156-.406-.442-.466-.646-.136m-34.944 1c.003.489.048.663.102.386.053-.276.051-.676-.005-.889s-.099.014-.097.503m-27.108-.396c.338.051.838.05 1.111-.003s-.003-.095-.614-.093-.835.045-.497.096m4.552-.003c.275.053.725.053 1 0s.05-.096-.5-.096-.775.043-.5.096m5.947.285c-.069.111.086.316.344.454.607.325.686.205.181-.276-.22-.21-.456-.29-.525-.178m21.776.447c-.489.088-.689.175-.445.194.245.019.656.091.914.161.309.082.516.005.604-.226.074-.193.063-.337-.025-.319-.088.017-.559.103-1.048.19m-19.445.222c-.552.14-.551.142.111.273.761.151.813.136.599-.183-.085-.127-.404-.168-.71-.09m-19.444.223c-.163.263.055.263.666 0 .429-.184.427-.192-.042-.207-.268-.008-.549.085-.624.207m36.166-.066c-.619.12-.661.51-.055.51.244 0 .444-.092.444-.206s.175-.251.389-.307c.501-.131-.094-.128-.778.003m14.278.066c-.162.263.055.263.667 0 .428-.184.427-.192-.043-.207-.267-.008-.548.085-.624.207m-25.578 1.148c-.063.102-.067.185-.009.185s.265.061.458.135c.22.085.351.015.351-.185 0-.342-.609-.445-.8-.135m2.134.532c0 .15.128.322.285.382.165.063.286-.053.286-.273 0-.21-.128-.382-.286-.382a.28.28 0 0 0-.285.273m51.111.251c0 .044.225.176.5.294s.75.386 1.055.596c.445.305.423.252-.111-.264-.553-.536-1.444-.921-1.444-.626m-35.199.421c-.083.216-.033.318.129.264.332-.111.515-.616.223-.616-.119 0-.277.158-.352.352m-1.784.461c-.088.23.03.268.489.158.81-.194.829-.231.181-.355-.343-.066-.598.009-.67.197m40.538.978c0 .129-.1.173-.222.098-.48-.297-.186.054.423.504l.645.477-.328-.657c-.34-.682-.518-.827-.518-.422m2.445 2.403c.672.62 1.257 1.027 1.299.904.102-.299-.411-.902-.644-.758-.101.063-.565-.198-1.031-.58s-.296-.187.376.434m-94.667-.284c0 .259.094.278.445.09.244-.131.444-.263.444-.294s-.2-.071-.444-.09c-.259-.019-.445.104-.445.294m97.111 2.645c.963.993 1.08.993.288 0-.342-.427-.716-.777-.831-.777-.116 0 .129.35.543.777m-99.458.167-.653.722.722-.652c.398-.359.723-.684.723-.723 0-.171-.184-.02-.792.653m102.071 2.537c.153.061.222.204.153.315s.031.204.221.204c.191 0 .347-.09.347-.199 0-.193-.554-.486-.852-.451-.082.01-.023.069.131.131m-2.192 2.755c-.426.42-.495.52-.153.222.418-.364.621-.441.621-.233 0 .226.066.242.247.061.136-.136.205-.375.153-.531-.061-.183-.368-.013-.868.481m-4.21 4.152-.766.834.833-.766c.458-.421.833-.796.833-.833 0-.17-.188-.01-.9.765m-104.848 7.144c-.216.137-.241.303-.086.58.19.339.23.315.328-.196.061-.321.1-.582.087-.58s-.162.09-.329.196m-.78 3.476a2.5 2.5 0 0 0-.115.843c.014.305.089.196.205-.294.194-.826.141-1.15-.09-.549m-.953 3.331c0 .384.407.327.542-.076.048-.145-.054-.263-.227-.263s-.315.152-.315.339m98.37 3.152c0 .239.15.434.334.434.183 0 .333-.071.333-.157s-.15-.283-.333-.435c-.277-.23-.334-.203-.334.158m-98.722-.005c-.532.139-.492.514.056.514.247 0 .444-.149.444-.334 0-.183-.025-.322-.055-.307a7 7 0 0 1-.445.127m98.569 2.18c.001.734.043 1.007.092.607a6 6 0 0 0-.002-1.333c-.051-.334-.091-.007-.09.726M150.751 316c0 1.406.036 1.981.08 1.278s.044-1.853 0-2.556-.08-.128-.08 1.278m98.431 1.111c0 .795.041 1.12.09.722a7 7 0 0 0 0-1.444c-.049-.397-.09-.072-.09.722m.151 2.111c0 .204.108.335.239.291.132-.044.239-.175.239-.291s-.107-.247-.239-.291c-.131-.043-.239.088-.239.291m-98.59 1.556c.001.978.04 1.35.087.827.047-.522.046-1.322-.002-1.778s-.086-.027-.085.951m-.521 3.872c0 .132.142.239.315.239s.371.125.441.278c.069.152.101.079.071-.164-.055-.454-.827-.782-.827-.353m1.516 6.412c-.052.351.029.753.18.894.216.201.247.079.147-.572-.163-1.057-.212-1.106-.327-.322m108.142 8.621c.494.497.931.881.971.852.161-.114-.438-.979-.678-.979-.14 0-.466-.175-.723-.389-.258-.214-.064.018.43.516M154 340.754c0 .17.152.368.338.439.277.106.296.049.104-.309-.276-.515-.442-.564-.442-.13m1.5 3.746c.149.599.722 1.486.722 1.118 0-.142-.1-.32-.222-.396-.122-.075-.222-.325-.222-.555s-.091-.475-.202-.543-.145.101-.076.376m111.094 4.728c-.082.241-.21.589-.284.772s.034.106.239-.172c.205-.279.333-.626.284-.772-.05-.15-.154-.074-.239.172m-8.817 16.605c-.327.447-.381.602-.141.407.365-.295.916-1.129.747-1.129-.042 0-.315.325-.606.722m-89.039 3.778c.155.497.395.826.594.816q.341-.016.057-.13c-.153-.061-.278-.234-.278-.384s-.142-.467-.317-.704c-.28-.382-.286-.336-.056.402m85.706.833c-.261.367-.424.667-.363.667s.325-.3.586-.667c.261-.366.424-.666.363-.666s-.324.3-.586.666m-2.85 3.404c-.525.559-.608.819-.261.819.123 0 .223-.117.223-.261 0-.143.165-.443.367-.666.539-.596.24-.497-.329.108m-77.705 1.485c.849.856 1.594 1.556 1.655 1.556s-.584-.7-1.433-1.556c-.849-.855-1.594-1.555-1.655-1.555s.584.7 1.433 1.555m75.948.306c-.716.725-.84.945-.519.922.569-.042 1.126-.531 1.126-.988 0-.205.12-.493.267-.64.147-.146.222-.262.167-.257s-.524.438-1.041.963m-42.027 1.448c-.211.133-.227.237-.056.343.135.083.246.053.246-.067 0-.121.175-.265.389-.321.275-.072.292-.108.055-.124a1.24 1.24 0 0 0-.634.169m-2.323.565c-.235.178-.31.363-.181.442.122.076.303 0 .403-.168.099-.168.33-.362.513-.431.297-.113.297-.128 0-.137-.183-.006-.514.127-.735.294m12.521.134c.249.249.563.385.697.302.151-.094.042-.263-.286-.445-.772-.428-.927-.374-.411.143m28.828.429c-.206.24-.285.491-.176.559.209.129.295.028.521-.607.177-.499.115-.49-.345.048m-43.725.005-.555.138.545.146c.582.155.772.088.644-.227-.043-.107-.328-.133-.634-.057m17.111.144c0 .336.127.352.772.1.393-.154.376-.183-.167-.287-.419-.08-.605-.022-.605.187m-41.87.827c.077.2.354.357.616.347q.486-.017.143-.141a2.7 2.7 0 0 1-.616-.347c-.212-.168-.248-.132-.143.141m44.672.014c.118.308.754.678.754.439 0-.156-.599-.755-.755-.755-.066 0-.066.142.001.316m1.617.523c.149.279.372.444.496.367s.194-.158.156-.18a10 10 0 0 1-.496-.367c-.401-.307-.41-.297-.156.18m18.738.601c-.645.34-.849.545-.63.629a.347.347 0 0 0 .448-.194c.067-.176.263-.32.435-.32.173 0 .438-.15.59-.333.337-.406.339-.407-.843.218m-16.822.113c-.079.128.014.162.222.082.214-.082.533.052.798.336.447.481.776.642.545.268-.07-.113-.001-.249.153-.302s.109-.07-.1-.039-.497-.084-.638-.254c-.3-.362-.785-.407-.98-.091m-29.89.223-.556.138.546.145c.582.155.771.089.644-.226-.043-.107-.329-.133-.634-.057m-1.433.424c-.416.163-.415.174.041.294.293.076.519.006.593-.185.13-.341.011-.361-.634-.109m34.019.133c.07.184.279.334.465.334.274 0 .285-.062.06-.334-.152-.183-.361-.333-.465-.333-.103 0-.13.15-.06.333m-44.843.833a.54.54 0 0 1 .104.528c-.064.168-.006.306.129.306s.246-.142.246-.315.125-.357.278-.408c.152-.051-.005-.147-.351-.213q-.626-.12-.406.102m7.857-.011c-.324.324-.351.845-.045.845.122 0 .222-.192.222-.426s.125-.476.278-.538.173-.12.045-.13c-.129-.009-.354.103-.5.249m46.331.057c-.178.177-.385.26-.46.185s-.138.029-.138.233c0 .228.179.37.468.37.321 0 .429-.103.343-.328-.07-.18.044-.426.254-.548.209-.122.262-.225.118-.228s-.408.138-.585.316m-5.042.343q0 .445.444.445c.254 0 .444-.148.444-.347 0-.19-.1-.284-.222-.209-.122.076-.222.032-.222-.098 0-.129-.1-.235-.222-.235s-.222.2-.222.444m-45.556.223c0 .122.2.222.444.222.245 0 .445-.1.445-.222 0-.123-.2-.223-.445-.223-.244 0-.444.1-.444.223"}),a.createElement("path",{fill:"#7c7c7c",d:"M244.444 17.556c0 .122-.216.222-.481.222s-.42.062-.344.138c.2.2 1.27-.107 1.27-.365a.22.22 0 0 0-.222-.218c-.123 0-.223.1-.223.223m3.058 22.888c.039 15.438-.017 23.112-.167 23.112-.123 0-.224.1-.224.224 0 .132.182.11.446-.054.505-.316.614-46.15.11-46.319-.148-.049-.203 7.703-.165 23.037M241.556 18c-.261.168-.204.216.264.219.329.002.66-.097.736-.219.175-.284-.561-.284-1 0m-3 .444c-.176.284.56.284 1 0 .26-.168.203-.216-.265-.218-.329-.002-.66.096-.735.218m-2.112.206c0 .114-.175.252-.388.308-.303.079-.312.107-.043.127.191.015.541-.121.778-.3.39-.295.394-.327.042-.333-.214-.004-.389.085-.389.198m-2.888.461c-.261.169-.204.216.264.219.329.002.66-.097.736-.219.175-.284-.561-.284-1 0m-2.667.333c-.508.291-.516.319-.098.326.251.004.651-.139.889-.318.581-.44-.024-.446-.791-.008m-5.222.778c-.407.175-.398.192.111.203.305.007.705-.084.889-.203.437-.282-.343-.282-1 0m-2.556.222c0 .123-.275.231-.611.24-.336.01-.481.07-.321.134.413.166 1.821-.131 1.821-.384 0-.116-.2-.212-.444-.212-.245 0-.445.1-.445.222m-2.555.445c-.076.122.068.222.32.222.251 0 .457-.1.457-.222s-.144-.222-.32-.222-.382.1-.457.222m-2.889.444c-.407.175-.398.192.111.204.305.006.705-.085.889-.204.437-.282-.343-.282-1 0m-2.454.238c-.081.13-.312.174-.513.098q-.364-.137-.144.079c.257.252 1.444.073 1.444-.218 0-.277-.61-.245-.787.041m-2.546.429c-.27.174-.238.216.166.219.275.002.5-.097.5-.219 0-.278-.235-.278-.666 0m-2.334.222c-.075.122-.348.222-.605.222-.258 0-.407.062-.331.138.218.218 1.741-.136 1.596-.371-.17-.275-.486-.269-.66.011m-3 .445c0 .122.2.222.445.222.244 0 .444-.1.444-.222 0-.123-.2-.223-.444-.223-.245 0-.445.1-.445.223m-2.666.444c-.271.175-.243.216.153.219.268.002.549-.097.624-.219.175-.283-.34-.283-.777 0m-2.223.222c-.183.119-.583.225-.888.237s-.426.073-.266.137c.413.165 1.821-.131 1.821-.384 0-.269-.24-.265-.667.01m-3.111.445c-.26.168-.203.216.265.219.329.001.66-.097.735-.219.176-.284-.561-.284-1 0m-2.222.333c-.382.219-.443.32-.194.326.199.004.486-.143.639-.326.338-.408.268-.408-.445 0m-2.389.444c-.217.247-.278 4.522-.278 19.769 0 15.415.058 19.454.278 19.454s.266-3.985.219-19.341c-.041-13.209.015-19.48.174-19.778.27-.503.017-.57-.393-.104m-5.5.556c-.075.122-.356.23-.624.24s-.358.069-.2.133c.396.158 1.38-.11 1.38-.377 0-.284-.379-.281-.556.004m1.184 19.167c-.04 10.725-.008 19.5.07 19.5s.205-.162.281-.361c.211-.548.12-37.686-.093-38.195-.102-.245-.218 8.313-.258 19.056M183.556 26c-.261.168-.204.216.264.219.329.002.66-.097.736-.219.175-.284-.561-.284-1 0m-2.438.384c-.291.328-.283.351.074.214.22-.085.492-.154.604-.154s.204-.1.204-.222c0-.342-.518-.247-.882.162m-2.34.283c-.076.122.068.222.32.222s.458-.1.458-.222c0-.123-.145-.223-.321-.223s-.382.1-.457.223m-2.889.361-.667.326.87-.114c.478-.062.973-.216 1.1-.343.344-.345-.503-.259-1.303.131m-2.667.453c-.39.313-.395.339-.037.216.224-.078.549-.141.722-.141s.315-.1.315-.223c0-.33-.495-.256-1 .148m-2.222.297c-.076.122.013.222.196.222s.395-.1.471-.222-.013-.222-.196-.222c-.184 0-.395.1-.471.222m-3 .347-.778.294.68.013c.374.007.874-.134 1.111-.314.547-.413.09-.41-1.013.007m-4.889.764c-.271.175-.242.216.154.219.267.002.548-.097.624-.219.175-.283-.34-.283-.778 0m-2.567.205c-.116.113-.461.25-.766.306-.306.055-.11.062.435.015 1.013-.088 1.836-.526.987-.526-.244 0-.539.092-.656.205m-2.766.462c-.271.175-.243.216.153.218.268.002.549-.096.625-.218.174-.283-.34-.283-.778 0m-2.334.354c-.505.222-.559.294-.222.299.471.007 1.17-.344.994-.499-.058-.05-.405.04-.772.2m-3.222.452-.778.309 1-.136c.55-.075 1.095-.226 1.212-.336.311-.294-.522-.199-1.434.163m38.169 56.86c.055 17.805.034 19-.322 19-.284 0-.316.064-.128.253.189.188.341.163.602-.097.419-.42.432-37.942.013-38.082-.148-.049-.203 6.333-.165 18.926m4.053.296v19.296l.534.285c.294.157.669.236.833.176.189-.07.073-.201-.315-.356l-.614-.244.059-19.226c.047-15.265.002-19.227-.219-19.227-.22 0-.278 4.008-.278 19.296m53.057 3.605c-.053 21.357-.083 22.984-.429 22.927-.204-.034-.426.026-.492.133s.201.185.594.173l.715-.023.056-22.876c.038-15.032-.019-22.953-.165-23.099q-.222-.223-.279 22.765m-94.834 10.187c.183.101.683.246 1.111.321.767.135.77.132.222-.184-.306-.176-.806-.321-1.111-.321-.414-.001-.471.046-.222.184m3.111.468c0 .122.206.222.457.222.252 0 .396-.1.321-.222s-.282-.222-.458-.222-.32.1-.32.222m2.409.356c.28.196.574.29.654.21.179-.178-.385-.558-.835-.563-.211-.002-.146.123.181.353m2.48.31c.439.284 1.175.284 1 0-.076-.122-.407-.22-.736-.218-.467.002-.525.05-.264.218m3.111.445c0 .122.15.222.333.222s.333-.1.333-.222-.15-.222-.333-.222-.333.1-.333.222m2.311.339c.354.184.701.278.771.208.185-.184-.452-.54-.971-.542-.355-.002-.315.065.2.334m2.467.328c.075.122.387.222.692.222.314 0 .496-.097.419-.222-.076-.123-.388-.223-.693-.223-.314 0-.496.097-.418.223m1.944.153c.214.056.564.056.778 0s.039-.102-.389-.102-.603.046-.389.102m1.278.291c0 .122.15.222.333.222s.333-.1.333-.222-.15-.222-.333-.222-.333.1-.333.222m2.111.222c.612.263.829.263.667 0-.076-.122-.357-.215-.625-.206-.469.015-.471.022-.042.206m2.667.445c.075.122.337.222.581.222.245 0 .383-.1.307-.222-.075-.123-.337-.223-.581-.223-.245 0-.383.1-.307.223m2.11.164c.427.052.904.2 1.061.33s.353.166.439.081c.277-.277-.478-.569-1.388-.536l-.889.032zm3.223.502c.075.123.287.223.471.223.183 0 .271-.1.196-.223-.076-.122-.288-.222-.471-.222s-.272.1-.196.222m2.192.313c.724.403 1.252.458 1.252.132 0-.122-.175-.224-.389-.225a5.4 5.4 0 0 1-.944-.132c-.521-.121-.516-.107.081.225m3.222.474c.954.414 1.379.406.821-.016-.237-.179-.687-.322-1-.318-.532.009-.521.03.179.334m10.475 1.436c0 .122.15.222.333.222s.333-.1.333-.222c0-.123-.15-.223-.333-.223s-.333.1-.333.223m2.222.32c.823.304 1.21.241.66-.107-.18-.114-.577-.201-.882-.193-.488.012-.461.048.222.3m2.778.346c.658.283 1.437.283 1 0-.184-.118-.584-.21-.889-.203-.509.011-.518.028-.111.203m2.41.278c-.082.133-.041.171.096.086.132-.082.304-.047.38.077.172.278.558.298.558.03 0-.3-.868-.462-1.034-.193m2.812.5c1.029.396 1.321.394.791-.007-.237-.18-.687-.319-1-.309-.517.015-.498.044.209.316m2.667.333c.434.281.889.281.889 0 0-.122-.275-.22-.612-.218-.476.002-.537.05-.277.218m2.772.36c.198.198.427.293.51.21.082-.082.002-.242-.178-.356-.525-.332-.723-.245-.332.146m2.117.307c.439.284 1.175.284 1 0-.076-.122-.407-.221-.736-.219-.468.003-.525.051-.264.219m3.111.444c.437.283.952.283.777 0-.075-.122-.356-.22-.624-.218-.396.002-.424.043-.153.218m2.222.162c.183.07.403.234.488.365.2.308.492.024.299-.29-.081-.13-.366-.229-.634-.219q-.495.017-.153.144m2.667.505c.437.283.952.283.777 0-.075-.122-.356-.221-.624-.219-.396.003-.424.044-.153.219m2.111.159c.244.058.539.197.655.307.271.257 1.011.262 1.011.006 0-.107-.312-.257-.694-.333-.821-.164-1.665-.147-.972.02m-161 .374c0 .17-.364.629-.809 1.02-.8.702-1.147.755-2.166.329-.303-.126-.392-.092-.32.122.214.644.791.763 2.375.492 2.503-.429 3.212-.923 2.64-1.838-.305-.489-.958-.581-1.129-.158-.089.222-.115.222-.129 0-.025-.383-.462-.352-.462.033m5.259.006c-.292.761.39.845 6.876.845 5.13 0 6.4-.059 6.555-.303.295-.467.234-.859-.135-.859-.183 0-.333.14-.333.31 0 .614-3.08.561-3.286-.056-.114-.342-.871-.323-1.011.024-.09.222-.116.222-.13 0-.013-.199-.549-.278-1.888-.278-1.288 0-1.905.087-1.982.278-.086.212-.117.208-.13-.016-.013-.222-.102-.209-.367.056-.204.204-.733.35-1.278.352-.51.002-1.159.065-1.441.14-.4.108-.541.033-.637-.336-.141-.538-.631-.632-.813-.157m17.185-.108c0 .115.096.269.213.341s.169.253.117.402c-.14.397.913 1.078 1.863 1.206.911.122 1.65-.403 1.201-.853-.162-.162-.278-.159-.382.009-.224.363-1.012.291-1.012-.091 0-.718-1.18-1.51-1.408-.945-.09.222-.116.222-.13 0-.02-.319-.462-.385-.462-.069m141.667.236c.617.265 1.053.265.889 0-.076-.122-.407-.215-.736-.207-.534.014-.55.036-.153.207m2.666.444c.076.122.282.222.458.222s.32-.1.32-.222-.206-.222-.457-.222c-.252 0-.396.1-.321.222m1.889.133c.306.06.781.221 1.056.358.274.138.566.184.648.102.266-.266-.107-.421-1.193-.495-.586-.04-.816-.024-.511.035m-174.277.687a.56.56 0 0 0-.389.522c0 .541-.837 1.022-1.18.679-.348-.349-.82-.299-.82.086 0 .413.916.656 1.722.458 1.008-.248 1.611-.752 1.611-1.348 0-.539-.153-.604-.944-.397m34.277.413c0 1.056 2.65 1.864 3.459 1.055.457-.457.099-.646-.557-.294-.477.255-1.346-.023-1.346-.43 0-.352-.686-.897-1.127-.897-.311 0-.429.155-.429.566m145.202-.31c-.097.156-.062.197.088.104.136-.084.447-.028.691.124.372.232.954.128.667-.12-.297-.256-1.308-.332-1.446-.108m3.354.528c1.13.407 1.451.402.902-.013-.237-.18-.737-.322-1.111-.317-.667.01-.663.016.209.33m2.574.168c.051.034.268.196.481.36.333.255.389.246.389-.063 0-.221-.185-.36-.481-.36-.265 0-.44.028-.389.063m-190.266.596a5 5 0 0 0-.056.448c-.052.577-1.188.973-1.919.67-.792-.327-1.555-.105-1.555.454 0 .465-1.02 1.094-1.556.96-1.515-.377-1.74-.355-1.815.175-.062.44-.214.53-.963.566-1.382.068-1.783.2-1.718.568.033.186-.092.396-.278.468-.185.071-.337.038-.337-.074s-.506.007-1.124.264c-.776.323-1.033.524-.833.651.16.101.19.201.068.221-.278.047-.495.094-1.347.294-.483.113-.756.357-.937.836-.222.588-.337.66-.885.55-.781-.156-1.056.014-1.24.768-.136.555-1.002 1.097-1.924 1.204-.88.102-1.778.608-1.778 1.003 0 .487-1.244 1.323-2.556 1.718-1.049.316-2.333 1.418-2.333 2.003 0 .252-.848 1.116-2.167 2.209-2.829 2.346-6.624 6.234-7.726 7.915-.186.285-.726.692-1.2.906-.645.291-.955.619-1.238 1.309-.835 2.039-1.37 2.872-2.213 3.441-.606.41-.887.767-.908 1.155-.033.62-.564 1.565-1.388 2.471-.295.325-.527.65-.515.723.089.541-.065.872-.645 1.389-.367.326-.667.721-.667.877a.59.59 0 0 1-.256.442q-.258.161-.076-.153c.108-.185.099-.237-.021-.127-.111.102-.204.252-.206.333-.008.301-1.084 2.376-1.314 2.534-.145.099-.151.167-.015.173.122.006.072.133-.112.282-.183.149-.346.52-.362.826s-.041.723-.056.927-.263.655-.554 1c-.29.346-.579 1.028-.643 1.517-.159 1.222-.941 3.346-1.488 4.041-.297.378-.452.906-.452 1.54 0 1.331-.593 2.753-1.148 2.753-.239 0-.377.091-.308.203s.01.241-.13.288c-.192.064-.192.203-.002.56.764 1.428-.449 5.171-1.676 5.171-.16 0-.292.1-.292.222s.15.222.334.222.333.198.333.445c0 .244.113.444.251.444.176 0 .204.413.094 1.389-.239 2.115-.373 2.611-.706 2.611-.246 0-.306.653-.306 3.334 0 2.637.062 3.333.298 3.333.309 0 .812-3.183.815-5.154.001-1.12.529-4.778.987-6.846 1.272-5.742 2.117-8.879 3.023-11.222.378-.978.786-2.128.905-2.556.12-.428.504-1.378.853-2.111 2.442-5.127 3.154-6.53 3.427-6.757.171-.142.443-.579.603-.973.161-.393.722-1.358 1.246-2.145.525-.786.954-1.564.954-1.728s.302-.62.671-1.014c.833-.889 2.848-3.693 3.001-4.176.063-.197.338-.478.612-.625.273-.146.743-.625 1.043-1.063.751-1.095 6.461-6.854 8.229-8.298.794-.649 1.618-1.465 1.83-1.812s.547-.631.744-.631c.378 0 3.599-2.183 4.085-2.769.156-.188.4-.342.542-.342.251 0 2.118-1.114 3.239-1.931.304-.222.85-.532 1.215-.69.364-.158.845-.483 1.068-.722s.652-.435.952-.435c.537 0 1.436-.687 1.436-1.097 0-.114.255-.161.567-.104.339.061.987-.114 1.611-.435 1.668-.858 2.949-1.386 4.353-1.793.72-.209 1.539-.53 1.82-.714s1.135-.48 1.899-.658c1.62-.378 1.972-.617 1.972-1.335 0-.474-1.039-.763-1.136-.316m43.723.119c-.244.635.134 1.003 1.382 1.342.689.188 1.764.588 2.387.888 1.5.724 2.755.661 2.755-.138 0-.267-.842-.383-1.077-.148-.329.329-.923.028-.923-.467 0-.455-1.034-.819-1.169-.412-.154.46-1.688-.064-2.17-.74-.511-.718-.985-.848-1.185-.325m6.814 2.5c-.013.761 3.375 2.722 4.703 2.722.267 0 .712.241.99.537.277.295.77.603 1.094.684.325.08.74.272.923.426.799.668 2.982 1.714 3.367 1.613.3-.078.517.077.757.542.358.691 2.174 1.964 2.813 1.971.21.003.482.193.606.424.623 1.164 5.816 4.641 6.215 4.161.346-.417-2.606-3.105-3.182-2.896-.416.151-1.995-.886-2.121-1.393-.127-.507-2.232-2.259-2.232-1.857 0 .793-1.331-.03-1.393-.861-.02-.266-.19-.462-.4-.462-.201 0-.634-.25-.964-.556-.621-.575-.818-.674-.773-.389.066.415-.072.461-.713.237-.379-.131-.879-.551-1.111-.932-.353-.578-.563-.694-1.257-.694-.732 0-.842-.07-.901-.577-.065-.561-1.599-1.373-1.599-.846 0 .11-.2.201-.445.201-.419 0-.479-.098-.535-.87-.024-.342-.993-.513-1.354-.239-.381.29-1.202-.178-1.351-.77-.169-.674-1.126-.822-1.137-.176m22.731 14.364c.03.258.062.572.072.698.028.349 4.475 4.734 5.296 5.223.398.237.723.577.723.756 0 .351 2.81 4.333 3.619 5.129.271.266.792 1.008 1.158 1.65.367.642.895 1.451 1.175 1.798.279.347.841 1.262 1.249 2.034 2.584 4.891 3.379 6.463 3.966 7.848 1.619 3.815 2.197 5.324 2.436 6.357.14.609.479 1.331.753 1.605.398.398.495.741.486 1.723-.007.724.139 1.515.356 1.934.201.391.568 2.027.815 3.636s.501 3.012.566 3.116c1.055 1.707 1.041 19.335-.02 24.073a29 29 0 0 0-.441 2.667c-.197 1.84-.559 3.39-1.038 4.443-.222.489-.406 1.293-.409 1.785s-.162 1.119-.353 1.392c-.192.274-.536 1.121-.766 1.883-.722 2.398-1.427 4.283-1.83 4.893-.214.323-.389.715-.389.87 0 .154-.8 1.853-1.778 3.774s-1.778 3.617-1.778 3.77c0 .152-.241.532-.537.844-.603.639-1.685 2.589-1.685 3.04 0 .163-.254.462-.564.665-.311.204-.916.899-1.345 1.546-1.268 1.91-6.332 7.851-8.226 9.65-2.072 1.969-5.185 4.686-5.728 5-.49.284-.904 1.914-.441 1.736.169-.065.369-.361.443-.657s.414-.683.755-.859.771-.472.957-.658c.185-.185.53-.367.767-.403.236-.036.768-.341 1.183-.678.842-.683 6.102-5.807 5.719-5.57-.137.085-.205.032-.154-.119.049-.148.181-.255.293-.236.112.018.359-.355.55-.83.191-.474.474-1.006.63-1.183.156-.176.844-1.071 1.529-1.987s1.52-1.967 1.856-2.334c.336-.366.727-.891.868-1.166s.367-.5.502-.5c.531 0 1.46-1.332 1.647-2.362.137-.754.377-1.152.846-1.403.376-.201.685-.768 1.091-2.002.312-.947.825-2.101 1.139-2.564s.572-.963.572-1.11c0-.375.817-1.075 1.071-.918.118.074.25-.431.303-1.165.065-.892.246-1.488.582-1.915.269-.342.488-.921.488-1.287s.188-.978.418-1.359.54-1.22.69-1.864c.228-.981 1.105-2.116 1.118-1.448.002.096.1.025.219-.159.288-.445.279-1.47-.017-1.947-.338-.545.087-1.549.79-1.869.619-.282.682-.561.311-1.376-.466-1.024.64-4.788 1.233-4.195.09.091.144.065.12-.057-.1-.494.025-.778.341-.778.183 0 .333-.111.333-.246s-.15-.188-.333-.118-.334.031-.334-.087c0-.119.15-.216.334-.216.234 0 .333-.237.333-.801 0-.609-.078-.772-.322-.678-.696.267-.689-3.7.008-4.397.466-.466.468-13.342.002-13.163-.243.094-.345-.261-.466-1.628-.161-1.822-.079-2.222.458-2.222.437 0 .421-1.263-.021-1.706-.187-.187-.29-.505-.227-.706a.96.96 0 0 0-.1-.699c-.118-.183-.216-.236-.217-.117-.009.531-.696-.848-.995-1.997-.227-.87-.263-1.397-.114-1.674.432-.808.262-1.897-.339-2.171-.542-.247-.749-1.419-.568-3.207.023-.222-.11-.389-.307-.389-.643 0-1.185-.815-1.352-2.032-.089-.655-.35-1.429-.579-1.72-.229-.292-.417-.653-.417-.803 0-.149-.286-.861-.635-1.581-.715-1.472-1.575-3.562-1.697-4.128-.119-.548-.485-1.178-.872-1.499-.187-.155-.405-.63-.484-1.055-.08-.425-.287-.828-.46-.894-.42-.161-1.193-1.706-1.25-2.499-.025-.349-.121-.589-.213-.532-.091.056-.166-.056-.166-.249s-.26-.469-.577-.614c-.398-.181-.81-.767-1.327-1.886-.466-1.008-.942-1.711-1.256-1.856-.633-.292-1.679-1.732-1.778-2.448-.04-.296-.152-.663-.248-.815-.096-.153-.133-.278-.084-.278s-.291-.4-.756-.889-.939-.889-1.053-.889-.267-.156-.34-.347-.243-.28-.376-.198c-.374.231-4.69-4.233-4.729-4.89-.018-.298-.189-.583-.381-.633-.247-.065-.334.046-.297.377m-28.243 1.549c-9.472 3.16-10.105 15.931-.966 19.472 8.745 3.389 17.161-5.62 13.052-13.97-2.11-4.288-7.868-6.909-12.086-5.502m4.898.482c4.779 1.227 7.548 4.728 7.545 9.538l-.001 2.455-.972 1.841c-4.948 9.375-19.038 5.537-18.426-5.02.338-5.851 6.256-10.251 11.854-8.814M71.111 143.56c-3.278.464-7.158 1.365-8.555 1.988-.489.218-1.289.522-1.778.677-1.665.525-3.009 1.325-3.238 1.927-.248.651-.187.798 1.789 4.292 2.433 4.305 2.845 5.03 3.59 6.329 1.06 1.85 1.688 2.17 2.898 1.477 3.44-1.968 11.585-2.553 17.405-1.248 10.494 2.351 19.633 11.666 21.348 21.756.702 4.134.423 4 8.197 3.931 7.822-.069 7.523.092 7.028-3.782-.987-7.724-3.834-14.359-9.028-21.034-2.503-3.217-3.792-4.052-5.597-3.627-6.743 1.586-13.352-2.092-16.186-9.006-.297-.724-.714-1.513-.928-1.755-1.615-1.82-10.523-2.833-16.945-1.925m10.222.542c4.549.485 6.889 1.396 6.889 2.683 0 .155.458 1.196 1.018 2.314 2.895 5.782 9.122 8.923 15.492 7.814 2.058-.358 2.787-.024 4.695 2.152 5.67 6.465 9.906 16.625 9.906 23.755 0 1.356-.086 1.375-6.629 1.417-7.4.048-6.826.357-7.654-4.126-1.395-7.558-9.668-17.71-15.939-19.559-.305-.091-.955-.392-1.444-.671-4.469-2.549-14.082-2.903-20.276-.746-3.361 1.17-3.119 1.323-5.672-3.579a43 43 0 0 0-1.308-2.334c-2.623-4.199-2.782-4.968-1.189-5.759 5.95-2.957 14.174-4.207 22.111-3.361m-30.111 7.208c-5.913 3.724-13.107 13.183-15.662 20.594-1.258 3.646-1.23 3.973.543 6.318 4.362 5.773 4.307 12.118-.155 17.662-1.827 2.27-1.828 2.916-.004 7.449 1.989 4.948 4.967 9.601 8.685 13.574.982 1.049 2.517 2.495 3.411 3.215a81 81 0 0 1 2.566 2.148c1.555 1.392 2.183 1.168 3.56-1.27a232 232 0 0 1 4.571-7.628c1.137-1.791 1.166-2.536.133-3.436-9.709-8.456-13.288-20.202-9.722-31.911 1.647-5.41 4.183-9.109 9.587-13.987 1.091-.985 1.083-1.707-.039-3.467-.813-1.275-2.551-4.155-4.301-7.127-1.473-2.501-2.013-2.864-3.173-2.134m1.547.602c.196.196.565.771.82 1.278.254.507.756 1.321 1.115 1.81.358.489 1.29 2.015 2.071 3.391.78 1.376 1.625 2.765 1.877 3.086.753.957.582 1.26-2.389 4.231-5.09 5.089-6.957 8.573-8.48 15.827-2.071 9.868 2.19 21.872 9.984 28.123 1.849 1.483 1.998.916-2.015 7.641-.536.898-1.428 2.398-1.984 3.334-1.27 2.14-1.794 2.3-3.186.977-.503-.479-1.215-1.092-1.582-1.362-2.058-1.518-5.96-5.771-8.382-9.137-1.679-2.334-4.963-9.447-5.423-11.748-.21-1.047.034-1.641 1.443-3.518 4.373-5.821 4.406-11.54.104-17.668-1.788-2.545-1.788-2.55-.832-5.527 2.317-7.208 7.027-13.837 13.868-19.518 1.971-1.637 2.4-1.811 2.991-1.22m-30.107 25.246c-9.016 3.164-9.893 14.909-1.422 19.04 6.696 3.265 14.76-1.674 14.76-9.04 0-6.989-6.988-12.228-13.338-10m5.665.421c6.712 1.307 9.378 11.22 4.358 16.208-6.286 6.246-16.574 2.037-16.574-6.78 0-6.699 5.284-10.777 12.216-9.428m78.006 11.958c-.843.358-1.17 1.027-1.643 3.367-1.766 8.738-7.484 16.063-15.523 19.884-1.192.567-2.517 1.21-2.945 1.429-3.89 1.995-14.826 1.927-19.458-.121-2.472-1.094-2.686-.968-4.837 2.836-4.894 8.655-4.867 8.589-3.885 9.504.451.42 3.647 1.786 4.18 1.786.13 0 .825.248 1.545.551 4.388 1.847 14.45 2.455 20.647 1.247 3.22-.628 3.729-.951 4.488-2.85 2.914-7.293 8.432-10.584 15.818-9.433 2.517.392 3.209-.029 6.147-3.737 2.057-2.596 3.394-4.681 4.5-7.019.515-1.089 1.101-2.231 1.302-2.537 1.95-2.972 3.914-13.074 2.795-14.376l-.536-.624-6.075-.048c-3.341-.026-6.275.037-6.52.141m12.603.711c1.008.539-1.162 12.109-2.575 13.735-.167.193-.71 1.223-1.205 2.29-1.732 3.73-6.546 10.217-8.043 10.837-.541.225-1.014.231-2.221.032-7.138-1.179-12.575 1.748-15.916 8.566-1.692 3.452-1.4 3.235-5.215 3.888-8.139 1.393-15.586.498-24.316-2.922-1.527-.598-1.789-1.353-.922-2.662.287-.434 1.074-1.79 1.749-3.012a498 498 0 0 1 1.794-3.222c.312-.55.889-1.577 1.283-2.282.879-1.571 1.396-1.763 2.845-1.057 4.789 2.336 16.012 2.423 20.39.159.374-.193 1.203-.55 1.844-.794 7.775-2.954 15.103-11.941 16.783-20.582.484-2.492.708-2.966 1.494-3.17.893-.233 11.756-.059 12.231.196M1.333 193.556c0 2.54.058 3.111.316 3.111.311 0 .413.319.689 2.15.153 1.013-.155 1.85-.679 1.85-.179 0-.326.1-.326.222s.15.222.334.222c.183 0 .333.1.333.222 0 .123-.15.223-.333.223s-.334.1-.334.222.153.222.341.222c.187 0 .397.149.467.332s.219.275.331.206c.334-.206.92 1.478.994 2.851.037.703-.013 1.278-.112 1.278-.1 0-.133.25-.075.555s.242.556.408.556c.583 0 1.06 1.189 1.324 3.296.036.286.214.686.397.889.355.397 1.123 2.399 1.552 4.046.144.555.487 1.293.762 1.641s.5.873.5 1.167.198.805.441 1.136c.242.332.467.845.5 1.14.032.296.325.815.65 1.154s.658.924.741 1.303.381.838.661 1.022c.281.183.568.605.638.936s.393.903.718 1.27c1.129 1.272 1.703 2.372 2 3.838.069.337.944 1.098 1.47 1.277.433.148 1.88 2.244 1.993 2.889.135.766 2.233 2.996 2.82 2.996q.82-.001.981 1.21c.068.508.317.764 1.181 1.221q1.096.577 1.166 1.069c.038.27.313.682.611.916.297.234.54.539.54.678s.175.319.389.399.642.402.951.715c1.016 1.028 1.736 1.543 2.817 2.012 1.626.705 1.714.775 1.931 1.532.112.389.308.671.436.629.129-.043.444.166.701.465.28.326.818.6 1.344.685.684.11.891.25.947.638.043.304.274.548.594.628.289.072.696.321.905.553.234.258.562.378.85.311.623-.146 1.525.345 1.601.872.079.554.485.793 1.353.797.512.002.746.127.849.451.121.382 1.478 1.18 1.771 1.042.054-.025.237.145.407.377.353.484.821.308.821-.309 0-.604-.605-1.113-1.324-1.113-.413 0-.742-.18-.971-.529-.202-.308-.661-.587-1.101-.67-.415-.078-.989-.39-1.274-.694s-.626-.554-.758-.557c-.131-.003-.489-.2-.794-.439s-.833-.437-1.172-.44c-.432-.003-.688-.164-.859-.54-.31-.68-2.19-1.909-2.921-1.909-.407 0-.593-.148-.695-.556-.077-.305-.513-.796-.969-1.091s-1.729-1.292-2.829-2.217-2.173-1.684-2.384-1.687c-.219-.003-.571-.37-.817-.853-.51-.999-.954-1.403-1.874-1.707-.475-.157-.725-.419-.849-.889-.097-.367-.582-1.067-1.08-1.556-.497-.489-1.653-1.839-2.567-3s-2.01-2.464-2.435-2.896c-.424-.431-.771-.876-.771-.988 0-.199-.344-.751-2.009-3.227a34 34 0 0 1-1.351-2.191 661 661 0 0 0-1.911-3.476c-.639-1.146-2.75-5.663-3.063-6.555-.193-.55-.653-1.85-1.021-2.889-1.843-5.191-3.359-12.077-3.757-17.061-.295-3.686-.44-4.495-.806-4.495-.244 0-.305.623-.305 3.112m98.445 27.306c-2.655.588-5.662 3.043-7.03 5.738l-.859 1.692.005 2.799c.022 10.917 14.29 14.274 19.382 4.56 3.855-7.353-3.333-16.598-11.498-14.789m6.116 1.309c3.963 1.996 5.773 4.794 5.773 8.924 0 11.026-15.389 13.457-18.907 2.986-2.695-8.023 5.713-15.648 13.134-11.91M232 242.537a.53.53 0 0 1-.278.441c-.153.069-.079.101.164.071.454-.055.782-.827.353-.827-.132 0-.239.142-.239.315m1-.093c.076.123.331.223.569.223s.431-.1.431-.223c0-.122-.256-.222-.569-.222-.322 0-.509.096-.431.222m3.222.236c0 .251.1.396.222.32.123-.076.223-.281.223-.458 0-.176-.1-.32-.223-.32-.122 0-.222.206-.222.458m-5.538.359c-.009.144-.192.296-.406.339-.227.045-.292.138-.156.224.336.212.842-.164.7-.521-.073-.185-.127-.201-.138-.042m-1.48.595c-.077.2-.221.313-.32.252-.298-.184-1.366.317-1.211.569.097.157.258.139.492-.055.191-.159.533-.257.76-.219.402.068.816-.514.552-.778-.073-.073-.196.03-.273.231M236.53 246c0 1.528.036 2.153.079 1.389s.043-2.014 0-2.778-.079-.139-.079 1.389m-9.96-1.357c-.068.11.026.257.209.327.202.077.332-.001.332-.199 0-.36-.347-.441-.541-.128m-.866.562c-.074.193-.299.27-.579.196-.323-.084-.458-.014-.458.24 0 .211-.184.359-.445.359-.244 0-.444.108-.444.241 0 .132.075.207.167.166 1.579-.701 2.055-.986 2.055-1.228 0-.382-.144-.369-.296.026m-2.982 1.511c-.275.132-.5.331-.5.441s-.3.304-.666.432-.668.347-.668.488c-.001.141-.441.506-.979.812-1.139.646-3.465 2.806-3.855 3.579-.147.292-.715 1.132-1.261 1.865s-1.242 1.834-1.548 2.445c-.305.611-1.021 1.961-1.59 3s-1.006 1.889-.971 1.889-.056.475-.202 1.055c-.147.581-.365 1.056-.485 1.056a.22.22 0 0 0-.219.222c0 .657.613.077.848-.803 1.246-4.658 5.369-10.876 9.16-13.815a347 347 0 0 0 2.446-1.909 3.2 3.2 0 0 1 .722-.425c.209-.08.379-.248.379-.374 0-.267.033-.269-.611.042m-102.166.68c-1.58.942-2.719 1.741-3.054 2.141-.213.255-.563.464-.778.465-.215 0-1.124.5-2.019 1.111-.896.61-1.86 1.168-2.142 1.238-.283.071-.724.371-.982.667s-.712.538-1.015.538c-.508 0-1.455.746-1.455 1.147 0 .096-.295.116-.655.044-.448-.09-.886.01-1.389.317-.403.247-1.156.573-1.672.726-1.117.329-1.839.945-1.839 1.567 0 .651.974.487 1.069-.18.081-.569.686-.819 1.547-.638.701.147.989-.005 1.366-.72.191-.363.349-.45.536-.295.327.272 2.159-.172 2.121-.514-.074-.673.072-.788 1.005-.788.892 0 1-.06 1.216-.681.157-.448.374-.668.633-.642.835.086 1.416-.019 1.284-.232-.075-.123-.031-.223.098-.223.13 0 .236-.141.236-.315 0-.412 1.474-1.319 1.887-1.16.176.067.372.04.434-.061.063-.101.416-.244.785-.318.533-.107.671-.249.671-.693 0-.431.183-.634.805-.894.96-.401 1.045-.41.85-.094-.083.133.266-.033.774-.369 1.268-.84.971-1.912-.317-1.144m115.548 2.771a13 13 0 0 1-.343 1.477c-.306.96-.277 1.352.072.983.153-.162.297-.683.32-1.158s.148-.97.278-1.1c.293-.293.31-1.036.024-1.036-.117 0-.275.375-.351.834m-1.418 5.065c-.873 2.673-2.674 6.363-3.931 8.056-2.386 3.212-4.635 5.711-6.366 7.071-.703.552-1.27 1.122-1.26 1.267.012.187.05.183.129-.015.062-.153.268-.278.459-.278.469 0 4.645-4.136 5.161-5.111.227-.428.672-1.02.989-1.316.318-.297.577-.666.577-.821s.2-.422.444-.593.554-.626.689-1.012.334-.702.445-.702.2-.138.2-.306c0-.169.144-.426.319-.571.176-.146.382-.55.458-.898s.283-.688.459-.755.32-.307.32-.533c0-.225.2-.823.444-1.329.245-.506.445-1.063.445-1.237s.157-.447.348-.606c.192-.159.301-.473.242-.698s.035-.549.207-.722c.349-.349.424-1.012.114-1.012-.109 0-.511.955-.892 2.121m-189.951.022c-.17.442.596 1.11.832.727.086-.139.205-.026.282.268.073.28.195.448.27.373s.424-.055.774.046c.418.12.666.099.719-.06.132-.397.822.002 1.053.609.264.695 1.113.784 1.113.116 0-.654-.747-1.288-1.71-1.452-.465-.08-1.117-.335-1.448-.568-.743-.523-1.696-.552-1.885-.059m6.038 2.166c-.547.401-.069 1.15.522.819.259-.145.491-.056.841.323.438.472.561.498 1.29.274.997-.305 2.414.24 2.306.887-.058.344.161.39 1.935.406 2.653.025 2.484-.033 2.969 1.024.339.74.449.842.536.5.093-.364.114-.371.136-.042.014.214.175.389.359.389.183 0 .34-.175.349-.389.013-.335.044-.327.221.056.152.326.17.237.07-.334-.196-1.121-.377-1.259-2.203-1.69-1.278-.301-1.767-.332-2.191-.139-.469.214-.59.18-.865-.239-.223-.339-.818-.614-1.962-.905-.903-.229-2.013-.604-2.466-.833-.986-.497-1.289-.515-1.847-.107m50.036.053c-.35.19-1.426.574-2.392.855-1.971.573-2.543.92-2.199 1.333.122.148.171.32.108.383-.063.064.213.1.613.081.545-.025.712-.127.665-.403-.119-.695 2.337-1.467 2.716-.854.186.3 1 .022.877-.299-.174-.452.517-.898.9-.581.247.205.432.205.818-.002.481-.257.484-.278.083-.571-.541-.395-1.394-.373-2.189.058m-7.543 2.174c-1.551.333-2.175.876-2.002 1.742.133.67.727.845.752.222.013-.332.043-.324.206.056.164.38.193.388.207.055.008-.214.115-.389.238-.389s.222-.147.222-.328c0-.629.997-1.049 2.096-.884.821.123 1.015.088 1.015-.181 0-.612-.831-.701-2.734-.293M65.5 260.901c-.475.284-.516 1.099-.056 1.099.184 0 .334-.15.334-.333 0-.186.197-.334.444-.334s.445.148.445.334c0 .259.296.333 1.333.333 1.021 0 1.333-.076 1.333-.325 0-.542-3.154-1.179-3.833-.774m20.833-.081c-2.614.602-2.995 1.18-.777 1.18 1.037 0 1.333-.074 1.333-.333 0-.184.1-.334.222-.334s.222.15.222.334.198.333.445.333c.584 0 .595-.793.014-1.103-.444-.238-.699-.251-1.459-.077m123.385 4.221c-.057.1-.176.581-.264 1.07s-.27 1.021-.403 1.183c-.134.162-.22.745-.192 1.297.029.554-.072 1.153-.226 1.339-.419.504-.462 1.181-.076 1.181.183 0 .337-.125.343-.278.041-.994.437-3.369.745-4.476.325-1.165.362-1.819.073-1.316m11.555 7.626c-.311.244-.675.444-.808.444-.134 0-.241.175-.239.389.002.22.074.292.166.167.09-.123.314-.256.497-.296a.9.9 0 0 0 .511-.389c.098-.173.317-.315.487-.315s.371-.1.446-.223c.241-.388-.474-.239-1.06.223m12.685.904c-.044.13-.547.255-1.119.277s-.965.115-.873.207c.228.228 3.364-.185 3.661-.482.171-.171-.021-.24-.675-.24-.503 0-.951.107-.994.238m5.598-.031c0 .238 2.269.565 2.706.39.162-.064.069-.125-.206-.135-.275-.009-.5-.117-.5-.239 0-.123-.45-.223-1-.223s-1 .093-1 .207m-58 .583c-.428.161-.978.237-1.223.168-.244-.068-.377-.053-.295.034.2.213 7.503.276 7.372.064-.057-.092-.341-.167-.632-.167s-.591-.1-.667-.222c-.196-.318-3.63-.225-4.555.123m37.663-.117a.45.45 0 0 1-.402.196c-.581-.072-.817.038-.817.381 0 .257.08.297.278.142.153-.121.553-.285.889-.365s.611-.244.611-.364c0-.287-.38-.28-.559.01m11.343.118c-.241.181-.591.272-.778.201q-.338-.129-.117.091c.265.264 1.686.012 1.694-.299.009-.351-.329-.348-.799.007m13.492-.068c.05.152.384.295.741.317s.474-.01.261-.072c-.214-.061-.389-.204-.389-.317s-.159-.206-.352-.206c-.194 0-.311.125-.261.278m-65.618.51c-.157.189-.444.283-.638.209-.256-.097-.287-.067-.112.109.282.285 1.425-.064 1.425-.434 0-.337-.349-.277-.675.116m10.949-.078c.123.37 1.243.643 1.426.347.087-.14.041-.172-.112-.077-.144.089-.316.006-.391-.188-.154-.402-1.056-.482-.923-.082m39.282.061c0 .214-.133.279-.389.189-.29-.102-.328-.07-.148.125.296.323.981.092.981-.331 0-.17-.1-.31-.222-.31s-.222.147-.222.327m17.333.014c0 .179.15.326.333.326s.334-.089.334-.199c0-.109-.15-.256-.334-.326-.203-.078-.333 0-.333.199m-37.744.55c-.026.591.087.854.466 1.087.48.295.485.291.13-.113-.204-.231-.414-.72-.467-1.087-.093-.643-.097-.638-.129.113m-31.939-.118c-.235.178-.753.327-1.15.331-.398.004-.723.107-.723.23 0 .122-.25.222-.555.222s-.556.092-.556.206-.175.251-.389.307c-.292.077-.265.108.112.128.275.014.5-.075.5-.197s.244-.222.542-.222.604-.1.68-.222c.075-.122.412-.222.748-.222.629 0 1.573-.531 1.346-.758-.07-.07-.319.019-.555.197m15.905-.139c0 .391.8.702 1.708.664l.848-.036-.756-.092c-.415-.05-.99-.246-1.277-.434-.311-.204-.523-.245-.523-.102m24.445.163c0 .392.478.324.615-.088.049-.146-.07-.264-.263-.264a.353.353 0 0 0-.352.352m10.098-.026c-.238.179-.757.329-1.154.333s-.722.107-.722.23c0 .122-.35.222-.778.222-.543 0-.778.1-.778.333 0 .183.1.333.223.333.122 0 .222-.1.222-.222s.294-.222.653-.222.716-.1.791-.222.475-.222.886-.222.906-.158 1.098-.35c.614-.614.293-.769-.441-.213m20.791-.051c0 .366.465.625 1.073.596.304-.014.311-.04.038-.14-.184-.068-.509-.275-.723-.461-.348-.304-.388-.304-.388.005m-32.741.317c-.227.227-.176.519.09.519.131 0 .388-.15.571-.334.296-.296.286-.333-.09-.333-.233 0-.49.067-.571.148m-19.872.352c.05.153.434.295.852.317.418.021.561-.013.316-.077-.244-.064-.539-.207-.655-.317-.308-.292-.619-.245-.513.077m54.168-.063c0 .133.257.338.57.458.739.28.986.273.986-.03 0-.135-.139-.193-.308-.128s-.519-.03-.778-.211c-.282-.197-.47-.233-.47-.089m-37.389.161c-.214.056-.389.194-.389.307 0 .312.76.247 1.475-.126l.636-.332-.666.025c-.367.013-.842.07-1.056.126m-14.795.291c.136.411.851.581.851.201 0-.151-.066-.209-.146-.129-.081.081-.297.022-.481-.129-.274-.226-.314-.216-.224.057m-24.854.573c-.082.216-.299.309-.562.24-.249-.065-.478.02-.548.204-.067.174-.311.316-.542.316s-.604.175-.828.389-.524.414-.667.445c-.143.03-.459.255-.704.5-.244.244-.644.444-.889.444-.244 0-.444.142-.444.316 0 .173-.563.659-1.251 1.08s-1.145.83-1.015.91c.129.08.817-.332 1.528-.914s1.568-1.202 1.905-1.375.611-.397.611-.499.153-.185.34-.185.398-.15.468-.333.24-.333.378-.333c.558 0 2.591-.991 2.591-1.263 0-.401-.207-.368-.371.058m26.422-.087a.63.63 0 0 0 .352.352c.163.054.212-.047.129-.264-.155-.404-.614-.488-.481-.088m23.531.038c-.142.172-.49.257-.802.197-.376-.072-.596.011-.692.26q-.14.365-.574.228c-.246-.078-.596.002-.807.186-.205.179-.523.38-.707.447-.216.08-.155.129.174.14.279.01.567-.138.64-.328s.273-.293.444-.227c.463.178 2.742-.585 2.742-.917 0-.367-.105-.363-.418.014m29.314-.068c-.006.335 1.938 1.451 2.154 1.236.168-.169-.171-.601-.373-.476-.1.062-.309-.041-.465-.229-.155-.187-.414-.29-.575-.229-.16.062-.391-.058-.513-.267-.185-.319-.222-.324-.228-.035m-50.896.486c0 .348.441.614 1.019.614.173 0 .315-.106.315-.236 0-.129-.107-.169-.236-.089-.13.08-.43-.029-.667-.244-.369-.334-.431-.34-.431-.045m1.754.558c.144.275.425.5.625.5.199 0 .321-.026.27-.058a14 14 0 0 1-.625-.5l-.533-.442zm1.58.476c0 .208.528.468.949.468.136 0 .053-.146-.185-.326-.497-.376-.764-.426-.764-.142m13.457.153c-.361.264-.372.315-.068.315.199 0 .428-.106.509-.237.235-.381.024-.418-.441-.078m36.765-.161c0 .269 2.275 1.832 2.429 1.669.07-.073-.062-.247-.292-.385-.23-.139-.727-.527-1.105-.863-.702-.625-1.032-.759-1.032-.421m-48.752.435c-.062.1.387.283.996.408.73.149 1.155.152 1.244.007.075-.121.036-.158-.088-.082-.123.076-.413-.005-.645-.18-.463-.351-1.331-.438-1.507-.153m9.892.18c-.265.3-.239.334.205.269.28-.041.55-.199.601-.352.128-.39-.439-.331-.806.083m-6.64.361c.051.153.281.315.511.359.363.071.379.033.121-.277-.352-.425-.764-.478-.632-.082m4.306.063c-.098.254-.029.338.235.287.394-.076.47-.457.114-.576-.116-.038-.273.091-.349.289m44.083.958c0 .16 1.083 1.127 2.5 2.231.6.468.461.124-.301-.744-.379-.432-.829-.785-1-.785s-.51-.2-.755-.445c-.244-.244-.444-.36-.444-.257m-92.871 1.788c-.01.17-.193.442-.407.604-.214.163-.276.299-.138.303.366.01.81-.599.677-.93-.088-.218-.119-.212-.132.023m-1.34 1.448c-.17.317-.367.577-.438.577-.297.001-1.296 1.062-1.772 1.883-.282.486-.702 1.017-.934 1.179s-.423.437-.423.608c0 .172-.213.511-.473.754-.567.528-.504.416-2.807 4.956-1.01 1.991-1.835 3.786-1.833 3.99.001.204-.106.406-.238.45s-.378.677-.548 1.405c-.169.729-.411 1.36-.538 1.402-.126.042-.23.226-.23.41s.122.293.27.243c.293-.097 1.087-2.516.891-2.712-.066-.067.029-.297.213-.511.183-.215.57-.991.86-1.724.55-1.39 2.023-4.326 2.843-5.667.261-.427.601-1.026.755-1.33s.43-.714.613-.912c.183-.197.783-.946 1.333-1.664a42 42 0 0 1 1.966-2.357c.532-.578.929-1.165.882-1.303-.046-.139-.223.007-.392.323m97.544-.18c0 .195.182.401.404.46s.986.848 1.697 1.757 1.396 1.651 1.52 1.651.06-.183-.142-.406-.369-.499-.37-.612c-.001-.183-1.247-1.493-2.609-2.745-.413-.38-.5-.398-.5-.105m3.167 5.306c-.397.397-.722.839-.722.983 0 .143.31-.092.689-.524.38-.433.83-.786 1-.786s.311-.1.311-.222c0-.413-.552-.176-1.278.549m-4.122 3.974c-1.544 1.569-3.162 3.368-3.595 3.998s-1.139 1.645-1.569 2.257c-.993 1.413-2.992 5.444-2.992 6.033 0 .247-.068.517-.152.6-.165.165-.728 1.695-.733 1.994-.002.1.146.032.33-.151.183-.184.333-.542.333-.797s.09-.637.2-.849.332-.836.491-1.386c.474-1.631 2.857-5.882 3.597-6.417.233-.169.539-.576.679-.905.26-.611 1.352-2.011 1.568-2.011.293 0 4.812-4.736 4.736-4.964-.047-.14-1.348 1.029-2.893 2.598m-106.805 9.545c-.01.222-.118.341-.24.265-.122-.075-.222.019-.222.209 0 .191.103.347.229.347.293 0 .514-.567.365-.937-.07-.175-.121-.129-.132.116m-.429 1.543c-.018.336-.133.611-.255.611s-.222.542-.222 1.204-.087 1.237-.193 1.277c-.37.143-.529 1.075-.184 1.075.334 0 .599-.903.599-2.043 0-.359.106-.852.236-1.094.129-.243.194-.711.144-1.041l-.091-.6zm97.746 5.674c-.185 1.009-.219 1.697-.089 1.827s.209-.128.209-.685c0-.526.128-.973.31-1.086.242-.149.262-.357.089-.933-.216-.724-.228-.703-.519.877m-98.718-.119c.058.507-.055.869-.378 1.213-.254.27-.461.595-.461.723 0 .279.592.31.759.039.237-.382.412-2.697.205-2.697-.114 0-.171.325-.125.722m98.414 2.544c-.078.078-.126.75-.106 1.493.02.774.074 1.043.125.63.049-.397.162-.722.251-.722.234 0 .294-1.283.066-1.424-.106-.066-.257-.056-.336.023m-99.118 3.086c-.23.6-.153 6.722.087 6.87.145.09.223-1.145.223-3.542 0-3.613-.039-4.033-.31-3.328m98.877.846c.054.598.099 1.612.099 2.254 0 .841.095 1.204.339 1.297.277.107.321-.023.238-.698-.055-.456-.12-.829-.143-.829s-.175-.7-.338-1.555c-.218-1.152-.269-1.273-.195-.469m.418 4.159c-.083.135-.024.991.132 1.903.18 1.053.351 1.551.469 1.365.27-.427.232-1.241-.064-1.34-.14-.046-.265-.555-.278-1.129-.024-1.134-.034-1.164-.259-.799m-98.968 3.236c-.009.265-.142.532-.295.593-.218.088-.216.116.007.13.337.021.582-.516.42-.92-.063-.156-.122-.068-.132.197m99.538.839c0 .194.09.526.201.738.11.212.326.836.48 1.386.37 1.319 2.548 5.92 3.228 6.818.295.389.536.763.536.832 0 .137 1.148 1.667 2.372 3.161.436.532.895.967 1.02.967.126 0-.026-.236-.337-.524s-.812-.913-1.115-1.389-.762-1.056-1.023-1.289-.473-.56-.473-.728-.382-.789-.85-1.381c-.84-1.063-1.222-1.828-1.457-2.916-.066-.308-.307-.761-.536-1.007-.471-.505-1.379-3.024-1.379-3.825 0-.291-.15-.679-.333-.862-.297-.296-.334-.294-.334.019m-100 1.568c0 .184.21.543.466.8.301.301.431.653.366.993-.056.29-.015.474.089.41.442-.273-.092-2.536-.598-2.536a.33.33 0 0 0-.323.333m.792 3.945c.086.275.243.533.349.574s.206.49.223 1c.019.581.068.726.131.391.174-.924-.153-2.465-.523-2.465-.245 0-.293.134-.18.5m.542 2.931c0 .176.1.382.222.458.122.075.222.531.222 1.013s.093.875.207.875.25.225.303.5c.084.438.1.426.126-.098.017-.328-.069-.659-.192-.735-.122-.075-.222-.473-.222-.884 0-.87-.187-1.449-.468-1.449-.109 0-.198.144-.198.32m.888 4.029c0 .07.153.28.34.466.234.235.297.564.203 1.064-.102.545-.048.759.216.861.241.092.353.418.353 1.031 0 .674.088.895.357.895.255 0 .309-.11.189-.388-.092-.214-.376-1.214-.631-2.223-.368-1.451-1.027-2.546-1.027-1.706m106 1.75c0 .4 1.16 1.49 1.853 1.742.439.159.432.13-.081-.333-.309-.28-.834-.788-1.167-1.129-.423-.435-.605-.519-.605-.28m2.223 2.223c0 .163 1.429 1.453 1.611 1.455.091 0 .166-.149.166-.333s-.197-.333-.442-.333c-.244 0-.568-.2-.72-.445-.249-.398-.615-.603-.615-.344M154 341.315c0 .132.1.241.222.241s.222.307.222.682.142.824.314.996a.86.86 0 0 1 .203.737c-.061.233-.002.49.131.573s.241.331.241.553.134.515.297.65c.163.136.431.673.594 1.194.164.521.38 1.043.481 1.159s.184.43.184.698.15.545.333.616.334.282.334.47c0 .313.625 1.882 1.129 2.835.112.212.204.537.204.722s.096.337.214.337.32.396.451.881c.13.485.367.96.526 1.056.158.096.53.774.826 1.507.296.734.613 1.367.705 1.408s.167.181.167.312.25.566.555.967c.306.4.556.829.556.952 0 .233.878 1.832 1.114 2.028.073.061.271.461.44.889s.588 1.017.932 1.31.625.653.625.801c0 .147.25.538.556.868.305.329.555.74.555.911s.225.546.5.832.529.651.564.812c.087.401.714 1.009.714.693 0-.399-.658-1.561-.884-1.561-.114 0-.37-.345-.571-.767s-.505-.885-.677-1.027c-.172-.143-.313-.359-.313-.481 0-.121-.332-.684-.738-1.25-1.301-1.812-3.506-5.663-4.631-8.086-.383-.825-.782-1.5-.886-1.5s-.189-.104-.189-.233c0-.128-.45-1.189-1-2.358s-1-2.183-1-2.253c0-.069-.187-.533-.415-1.03-.85-1.85-1.141-2.53-1.141-2.666 0-.078-.166-.512-.371-.967-.204-.454-.64-1.671-.969-2.705-.514-1.616-1.104-2.58-1.104-1.806m108.667.206c0 .436.894 1.006 1.16.74.201-.2.148-.261-.227-.261-.286 0-.489-.138-.489-.333 0-.184-.1-.334-.222-.334s-.222.085-.222.188m1.555 1.133c0 .309.409.506.691.331.171-.106.154-.21-.056-.343-.397-.251-.635-.247-.635.012m1.906.874c-.066.107.378.401.987.654 1.303.541 1.325.693.432 3.04a73 73 0 0 0-.444 1.222 29 29 0 0 1-.784 1.897c-.28.615-.571 1.415-.647 1.777l-.138.66.333-.722c.184-.398.433-.723.554-.723s.182-.198.135-.442a.95.95 0 0 1 .235-.761c.176-.176.32-.528.32-.781s.1-.46.222-.46c.123 0 .223-.3.223-.667 0-.366.1-.666.222-.666s.222-.31.222-.688c0-.5.121-.719.444-.804.454-.118.625-.508.223-.508-.123 0-.223-.235-.223-.522 0-.649-.7-1.314-1.188-1.127-.225.086-.416.003-.5-.217-.15-.391-.44-.466-.628-.162m-.87 9.525c-.086.139-.743 1.385-1.459 2.767-2.123 4.095-4.544 8.17-6.577 11.067l-1 1.425c-.83 1.183-2.281 3.03-3.419 4.355-.683.794-1.243 1.57-1.244 1.724-.005.394 1.199-.811 1.61-1.613.188-.367.702-1.037 1.142-1.489s.8-.92.8-1.039.287-.502.637-.853c.35-.35.707-.858.793-1.128s.349-.595.585-.721c.236-.127.43-.413.43-.636s.25-.593.555-.823.556-.575.556-.768.4-.888.889-1.543c.488-.655.888-1.284.888-1.397s.3-.585.667-1.048.667-.928.667-1.035c0-.23.882-1.916 1.086-2.076.078-.061.377-.611.663-1.222s.611-1.261.721-1.444.374-.684.587-1.112c.213-.427.474-.841.581-.918s.15-.273.096-.434c-.07-.21-.142-.221-.254-.039m-95.762 17.828c.258.241.532.636.609.878s.31.496.517.565.778.629 1.267 1.246c1.076 1.36 1.308 1.598 2.798 2.874a63 63 0 0 1 1.816 1.614c.356.338.864.729 1.128.869s.611.439.77.664c.309.434.932.56.932.187 0-.122-.2-.222-.444-.222-.245 0-.445-.086-.445-.191 0-.104-.799-.818-1.775-1.586-1.827-1.435-5.574-5.234-6.487-6.575-.284-.416-.659-.757-.835-.758-.227-.001-.184.125.149.435m81.215 4.052c-.147.147-.259.422-.249.611.015.3.035.301.147.012.071-.184.289-.456.483-.604.194-.149.247-.274.119-.278s-.353.113-.5.259m-2.568 2.345c-.567.458-1.028.983-1.024 1.166.004.262.054.25.232-.055.125-.214.347-.389.493-.39.252-.001 1.712-1.241 1.712-1.455 0-.271-.48-.022-1.413.734m-39.735-.24c-.395.105-.752.74-.417.74.11 0 .359-.16.554-.355s.508-.296.694-.225c.194.074.281.036.204-.089-.139-.226-.386-.242-1.035-.071m5.916.013c.239.061.664.261.945.444.452.296.509.297.509.001 0-.346-.678-.618-1.445-.578-.433.022-.433.025-.009.133m-8.138.432c-.465.123-.727.739-.314.739.167 0 .364-.16.439-.356.081-.21.278-.302.48-.225.196.075.285.038.207-.088-.141-.228-.197-.233-.812-.07m10.816.07c-.078.126.011.163.209.087.223-.085.345-.006.345.225 0 .197.15.357.333.357.47 0 .414-.385-.097-.659-.532-.284-.62-.286-.79-.01m-12.835.378c-.214.056-.389.244-.389.419 0 .425.363.404.53-.032.093-.24.282-.302.608-.198q.476.151.321-.096c-.156-.252-.386-.272-1.07-.093m14.597.092c-.117.189-.06.232.183.139.195-.075.473.008.62.185.344.415.655.408.655-.014 0-.183-.142-.333-.315-.333a2.2 2.2 0 0 1-.644-.126c-.181-.07-.406-.003-.499.149m-16.316.81c.002.24.066.296.167.145.089-.135.313-.302.496-.372q.335-.126-.167-.144-.5-.02-.496.371m18.552-.237c.244.067.527.236.628.374q.182.25.094-.081c-.05-.183-.332-.352-.628-.374-.425-.033-.444-.016-.094.081m24.09.915c-.663.465-1.38.912-1.592.993-.413.159-.535.607-.165.607.123 0 .223-.1.223-.222s.2-.222.444-.222.444-.147.444-.327c0-.191.132-.276.317-.205.179.069.419-.071.555-.324.131-.246.456-.479.722-.518s.524-.196.574-.349c.155-.47-.265-.313-1.522.567m-44.09-.4c-.076.122-.319.222-.541.222s-.528.149-.679.331-.365.276-.475.208c-.333-.206-1.972.632-1.965 1.004.006.299.036.296.222-.022.133-.228.385-.324.66-.252.249.065.445.007.445-.132 0-.136.237-.248.528-.248s.653-.15.805-.333.456-.333.676-.333c.604 0 1.114-.245.976-.468-.163-.264-.481-.253-.652.023m21.222-.003c0 .138.111.183.247.099s.344-.015.462.153c.176.252.198.247.123-.027-.107-.394-.832-.59-.832-.225m1.556.468c0 .152.065.211.144.131.08-.079.284.029.454.241.288.36.304.356.241-.057-.072-.479-.839-.767-.839-.315m1.451.412c-.079.129.003.234.184.234.18 0 .384.125.453.278.07.153.103.086.075-.148-.06-.488-.497-.711-.712-.364m-45.527.162c-.205.204.06.517.438.517.185 0 .487.151.672.335.184.184.427.279.539.209.113-.069.205-.02.205.109 0 .13.291.236.648.236.356 0 .699.102.761.227.062.126.089.108.061-.039-.029-.148-.497-.425-1.039-.617-.543-.192-1.037-.409-1.098-.483-.232-.278-1.059-.623-1.187-.494m47.293.654c.198.198.415.305.482.237.198-.198-.14-.597-.506-.597-.29 0-.287.05.024.36m-31.115.322c-.081.13-.081.302-.001.382s.229.011.33-.154.297-.231.433-.147.247.047.247-.083c0-.307-.819-.305-1.009.002m32.653.102c.669.348.951.307.698-.102-.08-.13-.415-.236-.744-.236l-.598.002zm13.569-.102c-.081.13-.073.305.017.389.09.083.209.026.264-.127.055-.154.191-.223.303-.154s.203.02.203-.11c0-.306-.597-.305-.787.002m-47.778.444c-.08.131-.081.303-.001.383s.215.035.3-.1.355-.296.599-.357c.347-.087.314-.117-.153-.137-.329-.014-.664.081-.745.211m35.676-.001c0 .129.104.17.232.092s.38-.021.561.129.399.204.484.118c.197-.197-.378-.567-.888-.571-.214-.002-.389.102-.389.232m10.815-.088c-.27.27-.154.507.185.377.183-.07.333-.217.333-.326 0-.233-.306-.263-.518-.051m-57.259.532c0 .13.106.169.237.089s.293.07.364.339c.093.355.175.408.306.196.098-.159.072-.417-.058-.574-.286-.345-.849-.378-.849-.05m9.166-.088c-.313.126-.384.964-.081.964.108 0 .246-.192.307-.426.062-.234.348-.47.637-.525.523-.099.523-.1-.029-.112-.306-.007-.681.037-.834.099m39.278.093c-.268.188-.244.208.123.106.29-.08.636.04.945.328.472.439.488.44.488.027 0-.255-.202-.481-.5-.561-.652-.175-.666-.173-1.056.1m7.047.038c-.246.183-.306.382-.178.584.152.242.225.21.34-.155q.147-.465.505-.325.358.138.198-.122c-.205-.332-.403-.328-.865.018m-54.141.555c.011.232.063.277.13.111.133-.329.964-.377.964-.055 0 .122.45.222 1 .222 1.373 0 1.261-.351-.167-.523-1.75-.21-1.946-.185-1.927.245m4.927-.226c-1.313.118-1.186.504.167.504.611 0 1.111-.1 1.111-.222 0-.32.609-.275.742.055.067.166.119.121.129-.111.019-.406-.059-.414-2.149-.226m44.629.226c.01.232.063.277.13.111.074-.184.623-.278 1.63-.278s1.557.094 1.631.278c.067.166.119.121.129-.111.016-.339-.208-.389-1.76-.389-1.551 0-1.775.05-1.76.389"}),a.createElement("path",{fill:"#3c3c3c",d:"M245.031 17.667c-.14.363.238.437.71.138.236-.15.221-.216-.074-.33-.494-.189-.49-.19-.636.192m1.469.042c.214.056.564.056.778 0s.039-.102-.389-.102-.603.046-.389.102m-3.611.291c0 .122-.267.222-.593.222s-.53.062-.454.138c.075.076.609.067 1.185-.019.744-.112.956-.215.733-.357-.422-.267-.871-.259-.871.016m-3.013.465c-.068.111.131.202.444.202.681 0 .736-.127.125-.287-.245-.064-.501-.025-.569.085m7.564 22.091c0 12.344.027 17.427.06 11.294a2544 2544 0 0 0 0-22.444c-.033-6.212-.06-1.195-.06 11.15m-10.272-21.781c-.236.269-.106.296.889.183 1.342-.151 1.662-.291.665-.291-.377 0-.819-.047-.982-.104-.162-.057-.42.039-.572.212m-2.168.336c-.076.122-.406.23-.735.24s-.468.07-.309.133c.439.176 1.853-.143 1.704-.384-.17-.275-.487-.269-.66.011m-3.077.324c-.094.246.008.342.362.339.271-.001.393-.078.271-.169a2.4 2.4 0 0 1-.362-.339c-.076-.096-.198-.02-.271.169m-2.688.472c-.361.264-.372.315-.068.315.199 0 .428-.106.509-.237.235-.381.024-.418-.441-.078m-2.235.315c-.076.122-.456.23-.846.24s-.579.07-.42.134c.414.165 1.822-.131 1.822-.384 0-.279-.381-.272-.556.01m-5.444.667c0 .122-.167.222-.371.222s-.314.057-.245.126.509.053.978-.035c.704-.132.776-.19.412-.332-.617-.241-.774-.237-.774.019m-2.303.333c-.078.203 0 .334.198.334.18 0 .327-.15.327-.334 0-.183-.09-.333-.199-.333s-.256.15-.326.333m-5.697.778c0 .122-.325.234-.723.248-.409.015-.546.071-.315.131.535.138 1.482-.107 1.482-.383a.22.22 0 0 0-.222-.218c-.122 0-.222.1-.222.222m-2.123.203c.069.112 0 .254-.154.316-.168.068-.125.12.11.13.214.01.389-.132.389-.316 0-.183-.106-.333-.236-.333-.129 0-.178.091-.109.203m-8.198 1.249c-.421.318-.42.326.056.326.285 0 .487-.139.487-.334 0-.402-.002-.402-.543.008m1.177-.062c.112.112.44.166.729.12.445-.069.414-.101-.204-.203-.441-.073-.648-.041-.525.083m-6.516.783c-.086.224-.016.28.231.185.194-.075.396-.136.447-.136s.093-.083.093-.185c0-.316-.641-.203-.771.136m2.326-.173c-.75.158-.754.164-.111.167.367.001.967-.074 1.333-.167.923-.235-.107-.235-1.222 0m-4.877.613c-.287.313-.263.335.222.205a5 5 0 0 1 1.081-.148c.68-.004.545-.126-.315-.285-.449-.083-.771-.009-.988.228m-5.41.57c-.079.205-.046.373.072.373.137 0 .215 6.852.215 18.888v18.889h-19.333c-12.741 0-19.333.076-19.333.223 0 .422 38.591.293 38.754-.13.196-.513.134-37.681-.065-38.188-.15-.383-.182-.389-.31-.055m-2.157.388c0 .097-.225.219-.5.272-.461.089-.457.097.055.105.306.004.806-.064 1.111-.151l.556-.159-.611-.122c-.336-.066-.611-.042-.611.055m-5.731.771c-.314.355-.202.39.583.18.387-.104.444-.187.222-.327-.393-.249-.468-.236-.805.147m-2.173.307c-.114.108-.407.245-.652.304-.342.082-.307.112.154.132.329.015.664-.081.744-.211.194-.314.017-.475-.246-.225m-2.621.351c-.089.231.015.333.337.333.388 0 .419-.055.188-.333-.152-.183-.304-.333-.337-.333s-.118.15-.188.333m-2.809.387c0 .093-.166.169-.37.169s-.322.048-.262.108c.059.059.701.027 1.426-.071l1.318-.178-1.056-.098c-.581-.054-1.056-.022-1.056.07m-4.666.584c0 .12-.175.264-.389.32-.3.079-.278.108.098.128.539.028.87-.31.517-.528-.125-.077-.226-.041-.226.08m-3 .473c-.076.122-.348.223-.606.223s-.421.047-.363.105.628.044 1.265-.031c.638-.076 1.132-.159 1.098-.186-.263-.208-1.284-.29-1.394-.111m-2.577.359c-.258.311-.241.348.121.278.23-.044.461-.206.511-.359.132-.396-.28-.343-.632.081m-2.423.273c0 .124-.175.275-.389.336-.214.062-.089.094.278.072.366-.022.649-.137.627-.256-.053-.296-.516-.432-.516-.152m-5.421.831c-.083.217-.033.318.129.264.332-.11.515-.615.223-.615-.119 0-.278.158-.352.351m1.865-.129c-.59.124-.644.167-.222.18.306.009.956-.066 1.444-.167.741-.154.778-.184.223-.181a9 9 0 0 0-1.445.168m-4.111.444c-.075.122-.348.222-.606.222-.257 0-.41.058-.34.128s.611.055 1.203-.033c.836-.126.976-.2.631-.335-.614-.239-.73-.237-.888.018m67.154 33.056c-17.019.037-26.132.133-26.044.275.245.396 51.486.298 52.012-.1.238-.18.384-.306.323-.28-.062.026-11.892.073-26.291.105m-69.709 5.184c0 .123 7.722.205 19.333.205h19.333v18.648c0 12.514-.075 18.685-.228 18.761-.125.062-.1.087.056.055.367-.074.535-37.139.17-37.578-.28-.338-38.664-.427-38.664-.091M196 68.401c-.646.1-1.114.436-1.104.793.003.138.108.075.233-.138.214-.367 1.698-.389 26.201-.389h25.974l.097.558c.093.532.096.53.071-.041-.021-.451-.174-.638-.621-.757-.601-.159-49.825-.184-50.851-.026m51.44 23.377c0 12.039.027 16.964.06 10.944s.033-15.869 0-21.889-.06-1.094-.06 10.945m-94.94 9.264c.214.056.564.056.778 0s.039-.102-.389-.102-.603.046-.389.102m3.833.454c.245.061.514.222.599.357s.22.18.3.1c.278-.278-.151-.62-.745-.594-.467.02-.501.05-.154.137m2.884.642c.198.197.415.304.483.237.197-.198-.141-.597-.507-.597-.29 0-.287.049.024.36m1.505.015c.214.056.564.056.778 0s.039-.101-.389-.101-.603.045-.389.101m3.5.453c.184.07.403.234.488.365.2.308.493.024.299-.29-.08-.13-.365-.229-.633-.219q-.496.017-.154.144m2.887.614c.151.182.365.275.475.207.284-.176.013-.538-.402-.538-.283 0-.296.062-.073.331m2.335.126c1.126.233 2.036.222 1.112-.013a6.6 6.6 0 0 0-1.334-.17c-.56-.001-.525.028.222.183m3.072.479c.233.175.735.266 1.178.214.975-.114.906-.167-.472-.361-.969-.136-1.059-.118-.706.147m2.373.259c0 .046.15.208.333.36.273.227.334.212.334-.083 0-.199-.15-.361-.334-.361-.183 0-.333.038-.333.084m2 .224c0 .047.295.129.655.182s.604.014.542-.086c-.11-.178-1.197-.265-1.197-.096m3.468.673c.074.194.233.352.352.352.292 0 .109-.505-.223-.615-.162-.055-.212.047-.129.263m1.254.061c.214.056.564.056.778 0s.039-.102-.389-.102-.603.046-.389.102m3.278.377c0 .046.25.133.555.191s.556.02.556-.085-.25-.192-.556-.192c-.305 0-.555.039-.555.086m3.475.692c.07.183.217.333.326.333s.199-.15.199-.333a.33.33 0 0 0-.326-.333c-.199 0-.277.13-.199.333m14.969 1.826c.306.056.683.208.839.337.156.128.347.17.426.091q.364-.366-.969-.467c-.468-.035-.601-.018-.296.039m2.995.645c.198.198.415.305.483.237.197-.198-.141-.597-.507-.597-.29 0-.287.049.024.36m5.005.471c.306.056.625.215.71.352s.233.171.327.076c.249-.248-.386-.59-1.037-.558l-.555.026zm2.802.595c.074.194.232.352.352.352.292 0 .109-.505-.223-.616-.163-.054-.212.048-.129.264m5.087.494c.245.07.545.199.667.286s.522.088.889.002c.434-.101.511-.165.222-.184a37 37 0 0 1-1.333-.13c-.489-.056-.689-.044-.445.026m2.724.45c.153.062.222.204.153.316s-.019.203.11.203c.13 0 .235-.15.235-.333s-.175-.326-.388-.316c-.235.011-.279.062-.11.13m1.942.239c.366.054.72.186.787.293.066.108.417.116.778.019.671-.18-.845-.539-1.873-.443-.197.018-.058.077.308.131m3.445.442c.184.07.391.214.461.321s.51.096 1-.028c.792-.201.805-.215.141-.153-.403.038-.784-.015-.847-.117s-.333-.177-.601-.167q-.495.016-.154.144m-159.637.706c.219 1.094-2.345 2.021-5.591 2.021-.655 0-1.243.086-1.308.191-.202.327-2.785.955-3.665.891-.584-.042-1.018.082-1.436.411-.329.258-1.02.537-1.536.619a8.2 8.2 0 0 0-1.836.571c-.495.233-1.595.662-2.445.953s-2.459.942-3.575 1.446c-1.116.505-2.176.918-2.354.918-.179 0-.503.196-.72.436s-.758.554-1.201.699-1.045.448-1.337.675c-.291.227-.626.412-.744.412-.257 0-2.764 1.489-3.392 2.015-.245.205-.712.51-1.039.679-5.341 2.756-17.509 14.803-20.665 20.458a61 61 0 0 1-1.233 2.033c-1.909 3.028-2.898 4.903-5.295 10.037-.799 1.712-2.257 6.009-3.107 9.157-1.079 3.992-1.189 4.452-1.428 5.955a59 59 0 0 1-.558 2.888c-1.055 4.747-1.017 19.333.064 24.241.24 1.09.531 2.582.648 3.315.681 4.276 4 13.575 6.425 18 .201.367.516.967.7 1.333 2.284 4.553 6.481 10.413 10.591 14.787.521.555 1.019 1.231 1.105 1.502.086.272.474.654.863.85.388.196 1.109.77 1.6 1.276.899.924 2.216 2.079 4.637 4.067.719.591 1.75 1.449 2.291 1.907.541.459 1.079.834 1.195.834.302 0 2.65 1.584 2.65 1.787 0 .093.275.265.611.382.612.214 1.901.994 2.945 1.782.305.231.885.533 1.288.671s.991.454 1.308.703c.316.249.744.452.95.452.207 0 .611.25.898.556.296.315.771.555 1.098.555.316 0 .974.214 1.461.476.487.261 1.385.649 1.997.862.611.213 1.411.539 1.777.726.367.186 1.067.436 1.556.556a31 31 0 0 1 2.222.681c2.509.873 4.223 1.344 5.778 1.59 2.894.458 3.516.792 3.355 1.804l-.138.861h.891c.791 0 .892-.06.892-.528 0-.975.453-1.112 2.724-.828 3.288.412 4.609.713 4.609 1.052 0 .248.915.304 5 .304 4.171 0 5-.052 5-.316 0-.337 1.967-.854 4.264-1.121 1.329-.155 2.181.276 2.181 1.104 0 .241.248.333.899.333h.899l-.143-.759c-.193-1.03.341-1.352 3.141-1.89 2.142-.411 2.984-.644 5.759-1.595a41 41 0 0 1 2.222-.691c.489-.129 1.391-.471 2.004-.761.612-.289 1.187-.526 1.277-.526s.798-.3 1.574-.667 1.61-.667 1.855-.667.727-.243 1.074-.541c.346-.298.859-.599 1.14-.67.28-.07.876-.376 1.324-.68s.92-.553 1.049-.553.59-.234 1.025-.52l1.435-.944a66 66 0 0 1 1.361-.869c1.964-1.219 3.555-2.269 4.079-2.692.32-.258.801-.539 1.07-.623s.548-.34.621-.569c.073-.23.453-.608.845-.841 2.624-1.562 11.231-10.623 13.816-14.544.46-.698 1.075-1.426 1.366-1.617s.53-.496.53-.678c0-.357 1.262-2.699 1.55-2.877.151-.094 3.279-6.343 4.784-9.559.803-1.716 2.791-7.611 2.781-8.249-.002-.136.296-1.158.663-2.271.366-1.113.666-2.317.666-2.676 0-.36.272-2.288.603-4.285 1.234-7.431.798-20.375-.937-27.853-.495-2.134-1.022-4.169-1.266-4.889a89 89 0 0 1-.63-2c-.664-2.194-1.3-3.934-1.867-5.111a738 738 0 0 1-1.941-4.101c-1.438-3.06-3.116-6.106-3.937-7.151-.254-.322-.562-.822-.685-1.111-.669-1.565-5.365-7.432-8.738-10.916a1602 1602 0 0 1-3.222-3.334c-.087-.092-.623-.492-1.192-.888-.569-.397-1.869-1.393-2.889-2.215-2.382-1.919-3.147-2.483-4.58-3.382-.643-.403-1.414-.996-1.711-1.317-.298-.322-.725-.585-.948-.585s-.621-.151-.884-.335-1.26-.748-2.216-1.253-1.976-1.104-2.267-1.331c-.292-.228-.692-.415-.889-.416s-1.55-.551-3.005-1.222c-1.456-.671-2.806-1.221-3-1.221-.195 0-.957-.285-1.694-.634-.737-.348-1.805-.703-2.373-.789-.569-.085-1.282-.349-1.584-.588-.303-.238-.885-.433-1.294-.434-.772-.001-2.081-.296-3.131-.704-.471-.183-.612-.385-.612-.877 0-.801-1.415-.987-1.659-.218-.214.674-.998.711-3.065.142-2.411-.663-2.46-.695-2.303-1.48.124-.621.101-.64-.78-.64-.687 0-.878.076-.787.312.392 1.022-.048 1.09-7.071 1.092-7.026.002-7.467-.066-7.073-1.092.093-.242-.132-.312-1.01-.312-1.128 0-1.129.001-1 .646m162.224-.09c.143.373.435.436.621.134.068-.109-.034-.259-.227-.333-.501-.192-.537-.174-.394.199m2.08.099c.548.187 2.383.313 2.204.151-.051-.046-.693-.141-1.426-.212-.864-.083-1.138-.061-.778.061m3.167.387c.214.056.389.195.389.308s.1.206.222.206.222-.15.222-.333q-.001-.333-.611-.308c-.376.016-.462.065-.222.127m1.055.253c0 .101.3.14.667.086s.667-.136.667-.184-.3-.086-.667-.086-.667.083-.667.184m3.611.414c.214.056.389.191.389.301s.15.141.332.071c.506-.194.163-.528-.512-.499-.376.016-.453.063-.209.127m-156.389.298c.489.12 2.486.424 4.438.675 1.951.25 3.662.55 3.801.665s1.092.321 2.118.457 2.438.485 3.137.777 1.599.53 2 .53c.401.001 1.279.297 1.951.658s1.35.662 1.507.667.657.174 1.111.375c.455.202 1.276.54 1.826.752 1.861.716 4.105 1.727 5.445 2.451.733.396 1.803.957 2.378 1.246.574.288 1.105.623 1.179.744.075.12.334.219.577.219s.668.225.944.5c.462.459 2.445 1.873 4.629 3.299 2.507 1.639 10.473 9.089 12.688 11.868 1.613 2.023 4.921 6.356 5.069 6.638.535 1.023.838 1.539 1.394 2.37.35.523 1.39 2.41 2.31 4.194s1.745 3.342 1.834 3.464.289.622.443 1.111.503 1.289.774 1.778c.481.869 1.071 2.634 2.226 6.666.315 1.1.765 2.65.999 3.445.426 1.442.743 3.176 1.118 6.111.11.856.353 2.656.54 4 .77 5.527.651 12.516-.315 18.556-.107.672-.317 2.222-.467 3.444-.149 1.222-.546 3.122-.882 4.222s-.826 2.75-1.088 3.667c-1.045 3.648-1.9 6.137-2.282 6.641-.221.291-.402.645-.402.785 0 .395-3.801 7.858-4.763 9.352-.473.733-.993 1.652-1.157 2.043-.164.39-.431.79-.595.889s-.731.829-1.262 1.623c-1.208 1.808-4.56 5.805-6.709 8-2.34 2.391-5.953 5.767-6.615 6.182-.517.324-1.153.807-2.676 2.033-.702.565-5.961 4.065-6.81 4.532-.349.192-1.135.603-1.746.912s-1.261.661-1.444.78-.684.368-1.111.551c-.428.184-.928.433-1.112.553-.4.262-2.76 1.23-4.42 1.813-.659.231-1.311.513-1.448.627-.136.114-.747.331-1.357.484-.609.152-1.608.508-2.219.792-.611.283-1.44.516-1.842.517s-1.105.192-1.561.425-1.327.488-1.936.567c-2.771.361-4.259.64-4.772.896-.306.153-1.656.339-3 .413-1.345.075-3.195.233-4.111.353-2.161.282-6.819.294-9.407.025a429 429 0 0 0-4.593-.446c-1.406-.129-3.027-.378-3.603-.553s-1.988-.423-3.137-.551-2.529-.432-3.064-.675-1.324-.445-1.752-.449-1.289-.245-1.914-.536-1.475-.6-1.889-.686a6 6 0 0 1-1.447-.557c-.382-.219-1.232-.556-1.889-.748-.657-.193-1.59-.553-2.074-.802-.485-.248-1.037-.452-1.229-.452-.191 0-.567-.153-.835-.341-.738-.517-3.898-2.103-4.189-2.103-.142 0-.393-.164-.559-.364s-.705-.536-1.197-.747-1.031-.548-1.197-.748-.397-.363-.513-.363-.872-.475-1.68-1.056a54 54 0 0 0-2.186-1.5c-4.486-2.784-10.968-9.107-16.435-16.031-1.491-1.887-5.266-7.857-5.546-8.769-.09-.293-.248-.639-.35-.768-.918-1.154-3.228-6.56-4.412-10.321-.75-2.383-1.61-5.087-1.911-6.009-.301-.921-.548-2.107-.548-2.635s-.271-2.024-.602-3.325l-.602-2.364.009-9.334c.008-9.32.009-9.336.602-11.863.326-1.391.593-2.884.593-3.317s.19-1.395.423-2.137.696-2.399 1.031-3.683.835-2.933 1.111-3.666a57 57 0 0 0 .883-2.556c.42-1.348.733-2.044 2.895-6.444 1.59-3.235 2.059-4.086 3.768-6.829 2.527-4.057 3.751-5.638 7.958-10.282 3.694-4.078 8.485-8.217 12.487-10.788.733-.471 1.533-1.029 1.778-1.239.574-.495 1.932-1.252 4.555-2.542 1.161-.571 2.261-1.166 2.445-1.321s.983-.551 1.777-.881c3.692-1.529 5.777-2.34 6.018-2.34.145 0 .594-.205.999-.455s1.355-.555 2.111-.676c.757-.122 1.638-.356 1.958-.519.319-.164 1.331-.416 2.248-.562.916-.145 2.116-.402 2.666-.571s2.524-.521 4.387-.781c1.863-.261 3.663-.557 4-.658.871-.262 12.655-.257 13.724.006m159.761.341c.191.191.45.284.575.207.336-.208.039-.555-.476-.555-.405 0-.415.033-.099.348m1.795.03c.244.057.569.265.722.461.252.323.278.324.278.005 0-.377-.47-.638-1.074-.596-.271.019-.251.054.074.13M99.617 132.12c-10.13 2.728-11.519 16.293-2.119 20.673 9.635 4.49 19.577-6.52 13.905-15.397-2.662-4.166-7.638-6.394-11.786-5.276m3.939.336c6.881 1.097 11.167 8.99 8.061 14.844-3.583 6.756-11.649 8.252-16.949 3.145-7.244-6.978-1.023-19.57 8.888-17.989m-31.667 10.331c-.978.164-2.628.443-3.667.62-2.393.406-5.098 1.127-6.02 1.604-.393.203-1.323.566-2.069.808-3.911 1.268-4.214 2.109-2.068 5.737 2.003 3.386 2.539 4.315 3.186 5.525 1.621 3.028 1.861 3.427 2.237 3.712.584.443 2.018.385 2.825-.113 1.579-.977 8.732-1.965 12.131-1.677 3.226.274 6.954 1.028 8.223 1.663a84 84 0 0 0 2.474 1.18c2.611 1.185 7.34 4.829 9.031 6.96 3.089 3.892 5.35 8.707 5.727 12.194.211 1.949 1.015 3.609 1.926 3.978 1.256.508 13.876.21 14.427-.341 1.955-1.955-2.186-15.636-6.629-21.901-4.647-6.554-6.03-7.729-8.498-7.219-4.757.983-9.89-.558-12.741-3.824-1.045-1.199-2.828-4.309-2.828-4.935 0-.136-.3-.66-.665-1.164-1.116-1.54-2.344-1.973-8.335-2.938-1.717-.277-6.689-.201-8.667.131m10.766.663c2.58.423 3.686.709 4.515 1.166 1.167.645 1.215.716 2.924 4.303 2.57 5.393 8.779 8.35 14.817 7.056 2.057-.442 3.512.534 6.588 4.416 4.825 6.089 8.74 16.164 8.72 22.439-.007 2.021-.032 2.028-7.511 2.076-7.876.052-7.641.163-8.353-3.962-1.417-8.211-8.461-17.023-15.852-19.831-.599-.228-1.433-.613-1.852-.855-3.815-2.208-16.684-2.142-20.559.104-2.037 1.181-2.161 1.027-8.672-10.806-.743-1.349-.13-2.222 2.168-3.089a65 65 0 0 0 2.593-1.05c4.908-2.148 14.029-3.025 20.474-1.967m-31.55 7.151c-.302.208-.649.489-.772.623-.122.135-.922.809-1.777 1.498-5.873 4.729-11.149 12.077-13.706 19.088-1.243 3.41-1.163 4.35.562 6.553 4.291 5.486 4.353 11.84.164 16.97-1.486 1.82-1.883 2.718-1.719 3.883.154 1.083 1.951 5.865 2.599 6.914.256.414.773 1.379 1.149 2.145.377.765 1.145 2.041 1.707 2.834s1.28 1.844 1.596 2.334c.966 1.495 4.375 5.174 6.141 6.627a95 95 0 0 1 2.876 2.472c2.323 2.113 3.113 1.77 5.408-2.347a65 65 0 0 1 1.791-2.962c.556-.861 1.079-1.743 1.161-1.96s.575-1.016 1.095-1.777c1.227-1.796 1.322-3.042.289-3.792-4.122-2.991-8.385-8.981-9.676-13.593-.92-3.288-1.131-4.355-1.342-6.778-.862-9.909 2.855-18.571 10.688-24.907 1.338-1.083 1.357-1.977.085-3.87a44 44 0 0 1-1.634-2.667 50 50 0 0 0-1.816-2.943c-.592-.885-1.378-2.206-1.747-2.936-.913-1.808-1.898-2.253-3.122-1.409m1.858.345c.21.153.804.995 1.321 1.87a481 481 0 0 0 2.938 4.867c2.624 4.297 2.778 4.575 2.778 5.03 0 .212-1.384 1.764-3.075 3.448-5.198 5.175-7.425 9.497-8.505 16.506-1.463 9.493 2.463 20.256 9.529 26.121 2.754 2.286 2.808 1.959-1.432 8.656-.773 1.223-1.668 2.723-1.987 3.334-1.63 3.122-2.325 3.292-4.781 1.166-7.5-6.487-11.585-12.009-14.406-19.473-1.511-3.999-1.48-4.304.709-7.105 4.151-5.313 4.019-11.574-.366-17.329-1.873-2.459-1.568-4.466 1.646-10.827 3.925-7.77 13.551-17.785 15.631-16.264m-28.63 25.057c-2.649.405-5.809 2.324-7.494 4.553-1.148 1.518-2.5 5.691-2.285 7.055 1.307 8.318 9.117 12.682 16.148 9.024 8.981-4.673 7.319-17.824-2.577-20.398-1.874-.488-2.057-.499-3.792-.234m4.31.812c8.905 2.57 10.254 15.116 2.082 19.362-10.521 5.466-20.786-7.42-12.876-16.163 2.879-3.182 6.811-4.348 10.794-3.199m77.208 12.282c-1.148.522-1.297.798-1.757 3.26-1.855 9.931-7.435 16.513-17.983 21.21-4.267 1.901-13.772 1.989-18.444.171-3.27-1.272-3.999-1.141-5.151.929-2.405 4.32-4.516 8.013-5.017 8.777-1.393 2.125-1.084 3.001 1.512 4.288 1.037.514 2.095.935 2.353.935s1.032.248 1.719.551c5.019 2.211 15.67 2.769 22.584 1.183 2.233-.512 3.381-1.405 3.912-3.041 2.112-6.518 7.925-10.032 14.768-8.928 2.389.386 3.015.215 4.439-1.208 2.83-2.831 5.795-6.881 6.994-9.557.384-.856.845-1.806 1.025-2.111 1.023-1.737 2.825-6.946 3.075-8.889.087-.673.299-1.787.472-2.477.785-3.13.292-4.756-1.601-5.282-1.635-.453-11.813-.304-12.9.189m13.138.329c.912.38 1.233.926 1.233 2.093 0 1.249-.817 5.898-1.314 7.481-.231.733-.589 1.883-.797 2.556-.982 3.174-4.288 9.167-6.743 12.222-3.301 4.107-4.134 4.641-6.641 4.26-7.279-1.108-13.465 2.51-15.507 9.07-.297.955-1.228 2.175-1.847 2.422-6.547 2.614-21.974 1.311-28.698-2.424-2.156-1.197-2.197-1.004 1.648-7.773a1582 1582 0 0 0 2.601-4.591c.424-.756.858-1.222 1.271-1.366.633-.22.753-.191 3.694.911 4.389 1.644 13.883 1.526 18-.223 10.542-4.478 16.558-11.384 18.556-21.301.532-2.639.666-2.908 1.666-3.344.996-.434 11.837-.428 12.878.007m-19.371 30.922c-8.319 1.823-11.33 12.788-5.111 18.613 5.317 4.98 13.373 3.777 17.068-2.55 4.65-7.961-2.865-18.056-11.957-16.063m6.736 1.231c6.992 3.612 8.397 11.72 2.955 17.049-5.152 5.044-13.71 3.496-16.834-3.046-4.191-8.777 5.354-18.406 13.879-14.003m126.319 20.91c-.003.208-.181.48-.395.604-.305.178-.317.228-.056.23.65.007.961-.347.699-.797-.213-.366-.242-.371-.248-.037m1.771-.045c0 .123-.216.223-.481.223s-.422.059-.349.132c.193.193 1.497-.131 1.497-.372 0-.113-.15-.205-.333-.205s-.334.1-.334.222m-3.401.905c-.133.508-.014.542.412.117.263-.263.264-.33.006-.429-.179-.069-.353.061-.418.312m5.257 2.207c0 1.038.038 1.463.085.944s.047-1.369 0-1.889c-.047-.519-.085-.094-.085.945m-7.979-1.092c-.082.133-.338.192-.568.132-.275-.072-.42.006-.42.227 0 .243-.146.3-.53.203-.403-.101-.557-.03-.642.296-.089.341-.038.39.252.239.398-.208 1.66-.762 2.5-1.098.516-.207.518-.213.045-.227-.268-.007-.555.095-.637.228m-5.426 2.769c-.424.3-.705.545-.624.545.195 0 1.729-.907 1.729-1.022 0-.2-.375-.038-1.105.477M221 248.562c-.869.713-.635.708.333-.006.414-.306.659-.552.544-.548-.116.004-.51.254-.877.554m14.935.299c-.087.413-.146 1.013-.133 1.333.016.385.092.243.224-.416.11-.55.169-1.15.133-1.334-.037-.183-.138.005-.224.417m-17.491 1.821c-.916.859-1.466 1.461-1.222 1.338.425-.214 3.206-2.914 2.992-2.904-.057.002-.853.707-1.77 1.566m-2.347 2.485-.653.722.723-.653c.397-.359.722-.684.722-.722 0-.172-.183-.021-.792.653m-1.094 1.437-.39.618.515-.494c.282-.271.458-.549.39-.618-.069-.068-.3.154-.515.494m-1.559 2.507c-.189.367-.294.667-.233.667s.266-.3.456-.667c.189-.367.294-.667.233-.667s-.266.3-.456.667m-.899 1.576c-.196.378-.316.727-.268.775s.254-.261.457-.687c.457-.958.299-1.032-.189-.088m19.841 1.37-.392.721.447-.525c.381-.446.585-.923.392-.918-.03.001-.232.326-.447.722m-20.572.286c-.372.817-.301.991.101.248.188-.346.3-.672.25-.723-.051-.051-.209.163-.351.475m19.431 1.6c-.626 1.094-1.441 2.282-2.092 3.051-.359.424-.357.429.044.117.593-.462 2.911-3.966 2.737-4.14-.046-.046-.357.391-.689.972m-20.97 2.451c-.151.321-.27.789-.264 1.039.006.255.159.03.349-.51.382-1.092.332-1.411-.085-.529m17.59 2.106c-.681.738-1.478 1.79-1.052 1.389.474-.448 1.903-2.111 1.812-2.111-.051 0-.393.325-.76.722m-18.279.389c-.02.305-.088.805-.151 1.111l-.114.556.239-.547c.131-.301.199-.801.15-1.112l-.088-.564zm15.285 2.694-1.427 1.361 1.39-1.162c1.283-1.071 1.768-1.56 1.55-1.56-.048 0-.729.613-1.513 1.361m-15.708-.027c0 .427.045.602.101.388a1.8 1.8 0 0 0 0-.777c-.056-.214-.101-.039-.101.389m-.33 1.737c-.095.433-.258.677-.396.591-.242-.149-.202.869.043 1.115.222.221.668-1.148.59-1.808l-.075-.635zm13.508.288c-1.102.828-1.317 1.076-.48.551.429-.269.688-.322.787-.162.084.135.257-.049.397-.421.138-.363.233-.653.213-.645-.019.008-.432.313-.917.677m-1.897 1.308c-.305.239-.636.437-.736.439-.568.016-2.615 1.19-2.354 1.352.186.114.4.024.592-.25.166-.237.49-.43.72-.43s.485-.107.566-.237c.08-.131.261-.2.402-.155.14.046.553-.198.918-.54.764-.718.706-.815-.108-.179M235 273.991c-.776.08.338.138 2.667.138 2.743.001 3.511-.046 2.444-.147-1.87-.179-3.324-.176-5.111.009m-55.667.565c0 .183-.175.341-.389.35q-.398.017-.089.137c.373.149 1.395-.374 1.235-.632-.196-.317-.757-.21-.757.145m9.375.055c.044.231.298.406.628.43.321.024.39-.006.164-.072-.214-.062-.389-.255-.389-.43 0-.174-.107-.317-.238-.317-.132 0-.206.175-.165.389m40.482-.236c.077.077.023.28-.12.452-.214.258.693.235 1.08-.027.022-.015-.217-.148-.53-.296s-.507-.206-.43-.129m2.143.069-.555.178.555-.004a6 6 0 0 0 1.223-.174l.666-.169-.666-.004a4.8 4.8 0 0 0-1.223.173m11.667 0c.367.094.867.175 1.111.181l.445.01-.445-.191c-.244-.105-.744-.186-1.111-.18l-.667.011zm2.263-.077c-.08.079.028.276.24.437.505.384.842.389.526.009-.136-.164-.182-.364-.101-.445.08-.08-.004-.146-.187-.146-.184 0-.399.065-.478.145m-61.763.238a7 7 0 0 0 1.444 0c.398-.049.073-.089-.722-.089s-1.119.04-.722.089m32.67.146c-.212.161-.32.358-.241.438.248.247.515.159.515-.17 0-.174.125-.366.278-.427.153-.062.178-.117.056-.123s-.396.121-.608.282m-39.144.238c.085.221-.107.388-.618.535-.408.118-.591.221-.408.23s.783-.125 1.333-.298.825-.322.611-.33-.388-.115-.388-.237-.147-.222-.327-.222c-.193 0-.276.131-.203.322m14.458-.011c-.155.403.033.579.609.571.424-.006.43-.026.069-.236-.216-.126-.336-.323-.265-.438s.034-.208-.082-.208c-.117 0-.266.14-.331.311m36.007.133c-.079.304-.316.453-.748.47-.348.015-.464.071-.258.125s.806-.053 1.333-.238c.528-.184.785-.34.571-.346s-.389-.111-.389-.233c0-.402-.39-.232-.509.222m19.334-.307c-.129.13.353.752.583.752.058 0 .054-.2-.01-.445-.118-.449-.321-.558-.573-.307m-33.047.307-.556.178h.556c.305 0 .805-.08 1.111-.178l.555-.178h-.555c-.306 0-.806.08-1.111.178m-3.222.376c-.367.048-.817.149-1 .224a1.45 1.45 0 0 1-.667.081c-.183-.031-.268.01-.188.092.268.272 1.582.378 1.729.139.08-.13.691-.326 1.358-.437 1.299-.215.28-.297-1.232-.099m-16.223.503c.427.193 1.617.319 1.426.151-.051-.045-.492-.143-.981-.217-.62-.095-.754-.075-.445.066m2 .011c-.183.296.246.659.778.659.274 0 .279-.035.029-.193a1.8 1.8 0 0 1-.472-.464c-.132-.214-.204-.215-.335-.002m54.334.223c0 .157-.187.193-.5.097-.741-.228-.458-.044 1.358.882.899.459 1.579.743 1.51.632s-.529-.385-1.024-.608-.9-.535-.9-.692a.55.55 0 0 0-.222-.424c-.122-.075-.222-.025-.222.113m-52.867.207c-.162.1-.052.264.307.455.682.366.843.243.327-.249-.21-.199-.495-.292-.634-.206m24.867.122a.48.48 0 0 1-.278.411c-.2.081-.204.117-.013.13a.49.49 0 0 0 .402-.205c.075-.122.375-.222.666-.222.837 0 .817-.329-.022-.373q-.756-.04-.755.259m-52.63 1.468c-.897.497-1.574.96-1.506 1.029s.273.002.453-.148c.181-.15.958-.612 1.728-1.027.769-.414 1.299-.755 1.177-.756s-.956.405-1.852.902m29.36-.772c.076.076.718.282 1.426.459.709.176 1.638.421 2.066.544s1.028.263 1.333.311c.325.051.371.037.111-.034-.244-.067-.544-.239-.666-.381-.123-.143-.523-.27-.889-.284-.367-.014-1.247-.189-1.956-.389-1.409-.398-1.632-.433-1.425-.226m20.047.529c-.075.122-.375.222-.666.222s-.591.1-.667.222c-.075.122-.356.23-.624.24s-.371.065-.229.123.992-.145 1.889-.452c1.068-.365 1.424-.561 1.033-.568-.329-.005-.66.091-.736.213m-14.111 1.111c.306.098.756.178 1 .178.352 0 .329-.037-.111-.178a4 4 0 0 0-1-.178c-.352 0-.329.037.111.178m2.445 0c0 .122-.175.229-.389.238-.617.025.368.397 1.055.399l.556.001-.514-.206c-.283-.113-.452-.307-.376-.43s.033-.224-.097-.224c-.129 0-.235.1-.235.222m6 .095c0 .174-.175.362-.389.418-.327.086-.318.106.055.124.596.03 1.094-.307.905-.612-.217-.35-.571-.307-.571.07m2-.095c-.447.143-.469.179-.111.184.244.004.644-.079.889-.184.566-.243-.018-.243-.778 0m38.666-.153c0 .051.425.374.945.717.519.342.827.481.684.307-.276-.334-1.629-1.185-1.629-1.024m4.494 3.486c.837.795 2.18 2.145 2.986 3 .996 1.057 1.177 1.2.566.445-.89-1.1-2.425-2.614-4.171-4.114-.496-.426-.218-.125.619.669M164.479 282c-.367.367-.763.667-.88.667-.118 0-.271.225-.34.5-.105.417-.082.445.141.166.147-.183.692-.708 1.212-1.166.52-.459.852-.834.739-.834s-.506.3-.872.667m-2.713 2.833-.766.834.833-.766c.776-.713.936-.901.766-.901-.037 0-.412.375-.833.833m-2.479 3.111c-.912 1.276-1.12 1.612-.999 1.612.051 0 .513-.6 1.027-1.334.515-.733.889-1.333.831-1.333-.057 0-.444.475-.859 1.055m104.213-.908c.551.223.243.664-1.889 2.705l-2.167 2.074 2.264-2.045c2.584-2.333 2.982-3.019 1.663-2.864-.082.01-.024.068.129.13m-106.492 4.428c-.207.316-.339.613-.292.66.047.046.261-.212.475-.575.479-.811.336-.877-.183-.085m100.648 2.147-.878.945.944-.879c.52-.483.945-.908.945-.944 0-.168-.194 0-1.011.878m-1.469 1.667c-1.057 1.149-1.826 2.296-1.439 2.147.2-.077.363-.247.363-.379s.406-.721.902-1.309c.976-1.158 1.087-1.451.174-.459m-101.926 2.017c-.266.588-.48 1.162-.475 1.276.004.114.258-.33.565-.987.307-.656.521-1.23.476-1.276-.046-.045-.3.399-.566.987m-1.738 5.314c-.14.337-.309 1.113-.375 1.724-.078.724-.053.957.073.667.106-.244.199-.726.208-1.07s.122-.825.252-1.068.205-.537.166-.654-.185.064-.324.401m98.194 2.113c-.378 1.047-.326 1.33.075.406.182-.419.3-.851.264-.96-.037-.11-.189.14-.339.554m-98.888 1.722c0 .428.046.603.102.389a1.8 1.8 0 0 0 0-.777c-.056-.214-.102-.039-.102.388m-.343 1.34c-.08.302-.137.849-.125 1.216.017.532.061.464.218-.333.215-1.093.144-1.769-.093-.883m97.745 2.78c-.086.688-.11 1.297-.054 1.354.056.056.173-.461.259-1.149s.11-1.297.054-1.353c-.057-.057-.173.46-.259 1.148m-98.102.492c-.012.346-.155.5-.462.5-.247 0-.445.148-.445.333 0 .184.197.333.44.333.458 0 .819-.831.599-1.379-.063-.158-.123-.062-.132.213m98.021 7.833c-.007.305.069.955.171 1.444l.183.889v-.778c-.001-.98-.332-2.437-.354-1.555m-98.236 4.285c-.014.217-.175.453-.358.523-.471.181-.415.674.092.807.234.061.47.348.525.637.099.524.1.523.117-.03.021-.659-.338-2.512-.376-1.937m99.104.757c-.01.268.082.549.204.625s.23.356.24.624c.01.28.068.36.137.187.066-.165.015-.515-.112-.778a8 8 0 0 1-.342-.811c-.069-.211-.116-.154-.127.153m-98.685 2.908c0 .38-.1.752-.222.828-.345.213-.265.78.092.643.183-.07.362.048.43.285.064.223.06-.195-.009-.928-.137-1.469-.291-1.907-.291-.828m.496 2.939c0 .428.046.603.102.389a1.8 1.8 0 0 0 0-.778c-.056-.214-.102-.039-.102.389m100.615.307c0 .239.662 1.471.79 1.471.061 0-.055-.325-.257-.723-.412-.811-.533-.98-.533-.748M152.156 332c.069.672.163 1.264.207 1.315.156.178.035-1.431-.148-1.982-.12-.358-.141-.122-.059.667m102.982 2.611c.931 1.377 3.14 3.915 4.473 5.141 1.699 1.563 1.22.93-1.043-1.377-1.154-1.177-2.507-2.743-3.008-3.479s-.961-1.34-1.023-1.34c-.063 0 .208.475.601 1.055m-102.554.839c-.074.193-.042.294.072.224s.309.049.435.266c.199.342.23.346.236.032.01-.553-.574-.962-.743-.522m.787 1.55c-.003.244.08.644.185.889.243.566.243-.018 0-.778-.143-.446-.18-.468-.185-.111m.407 1.767c0 .336.971 3.002 1.061 2.912.05-.049-.131-.723-.403-1.496-.487-1.388-.658-1.756-.658-1.416m108.444 3.002c.306.256.756.57 1 .697.303.157.268.083-.111-.235-.305-.256-.755-.57-1-.697-.303-.157-.268-.083.111.235m1.658 1.106c.161.26 1.494.936 1.613.817.049-.048-.218-.223-.591-.389-.374-.165-.68-.376-.68-.468s-.106-.168-.235-.168c-.13 0-.178.093-.107.208m3.027 1.414c.051.037.393.243.76.458l.666.39-.524-.457c-.289-.252-.63-.458-.76-.458-.129 0-.193.03-.142.067m.553 2.171c-.206.63-.334 1.185-.285 1.234s.256-.428.46-1.059.332-1.186.285-1.233-.254.429-.46 1.058m-108.778 5.207c0 .122.143.472.318.777s.318.456.318.334-.143-.472-.318-.778-.318-.456-.318-.333m106.225 1.188c-.363.679-.288.867.116.291.195-.279.304-.56.24-.624s-.224.086-.356.333m-104.796 2.034c.19.367.395.667.456.667s-.044-.3-.234-.667c-.189-.367-.394-.667-.456-.667-.061 0 .045.3.234.667m102.137 3.336c-.274.487-.452.886-.395.886.15 0 1.069-1.597.973-1.692-.044-.044-.304.318-.578.806m-100.689-.627c-.004.202.901 1.735 1.024 1.735.052 0-.054-.275-.236-.611-.453-.836-.784-1.308-.788-1.124m2.108 3.846c.906 1.599 1.657 2.778 1.769 2.778.133 0-1.864-3.388-2.161-3.666-.13-.123.046.277.392.888m96.196.834c-.091.153-.318.528-.505.833-.339.553-.339.554.129.152.258-.221.519-.596.581-.833.129-.491.035-.56-.205-.152m-2.085 3.278c-.261.366-.425.666-.364.666s.325-.3.586-.666.425-.667.364-.667c-.062 0-.325.3-.586.667m-90.048 2.335c.126.246.461.646.746.889.597.511.292.026-.559-.888l-.416-.448zm88.048.553c-.261.367-.425.667-.364.667s.325-.3.586-.667c.261-.366.425-.666.364-.666-.062 0-.325.3-.586.666m-86.779 1.136c.175.462 1.807 2.322 3.779 4.31 1.55 1.563 1.551 1.563.206.117a79 79 0 0 1-2.542-2.896c-1.631-1.974-1.599-1.939-1.443-1.531m82.112 4.48c-2.272 2.406-2.753 3.15-.667 1.034.873-.885 3.62-3.983 3.528-3.978-.046.002-1.333 1.327-2.861 2.944m-75.887 2.347c.68.757 3.477 2.926 3.772 2.926.09 0-.472-.462-1.249-1.026s-1.813-1.39-2.301-1.834c-.867-.788-.872-.789-.222-.066m35.387.191c-.905.236-.276.513 1.167.513 1.467 0 1.989-.23 1.204-.532-.391-.149-1.768-.139-2.371.019m-2.389.155c0 .048.343.127.762.176.42.049.714.01.654-.087-.108-.174-1.416-.256-1.416-.089m5.487.068c-.075.121.147.169.522.114.885-.13 1.769.117 1.769.494 0 .17.147.288.327.261.514-.075.6-.27.249-.562-.411-.341-2.695-.586-2.867-.307m-6.79.228-.525.1.606.314c.759.394.856.394.703-.004-.067-.176-.003-.368.143-.427.323-.132-.193-.122-.927.017m-2.03.507-.556.177.598.023c.329.012.66-.078.736-.2.156-.253.011-.253-.778 0m13.333 0c.184.118.584.207.889.196l.556-.019-.556-.177c-.856-.275-1.313-.275-.889 0m28.454.544c-.147.177-.801.624-1.454.992s-1.244.765-1.317.882.568-.205 1.423-.714c.856-.51 1.603-1.052 1.662-1.204.142-.37.014-.352-.314.044m-45.676.661c-1.849.673-3 1.191-3 1.352 0 .074.075.093.167.041.258-.147 1.644-.739 2.428-1.037.388-.148.913-.203 1.166-.122.325.103.461.049.461-.184 0-.181.125-.38.278-.442.822-.331-.362-.022-1.5.392m20.68-.213c.237.18.681.318.987.308.453-.015.473-.038.111-.126-.245-.058-.54-.197-.656-.307a.9.9 0 0 0-.542-.201c-.249 0-.223.082.1.326m1.653.594c0 .105.25.191.556.191.305 0 .555-.038.555-.085s-.25-.133-.555-.191c-.306-.059-.556-.02-.556.085m-43.959.426c.052.153.313.36.582.459.651.241.617.108-.093-.357-.373-.244-.548-.281-.489-.102m45.404-.012c.075.122.356.215.624.206.469-.015.471-.022.042-.206-.611-.263-.829-.263-.666 0m1.384.681c.078.299.195.383.337.241.23-.23.049-.7-.269-.7-.104 0-.134.206-.068.459m1.392.316c.151.182.373.27.495.195.134-.083.102-.212-.081-.328-.479-.304-.714-.228-.414.133m1.557.277c.183.059.461.21.617.337.155.126.347.165.426.087.215-.216-.006-.351-.726-.445-.358-.047-.5-.037-.317.021m12.556.059c-.076.122-.325.222-.553.222-.467 0-1.117.562-1.109.96.003.144.189.022.415-.271.258-.336.565-.496.829-.432.229.057.593-.078.807-.299.307-.319.322-.402.068-.402-.176 0-.382.1-.457.222m-58.654.548c.237.18.631.326.876.325.308-.001.214-.102-.303-.326-.949-.412-1.119-.412-.573.001m11.098-.104c-.075.123-.406.236-.735.253-.455.023-.489.052-.142.121.25.049.75-.064 1.111-.252.406-.211.512-.342.279-.343-.206 0-.437.099-.513.221m36.667-.084c.244.067.545.25.669.406.143.181.504.239 1 .161l.775-.123-.778-.168c-1.129-.243-2.184-.418-1.666-.276m-39.667.751-1 .155 1.043.034c.573.018 1.104-.067 1.179-.189.076-.122.057-.207-.042-.189-.099.019-.63.103-1.18.189m42.515-.039c.206.039.374.139.374.222 0 .241 4.366.173 4.595-.072.137-.147-.728-.222-2.568-.222-1.526 0-2.606.032-2.401.072m-48.015.192c.214.056.564.056.778 0s.039-.101-.389-.101-.603.045-.389.101m2.222.228c.336.051.886.051 1.223 0 .336-.051.061-.092-.612-.092-.672 0-.947.041-.611.092"}))))},21368:(c,s,m)=>{m.d(s,{A:()=>t});var l,a=m(96540);function e(){return e=Object.assign?Object.assign.bind():function(c){for(var s=1;sa.createElement("svg",e({xmlns:"http://www.w3.org/2000/svg",width:400,height:384.444,viewBox:"0 0 400 384.444","aria-labelledby":s},m),c?a.createElement("title",{id:s},c):null,l||(l=a.createElement("g",{fillRule:"evenodd"},a.createElement("path",{fill:"#f2ece3",d:"m156.346 123.076-87.308.193-.097 65.536c-.067 45.202.028 65.687.305 66.022.255.306 1.719.533 3.985.617 3.501.13 3.605.161 4.632 1.383.745.886 1.379 1.25 2.177 1.25.783 0 1.463-.379 2.242-1.25l1.116-1.25h8.891l1.141 1.25c1.576 1.725 2.954 1.685 4.4-.128l1.1-1.379 4.361.129c4.328.127 4.37.137 5.649 1.378 1.738 1.685 2.972 1.649 4.328-.129l1.052-1.379 4.107.129c3.967.125 4.16.171 5.684 1.379 2.063 1.636 3.553 1.668 4.48.098 1.302-2.202 8.697-2.268 11.167-.098 1.956 1.719 3.37 1.688 4.473-.096l.832-1.346h3.977c3.611 0 4.078.083 5.065.904 2.462 2.048 3.797 2.095 5.585.196l1.036-1.1 34.733.006c19.103.003 34.91.133 35.127.288.216.155.696.759 1.066 1.34.927 1.456 2.384 1.391 4.303-.192 1.477-1.218 1.623-1.253 5.761-1.383 2.654-.083 4.351-.299 4.528-.577.441-.693.349-13.277-.104-14.123-.386-.721-1.02-.744-20.531-.744h-20.134l-1.584-1.584-1.583-1.583v-90.914l.969-1.325c1.767-2.415.509-2.286 22.36-2.286 19.484 0 20.117-.023 20.503-.744.591-1.105.534-17.813-.063-18.41-.254-.254-.903-.419-1.442-.367-.54.052-40.27.182-88.289.289m13.134 54.45c2.607 2.136 2.067 4.781-1.093 5.354-.699.127-18.204.18-38.899.118-42.76-.129-38.978.197-38.599-3.326.389-3.623-1.82-3.433 40.418-3.479l36.498-.039zm-.716 12.738c2.546 1.581 3.124 3.718 1.376 5.093-1.425 1.121-77.435 1.276-78.667.16-1.352-1.223-.591-4.826 1.153-5.465 2.046-.749 74.916-.547 76.138.212m75.316 3.147c-1.646.359-2.186 1.446-1.133 2.278.458.362 1.216 1.486 1.684 2.499 1.017 2.199 1.06 2.177 1.539-.796.364-2.26.027-4.377-.68-4.27-.164.025-.798.155-1.41.289m-73.846 11.403c1.39 1.391 1.155 3.144-.579 4.308l-1.307.878H92.364l-.798-1.013c-.945-1.202-1.032-3.095-.198-4.286l.599-.855h77.299z"}),a.createElement("path",{fill:"#3c3e48",d:"M167.692.566c0 .466-.937.585-5.288.673l-5.289.107-.121 1.058-.122 1.058H152.5c-4.527 0-5.535.435-4.581 1.979.177.285.109.343-.188.16-1.182-.73-8.498.219-8.727 1.132-.234.929-2.269 1.525-3.823 1.118-1.2-.314-2.873.473-2.873 1.351 0 .655-.305.776-2.212.875-2.148.112-2.209.145-2.139 1.173.071 1.044.042 1.058-2.308 1.096-4.388.069-4.304.046-4.288 1.212l.015 1.057H52.308v51.154h-1.154c-.945 0-1.154.159-1.154.877 0 .622-.336 1.005-1.154 1.313-.746.282-1.154.704-1.154 1.197 0 .491-.341.846-.961 1.002-.685.172-.962.502-.962 1.147 0 2.226-.457 3.31-1.394 3.31-.759 0-.913.196-.913 1.154 0 1.026-.129 1.154-1.154 1.154-1.142 0-1.154.021-1.154 2.115s-.012 2.116-1.154 2.116c-1.02 0-1.154.131-1.154 1.128 0 .945-.172 1.148-1.058 1.25-1.01.116-1.057.215-1.057 2.237 0 2.078-.019 2.114-1.058 2.005-.941-.099-1.058.015-1.058 1.032 0 .961-.168 1.162-1.057 1.265-1.002.115-1.064.239-1.173 2.333-.113 2.157-.143 2.211-1.231 2.211s-1.118.054-1.231 2.212c-.108 2.072-.176 2.211-1.077 2.211-.692 0-.972.216-1.001.77-.021.423-.064 1.418-.096 2.211-.046 1.173-.202 1.443-.835 1.443-.898 0-1.529 1.333-1.529 3.228 0 1.055-.139 1.251-.866 1.225-.788-.028-.875.168-.981 2.181-.112 2.167-.138 2.212-1.25 2.212-1.128 0-1.134.011-1.134 2.282 0 2.204-.037 2.286-1.058 2.404-1.047.12-1.059.152-1.169 3.27-.11 3.107-.125 3.151-1.154 3.27-1.002.115-1.037.196-.914 2.101.125 1.939.102 1.988-1.058 2.243l-1.186.26v8.785h-2.307v6.487l-1.058.122-1.058.122-.106 5.456-.107 5.456-1.047.121-1.047.121.004 6.634.004 6.635H5.888l-.25 4.904c-.323 6.325-.324 30.003-.002 36.319.24 4.704.281 4.885 1.153 5.103.859.216.905.393.934 3.585.109 11.675.152 12.012 1.53 12.012.684 0 .747.291.747 3.436v3.436l-1.058.122c-.76.087-1.057.337-1.057.891 0 .503-.321.835-.928.961-.592.123-1.079.612-1.346 1.353-.308.852-.648 1.147-1.284 1.11-.708-.041-.865.151-.865 1.051 0 .967-.141 1.102-1.154 1.102-1.026 0-1.154.128-1.154 1.153q0 1.155-.577 1.154c-.443 0-.577.492-.577 2.116V250h2.692c2.596 0 2.693-.034 2.693-.936 0-.735.227-.962 1.057-1.058.824-.095 1.084-.35 1.177-1.156.093-.799.355-1.061 1.154-1.154.8-.092 1.062-.354 1.154-1.153.092-.8.355-1.062 1.154-1.154.801-.093 1.061-.355 1.154-1.158.111-.962.268-1.047 2.116-1.154 1.857-.107 2.004-.189 2.117-1.173.102-.886.305-1.058 1.25-1.058.937 0 1.128-.157 1.128-.931 0-.722.26-.988 1.154-1.184.884-.194 1.154-.466 1.154-1.159 0-.702.238-.933 1.058-1.027.83-.096 1.083-.349 1.179-1.18.096-.83.322-1.057 1.058-1.057.783 0 .936-.188.936-1.154 0-1.026.128-1.154 1.153-1.154 1.026 0 1.154-.128 1.154-1.154 0-1.139.026-1.154 2.074-1.154 1.866 0 2.097-.092 2.304-.919.14-.555.611-1.014 1.19-1.159a1.64 1.64 0 0 0 1.199-1.197c.172-.684.501-.955 1.16-.955.765 0 .919-.194.919-1.154 0-1.026.129-1.154 1.154-1.154 1.026 0 1.154-.128 1.154-1.154s.128-1.154 1.154-1.154c.966 0 1.154-.152 1.154-.936 0-.735.227-.962 1.058-1.058.83-.095 1.083-.348 1.179-1.179.107-.929.285-1.058 1.468-1.058 1.722 0 2.833-.598 2.833-1.526 0-.511.318-.767 1.058-.852.819-.094 1.084-.351 1.175-1.139.093-.795.365-1.053 1.25-1.183l1.133-.166v47.174h-8.846v.936c0 .735-.227.962-1.058 1.058-.884.101-1.078.329-1.179 1.382-.107 1.113-.242 1.248-1.154 1.154l-1.033-.107v10.769l1.058.122c.886.102 1.058.305 1.058 1.25 0 .997.134 1.128 1.154 1.128.959 0 1.154.155 1.154.917 0 1.429-3.175 1.38 90.865 1.386l89.135.005v.914c0 .707-.261.965-1.154 1.144-.917.183-1.154.43-1.154 1.202 0 .585-.229.99-.577 1.019-.317.026-.793.07-1.058.096-.264.027-.534.514-.6 1.083-.092.799-.354 1.061-1.154 1.153-.87.101-1.017.284-.927 1.158.105 1.009.046 1.041-2.115 1.154-2.093.109-2.23.176-2.342 1.15-.093.799-.355 1.061-1.154 1.154-.715.082-1.071.373-1.152.941-.081.567-.48.894-1.292 1.056-1.026.205-1.144.357-.933 1.198.217.864.125.963-.889.963-.944 0-1.173.191-1.384 1.154-.197.894-.463 1.153-1.184 1.153-.778 0-.931.19-.931 1.154 0 1.143-.021 1.154-2.125 1.154-2.054 0-2.133.039-2.356 1.154-.179.893-.437 1.154-1.144 1.154-.852 0-1.044.325-1.031 1.741.002.218-.447.391-.998.385-.809-.009-1.024.192-1.122 1.047-.102.886-.305 1.058-1.25 1.058-.997 0-1.128.134-1.128 1.153 0 1.026-.129 1.154-1.154 1.154-1.026 0-1.154.128-1.154 1.154 0 1.016-.133 1.154-1.111 1.154-.642 0-1.104.203-1.093.481.057 1.543-.113 1.705-1.814 1.731-2.024.03-2.52.276-2.52 1.247 0 .5-.324.758-1.058.842-.824.095-1.084.35-1.177 1.156-.093.8-.355 1.062-1.154 1.154-.8.093-1.062.355-1.154 1.154-.092.8-.354 1.062-1.154 1.154-.865.1-1.022.293-.962 1.177.064.925-.066 1.058-1.032 1.058-.919 0-1.125.177-1.226 1.057-.103.892-.288 1.046-1.18.98-.932-.069-1.057.056-1.057 1.058 0 1.079-.082 1.136-1.635 1.141-1.911.007-2.395.259-2.762 1.437-.183.586-.572.865-1.206.865-.783 0-.936.188-.936 1.154 0 1.026-.128 1.154-1.154 1.154-.966 0-1.153.152-1.153.936 0 .735-.227.962-1.058 1.058-.831.095-1.084.348-1.18 1.179-.066.582-.369 1.079-.673 1.106-.303.026-.767.069-1.032.096-.264.026-.534.513-.6 1.082-.092.8-.354 1.062-1.154 1.154-.815.094-1.034.324-1.034 1.081 0 .901-.14.969-2.212 1.077-2.154.112-2.211.144-2.211 1.225 0 .923-.177 1.129-1.056 1.23-.771.089-1.108.382-1.25 1.084-.145.717-.438.961-1.156.961-.81 0-.95.167-.889 1.058.063.924-.066 1.058-1.027 1.058-.909 0-1.144.2-1.353 1.153-.197.895-.463 1.154-1.184 1.154-.778 0-.931.19-.931 1.154 0 1.143-.021 1.154-2.125 1.154-2.054 0-2.133.039-2.356 1.154-.179.893-.437 1.154-1.144 1.154-.852 0-1.044.325-1.031 1.741.002.218-.447.391-.998.385-.809-.009-1.024.192-1.122 1.047-.102.886-.305 1.057-1.25 1.057-.997 0-1.128.134-1.128 1.154 0 1.026-.129 1.154-1.154 1.154-1.026 0-1.154.128-1.154 1.154 0 1.023-.13 1.154-1.142 1.154-.751 0-1.081.164-.965.481.326.889-.486 1.536-2.102 1.672-1.956.166-2.329.376-2.329 1.305 0 .501-.324.759-1.058.843-.824.095-1.084.35-1.177 1.156-.093.8-.355 1.062-1.154 1.154-.8.092-1.062.355-1.154 1.154s-.354 1.061-1.154 1.154c-.777.09-1.028.326-1.007.95.019.614-.257.888-1.058 1.048-.89.178-1.085.417-1.085 1.33 0 1.011-.106 1.101-1.153.979-1.05-.122-1.154-.033-1.154.992 0 1.087-.07 1.13-2.02 1.242-2.356.136-2.943 1.268-2.43 4.687l.271 1.807 2.955-.112c2.682-.101 2.965-.187 3.072-.933.079-.56.477-.894 1.25-1.048.885-.177 1.132-.433 1.132-1.172 0-.746.224-.972 1.058-1.068.831-.095 1.084-.348 1.18-1.179.101-.886.305-1.058 1.25-1.058.991 0 1.128-.136 1.128-1.128 0-.945.172-1.148 1.058-1.25.83-.096 1.083-.349 1.179-1.179.116-1.007.221-1.058 2.17-1.058 2.113 0 2.749.485 2.27 1.731-.181.473.195.577 2.102.577 2.249 0 2.328.034 2.445 1.057.121 1.048.151 1.059 3.295 1.17 2.73.096 3.173.206 3.173.788 0 1.348.803 1.6 5.103 1.6 4.087 0 4.174.018 3.92.817-.392 1.237.373 1.478 4.7 1.485 3.766.006 3.921.039 4.039.871.119.842.276.871 5.7 1.058l5.577.192v1.923l11.057.102c9.476.088 11.058.184 11.058.673s1.28.571 8.846.571 8.846-.082 8.846-.571 1.582-.585 11.058-.673l11.058-.102.121-1.048.12-1.049 6.418-.105c6.326-.104 6.419-.118 6.541-.971.115-.811.307-.865 3.076-.869 4.465-.007 5.735-.3 6.008-1.388.215-.854.409-.916 2.884-.916 3.269 0 3.87-.215 3.87-1.387 0-.882.111-.921 2.661-.921 3.277 0 3.878-.215 3.878-1.387 0-.894.086-.92 3.097-.92 3.095 0 3.097-.001 3.499-1.154.38-1.09.517-1.154 2.48-1.154 1.948 0 2.077-.059 2.077-.942 0-.878.153-.951 2.212-1.058 2.094-.109 2.218-.172 2.333-1.173.116-1.009.218-1.058 2.212-1.058 2.065 0 2.09-.013 2.09-1.154v-1.153h2.307c2.299 0 2.308-.005 2.308-1.135 0-1.112.045-1.137 2.212-1.25 1.959-.102 2.225-.214 2.334-.981.103-.726.361-.865 1.603-.865 2.069 0 2.697-.323 2.697-1.388 0-.766.193-.92 1.154-.92 1.026 0 1.154-.128 1.154-1.154 0-1.142.021-1.154 2.115-1.154s2.116-.011 2.116-1.153c0-1.122.051-1.154 1.846-1.154 1.938 0 2.769-.477 2.769-1.59 0-.442.357-.708 1.058-.789.747-.086 1.093-.368 1.177-.963.084-.59.43-.878 1.154-.962.806-.093 1.061-.353 1.156-1.177.107-.929.285-1.058 1.467-1.058 1.723 0 2.834-.598 2.834-1.526 0-.511.318-.767 1.058-.852.831-.096 1.084-.349 1.179-1.179.102-.886.305-1.058 1.25-1.058.947 0 1.129-.155 1.129-.962 0-.769.192-.961.961-.961.812 0 .962-.18.962-1.154 0-1.026.128-1.154 1.153-1.154 1.026 0 1.154-.128 1.154-1.154 0-1.1.076-1.154 1.635-1.16 1.902-.006 2.395-.259 2.755-1.412.144-.462.636-.895 1.093-.961.515-.075.917-.482 1.054-1.068a1.55 1.55 0 0 1 1.156-1.168 1.55 1.55 0 0 0 1.153-1.154 1.54 1.54 0 0 1 1.168-1.155c.578-.136.994-.54 1.066-1.036.071-.486.494-.908 1.052-1.048a1.64 1.64 0 0 0 1.173-1.19c.147-.583.515-.955.945-.955.928 0 1.125-.378 1.398-2.684.202-1.709.333-1.932 1.137-1.932.712 0 .908-.207.908-.961 0-.812.179-.962 1.153-.962 1.026 0 1.154-.128 1.154-1.154s.129-1.154 1.154-1.154c1.026 0 1.154-.128 1.154-1.153 0-.978.149-1.154.971-1.154.768 0 1.019-.238 1.198-1.133.154-.772.488-1.17 1.048-1.25.663-.095.891-.506 1.18-2.137.311-1.751.477-2.019 1.25-2.019.73 0 .891-.205.891-1.128 0-.945.172-1.148 1.058-1.25 1.001-.115 1.064-.24 1.173-2.333.113-2.167.139-2.212 1.25-2.212.954 0 1.135-.153 1.135-.961 0-.577.22-.962.549-.962 1.051 0 1.759-1.172 1.759-2.912 0-1.56.08-1.703.961-1.703.812 0 .962-.18.962-1.154 0-1.026.128-1.154 1.153-1.154 1.139 0 1.154-.027 1.154-2.067 0-1.99.044-2.076 1.154-2.298 1.113-.223 1.154-.306 1.154-2.331 0-2.004.048-2.105 1.058-2.221.983-.113 1.065-.261 1.172-2.096.107-1.845.19-1.99 1.25-2.202 1.091-.218 1.135-.309 1.135-2.326 0-1.883.089-2.11.866-2.221.751-.106.88-.384.98-2.097.107-1.845.19-1.99 1.25-2.202l1.135-.227v-6.558h2.308v-2.308c0-2.171.054-2.308.911-2.308 1.014 0 1.384-1.246 1.392-4.684.004-1.573.114-1.816.87-1.923.831-.118.87-.294.974-4.45l.109-4.327h2.282v-8.795l1.058-.122 1.058-.122.105-6.61.105-6.609 1.049-.121 1.048-.121.106-26.731c.116-29.056.142-28.461-1.267-28.461H390v-12.76l-1.154-.435c-1.709-.645-1.787-4.374-.096-4.568.824-.095 1.084-.351 1.177-1.156.092-.8.355-1.062 1.154-1.154.806-.093 1.061-.353 1.156-1.177.109-.95.273-1.058 1.603-1.058 2.059 0 2.698-.323 2.698-1.362 0-.69.242-.923 1.058-1.016.831-.096 1.084-.349 1.18-1.18.069-.605.357-1.058.673-1.058.436 0 .551-.69.551-3.297v-3.298l-1.635.146c-1.504.135-1.628.229-1.562 1.183.068.977-.022 1.036-1.603 1.036-2.256 0-2.892.299-2.892 1.361 0 .691-.242.923-1.058 1.017-.824.095-1.084.35-1.177 1.156-.092.8-.355 1.062-1.154 1.154-.81.093-1.038.328-1.05 1.081-.013.801-.181.944-1.008.859-.83-.087-1.031.087-1.225 1.057-.185.924-.431 1.161-1.203 1.161-.823 0-.971.176-.971 1.154 0 1.025-.129 1.154-1.154 1.154-1.021 0-1.154.13-1.154 1.133 0 1.097-.066 1.138-2.019 1.25-1.771.102-2.035.225-2.145.997-.088.622-.455.947-1.25 1.106-.934.187-1.125.415-1.125 1.345 0 .993-.12 1.108-1.057 1.01-.901-.094-1.076.046-1.18.947-.102.886-.305 1.058-1.25 1.058-.997 0-1.128.134-1.128 1.154 0 1.007-.137 1.153-1.076 1.153h-1.075l-.104 4.451-.103 4.452 1.083-.125c.851-.097 1.108-.345 1.202-1.158.092-.8.355-1.062 1.154-1.154.806-.093 1.061-.353 1.156-1.177.102-.886.305-1.058 1.25-1.058.947 0 1.128-.154 1.128-.961 0-.77.193-.962.962-.962.812 0 .961-.179.961-1.154 0-1.025.129-1.154 1.154-1.154 1.026 0 1.154-.128 1.154-1.153 0-1.143.022-1.154 2.116-1.154 1.729 0 2.128-.123 2.189-.673.041-.371.171 1.057.289 3.173.201 3.62.265 3.853 1.079 3.969.822.116.866.292.867 3.461.004 7.545.445 11.993 1.189 11.993.378 0 .813.203.967.452.617.998.388 35.59-.234 35.443-1.444-.34-1.596.335-1.821 8.089l-.219 7.554h-.903c-.895 0-.903.039-.903 4.398v4.397l-1.058.122-1.058.122-.108 4.302-.109 4.303-1.045.12c-1.032.119-1.047.162-1.157 3.256-.103 2.924-.171 3.15-1.011 3.361-1.137.285-1.344 1.092-1.09 4.249l.202 2.524h-1.206c-1.204 0-1.207.004-1.207 2.09 0 1.994-.048 2.095-1.057 2.211-1.054.122-1.058.133-1.169 3.488l-.111 3.365h-1.139c-1.122 0-1.139.03-1.139 2.09 0 1.994-.049 2.095-1.058 2.211-1.017.117-1.057.206-1.054 2.334.004 2.146-.027 2.211-1.034 2.211-.947 0-1.059.159-1.282 1.827-.357 2.662-.466 2.874-1.339 2.597-.655-.208-.771-.071-.771.909 0 .973-.166 1.174-1.058 1.276-1 .115-1.064.242-1.172 2.31-.108 2.057-.177 2.195-1.154 2.307-.963.111-1.048.267-1.155 2.116-.107 1.848-.192 2.004-1.154 2.115-.869.1-1.026.293-.966 1.178.064.93-.064 1.057-1.058 1.057-1.107 0-1.13.041-1.13 2.031 0 1.904-.072 2.059-1.153 2.467-.863.326-1.154.681-1.154 1.407 0 .82-.164.96-1.058.899-.89-.061-1.077.095-1.179.985-.096.828-.324 1.058-1.051 1.058-.917 0-1.4.882-1.262 2.307.169 1.756-.079 2.308-1.037 2.308-.757 0-1.019.238-1.188 1.084-.16.801-.434 1.078-1.048 1.058-.629-.02-.861.23-.953 1.031-.102.886-.305 1.058-1.25 1.058-.62 0-1.108.13-1.083.288.213 1.344-.122 1.977-1.103 2.09-.831.096-1.084.349-1.179 1.179-.095.82-.326 1.058-1.027 1.058-.694 0-.965.27-1.159 1.154-.197.894-.463 1.154-1.185 1.154-.723 0-.931.203-.931.913 0 .707-.26.966-1.153 1.144-.907.182-1.154.434-1.154 1.177 0 .745-.224.971-1.058 1.067-.831.096-1.084.349-1.179 1.18-.096.834-.322 1.057-1.068 1.057-.743 0-.995.247-1.176 1.154-.179.893-.437 1.154-1.144 1.154-.721 0-.914.205-.914.971 0 .767-.237 1.019-1.132 1.198-.866.173-1.161.465-1.25 1.24-.092.794-.327 1.014-1.079 1.014-.763 0-.987.218-1.084 1.058-.101.886-.305 1.057-1.25 1.057-.991 0-1.128.137-1.128 1.129 0 .945-.172 1.148-1.058 1.25-.9.103-1.041.278-.947 1.179.11 1.049.093 1.058-2.211 1.058-2.313 0-2.322.004-2.322 1.13 0 .994-.128 1.121-1.058 1.058-.884-.061-1.077.097-1.177.962-.091.787-.358 1.062-1.118 1.153-.72.087-1.038.382-1.139 1.058-.183 1.216-.051 1.147-2.358 1.229-1.921.068-1.996.112-1.996 1.163 0 .958-.143 1.093-1.154 1.093-1.018 0-1.154.132-1.154 1.118 0 .926-.131 1.083-.765.918-1.663-.435-3.48.245-3.709 1.389-.193.968-.355 1.066-1.598.968-1.712-.136-2.774.396-2.774 1.39 0 .583-.264.755-1.154.755-1.026 0-1.154.129-1.154 1.154 0 1.142-.021 1.154-2.115 1.154s-2.116.012-2.116 1.154v1.154h-2.307c-2.178 0-2.308.052-2.308.92 0 1.016-1.384 1.611-2.744 1.179-.918-.292-1.872.426-1.872 1.409 0 .634-.311.723-2.525.723-2.852 0-4.013.448-4.013 1.552 0 .659-.269.755-2.115.755-2.094 0-2.116.012-2.116 1.154v1.154h-3.262c-3.106 0-3.272.043-3.489.907-.207.823-.497.931-3.118 1.152-3.353.284-3.592.386-3.592 1.538 0 .827-.12.856-3.27.781l-3.269-.077v2.237h-4.968c-5.659 0-6.186.118-6.186 1.379v.911l-6.634.105-6.635.105.015 1.058.015 1.058H176.59l-.122-1.058-.122-1.058-6.414-.105-6.413-.105-.252-1.145-.251-1.145h-8.785v-.961c0-.634-.23-.984-.673-1.029-.65-.064-3.743-.191-6.731-.276-1.248-.036-1.442-.164-1.442-.951 0-.971-1.545-1.398-5.054-1.398-1.327 0-1.485-.102-1.485-.962 0-.949-.041-.961-3.225-.961h-3.226l-.169-1.154c-.327-2.225.067-3.407 1.18-3.536.788-.091 1.045-.356 1.139-1.175.095-.831.322-1.058 1.057-1.058.742 0 .936-.199.936-.962 0-.812.18-.961 1.154-.961 1.026 0 1.154-.128 1.154-1.154 0-.958.155-1.154.914-1.154 2.207 0 3.317-.458 3.317-1.369 0-.682.244-.916 1.058-1.009.83-.096 1.083-.349 1.179-1.18.102-.885.305-1.057 1.25-1.057.997 0 1.128-.134 1.128-1.154 0-1.026.129-1.154 1.154-1.154.966 0 1.154-.152 1.154-.936 0-.735.227-.962 1.058-1.058.824-.095 1.084-.35 1.177-1.156.092-.799.354-1.061 1.154-1.154.806-.093 1.061-.353 1.156-1.177.111-.968.259-1.057 1.75-1.057 1.735 0 2.551-.509 2.551-1.59 0-.442.358-.708 1.058-.789.757-.087 1.092-.367 1.18-.987.09-.629.381-.865 1.068-.865.741 0 .994-.248 1.175-1.154.179-.893.437-1.154 1.144-1.154.759 0 .914-.196.914-1.154 0-1.025.128-1.154 1.153-1.154 1.026 0 1.154-.128 1.154-1.153 0-1.13.041-1.154 1.943-1.154 1.814 0 1.97-.077 2.346-1.154.295-.847.646-1.154 1.319-1.154.648 0 .984-.272 1.149-.928a1.64 1.64 0 0 1 1.161-1.161c.661-.166.928-.501.928-1.162 0-.727.23-.955 1.058-1.05.831-.096 1.084-.349 1.18-1.18.101-.886.305-1.057 1.25-1.057.997 0 1.128-.134 1.128-1.154 0-1.026.128-1.154 1.154-1.154 1.021 0 1.154-.131 1.154-1.134 0-1.096.066-1.137 2.019-1.25 1.739-.1 2.036-.232 2.139-.956.081-.573.479-.919 1.25-1.088.86-.189 1.13-.465 1.13-1.154 0-.702.238-.933 1.058-1.027.824-.095 1.084-.35 1.177-1.156.092-.8.354-1.062 1.154-1.154.806-.093 1.061-.353 1.156-1.177.095-.831.322-1.058 1.057-1.058.742 0 .936-.199.936-.962 0-.812.18-.961 1.154-.961 1.026 0 1.154-.128 1.154-1.154 0-1.044.119-1.154 1.25-1.159 2.15-.009 2.981-.388 2.981-1.36 0-.686.243-.919 1.058-1.013.83-.096 1.083-.349 1.179-1.179.102-.886.305-1.058 1.25-1.058.997 0 1.128-.134 1.128-1.154 0-1.026.129-1.154 1.154-1.154.966 0 1.154-.152 1.154-.936 0-.735.227-.962 1.058-1.058.83-.095 1.083-.348 1.179-1.179.102-.886.305-1.058 1.25-1.058.993 0 1.128-.136 1.128-1.133 0-1.097.067-1.138 2.02-1.25 1.871-.108 2.028-.192 2.138-1.151.093-.799.355-1.062 1.154-1.154.734-.085 1.07-.371 1.157-.985.09-.629.381-.865 1.068-.865.741 0 .994-.248 1.175-1.154.179-.893.437-1.154 1.144-1.154.759 0 .914-.195.914-1.154 0-1.025.128-1.153 1.153-1.153 1.026 0 1.154-.129 1.154-1.154 0-1.13.041-1.154 1.943-1.154 1.814 0 1.97-.077 2.346-1.154.295-.847.646-1.154 1.319-1.154.656 0 .984-.272 1.157-.961l.242-.962 7.17-.058c3.943-.031 6.694-.129 6.112-.217-.582-.089-1.074-.365-1.093-.616-.02-.25-.017-3.83.006-7.955.046-8.293.016-8.409-2.402-9.419-2.536-1.06-5.519-.788-6.22.567-.708 1.369-1.535 1.623-4.782 1.469-2.461-.118-2.746-.287-3.258-1.944-.196-.634-2.18-.673-34.572-.673h-34.364l-.642 1.346-.642 1.346h-6.159l-.869-1.341-.869-1.342-3.285-.004-3.286-.005-.368 1.25c-.635 2.155-6.451 2.081-7.738-.098-1.162-1.967-6.203-1.546-7.634.638-.524.8-.885.902-3.178.897-3.403-.007-4.012-.205-4.786-1.554-.874-1.522-7.225-1.46-7.225.071 0 2.249-6.371 2.013-8.193-.304-1.213-1.541-4.679-1.305-6.535.446-1.811 1.709-6.282 2.037-7.332.539-1.656-2.364-6.266-2.664-8.271-.539-1.675 1.776-7.361 2.046-7.361.349 0-.836-2.569-1.695-5.067-1.695-2.579 0-5.203-1.186-5.529-2.5-.105-.423-.144-30.447-.086-66.72l.105-65.95 1.731-.664c1.62-.62 7.409-.664 90.266-.684 56.494-.013 88.618-.155 88.764-.392.127-.204-.049-1.331-.39-2.503-.559-1.923-.607-7.133-.495-53.09l.124-50.959H138.595l.169-1.153.169-1.154h6.452v-2.283l4.31-.109c4.243-.107 4.314-.123 4.536-1.07s.292-.963 4.548-1.07l4.322-.109.227-1.133.227-1.133 7.549-.105c7.501-.103 7.551-.109 7.673-.969l.123-.865h39.863l.241.961.241.962h15.37v2.307h8.795l.122 1.058.122 1.058 4.302.108 4.303.109.12 1.045c.12 1.033.159 1.047 3.294 1.157 3.059.108 3.173.145 3.173 1.032 0 .546.273.998.673 1.112 1.36.389 14.42.714 17.972.447l3.663-.274v-1.118c0-1.004.127-1.119 1.25-1.124 2.15-.009 2.981-.388 2.981-1.36 0-.686.243-.919 1.057-1.013.824-.094 1.084-.35 1.177-1.156.093-.799.355-1.061 1.154-1.154.8-.092 1.062-.354 1.154-1.153.092-.8.355-1.062 1.154-1.154 1.116-.129 1.524-1.381 1.057-3.243-.218-.867-.389-.915-3.269-.915h-3.039l-.249 1.135c-.232 1.057-.384 1.142-2.242 1.25-1.843.106-2.002.193-2.112 1.149-.093.8-.355 1.062-1.154 1.154-.8.092-1.062.354-1.154 1.156-.084.722-.289.972-.678.822-.735-.281-1.703.547-1.703 1.458 0 .514-.277.722-.961.722-.812 0-.962.179-.962 1.154 0 1.739-4.486 1.831-4.686.096-.115-1.001-.239-1.064-2.333-1.173-2.059-.107-2.211-.18-2.211-1.058 0-1.036.015-1.032-3.835-1.124-2.298-.055-2.505-.131-2.708-.996-.24-1.024-1.909-1.395-6.63-1.476-2.093-.036-2.212-.09-2.212-1v-.961h-8.795l-.122-1.058-.121-1.058-6.635-.105c-5.546-.088-6.635-.198-6.635-.673 0-.496-3.803-.568-30-.568-26.154 0-30 .073-30 .566m94.637 27.623c-1.748.563-6.311 4.901-7.296 6.935-.941 1.945-1.351 76.797-.438 80.184.534 1.985 3.76 5.927 6.199 7.577l1.706 1.153h80l1.346-.943c2.092-1.467 5.426-5.036 6.111-6.541 1.235-2.713 1.275-79.674.043-81.401-1.445-2.025-4.933-5.67-6.154-6.43l-1.346-.838-39.423-.062c-27.985-.043-39.807.063-40.748.366m82.118 27.974c1.928.733.708 5.119-2.307 8.292-.86.905-2.138 2.593-2.84 3.752-.703 1.159-1.62 2.417-2.038 2.796-.418.378-1.023 1.243-1.345 1.921-.322.679-1.365 1.987-2.317 2.905-1.523 1.471-2.91 3.01-7.993 8.867-.681.785-1.571 2.083-1.977 2.885s-1.277 2.15-1.935 2.996-1.477 2.058-1.818 2.692c-2.051 3.808-6.424 4.75-9.439 2.032-1.231-1.11-2.389-1.667-4.666-2.248-1.329-.339-2.264-.995-4.039-2.835-3.237-3.355-5.263-4.713-7.819-5.243-1.201-.249-2.525-.691-2.942-.983-1.736-1.214-5.706.348-9.434 3.713-1.163 1.05-2.277 1.909-2.475 1.91s-.717.321-1.154.713c-.436.393-1.919 1.301-3.294 2.02-1.375.718-2.586 1.398-2.692 1.511-3.95 4.211-9.384 6.909-11.564 5.743-1.656-.887-.25-5.814 2.301-8.064.6-.528 1.663-1.913 2.363-3.076s1.846-2.765 2.548-3.559c.701-.794 1.275-1.626 1.275-1.849s1.428-1.895 3.173-3.714c4.766-4.97 4.904-5.122 4.904-5.424 0-.154.938-1.287 2.084-2.518 1.146-1.232 2.306-2.786 2.578-3.453.272-.668 1.152-2.052 1.955-3.076.803-1.023 1.46-2.071 1.46-2.328 0-3.32 6.774-4.502 9.839-1.717.441.4 1.824 1.087 3.073 1.526 3.25 1.142 3.466 1.289 6.794 4.617 2.269 2.269 3.408 3.116 4.632 3.444.893.239 2.402.692 3.354 1.005.952.314 2.177.658 2.722.765 1.186.233 5.75-1.727 6.549-2.811.295-.401.97-1.025 1.499-1.385.528-.361 1.826-1.274 2.884-2.029s2.78-1.819 3.828-2.364c2.18-1.135 3.643-2.157 5.356-3.741 3.625-3.353 6.582-4.576 8.917-3.688M52.308 138.462v62.692h-1.154c-1.026 0-1.154.128-1.154 1.154 0 1.031-.125 1.154-1.18 1.154-.947 0-1.138.132-.97.673.348 1.118-.268 1.579-2.281 1.706-1.768.111-1.924.202-2.037 1.178-.102.886-.305 1.058-1.25 1.058-.947 0-1.128.154-1.128.961 0 .67-.21.962-.692.962-.887 0-1.616.729-1.616 1.615 0 .484-.292.693-.971.693-.767 0-1.019.237-1.198 1.133-.154.772-.488 1.17-1.048 1.25-.573.081-.858.436-.943 1.174-.102.886-.305 1.058-1.25 1.058-.98 0-1.128.142-1.128 1.08 0 1.038-.077 1.082-1.943 1.11-2.206.033-2.345.111-2.422 1.351-.043.689-.28.896-1.019.89-.766-.006-.987.208-1.084 1.05-.102.886-.305 1.058-1.25 1.058-.997 0-1.128.134-1.128 1.153 0 1.026-.129 1.154-1.154 1.154-1.026 0-1.154.128-1.154 1.154s-.128 1.154-1.154 1.154c-1.013 0-1.154.134-1.154 1.099 0 .953-.141 1.094-1.058 1.058-.932-.037-1.044.084-.947 1.016.1.946-.012 1.058-1.057 1.058h-1.169l-.004-5.096c-.005-6.792-.213-7.981-1.392-7.981h-.911l-.006-9.135c-.005-10.315-.076-10.865-1.385-10.865H10v-18.077h.92c1.344 0 1.388-.334 1.388-10.609v-9.391h.92c1.271 0 1.387-.52 1.387-6.185V150h1.923v-8.846h2.308v-6.477l1.154-.254 1.154-.253v-3.239c0-3.16.022-3.239.92-3.239 1.173 0 1.388-.601 1.388-3.877 0-2.582.028-2.661.961-2.661.919 0 .962-.103.962-2.308v-2.308h1.153c1.141 0 1.154-.024 1.154-2.089 0-1.994.049-2.096 1.058-2.212 1.001-.115 1.064-.24 1.173-2.333.106-2.03.189-2.212 1.017-2.212 1.048 0 1.368-.636 1.368-2.723 0-1.242.133-1.507.755-1.507.824 0 1.635-1.181 1.53-2.227-.188-1.875.024-2.389.984-2.389.909 0 .961-.115.961-2.115 0-2.094.012-2.116 1.154-2.116 1.02 0 1.154-.131 1.154-1.128 0-.945.172-1.148 1.058-1.25 1.001-.115 1.064-.24 1.173-2.333.113-2.167.138-2.212 1.25-2.212.94 0 1.135-.157 1.135-.92 0-.66.271-.987.961-1.161.879-.22.962-.421.962-2.349 0-2.086.012-2.108 1.153-2.108 1.026 0 1.154-.128 1.154-1.154s.129-1.154 1.154-1.154c1.026 0 1.154-.128 1.154-1.154 0-.974.15-1.154.962-1.154.528 0 .961-.173.961-.384s.087-.385.192-.385.193 28.212.193 62.693m153.077 52.692v45.769h41.538v-11.371c0-12.813-.009-12.86-2.417-12.859-5.098.002-11.859-.916-12.736-1.729-.49-.454-1.429-1.048-2.087-1.32-.658-.273-1.294-.805-1.414-1.182-.12-.378-.562-.777-.982-.887-.421-.11-.951-.734-1.179-1.387-.228-.654-.615-1.188-.861-1.188-.603 0-1.243-1.09-1.587-2.705-.156-.733-.507-1.593-.78-1.91-1.684-1.959-1.745-10.66-.081-11.591.315-.176.694-1.146.842-2.154.159-1.08.631-2.227 1.152-2.794.486-.529 1.098-1.632 1.36-2.452.272-.849.778-1.569 1.178-1.673.386-.101.809-.669.939-1.263q.237-1.078 1.176-1.314c.516-.13.939-.487.939-.795s.512-.825 1.138-1.149c.626-.323 1.57-1.02 2.098-1.548s1.39-.96 1.917-.96c.534 0 1.205-.354 1.518-.801.657-.938 2.693-1.484 5.577-1.497 1.451-.007 2.385-.243 3.173-.805l1.117-.795v-23.409h-41.538zM93.462 179.955c0 1.631-1.404 1.573 38.173 1.578l36.442.005v-2.692H93.462zm0 13.462c0 1.63-1.404 1.572 38.173 1.578l36.442.005v-2.692H93.462zm.48 12.222c-.264.107-.48.699-.48 1.316v1.122h74.615v-2.692l-36.827.03c-20.255.017-37.043.118-37.308.224"}),a.createElement("path",{fill:"#878287",d:"M339.615 59.895c-.528.096-1.221.397-1.538.667-.851.726-7.643 5.282-9.414 6.315-.841.49-3.091 2.059-5 3.486-6.882 5.143-7.387 5.289-11.369 3.284-1.478-.744-3.594-1.695-4.702-2.113-1.407-.53-2.913-1.617-4.987-3.6-2.439-2.331-3.525-3.064-6.063-4.086-1.7-.686-3.183-1.394-3.294-1.575-1.158-1.874-4.968-.898-6.566 1.68-.553.893-1.437 2.087-1.965 2.652-.527.566-1.501 1.885-2.165 2.931-1.807 2.851-4.706 6.446-7.974 9.887-1.606 1.692-3.447 3.856-4.089 4.808s-1.553 2.077-2.024 2.5c-.47.423-1.2 1.445-1.621 2.271s-1.442 2.356-2.267 3.4c-1.763 2.23-1.851 2.839-.503 3.454 1.142.52.839.667 6.582-3.201a311 311 0 0 1 6.075-3.994c1.269-.801 3.086-2.102 4.038-2.892 5.511-4.572 8.358-5.553 11.283-3.887 1.093.622 3.154 1.596 4.58 2.164 1.982.79 3.355 1.741 5.821 4.031 1.775 1.648 3.636 3.111 4.137 3.25.5.14 2.417.952 4.259 1.806 4.27 1.979 5.881 1.641 7.614-1.598.246-.459 1.006-1.468 1.689-2.242.683-.775 1.603-2.038 2.045-2.808 1.156-2.014 4.419-6.063 8.188-10.159 3.575-3.886 5.722-6.564 7.502-9.357a53 53 0 0 1 2.34-3.334c.65-.836 1.306-1.732 1.457-1.992.291-.502-.367-2.064-.832-1.975-.151.029-.708.131-1.237.227m-227.18 62.317c23.444.054 61.694.054 85 0 23.305-.055 4.123-.1-42.627-.1s-65.818.045-42.373.1m131.983-.003c.844.086 1.752.337 2.019.559.68.564.702 19.17.025 19.847-.348.348-5.472.463-20.674.467l-20.211.004-.865 1.336-.866 1.336v91.416l.89.836.891.836h40.546l.375.987c.206.542.375 4.242.375 8.222 0 8.726.255 8.29-4.769 8.144l-3.55-.104-1.668 1.394c-2.224 1.858-4.762 1.863-5.784.011l-.638-1.154h-69.927l-.506 1.056c-.945 1.973-4.468 1.919-6.352-.098-1.666-1.782-8.098-1.644-9.112.196-1.067 1.938-3.957 1.851-6.085-.183-1.169-1.117-1.354-1.163-4.655-1.163-3.568 0-4.115.211-5.047 1.953-.671 1.253-5.753.593-5.753-.747 0-1.8-7.719-1.684-9.334.14-1.601 1.808-3.574 1.882-5.333.201-2.271-2.171-8.519-2.226-10.191-.091-1.402 1.792-3.733 1.787-5.211-.01l-1.03-1.254h-3.809c-3.75 0-3.832.02-5.234 1.25-2.157 1.895-5.343 1.527-6.086-.702-.095-.286-1.521-.545-3.826-.695-2.225-.144-3.925-.446-4.31-.765-.587-.488-.636-5.598-.636-66.384v-65.856l.865-.417c.476-.229.643-.429.371-.443-.271-.015-.921.253-1.442.595l-.948.621v131.398l1.117.795c.89.634 1.702.795 3.994.795 2.843 0 2.903.022 4.98 1.731 1.382 1.138 2.471 1.731 3.178 1.731.708 0 1.797-.593 3.179-1.731 3.238-2.666 7.021-2.458 9.874.543 1.699 1.787 3.176 1.639 5.388-.543l1.756-1.731h2.815c2.524 0 2.912.102 3.742.986 2.665 2.837 5.3 3.2 6.817.938 1.51-2.253 7.049-2.897 8.314-.967 1.984 3.028 7.923 2.978 7.923-.067 0-1.257 6.566-1.266 7.568-.012 2.63 3.293 6.606 3.287 7.606-.012.45-1.483 6.767-1.306 7.854.22 1.988 2.792 5.623 2.963 7.325.345l.93-1.431h34.551c26.424 0 34.551.108 34.551.457 0 3.544 5.407 3.733 7.829.275.552-.789.808-.827 4.288-.645 5.113.267 4.806.852 4.806-9.152 0-11.114 2.952-9.781-21.654-9.781-15.133 0-20.23-.114-20.577-.461-.613-.613-.675-91.114-.063-92.256.385-.721 1.022-.744 20.747-.744h20.349l.599-.855c.78-1.114.905-20.223.137-20.991-.254-.254-1.249-.433-2.211-.397l-1.75.064zm-3.422 49.55c-2.5.916-5.733 2.529-6.994 3.489-.654.498-1.282.906-1.394.906-.826 0-5.685 5.863-5.685 6.86 0 .187-.428.971-.952 1.742-2.934 4.324-3.079 15.385-.243 18.492.397.435.842 1.187.989 1.671s.946 1.329 1.775 1.878 1.508 1.127 1.508 1.284.563.512 1.25.786 1.769.857 2.404 1.296c1.911 1.322 12.682 1.453 13.106.159.493-1.502.244-38.031-.264-38.642-.566-.683-3.538-.64-5.5.079m77.71 3.641c-3.349.569-5.043 2.92-5.363 7.446-.3 4.234-.282 4.222-6.63 4.315-6.657.097-6.893-.054-7.465-4.786-.724-5.984-1.666-6.798-7.864-6.798-6.326 0-9.167 2.22-9.846 7.696-.174 1.407-.376 2.601-.447 2.654-1.544 1.155-2.286 1.381-4.542 1.387-3.221.008-5.197 1.055-6.548 3.467l-.963 1.719-.113 15.381c-.138 18.903.14 20.087 5.072 21.551 2.862.85 62.228.848 65.09-.002 4.594-1.364 4.79-2.222 4.768-20.808-.024-20.123-.218-20.69-7.316-21.315-4.645-.408-4.791-.569-5.144-5.649-.296-4.255-1.572-5.624-5.662-6.076-4.22-.468-5.196-.493-7.027-.182m7.539 2.774c2.212 1.012 2.291 1.16 3.742 7.018.624 2.521 1.974 3.654 4.355 3.656 7.58.008 8.081 1.362 7.897 21.344-.187 20.313 3.767 18.27-35.352 18.27-21.128 0-30.105-.127-31.148-.439-2.226-.667-4.018-2.344-4.551-4.256-.695-2.499-.424-30.112.31-31.542.853-1.662 3.107-2.99 5.462-3.218 4.408-.428 4.447-.444 5.254-2.19.413-.894.857-2.183.988-2.866 1.426-7.464 12.747-8.958 13.917-1.836 1.035 6.299 1.643 6.731 9.471 6.731 7.571 0 8.41-.541 8.41-5.429 0-5.589 5.197-8.012 11.245-5.243m-234.308.262c-.538 1.005-.504 2.843.063 3.41.612.612 75.731.674 76.871.064.979-.524 1.004-2.709.041-3.581-1.185-1.073-76.4-.968-76.975.107m76.448.102c.683.683.581 2.872-.147 3.152-.801.307-74.321.293-75.47-.015-1.588-.425-1.05-2.951.694-3.259 2.756-.487 74.43-.37 74.923.122m-75.403 12.507c-1.977.299-2.058 3.972-.097 4.388 2.249.478 74.693.372 75.751-.11 1.315-.6 1.38-2.75.114-3.806-.814-.679-71.497-1.12-75.768-.472m75.403.955c.683.683.581 2.872-.147 3.151-.813.312-72.251.301-74.53-.011-2.112-.289-2.738-2.474-.92-3.205 1.403-.564 75.031-.5 75.597.065m78.14 1.436c.911 1.702.057 7.333-1.112 7.333-.477 0-1.38-1.371-1.773-2.692-.157-.529-.694-1.343-1.193-1.809-1.11-1.035-1.148-1.798-.139-2.806 1.05-1.05 3.66-1.066 4.217-.026m-154.58 11.729c-.833 1.005-.348 3.421.747 3.724 1.78.491 74.857.39 75.944-.105 1.27-.578 1.429-3.131.235-3.77-1.286-.689-76.351-.54-76.926.151m76.293.068c.728.28.83 2.469.147 3.152-.514.514-71.848.653-74.731.146-1.916-.337-2.621-2.925-.887-3.257 1.381-.264 74.786-.303 75.471-.041"}),a.createElement("path",{fill:"#5c5c5f",d:"M246.433 15.36c-.57 2.18-.283 101.468.299 103.399.336 1.115.506 2.197.378 2.403-.15.244-31.52.384-88.767.397-82.857.02-88.646.064-90.266.684l-1.731.664-.105 65.95c-.058 36.273-.019 66.297.086 66.72.326 1.314 2.95 2.5 5.529 2.5 2.498 0 5.067.859 5.067 1.695 0 1.697 5.686 1.427 7.361-.349 2.005-2.125 6.615-1.825 8.271.539 1.05 1.498 5.521 1.17 7.332-.539 1.856-1.751 5.322-1.987 6.535-.446 1.822 2.317 8.193 2.553 8.193.304 0-1.531 6.351-1.593 7.225-.071.774 1.349 1.383 1.547 4.786 1.554 2.293.005 2.654-.097 3.178-.897 1.431-2.184 6.472-2.605 7.634-.638 1.287 2.179 7.103 2.253 7.738.098l.368-1.25 3.286.005 3.285.004.869 1.342.869 1.341h6.159l.642-1.346.642-1.346h34.364c32.392 0 34.376.039 34.572.673.512 1.657.797 1.826 3.258 1.944 3.247.154 4.074-.1 4.782-1.469.701-1.355 3.684-1.627 6.22-.567 2.429 1.015 2.448 1.093 2.367 9.703-.04 4.281.059 7.916.22 8.077s27.408.336 60.549.39l60.257.097-.096-60.866c-.052-33.477-.095-92.502-.096-131.168l-.001-70.3-60.544.059c-56.506.056-60.556.103-60.715.71m97.413 13.363c1.221.76 4.709 4.405 6.154 6.43 1.232 1.727 1.192 78.688-.043 81.401-.685 1.505-4.019 5.074-6.111 6.541l-1.346.943h-80l-1.706-1.153c-2.439-1.65-5.665-5.592-6.199-7.577-.913-3.387-.503-78.239.438-80.184.985-2.034 5.548-6.372 7.296-6.935.941-.303 12.763-.409 40.748-.366l39.423.062zm-3.269 27.701c-1.663.664-3.156 1.678-5.047 3.427-1.713 1.584-3.176 2.606-5.356 3.741-1.048.545-2.77 1.609-3.828 2.364a235 235 0 0 1-2.884 2.029c-.529.36-1.204.984-1.499 1.385-.799 1.084-5.363 3.044-6.549 2.811-.545-.107-1.77-.451-2.722-.765a76 76 0 0 0-3.354-1.005c-1.224-.328-2.363-1.175-4.632-3.444-3.328-3.328-3.544-3.475-6.794-4.617-1.249-.439-2.632-1.126-3.073-1.526-3.065-2.785-9.839-1.603-9.839 1.717 0 .257-.657 1.305-1.46 2.328-.803 1.024-1.683 2.408-1.955 3.076-.272.667-1.432 2.221-2.578 3.453s-2.084 2.364-2.084 2.518c0 .302-.138.454-4.904 5.424-1.745 1.819-3.173 3.491-3.173 3.714s-.574 1.055-1.275 1.849c-.702.794-1.848 2.395-2.548 3.559-.7 1.163-1.763 2.548-2.363 3.076-2.551 2.25-3.957 7.177-2.301 8.064 2.18 1.166 7.614-1.532 11.564-5.743.106-.113 1.317-.793 2.692-1.511 1.375-.719 2.858-1.627 3.294-2.02.437-.392.956-.713 1.154-.713.198-.001 1.312-.86 2.475-1.91 3.728-3.365 7.698-4.927 9.434-3.713.417.292 1.741.734 2.942.983 2.556.53 4.582 1.888 7.819 5.243 1.775 1.84 2.71 2.496 4.039 2.835 2.277.581 3.435 1.138 4.666 2.248 3.015 2.718 7.388 1.776 9.439-2.032.341-.634 1.16-1.846 1.818-2.692s1.529-2.195 1.935-2.996 1.296-2.1 1.977-2.885c5.083-5.857 6.47-7.396 7.993-8.867.952-.918 1.995-2.226 2.317-2.905s.927-1.543 1.345-1.921 1.335-1.637 2.038-2.796 1.98-2.847 2.84-3.752c4.987-5.248 4.012-10.259-1.563-8.031m.966 3.969c.461.862.38 1.063-1.316 3.242a53 53 0 0 0-2.34 3.334c-1.78 2.793-3.927 5.471-7.502 9.357-3.769 4.096-7.032 8.145-8.188 10.159-.442.77-1.362 2.033-2.045 2.808s-1.443 1.783-1.689 2.242c-1.733 3.239-3.344 3.577-7.614 1.598-1.842-.854-3.759-1.666-4.259-1.806-.501-.139-2.362-1.602-4.137-3.25-2.466-2.29-3.839-3.241-5.821-4.031-1.426-.568-3.487-1.542-4.58-2.164-2.925-1.666-5.772-.685-11.283 3.887-.952.79-2.769 2.091-4.038 2.892a311 311 0 0 0-6.075 3.994c-5.743 3.868-5.44 3.721-6.582 3.201-1.348-.615-1.26-1.224.503-3.454.825-1.044 1.845-2.574 2.267-3.4s1.151-1.848 1.621-2.271c.471-.423 1.381-1.548 2.024-2.5.642-.952 2.483-3.116 4.089-4.808 3.268-3.441 6.167-7.036 7.974-9.887.664-1.046 1.638-2.365 2.165-2.931s1.412-1.759 1.965-2.652c1.598-2.578 5.408-3.554 6.566-1.68.111.181 1.594.889 3.294 1.575 2.538 1.022 3.624 1.755 6.063 4.086 2.074 1.983 3.58 3.07 4.987 3.6 1.108.418 3.224 1.369 4.702 2.113 3.982 2.005 4.487 1.859 11.369-3.284 1.909-1.427 4.159-2.996 5-3.486 1.771-1.033 8.563-5.589 9.414-6.315.317-.27 1.01-.571 1.538-.667.529-.096 1.086-.198 1.237-.227s.462.297.691.725m-94.736 61.978c.805.668.716 19.842-.098 21.005l-.599.855h-20.349c-19.725 0-20.362.023-20.747.744-.612 1.142-.55 91.643.063 92.256.347.347 5.444.461 20.577.461 24.606 0 21.654-1.333 21.654 9.781 0 10.004.307 9.419-4.806 9.152-3.48-.182-3.736-.144-4.288.645-2.422 3.458-7.829 3.269-7.829-.275 0-.349-8.127-.457-34.551-.457h-34.551l-.93 1.431c-1.702 2.618-5.337 2.447-7.325-.345-1.087-1.526-7.404-1.703-7.854-.22-1 3.299-4.976 3.305-7.606.012-1.002-1.254-7.568-1.245-7.568.012 0 3.045-5.939 3.095-7.923.067-1.265-1.93-6.804-1.286-8.314.967-1.517 2.262-4.152 1.899-6.817-.938-.83-.884-1.218-.986-3.742-.986h-2.815l-1.756 1.731c-2.212 2.182-3.689 2.33-5.388.543-2.853-3.001-6.636-3.209-9.874-.543C81.989 259.407 80.9 260 80.192 260s-1.796-.593-3.178-1.731c-2.077-1.709-2.137-1.731-4.98-1.731-2.292 0-3.104-.161-3.994-.795l-1.117-.795V123.55l.881-.578c.485-.317 1.221-.665 1.635-.772 1.625-.421 176.858-.253 177.368.171m-230.179 4.167c0 .741.079 1.044.176.674a3.2 3.2 0 0 0 0-1.347c-.097-.37-.176-.067-.176.673m230.295 30.551v11.705l-1.117.795c-.788.562-1.722.798-3.173.805-2.884.013-4.92.559-5.577 1.497-.313.447-.984.801-1.518.801-.527 0-1.389.432-1.917.96s-1.472 1.225-2.098 1.548c-.626.324-1.138.841-1.138 1.149s-.423.665-.939.795q-.939.236-1.176 1.314c-.13.594-.553 1.162-.939 1.263-.4.104-.906.824-1.178 1.673-.262.82-.874 1.923-1.36 2.452-.521.567-.993 1.714-1.152 2.794-.148 1.008-.527 1.978-.842 2.154-1.664.931-1.603 9.632.081 11.591.273.317.624 1.177.78 1.91.344 1.615.984 2.705 1.587 2.705.246 0 .633.534.861 1.188s.758 1.277 1.179 1.387c.42.11.862.509.982.887.12.377.756.909 1.414 1.182s1.597.866 2.087 1.32c.877.813 7.638 1.731 12.736 1.729 2.408-.001 2.417.046 2.417 12.859v11.371h-41.538v-91.538h41.538zm-.427 14.591c.508.611.757 37.14.264 38.642-.424 1.294-11.195 1.163-13.106-.159-.635-.439-1.716-1.022-2.404-1.296s-1.25-.628-1.25-.786c0-.157-.679-.736-1.508-1.284-.829-.549-1.628-1.394-1.775-1.878s-.592-1.236-.989-1.671c-2.836-3.107-2.691-14.168.243-18.492.524-.771.952-1.555.952-1.742 0-.997 4.859-6.86 5.685-6.86.112 0 .74-.408 1.394-.906 3.921-2.985 11.243-5.076 12.494-3.568m79.237 3.902c4.09.452 5.366 1.821 5.662 6.076.353 5.08.499 5.241 5.144 5.649 7.098.625 7.292 1.192 7.316 21.315.022 18.586-.174 19.444-4.768 20.808-2.862.85-62.228.852-65.09.002-4.932-1.464-5.21-2.648-5.072-21.551l.113-15.381.963-1.719c1.351-2.412 3.327-3.459 6.548-3.467 2.256-.006 2.998-.232 4.542-1.387.071-.053.273-1.247.447-2.654.679-5.476 3.52-7.696 9.846-7.696 6.198 0 7.14.814 7.864 6.798.572 4.732.808 4.883 7.465 4.786 6.348-.093 6.33-.081 6.63-4.315.32-4.526 2.014-6.877 5.363-7.446 1.831-.311 2.807-.286 7.027.182m62.056 1.149c.005.846.083 1.147.175.668.092-.478.089-1.17-.007-1.538-.097-.368-.172.024-.168.87m-294.327 1.685c-1.744.308-2.282 2.834-.694 3.259 1.149.308 74.669.322 75.47.015.728-.28.83-2.469.147-3.152-.493-.492-72.167-.609-74.923-.122m74.615 1.776v1.346l-36.442-.005c-39.577-.005-38.173.053-38.173-1.578v-1.109h74.615zm-75.289 11.743c-1.818.731-1.192 2.916.92 3.205 2.279.312 73.717.323 74.53.011.728-.279.83-2.468.147-3.151-.566-.565-74.194-.629-75.597-.065m75.289 1.719V195l-36.442-.005c-39.577-.006-38.173.052-38.173-1.578v-1.109h74.615zm-75.31 11.62c-1.734.332-1.029 2.92.887 3.257 2.883.507 74.217.368 74.731-.146.683-.683.581-2.872-.147-3.152-.685-.262-74.09-.223-75.471.041m75.31 1.457v1.346H93.462v-1.122c0-1.601-2.309-1.507 37.788-1.54l36.827-.03zm208.566 48.654c0 .952.075 1.341.167.865a5.5 5.5 0 0 0 0-1.731c-.092-.476-.167-.086-.167.866"}),a.createElement("path",{fill:"#9c9cac",d:"m68.942 122.777-.865.417v65.856c0 60.786.049 65.896.636 66.384.385.319 2.085.621 4.31.765 2.305.15 3.731.409 3.826.695.743 2.229 3.929 2.597 6.086.702 1.402-1.23 1.484-1.25 5.234-1.25h3.809l1.03 1.254c1.478 1.797 3.809 1.802 5.211.01 1.672-2.135 7.92-2.08 10.191.091 1.759 1.681 3.732 1.607 5.333-.201 1.615-1.824 9.334-1.94 9.334-.14 0 1.34 5.082 2 5.753.747.932-1.742 1.479-1.953 5.047-1.953 3.301 0 3.486.046 4.655 1.163 2.128 2.034 5.018 2.121 6.085.183 1.014-1.84 7.446-1.978 9.112-.196 1.884 2.017 5.407 2.071 6.352.098l.506-1.056h69.927l.638 1.154c1.022 1.852 3.56 1.847 5.784-.011l1.668-1.394 3.55.104c5.024.146 4.769.582 4.769-8.144 0-3.98-.169-7.68-.375-8.222l-.375-.987h-40.654l-.837-.89-.836-.89v-91.308l.866-1.336.865-1.336 20.211-.004c15.202-.004 20.326-.119 20.674-.467.333-.334.461-3.077.461-9.923s-.128-9.589-.461-9.923c-.632-.631-176.21-.623-177.52.008m177.135.377c.597.597.654 17.305.063 18.41-.386.721-1.019.744-20.503.744-21.851 0-20.593-.129-22.36 2.286l-.969 1.325v90.914l1.583 1.583 1.584 1.584h20.134c19.511 0 20.145.023 20.531.744.453.846.545 13.43.104 14.123-.177.278-1.874.494-4.528.577-4.138.13-4.284.165-5.761 1.383-1.919 1.583-3.376 1.648-4.303.192-.37-.581-.85-1.185-1.066-1.34s-16.024-.285-35.127-.288l-34.733-.006-1.036 1.1c-1.788 1.899-3.123 1.852-5.585-.196-.987-.821-1.454-.904-5.065-.904h-3.977l-.832 1.346c-1.103 1.784-2.517 1.815-4.473.096-2.47-2.17-9.865-2.104-11.167.098-.927 1.57-2.417 1.538-4.48-.098-1.524-1.208-1.717-1.254-5.684-1.379l-4.107-.129-1.052 1.379c-1.356 1.778-2.59 1.814-4.328.129-1.279-1.241-1.321-1.251-5.649-1.378l-4.361-.129-1.1 1.379c-1.446 1.813-2.824 1.853-4.4.128l-1.141-1.25h-8.891l-1.116 1.25c-.779.871-1.459 1.25-2.242 1.25-.798 0-1.432-.364-2.177-1.25-1.027-1.222-1.131-1.253-4.632-1.383-2.266-.084-3.73-.311-3.985-.617-.277-.335-.372-20.82-.305-66.022l.097-65.536 87.308-.193c48.019-.107 87.749-.237 88.289-.289.539-.052 1.188.113 1.442.367M93.515 176.538c-2.361.558-3.624 3.716-2.23 5.577.576.769 73.112 1.489 77.102.765 3.16-.573 3.7-3.218 1.093-5.354l-1.675-1.372-36.498.039c-20.075.022-37.081.177-37.792.345m225.331.794c-2.417 1.023-3.846 3.284-3.846 6.085 0 4.888-.839 5.429-8.41 5.429-7.828 0-8.436-.432-9.471-6.731-1.17-7.122-12.491-5.628-13.917 1.836-.131.683-.575 1.972-.988 2.866-.807 1.746-.846 1.762-5.254 2.19-2.355.228-4.609 1.556-5.462 3.218-.734 1.43-1.005 29.043-.31 31.542.533 1.912 2.325 3.589 4.551 4.256 1.043.312 10.02.439 31.148.439 39.119 0 35.165 2.043 35.352-18.27.184-19.982-.317-21.336-7.897-21.344-2.381-.002-3.731-1.135-4.355-3.656-1.451-5.858-1.53-6.006-3.742-7.018-2.294-1.051-5.929-1.465-7.399-.842m-149.934.997c.963.872.938 3.057-.041 3.581-1.14.61-76.259.548-76.871-.064-.567-.567-.601-2.405-.063-3.41.575-1.075 75.79-1.18 76.975-.107m-76.286 11.723c-1.744.639-2.505 4.242-1.153 5.465 1.232 1.116 77.242.961 78.667-.16 1.748-1.375 1.17-3.512-1.376-5.093-1.222-.759-74.092-.961-76.138-.212m76.124 1.465c1.266 1.056 1.201 3.206-.114 3.806-1.058.482-73.502.588-75.751.11-1.961-.416-1.88-4.089.097-4.388 4.271-.648 74.954-.207 75.768.472m73.558 1.945c-1.009 1.008-.971 1.771.139 2.806.499.466 1.036 1.28 1.193 1.809.828 2.783 1.906 3.321 2.726 1.358 1.934-4.628-1.034-8.997-4.058-5.973m3.858.61c.341.895-.063 5.337-.527 5.801-.085.086-.539-.672-1.008-1.685s-1.226-2.137-1.684-2.499c-1.364-1.077-.323-2.129 2.543-2.567.164-.025.468.403.676.95M91.368 204.701c-.834 1.191-.747 3.084.198 4.286l.798 1.013h75.984l1.307-.878c1.734-1.164 1.969-2.917.579-4.308l-.968-.968H91.967zm77.503.313c1.194.639 1.035 3.192-.235 3.77-1.087.495-74.164.596-75.944.105-1.095-.303-1.58-2.719-.747-3.724.575-.691 75.64-.84 76.926-.151"}))))},32282:(c,s,m)=>{m.d(s,{A:()=>r});var l,a,e,t=m(96540);function n(){return n=Object.assign?Object.assign.bind():function(c){for(var s=1;st.createElement("svg",n({xmlns:"http://www.w3.org/2000/svg",xmlSpace:"preserve",viewBox:"0 0 256 256","aria-labelledby":s},m),c?t.createElement("title",{id:s},c):null,l||(l=t.createElement("path",{d:"m82.8 206.6 21.6-9.8-45.2-45.2-9.8 21.6s-2 3.9 12.8 19.6c15.7 15.7 20.6 13.8 20.6 13.8"})),a||(a=t.createElement("path",{d:"m108.4 236.1-9.8-36.4 39.3-32.4v49.1zM20 147.6l36.3 9.8 32.4-39.3H39.6z"})),e||(e=t.createElement("path",{d:"M246 10s-35.4-1-70.7 16.7c-10.8 4.9-22.6 12.8-32.4 22.6-29.5 29.5-89.4 105.2-89.4 105.2s-2.9 8.8 17.7 29.5c20.6 20.6 29.5 17.7 29.5 17.7s76.6-60 106.1-88.4c9.8-9.8 17.7-21.6 23.6-32.4C247 45.4 246 10 246 10m-68.8 88.5c-10.8 0-19.6-8.8-19.6-19.6s8.8-19.6 19.6-19.6 19.6 8.8 19.6 19.6c0 10.7-8.8 19.6-19.6 19.6M74 216.4c-18.7 14.7-47.2 12.8-47.2 12.8s-2-28.5 12.8-47.2c-1-2-2-2.9-2.9-4.9-2 2-4.9 3.9-6.9 5.9-22.6 22.6-19.6 62.9-19.6 62.9s40.3 2.9 62.9-19.6c2-2 3.9-4.9 5.9-6.9-2.1-1-3-2-5-3"})))},56467:(c,s,m)=>{m.r(s),m.d(s,{default:()=>p});var l=m(34164),a=m(28774),e=m(44586),t=m(36882),n=m(51107);const r={features:"features_t9lD",featureSvg:"featureSvg_GfXr"};var i=m(74848);const h=[{title:"Craft Code Visually",Svg:m(21368).A,description:(0,i.jsx)(i.Fragment,{children:"Live previews eliminate guesswork, making web development quicker and less stressful."})},{title:"Runs Everywhere",Svg:m(43735).A,description:(0,i.jsx)(i.Fragment,{children:"Phoenix Code is natively available for macOS, Windows, and Linux. ChromeOS or alternative platforms? Get the web version on any browser-enabled device."})},{title:"Lightweight & Fast",Svg:m(32282).A,description:(0,i.jsx)(i.Fragment,{children:"Experience lightning-fast coding on any device - whether it be on a web browser or our desktop apps."})}];function v({Svg:c,title:s,description:m}){return(0,i.jsxs)("div",{className:(0,l.A)("col col--4"),children:[(0,i.jsx)("div",{className:"text--center",children:(0,i.jsx)(c,{className:r.featureSvg,role:"img","aria-label":s})}),(0,i.jsxs)("div",{className:"text--center padding-horiz--md",children:[(0,i.jsx)(n.A,{as:"h3",children:s}),(0,i.jsx)("p",{children:m})]})]})}function o(){return(0,i.jsx)("section",{className:r.features,children:(0,i.jsx)("div",{className:"container",children:(0,i.jsx)("div",{className:"row",children:h.map(((c,s)=>(0,i.jsx)(v,{...c},s)))})})})}const d={heroBanner:"heroBanner_qdFl",buttons:"buttons_AeoN"};function u(){const{siteConfig:c}=(0,e.A)();return(0,i.jsx)("header",{className:(0,l.A)("hero hero--primary",d.heroBanner),children:(0,i.jsxs)("div",{className:"container",children:[(0,i.jsx)(n.A,{as:"h1",className:"hero__title",children:c.title}),(0,i.jsx)("p",{className:"hero__subtitle",children:c.tagline}),(0,i.jsx)("div",{className:d.buttons,children:(0,i.jsx)(a.A,{className:"button button--secondary button--lg",to:"/docs/what-is-phoenix-code",children:"Getting Started - 2min \u23f1\ufe0f"})})]})})}function p(){return(0,i.jsxs)(t.A,{title:"Phoenix Code Documentation",description:"Phoenix Code documentation \u2014 live preview editor with Git integration, visual CSS editing, and browser support. Free and open source.",children:[(0,i.jsx)(u,{}),(0,i.jsx)("main",{children:(0,i.jsx)(o,{})})]})}}}]); \ No newline at end of file diff --git a/assets/js/c5b234b7.4a3b8131.js b/assets/js/c5b234b7.4a3b8131.js new file mode 100644 index 00000000..f447f5d7 --- /dev/null +++ b/assets/js/c5b234b7.4a3b8131.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3551],{3831:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>l,default:()=>a,frontMatter:()=>o,metadata:()=>r,toc:()=>d});const r=JSON.parse('{"id":"API-Reference/language/CSSUtils","title":"CSSUtils","description":"Import :","source":"@site/api/API-Reference/language/CSSUtils.md","sourceDirName":"API-Reference/language","slug":"/API-Reference/language/CSSUtils","permalink":"/api/API-Reference/language/CSSUtils","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"WatchedRoot","permalink":"/api/API-Reference/filesystem/WatchedRoot"},"next":{"title":"CodeInspection","permalink":"/api/API-Reference/language/CodeInspection"}}');var s=t(74848),i=t(28453);const o={},l=void 0,c={},d=[{value:"Import :",id:"import-",level:3},{value:"CodeMirror",id:"codemirror",level:2},{value:"SELECTOR : string",id:"selector--string",level:2},{value:"PROP_NAME : string",id:"prop_name--string",level:2},{value:"PROP_VALUE : string",id:"prop_value--string",level:2},{value:"IMPORT_URL : string",id:"import_url--string",level:2},{value:"isCSSPreprocessorFile(filePath) \u21d2 boolean",id:"iscsspreprocessorfilefilepath--boolean",level:2},{value:"getInfoAtPos(editor, constPos) \u21d2 Object",id:"getinfoatposeditor-constpos--object",level:2},{value:"getInfoAtPos._contextCM",id:"getinfoatpos_contextcm",level:3},{value:"getCompleteSelectors(info, [useGroup]) \u21d2 string",id:"getcompleteselectorsinfo-usegroup--string",level:2},{value:"extractAllSelectors(text, documentMode) \u21d2 Array.<SelectorInfo>",id:"extractallselectorstext-documentmode--arrayselectorinfo",level:2},{value:"findMatchingRules(selector, htmlDocument) \u21d2 $.Promise",id:"findmatchingrulesselector-htmldocument--promise",level:2},{value:"findSelectorAtDocumentPos(editor, pos) \u21d2 string",id:"findselectoratdocumentposeditor-pos--string",level:2},{value:"reduceStyleSheetForRegExParsing(content) \u21d2 string",id:"reducestylesheetforregexparsingcontent--string",level:2},{value:"addRuleToDocument(doc, selector, useTabChar, indentUnit) \u21d2 Object",id:"addruletodocumentdoc-selector-usetabchar-indentunit--object",level:2},{value:"consolidateRules()",id:"consolidaterules",level:2},{value:"getRangeSelectors(range) \u21d2 string",id:"getrangeselectorsrange--string",level:2},{value:"getAllCssSelectorsInProject(options)",id:"getallcssselectorsinprojectoptions",level:2},{value:"SelectorInfo : Object",id:"selectorinfo--object",level:2}];function h(e){const n={a:"a",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h3,{id:"import-",children:"Import :"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-js",children:'const CSSUtils = brackets.getModule("language/CSSUtils")\n'})}),"\n",(0,s.jsx)("a",{name:"CodeMirror"}),"\n",(0,s.jsx)(n.h2,{id:"codemirror",children:"CodeMirror"}),"\n",(0,s.jsx)(n.p,{children:"Set of utilities for simple parsing of CSS text."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,s.jsx)("a",{name:"SELECTOR"}),"\n",(0,s.jsxs)(n.h2,{id:"selector--string",children:["SELECTOR : ",(0,s.jsx)("code",{children:"string"})]}),"\n",(0,s.jsx)(n.p,{children:"CSS selector, used to target specific elements"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,s.jsx)("a",{name:"PROP_NAME"}),"\n",(0,s.jsxs)(n.h2,{id:"prop_name--string",children:["PROP_NAME : ",(0,s.jsx)("code",{children:"string"})]}),"\n",(0,s.jsx)(n.p,{children:"name of the property"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,s.jsx)("a",{name:"PROP_VALUE"}),"\n",(0,s.jsxs)(n.h2,{id:"prop_value--string",children:["PROP_VALUE : ",(0,s.jsx)("code",{children:"string"})]}),"\n",(0,s.jsx)(n.p,{children:"value of the specified property"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,s.jsx)("a",{name:"IMPORT_URL"}),"\n",(0,s.jsxs)(n.h2,{id:"import_url--string",children:["IMPORT_URL : ",(0,s.jsx)("code",{children:"string"})]}),"\n",(0,s.jsx)(n.p,{children:"url for import"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,s.jsx)("a",{name:"isCSSPreprocessorFile"}),"\n",(0,s.jsxs)(n.h2,{id:"iscsspreprocessorfilefilepath--boolean",children:["isCSSPreprocessorFile(filePath) \u21d2 ",(0,s.jsx)("code",{children:"boolean"})]}),"\n",(0,s.jsx)(n.p,{children:"Determines if the given path is a CSS preprocessor file that CSSUtils supports."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"boolean"})," - true if LanguageManager identifies filePath as less or scss language."]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"filePath"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(n.td,{children:"Absolute path to the file."})]})})]}),"\n",(0,s.jsx)("a",{name:"getInfoAtPos"}),"\n",(0,s.jsxs)(n.h2,{id:"getinfoatposeditor-constpos--object",children:["getInfoAtPos(editor, constPos) \u21d2 ",(0,s.jsx)("code",{children:"Object"})]}),"\n",(0,s.jsx)(n.p,{children:"Returns a context info object for the given cursor position"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"Object"})," - A CSS context info object."]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"editor"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"Editor"})}),(0,s.jsx)(n.td,{})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"constPos"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"Object"})}),(0,s.jsx)(n.td,{children:"A CM pos (likely from editor.getCursorPos())"})]})]})]}),"\n",(0,s.jsx)("a",{name:"getInfoAtPos.._contextCM"}),"\n",(0,s.jsx)(n.h3,{id:"getinfoatpos_contextcm",children:"getInfoAtPos._contextCM"}),"\n",(0,s.jsx)(n.p,{children:"We will use this CM to cook css context in case of style attribute value\nas CM in htmlmixed mode doesn't yet identify this as css context. We provide\na no-op display function to run CM without a DOM head."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": inner property of ",(0,s.jsx)(n.a,{href:"#getInfoAtPos",children:(0,s.jsx)("code",{children:"getInfoAtPos"})})]}),"\n",(0,s.jsx)("a",{name:"getCompleteSelectors"}),"\n",(0,s.jsxs)(n.h2,{id:"getcompleteselectorsinfo-usegroup--string",children:["getCompleteSelectors(info, [useGroup]) \u21d2 ",(0,s.jsx)("code",{children:"string"})]}),"\n",(0,s.jsx)(n.p,{children:"Return a string that shows the literal parent hierarchy of the selector\nin info."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"string"})," - the literal parent hierarchy of the selector"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"info"}),(0,s.jsx)(n.td,{children:(0,s.jsx)(n.a,{href:"#SelectorInfo",children:(0,s.jsx)("code",{children:"SelectorInfo"})})}),(0,s.jsx)(n.td,{})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"[useGroup]"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"boolean"})}),(0,s.jsx)(n.td,{children:"true to append selectorGroup instead of selector"})]})]})]}),"\n",(0,s.jsx)("a",{name:"extractAllSelectors"}),"\n",(0,s.jsxs)(n.h2,{id:"extractallselectorstext-documentmode--arrayselectorinfo",children:["extractAllSelectors(text, documentMode) \u21d2 ",(0,s.jsx)(n.a,{href:"#SelectorInfo",children:(0,s.jsx)("code",{children:"Array."})})]}),"\n",(0,s.jsx)(n.p,{children:"Extracts all CSS selectors from the given text\nReturns an array of SelectorInfo. Each SelectorInfo is an object with the following properties:\nselector: the text of the selector (note: comma separated selector groups like\n\"h1, h2\" are broken into separate selectors)\nruleStartLine: line in the text where the rule (including preceding comment) appears\nruleStartChar: column in the line where the rule (including preceding comment) starts\nselectorStartLine: line in the text where the selector appears\nselectorStartChar: column in the line where the selector starts\nselectorEndLine: line where the selector ends\nselectorEndChar: column where the selector ends\nselectorGroupStartLine: line where the comma-separated selector group (e.g. .foo, .bar, .baz)\nstarts that this selector (e.g. .baz) is part of. Particularly relevant for\ngroups that are on multiple lines.\nselectorGroupStartChar: column in line where the selector group starts.\nselectorGroup: the entire selector group containing this selector, or undefined if there\nis only one selector in the rule.\ndeclListStartLine: line where the declaration list for the rule starts\ndeclListStartChar: column in line where the declaration list for the rule starts\ndeclListEndLine: line where the declaration list for the rule ends\ndeclListEndChar: column in the line where the declaration list for the rule ends\nlevel: the level of the current selector including any containing @media block in the\nnesting level count. Use this property with caution since it is primarily for internal\nparsing use. For example, two sibling selectors may have different levels if one\nof them is nested inside an @media block and it should not be used for sibling info.\nparentSelectors: all ancestor selectors separated with '/' if the current selector is a nested one"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)(n.a,{href:"#SelectorInfo",children:(0,s.jsx)("code",{children:"Array."})})," - Array with objects specifying selectors."]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"text"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(n.td,{children:"CSS text to extract from"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"documentMode"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(n.td,{children:"language mode of the document that text belongs to, default to css if undefined."})]})]})]}),"\n",(0,s.jsx)("a",{name:"findMatchingRules"}),"\n",(0,s.jsxs)(n.h2,{id:"findmatchingrulesselector-htmldocument--promise",children:["findMatchingRules(selector, htmlDocument) \u21d2 ",(0,s.jsx)("code",{children:"$.Promise"})]}),"\n",(0,s.jsxs)(n.p,{children:['Return all rules matching the specified selector.\nFor now, we only look at the rightmost simple selector. For example, searching for ".foo" will\nmatch these rules:\n.foo ',"\ndiv .foo ","\ndiv.foo ",'\ndiv .foo[bar="42"] ',"\ndiv .foo",":hovered"," ","\ndiv .foo::first-child\nbut will ",(0,s.jsx)(n.em,{children:"not"})," match these rules:\n.foobar ","\n.foo .bar ","\ndiv .foo .bar ","\n.foo.bar "]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"$.Promise"})," - that will be resolved with an Array of objects containing the\nsource document, start line, and end line (0-based, inclusive range) for each matching declaration list.\nDoes not addRef() the documents returned in the array."]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"selector"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(n.td,{children:"The selector to match. This can be a tag selector, class selector or id selector"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"htmlDocument"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"Document"})}),(0,s.jsx)(n.td,{children:"An HTML file for context (so we can search 'style' blocks)"})]})]})]}),"\n",(0,s.jsx)("a",{name:"findSelectorAtDocumentPos"}),"\n",(0,s.jsxs)(n.h2,{id:"findselectoratdocumentposeditor-pos--string",children:["findSelectorAtDocumentPos(editor, pos) \u21d2 ",(0,s.jsx)("code",{children:"string"})]}),"\n",(0,s.jsx)(n.p,{children:'Returns the selector(s) of the rule at the specified document pos, or "" if the position is\nis not within a style rule.'}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"string"}),' - Selector(s) for the rule at the specified position, or "" if the position\nis not within a style rule. If the rule has multiple selectors, a comma-separated\nselector string is returned.']}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"editor"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"Editor"})}),(0,s.jsx)(n.td,{children:"Editor to search"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"pos"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"Object"})}),(0,s.jsx)(n.td,{children:"Position to search"})]})]})]}),"\n",(0,s.jsx)("a",{name:"reduceStyleSheetForRegExParsing"}),"\n",(0,s.jsxs)(n.h2,{id:"reducestylesheetforregexparsingcontent--string",children:["reduceStyleSheetForRegExParsing(content) \u21d2 ",(0,s.jsx)("code",{children:"string"})]}),"\n",(0,s.jsx)(n.p,{children:"Reduces the style sheet by removing comments and strings\nso that the content can be parsed using a regular expression"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"string"})," - reduced content"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"content"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(n.td,{children:"to reduce"})]})})]}),"\n",(0,s.jsx)("a",{name:"addRuleToDocument"}),"\n",(0,s.jsxs)(n.h2,{id:"addruletodocumentdoc-selector-usetabchar-indentunit--object",children:["addRuleToDocument(doc, selector, useTabChar, indentUnit) \u21d2 ",(0,s.jsx)("code",{children:"Object"})]}),"\n",(0,s.jsx)(n.p,{children:"Adds a new rule to the end of the given document, and returns the range of the added rule\nand the position of the cursor on the indented blank line within it. Note that the range will\nnot include all the inserted text (we insert extra newlines before and after the rule)."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"Object"})," - The range of the inserted rule and the location where the cursor should be placed."]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"doc"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"Document"})}),(0,s.jsx)(n.td,{children:"The document to insert the rule into."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"selector"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(n.td,{children:"The selector to use for the given rule."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"useTabChar"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"boolean"})}),(0,s.jsx)(n.td,{children:"Whether to indent with a tab."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"indentUnit"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"number"})}),(0,s.jsx)(n.td,{children:"If useTabChar is false, how many spaces to indent with."})]})]})]}),"\n",(0,s.jsx)("a",{name:"consolidateRules"}),"\n",(0,s.jsx)(n.h2,{id:"consolidaterules",children:"consolidateRules()"}),"\n",(0,s.jsxs)(n.p,{children:["In the given rule array (as returned by ",(0,s.jsx)(n.code,{children:"findMatchingRules()"}),"), if multiple rules in a row\nrefer to the same rule (because there were multiple matching selectors), eliminate the redundant\nrules. Also, always use the selector group if available instead of the original matching selector."]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsx)("a",{name:"getRangeSelectors"}),"\n",(0,s.jsxs)(n.h2,{id:"getrangeselectorsrange--string",children:["getRangeSelectors(range) \u21d2 ",(0,s.jsx)("code",{children:"string"})]}),"\n",(0,s.jsx)(n.p,{children:"Given a TextRange, extracts the selector(s) for the rule in the range and returns it.\nAssumes the range only contains one rule; if there's more than one, it will return the\nselector(s) for the first rule."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"string"})," - The selector(s) for the rule in the range."]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"range"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"TextRange"})}),(0,s.jsx)(n.td,{children:"The range to extract the selector(s) from."})]})})]}),"\n",(0,s.jsx)("a",{name:"getAllCssSelectorsInProject"}),"\n",(0,s.jsx)(n.h2,{id:"getallcssselectorsinprojectoptions",children:"getAllCssSelectorsInProject(options)"}),"\n",(0,s.jsx)(n.p,{children:"Responsible to get all the CSS selectors in project"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"options"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"Object"})})]})})]}),"\n",(0,s.jsx)("a",{name:"SelectorInfo"}),"\n",(0,s.jsxs)(n.h2,{id:"selectorinfo--object",children:["SelectorInfo : ",(0,s.jsx)("code",{children:"Object"})]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global typedef"]})]})}function a(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},28453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>l});var r=t(96540);const s={},i=r.createContext(s);function o(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/c5c0adfc.caefb82b.js b/assets/js/c5c0adfc.caefb82b.js new file mode 100644 index 00000000..dab1a02e --- /dev/null +++ b/assets/js/c5c0adfc.caefb82b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5436],{75596:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>d,contentTitle:()=>c,default:()=>j,frontMatter:()=>o,metadata:()=>i,toc:()=>h});const i=JSON.parse('{"id":"API-Reference/JSUtils/Session","title":"Session","description":"Import :","source":"@site/api/API-Reference/JSUtils/Session.md","sourceDirName":"API-Reference/JSUtils","slug":"/API-Reference/JSUtils/Session","permalink":"/api/API-Reference/JSUtils/Session","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"ScopeManager","permalink":"/api/API-Reference/JSUtils/ScopeManager"},"next":{"title":"NodeConnector","permalink":"/api/API-Reference/NodeConnector"}}');var t=s(74848),r=s(28453);const o={},c=void 0,d={},h=[{value:"Import :",id:"import-",level:3},{value:"Session",id:"session",level:2},{value:"new Session(editor)",id:"new-sessioneditor",level:3},{value:"session.getPath() \u21d2 String",id:"sessiongetpath--string",level:3},{value:"session.getCursor() \u21d2 Object",id:"sessiongetcursor--object",level:3},{value:"session.getLine(line) \u21d2 String",id:"sessiongetlineline--string",level:3},{value:"session.getOffset() \u21d2 number",id:"sessiongetoffset--number",level:3},{value:"session.getOffsetFromCursor(the) \u21d2 number",id:"sessiongetoffsetfromcursorthe--number",level:3},{value:"session.getToken(cursor) \u21d2 Object",id:"sessiongettokencursor--object",level:3},{value:"session.getNextTokenOnLine(cursor) \u21d2 Object",id:"sessiongetnexttokenonlinecursor--object",level:3},{value:"session.getNextCursorOnLine() \u21d2 Object",id:"sessiongetnextcursoronline--object",level:3},{value:"session.getNextToken(cursor, skipWhitespace) \u21d2 Object",id:"sessiongetnexttokencursor-skipwhitespace--object",level:3},{value:"session.getQuery() \u21d2 String",id:"sessiongetquery--string",level:3},{value:"session.getContext(cursor, [depth]) \u21d2 String",id:"sessiongetcontextcursor-depth--string",level:3},{value:"session.findPreviousDot() \u21d2 Object",id:"sessionfindpreviousdot--object",level:3},{value:"session.getFunctionInfo() \u21d2 Object",id:"sessiongetfunctioninfo--object",level:3},{value:"session.getType() \u21d2 Object",id:"sessiongettype--object",level:3},{value:"session.getHints(query, matcher) \u21d2 Object",id:"sessiongethintsquery-matcher--object",level:3},{value:"session.setFnType(newFnType)",id:"sessionsetfntypenewfntype",level:3},{value:"session.setFunctionCallPos(functionCallPos)",id:"sessionsetfunctioncallposfunctioncallpos",level:3},{value:"session.getParameterHint() \u21d2 Object",id:"sessiongetparameterhint--object",level:3},{value:"session.getJavascriptText() \u21d2 String",id:"sessiongetjavascripttext--string",level:3},{value:"session.isFunctionName() \u21d2 Boolean",id:"sessionisfunctionname--boolean",level:3}];function l(e){const n={a:"a",br:"br",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,r.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h3,{id:"import-",children:"Import :"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-js",children:'const Session = brackets.getModule("JSUtils/Session")\n'})}),"\n",(0,t.jsx)("a",{name:"Session"}),"\n",(0,t.jsx)(n.h2,{id:"session",children:"Session"}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Kind"}),": global class"]}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.a,{href:"#Session",children:"Session"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.a,{href:"#new_Session_new",children:"new Session(editor)"})}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.a,{href:"#Session+getPath",children:".getPath()"})," \u21d2 ",(0,t.jsx)("code",{children:"String"})]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.a,{href:"#Session+getCursor",children:".getCursor()"})," \u21d2 ",(0,t.jsx)("code",{children:"Object"})]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.a,{href:"#Session+getLine",children:".getLine(line)"})," \u21d2 ",(0,t.jsx)("code",{children:"String"})]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.a,{href:"#Session+getOffset",children:".getOffset()"})," \u21d2 ",(0,t.jsx)("code",{children:"number"})]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.a,{href:"#Session+getOffsetFromCursor",children:".getOffsetFromCursor(the)"})," \u21d2 ",(0,t.jsx)("code",{children:"number"})]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.a,{href:"#Session+getToken",children:".getToken(cursor)"})," \u21d2 ",(0,t.jsx)("code",{children:"Object"})]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.a,{href:"#Session+getNextTokenOnLine",children:".getNextTokenOnLine(cursor)"})," \u21d2 ",(0,t.jsx)("code",{children:"Object"})]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.a,{href:"#Session+getNextCursorOnLine",children:".getNextCursorOnLine()"})," \u21d2 ",(0,t.jsx)("code",{children:"Object"})]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.a,{href:"#Session+getNextToken",children:".getNextToken(cursor, skipWhitespace)"})," \u21d2 ",(0,t.jsx)("code",{children:"Object"})]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.a,{href:"#Session+getQuery",children:".getQuery()"})," \u21d2 ",(0,t.jsx)("code",{children:"String"})]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.a,{href:"#Session+getContext",children:".getContext(cursor, [depth])"})," \u21d2 ",(0,t.jsx)("code",{children:"String"})]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.a,{href:"#Session+findPreviousDot",children:".findPreviousDot()"})," \u21d2 ",(0,t.jsx)("code",{children:"Object"})]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.a,{href:"#Session+getFunctionInfo",children:".getFunctionInfo()"})," \u21d2 ",(0,t.jsx)("code",{children:"Object"})]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.a,{href:"#Session+getType",children:".getType()"})," \u21d2 ",(0,t.jsx)("code",{children:"Object"})]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.a,{href:"#Session+getHints",children:".getHints(query, matcher)"})," \u21d2 ",(0,t.jsx)("code",{children:"Object"})]}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.a,{href:"#Session+setFnType",children:".setFnType(newFnType)"})}),"\n",(0,t.jsx)(n.li,{children:(0,t.jsx)(n.a,{href:"#Session+setFunctionCallPos",children:".setFunctionCallPos(functionCallPos)"})}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.a,{href:"#Session+getParameterHint",children:".getParameterHint()"})," \u21d2 ",(0,t.jsx)("code",{children:"Object"})]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.a,{href:"#Session+getJavascriptText",children:".getJavascriptText()"})," \u21d2 ",(0,t.jsx)("code",{children:"String"})]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.a,{href:"#Session+isFunctionName",children:".isFunctionName()"})," \u21d2 ",(0,t.jsx)("code",{children:"Boolean"})]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)("a",{name:"new_Session_new"}),"\n",(0,t.jsx)(n.h3,{id:"new-sessioneditor",children:"new Session(editor)"}),"\n",(0,t.jsx)(n.p,{children:"Session objects encapsulate state associated with a hinting session\nand provide methods for updating and querying the session."}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Param"}),(0,t.jsx)(n.th,{children:"Type"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsx)(n.tbody,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"editor"}),(0,t.jsx)(n.td,{children:(0,t.jsx)("code",{children:"Editor"})}),(0,t.jsx)(n.td,{children:"the editor context for the session"})]})})]}),"\n",(0,t.jsx)("a",{name:"Session+getPath"}),"\n",(0,t.jsxs)(n.h3,{id:"sessiongetpath--string",children:["session.getPath() \u21d2 ",(0,t.jsx)("code",{children:"String"})]}),"\n",(0,t.jsx)(n.p,{children:"Get the name of the file associated with the current session"}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,t.jsx)(n.a,{href:"#Session",children:(0,t.jsx)("code",{children:"Session"})}),(0,t.jsx)(n.br,{}),"\n",(0,t.jsx)(n.strong,{children:"Returns"}),": ",(0,t.jsx)("code",{children:"String"})," - - the full pathname of the file associated with the\ncurrent session"]}),"\n",(0,t.jsx)("a",{name:"Session+getCursor"}),"\n",(0,t.jsxs)(n.h3,{id:"sessiongetcursor--object",children:["session.getCursor() \u21d2 ",(0,t.jsx)("code",{children:"Object"})]}),"\n",(0,t.jsx)(n.p,{children:"Get the current cursor position."}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,t.jsx)(n.a,{href:"#Session",children:(0,t.jsx)("code",{children:"Session"})}),(0,t.jsx)(n.br,{}),"\n",(0,t.jsx)(n.strong,{children:"Returns"}),": ",(0,t.jsx)("code",{children:"Object"})," - - the current cursor position"]}),"\n",(0,t.jsx)("a",{name:"Session+getLine"}),"\n",(0,t.jsxs)(n.h3,{id:"sessiongetlineline--string",children:["session.getLine(line) \u21d2 ",(0,t.jsx)("code",{children:"String"})]}),"\n",(0,t.jsx)(n.p,{children:"Get the text of a line."}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,t.jsx)(n.a,{href:"#Session",children:(0,t.jsx)("code",{children:"Session"})}),(0,t.jsx)(n.br,{}),"\n",(0,t.jsx)(n.strong,{children:"Returns"}),": ",(0,t.jsx)("code",{children:"String"})," - - the text of the line"]}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Param"}),(0,t.jsx)(n.th,{children:"Type"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsx)(n.tbody,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"line"}),(0,t.jsx)(n.td,{children:(0,t.jsx)("code",{children:"number"})}),(0,t.jsx)(n.td,{children:"the line number"})]})})]}),"\n",(0,t.jsx)("a",{name:"Session+getOffset"}),"\n",(0,t.jsxs)(n.h3,{id:"sessiongetoffset--number",children:["session.getOffset() \u21d2 ",(0,t.jsx)("code",{children:"number"})]}),"\n",(0,t.jsx)(n.p,{children:"Get the offset of the current cursor position"}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,t.jsx)(n.a,{href:"#Session",children:(0,t.jsx)("code",{children:"Session"})}),(0,t.jsx)(n.br,{}),"\n",(0,t.jsx)(n.strong,{children:"Returns"}),": ",(0,t.jsx)("code",{children:"number"})," - - the offset into the current document of the current\ncursor"]}),"\n",(0,t.jsx)("a",{name:"Session+getOffsetFromCursor"}),"\n",(0,t.jsxs)(n.h3,{id:"sessiongetoffsetfromcursorthe--number",children:["session.getOffsetFromCursor(the) \u21d2 ",(0,t.jsx)("code",{children:"number"})]}),"\n",(0,t.jsx)(n.p,{children:"Get the offset of a cursor position"}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,t.jsx)(n.a,{href:"#Session",children:(0,t.jsx)("code",{children:"Session"})}),(0,t.jsx)(n.br,{}),"\n",(0,t.jsx)(n.strong,{children:"Returns"}),": ",(0,t.jsx)("code",{children:"number"})," - - the offset into the current document of the cursor"]}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Param"}),(0,t.jsx)(n.th,{children:"Type"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsx)(n.tbody,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"the"}),(0,t.jsx)(n.td,{children:(0,t.jsx)("code",{children:"Object"})}),(0,t.jsx)(n.td,{children:"line/col info"})]})})]}),"\n",(0,t.jsx)("a",{name:"Session+getToken"}),"\n",(0,t.jsxs)(n.h3,{id:"sessiongettokencursor--object",children:["session.getToken(cursor) \u21d2 ",(0,t.jsx)("code",{children:"Object"})]}),"\n",(0,t.jsx)(n.p,{children:"Get the token at the given cursor position, or at the current cursor\nif none is given."}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,t.jsx)(n.a,{href:"#Session",children:(0,t.jsx)("code",{children:"Session"})}),(0,t.jsx)(n.br,{}),"\n",(0,t.jsx)(n.strong,{children:"Returns"}),": ",(0,t.jsx)("code",{children:"Object"})," - - the CodeMirror token at the given cursor position"]}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Param"}),(0,t.jsx)(n.th,{children:"Type"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsx)(n.tbody,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"cursor"}),(0,t.jsx)(n.td,{children:(0,t.jsx)("code",{children:"Object"})}),(0,t.jsx)(n.td,{children:"the cursor position at which to retrieve a token"})]})})]}),"\n",(0,t.jsx)("a",{name:"Session+getNextTokenOnLine"}),"\n",(0,t.jsxs)(n.h3,{id:"sessiongetnexttokenonlinecursor--object",children:["session.getNextTokenOnLine(cursor) \u21d2 ",(0,t.jsx)("code",{children:"Object"})]}),"\n",(0,t.jsx)(n.p,{children:"Get the token after the one at the given cursor position"}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,t.jsx)(n.a,{href:"#Session",children:(0,t.jsx)("code",{children:"Session"})}),(0,t.jsx)(n.br,{}),"\n",(0,t.jsx)(n.strong,{children:"Returns"}),": ",(0,t.jsx)("code",{children:"Object"})," - - the CodeMirror token after the one at the given\ncursor position"]}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Param"}),(0,t.jsx)(n.th,{children:"Type"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsx)(n.tbody,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"cursor"}),(0,t.jsx)(n.td,{children:(0,t.jsx)("code",{children:"Object"})}),(0,t.jsx)(n.td,{children:"cursor position before which a token should be retrieved"})]})})]}),"\n",(0,t.jsx)("a",{name:"Session+getNextCursorOnLine"}),"\n",(0,t.jsxs)(n.h3,{id:"sessiongetnextcursoronline--object",children:["session.getNextCursorOnLine() \u21d2 ",(0,t.jsx)("code",{children:"Object"})]}),"\n",(0,t.jsx)(n.p,{children:"Get the next cursor position on the line, or null if there isn't one."}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,t.jsx)(n.a,{href:"#Session",children:(0,t.jsx)("code",{children:"Session"})}),(0,t.jsx)(n.br,{}),"\n",(0,t.jsx)(n.strong,{children:"Returns"}),": ",(0,t.jsx)("code",{children:"Object"})," - - the cursor position\nimmediately following the current cursor position, or null if\nnone exists."]}),"\n",(0,t.jsx)("a",{name:"Session+getNextToken"}),"\n",(0,t.jsxs)(n.h3,{id:"sessiongetnexttokencursor-skipwhitespace--object",children:["session.getNextToken(cursor, skipWhitespace) \u21d2 ",(0,t.jsx)("code",{children:"Object"})]}),"\n",(0,t.jsx)(n.p,{children:"Get the token after the one at the given cursor position"}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,t.jsx)(n.a,{href:"#Session",children:(0,t.jsx)("code",{children:"Session"})}),(0,t.jsx)(n.br,{}),"\n",(0,t.jsx)(n.strong,{children:"Returns"}),": ",(0,t.jsx)("code",{children:"Object"})," - - the CodeMirror token after the one at the given\ncursor position"]}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Param"}),(0,t.jsx)(n.th,{children:"Type"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"cursor"}),(0,t.jsx)(n.td,{children:(0,t.jsx)("code",{children:"Object"})}),(0,t.jsx)(n.td,{children:"cursor position after which a token should be retrieved"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"skipWhitespace"}),(0,t.jsx)(n.td,{children:(0,t.jsx)("code",{children:"Boolean"})}),(0,t.jsx)(n.td,{children:"true if this should skip over whitespace tokens"})]})]})]}),"\n",(0,t.jsx)("a",{name:"Session+getQuery"}),"\n",(0,t.jsxs)(n.h3,{id:"sessiongetquery--string",children:["session.getQuery() \u21d2 ",(0,t.jsx)("code",{children:"String"})]}),"\n",(0,t.jsx)(n.p,{children:'Calculate a query String relative to the current cursor position\nand token. E.g., from a state "identi--cursor--er", the query String is\n"identi".'}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,t.jsx)(n.a,{href:"#Session",children:(0,t.jsx)("code",{children:"Session"})}),(0,t.jsx)(n.br,{}),"\n",(0,t.jsx)(n.strong,{children:"Returns"}),": ",(0,t.jsx)("code",{children:"String"})," - - the query String for the current cursor position"]}),"\n",(0,t.jsx)("a",{name:"Session+getContext"}),"\n",(0,t.jsxs)(n.h3,{id:"sessiongetcontextcursor-depth--string",children:["session.getContext(cursor, [depth]) \u21d2 ",(0,t.jsx)("code",{children:"String"})]}),"\n",(0,t.jsx)(n.p,{children:"Find the context of a property lookup. For example, for a lookup\nfoo(bar, baz(quux)).prop, foo is the context."}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,t.jsx)(n.a,{href:"#Session",children:(0,t.jsx)("code",{children:"Session"})}),(0,t.jsx)(n.br,{}),"\n",(0,t.jsx)(n.strong,{children:"Returns"}),": ",(0,t.jsx)("code",{children:"String"})," - - the context for the property that was looked up"]}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Param"}),(0,t.jsx)(n.th,{children:"Type"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"cursor"}),(0,t.jsx)(n.td,{children:(0,t.jsx)("code",{children:"Object"})}),(0,t.jsx)(n.td,{children:"the cursor position at which context information is to be retrieved"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"[depth]"}),(0,t.jsx)(n.td,{children:(0,t.jsx)("code",{children:"number"})}),(0,t.jsx)(n.td,{children:"the current depth of the parenthesis stack, or undefined if the depth is 0."})]})]})]}),"\n",(0,t.jsx)("a",{name:"Session+findPreviousDot"}),"\n",(0,t.jsxs)(n.h3,{id:"sessionfindpreviousdot--object",children:["session.findPreviousDot() \u21d2 ",(0,t.jsx)("code",{children:"Object"})]}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,t.jsx)(n.a,{href:"#Session",children:(0,t.jsx)("code",{children:"Session"})}),(0,t.jsx)(n.br,{}),"\n",(0,t.jsx)(n.strong,{children:"Returns"}),": ",(0,t.jsx)("code",{children:"Object"}),' - - the line, col info for where the previous "."\nin a property lookup occurred, or undefined if no previous "." was found.']}),"\n",(0,t.jsx)("a",{name:"Session+getFunctionInfo"}),"\n",(0,t.jsxs)(n.h3,{id:"sessiongetfunctioninfo--object",children:["session.getFunctionInfo() \u21d2 ",(0,t.jsx)("code",{children:"Object"})]}),"\n",(0,t.jsx)(n.p,{children:"Determine if the caret is either within a function call or on the function call itself."}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,t.jsx)(n.a,{href:"#Session",children:(0,t.jsx)("code",{children:"Session"})}),(0,t.jsx)(n.br,{}),"\n",(0,t.jsx)(n.strong,{children:"Returns"}),": ",(0,t.jsx)("code",{children:"Object"})," - inFunctionCall - true if the caret if either within a function call or on the\nfunction call itself.\nfunctionCallPos - the offset of the '(' character of the function call if inFunctionCall\nis true, otherwise undefined."]}),"\n",(0,t.jsx)("a",{name:"Session+getType"}),"\n",(0,t.jsxs)(n.h3,{id:"sessiongettype--object",children:["session.getType() \u21d2 ",(0,t.jsx)("code",{children:"Object"})]}),"\n",(0,t.jsx)(n.p,{children:"Get the type of the current session, i.e., whether it is a property\nlookup and, if so, what the context of the lookup is."}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,t.jsx)(n.a,{href:"#Session",children:(0,t.jsx)("code",{children:"Session"})}),(0,t.jsx)(n.br,{}),"\n",(0,t.jsx)(n.strong,{children:"Returns"}),": ",(0,t.jsx)("code",{children:"Object"})," - - an Object consisting\nof a ",Boolean,' "property" that indicates whether or not the type of\nthe session is a property lookup, and a ',String,' "context" that\nindicates the object context (as described in getContext above) of\nthe property lookup, or null if there is none. The context is\nalways null for non-property lookups.']}),"\n",(0,t.jsx)("a",{name:"Session+getHints"}),"\n",(0,t.jsxs)(n.h3,{id:"sessiongethintsquery-matcher--object",children:["session.getHints(query, matcher) \u21d2 ",(0,t.jsx)("code",{children:"Object"})]}),"\n",(0,t.jsx)(n.p,{children:"Retrieves a list of hints for the current session based on the current scope\ninformation."}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,t.jsx)(n.a,{href:"#Session",children:(0,t.jsx)("code",{children:"Session"})}),(0,t.jsx)(n.br,{}),"\n",(0,t.jsx)(n.strong,{children:"Returns"}),": ",(0,t.jsx)("code",{children:"Object"})," - An object containing:"]}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"hints"}),": An array of matching hints."]}),"\n",(0,t.jsxs)(n.li,{children:[(0,t.jsx)(n.code,{children:"needGuesses"}),": A Boolean indicating whether the caller needs to request guesses and call getHints again."]}),"\n"]}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Param"}),(0,t.jsx)(n.th,{children:"Type"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"query"}),(0,t.jsx)(n.td,{children:(0,t.jsx)("code",{children:"String"})}),(0,t.jsx)(n.td,{children:"The query prefix used to filter hints."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"matcher"}),(0,t.jsx)(n.td,{children:(0,t.jsx)("code",{children:"StringMatcher"})}),(0,t.jsx)(n.td,{children:"The class used to find query matches and sort the results."})]})]})]}),"\n",(0,t.jsx)("a",{name:"Session+setFnType"}),"\n",(0,t.jsx)(n.h3,{id:"sessionsetfntypenewfntype",children:"session.setFnType(newFnType)"}),"\n",(0,t.jsx)(n.p,{children:"Set a new function type hint."}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,t.jsx)(n.a,{href:"#Session",children:(0,t.jsx)("code",{children:"Session"})})]}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Param"}),(0,t.jsx)(n.th,{children:"Type"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsx)(n.tbody,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"newFnType"}),(0,t.jsx)(n.td,{children:(0,t.jsx)("code",{children:"Object"})}),(0,t.jsx)(n.td,{children:"Array of function hints"})]})})]}),"\n",(0,t.jsx)("a",{name:"Session+setFunctionCallPos"}),"\n",(0,t.jsx)(n.h3,{id:"sessionsetfunctioncallposfunctioncallpos",children:"session.setFunctionCallPos(functionCallPos)"}),"\n",(0,t.jsx)(n.p,{children:"The position of the function call for the current fnType."}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,t.jsx)(n.a,{href:"#Session",children:(0,t.jsx)("code",{children:"Session"})})]}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Param"}),(0,t.jsx)(n.th,{children:"Type"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsx)(n.tbody,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"functionCallPos"}),(0,t.jsx)(n.td,{children:(0,t.jsx)("code",{children:"Object"})}),(0,t.jsx)(n.td,{children:"the offset of the function call."})]})})]}),"\n",(0,t.jsx)("a",{name:"Session+getParameterHint"}),"\n",(0,t.jsxs)(n.h3,{id:"sessiongetparameterhint--object",children:["session.getParameterHint() \u21d2 ",(0,t.jsx)("code",{children:"Object"})]}),"\n",(0,t.jsx)(n.p,{children:"Get the function type hint. This will format the hint, showing the\nparameter at the cursor in bold."}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,t.jsx)(n.a,{href:"#Session",children:(0,t.jsx)("code",{children:"Session"})}),(0,t.jsx)(n.br,{}),"\n",(0,t.jsx)(n.strong,{children:"Returns"}),": ",(0,t.jsx)("code",{children:"Object"}),' - An Object where the\n"parameters" property is an array of parameter objects;\nthe "currentIndex" property index of the hint the cursor is on, may be\n-1 if the cursor is on the function identifier.']}),"\n",(0,t.jsx)("a",{name:"Session+getJavascriptText"}),"\n",(0,t.jsxs)(n.h3,{id:"sessiongetjavascripttext--string",children:["session.getJavascriptText() \u21d2 ",(0,t.jsx)("code",{children:"String"})]}),"\n",(0,t.jsx)(n.p,{children:"Get the javascript text of the file open in the editor for this Session.\nFor a javascript file, this is just the text of the file. For an HTML file,\nthis will be only the text in the script tags. This is so that we can pass\njust the javascript text to tern, and avoid confusing it with HTML tags, since it\nonly knows how to parse javascript."}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,t.jsx)(n.a,{href:"#Session",children:(0,t.jsx)("code",{children:"Session"})}),(0,t.jsx)(n.br,{}),"\n",(0,t.jsx)(n.strong,{children:"Returns"}),": ",(0,t.jsx)("code",{children:"String"}),' - - the "javascript" text that can be sent to Tern.']}),"\n",(0,t.jsx)("a",{name:"Session+isFunctionName"}),"\n",(0,t.jsxs)(n.h3,{id:"sessionisfunctionname--boolean",children:["session.isFunctionName() \u21d2 ",(0,t.jsx)("code",{children:"Boolean"})]}),"\n",(0,t.jsx)(n.p,{children:"Determine if the cursor is located in the name of a function declaration.\nThis is so we can suppress hints when in a function name, as we do for variable and\nparameter declarations, but we can tell those from the token itself rather than having\nto look at previous tokens."}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,t.jsx)(n.a,{href:"#Session",children:(0,t.jsx)("code",{children:"Session"})}),(0,t.jsx)(n.br,{}),"\n",(0,t.jsx)(n.strong,{children:"Returns"}),": ",(0,t.jsx)("code",{children:"Boolean"})," - - true if the current cursor position is in the name of a function\ndeclaration."]})]})}function j(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(l,{...e})}):l(e)}},28453:(e,n,s)=>{s.d(n,{R:()=>o,x:()=>c});var i=s(96540);const t={},r=i.createContext(t);function o(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:o(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/c9cac9d9.f6f03d6f.js b/assets/js/c9cac9d9.f6f03d6f.js new file mode 100644 index 00000000..ad8705e8 --- /dev/null +++ b/assets/js/c9cac9d9.f6f03d6f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4918],{10371:e=>{e.exports=JSON.parse('{"tag":{"label":"Release","permalink":"/blog/tags/release","allTagsPath":"/blog/tags","count":10,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/release","page":1,"postsPerPage":10,"totalPages":1,"totalCount":10,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]); \ No newline at end of file diff --git a/assets/js/ca5d6723.dfb0723f.js b/assets/js/ca5d6723.dfb0723f.js new file mode 100644 index 00000000..587d475b --- /dev/null +++ b/assets/js/ca5d6723.dfb0723f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[516],{73980:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>c,contentTitle:()=>d,default:()=>a,frontMatter:()=>r,metadata:()=>s,toc:()=>h});const s=JSON.parse('{"id":"API-Reference/utils/Resizer","title":"Resizer","description":"Import :","source":"@site/api/API-Reference/utils/Resizer.md","sourceDirName":"API-Reference/utils","slug":"/API-Reference/utils/Resizer","permalink":"/api/API-Reference/utils/Resizer","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"PerfUtils","permalink":"/api/API-Reference/utils/PerfUtils"},"next":{"title":"StringMatch","permalink":"/api/API-Reference/utils/StringMatch"}}');var t=i(74848),l=i(28453);const r={},d=void 0,c={},h=[{value:"Import :",id:"import-",level:3},{value:"DIRECTION_VERTICAL : string",id:"direction_vertical--string",level:2},{value:"DIRECTION_HORIZONTAL : string",id:"direction_horizontal--string",level:2},{value:"POSITION_TOP : string",id:"position_top--string",level:2},{value:"POSITION_BOTTOM : string",id:"position_bottom--string",level:2},{value:"POSITION_LEFT : string",id:"position_left--string",level:2},{value:"POSITION_RIGHT : string",id:"position_right--string",level:2},{value:"PREFS_PURE_CODE : string",id:"prefs_pure_code--string",level:2},{value:"EVENT_PANEL_COLLAPSED : string",id:"event_panel_collapsed--string",level:2},{value:"EVENT_PANEL_EXPANDED : string",id:"event_panel_expanded--string",level:2},{value:"EVENT_PANEL_RESIZE_START : string",id:"event_panel_resize_start--string",level:2},{value:"EVENT_PANEL_RESIZE_UPDATE : string",id:"event_panel_resize_update--string",level:2},{value:"EVENT_PANEL_RESIZE_END : string",id:"event_panel_resize_end--string",level:2},{value:"show(element)",id:"showelement",level:2},{value:"hide(element)",id:"hideelement",level:2},{value:"toggle(element)",id:"toggleelement",level:2},{value:"removeSizable(element)",id:"removesizableelement",level:2},{value:"resyncSizer(element)",id:"resyncsizerelement",level:2},{value:"isVisible(element) \u21d2 boolean",id:"isvisibleelement--boolean",level:2},{value:"makeResizable(element, direction, position, minSize, collapsible, forceLeft, createdByWorkspaceManager, usePercentages, forceRight, _attachToParent, [initialSize])",id:"makeresizableelement-direction-position-minsize-collapsible-forceleft-createdbyworkspacemanager-usepercentages-forceright-_attachtoparent-initialsize",level:2}];function o(e){const n={br:"br",code:"code",em:"em",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,l.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h3,{id:"import-",children:"Import :"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-js",children:'const Resizer = brackets.getModule("utils/Resizer")\n'})}),"\n",(0,t.jsx)("a",{name:"DIRECTION_VERTICAL"}),"\n",(0,t.jsxs)(n.h2,{id:"direction_vertical--string",children:["DIRECTION_VERTICAL : ",(0,t.jsx)("code",{children:"string"})]}),"\n",(0,t.jsx)(n.p,{children:"Represents the vertical direction."}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,t.jsx)("a",{name:"DIRECTION_HORIZONTAL"}),"\n",(0,t.jsxs)(n.h2,{id:"direction_horizontal--string",children:["DIRECTION_HORIZONTAL : ",(0,t.jsx)("code",{children:"string"})]}),"\n",(0,t.jsx)(n.p,{children:"Represents the horizontal direction."}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,t.jsx)("a",{name:"POSITION_TOP"}),"\n",(0,t.jsxs)(n.h2,{id:"position_top--string",children:["POSITION_TOP : ",(0,t.jsx)("code",{children:"string"})]}),"\n",(0,t.jsx)(n.p,{children:"Indicates the top position."}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,t.jsx)("a",{name:"POSITION_BOTTOM"}),"\n",(0,t.jsxs)(n.h2,{id:"position_bottom--string",children:["POSITION_BOTTOM : ",(0,t.jsx)("code",{children:"string"})]}),"\n",(0,t.jsx)(n.p,{children:"Indicates the bottom position."}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,t.jsx)("a",{name:"POSITION_LEFT"}),"\n",(0,t.jsxs)(n.h2,{id:"position_left--string",children:["POSITION_LEFT : ",(0,t.jsx)("code",{children:"string"})]}),"\n",(0,t.jsx)(n.p,{children:"Indicates the left position."}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,t.jsx)("a",{name:"POSITION_RIGHT"}),"\n",(0,t.jsxs)(n.h2,{id:"position_right--string",children:["POSITION_RIGHT : ",(0,t.jsx)("code",{children:"string"})]}),"\n",(0,t.jsx)(n.p,{children:"Indicates the right position."}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,t.jsx)("a",{name:"PREFS_PURE_CODE"}),"\n",(0,t.jsxs)(n.h2,{id:"prefs_pure_code--string",children:["PREFS_PURE_CODE : ",(0,t.jsx)("code",{children:"string"})]}),"\n",(0,t.jsx)(n.p,{children:"Preference for a distraction-free mode."}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,t.jsx)("a",{name:"EVENT_PANEL_COLLAPSED"}),"\n",(0,t.jsxs)(n.h2,{id:"event_panel_collapsed--string",children:["EVENT_PANEL_COLLAPSED : ",(0,t.jsx)("code",{children:"string"})]}),"\n",(0,t.jsx)(n.p,{children:"Event triggered when a panel is collapsed."}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,t.jsx)("a",{name:"EVENT_PANEL_EXPANDED"}),"\n",(0,t.jsxs)(n.h2,{id:"event_panel_expanded--string",children:["EVENT_PANEL_EXPANDED : ",(0,t.jsx)("code",{children:"string"})]}),"\n",(0,t.jsx)(n.p,{children:"Event triggered when a panel is expanded."}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,t.jsx)("a",{name:"EVENT_PANEL_RESIZE_START"}),"\n",(0,t.jsxs)(n.h2,{id:"event_panel_resize_start--string",children:["EVENT_PANEL_RESIZE_START : ",(0,t.jsx)("code",{children:"string"})]}),"\n",(0,t.jsx)(n.p,{children:"Event triggered at the start of panel resizing."}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,t.jsx)("a",{name:"EVENT_PANEL_RESIZE_UPDATE"}),"\n",(0,t.jsxs)(n.h2,{id:"event_panel_resize_update--string",children:["EVENT_PANEL_RESIZE_UPDATE : ",(0,t.jsx)("code",{children:"string"})]}),"\n",(0,t.jsx)(n.p,{children:"Event triggered during panel resizing updates."}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,t.jsx)("a",{name:"EVENT_PANEL_RESIZE_END"}),"\n",(0,t.jsxs)(n.h2,{id:"event_panel_resize_end--string",children:["EVENT_PANEL_RESIZE_END : ",(0,t.jsx)("code",{children:"string"})]}),"\n",(0,t.jsx)(n.p,{children:"Event triggered at the end of panel resizing."}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,t.jsx)("a",{name:"show"}),"\n",(0,t.jsx)(n.h2,{id:"showelement",children:"show(element)"}),"\n",(0,t.jsx)(n.p,{children:"Shows a resizable element."}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Param"}),(0,t.jsx)(n.th,{children:"Type"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsx)(n.tbody,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"element"}),(0,t.jsx)(n.td,{children:(0,t.jsx)("code",{children:"DOMNode"})}),(0,t.jsx)(n.td,{children:"Html element to show if possible"})]})})]}),"\n",(0,t.jsx)("a",{name:"hide"}),"\n",(0,t.jsx)(n.h2,{id:"hideelement",children:"hide(element)"}),"\n",(0,t.jsx)(n.p,{children:"Hides a resizable element."}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Param"}),(0,t.jsx)(n.th,{children:"Type"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsx)(n.tbody,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"element"}),(0,t.jsx)(n.td,{children:(0,t.jsx)("code",{children:"DOMNode"})}),(0,t.jsx)(n.td,{children:"Html element to hide if possible"})]})})]}),"\n",(0,t.jsx)("a",{name:"toggle"}),"\n",(0,t.jsx)(n.h2,{id:"toggleelement",children:"toggle(element)"}),"\n",(0,t.jsx)(n.p,{children:"Changes the visibility state of a resizable element. The toggle\nfunctionality is added when an element is made resizable."}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Param"}),(0,t.jsx)(n.th,{children:"Type"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsx)(n.tbody,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"element"}),(0,t.jsx)(n.td,{children:(0,t.jsx)("code",{children:"DOMNode"})}),(0,t.jsx)(n.td,{children:"Html element to toggle"})]})})]}),"\n",(0,t.jsx)("a",{name:"removeSizable"}),"\n",(0,t.jsx)(n.h2,{id:"removesizableelement",children:"removeSizable(element)"}),"\n",(0,t.jsx)(n.p,{children:"Removes the resizability of an element if it's resizable"}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Param"}),(0,t.jsx)(n.th,{children:"Type"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsx)(n.tbody,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"element"}),(0,t.jsx)(n.td,{children:(0,t.jsx)("code",{children:"DOMNode"})}),(0,t.jsx)(n.td,{children:"Html element in which to remove sizing"})]})})]}),"\n",(0,t.jsx)("a",{name:"resyncSizer"}),"\n",(0,t.jsx)(n.h2,{id:"resyncsizerelement",children:"resyncSizer(element)"}),"\n",(0,t.jsx)(n.p,{children:"Updates the sizing div by resyncing to the sizing edge of the element\nCall this method after manually changing the size of the element"}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Param"}),(0,t.jsx)(n.th,{children:"Type"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsx)(n.tbody,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"element"}),(0,t.jsx)(n.td,{children:(0,t.jsx)("code",{children:"DOMNode"})}),(0,t.jsx)(n.td,{children:"Html element whose sizer should be resynchronized"})]})})]}),"\n",(0,t.jsx)("a",{name:"isVisible"}),"\n",(0,t.jsxs)(n.h2,{id:"isvisibleelement--boolean",children:["isVisible(element) \u21d2 ",(0,t.jsx)("code",{children:"boolean"})]}),"\n",(0,t.jsx)(n.p,{children:"Returns the visibility state of a resizable element."}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Kind"}),": global function",(0,t.jsx)(n.br,{}),"\n",(0,t.jsx)(n.strong,{children:"Returns"}),": ",(0,t.jsx)("code",{children:"boolean"})," - true if element is visible, false if it is not visible"]}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Param"}),(0,t.jsx)(n.th,{children:"Type"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsx)(n.tbody,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"element"}),(0,t.jsx)(n.td,{children:(0,t.jsx)("code",{children:"DOMNode"})}),(0,t.jsx)(n.td,{children:"Html element to toggle"})]})})]}),"\n",(0,t.jsx)("a",{name:"makeResizable"}),"\n",(0,t.jsx)(n.h2,{id:"makeresizableelement-direction-position-minsize-collapsible-forceleft-createdbyworkspacemanager-usepercentages-forceright-_attachtoparent-initialsize",children:"makeResizable(element, direction, position, minSize, collapsible, forceLeft, createdByWorkspaceManager, usePercentages, forceRight, _attachToParent, [initialSize])"}),"\n",(0,t.jsx)(n.p,{children:"Adds resizing and (optionally) expand/collapse capabilities to a given html element. The element's size\n& visibility are automatically saved & restored as a view-state preference."}),"\n",(0,t.jsx)(n.p,{children:"Resizing can be configured in two directions:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:'Vertical ("vert"): Resizes the height of the element'}),"\n",(0,t.jsx)(n.li,{children:'Horizontal ("horz"): Resizes the width of the element'}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:"Resizer handlers can be positioned on the element at:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:'Top ("top") or bottom ("bottom") for vertical resizing'}),"\n",(0,t.jsx)(n.li,{children:'Left ("left") or right ("right") for horizontal resizing'}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:"A resizable element triggers the following events while resizing:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"panelResizeStart: When the resize starts. Passed the new size."}),"\n",(0,t.jsx)(n.li,{children:"panelResizeUpdate: When the resize gets updated. Passed the new size."}),"\n",(0,t.jsx)(n.li,{children:"panelResizeEnd: When the resize ends. Passed the final size."}),"\n",(0,t.jsx)(n.li,{children:"panelCollapsed: When the panel gets collapsed (or hidden). Passed the last size\nbefore collapse. May occur without any resize events."}),"\n",(0,t.jsx)(n.li,{children:"panelExpanded: When the panel gets expanded (or shown). Passed the initial size.\nMay occur without any resize events."}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Param"}),(0,t.jsx)(n.th,{children:"Type"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"element"}),(0,t.jsx)(n.td,{children:(0,t.jsx)("code",{children:"DOMNode"})}),(0,t.jsx)(n.td,{children:"DOM element which should be made resizable. Must have an id attribute, for use as a preferences key."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"direction"}),(0,t.jsx)(n.td,{children:(0,t.jsx)("code",{children:"string"})}),(0,t.jsx)(n.td,{children:"Direction of the resize action: one of the DIRECTION_* constants."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"position"}),(0,t.jsx)(n.td,{children:(0,t.jsx)("code",{children:"string"})}),(0,t.jsx)(n.td,{children:"Which side of the element can be dragged: one of the POSITION_* constants (TOP/BOTTOM for vertical resizing or LEFT/RIGHT for horizontal)."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"minSize"}),(0,t.jsx)(n.td,{children:(0,t.jsx)("code",{children:"number"})}),(0,t.jsx)(n.td,{children:"Minimum size (width or height) of the element's outer dimensions, including border & padding. Defaults to DEFAULT_MIN_SIZE."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"collapsible"}),(0,t.jsx)(n.td,{children:(0,t.jsx)("code",{children:"boolean"})}),(0,t.jsx)(n.td,{children:"Indicates the panel is collapsible on double click on the resizer. Defaults to false."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"forceLeft"}),(0,t.jsx)(n.td,{children:(0,t.jsx)("code",{children:"string"})}),(0,t.jsx)(n.td,{children:"CSS selector indicating element whose 'left' should be locked to the the resizable element's size (useful for siblings laid out to the right of the element). Must lie in element's parent's subtree."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"createdByWorkspaceManager"}),(0,t.jsx)(n.td,{children:(0,t.jsx)("code",{children:"boolean"})}),(0,t.jsx)(n.td,{children:"For internal use only"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"usePercentages"}),(0,t.jsx)(n.td,{children:(0,t.jsx)("code",{children:"boolean"})}),(0,t.jsx)(n.td,{children:"Maintain the size of the element as a percentage of its parent the default is to maintain the size of the element in pixels"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"forceRight"}),(0,t.jsx)(n.td,{children:(0,t.jsx)("code",{children:"string"})}),(0,t.jsx)(n.td,{children:"CSS selector indicating element whose 'right' should be locked to the the resizable element's size (useful for siblings laid out to the left of the element). Must lie in element's parent's subtree."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"_attachToParent"}),(0,t.jsx)(n.td,{children:(0,t.jsx)("code",{children:"boolean"})}),(0,t.jsxs)(n.td,{children:["Attaches the resizer element to parent of the element rather than to element itself. Attach the resizer to the parent ",(0,t.jsx)(n.em,{children:"ONLY"})," if element has the same offset as parent otherwise the resizer will be incorrectly positioned. FOR INTERNAL USE ONLY"]})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"[initialSize]"}),(0,t.jsx)(n.td,{children:(0,t.jsx)("code",{children:"number"})}),(0,t.jsx)(n.td,{children:"Optional Initial size of panel in px. If not given, panel will use minsize or current size."})]})]})]})]})}function a(e={}){const{wrapper:n}={...(0,l.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(o,{...e})}):o(e)}},28453:(e,n,i)=>{i.d(n,{R:()=>r,x:()=>d});var s=i(96540);const t={},l=s.createContext(t);function r(e){const n=s.useContext(l);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:r(e.components),s.createElement(l.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/cbed2fe0.24b1e425.js b/assets/js/cbed2fe0.24b1e425.js new file mode 100644 index 00000000..f7fa6c83 --- /dev/null +++ b/assets/js/cbed2fe0.24b1e425.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[6472],{74675:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>o,contentTitle:()=>c,default:()=>h,frontMatter:()=>d,metadata:()=>i,toc:()=>l});const i=JSON.parse('{"id":"API-Reference/project/WorkingSetView","title":"WorkingSetView","description":"Import :","source":"@site/api/API-Reference/project/WorkingSetView.md","sourceDirName":"API-Reference/project","slug":"/API-Reference/project/WorkingSetView","permalink":"/api/API-Reference/project/WorkingSetView","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"WorkingSetSort","permalink":"/api/API-Reference/project/WorkingSetSort"},"next":{"title":"FileFilters","permalink":"/api/API-Reference/search/FileFilters"}}');var t=r(74848),s=r(28453);const d={},c=void 0,o={},l=[{value:"Import :",id:"import-",level:3},{value:"refresh()",id:"refresh",level:2},{value:"syncSelectionIndicator()",id:"syncselectionindicator",level:2},{value:"createWorkingSetViewForPane($container, paneId)",id:"createworkingsetviewforpanecontainer-paneid",level:2},{value:"addIconProvider(callback, [priority])",id:"addiconprovidercallback-priority",level:2},{value:"addClassProvider(callback, [priority])",id:"addclassprovidercallback-priority",level:2},{value:"getContext()",id:"getcontext",level:2}];function a(e){const n={code:"code",h2:"h2",h3:"h3",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,s.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h3,{id:"import-",children:"Import :"}),"\n",(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-js",children:'const WorkingSetView = brackets.getModule("project/WorkingSetView")\n'})}),"\n",(0,t.jsx)("a",{name:"refresh"}),"\n",(0,t.jsx)(n.h2,{id:"refresh",children:"refresh()"}),"\n",(0,t.jsx)(n.p,{children:"Refreshes all Pane View List Views"}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,t.jsx)("a",{name:"syncSelectionIndicator"}),"\n",(0,t.jsx)(n.h2,{id:"syncselectionindicator",children:"syncSelectionIndicator()"}),"\n",(0,t.jsx)(n.p,{children:"Synchronizes the selection indicator for all views"}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,t.jsx)("a",{name:"createWorkingSetViewForPane"}),"\n",(0,t.jsx)(n.h2,{id:"createworkingsetviewforpanecontainer-paneid",children:"createWorkingSetViewForPane($container, paneId)"}),"\n",(0,t.jsx)(n.p,{children:"Creates a new WorkingSetView object for the specified pane"}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Param"}),(0,t.jsx)(n.th,{children:"Type"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"$container"}),(0,t.jsx)(n.td,{children:(0,t.jsx)("code",{children:"jQuery"})}),(0,t.jsx)(n.td,{children:"the WorkingSetView's DOM parent node"})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"paneId"}),(0,t.jsx)(n.td,{children:(0,t.jsx)("code",{children:"string"})}),(0,t.jsx)(n.td,{children:"the id of the pane the view is being created for"})]})]})]}),"\n",(0,t.jsx)("a",{name:"addIconProvider"}),"\n",(0,t.jsx)(n.h2,{id:"addiconprovidercallback-priority",children:"addIconProvider(callback, [priority])"}),"\n",(0,t.jsx)(n.p,{children:"Adds an icon provider. The callback is invoked before each working set item is created, and can\nreturn content to prepend to the item if it supports the icon."}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Param"}),(0,t.jsx)(n.th,{children:"Type"}),(0,t.jsx)(n.th,{children:"Default"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"callback"}),(0,t.jsx)(n.td,{children:(0,t.jsx)("code",{children:"function"})}),(0,t.jsx)(n.td,{}),(0,t.jsx)(n.td,{children:"Return a string representing the HTML, a jQuery object or DOM node, or undefined. If undefined, nothing is prepended to the list item and the default or an available icon will be used."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"[priority]"}),(0,t.jsx)(n.td,{children:(0,t.jsx)("code",{children:"number"})}),(0,t.jsx)(n.td,{children:(0,t.jsx)("code",{children:"0"})}),(0,t.jsx)(n.td,{children:"optional priority. 0 being lowest. The icons with the highest priority wins if there are multiple callback providers attached. icon providers of the same priority first valid response wins."})]})]})]}),"\n",(0,t.jsx)("a",{name:"addClassProvider"}),"\n",(0,t.jsx)(n.h2,{id:"addclassprovidercallback-priority",children:"addClassProvider(callback, [priority])"}),"\n",(0,t.jsx)(n.p,{children:"Adds a CSS class provider, invoked before each working set item is created or updated. When called\nto update an existing item, all previously applied classes have been cleared."}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,t.jsxs)(n.table,{children:[(0,t.jsx)(n.thead,{children:(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.th,{children:"Param"}),(0,t.jsx)(n.th,{children:"Type"}),(0,t.jsx)(n.th,{children:"Default"}),(0,t.jsx)(n.th,{children:"Description"})]})}),(0,t.jsxs)(n.tbody,{children:[(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"callback"}),(0,t.jsx)(n.td,{children:(0,t.jsx)("code",{children:"function"})}),(0,t.jsx)(n.td,{}),(0,t.jsx)(n.td,{children:"Return a string containing space-separated CSS class(es) to add, or undefined to leave CSS unchanged."})]}),(0,t.jsxs)(n.tr,{children:[(0,t.jsx)(n.td,{children:"[priority]"}),(0,t.jsx)(n.td,{children:(0,t.jsx)("code",{children:"number"})}),(0,t.jsx)(n.td,{children:(0,t.jsx)("code",{children:"0"})}),(0,t.jsx)(n.td,{children:"optional priority. 0 being lowest. The class with the highest priority wins if there are multiple callback classes attached. class providers of the same priority will be appended."})]})]})]}),"\n",(0,t.jsx)("a",{name:"getContext"}),"\n",(0,t.jsx)(n.h2,{id:"getcontext",children:"getContext()"}),"\n",(0,t.jsx)(n.p,{children:"Gets the filesystem object for the current context in the working set."}),"\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Kind"}),": global function"]})]})}function h(e={}){const{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(a,{...e})}):a(e)}},28453:(e,n,r)=>{r.d(n,{R:()=>d,x:()=>c});var i=r(96540);const t={},s=i.createContext(t);function d(e){const n=i.useContext(s);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function c(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:d(e.components),i.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/cc6045d7.f4c57d20.js b/assets/js/cc6045d7.f4c57d20.js new file mode 100644 index 00000000..5737abd7 --- /dev/null +++ b/assets/js/cc6045d7.f4c57d20.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5973],{96287:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>r,contentTitle:()=>a,default:()=>c,frontMatter:()=>l,metadata:()=>t,toc:()=>d});var t=i(86161),s=i(74848),o=i(28453);const l={slug:"release-3.5",title:"March-2024 Release (V-3.5) is now Live",description:"Phoenix Code 3.5 improves large project support, Find in Files, inline HTML number dials, and app stability. Download for Windows, Mac, and Linux.",authors:["arun","charly","kiran","phoenixBot"],tags:["Native Apps","Windows","Linux","Mac","Release"]},a=void 0,r={authorsImageUrls:[void 0,void 0,void 0,void 0]},d=[{value:"Inline HTML Number Dials",id:"inline-html-number-dials",level:2},{value:"Search Filters - Advanced Find in Files",id:"search-filters---advanced-find-in-files",level:2},{value:"Other Improvements",id:"other-improvements",level:2},{value:"A Request from the Phoenix Team:",id:"a-request-from-the-phoenix-team",level:2}];function h(e){const n={a:"a",code:"code",h2:"h2",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(n.p,{children:["The March release(3.5) of Phoenix Code is now available for download\nat ",(0,s.jsx)(n.a,{href:"https://phcode.io",children:"phcode.io"}),".\nThis month's update improves support for large projects, Find in Files, and app stability."]}),"\n",(0,s.jsx)(n.h2,{id:"inline-html-number-dials",children:"Inline HTML Number Dials"}),"\n",(0,s.jsx)(n.p,{children:"You can now use number dials in inline HTML styles, not just in CSS files."}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:"https://github.com/phcode-dev/phoenix/assets/5336369/f56ab73b-c080-4f01-a083-f41aa10c3d16",alt:"image"})}),"\n",(0,s.jsx)(n.h2,{id:"search-filters---advanced-find-in-files",children:"Search Filters - Advanced Find in Files"}),"\n",(0,s.jsxs)(n.p,{children:["All new search filters to find exactly what you want. ",(0,s.jsx)(n.code,{children:"Search in files"})," or\n",(0,s.jsx)(n.code,{children:"Exclude files"})," matching the given pattern instantly."]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{src:"https://github.com/phcode-dev/phoenix/assets/5336369/9a46a6a8-01a2-45db-aebc-9b280977bdc1",alt:"new find in files"})}),"\n",(0,s.jsx)(n.h2,{id:"other-improvements",children:"Other Improvements"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"Projects with very large number of files can now be opened."}),"\n",(0,s.jsx)(n.li,{children:"Performance improvement when opening minified CSS/JS files and other formats\nwith very long lines."}),"\n",(0,s.jsx)(n.li,{children:"Added support for beautifying SCSS, SASS, LESS, TSX, and JSX files. The\nbeautification feature now preserves the cursor position."}),"\n",(0,s.jsx)(n.li,{children:"Improved startup speed and overall app stability."}),"\n",(0,s.jsx)(n.li,{children:"Bug fixes and improvements to new project dialog."}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"a-request-from-the-phoenix-team",children:"A Request from the Phoenix Team:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Share your feedback:"})," ",(0,s.jsx)(n.a,{href:"https://github.com/orgs/phcode-dev/discussions",children:"https://github.com/orgs/phcode-dev/discussions"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Spread the word"})," about Phoenix to friends and colleagues."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsxs)(n.a,{href:"https://opencollective.com/phoenix-ide",children:[(0,s.jsx)(n.strong,{children:"Consider supporting us"})," on Open Collective"]}),". Every contribution helps us to keep improving and expanding Phoenix Code."]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"With gratitude,"}),"\n",(0,s.jsx)(n.p,{children:"The Phoenix Team"})]})}function c(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},28453:(e,n,i)=>{i.d(n,{R:()=>l,x:()=>a});var t=i(96540);const s={},o=t.createContext(s);function l(e){const n=t.useContext(o);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),t.createElement(o.Provider,{value:n},e.children)}},86161:e=>{e.exports=JSON.parse('{"permalink":"/blog/release-3.5","editUrl":"https://github.com/phcode-dev/docs/blob/main/blog/2024-03-26-Release-3.5/index.md","source":"@site/blog/2024-03-26-Release-3.5/index.md","title":"March-2024 Release (V-3.5) is now Live","description":"Phoenix Code 3.5 improves large project support, Find in Files, inline HTML number dials, and app stability. Download for Windows, Mac, and Linux.","date":"2024-03-26T00:00:00.000Z","tags":[{"inline":true,"label":"Native Apps","permalink":"/blog/tags/native-apps"},{"inline":true,"label":"Windows","permalink":"/blog/tags/windows"},{"inline":true,"label":"Linux","permalink":"/blog/tags/linux"},{"inline":true,"label":"Mac","permalink":"/blog/tags/mac"},{"inline":true,"label":"Release","permalink":"/blog/tags/release"}],"readingTime":1.09,"hasTruncateMarker":false,"authors":[{"name":"Arun Bose","title":"Co-Founder, Phoenix Code","url":"https://github.com/abose","imageURL":"https://github.com/abose.png","key":"arun","page":null},{"name":"Charly P Abraham","title":"Co-Founder, Phoenix Code","url":"https://github.com/charlypa","imageURL":"https://github.com/charlypa.png","key":"charly","page":null},{"name":"Kiran Bose","title":"Community Contributor","url":"https://github.com/kiranbose","imageURL":"https://github.com/kiranbose.png","key":"kiran","page":null},{"name":"Phoenix Code Bot","title":"Our little elf who keeps the whole place together","url":"https://github.com/phoenixide","imageURL":"https://github.com/phoenixide.png","key":"phoenixBot","page":null}],"frontMatter":{"slug":"release-3.5","title":"March-2024 Release (V-3.5) is now Live","description":"Phoenix Code 3.5 improves large project support, Find in Files, inline HTML number dials, and app stability. Download for Windows, Mac, and Linux.","authors":["arun","charly","kiran","phoenixBot"],"tags":["Native Apps","Windows","Linux","Mac","Release"]},"unlisted":false,"prevItem":{"title":"April-2024 Release (V-3.6) is now Live","permalink":"/blog/release-3.6"},"nextItem":{"title":"Introducing Phoenix Code Desktop- Now on Windows, Mac & Linux","permalink":"/blog/welcome"}}')}}]); \ No newline at end of file diff --git a/assets/js/ccc32a24.3008264e.js b/assets/js/ccc32a24.3008264e.js new file mode 100644 index 00000000..82257a33 --- /dev/null +++ b/assets/js/ccc32a24.3008264e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3650],{88130:(e,i,t)=>{t.r(i),t.d(i,{assets:()=>l,contentTitle:()=>r,default:()=>h,frontMatter:()=>d,metadata:()=>n,toc:()=>u});const n=JSON.parse('{"id":"Editing & Code/quick-edit","title":"Quick Edit","description":"The Quick Edit feature in Phoenix Code allows you to edit CSS files directly within HTML files. This integration helps you focus on one file at a time, reducing distractions. Using Quick Edit with the Live Preview function provides immediate feedback on your changes, allowing you to adjust your CSS efficiently.","source":"@site/docs/04-Editing & Code/03-quick-edit.md","sourceDirName":"04-Editing & Code","slug":"/Features/quick-edit","permalink":"/docs/Features/quick-edit","draft":false,"unlisted":false,"editUrl":"https://github.com/phcode-dev/docs/blob/main/docs/04-Editing & Code/03-quick-edit.md","tags":[],"version":"current","sidebarPosition":3,"frontMatter":{"title":"Quick Edit","slug":"/Features/quick-edit"},"sidebar":"tutorialSidebar","previous":{"title":"Editing Colors","permalink":"/docs/editing-colors"},"next":{"title":"Syntax Highlighting","permalink":"/docs/Features/syntax-highlighting"}}');var s=t(74848),o=t(28453),c=(t(96540),t(56399));const d={title:"Quick Edit",slug:"/Features/quick-edit"},r=void 0,l={},u=[{value:"How to Use Quick Edit",id:"how-to-use-quick-edit",level:2},{value:"Visual Demonstration",id:"visual-demonstration",level:2}];function a(e){const i={code:"code",h2:"h2",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,o.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(i.p,{children:"The Quick Edit feature in Phoenix Code allows you to edit CSS files directly within HTML files. This integration helps you focus on one file at a time, reducing distractions. Using Quick Edit with the Live Preview function provides immediate feedback on your changes, allowing you to adjust your CSS efficiently."}),"\n",(0,s.jsx)(i.h2,{id:"how-to-use-quick-edit",children:"How to Use Quick Edit"}),"\n",(0,s.jsx)(i.p,{children:"Follow these steps to use the Quick Edit feature:"}),"\n",(0,s.jsxs)(i.ol,{children:["\n",(0,s.jsxs)(i.li,{children:["\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.strong,{children:"Position the Cursor"}),":\nPlace the cursor where you need to start Quick Edit in the HTML file."]}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.img,{alt:"Position the cursor for Quick Edit",src:t(45766).A+"",title:"Position the cursor at the desired HTML element",width:"1172",height:"119"})}),"\n"]}),"\n",(0,s.jsxs)(i.li,{children:["\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.strong,{children:"Access Quick Edit"}),":\nYou can access Quick Edit in one of three ways:"]}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"Keyboard Shortcut"}),": Press ",(0,s.jsx)(i.code,{children:"Ctrl + E"})," (Windows/Linux) or ",(0,s.jsx)(i.code,{children:"Cmd + E"})," (Mac)."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"Mouse Shortcut"}),": Combine ",(0,s.jsx)(i.code,{children:"Ctrl + click"})," (Windows/Linux) or ",(0,s.jsx)(i.code,{children:"Cmd + click"})," (Mac)."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"Context Menu"}),": Right-click to open the context menu and choose Quick Edit."]}),"\n"]}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.img,{alt:"Access Quick Edit from the context menu or using a shortcut",src:t(25489).A+"",title:"Choose any method to open the Quick Edit menu",width:"670",height:"489"})}),"\n"]}),"\n",(0,s.jsxs)(i.li,{children:["\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.strong,{children:"Edit CSS"}),":\nThe Quick Edit window will appear, showing the CSS related to your selected HTML element."]}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.img,{alt:"The Quick Edit window",src:t(98782).A+"",title:"Make CSS adjustments directly related to the selected element",width:"1410",height:"383"})}),"\n"]}),"\n",(0,s.jsxs)(i.li,{children:["\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.strong,{children:"Save and Close"}),":\nAfter you've made the necessary changes, save your edits and close the Quick Edit window to continue your work."]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(i.h2,{id:"visual-demonstration",children:"Visual Demonstration"}),"\n",(0,s.jsx)(i.p,{children:"Watch the video below to see the Quick Edit feature in action:"}),"\n",(0,s.jsx)(c.A,{src:"https://docs-images.phcode.dev/videos/quick-edit/quick_edit.mp4",winLinuxTitle:"Quick Edit Access: Ctrl+click / Ctrl+E",macTitle:"Quick Edit Access: Cmd+click / Cmd+E"})]})}function h(e={}){const{wrapper:i}={...(0,o.R)(),...e.components};return i?(0,s.jsx)(i,{...e,children:(0,s.jsx)(a,{...e})}):a(e)}},56399:(e,i,t)=>{t.d(i,{A:()=>o});var n=t(96540),s=t(74848);const o=({src:e,winLinuxTitle:i,macTitle:t})=>{const[o,c]=(0,n.useState)("");(0,n.useEffect)((()=>{navigator.platform.toLowerCase().includes("mac")?c(t):c(i)}),[i,t]);return(0,s.jsxs)("div",{style:{maxHeight:"68vh",width:"100%",display:"flex",justifyContent:"center",alignItems:"center",flexDirection:"column"},children:[(0,s.jsxs)("video",{style:{height:"90%",width:"100%"},controls:!0,autoPlay:!0,muted:!0,loop:!0,children:[(0,s.jsx)("source",{src:e,type:"video/mp4"}),"Your browser does not support the video tag."]}),(0,s.jsx)("div",{style:{width:"100%",textAlign:"center",fontSize:"1em",marginTop:"10px"},children:o})]})}},45766:(e,i,t)=>{t.d(i,{A:()=>n});const n=t.p+"assets/images/quickedit-aee08cd2747b91204c7586c408f3d331.png"},98782:(e,i,t)=>{t.d(i,{A:()=>n});const n=t.p+"assets/images/quickeditPanel-606ea89d20a31a1bb0c145ce3ec87ec5.png"},25489:(e,i,t)=>{t.d(i,{A:()=>n});const n=t.p+"assets/images/quickeditcontext-326718e201139fde2f79c6cf0111d6ac.png"},28453:(e,i,t)=>{t.d(i,{R:()=>c,x:()=>d});var n=t(96540);const s={},o=n.createContext(s);function c(e){const i=n.useContext(o);return n.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function d(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:c(e.components),n.createElement(o.Provider,{value:i},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/ccc49370.9120e0b2.js b/assets/js/ccc49370.9120e0b2.js new file mode 100644 index 00000000..dd04d62c --- /dev/null +++ b/assets/js/ccc49370.9120e0b2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3249],{82907:(e,t,n)=>{n.d(t,{A:()=>O});n(96540);var a=n(34164),s=n(44096),i=n(74848);function r({children:e,className:t}){return(0,i.jsx)("article",{className:t,children:e})}var l=n(28774);const o={title:"title_f1Hy"};function c({className:e}){const{metadata:t,isBlogPostPage:n}=(0,s.e7)(),{permalink:r,title:c}=t,d=n?"h1":"h2";return(0,i.jsx)(d,{className:(0,a.A)(o.title,e),children:n?c:(0,i.jsx)(l.A,{to:r,children:c})})}var d=n(21312),m=n(53465),u=n(36266);const g={container:"container_mt6G"};function h({readingTime:e}){const t=function(){const{selectMessage:e}=(0,m.W)();return t=>{const n=Math.ceil(t);return e(n,(0,d.T)({id:"theme.blog.post.readingTime.plurals",description:'Pluralized label for "{readingTime} min read". Use as much plural forms (separated by "|") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)',message:"One min read|{readingTime} min read"},{readingTime:n}))}}();return(0,i.jsx)(i.Fragment,{children:t(e)})}function x({date:e,formattedDate:t}){return(0,i.jsx)("time",{dateTime:e,children:t})}function f(){return(0,i.jsx)(i.Fragment,{children:" \xb7 "})}function p({className:e}){const{metadata:t}=(0,s.e7)(),{date:n,readingTime:r}=t,l=(0,u.i)({day:"numeric",month:"long",year:"numeric",timeZone:"UTC"});return(0,i.jsxs)("div",{className:(0,a.A)(g.container,"margin-vert--md",e),children:[(0,i.jsx)(x,{date:n,formattedDate:(o=n,l.format(new Date(o)))}),void 0!==r&&(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(f,{}),(0,i.jsx)(h,{readingTime:r})]})]});var o}var v=n(39907);const j={authorCol:"authorCol_Hf19",imageOnlyAuthorRow:"imageOnlyAuthorRow_pa_O",imageOnlyAuthorCol:"imageOnlyAuthorCol_G86a"};function b({className:e}){const{metadata:{authors:t},assets:n}=(0,s.e7)();if(0===t.length)return null;const r=t.every((({name:e})=>!e)),l=1===t.length;return(0,i.jsx)("div",{className:(0,a.A)("margin-top--md margin-bottom--sm",r?j.imageOnlyAuthorRow:"row",e),children:t.map(((e,t)=>(0,i.jsx)("div",{className:(0,a.A)(!r&&(l?"col col--12":"col col--6"),r?j.imageOnlyAuthorCol:j.authorCol),children:(0,i.jsx)(v.A,{author:{...e,imageURL:n.authorsImageUrls[t]??e.imageURL}})},t)))})}function A(){return(0,i.jsxs)("header",{children:[(0,i.jsx)(c,{}),(0,i.jsx)(p,{}),(0,i.jsx)(b,{})]})}var N=n(70440),_=n(56314);function L({children:e,className:t}){const{isBlogPostPage:n}=(0,s.e7)();return(0,i.jsx)("div",{id:n?N.LU:void 0,className:(0,a.A)("markdown",t),children:(0,i.jsx)(_.A,{children:e})})}var y=n(17559),C=n(4336),T=n(62053);function k(){return(0,i.jsx)("b",{children:(0,i.jsx)(d.A,{id:"theme.blog.post.readMore",description:"The label used in blog post item excerpts to link to full blog posts",children:"Read more"})})}function H(e){const{blogPostTitle:t,...n}=e;return(0,i.jsx)(l.A,{"aria-label":(0,d.T)({message:"Read more about {title}",id:"theme.blog.post.readMoreLabel",description:"The ARIA label for the link to full blog posts from excerpts"},{title:t}),...n,children:(0,i.jsx)(k,{})})}function w(){const{metadata:e,isBlogPostPage:t}=(0,s.e7)(),{tags:n,title:r,editUrl:l,hasTruncateMarker:o,lastUpdatedBy:c,lastUpdatedAt:d}=e,m=!t&&o,u=n.length>0;if(!(u||m||l))return null;if(t){const e=!!(l||d||c);return(0,i.jsxs)("footer",{className:"docusaurus-mt-lg",children:[u&&(0,i.jsx)("div",{className:(0,a.A)("row","margin-top--sm",y.G.blog.blogFooterEditMetaRow),children:(0,i.jsx)("div",{className:"col",children:(0,i.jsx)(T.A,{tags:n})})}),e&&(0,i.jsx)(C.A,{className:(0,a.A)("margin-top--sm",y.G.blog.blogFooterEditMetaRow),editUrl:l,lastUpdatedAt:d,lastUpdatedBy:c})]})}return(0,i.jsxs)("footer",{className:"row docusaurus-mt-lg",children:[u&&(0,i.jsx)("div",{className:(0,a.A)("col",{"col--9":m}),children:(0,i.jsx)(T.A,{tags:n})}),m&&(0,i.jsx)("div",{className:(0,a.A)("col text--right",{"col--3":u}),children:(0,i.jsx)(H,{blogPostTitle:r,to:e.permalink})})]})}function O({children:e,className:t}){const n=function(){const{isBlogPostPage:e}=(0,s.e7)();return e?void 0:"margin-bottom--xl"}();return(0,i.jsxs)(r,{className:(0,a.A)(n,t),children:[(0,i.jsx)(A,{}),(0,i.jsx)(L,{children:e}),(0,i.jsx)(w,{})]})}},73858:(e,t,n)=>{n.r(t),n.d(t,{default:()=>j});n(96540);var a=n(34164),s=n(45500),i=n(17559),r=n(44096),l=n(28027),o=n(82907),c=n(21312),d=n(39022),m=n(74848);function u(e){const{nextItem:t,prevItem:n}=e;return(0,m.jsxs)("nav",{className:"pagination-nav docusaurus-mt-lg","aria-label":(0,c.T)({id:"theme.blog.post.paginator.navAriaLabel",message:"Blog post page navigation",description:"The ARIA label for the blog posts pagination"}),children:[n&&(0,m.jsx)(d.A,{...n,subLabel:(0,m.jsx)(c.A,{id:"theme.blog.post.paginator.newerPost",description:"The blog post button label to navigate to the newer/previous post",children:"Newer post"})}),t&&(0,m.jsx)(d.A,{...t,subLabel:(0,m.jsx)(c.A,{id:"theme.blog.post.paginator.olderPost",description:"The blog post button label to navigate to the older/next post",children:"Older post"}),isNext:!0})]})}function g(){const{assets:e,metadata:t}=(0,r.e7)(),{title:n,description:a,date:i,tags:l,authors:o,frontMatter:c}=t,{keywords:d}=c,u=e.image??c.image;return(0,m.jsxs)(s.be,{title:c.title_meta??n,description:a,keywords:d,image:u,children:[(0,m.jsx)("meta",{property:"og:type",content:"article"}),(0,m.jsx)("meta",{property:"article:published_time",content:i}),o.some((e=>e.url))&&(0,m.jsx)("meta",{property:"article:author",content:o.map((e=>e.url)).filter(Boolean).join(",")}),l.length>0&&(0,m.jsx)("meta",{property:"article:tag",content:l.map((e=>e.label)).join(",")})]})}var h=n(5260);function x(){const e=(0,r.J_)();return(0,m.jsx)(h.A,{children:(0,m.jsx)("script",{type:"application/ld+json",children:JSON.stringify(e)})})}var f=n(67763),p=n(41689);function v({sidebar:e,children:t}){const{metadata:n,toc:a}=(0,r.e7)(),{nextItem:s,prevItem:i,frontMatter:c}=n,{hide_table_of_contents:d,toc_min_heading_level:g,toc_max_heading_level:h}=c;return(0,m.jsxs)(l.A,{sidebar:e,toc:!d&&a.length>0?(0,m.jsx)(f.A,{toc:a,minHeadingLevel:g,maxHeadingLevel:h}):void 0,children:[(0,m.jsx)(p.A,{metadata:n}),(0,m.jsx)(o.A,{children:t}),(s||i)&&(0,m.jsx)(u,{nextItem:s,prevItem:i})]})}function j(e){const t=e.content;return(0,m.jsx)(r.in,{content:e.content,isBlogPostPage:!0,children:(0,m.jsxs)(s.e3,{className:(0,a.A)(i.G.wrapper.blogPages,i.G.page.blogPostPage),children:[(0,m.jsx)(g,{}),(0,m.jsx)(x,{}),(0,m.jsx)(v,{sidebar:e.sidebar,children:(0,m.jsx)(t,{})})]})})}},32234:(e,t,n)=>{n.d(t,{A:()=>c});n(96540);var a=n(34164),s=n(44084),i=n(17559),r=n(27293),l=n(74848);function o({className:e}){return(0,l.jsx)(r.A,{type:"caution",title:(0,l.jsx)(s.Rc,{}),className:(0,a.A)(e,i.G.common.unlistedBanner),children:(0,l.jsx)(s.Uh,{})})}function c(e){return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(s.AE,{}),(0,l.jsx)(o,{...e})]})}},41689:(e,t,n)=>{n.d(t,{A:()=>d});n(96540);var a=n(34164),s=n(44084),i=n(17559),r=n(27293),l=n(74848);function o({className:e}){return(0,l.jsx)(r.A,{type:"caution",title:(0,l.jsx)(s.Yh,{}),className:(0,a.A)(e,i.G.common.draftBanner),children:(0,l.jsx)(s.TT,{})})}var c=n(32234);function d({metadata:e}){const{unlisted:t,frontMatter:n}=e;return(0,l.jsxs)(l.Fragment,{children:[(t||n.unlisted)&&(0,l.jsx)(c.A,{}),n.draft&&(0,l.jsx)(o,{})]})}},39022:(e,t,n)=>{n.d(t,{A:()=>r});n(96540);var a=n(34164),s=n(28774),i=n(74848);function r(e){const{permalink:t,title:n,subLabel:r,isNext:l}=e;return(0,i.jsxs)(s.A,{className:(0,a.A)("pagination-nav__link",l?"pagination-nav__link--next":"pagination-nav__link--prev"),to:t,children:[r&&(0,i.jsx)("div",{className:"pagination-nav__sublabel",children:r}),(0,i.jsx)("div",{className:"pagination-nav__label",children:n})]})}},67763:(e,t,n)=>{n.d(t,{A:()=>c});n(96540);var a=n(34164),s=n(65195);const i={tableOfContents:"tableOfContents_bqdL",docItemContainer:"docItemContainer_F8PC"};var r=n(74848);const l="table-of-contents__link toc-highlight",o="table-of-contents__link--active";function c({className:e,...t}){return(0,r.jsx)("div",{className:(0,a.A)(i.tableOfContents,"thin-scrollbar",e),children:(0,r.jsx)(s.A,{...t,linkClassName:l,linkActiveClassName:o})})}},65195:(e,t,n)=>{n.d(t,{A:()=>x});var a=n(96540),s=n(6342);function i(e){const t=e.map((e=>({...e,parentIndex:-1,children:[]}))),n=Array(7).fill(-1);t.forEach(((e,t)=>{const a=n.slice(2,e.level);e.parentIndex=Math.max(...a),n[e.level]=t}));const a=[];return t.forEach((e=>{const{parentIndex:n,...s}=e;n>=0?t[n].children.push(s):a.push(s)})),a}function r({toc:e,minHeadingLevel:t,maxHeadingLevel:n}){return e.flatMap((e=>{const a=r({toc:e.children,minHeadingLevel:t,maxHeadingLevel:n});return function(e){return e.level>=t&&e.level<=n}(e)?[{...e,children:a}]:a}))}function l(e){const t=e.getBoundingClientRect();return t.top===t.bottom?l(e.parentNode):t}function o(e,{anchorTopOffset:t}){const n=e.find((e=>l(e).top>=t));if(n){return function(e){return e.top>0&&e.bottom{e.current=t?0:document.querySelector(".navbar").clientHeight}),[t]),e}function d(e){const t=(0,a.useRef)(void 0),n=c();(0,a.useEffect)((()=>{if(!e)return()=>{};const{linkClassName:a,linkActiveClassName:s,minHeadingLevel:i,maxHeadingLevel:r}=e;function l(){const e=function(e){return Array.from(document.getElementsByClassName(e))}(a),l=function({minHeadingLevel:e,maxHeadingLevel:t}){const n=[];for(let a=e;a<=t;a+=1)n.push(`h${a}.anchor`);return Array.from(document.querySelectorAll(n.join()))}({minHeadingLevel:i,maxHeadingLevel:r}),c=o(l,{anchorTopOffset:n.current}),d=e.find((e=>c&&c.id===function(e){return decodeURIComponent(e.href.substring(e.href.indexOf("#")+1))}(e)));e.forEach((e=>{!function(e,n){n?(t.current&&t.current!==e&&t.current.classList.remove(s),e.classList.add(s),t.current=e):e.classList.remove(s)}(e,e===d)}))}return document.addEventListener("scroll",l),document.addEventListener("resize",l),l(),()=>{document.removeEventListener("scroll",l),document.removeEventListener("resize",l)}}),[e,n])}var m=n(28774),u=n(74848);function g({toc:e,className:t,linkClassName:n,isChild:a}){return e.length?(0,u.jsx)("ul",{className:a?void 0:t,children:e.map((e=>(0,u.jsxs)("li",{children:[(0,u.jsx)(m.A,{to:`#${e.id}`,className:n??void 0,dangerouslySetInnerHTML:{__html:e.value}}),(0,u.jsx)(g,{isChild:!0,toc:e.children,className:t,linkClassName:n})]},e.id)))}):null}const h=a.memo(g);function x({toc:e,className:t="table-of-contents table-of-contents__left-border",linkClassName:n="table-of-contents__link",linkActiveClassName:l,minHeadingLevel:o,maxHeadingLevel:c,...m}){const g=(0,s.p)(),x=o??g.tableOfContents.minHeadingLevel,f=c??g.tableOfContents.maxHeadingLevel,p=function({toc:e,minHeadingLevel:t,maxHeadingLevel:n}){return(0,a.useMemo)((()=>r({toc:i(e),minHeadingLevel:t,maxHeadingLevel:n})),[e,t,n])}({toc:e,minHeadingLevel:x,maxHeadingLevel:f});return d((0,a.useMemo)((()=>{if(n&&l)return{linkClassName:n,linkActiveClassName:l,minHeadingLevel:x,maxHeadingLevel:f}}),[n,l,x,f])),(0,u.jsx)(h,{toc:p,className:t,linkClassName:n,...m})}},56133:(e,t,n)=>{n.d(t,{A:()=>l});n(96540);var a=n(34164),s=n(28774);const i={tag:"tag_zVej",tagRegular:"tagRegular_sFm0",tagWithCount:"tagWithCount_h2kH"};var r=n(74848);function l({permalink:e,label:t,count:n,description:l}){return(0,r.jsxs)(s.A,{rel:"tag",href:e,title:l,className:(0,a.A)(i.tag,n?i.tagWithCount:i.tagRegular),children:[t,n&&(0,r.jsx)("span",{children:n})]})}},62053:(e,t,n)=>{n.d(t,{A:()=>o});n(96540);var a=n(34164),s=n(21312),i=n(56133);const r={tags:"tags_jXut",tag:"tag_QGVx"};var l=n(74848);function o({tags:e}){return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("b",{children:(0,l.jsx)(s.A,{id:"theme.tags.tagsListLabel",description:"The label alongside a tag list",children:"Tags:"})}),(0,l.jsx)("ul",{className:(0,a.A)(r.tags,"padding--none","margin-left--sm"),children:e.map((e=>(0,l.jsx)("li",{className:r.tag,children:(0,l.jsx)(i.A,{...e})},e.permalink)))})]})}},44084:(e,t,n)=>{n.d(t,{AE:()=>o,Rc:()=>r,TT:()=>d,Uh:()=>l,Yh:()=>c});n(96540);var a=n(21312),s=n(5260),i=n(74848);function r(){return(0,i.jsx)(a.A,{id:"theme.contentVisibility.unlistedBanner.title",description:"The unlisted content banner title",children:"Unlisted page"})}function l(){return(0,i.jsx)(a.A,{id:"theme.contentVisibility.unlistedBanner.message",description:"The unlisted content banner message",children:"This page is unlisted. Search engines will not index it, and only users having a direct link can access it."})}function o(){return(0,i.jsx)(s.A,{children:(0,i.jsx)("meta",{name:"robots",content:"noindex, nofollow"})})}function c(){return(0,i.jsx)(a.A,{id:"theme.contentVisibility.draftBanner.title",description:"The draft content banner title",children:"Draft page"})}function d(){return(0,i.jsx)(a.A,{id:"theme.contentVisibility.draftBanner.message",description:"The draft content banner message",children:"This page is a draft. It will only be visible in dev and be excluded from the production build."})}}}]); \ No newline at end of file diff --git a/assets/js/cd0fcd54.f7228ae1.js b/assets/js/cd0fcd54.f7228ae1.js new file mode 100644 index 00000000..57729933 --- /dev/null +++ b/assets/js/cd0fcd54.f7228ae1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7442],{88076:e=>{e.exports=JSON.parse('{"tag":{"label":"Color previews","permalink":"/blog/tags/color-previews","allTagsPath":"/blog/tags","count":1,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/color-previews","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]); \ No newline at end of file diff --git a/assets/js/ce0b856c.efeb5ac5.js b/assets/js/ce0b856c.efeb5ac5.js new file mode 100644 index 00000000..0f3bba27 --- /dev/null +++ b/assets/js/ce0b856c.efeb5ac5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[4593],{73373:(e,r,t)=>{t.r(r),t.d(r,{assets:()=>i,contentTitle:()=>c,default:()=>h,frontMatter:()=>l,metadata:()=>o,toc:()=>d});const o=JSON.parse('{"id":"API-Reference/utils/ColorUtils","title":"ColorUtils","description":"Import :","source":"@site/api/API-Reference/utils/ColorUtils.md","sourceDirName":"API-Reference/utils","slug":"/API-Reference/utils/ColorUtils","permalink":"/api/API-Reference/utils/ColorUtils","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"Async","permalink":"/api/API-Reference/utils/Async"},"next":{"title":"DeprecationWarning","permalink":"/api/API-Reference/utils/DeprecationWarning"}}');var n=t(74848),s=t(28453);const l={},c=void 0,i={},d=[{value:"Import :",id:"import-",level:3},{value:"@type : Array",id:"type--array",level:2},{value:"@type : RegExp",id:"type--regexp",level:2},{value:"formatColorHint($hintObj, color) \u21d2 jQuery",id:"formatcolorhinthintobj-color--jquery",level:2}];function a(e){const r={a:"a",br:"br",code:"code",h2:"h2",h3:"h3",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,s.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(r.h3,{id:"import-",children:"Import :"}),"\n",(0,n.jsx)(r.pre,{children:(0,n.jsx)(r.code,{className:"language-js",children:'const ColorUtils = brackets.getModule("utils/ColorUtils")\n'})}),"\n",(0,n.jsx)("a",{name:"@type"}),"\n",(0,n.jsxs)(r.h2,{id:"type--array",children:["@type : ",(0,n.jsx)("code",{children:"Array"})]}),"\n",(0,n.jsxs)(r.p,{children:["Sorted array of all the color names in the CSS Color Module Level 3 (",(0,n.jsx)(r.a,{href:"http://www.w3.org/TR/css3-color/",children:"http://www.w3.org/TR/css3-color/"}),')\nand "rebeccapurple" from CSS Color Module Level 4']}),"\n",(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.strong,{children:"Kind"}),": global constant"]}),"\n",(0,n.jsx)("a",{name:"@type"}),"\n",(0,n.jsxs)(r.h2,{id:"type--regexp",children:["@type : ",(0,n.jsx)("code",{children:"RegExp"})]}),"\n",(0,n.jsxs)(r.p,{children:["Regular expression that matches reasonably well-formed colors in hex format (3 or 6 digits),\nrgb()/rgba() function format, hsl()/hsla() function format, 0x notation format\nor color name format according to CSS Color Module Level 3 (",(0,n.jsx)(r.a,{href:"http://www.w3.org/TR/css3-color/",children:"http://www.w3.org/TR/css3-color/"}),')\nor "rebeccapurple" from CSS Color Module Level 4.']}),"\n",(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.strong,{children:"Kind"}),": global constant"]}),"\n",(0,n.jsx)("a",{name:"formatColorHint"}),"\n",(0,n.jsxs)(r.h2,{id:"formatcolorhinthintobj-color--jquery",children:["formatColorHint($hintObj, color) \u21d2 ",(0,n.jsx)("code",{children:"jQuery"})]}),"\n",(0,n.jsx)(r.p,{children:"Adds a color swatch to code hints where this is supported."}),"\n",(0,n.jsxs)(r.p,{children:[(0,n.jsx)(r.strong,{children:"Kind"}),": global function",(0,n.jsx)(r.br,{}),"\n",(0,n.jsx)(r.strong,{children:"Returns"}),": ",(0,n.jsx)("code",{children:"jQuery"})," - jQuery object with the correct class and/or style applied"]}),"\n",(0,n.jsxs)(r.table,{children:[(0,n.jsx)(r.thead,{children:(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.th,{children:"Param"}),(0,n.jsx)(r.th,{children:"Type"}),(0,n.jsx)(r.th,{children:"Description"})]})}),(0,n.jsxs)(r.tbody,{children:[(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"$hintObj"}),(0,n.jsx)(r.td,{children:(0,n.jsx)("code",{children:"jQuery"})}),(0,n.jsx)(r.td,{children:"list item where the swatch will be in"})]}),(0,n.jsxs)(r.tr,{children:[(0,n.jsx)(r.td,{children:"color"}),(0,n.jsx)(r.td,{children:(0,n.jsx)("code",{children:"string"})}),(0,n.jsx)(r.td,{children:"color the swatch should have, or null to add extra left margin to align with the other hints"})]})]})]})]})}function h(e={}){const{wrapper:r}={...(0,s.R)(),...e.components};return r?(0,n.jsx)(r,{...e,children:(0,n.jsx)(a,{...e})}):a(e)}},28453:(e,r,t)=>{t.d(r,{R:()=>l,x:()=>c});var o=t(96540);const n={},s=o.createContext(n);function l(e){const r=o.useContext(s);return o.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function c(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:l(e.components),o.createElement(s.Provider,{value:r},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/cf75f6de.481ea29b.js b/assets/js/cf75f6de.481ea29b.js new file mode 100644 index 00000000..775108ec --- /dev/null +++ b/assets/js/cf75f6de.481ea29b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7545],{15962:(e,n,d)=>{d.r(n),d.d(n,{assets:()=>o,contentTitle:()=>i,default:()=>a,frontMatter:()=>l,metadata:()=>t,toc:()=>h});const t=JSON.parse('{"id":"API-Reference/utils/ExtensionUtils","title":"ExtensionUtils","description":"Import :","source":"@site/api/API-Reference/utils/ExtensionUtils.md","sourceDirName":"API-Reference/utils","slug":"/API-Reference/utils/ExtensionUtils","permalink":"/api/API-Reference/utils/ExtensionUtils","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"ExtensionLoader","permalink":"/api/API-Reference/utils/ExtensionLoader"},"next":{"title":"FeatureGate","permalink":"/api/API-Reference/utils/FeatureGate"}}');var s=d(74848),r=d(28453);const l={},i=void 0,o={},h=[{value:"Import :",id:"import-",level:3},{value:"FileSystem",id:"filesystem",level:2},{value:"addEmbeddedStyleSheet(css) \u21d2 HTMLStyleElement",id:"addembeddedstylesheetcss--htmlstyleelement",level:2},{value:"addLinkedStyleSheet(url, [deferred]) \u21d2 HTMLLinkElement",id:"addlinkedstylesheeturl-deferred--htmllinkelement",level:2},{value:"parseLessCode(code, url) \u21d2 $.Promise",id:"parselesscodecode-url--promise",level:2},{value:"getModulePath(module, path) \u21d2 string",id:"getmodulepathmodule-path--string",level:2},{value:"getModuleUrl(module, path) \u21d2 string",id:"getmoduleurlmodule-path--string",level:2},{value:"loadFile(module, path) \u21d2 $.Promise",id:"loadfilemodule-path--promise",level:2},{value:"loadStyleSheet(module, path) \u21d2 $.Promise",id:"loadstylesheetmodule-path--promise",level:2},{value:"loadMetadata(metadataURL, extensionName) \u21d2 $.Promise",id:"loadmetadatametadataurl-extensionname--promise",level:2}];function c(e){const n={br:"br",code:"code",h2:"h2",h3:"h3",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,r.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h3,{id:"import-",children:"Import :"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-js",children:'const ExtensionUtils = brackets.getModule("utils/ExtensionUtils")\n'})}),"\n",(0,s.jsx)("a",{name:"FileSystem"}),"\n",(0,s.jsx)(n.h2,{id:"filesystem",children:"FileSystem"}),"\n",(0,s.jsx)(n.p,{children:"ExtensionUtils defines utility methods for implementing extensions."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,s.jsx)("a",{name:"addEmbeddedStyleSheet"}),"\n",(0,s.jsxs)(n.h2,{id:"addembeddedstylesheetcss--htmlstyleelement",children:["addEmbeddedStyleSheet(css) \u21d2 ",(0,s.jsx)("code",{children:"HTMLStyleElement"})]}),"\n",(0,s.jsx)(n.p,{children:'Appends a "style" tag to the document\'s head.'}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"HTMLStyleElement"})," - The generated HTML node"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"css"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(n.td,{children:"CSS code to use as the tag's content"})]})})]}),"\n",(0,s.jsx)("a",{name:"addLinkedStyleSheet"}),"\n",(0,s.jsxs)(n.h2,{id:"addlinkedstylesheeturl-deferred--htmllinkelement",children:["addLinkedStyleSheet(url, [deferred]) \u21d2 ",(0,s.jsx)("code",{children:"HTMLLinkElement"})]}),"\n",(0,s.jsx)(n.p,{children:'Appends a "link" tag to the document\'s head.'}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"HTMLLinkElement"})," - The generated HTML node"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"url"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(n.td,{children:"URL to a style sheet"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"[deferred]"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"$.Deferred"})}),(0,s.jsx)(n.td,{children:"Optionally check for load and error events"})]})]})]}),"\n",(0,s.jsx)("a",{name:"parseLessCode"}),"\n",(0,s.jsxs)(n.h2,{id:"parselesscodecode-url--promise",children:["parseLessCode(code, url) \u21d2 ",(0,s.jsx)("code",{children:"$.Promise"})]}),"\n",(0,s.jsx)(n.p,{children:"Parses LESS code and returns a promise that resolves with plain CSS code."}),"\n",(0,s.jsx)(n.p,{children:'Pass the link url argument to resolve relative URLs contained in the code.\nMake sure URLs in the code are wrapped in quotes, like so:\nbackground-image: url("image.png");'}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"$.Promise"})," - A promise object that is resolved with CSS code if the LESS code can be parsed"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"code"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(n.td,{children:"LESS code to parse"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"url"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(n.td,{children:"URL to the file containing the code"})]})]})]}),"\n",(0,s.jsx)("a",{name:"getModulePath"}),"\n",(0,s.jsxs)(n.h2,{id:"getmodulepathmodule-path--string",children:["getModulePath(module, path) \u21d2 ",(0,s.jsx)("code",{children:"string"})]}),"\n",(0,s.jsx)(n.p,{children:"Returns a path to an extension module."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"string"})," - The path to the module's folder"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"module"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"module"})}),(0,s.jsx)(n.td,{children:"Module provided by RequireJS"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"path"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(n.td,{children:"Relative path from the extension folder to a file"})]})]})]}),"\n",(0,s.jsx)("a",{name:"getModuleUrl"}),"\n",(0,s.jsxs)(n.h2,{id:"getmoduleurlmodule-path--string",children:["getModuleUrl(module, path) \u21d2 ",(0,s.jsx)("code",{children:"string"})]}),"\n",(0,s.jsx)(n.p,{children:"Returns a URL to an extension module."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"string"})," - The URL to the module's folder"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"module"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"module"})}),(0,s.jsx)(n.td,{children:"Module provided by RequireJS"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"path"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(n.td,{children:"Relative path from the extension folder to a file"})]})]})]}),"\n",(0,s.jsx)("a",{name:"loadFile"}),"\n",(0,s.jsxs)(n.h2,{id:"loadfilemodule-path--promise",children:["loadFile(module, path) \u21d2 ",(0,s.jsx)("code",{children:"$.Promise"})]}),"\n",(0,s.jsx)(n.p,{children:"Performs a GET request using a path relative to an extension module."}),"\n",(0,s.jsx)(n.p,{children:"The resulting URL can be retrieved in the resolve callback by accessing"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"$.Promise"})," - A promise object that is resolved with the contents of the requested file"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"module"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"module"})}),(0,s.jsx)(n.td,{children:"Module provided by RequireJS"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"path"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(n.td,{children:"Relative path from the extension folder to a file"})]})]})]}),"\n",(0,s.jsx)("a",{name:"loadStyleSheet"}),"\n",(0,s.jsxs)(n.h2,{id:"loadstylesheetmodule-path--promise",children:["loadStyleSheet(module, path) \u21d2 ",(0,s.jsx)("code",{children:"$.Promise"})]}),"\n",(0,s.jsx)(n.p,{children:"Loads a style sheet (CSS or LESS) relative to the extension module."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"$.Promise"})," - A promise object that is resolved with an HTML node if the file can be loaded."]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"module"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"module"})}),(0,s.jsx)(n.td,{children:"Module provided by RequireJS"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"path"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(n.td,{children:"Relative path from the extension folder to a CSS or LESS file"})]})]})]}),"\n",(0,s.jsx)("a",{name:"loadMetadata"}),"\n",(0,s.jsxs)(n.h2,{id:"loadmetadatametadataurl-extensionname--promise",children:["loadMetadata(metadataURL, extensionName) \u21d2 ",(0,s.jsx)("code",{children:"$.Promise"})]}),"\n",(0,s.jsx)(n.p,{children:"Loads the package.json file in the given extension folder as well as any additional\nmetadata for default extensions in the source directory."}),"\n",(0,s.jsx)(n.p,{children:"If there's a .disabled file in the extension directory, then the content of package.json\nwill be augmented with disabled property set to true. It will override whatever value of\ndisabled might be set."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"$.Promise"})," - A promise object that is resolved with the parsed contents of the package.json file,\nor rejected if there is no package.json with the boolean indicating whether .disabled file exists."]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"metadataURL"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(n.td,{children:"The extension folder/base url for default extensions."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"extensionName"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(n.td,{children:"name of the extension"})]})]})]})]})}function a(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(c,{...e})}):c(e)}},28453:(e,n,d)=>{d.d(n,{R:()=>l,x:()=>i});var t=d(96540);const s={},r=t.createContext(s);function l(e){const n=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:l(e.components),t.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/d09b4b9f.8e98503b.js b/assets/js/d09b4b9f.8e98503b.js new file mode 100644 index 00000000..c673bb53 --- /dev/null +++ b/assets/js/d09b4b9f.8e98503b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1441],{44331:(e,r,t)=>{t.r(r),t.d(r,{assets:()=>l,contentTitle:()=>o,default:()=>a,frontMatter:()=>d,metadata:()=>n,toc:()=>c});const n=JSON.parse('{"id":"API-Reference/editor/Editor","title":"Editor","description":"Import :","source":"@site/api/API-Reference/editor/Editor.md","sourceDirName":"API-Reference/editor","slug":"/API-Reference/editor/","permalink":"/api/API-Reference/editor/","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"TextRange","permalink":"/api/API-Reference/document/TextRange"},"next":{"title":"CodeHintManager","permalink":"/api/API-Reference/editor/CodeHintManager"}}');var i=t(74848),s=t(28453);const d={},o=void 0,l={},c=[{value:"Import :",id:"import-",level:3},{value:"Editor",id:"editor",level:2},{value:"new Editor(document, makeMasterEditor, container, [range], options)",id:"new-editordocument-makemastereditor-container-range-options",level:3},{value:"editor.addInlineWidget \u21d2 $.Promise",id:"editoraddinlinewidget--promise",level:3},{value:"editor.removeAllInlineWidgets",id:"editorremoveallinlinewidgets",level:3},{value:"editor.removeInlineWidget \u21d2 $.Promise",id:"editorremoveinlinewidget--promise",level:3},{value:"editor.removeAllInlineWidgetsForLine",id:"editorremoveallinlinewidgetsforline",level:3},{value:"editor.getAllInlineWidgetsForLine",id:"editorgetallinlinewidgetsforline",level:3},{value:"editor.getInlineWidgets \u21d2 Object",id:"editorgetinlinewidgets--object",level:3},{value:"editor.getFocusedInlineWidget \u21d2 InlineWidget",id:"editorgetfocusedinlinewidget--inlinewidget",level:3},{value:"editor.setInlineWidgetHeight",id:"editorsetinlinewidgetheight",level:3},{value:"editor.document : Document",id:"editordocument--document",level:3},{value:"editor.getInlineWidgetsBelowCursor() \u21d2 boolean",id:"editorgetinlinewidgetsbelowcursor--boolean",level:3},{value:"editor.canConsumeEscapeKeyEvent()",id:"editorcanconsumeescapekeyevent",level:3},{value:"editor.destroy()",id:"editordestroy",level:3},{value:"editor.selectAllNoScroll()",id:"editorselectallnoscroll",level:3},{value:"editor.isTextSubset() \u21d2 boolean",id:"editoristextsubset--boolean",level:3},{value:"editor.getFile() \u21d2 File",id:"editorgetfile--file",level:3},{value:"editor.getCursorPos([expandTabs], [which]) \u21d2 Object",id:"editorgetcursorposexpandtabs-which--object",level:3},{value:"editor.getEndingCursorPos([expandTabs]) \u21d2 Object",id:"editorgetendingcursorposexpandtabs--object",level:3},{value:"editor.getColOffset(pos) \u21d2 number",id:"editorgetcoloffsetpos--number",level:3},{value:"editor.getCharIndexForColumn(lineNum, column) \u21d2 number",id:"editorgetcharindexforcolumnlinenum-column--number",level:3},{value:"editor.setCursorPos(line, ch, [center], [expandTabs])",id:"editorsetcursorposline-ch-center-expandtabs",level:3},{value:"editor.setSize(width, height)",id:"editorsetsizewidth-height",level:3},{value:"editor.getViewport() \u21d2 Object",id:"editorgetviewport--object",level:3},{value:"editor.centerOnCursor(centerOptions)",id:"editorcenteroncursorcenteroptions",level:3},{value:"editor.indexFromPos(cursorPos) \u21d2 number",id:"editorindexfromposcursorpos--number",level:3},{value:"editor.posFromIndex(index) \u21d2 Object",id:"editorposfromindexindex--object",level:3},{value:"editor.posWithinRange(pos, start, end, endInclusive)",id:"editorposwithinrangepos-start-end-endinclusive",level:3},{value:"editor.hasSelection() \u21d2 boolean",id:"editorhasselection--boolean",level:3},{value:"editor.getSelection() \u21d2 Object",id:"editorgetselection--object",level:3},{value:"editor.getSelections() \u21d2 Object",id:"editorgetselections--object",level:3},{value:"editor.hasMultipleCursors() \u21d2 boolean",id:"editorhasmultiplecursors--boolean",level:3},{value:"editor.convertToLineSelections(selections, options) \u21d2 Object",id:"editorconverttolineselectionsselections-options--object",level:3},{value:"editor.getSelectedText([allSelections]) \u21d2 string",id:"editorgetselectedtextallselections--string",level:3},{value:"editor.coordsChar(coordinates, [mode]) \u21d2 Object",id:"editorcoordscharcoordinates-mode--object",level:3},{value:"editor.charCoords(pos, [mode]) \u21d2 Object",id:"editorcharcoordspos-mode--object",level:3},{value:"editor.getToken([cursor], [precise]) \u21d2 Object",id:"editorgettokencursor-precise--object",level:3},{value:"editor.getCharacterAtPosition(pos) \u21d2 string | null",id:"editorgetcharacteratpositionpos--string--null",level:3},{value:"editor.getLine(lineNumber) \u21d2 string | null",id:"editorgetlinelinenumber--string--null",level:3},{value:"editor.getPrevCharacterAtPosition(pos) \u21d2 string | null",id:"editorgetprevcharacteratpositionpos--string--null",level:3},{value:"editor.getNextToken([cursor], [skipWhitespace], [precise]) \u21d2 Object",id:"editorgetnexttokencursor-skipwhitespace-precise--object",level:3},{value:"editor.getPreviousToken([cursor], [skipWhitespace], [precise]) \u21d2 Object",id:"editorgetprevioustokencursor-skipwhitespace-precise--object",level:3},{value:"editor.operation(execFn) \u21d2 *",id:"editoroperationexecfn--",level:3},{value:"editor.markToken(markType, cursor, [options]) \u21d2 Object",id:"editormarktokenmarktype-cursor-options--object",level:3},{value:"editor.setBookmark(markType, [cursorPos], [options]) \u21d2 Object",id:"editorsetbookmarkmarktype-cursorpos-options--object",level:3},{value:"editor.findMarks(cursorFrom, cursorTo, [markType]) \u21d2 Array.<TextMarker>",id:"editorfindmarkscursorfrom-cursorto-marktype--arraytextmarker",level:3},{value:"editor.findMarksAt(cursorPos, [markType]) \u21d2 Array.<TextMarker>",id:"editorfindmarksatcursorpos-marktype--arraytextmarker",level:3},{value:"editor.getMarksAfter(position, markType) \u21d2 Array.<TextMarker>",id:"editorgetmarksafterposition-marktype--arraytextmarker",level:3},{value:"editor.getMarksBefore(position, markType) \u21d2 Array.<TextMarker>",id:"editorgetmarksbeforeposition-marktype--arraytextmarker",level:3},{value:"editor.getAllMarks([markType]) \u21d2 Array.<TextMarker>",id:"editorgetallmarksmarktype--arraytextmarker",level:3},{value:"editor.clearAllMarks([markType], [lineNumbers])",id:"editorclearallmarksmarktype-linenumbers",level:3},{value:"editor.isSamePosition(position1, position2) \u21d2 boolean",id:"editorissamepositionposition1-position2--boolean",level:3},{value:"editor.getHistory() \u21d2 Array",id:"editorgethistory--array",level:3},{value:"editor.setHistory()",id:"editorsethistory",level:3},{value:"editor.createHistoryRestorePoint(restorePointName)",id:"editorcreatehistoryrestorepointrestorepointname",level:3},{value:"editor.restoreHistoryPoint(restorePointName)",id:"editorrestorehistorypointrestorepointname",level:3},{value:"editor.setSelection(start, [end], [center], [centerOptions], [origin])",id:"editorsetselectionstart-end-center-centeroptions-origin",level:3},{value:"editor.replaceSelection(replacement, [select])",id:"editorreplaceselectionreplacement-select",level:3},{value:"editor.replaceSelections(replacement, [select])",id:"editorreplaceselectionsreplacement-select",level:3},{value:"editor.replaceRange(replacement, from, [to], origin)",id:"editorreplacerangereplacement-from-to-origin",level:3},{value:"editor.replaceMultipleRanges(ranges, [origin])",id:"editorreplacemultiplerangesranges-origin",level:3},{value:"editor.clearSelection()",id:"editorclearselection",level:3},{value:"editor.setSelections(selections, center, centerOptions, origin)",id:"editorsetselectionsselections-center-centeroptions-origin",level:3},{value:"editor.toggleOverwrite(start)",id:"editortoggleoverwritestart",level:3},{value:"editor.selectWordAt(pos)",id:"editorselectwordatpos",level:3},{value:"editor.getTextBetween(startPos, endPos) \u21d2 string",id:"editorgettextbetweenstartpos-endpos--string",level:3},{value:"editor.getWordAt(pos) \u21d2 Object",id:"editorgetwordatpos--object",level:3},{value:"editor.getNumberAt(pos, maxDigits) \u21d2 Object",id:"editorgetnumberatpos-maxdigits--object",level:3},{value:"editor.lineCount() \u21d2 number",id:"editorlinecount--number",level:3},{value:"editor.isLineVisible(zero-based) \u21d2 boolean",id:"editorislinevisiblezero-based--boolean",level:3},{value:"editor.getFirstVisibleLine() \u21d2 number",id:"editorgetfirstvisibleline--number",level:3},{value:"editor.getLastVisibleLine() \u21d2 number",id:"editorgetlastvisibleline--number",level:3},{value:"editor.totalHeight() \u21d2 number",id:"editortotalheight--number",level:3},{value:"editor.getScrollerElement() \u21d2 HTMLDivElement",id:"editorgetscrollerelement--htmldivelement",level:3},{value:"editor.getRootElement() \u21d2 HTMLDivElement",id:"editorgetrootelement--htmldivelement",level:3},{value:"editor.getScrollPos() \u21d2 Object",id:"editorgetscrollpos--object",level:3},{value:"editor.adjustScrollPos(scrollPos, heightDelta)",id:"editoradjustscrollposscrollpos-heightdelta",level:3},{value:"editor.setScrollPos(x, y)",id:"editorsetscrollposx-y",level:3},{value:"editor.getTextHeight() \u21d2 number",id:"editorgettextheight--number",level:3},{value:"editor.displayErrorMessageAtCursor(errorMsg)",id:"editordisplayerrormessageatcursorerrormsg",level:3},{value:"editor.getVirtualScrollAreaTop() \u21d2 number",id:"editorgetvirtualscrollareatop--number",level:3},{value:"editor.focus()",id:"editorfocus",level:3},{value:"editor.hasFocus()",id:"editorhasfocus",level:3},{value:"editor.getViewState() \u21d2 EditorViewState",id:"editorgetviewstate--editorviewstate",level:3},{value:"editor.restoreViewState(viewState)",id:"editorrestoreviewstateviewstate",level:3},{value:"editor.refresh([handleResize])",id:"editorrefreshhandleresize",level:3},{value:"editor.refreshAll([handleResize])",id:"editorrefreshallhandleresize",level:3},{value:"editor.undo()",id:"editorundo",level:3},{value:"editor.redo()",id:"editorredo",level:3},{value:"editor.notifyVisibilityChange(show, refresh)",id:"editornotifyvisibilitychangeshow-refresh",level:3},{value:"editor.setVisible(show, refresh)",id:"editorsetvisibleshow-refresh",level:3},{value:"editor.isFullyVisible()",id:"editorisfullyvisible",level:3},{value:"editor.getModeForRange(start, end, [knownMixed]) \u21d2 Object | string",id:"editorgetmodeforrangestart-end-knownmixed--object--string",level:3},{value:"editor.getModeForSelection(selection) \u21d2 Object | string",id:"editorgetmodeforselectionselection--object--string",level:3},{value:"editor.getLanguageForSelection() \u21d2 Language",id:"editorgetlanguageforselection--language",level:3},{value:"editor.getLanguageForPosition() \u21d2 Language",id:"editorgetlanguageforposition--language",level:3},{value:"editor.getModeForDocument() \u21d2 Object | String",id:"editorgetmodefordocument--object--string",level:3},{value:"editor.updateLayout([forceRefresh])",id:"editorupdatelayoutforcerefresh",level:3},{value:"editor.setGutterMarker(lineNumber, gutterName, marker) \u21d2 Object",id:"editorsetguttermarkerlinenumber-guttername-marker--object",level:3},{value:"editor.getGutterMarker(lineNumber, gutterName)",id:"editorgetguttermarkerlinenumber-guttername",level:3},{value:"editor.clearGutterMarker(lineNumber, gutterName)",id:"editorclearguttermarkerlinenumber-guttername",level:3},{value:"editor.isGutterActive(gutterName)",id:"editorisgutteractiveguttername",level:3},{value:"editor.clearGutter(gutterName)",id:"editorcleargutterguttername",level:3},{value:"Editor.getMarkOptionUnderlineError",id:"editorgetmarkoptionunderlineerror",level:3},{value:"Editor.getMarkOptionUnderlineWarn",id:"editorgetmarkoptionunderlinewarn",level:3},{value:"Editor.getMarkOptionUnderlineInfo",id:"editorgetmarkoptionunderlineinfo",level:3},{value:"Editor.getMarkOptionUnderlineSpellcheck",id:"editorgetmarkoptionunderlinespellcheck",level:3},{value:"Editor.getMarkOptionHyperlinkText",id:"editorgetmarkoptionhyperlinktext",level:3},{value:"Editor.getMarkOptionMatchingRefs",id:"editorgetmarkoptionmatchingrefs",level:3},{value:"Editor.getMarkOptionRenameOutline",id:"editorgetmarkoptionrenameoutline",level:3},{value:"Editor.getRegisteredGutters() \u21d2 Object",id:"editorgetregisteredgutters--object",level:3},{value:"Editor.isGutterRegistered(gutterName) \u21d2 boolean",id:"editorisgutterregisteredguttername--boolean",level:3},{value:"Editor.registerGutter(name, priority, [languageIds])",id:"editorregisterguttername-priority-languageids",level:3},{value:"Editor.unregisterGutter(name)",id:"editorunregisterguttername",level:3},{value:"Editor.setUseTabChar(value, [fullPath]) \u21d2 boolean",id:"editorsetusetabcharvalue-fullpath--boolean",level:3},{value:"Editor.getUseTabChar([fullPath]) \u21d2 boolean",id:"editorgetusetabcharfullpath--boolean",level:3},{value:"Editor.setTabSize(value, [fullPath]) \u21d2 boolean",id:"editorsettabsizevalue-fullpath--boolean",level:3},{value:"Editor.getTabSize([fullPath]) \u21d2 number",id:"editorgettabsizefullpath--number",level:3},{value:"Editor.getAutoTabUnits(fullPath) \u21d2 number | *",id:"editorgetautotabunitsfullpath--number--",level:3},{value:"Editor.setAutoTabSpaces(value, [fullPath]) \u21d2 boolean",id:"editorsetautotabspacesvalue-fullpath--boolean",level:3},{value:"Editor.getAutoTabSpaces([fullPath]) \u21d2 number",id:"editorgetautotabspacesfullpath--number",level:3},{value:"Editor.setSpaceUnits(value, [fullPath]) \u21d2 boolean",id:"editorsetspaceunitsvalue-fullpath--boolean",level:3},{value:"Editor.getSpaceUnits([fullPath]) \u21d2 number",id:"editorgetspaceunitsfullpath--number",level:3},{value:"Editor.setCloseBrackets(value, [fullPath]) \u21d2 boolean",id:"editorsetclosebracketsvalue-fullpath--boolean",level:3},{value:"Editor.getCloseBrackets([fullPath]) \u21d2 boolean",id:"editorgetclosebracketsfullpath--boolean",level:3},{value:"Editor.setShowLineNumbers(value, [fullPath]) \u21d2 boolean",id:"editorsetshowlinenumbersvalue-fullpath--boolean",level:3},{value:"Editor.getShowLineNumbers([fullPath]) \u21d2 boolean",id:"editorgetshowlinenumbersfullpath--boolean",level:3},{value:"Editor.setShowActiveLine(value, [fullPath]) \u21d2 boolean",id:"editorsetshowactivelinevalue-fullpath--boolean",level:3},{value:"Editor.getShowActiveLine([fullPath]) \u21d2 boolean",id:"editorgetshowactivelinefullpath--boolean",level:3},{value:"Editor.setWordWrap(value, [fullPath]) \u21d2 boolean",id:"editorsetwordwrapvalue-fullpath--boolean",level:3},{value:"Editor.getWordWrap([fullPath]) \u21d2 boolean",id:"editorgetwordwrapfullpath--boolean",level:3},{value:"Editor.setIndentLineComment(value, [fullPath]) \u21d2 boolean",id:"editorsetindentlinecommentvalue-fullpath--boolean",level:3},{value:"Editor.getIndentLineComment([fullPath]) \u21d2 boolean",id:"editorgetindentlinecommentfullpath--boolean",level:3},{value:"Editor.forEveryEditor(callback, [fullPath])",id:"editorforeveryeditorcallback-fullpath",level:3},{value:"CommandManager",id:"commandmanager",level:2},{value:"BOUNDARY_CHECK_NORMAL : number",id:"boundary_check_normal--number",level:2},{value:"BOUNDARY_IGNORE_TOP : number",id:"boundary_ignore_top--number",level:2},{value:"BOUNDARY_BULLSEYE : number",id:"boundary_bullseye--number",level:2},{value:"CENTERING_MARGIN",id:"centering_margin",level:2}];function h(e){const r={a:"a",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(r.h3,{id:"import-",children:"Import :"}),"\n",(0,i.jsx)(r.pre,{children:(0,i.jsx)(r.code,{className:"language-js",children:'const Editor = brackets.getModule("editor/Editor")\n'})}),"\n",(0,i.jsx)("a",{name:"Editor"}),"\n",(0,i.jsx)(r.h2,{id:"editor",children:"Editor"}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": global class"]}),"\n",(0,i.jsxs)(r.ul,{children:["\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor",children:"Editor"}),"\n",(0,i.jsxs)(r.ul,{children:["\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"#new_Editor_new",children:"new Editor(document, makeMasterEditor, container, [range], options)"})}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.em,{children:"instance"}),"\n",(0,i.jsxs)(r.ul,{children:["\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor+addInlineWidget",children:".addInlineWidget"})," \u21d2 ",(0,i.jsx)("code",{children:"$.Promise"})]}),"\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"#Editor+removeAllInlineWidgets",children:".removeAllInlineWidgets"})}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor+removeInlineWidget",children:".removeInlineWidget"})," \u21d2 ",(0,i.jsx)("code",{children:"$.Promise"})]}),"\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"#Editor+removeAllInlineWidgetsForLine",children:".removeAllInlineWidgetsForLine"})}),"\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"#Editor+getAllInlineWidgetsForLine",children:".getAllInlineWidgetsForLine"})}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor+getInlineWidgets",children:".getInlineWidgets"})," \u21d2 ",(0,i.jsx)("code",{children:"Object"})]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor+getFocusedInlineWidget",children:".getFocusedInlineWidget"})," \u21d2 ",(0,i.jsx)("code",{children:"InlineWidget"})]}),"\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"#Editor+setInlineWidgetHeight",children:".setInlineWidgetHeight"})}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor+document",children:".document"})," : ",(0,i.jsx)("code",{children:"Document"})]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor+getInlineWidgetsBelowCursor",children:".getInlineWidgetsBelowCursor()"})," \u21d2 ",(0,i.jsx)("code",{children:"boolean"})]}),"\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"#Editor+canConsumeEscapeKeyEvent",children:".canConsumeEscapeKeyEvent()"})}),"\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"#Editor+destroy",children:".destroy()"})}),"\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"#Editor+selectAllNoScroll",children:".selectAllNoScroll()"})}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor+isTextSubset",children:".isTextSubset()"})," \u21d2 ",(0,i.jsx)("code",{children:"boolean"})]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor+getFile",children:".getFile()"})," \u21d2 ",(0,i.jsx)("code",{children:"File"})]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor+getCursorPos",children:".getCursorPos([expandTabs], [which])"})," \u21d2 ",(0,i.jsx)("code",{children:"Object"})]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor+getEndingCursorPos",children:".getEndingCursorPos([expandTabs])"})," \u21d2 ",(0,i.jsx)("code",{children:"Object"})]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor+getColOffset",children:".getColOffset(pos)"})," \u21d2 ",(0,i.jsx)("code",{children:"number"})]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor+getCharIndexForColumn",children:".getCharIndexForColumn(lineNum, column)"})," \u21d2 ",(0,i.jsx)("code",{children:"number"})]}),"\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"#Editor+setCursorPos",children:".setCursorPos(line, ch, [center], [expandTabs])"})}),"\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"#Editor+setSize",children:".setSize(width, height)"})}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor+getViewport",children:".getViewport()"})," \u21d2 ",(0,i.jsx)("code",{children:"Object"})]}),"\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"#Editor+centerOnCursor",children:".centerOnCursor(centerOptions)"})}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor+indexFromPos",children:".indexFromPos(cursorPos)"})," \u21d2 ",(0,i.jsx)("code",{children:"number"})]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor+posFromIndex",children:".posFromIndex(index)"})," \u21d2 ",(0,i.jsx)("code",{children:"Object"})]}),"\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"#Editor+posWithinRange",children:".posWithinRange(pos, start, end, endInclusive)"})}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor+hasSelection",children:".hasSelection()"})," \u21d2 ",(0,i.jsx)("code",{children:"boolean"})]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor+getSelection",children:".getSelection()"})," \u21d2 ",(0,i.jsx)("code",{children:"Object"})]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor+getSelections",children:".getSelections()"})," \u21d2 ",(0,i.jsx)("code",{children:"Object"})]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor+hasMultipleCursors",children:".hasMultipleCursors()"})," \u21d2 ",(0,i.jsx)("code",{children:"boolean"})]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor+convertToLineSelections",children:".convertToLineSelections(selections, options)"})," \u21d2 ",(0,i.jsx)("code",{children:"Object"})]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor+getSelectedText",children:".getSelectedText([allSelections])"})," \u21d2 ",(0,i.jsx)("code",{children:"string"})]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor+coordsChar",children:".coordsChar(coordinates, [mode])"})," \u21d2 ",(0,i.jsx)("code",{children:"Object"})]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor+charCoords",children:".charCoords(pos, [mode])"})," \u21d2 ",(0,i.jsx)("code",{children:"Object"})]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor+getToken",children:".getToken([cursor], [precise])"})," \u21d2 ",(0,i.jsx)("code",{children:"Object"})]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor+getCharacterAtPosition",children:".getCharacterAtPosition(pos)"})," \u21d2 ",(0,i.jsx)("code",{children:"string"})," | ",(0,i.jsx)("code",{children:"null"})]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor+getLine",children:".getLine(lineNumber)"})," \u21d2 ",(0,i.jsx)("code",{children:"string"})," | ",(0,i.jsx)("code",{children:"null"})]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor+getPrevCharacterAtPosition",children:".getPrevCharacterAtPosition(pos)"})," \u21d2 ",(0,i.jsx)("code",{children:"string"})," | ",(0,i.jsx)("code",{children:"null"})]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor+getNextToken",children:".getNextToken([cursor], [skipWhitespace], [precise])"})," \u21d2 ",(0,i.jsx)("code",{children:"Object"})]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor+getPreviousToken",children:".getPreviousToken([cursor], [skipWhitespace], [precise])"})," \u21d2 ",(0,i.jsx)("code",{children:"Object"})]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor+operation",children:".operation(execFn)"})," \u21d2 ",(0,i.jsx)("code",{children:"*"})]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor+markToken",children:".markToken(markType, cursor, [options])"})," \u21d2 ",(0,i.jsx)("code",{children:"Object"})]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor+setBookmark",children:".setBookmark(markType, [cursorPos], [options])"})," \u21d2 ",(0,i.jsx)("code",{children:"Object"})]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor+findMarks",children:".findMarks(cursorFrom, cursorTo, [markType])"})," \u21d2 ",(0,i.jsx)("code",{children:"Array."})]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor+findMarksAt",children:".findMarksAt(cursorPos, [markType])"})," \u21d2 ",(0,i.jsx)("code",{children:"Array."})]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor+getMarksAfter",children:".getMarksAfter(position, markType)"})," \u21d2 ",(0,i.jsx)("code",{children:"Array."})]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor+getMarksBefore",children:".getMarksBefore(position, markType)"})," \u21d2 ",(0,i.jsx)("code",{children:"Array."})]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor+getAllMarks",children:".getAllMarks([markType])"})," \u21d2 ",(0,i.jsx)("code",{children:"Array."})]}),"\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"#Editor+clearAllMarks",children:".clearAllMarks([markType], [lineNumbers])"})}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor+isSamePosition",children:".isSamePosition(position1, position2)"})," \u21d2 ",(0,i.jsx)("code",{children:"boolean"})]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor+getHistory",children:".getHistory()"})," \u21d2 ",(0,i.jsx)("code",{children:"Array"})]}),"\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"#Editor+setHistory",children:".setHistory()"})}),"\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"#Editor+createHistoryRestorePoint",children:".createHistoryRestorePoint(restorePointName)"})}),"\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"#Editor+restoreHistoryPoint",children:".restoreHistoryPoint(restorePointName)"})}),"\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"#Editor+setSelection",children:".setSelection(start, [end], [center], [centerOptions], [origin])"})}),"\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"#Editor+replaceSelection",children:".replaceSelection(replacement, [select])"})}),"\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"#Editor+replaceSelections",children:".replaceSelections(replacement, [select])"})}),"\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"#Editor+replaceRange",children:".replaceRange(replacement, from, [to], origin)"})}),"\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"#Editor+replaceMultipleRanges",children:".replaceMultipleRanges(ranges, [origin])"})}),"\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"#Editor+clearSelection",children:".clearSelection()"})}),"\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"#Editor+setSelections",children:".setSelections(selections, center, centerOptions, origin)"})}),"\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"#Editor+toggleOverwrite",children:".toggleOverwrite(start)"})}),"\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"#Editor+selectWordAt",children:".selectWordAt(pos)"})}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor+getTextBetween",children:".getTextBetween(startPos, endPos)"})," \u21d2 ",(0,i.jsx)("code",{children:"string"})]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor+getWordAt",children:".getWordAt(pos)"})," \u21d2 ",(0,i.jsx)("code",{children:"Object"})]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor+getNumberAt",children:".getNumberAt(pos, maxDigits)"})," \u21d2 ",(0,i.jsx)("code",{children:"Object"})]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor+lineCount",children:".lineCount()"})," \u21d2 ",(0,i.jsx)("code",{children:"number"})]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor+isLineVisible",children:".isLineVisible(zero-based)"})," \u21d2 ",(0,i.jsx)("code",{children:"boolean"})]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor+getFirstVisibleLine",children:".getFirstVisibleLine()"})," \u21d2 ",(0,i.jsx)("code",{children:"number"})]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor+getLastVisibleLine",children:".getLastVisibleLine()"})," \u21d2 ",(0,i.jsx)("code",{children:"number"})]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor+totalHeight",children:".totalHeight()"})," \u21d2 ",(0,i.jsx)("code",{children:"number"})]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor+getScrollerElement",children:".getScrollerElement()"})," \u21d2 ",(0,i.jsx)("code",{children:"HTMLDivElement"})]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor+getRootElement",children:".getRootElement()"})," \u21d2 ",(0,i.jsx)("code",{children:"HTMLDivElement"})]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor+getScrollPos",children:".getScrollPos()"})," \u21d2 ",(0,i.jsx)("code",{children:"Object"})]}),"\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"#Editor+adjustScrollPos",children:".adjustScrollPos(scrollPos, heightDelta)"})}),"\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"#Editor+setScrollPos",children:".setScrollPos(x, y)"})}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor+getTextHeight",children:".getTextHeight()"})," \u21d2 ",(0,i.jsx)("code",{children:"number"})]}),"\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"#Editor+displayErrorMessageAtCursor",children:".displayErrorMessageAtCursor(errorMsg)"})}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor+getVirtualScrollAreaTop",children:".getVirtualScrollAreaTop()"})," \u21d2 ",(0,i.jsx)("code",{children:"number"})]}),"\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"#Editor+focus",children:".focus()"})}),"\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"#Editor+hasFocus",children:".hasFocus()"})}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor+getViewState",children:".getViewState()"})," \u21d2 ",(0,i.jsx)("code",{children:"EditorViewState"})]}),"\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"#Editor+restoreViewState",children:".restoreViewState(viewState)"})}),"\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"#Editor+refresh",children:".refresh([handleResize])"})}),"\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"#Editor+refreshAll",children:".refreshAll([handleResize])"})}),"\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"#Editor+undo",children:".undo()"})}),"\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"#Editor+redo",children:".redo()"})}),"\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"#Editor+notifyVisibilityChange",children:".notifyVisibilityChange(show, refresh)"})}),"\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"#Editor+setVisible",children:".setVisible(show, refresh)"})}),"\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"#Editor+isFullyVisible",children:".isFullyVisible()"})}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor+getModeForRange",children:".getModeForRange(start, end, [knownMixed])"})," \u21d2 ",(0,i.jsx)("code",{children:"Object"})," | ",(0,i.jsx)("code",{children:"string"})]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor+getModeForSelection",children:".getModeForSelection(selection)"})," \u21d2 ",(0,i.jsx)("code",{children:"Object"})," | ",(0,i.jsx)("code",{children:"string"})]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor+getLanguageForSelection",children:".getLanguageForSelection()"})," \u21d2 ",(0,i.jsx)("code",{children:"Language"})]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor+getLanguageForPosition",children:".getLanguageForPosition()"})," \u21d2 ",(0,i.jsx)("code",{children:"Language"})]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor+getModeForDocument",children:".getModeForDocument()"})," \u21d2 ",(0,i.jsx)("code",{children:"Object"})," | ",(0,i.jsx)("code",{children:"String"})]}),"\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"#Editor+updateLayout",children:".updateLayout([forceRefresh])"})}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor+setGutterMarker",children:".setGutterMarker(lineNumber, gutterName, marker)"})," \u21d2 ",(0,i.jsx)("code",{children:"Object"})]}),"\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"#Editor+getGutterMarker",children:".getGutterMarker(lineNumber, gutterName)"})}),"\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"#Editor+clearGutterMarker",children:".clearGutterMarker(lineNumber, gutterName)"})}),"\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"#Editor+isGutterActive",children:".isGutterActive(gutterName)"})}),"\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"#Editor+clearGutter",children:".clearGutter(gutterName)"})}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.em,{children:"static"}),"\n",(0,i.jsxs)(r.ul,{children:["\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"#Editor.getMarkOptionUnderlineError",children:".getMarkOptionUnderlineError"})}),"\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"#Editor.getMarkOptionUnderlineWarn",children:".getMarkOptionUnderlineWarn"})}),"\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"#Editor.getMarkOptionUnderlineInfo",children:".getMarkOptionUnderlineInfo"})}),"\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"#Editor.getMarkOptionUnderlineSpellcheck",children:".getMarkOptionUnderlineSpellcheck"})}),"\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"#Editor.getMarkOptionHyperlinkText",children:".getMarkOptionHyperlinkText"})}),"\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"#Editor.getMarkOptionMatchingRefs",children:".getMarkOptionMatchingRefs"})}),"\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"#Editor.getMarkOptionRenameOutline",children:".getMarkOptionRenameOutline"})}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor.getRegisteredGutters",children:".getRegisteredGutters()"})," \u21d2 ",(0,i.jsx)("code",{children:"Object"})]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor.isGutterRegistered",children:".isGutterRegistered(gutterName)"})," \u21d2 ",(0,i.jsx)("code",{children:"boolean"})]}),"\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"#Editor.registerGutter",children:".registerGutter(name, priority, [languageIds])"})}),"\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"#Editor.unregisterGutter",children:".unregisterGutter(name)"})}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor.setUseTabChar",children:".setUseTabChar(value, [fullPath])"})," \u21d2 ",(0,i.jsx)("code",{children:"boolean"})]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor.getUseTabChar",children:".getUseTabChar([fullPath])"})," \u21d2 ",(0,i.jsx)("code",{children:"boolean"})]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor.setTabSize",children:".setTabSize(value, [fullPath])"})," \u21d2 ",(0,i.jsx)("code",{children:"boolean"})]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor.getTabSize",children:".getTabSize([fullPath])"})," \u21d2 ",(0,i.jsx)("code",{children:"number"})]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor.getAutoTabUnits",children:".getAutoTabUnits(fullPath)"})," \u21d2 ",(0,i.jsx)("code",{children:"number"})," | ",(0,i.jsx)("code",{children:"*"})]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor.setAutoTabSpaces",children:".setAutoTabSpaces(value, [fullPath])"})," \u21d2 ",(0,i.jsx)("code",{children:"boolean"})]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor.getAutoTabSpaces",children:".getAutoTabSpaces([fullPath])"})," \u21d2 ",(0,i.jsx)("code",{children:"number"})]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor.setSpaceUnits",children:".setSpaceUnits(value, [fullPath])"})," \u21d2 ",(0,i.jsx)("code",{children:"boolean"})]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor.getSpaceUnits",children:".getSpaceUnits([fullPath])"})," \u21d2 ",(0,i.jsx)("code",{children:"number"})]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor.setCloseBrackets",children:".setCloseBrackets(value, [fullPath])"})," \u21d2 ",(0,i.jsx)("code",{children:"boolean"})]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor.getCloseBrackets",children:".getCloseBrackets([fullPath])"})," \u21d2 ",(0,i.jsx)("code",{children:"boolean"})]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor.setShowLineNumbers",children:".setShowLineNumbers(value, [fullPath])"})," \u21d2 ",(0,i.jsx)("code",{children:"boolean"})]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor.getShowLineNumbers",children:".getShowLineNumbers([fullPath])"})," \u21d2 ",(0,i.jsx)("code",{children:"boolean"})]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor.setShowActiveLine",children:".setShowActiveLine(value, [fullPath])"})," \u21d2 ",(0,i.jsx)("code",{children:"boolean"})]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor.getShowActiveLine",children:".getShowActiveLine([fullPath])"})," \u21d2 ",(0,i.jsx)("code",{children:"boolean"})]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor.setWordWrap",children:".setWordWrap(value, [fullPath])"})," \u21d2 ",(0,i.jsx)("code",{children:"boolean"})]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor.getWordWrap",children:".getWordWrap([fullPath])"})," \u21d2 ",(0,i.jsx)("code",{children:"boolean"})]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor.setIndentLineComment",children:".setIndentLineComment(value, [fullPath])"})," \u21d2 ",(0,i.jsx)("code",{children:"boolean"})]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Editor.getIndentLineComment",children:".getIndentLineComment([fullPath])"})," \u21d2 ",(0,i.jsx)("code",{children:"boolean"})]}),"\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"#Editor.forEveryEditor",children:".forEveryEditor(callback, [fullPath])"})}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)("a",{name:"new_Editor_new"}),"\n",(0,i.jsx)(r.h3,{id:"new-editordocument-makemastereditor-container-range-options",children:"new Editor(document, makeMasterEditor, container, [range], options)"}),"\n",(0,i.jsx)(r.p,{children:'Creates a new CodeMirror editor instance bound to the given Document. The Document need not have\na "master" Editor realized yet, even if makeMasterEditor is false; in that case, the first time\nan edit occurs we will automatically ask EditorManager to create a "master" editor to render the\nDocument modifiable.'}),"\n",(0,i.jsx)(r.p,{children:"ALWAYS call destroy() when you are done with an Editor - otherwise it will leak a Document ref."}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"document"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"Document"})}),(0,i.jsx)(r.td,{})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"makeMasterEditor"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"boolean"})}),(0,i.jsx)(r.td,{children:'If true, this Editor will set itself as the (secret) "master" Editor for the Document. If false, this Editor will attach to the Document as a "slave"/ secondary editor.'})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"container"}),(0,i.jsxs)(r.td,{children:[(0,i.jsx)("code",{children:"jQueryObject"})," | ",(0,i.jsx)("code",{children:"DomNode"})]}),(0,i.jsx)(r.td,{children:"Container to add the editor to."})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"[range]"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"Object"})}),(0,i.jsx)(r.td,{children:"If specified, range of lines within the document to display in this editor. Inclusive."})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"options"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"Object"})}),(0,i.jsx)(r.td,{children:"If specified, contains editor options that can be passed to CodeMirror"})]})]})]}),"\n",(0,i.jsx)("a",{name:"Editor+addInlineWidget"}),"\n",(0,i.jsxs)(r.h3,{id:"editoraddinlinewidget--promise",children:["editor.addInlineWidget \u21d2 ",(0,i.jsx)("code",{children:"$.Promise"})]}),"\n",(0,i.jsx)(r.p,{children:"Adds an inline widget below the given line. If any inline widget was already open for that\nline, it is closed without warning."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance property of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})}),(0,i.jsx)(r.br,{}),"\n",(0,i.jsx)(r.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"$.Promise"})," - A promise object that is resolved when the widget has been added (but might\nstill be animating open). Never rejected."]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"pos"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"Object"})}),(0,i.jsx)(r.td,{children:"Position in text to anchor the inline."})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"inlineWidget"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"InlineWidget"})}),(0,i.jsx)(r.td,{children:"The widget to add."})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"[scrollLineIntoView]"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"boolean"})}),(0,i.jsx)(r.td,{children:"Scrolls the associated line into view. Default true."})]})]})]}),"\n",(0,i.jsx)("a",{name:"Editor+removeAllInlineWidgets"}),"\n",(0,i.jsx)(r.h3,{id:"editorremoveallinlinewidgets",children:"editor.removeAllInlineWidgets"}),"\n",(0,i.jsx)(r.p,{children:"Removes all inline widgets"}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance property of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsx)("a",{name:"Editor+removeInlineWidget"}),"\n",(0,i.jsxs)(r.h3,{id:"editorremoveinlinewidget--promise",children:["editor.removeInlineWidget \u21d2 ",(0,i.jsx)("code",{children:"$.Promise"})]}),"\n",(0,i.jsx)(r.p,{children:"Removes the given inline widget."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance property of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})}),(0,i.jsx)(r.br,{}),"\n",(0,i.jsx)(r.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"$.Promise"})," - A promise that is resolved when the inline widget is fully closed and removed from the DOM."]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsx)(r.tbody,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"inlineWidget"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"number"})}),(0,i.jsx)(r.td,{children:"The widget to remove."})]})})]}),"\n",(0,i.jsx)("a",{name:"Editor+removeAllInlineWidgetsForLine"}),"\n",(0,i.jsx)(r.h3,{id:"editorremoveallinlinewidgetsforline",children:"editor.removeAllInlineWidgetsForLine"}),"\n",(0,i.jsx)(r.p,{children:"Removes all inline widgets for a given line"}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance property of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsx)(r.tbody,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"lineNum"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"number"})}),(0,i.jsx)(r.td,{children:"The line number to modify"})]})})]}),"\n",(0,i.jsx)("a",{name:"Editor+getAllInlineWidgetsForLine"}),"\n",(0,i.jsx)(r.h3,{id:"editorgetallinlinewidgetsforline",children:"editor.getAllInlineWidgetsForLine"}),"\n",(0,i.jsx)(r.p,{children:"****** Update actual public API doc in Editor.js *****\nGets all inline widgets for a given line"}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance property of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsx)(r.tbody,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"lineNum"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"number"})}),(0,i.jsx)(r.td,{children:"The line number to modify"})]})})]}),"\n",(0,i.jsx)("a",{name:"Editor+getInlineWidgets"}),"\n",(0,i.jsxs)(r.h3,{id:"editorgetinlinewidgets--object",children:["editor.getInlineWidgets \u21d2 ",(0,i.jsx)("code",{children:"Object"})]}),"\n",(0,i.jsx)(r.p,{children:"Returns a list of all inline widgets currently open in this editor. Each entry contains the\ninline's id, and the data parameter that was passed to addInlineWidget()."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance property of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsx)("a",{name:"Editor+getFocusedInlineWidget"}),"\n",(0,i.jsxs)(r.h3,{id:"editorgetfocusedinlinewidget--inlinewidget",children:["editor.getFocusedInlineWidget \u21d2 ",(0,i.jsx)("code",{children:"InlineWidget"})]}),"\n",(0,i.jsx)(r.p,{children:"Returns the currently focused inline widget, if any."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance property of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsx)("a",{name:"Editor+setInlineWidgetHeight"}),"\n",(0,i.jsx)(r.h3,{id:"editorsetinlinewidgetheight",children:"editor.setInlineWidgetHeight"}),"\n",(0,i.jsx)(r.p,{children:"Sets the height of an inline widget in this editor."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance property of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"inlineWidget"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"InlineWidget"})}),(0,i.jsx)(r.td,{children:"The widget whose height should be set."})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"height"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"number"})}),(0,i.jsx)(r.td,{children:"The height of the widget."})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"[ensureVisible]"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"boolean"})}),(0,i.jsx)(r.td,{children:"Whether to scroll the entire widget into view. Default false."})]})]})]}),"\n",(0,i.jsx)("a",{name:"Editor+document"}),"\n",(0,i.jsxs)(r.h3,{id:"editordocument--document",children:["editor.document : ",(0,i.jsx)("code",{children:"Document"})]}),"\n",(0,i.jsx)(r.p,{children:"The Document we're bound to"}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance property of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsx)("a",{name:"Editor+getInlineWidgetsBelowCursor"}),"\n",(0,i.jsxs)(r.h3,{id:"editorgetinlinewidgetsbelowcursor--boolean",children:["editor.getInlineWidgetsBelowCursor() \u21d2 ",(0,i.jsx)("code",{children:"boolean"})]}),"\n",(0,i.jsx)(r.p,{children:"Gets the inline widgets below the current cursor position or null."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsx)("a",{name:"Editor+canConsumeEscapeKeyEvent"}),"\n",(0,i.jsx)(r.h3,{id:"editorcanconsumeescapekeyevent",children:"editor.canConsumeEscapeKeyEvent()"}),"\n",(0,i.jsx)(r.p,{children:"returns true if the editor can do something an escape key event. Eg. Disable multi cursor escape"}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsx)("a",{name:"Editor+destroy"}),"\n",(0,i.jsx)(r.h3,{id:"editordestroy",children:"editor.destroy()"}),"\n",(0,i.jsx)(r.p,{children:'Removes this editor from the DOM and detaches from the Document. If this is the "master"\nEditor that is secretly providing the Document\'s backing state, then the Document reverts to\na read-only string-backed mode.'}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsx)("a",{name:"Editor+selectAllNoScroll"}),"\n",(0,i.jsx)(r.h3,{id:"editorselectallnoscroll",children:"editor.selectAllNoScroll()"}),"\n",(0,i.jsx)(r.p,{children:"Selects all text and maintains the current scroll position."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsx)("a",{name:"Editor+isTextSubset"}),"\n",(0,i.jsxs)(r.h3,{id:"editoristextsubset--boolean",children:["editor.isTextSubset() \u21d2 ",(0,i.jsx)("code",{children:"boolean"})]}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})}),(0,i.jsx)(r.br,{}),"\n",(0,i.jsx)(r.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"boolean"})," - True if editor is not showing the entire text of the document (i.e. an inline editor)"]}),"\n",(0,i.jsx)("a",{name:"Editor+getFile"}),"\n",(0,i.jsxs)(r.h3,{id:"editorgetfile--file",children:["editor.getFile() \u21d2 ",(0,i.jsx)("code",{children:"File"})]}),"\n",(0,i.jsx)(r.p,{children:"Gets the file associated with this editor\nThis is a required Pane-View interface method"}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})}),(0,i.jsx)(r.br,{}),"\n",(0,i.jsx)(r.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"File"})," - the file associated with this editor"]}),"\n",(0,i.jsx)("a",{name:"Editor+getCursorPos"}),"\n",(0,i.jsxs)(r.h3,{id:"editorgetcursorposexpandtabs-which--object",children:["editor.getCursorPos([expandTabs], [which]) \u21d2 ",(0,i.jsx)("code",{children:"Object"})]}),"\n",(0,i.jsx)(r.p,{children:"Gets the current cursor position within the editor."}),"\n",(0,i.jsxs)(r.p,{children:["Cursor positions can be converted to index(0 based character offsets in editor text string)\nusing ",(0,i.jsx)(r.code,{children:"editor.indexFromPos"})," API."]}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"[expandTabs]"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"boolean"})}),(0,i.jsx)(r.td,{children:'If true, return the actual visual column number instead of the character offset in the "ch" property.'})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"[which]"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsxs)(r.td,{children:['Optional string indicating which end of the selection to return. It may be "start", "end", "head" (the side of the selection that moves when you press shift+arrow), or "anchor" (the fixed side of the selection). Omitting the argument is the same as passing "head". A ',"ch"," object will be returned.)"]})]})]})]}),"\n",(0,i.jsx)("a",{name:"Editor+getEndingCursorPos"}),"\n",(0,i.jsxs)(r.h3,{id:"editorgetendingcursorposexpandtabs--object",children:["editor.getEndingCursorPos([expandTabs]) \u21d2 ",(0,i.jsx)("code",{children:"Object"})]}),"\n",(0,i.jsx)(r.p,{children:"Gets the cursor position of the last charected in the editor."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsx)(r.tbody,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"[expandTabs]"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"boolean"})}),(0,i.jsx)(r.td,{children:'If true, return the actual visual column number instead of the character offset in the "ch" property.'})]})})]}),"\n",(0,i.jsx)("a",{name:"Editor+getColOffset"}),"\n",(0,i.jsxs)(r.h3,{id:"editorgetcoloffsetpos--number",children:["editor.getColOffset(pos) \u21d2 ",(0,i.jsx)("code",{children:"number"})]}),"\n",(0,i.jsx)(r.p,{children:"Returns the display column (zero-based) for a given string-based pos. Differs from pos.ch only\nwhen the line contains preceding \\t chars. Result depends on the current tab size setting."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"})]})}),(0,i.jsx)(r.tbody,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"pos"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"Object"})})]})})]}),"\n",(0,i.jsx)("a",{name:"Editor+getCharIndexForColumn"}),"\n",(0,i.jsxs)(r.h3,{id:"editorgetcharindexforcolumnlinenum-column--number",children:["editor.getCharIndexForColumn(lineNum, column) \u21d2 ",(0,i.jsx)("code",{children:"number"})]}),"\n",(0,i.jsx)(r.p,{children:"Returns the string-based pos for a given display column (zero-based) in given line. Differs from column\nonly when the line contains preceding \\t chars. Result depends on the current tab size setting."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"lineNum"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"number"})}),(0,i.jsx)(r.td,{children:"Line number"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"column"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"number"})}),(0,i.jsx)(r.td,{children:"Display column number"})]})]})]}),"\n",(0,i.jsx)("a",{name:"Editor+setCursorPos"}),"\n",(0,i.jsx)(r.h3,{id:"editorsetcursorposline-ch-center-expandtabs",children:"editor.setCursorPos(line, ch, [center], [expandTabs])"}),"\n",(0,i.jsx)(r.p,{children:"Sets the cursor position within the editor. Removes any selection."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"line"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"number"})}),(0,i.jsx)(r.td,{children:"The 0 based line number."})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"ch"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"number"})}),(0,i.jsx)(r.td,{children:"The 0 based character position; treated as 0 if unspecified."})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"[center]"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"boolean"})}),(0,i.jsx)(r.td,{children:"True if the view should be centered on the new cursor position."})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"[expandTabs]"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"boolean"})}),(0,i.jsx)(r.td,{children:'If true, use the actual visual column number instead of the character offset as the "ch" parameter.'})]})]})]}),"\n",(0,i.jsx)("a",{name:"Editor+setSize"}),"\n",(0,i.jsx)(r.h3,{id:"editorsetsizewidth-height",children:"editor.setSize(width, height)"}),"\n",(0,i.jsx)(r.p,{children:"Set the editor size in pixels or percentage"}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"width"}),(0,i.jsxs)(r.td,{children:[(0,i.jsx)("code",{children:"number"})," | ",(0,i.jsx)("code",{children:"string"})]})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"height"}),(0,i.jsxs)(r.td,{children:[(0,i.jsx)("code",{children:"number"})," | ",(0,i.jsx)("code",{children:"string"})]})]})]})]}),"\n",(0,i.jsx)("a",{name:"Editor+getViewport"}),"\n",(0,i.jsxs)(r.h3,{id:"editorgetviewport--object",children:["editor.getViewport() \u21d2 ",(0,i.jsx)("code",{children:"Object"})]}),"\n",(0,i.jsxs)(r.p,{children:["Returns a ","to"," object indicating the start (inclusive) and end (exclusive) of the currently rendered\npart of the document. In big documents, when most content is scrolled out of view, Editor will only render\nthe visible part, and a margin around it. See also the ",(0,i.jsx)(r.code,{children:"viewportChange"})," event fired on the editor."]}),"\n",(0,i.jsxs)(r.p,{children:["This is combination with ",(0,i.jsx)(r.code,{children:"viewportChange"})," event can be used to selectively redraw visual elements in code\nlike syntax analyze only parts of code instead of the full code everytime."]}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsx)("a",{name:"Editor+centerOnCursor"}),"\n",(0,i.jsx)(r.h3,{id:"editorcenteroncursorcenteroptions",children:"editor.centerOnCursor(centerOptions)"}),"\n",(0,i.jsx)(r.p,{children:"Scrolls the editor viewport to vertically center the line with the cursor,\nbut only if the cursor is currently near the edges of the viewport or\nentirely outside the viewport."}),"\n",(0,i.jsx)(r.p,{children:"This does not alter the horizontal scroll position."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsx)(r.tbody,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"centerOptions"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"number"})}),(0,i.jsx)(r.td,{children:"Option value, or 0 for no options; one of the BOUNDARY_* constants above."})]})})]}),"\n",(0,i.jsx)("a",{name:"Editor+indexFromPos"}),"\n",(0,i.jsxs)(r.h3,{id:"editorindexfromposcursorpos--number",children:["editor.indexFromPos(cursorPos) \u21d2 ",(0,i.jsx)("code",{children:"number"})]}),"\n",(0,i.jsx)(r.p,{children:"Given a position, returns its index within the text (assuming \\n newlines)"}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"})]})}),(0,i.jsx)(r.tbody,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"cursorPos"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"Object"})})]})})]}),"\n",(0,i.jsx)("a",{name:"Editor+posFromIndex"}),"\n",(0,i.jsxs)(r.h3,{id:"editorposfromindexindex--object",children:["editor.posFromIndex(index) \u21d2 ",(0,i.jsx)("code",{children:"Object"})]}),"\n",(0,i.jsx)(r.p,{children:"Given a position, returns its index within the text (assuming \\n newlines)"}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"})]})}),(0,i.jsx)(r.tbody,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"index"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"number"})})]})})]}),"\n",(0,i.jsx)("a",{name:"Editor+posWithinRange"}),"\n",(0,i.jsx)(r.h3,{id:"editorposwithinrangepos-start-end-endinclusive",children:"editor.posWithinRange(pos, start, end, endInclusive)"}),"\n",(0,i.jsx)(r.p,{children:"Returns true if pos is between start and end (INclusive at start; EXclusive at end by default,\nbut overridable via the endInclusive flag)."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"pos"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"Object"})})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"start"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"Object"})})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"end"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"Object"})})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"endInclusive"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"boolean"})})]})]})]}),"\n",(0,i.jsx)("a",{name:"Editor+hasSelection"}),"\n",(0,i.jsxs)(r.h3,{id:"editorhasselection--boolean",children:["editor.hasSelection() \u21d2 ",(0,i.jsx)("code",{children:"boolean"})]}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})}),(0,i.jsx)(r.br,{}),"\n",(0,i.jsx)(r.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"boolean"})," - True if there's a text selection; false if there's just an insertion point"]}),"\n",(0,i.jsx)("a",{name:"Editor+getSelection"}),"\n",(0,i.jsxs)(r.h3,{id:"editorgetselection--object",children:["editor.getSelection() \u21d2 ",(0,i.jsx)("code",{children:"Object"})]}),"\n",(0,i.jsxs)(r.p,{children:["Gets the current selection; if there is more than one selection, returns the primary selection\n(generally the last one made). Start is inclusive, end is exclusive. If there is no selection,\nreturns the current cursor position as both the start and end of the range (i.e. a selection\nof length zero). If ",(0,i.jsx)(r.code,{children:"reversed"})," is set, then the head of the selection (the end of the selection\nthat would be changed if the user extended the selection) is before the anchor."]}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsx)("a",{name:"Editor+getSelections"}),"\n",(0,i.jsxs)(r.h3,{id:"editorgetselections--object",children:["editor.getSelections() \u21d2 ",(0,i.jsx)("code",{children:"Object"})]}),"\n",(0,i.jsxs)(r.p,{children:["Returns an array of current selections, nonoverlapping and sorted in document order.\nEach selection is a start/end pair, with the start guaranteed to come before the end.\nCursors are represented as a range whose start is equal to the end.\nIf ",(0,i.jsx)(r.code,{children:"reversed"})," is set, then the head of the selection\n(the end of the selection that would be changed if the user extended the selection)\nis before the anchor.\nIf ",(0,i.jsx)(r.code,{children:"primary"})," is set, then that selection is the primary selection."]}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsx)("a",{name:"Editor+hasMultipleCursors"}),"\n",(0,i.jsxs)(r.h3,{id:"editorhasmultiplecursors--boolean",children:["editor.hasMultipleCursors() \u21d2 ",(0,i.jsx)("code",{children:"boolean"})]}),"\n",(0,i.jsx)(r.p,{children:"Check if the editor has multiple cursors or selections"}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsx)("a",{name:"Editor+convertToLineSelections"}),"\n",(0,i.jsxs)(r.h3,{id:"editorconverttolineselectionsselections-options--object",children:["editor.convertToLineSelections(selections, options) \u21d2 ",(0,i.jsx)("code",{children:"Object"})]}),"\n",(0,i.jsx)(r.p,{children:"Takes the given selections, and expands each selection so it encompasses whole lines. Merges\nadjacent line selections together. Keeps track of each original selection associated with a given\nline selection (there might be multiple if individual selections were merged into a single line selection).\nUseful for doing multiple-selection-aware line edits."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})}),(0,i.jsx)(r.br,{}),"\n",(0,i.jsx)(r.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"Object"})," - The combined line selections. For each selection, ",(0,i.jsx)(r.code,{children:"selectionForEdit"})," is the line selection, and ",(0,i.jsx)(r.code,{children:"selectionsToTrack"})," is\nthe set of original selections that combined to make up the given line selection. Note that the selectionsToTrack will\ninclude the original objects passed in ",(0,i.jsx)(r.code,{children:"selections"}),", so if it is later mutated the original passed-in selections will be\nmutated as well."]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"selections"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"Object"})}),(0,i.jsx)(r.td,{children:"The selections to expand."})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"options"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"Object"})}),(0,i.jsx)(r.td,{children:"expandEndAtStartOfLine: true if a range selection that ends at the beginning of a line should be expanded to encompass the line. Default false. mergeAdjacent: true if adjacent line ranges should be merged. Default true."})]})]})]}),"\n",(0,i.jsx)("a",{name:"Editor+getSelectedText"}),"\n",(0,i.jsxs)(r.h3,{id:"editorgetselectedtextallselections--string",children:["editor.getSelectedText([allSelections]) \u21d2 ",(0,i.jsx)("code",{children:"string"})]}),"\n",(0,i.jsxs)(r.p,{children:['Returns the currently selected text, or "" if no selection. Includes \\n if the\nselection spans multiple lines (does NOT reflect the Document\'s line-endings style). By\ndefault, returns only the contents of the primary selection, unless ',(0,i.jsx)(r.code,{children:"allSelections"})," is true."]}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})}),(0,i.jsx)(r.br,{}),"\n",(0,i.jsx)(r.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"string"})," - The selected text."]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsx)(r.tbody,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"[allSelections]"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"boolean"})}),(0,i.jsx)(r.td,{children:"Whether to return the contents of all selections (separated by newlines) instead of just the primary selection. Default false."})]})})]}),"\n",(0,i.jsx)("a",{name:"Editor+coordsChar"}),"\n",(0,i.jsxs)(r.h3,{id:"editorcoordscharcoordinates-mode--object",children:["editor.coordsChar(coordinates, [mode]) \u21d2 ",(0,i.jsx)("code",{children:"Object"})]}),"\n",(0,i.jsxs)(r.p,{children:["Given an ","top"," object (e.g. coordinates of a mouse event) returns the ","ch"," position that\ncorresponds to it. The optional mode parameter determines relative to what the coordinates are interpreted."]}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})}),(0,i.jsx)(r.br,{}),"\n",(0,i.jsx)(r.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"Object"})," - for the given coordinates"]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"coordinates"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"Object"})}),(0,i.jsx)(r.td,{children:"can be obtained from Eg. coordinates of a mouse event"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"[mode]"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(r.td,{children:'It may be "window", "page" (the default), or "local".'})]})]})]}),"\n",(0,i.jsx)("a",{name:"Editor+charCoords"}),"\n",(0,i.jsxs)(r.h3,{id:"editorcharcoordspos-mode--object",children:["editor.charCoords(pos, [mode]) \u21d2 ",(0,i.jsx)("code",{children:"Object"})]}),"\n",(0,i.jsx)(r.p,{children:"Returns the position and dimensions of an arbitrary character given a cursor (Eg. from getCursorPos()).\nIt'll give the size of the whole character, rather than just the position that the cursor would have\nwhen it would sit at that position."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})}),(0,i.jsx)(r.br,{}),"\n",(0,i.jsx)(r.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"Object"})," - coordinates for the given character position"]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"pos"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"Object"})}),(0,i.jsx)(r.td,{children:"A cursor, can be obtained from Eg. getCursorPos()"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"[mode]"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(r.td,{children:'It may be "window", "page" (the default), or "local".'})]})]})]}),"\n",(0,i.jsx)("a",{name:"Editor+getToken"}),"\n",(0,i.jsxs)(r.h3,{id:"editorgettokencursor-precise--object",children:["editor.getToken([cursor], [precise]) \u21d2 ",(0,i.jsx)("code",{children:"Object"})]}),"\n",(0,i.jsx)(r.p,{children:"Get the token at the given cursor position, or at the current cursor\nif none is given."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})}),(0,i.jsx)(r.br,{}),"\n",(0,i.jsx)(r.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"Object"})," - -\nthe CodeMirror token at the given cursor position"]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"[cursor]"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"Object"})}),(0,i.jsx)(r.td,{children:"Optional cursor position at which to retrieve a token. If not provided, the current position will be used."})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"[precise]"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"boolean"})}),(0,i.jsx)(r.td,{children:"If given, results in more current results. Suppresses caching."})]})]})]}),"\n",(0,i.jsx)("a",{name:"Editor+getCharacterAtPosition"}),"\n",(0,i.jsxs)(r.h3,{id:"editorgetcharacteratpositionpos--string--null",children:["editor.getCharacterAtPosition(pos) \u21d2 ",(0,i.jsx)("code",{children:"string"})," | ",(0,i.jsx)("code",{children:"null"})]}),"\n",(0,i.jsxs)(r.p,{children:["Retrieves a single character from the specified position in the editor.\nx|y where ",(0,i.jsx)(r.code,{children:"|"})," is the cursor, will return y"]}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})}),(0,i.jsx)(r.br,{}),"\n",(0,i.jsx)(r.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"string"})," | ",(0,i.jsx)("code",{children:"null"})," - The character at the given position if within bounds,\notherwise ",(0,i.jsx)(r.code,{children:"null"})," if the position is out of range."]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsx)(r.tbody,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"pos"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"CodeMirror.Position"})}),(0,i.jsxs)(r.td,{children:["The position from which to retrieve the character. This should be an object with ",(0,i.jsx)(r.code,{children:"line"})," and ",(0,i.jsx)(r.code,{children:"ch"})," properties."]})]})})]}),"\n",(0,i.jsx)("a",{name:"Editor+getLine"}),"\n",(0,i.jsxs)(r.h3,{id:"editorgetlinelinenumber--string--null",children:["editor.getLine(lineNumber) \u21d2 ",(0,i.jsx)("code",{children:"string"})," | ",(0,i.jsx)("code",{children:"null"})]}),"\n",(0,i.jsx)(r.p,{children:"Retrieves a single line text"}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})}),(0,i.jsx)(r.br,{}),"\n",(0,i.jsx)(r.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"string"})," | ",(0,i.jsx)("code",{children:"null"})," - The text at the given position if within bounds,\notherwise ",(0,i.jsx)(r.code,{children:"null"})," if the position is out of range."]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsx)(r.tbody,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"lineNumber"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"number"})}),(0,i.jsx)(r.td,{children:"The lineNumber to extract text from"})]})})]}),"\n",(0,i.jsx)("a",{name:"Editor+getPrevCharacterAtPosition"}),"\n",(0,i.jsxs)(r.h3,{id:"editorgetprevcharacteratpositionpos--string--null",children:["editor.getPrevCharacterAtPosition(pos) \u21d2 ",(0,i.jsx)("code",{children:"string"})," | ",(0,i.jsx)("code",{children:"null"})]}),"\n",(0,i.jsxs)(r.p,{children:["Retrieves a single character previous to the specified position in the editor in the same line if possible.\nx|y where ",(0,i.jsx)(r.code,{children:"|"})," is the cursor, will return x"]}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})}),(0,i.jsx)(r.br,{}),"\n",(0,i.jsx)(r.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"string"})," | ",(0,i.jsx)("code",{children:"null"})," - The character previous to the given position if within bounds,\notherwise ",(0,i.jsx)(r.code,{children:"null"})," if the position is out of range."]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsx)(r.tbody,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"pos"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"CodeMirror.Position"})}),(0,i.jsxs)(r.td,{children:["The position from which to retrieve the character. This should be an object with ",(0,i.jsx)(r.code,{children:"line"})," and ",(0,i.jsx)(r.code,{children:"ch"})," properties."]})]})})]}),"\n",(0,i.jsx)("a",{name:"Editor+getNextToken"}),"\n",(0,i.jsxs)(r.h3,{id:"editorgetnexttokencursor-skipwhitespace-precise--object",children:["editor.getNextToken([cursor], [skipWhitespace], [precise]) \u21d2 ",(0,i.jsx)("code",{children:"Object"})]}),"\n",(0,i.jsx)(r.p,{children:"Get the token after the one at the given cursor position"}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})}),(0,i.jsx)(r.br,{}),"\n",(0,i.jsx)(r.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"Object"})," - -\nthe CodeMirror token after the one at the given cursor position"]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"[cursor]"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"Object"})}),(0,i.jsx)(r.td,{children:"Optional cursor position after which a token should be retrieved"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"[skipWhitespace]"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"boolean"})}),(0,i.jsx)(r.td,{children:"true if this should skip over whitespace tokens. Default is true."})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"[precise]"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"boolean"})}),(0,i.jsx)(r.td,{children:"If given, results in more current results. Suppresses caching."})]})]})]}),"\n",(0,i.jsx)("a",{name:"Editor+getPreviousToken"}),"\n",(0,i.jsxs)(r.h3,{id:"editorgetprevioustokencursor-skipwhitespace-precise--object",children:["editor.getPreviousToken([cursor], [skipWhitespace], [precise]) \u21d2 ",(0,i.jsx)("code",{children:"Object"})]}),"\n",(0,i.jsx)(r.p,{children:"Get the token before the one at the given cursor position"}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})}),(0,i.jsx)(r.br,{}),"\n",(0,i.jsx)(r.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"Object"})," - - the CodeMirror token before\nthe one at the given cursor position"]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"[cursor]"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"Object"})}),(0,i.jsx)(r.td,{children:"Optional cursor position before which a token should be retrieved"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"[skipWhitespace]"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"boolean"})}),(0,i.jsx)(r.td,{children:"true if this should skip over whitespace tokens. Default is true."})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"[precise]"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"boolean"})}),(0,i.jsx)(r.td,{children:"If given, results in more current results. Suppresses caching."})]})]})]}),"\n",(0,i.jsx)("a",{name:"Editor+operation"}),"\n",(0,i.jsxs)(r.h3,{id:"editoroperationexecfn--",children:["editor.operation(execFn) \u21d2 ",(0,i.jsx)("code",{children:"*"})]}),"\n",(0,i.jsx)(r.p,{children:"Use This if you are making large number of editor changes in a single workflow to improve performance.\nThe editor internally buffers changes and only updates its DOM structure after it has finished performing\nsome operation. If you need to perform a lot of operations on a CodeMirror instance, you can call this method\nwith a function argument. It will call the function, buffering up all changes, and only doing the expensive\nupdate after the function returns. This can be a lot faster. The return value from this method will be the\nreturn value of your function."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsx)(r.tbody,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"execFn"}),(0,i.jsx)(r.td,{children:"The function that will be called to make all editor changes."})]})})]}),"\n",(0,i.jsx)("a",{name:"Editor+markToken"}),"\n",(0,i.jsxs)(r.h3,{id:"editormarktokenmarktype-cursor-options--object",children:["editor.markToken(markType, cursor, [options]) \u21d2 ",(0,i.jsx)("code",{children:"Object"})]}),"\n",(0,i.jsx)(r.p,{children:"Same as markText, but will apply to the token at the given position or current position"}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})}),(0,i.jsx)(r.br,{}),"\n",(0,i.jsx)(r.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"Object"})," - TextMarker"]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"markType"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(r.td,{children:"A String that can be used to label the mark type."})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"cursor"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"Object"})}),(0,i.jsx)(r.td,{children:"The position of the token"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"[options]"}),(0,i.jsx)(r.td,{}),(0,i.jsx)(r.td,{children:"same as markText"})]})]})]}),"\n",(0,i.jsx)("a",{name:"Editor+setBookmark"}),"\n",(0,i.jsxs)(r.h3,{id:"editorsetbookmarkmarktype-cursorpos-options--object",children:["editor.setBookmark(markType, [cursorPos], [options]) \u21d2 ",(0,i.jsx)("code",{children:"Object"})]}),"\n",(0,i.jsx)(r.p,{children:"Inserts a bookmark, a handle that follows the text around it as it is being edited, at the given position.\nSimilar to mark text, but for just a point instead of range."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})}),(0,i.jsx)(r.br,{}),"\n",(0,i.jsx)(r.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"Object"})," - TextMarker- A bookmark has two methods find() and clear(). ",(0,i.jsx)(r.code,{children:"find"})," returns the current\nposition of the bookmark, if it is still in the document, and ",(0,i.jsx)(r.code,{children:"clear"})," explicitly removes the bookmark."]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"markType"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(r.td,{children:"A String that can be used to label the mark type."})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"[cursorPos]"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"Object"})}),(0,i.jsx)(r.td,{children:"Where to place the mark. Optional, if not specified, will use current pos"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"[options]"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"Object"})}),(0,i.jsx)(r.td,{children:"When given, it should be an object that may contain the following configuration options:"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"[options.widget]"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"Element"})}),(0,i.jsx)(r.td,{children:"Can be used to display a DOM node at the current location of the bookmark (analogous to the replacedWith option to markText)."})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"[options.insertLeft]"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"boolean"})}),(0,i.jsx)(r.td,{children:"By default, text typed when the cursor is on top of the bookmark will end up to the right of the bookmark. Set this option to true to make it go to the left instead."})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"[options.handleMouseEvents]"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"boolean"})}),(0,i.jsx)(r.td,{children:"As with markText, this determines whether mouse events on the widget inserted for this bookmark are handled by CodeMirror. The default is false."})]})]})]}),"\n",(0,i.jsx)("a",{name:"Editor+findMarks"}),"\n",(0,i.jsxs)(r.h3,{id:"editorfindmarkscursorfrom-cursorto-marktype--arraytextmarker",children:["editor.findMarks(cursorFrom, cursorTo, [markType]) \u21d2 ",(0,i.jsx)("code",{children:"Array."})]}),"\n",(0,i.jsx)(r.p,{children:"Returns an array of all the bookmarks and marked ranges found between the given positions (non-inclusive)."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})}),(0,i.jsx)(r.br,{}),"\n",(0,i.jsx)(r.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"Array."})," - TextMarker - A text marker array"]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"cursorFrom"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"Object"})}),(0,i.jsx)(r.td,{children:"Mark start position"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"cursorTo"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"Object"})}),(0,i.jsx)(r.td,{children:"Mark end position"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"[markType]"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(r.td,{children:"Optional, if given will only return marks of that type. Else returns everything."})]})]})]}),"\n",(0,i.jsx)("a",{name:"Editor+findMarksAt"}),"\n",(0,i.jsxs)(r.h3,{id:"editorfindmarksatcursorpos-marktype--arraytextmarker",children:["editor.findMarksAt(cursorPos, [markType]) \u21d2 ",(0,i.jsx)("code",{children:"Array."})]}),"\n",(0,i.jsx)(r.p,{children:"Returns an array of all the bookmarks and marked ranges present at the given position."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})}),(0,i.jsx)(r.br,{}),"\n",(0,i.jsx)(r.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"Array."})," - TextMarker - A text marker array"]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"cursorPos"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"Object"})}),(0,i.jsx)(r.td,{children:"cursor position"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"[markType]"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(r.td,{children:"Optional, if given will only return marks of that type. Else returns everything."})]})]})]}),"\n",(0,i.jsx)("a",{name:"Editor+getMarksAfter"}),"\n",(0,i.jsxs)(r.h3,{id:"editorgetmarksafterposition-marktype--arraytextmarker",children:["editor.getMarksAfter(position, markType) \u21d2 ",(0,i.jsx)("code",{children:"Array."})]}),"\n",(0,i.jsx)(r.p,{children:"Returns the first mark of a specific type found after the given position."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})}),(0,i.jsx)(r.br,{}),"\n",(0,i.jsx)(r.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"Array."})," - The array of text markers found, or an empty array if none are found."]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"position"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"Object"})}),(0,i.jsx)(r.td,{children:"The starting position to search from."})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"markType"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(r.td,{children:"The type of mark to look for."})]})]})]}),"\n",(0,i.jsx)("a",{name:"Editor+getMarksBefore"}),"\n",(0,i.jsxs)(r.h3,{id:"editorgetmarksbeforeposition-marktype--arraytextmarker",children:["editor.getMarksBefore(position, markType) \u21d2 ",(0,i.jsx)("code",{children:"Array."})]}),"\n",(0,i.jsx)(r.p,{children:"Returns the first mark of a specific type found before the given position."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})}),(0,i.jsx)(r.br,{}),"\n",(0,i.jsx)(r.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"Array."})," - The array of text markers found, or an empty array if none are found."]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"position"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"Object"})}),(0,i.jsx)(r.td,{children:"The ending position to search up to."})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"markType"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(r.td,{children:"The type of mark to look for."})]})]})]}),"\n",(0,i.jsx)("a",{name:"Editor+getAllMarks"}),"\n",(0,i.jsxs)(r.h3,{id:"editorgetallmarksmarktype--arraytextmarker",children:["editor.getAllMarks([markType]) \u21d2 ",(0,i.jsx)("code",{children:"Array."})]}),"\n",(0,i.jsx)(r.p,{children:"Returns an array containing all marked ranges in the document."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})}),(0,i.jsx)(r.br,{}),"\n",(0,i.jsx)(r.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"Array."})," - TextMarker - A text marker array"]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsx)(r.tbody,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"[markType]"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(r.td,{children:"Optional, if given will only return marks of that type. Else returns everything."})]})})]}),"\n",(0,i.jsx)("a",{name:"Editor+clearAllMarks"}),"\n",(0,i.jsx)(r.h3,{id:"editorclearallmarksmarktype-linenumbers",children:"editor.clearAllMarks([markType], [lineNumbers])"}),"\n",(0,i.jsx)(r.p,{children:"Clears all marks of the given type. If a lineNumbers array is given, only clears marks on those lines.\nIf no markType or lineNumbers are given, clears all marks (use cautiously)."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"[markType]"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(r.td,{children:"Optional, if given will only delete marks of that type. Else delete everything."})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"[lineNumbers]"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"Array."})}),(0,i.jsx)(r.td,{children:"Optional, array of line numbers where marks should be cleared."})]})]})]}),"\n",(0,i.jsx)("a",{name:"Editor+isSamePosition"}),"\n",(0,i.jsxs)(r.h3,{id:"editorissamepositionposition1-position2--boolean",children:["editor.isSamePosition(position1, position2) \u21d2 ",(0,i.jsx)("code",{children:"boolean"})]}),"\n",(0,i.jsx)(r.p,{children:"Checks if two positions in the editor are the same."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})}),(0,i.jsx)(r.br,{}),"\n",(0,i.jsx)(r.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"boolean"})," - True if both positions are the same, false otherwise."]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"position1"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"Object"})}),(0,i.jsx)(r.td,{children:"cursor position"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"position2"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"Object"})}),(0,i.jsx)(r.td,{children:"cursor position"})]})]})]}),"\n",(0,i.jsx)("a",{name:"Editor+getHistory"}),"\n",(0,i.jsxs)(r.h3,{id:"editorgethistory--array",children:["editor.getHistory() \u21d2 ",(0,i.jsx)("code",{children:"Array"})]}),"\n",(0,i.jsx)(r.p,{children:"Get a (JSON-serializable) representation of the undo history."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})}),(0,i.jsx)(r.br,{}),"\n",(0,i.jsx)(r.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"Array"})," - The history of the editor."]}),"\n",(0,i.jsx)("a",{name:"Editor+setHistory"}),"\n",(0,i.jsx)(r.h3,{id:"editorsethistory",children:"editor.setHistory()"}),"\n",(0,i.jsx)(r.p,{children:"Replace the editor's undo history with the one provided, which must be a value\nas returned by getHistory. Note that this will have entirely undefined results\nif the editor content isn't also the same as it was when getHistory was called."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsx)("a",{name:"Editor+createHistoryRestorePoint"}),"\n",(0,i.jsx)(r.h3,{id:"editorcreatehistoryrestorepointrestorepointname",children:"editor.createHistoryRestorePoint(restorePointName)"}),"\n",(0,i.jsx)(r.p,{children:"Creates a named restore point in undo history. this can be later be restored to undo all\nchanged till the named restore point in one go."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsx)(r.tbody,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"restorePointName"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(r.td,{children:"The name of the restore point to revert to."})]})})]}),"\n",(0,i.jsx)("a",{name:"Editor+restoreHistoryPoint"}),"\n",(0,i.jsx)(r.h3,{id:"editorrestorehistorypointrestorepointname",children:"editor.restoreHistoryPoint(restorePointName)"}),"\n",(0,i.jsx)(r.p,{children:"To restore the editor to a named restore point\nif the restore point is found, it reverts all changes made after that point."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsx)(r.tbody,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"restorePointName"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(r.td,{children:"The name of the restore point to revert to."})]})})]}),"\n",(0,i.jsx)("a",{name:"Editor+setSelection"}),"\n",(0,i.jsx)(r.h3,{id:"editorsetselectionstart-end-center-centeroptions-origin",children:"editor.setSelection(start, [end], [center], [centerOptions], [origin])"}),"\n",(0,i.jsx)(r.p,{children:"Sets the current selection. Start is inclusive, end is exclusive. Places the cursor at the\nend of the selection range. Optionally centers around the cursor after\nmaking the selection"}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"start"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"Object"})}),(0,i.jsx)(r.td,{})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"[end]"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"Object"})}),(0,i.jsx)(r.td,{children:"If not specified, defaults to start."})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"[center]"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"boolean"})}),(0,i.jsx)(r.td,{children:"true to center the viewport"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"[centerOptions]"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"number"})}),(0,i.jsx)(r.td,{children:"Option value, or 0 for no options; one of the BOUNDARY_* constants above."})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"[origin]"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsxs)(r.td,{children:["An optional string that describes what other selection or edit operations this should be merged with for the purposes of undo. See ",(0,i.jsx)(r.a,{href:"Document::Document#replaceRange",children:"Document::Document#replaceRange"})," for more details."]})]})]})]}),"\n",(0,i.jsx)("a",{name:"Editor+replaceSelection"}),"\n",(0,i.jsx)(r.h3,{id:"editorreplaceselectionreplacement-select",children:"editor.replaceSelection(replacement, [select])"}),"\n",(0,i.jsx)(r.p,{children:"Replace the selection with the given string."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"replacement"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(r.td,{children:"the text to replace the current selection"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"[select]"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(r.td,{children:'The optional select argument can be used to change selection. Passing "around" will cause the new text to be selected, passing "start" will collapse the selection to the start of the inserted text.'})]})]})]}),"\n",(0,i.jsx)("a",{name:"Editor+replaceSelections"}),"\n",(0,i.jsx)(r.h3,{id:"editorreplaceselectionsreplacement-select",children:"editor.replaceSelections(replacement, [select])"}),"\n",(0,i.jsx)(r.p,{children:"Replaces the content of multiple selections with the strings in the array. The length of the given\narray should be the same as the number of active selections."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"replacement"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"Array."})}),(0,i.jsx)(r.td,{children:"the text array to replace the current selections with"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"[select]"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(r.td,{children:'The optional select argument can be used to change selection. Passing "around" will cause the new text to be selected, passing "start" will collapse the selection to the start of the inserted text.'})]})]})]}),"\n",(0,i.jsx)("a",{name:"Editor+replaceRange"}),"\n",(0,i.jsx)(r.h3,{id:"editorreplacerangereplacement-from-to-origin",children:"editor.replaceRange(replacement, from, [to], origin)"}),"\n",(0,i.jsx)(r.p,{children:"Replace the part of the document between from and to with the given string."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"replacement"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(r.td,{children:"the text to replace the current selection"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"from"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"Object"})}),(0,i.jsx)(r.td,{children:"the strat position to replace"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"[to]"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"Object"})}),(0,i.jsx)(r.td,{children:"the end position to replace. to can be left off to simply insert the string at position from."})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"origin"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(r.td,{children:'When origin is given, it will be passed on to "change" events, and its first letter will be used to determine whether this change can be merged with previous history events of the inserted text.'})]})]})]}),"\n",(0,i.jsx)("a",{name:"Editor+replaceMultipleRanges"}),"\n",(0,i.jsx)(r.h3,{id:"editorreplacemultiplerangesranges-origin",children:"editor.replaceMultipleRanges(ranges, [origin])"}),"\n",(0,i.jsx)(r.p,{children:"Replaces multiple ranges in the editor with the specified texts."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"ranges"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"Array"})}),(0,i.jsxs)(r.td,{children:["An array of range objects, each containing ",(0,i.jsx)(r.code,{children:"from"}),", ",(0,i.jsx)(r.code,{children:"to"}),", and ",(0,i.jsx)(r.code,{children:"text"})," properties."]})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"ranges[].from"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"Object"})}),(0,i.jsxs)(r.td,{children:["The start position of the range to be replaced. It should have ",(0,i.jsx)(r.code,{children:"line"})," and ",(0,i.jsx)(r.code,{children:"ch"})," properties."]})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"ranges[].to"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"Object"})}),(0,i.jsxs)(r.td,{children:["The end position of the range to be replaced. It should have ",(0,i.jsx)(r.code,{children:"line"})," and ",(0,i.jsx)(r.code,{children:"ch"})," properties."]})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"ranges[].text"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(r.td,{children:"The text to replace the specified range."})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"[origin]"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(r.td,{children:"An optional origin identifier to be associated with the changes."})]})]})]}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.strong,{children:"Example"})}),"\n",(0,i.jsx)(r.pre,{children:(0,i.jsx)(r.code,{className:"language-js",children:"editor.replaceMultipleRanges([\n { from: { line: 0, ch: 0 }, to: { line: 0, ch: 5 }, text: 'Hello' },\n { from: { line: 1, ch: 0 }, to: { line: 1, ch: 4 }, text: 'World' }\n], 'exampleOrigin');\n"})}),"\n",(0,i.jsx)("a",{name:"Editor+clearSelection"}),"\n",(0,i.jsx)(r.h3,{id:"editorclearselection",children:"editor.clearSelection()"}),"\n",(0,i.jsx)(r.p,{children:"Clears any active selection if present."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsx)("a",{name:"Editor+setSelections"}),"\n",(0,i.jsx)(r.h3,{id:"editorsetselectionsselections-center-centeroptions-origin",children:"editor.setSelections(selections, center, centerOptions, origin)"}),"\n",(0,i.jsx)(r.p,{children:'Sets a multiple selection, with the "primary" selection (the one returned by\ngetSelection() and getCursorPos()) defaulting to the last if not specified.\nOverlapping ranges will be automatically merged, and the selection will be sorted.\nOptionally centers around the primary selection after making the selection.'}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"selections"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"Object"})}),(0,i.jsx)(r.td,{children:"The selection ranges to set. If the start and end of a range are the same, treated as a cursor. If reversed is true, set the anchor of the range to the end instead of the start. If primary is true, this is the primary selection. Behavior is undefined if more than one selection has primary set to true. If none has primary set to true, the last one is primary."})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"center"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"boolean"})}),(0,i.jsx)(r.td,{children:"true to center the viewport around the primary selection."})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"centerOptions"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"number"})}),(0,i.jsx)(r.td,{children:"Option value, or 0 for no options; one of the BOUNDARY_* constants above."})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"origin"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsxs)(r.td,{children:["An optional string that describes what other selection or edit operations this should be merged with for the purposes of undo. See ",(0,i.jsx)(r.a,{href:"Document::Document#replaceRange",children:"Document::Document#replaceRange"})," for more details."]})]})]})]}),"\n",(0,i.jsx)("a",{name:"Editor+toggleOverwrite"}),"\n",(0,i.jsx)(r.h3,{id:"editortoggleoverwritestart",children:"editor.toggleOverwrite(start)"}),"\n",(0,i.jsx)(r.p,{children:"Sets the editors overwrite mode state. If null is passed, the state is toggled."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"})]})}),(0,i.jsx)(r.tbody,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"start"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"boolean"})})]})})]}),"\n",(0,i.jsx)("a",{name:"Editor+selectWordAt"}),"\n",(0,i.jsx)(r.h3,{id:"editorselectwordatpos",children:"editor.selectWordAt(pos)"}),"\n",(0,i.jsx)(r.p,{children:'Selects word that the given pos lies within or adjacent to. If pos isn\'t touching a word\n(e.g. within a token like "//"), moves the cursor to pos without selecting a range.'}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"})]})}),(0,i.jsx)(r.tbody,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"pos"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"Object"})})]})})]}),"\n",(0,i.jsx)("a",{name:"Editor+getTextBetween"}),"\n",(0,i.jsxs)(r.h3,{id:"editorgettextbetweenstartpos-endpos--string",children:["editor.getTextBetween(startPos, endPos) \u21d2 ",(0,i.jsx)("code",{children:"string"})]}),"\n",(0,i.jsx)(r.p,{children:"To get the text between the starting position and the ending position"}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})}),(0,i.jsx)(r.br,{}),"\n",(0,i.jsx)(r.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"string"})," - The text between the starting position and the ending position"]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"startPos"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"Object"})}),(0,i.jsx)(r.td,{})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"endPos"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"Object"})}),(0,i.jsx)(r.td,{})]})]})]}),"\n",(0,i.jsx)("a",{name:"Editor+getWordAt"}),"\n",(0,i.jsxs)(r.h3,{id:"editorgetwordatpos--object",children:["editor.getWordAt(pos) \u21d2 ",(0,i.jsx)("code",{children:"Object"})]}),"\n",(0,i.jsx)(r.p,{children:'Gets word at the given pos lies within or adjacent to. If pos isn\'t touching a word\n(e.g. within a token like "//"), returns null'}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsx)(r.tr,{children:(0,i.jsx)(r.th,{children:"Param"})})}),(0,i.jsx)(r.tbody,{children:(0,i.jsx)(r.tr,{children:(0,i.jsx)(r.td,{children:"pos"})})})]}),"\n",(0,i.jsx)("a",{name:"Editor+getNumberAt"}),"\n",(0,i.jsxs)(r.h3,{id:"editorgetnumberatpos-maxdigits--object",children:["editor.getNumberAt(pos, maxDigits) \u21d2 ",(0,i.jsx)("code",{children:"Object"})]}),"\n",(0,i.jsx)(r.p,{children:"Gets number string of (upto 10 digits default) at the given pos lies within or adjacent to.\nIf pos isn't touching a number, returns null. If the number in string is greater than max digits\nreturns null."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"pos"}),(0,i.jsx)(r.td,{}),(0,i.jsx)(r.td,{})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"maxDigits"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"number"})}),(0,i.jsx)(r.td,{children:"number of digits allowed. This is to prevent massive digit strings."})]})]})]}),"\n",(0,i.jsx)("a",{name:"Editor+lineCount"}),"\n",(0,i.jsxs)(r.h3,{id:"editorlinecount--number",children:["editor.lineCount() \u21d2 ",(0,i.jsx)("code",{children:"number"})]}),"\n",(0,i.jsx)(r.p,{children:"Gets the total number of lines in the document (includes lines not visible in the viewport)"}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsx)("a",{name:"Editor+isLineVisible"}),"\n",(0,i.jsxs)(r.h3,{id:"editorislinevisiblezero-based--boolean",children:["editor.isLineVisible(zero-based) \u21d2 ",(0,i.jsx)("code",{children:"boolean"})]}),"\n",(0,i.jsx)(r.p,{children:"Deterines if line is fully visible."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})}),(0,i.jsx)(r.br,{}),"\n",(0,i.jsx)(r.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"boolean"})," - true if the line is fully visible, false otherwise"]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsx)(r.tbody,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"zero-based"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"number"})}),(0,i.jsx)(r.td,{children:"index of the line to test"})]})})]}),"\n",(0,i.jsx)("a",{name:"Editor+getFirstVisibleLine"}),"\n",(0,i.jsxs)(r.h3,{id:"editorgetfirstvisibleline--number",children:["editor.getFirstVisibleLine() \u21d2 ",(0,i.jsx)("code",{children:"number"})]}),"\n",(0,i.jsx)(r.p,{children:"Gets the number of the first visible line in the editor."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})}),(0,i.jsx)(r.br,{}),"\n",(0,i.jsx)(r.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"number"})," - The 0-based index of the first visible line."]}),"\n",(0,i.jsx)("a",{name:"Editor+getLastVisibleLine"}),"\n",(0,i.jsxs)(r.h3,{id:"editorgetlastvisibleline--number",children:["editor.getLastVisibleLine() \u21d2 ",(0,i.jsx)("code",{children:"number"})]}),"\n",(0,i.jsx)(r.p,{children:"Gets the number of the last visible line in the editor."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})}),(0,i.jsx)(r.br,{}),"\n",(0,i.jsx)(r.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"number"})," - The 0-based index of the last visible line."]}),"\n",(0,i.jsx)("a",{name:"Editor+totalHeight"}),"\n",(0,i.jsxs)(r.h3,{id:"editortotalheight--number",children:["editor.totalHeight() \u21d2 ",(0,i.jsx)("code",{children:"number"})]}),"\n",(0,i.jsx)(r.p,{children:"Gets the total height of the document in pixels (not the viewport)"}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})}),(0,i.jsx)(r.br,{}),"\n",(0,i.jsx)(r.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"number"})," - height in pixels"]}),"\n",(0,i.jsx)("a",{name:"Editor+getScrollerElement"}),"\n",(0,i.jsxs)(r.h3,{id:"editorgetscrollerelement--htmldivelement",children:["editor.getScrollerElement() \u21d2 ",(0,i.jsx)("code",{children:"HTMLDivElement"})]}),"\n",(0,i.jsx)(r.p,{children:"Gets the scroller element from the editor."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})}),(0,i.jsx)(r.br,{}),"\n",(0,i.jsx)(r.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"HTMLDivElement"})," - scroller"]}),"\n",(0,i.jsx)("a",{name:"Editor+getRootElement"}),"\n",(0,i.jsxs)(r.h3,{id:"editorgetrootelement--htmldivelement",children:["editor.getRootElement() \u21d2 ",(0,i.jsx)("code",{children:"HTMLDivElement"})]}),"\n",(0,i.jsx)(r.p,{children:"Gets the root DOM node of the editor."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})}),(0,i.jsx)(r.br,{}),"\n",(0,i.jsx)(r.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"HTMLDivElement"})," - The editor's root DOM node."]}),"\n",(0,i.jsx)("a",{name:"Editor+getScrollPos"}),"\n",(0,i.jsxs)(r.h3,{id:"editorgetscrollpos--object",children:["editor.getScrollPos() \u21d2 ",(0,i.jsx)("code",{children:"Object"})]}),"\n",(0,i.jsx)(r.p,{children:"Returns the current scroll position of the editor."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})}),(0,i.jsx)(r.br,{}),"\n",(0,i.jsx)(r.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"Object"})," - The x,y scroll position in pixels"]}),"\n",(0,i.jsx)("a",{name:"Editor+adjustScrollPos"}),"\n",(0,i.jsx)(r.h3,{id:"editoradjustscrollposscrollpos-heightdelta",children:"editor.adjustScrollPos(scrollPos, heightDelta)"}),"\n",(0,i.jsx)(r.p,{children:"Restores and adjusts the current scroll position of the editor."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"scrollPos"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"Object"})}),(0,i.jsx)(r.td,{children:"The x,y scroll position in pixels"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"heightDelta"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"number"})}),(0,i.jsx)(r.td,{children:"The amount of delta H to apply to the scroll position"})]})]})]}),"\n",(0,i.jsx)("a",{name:"Editor+setScrollPos"}),"\n",(0,i.jsx)(r.h3,{id:"editorsetscrollposx-y",children:"editor.setScrollPos(x, y)"}),"\n",(0,i.jsx)(r.p,{children:"Sets the current scroll position of the editor."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"x"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"number"})}),(0,i.jsx)(r.td,{children:"scrollLeft position in pixels"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"y"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"number"})}),(0,i.jsx)(r.td,{children:"scrollTop position in pixels"})]})]})]}),"\n",(0,i.jsx)("a",{name:"Editor+getTextHeight"}),"\n",(0,i.jsxs)(r.h3,{id:"editorgettextheight--number",children:["editor.getTextHeight() \u21d2 ",(0,i.jsx)("code",{children:"number"})]}),"\n",(0,i.jsx)(r.p,{children:"Returns the current text height of the editor."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})}),(0,i.jsx)(r.br,{}),"\n",(0,i.jsx)(r.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"number"})," - Height of the text in pixels"]}),"\n",(0,i.jsx)("a",{name:"Editor+displayErrorMessageAtCursor"}),"\n",(0,i.jsx)(r.h3,{id:"editordisplayerrormessageatcursorerrormsg",children:"editor.displayErrorMessageAtCursor(errorMsg)"}),"\n",(0,i.jsx)(r.p,{children:"Display temporary popover message at current cursor position. Display message above\ncursor if space allows, otherwise below."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsx)(r.tbody,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"errorMsg"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(r.td,{children:"Error message to display"})]})})]}),"\n",(0,i.jsx)("a",{name:"Editor+getVirtualScrollAreaTop"}),"\n",(0,i.jsxs)(r.h3,{id:"editorgetvirtualscrollareatop--number",children:["editor.getVirtualScrollAreaTop() \u21d2 ",(0,i.jsx)("code",{children:"number"})]}),"\n",(0,i.jsx)(r.p,{children:"Returns the offset of the top of the virtual scroll area relative to the browser window (not the editor\nitself). Mainly useful for calculations related to scrollIntoView(), where you're starting with the\noffset() of a child widget (relative to the browser window) and need to figure out how far down it is from\nthe top of the virtual scroll area (excluding the top padding)."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsx)("a",{name:"Editor+focus"}),"\n",(0,i.jsx)(r.h3,{id:"editorfocus",children:"editor.focus()"}),"\n",(0,i.jsx)(r.p,{children:"Gives focus to the editor control"}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsx)("a",{name:"Editor+hasFocus"}),"\n",(0,i.jsx)(r.h3,{id:"editorhasfocus",children:"editor.hasFocus()"}),"\n",(0,i.jsx)(r.p,{children:"Returns true if the editor has focus"}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsx)("a",{name:"Editor+getViewState"}),"\n",(0,i.jsxs)(r.h3,{id:"editorgetviewstate--editorviewstate",children:["editor.getViewState() \u21d2 ",(0,i.jsx)("code",{children:"EditorViewState"})]}),"\n",(0,i.jsx)(r.p,{children:"returns the view state for the editor"}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsx)("a",{name:"Editor+restoreViewState"}),"\n",(0,i.jsx)(r.h3,{id:"editorrestoreviewstateviewstate",children:"editor.restoreViewState(viewState)"}),"\n",(0,i.jsx)(r.p,{children:"Restores the view state"}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsx)(r.tbody,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"viewState"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"EditorViewState"})}),(0,i.jsx)(r.td,{children:"the view state object to restore"})]})})]}),"\n",(0,i.jsx)("a",{name:"Editor+refresh"}),"\n",(0,i.jsx)(r.h3,{id:"editorrefreshhandleresize",children:"editor.refresh([handleResize])"}),"\n",(0,i.jsx)(r.p,{children:"Re-renders the editor UI"}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsx)(r.tbody,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"[handleResize]"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"boolean"})}),(0,i.jsx)(r.td,{children:"true if this is in response to resizing the editor. Default false."})]})})]}),"\n",(0,i.jsx)("a",{name:"Editor+refreshAll"}),"\n",(0,i.jsx)(r.h3,{id:"editorrefreshallhandleresize",children:"editor.refreshAll([handleResize])"}),"\n",(0,i.jsx)(r.p,{children:"Re-renders the editor, and all children inline editors."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsx)(r.tbody,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"[handleResize]"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"boolean"})}),(0,i.jsx)(r.td,{children:"true if this is in response to resizing the editor. Default false."})]})})]}),"\n",(0,i.jsx)("a",{name:"Editor+undo"}),"\n",(0,i.jsx)(r.h3,{id:"editorundo",children:"editor.undo()"}),"\n",(0,i.jsx)(r.p,{children:"Undo the last edit."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsx)("a",{name:"Editor+redo"}),"\n",(0,i.jsx)(r.h3,{id:"editorredo",children:"editor.redo()"}),"\n",(0,i.jsx)(r.p,{children:"Redo the last un-done edit."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsx)("a",{name:"Editor+notifyVisibilityChange"}),"\n",(0,i.jsx)(r.h3,{id:"editornotifyvisibilitychangeshow-refresh",children:"editor.notifyVisibilityChange(show, refresh)"}),"\n",(0,i.jsx)(r.p,{children:'View API Visibility Change Notification handler. This is also\ncalled by the native "setVisible" API which refresh can be optimized'}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"show"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"boolean"})}),(0,i.jsx)(r.td,{children:"true to show the editor, false to hide it"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"refresh"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"boolean"})}),(0,i.jsx)(r.td,{children:"true (default) to refresh the editor, false to skip refreshing it"})]})]})]}),"\n",(0,i.jsx)("a",{name:"Editor+setVisible"}),"\n",(0,i.jsx)(r.h3,{id:"editorsetvisibleshow-refresh",children:"editor.setVisible(show, refresh)"}),"\n",(0,i.jsx)(r.p,{children:"Shows or hides the editor within its parent. Does not force its ancestors to\nbecome visible."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"show"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"boolean"})}),(0,i.jsx)(r.td,{children:"true to show the editor, false to hide it"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"refresh"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"boolean"})}),(0,i.jsx)(r.td,{children:"true (default) to refresh the editor, false to skip refreshing it"})]})]})]}),"\n",(0,i.jsx)("a",{name:"Editor+isFullyVisible"}),"\n",(0,i.jsx)(r.h3,{id:"editorisfullyvisible",children:"editor.isFullyVisible()"}),"\n",(0,i.jsx)(r.p,{children:"Returns true if the editor is fully visible--i.e., is in the DOM, all ancestors are\nvisible, and has a non-zero width/height."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsx)("a",{name:"Editor+getModeForRange"}),"\n",(0,i.jsxs)(r.h3,{id:"editorgetmodeforrangestart-end-knownmixed--object--string",children:["editor.getModeForRange(start, end, [knownMixed]) \u21d2 ",(0,i.jsx)("code",{children:"Object"})," | ",(0,i.jsx)("code",{children:"string"})]}),"\n",(0,i.jsxs)(r.p,{children:["Gets the syntax-highlighting mode for the given range.\nReturns null if the mode at the start of the selection differs from the mode at the end -\nan ",(0,i.jsx)(r.em,{children:"approximation"})," of whether the mode is consistent across the whole range (a pattern like\nA-B-A would return A as the mode, not null)."]}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})}),(0,i.jsx)(r.br,{}),"\n",(0,i.jsx)(r.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"Object"})," | ",(0,i.jsx)("code",{children:"string"}),' - Name of syntax-highlighting mode, or object containing a "name" property\nnaming the mode along with configuration options required by the mode.',(0,i.jsx)(r.br,{}),"\n",(0,i.jsx)(r.strong,{children:"See"}),": ",(0,i.jsx)(r.a,{href:"LanguageManager::#getLanguageForPath",children:"LanguageManager::#getLanguageForPath"})," and ",(0,i.jsx)(r.a,{href:"LanguageManager::Language#getMode",children:"LanguageManager::Language#getMode"}),"."]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"start"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"Object"})}),(0,i.jsx)(r.td,{children:"The start of the range to check."})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"end"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"Object"})}),(0,i.jsx)(r.td,{children:"The end of the range to check."})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"[knownMixed]"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"boolean"})}),(0,i.jsx)(r.td,{children:"Whether we already know we're in a mixed mode and need to check both the start and end."})]})]})]}),"\n",(0,i.jsx)("a",{name:"Editor+getModeForSelection"}),"\n",(0,i.jsxs)(r.h3,{id:"editorgetmodeforselectionselection--object--string",children:["editor.getModeForSelection(selection) \u21d2 ",(0,i.jsx)("code",{children:"Object"})," | ",(0,i.jsx)("code",{children:"string"})]}),"\n",(0,i.jsxs)(r.p,{children:["Gets the syntax-highlighting mode for the current selection or cursor position. (The mode may\nvary within one file due to embedded languages, e.g. JS embedded in an HTML script block). See\n",(0,i.jsx)(r.code,{children:"getModeForRange()"})," for how this is determined for a single selection."]}),"\n",(0,i.jsx)(r.p,{children:"If there are multiple selections, this will return a mode only if all the selections are individually\nconsistent and resolve to the same mode."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})}),(0,i.jsx)(r.br,{}),"\n",(0,i.jsx)(r.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"Object"})," | ",(0,i.jsx)("code",{children:"string"}),' - Name of syntax-highlighting mode, or object containing a "name" property\nnaming the mode along with configuration options required by the mode.',(0,i.jsx)(r.br,{}),"\n",(0,i.jsx)(r.strong,{children:"See"}),": ",(0,i.jsx)(r.a,{href:"LanguageManager::#getLanguageForPath",children:"LanguageManager::#getLanguageForPath"})," and ",(0,i.jsx)(r.a,{href:"LanguageManager::Language#getMode",children:"LanguageManager::Language#getMode"}),"."]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"})]})}),(0,i.jsx)(r.tbody,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"selection"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"Object"})})]})})]}),"\n",(0,i.jsx)("a",{name:"Editor+getLanguageForSelection"}),"\n",(0,i.jsxs)(r.h3,{id:"editorgetlanguageforselection--language",children:["editor.getLanguageForSelection() \u21d2 ",(0,i.jsx)("code",{children:"Language"})]}),"\n",(0,i.jsx)(r.p,{children:"gets the language for the selection. (Javascript selected from an HTML document or CSS selected from an HTML\ndocument, etc...)"}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsx)("a",{name:"Editor+getLanguageForPosition"}),"\n",(0,i.jsxs)(r.h3,{id:"editorgetlanguageforposition--language",children:["editor.getLanguageForPosition() \u21d2 ",(0,i.jsx)("code",{children:"Language"})]}),"\n",(0,i.jsx)(r.p,{children:"gets the language for the selection. (Javascript selected from an HTML document or CSS selected from an HTML\ndocument, etc...)"}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsx)("a",{name:"Editor+getModeForDocument"}),"\n",(0,i.jsxs)(r.h3,{id:"editorgetmodefordocument--object--string",children:["editor.getModeForDocument() \u21d2 ",(0,i.jsx)("code",{children:"Object"})," | ",(0,i.jsx)("code",{children:"String"})]}),"\n",(0,i.jsx)(r.p,{children:"Gets the syntax-highlighting mode for the document."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})}),(0,i.jsx)(r.br,{}),"\n",(0,i.jsx)(r.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"Object"})," | ",(0,i.jsx)("code",{children:"String"})," - Object or Name of syntax-highlighting mode",(0,i.jsx)(r.br,{}),"\n",(0,i.jsx)(r.strong,{children:"See"}),": ",(0,i.jsx)(r.a,{href:"LanguageManager::#getLanguageForPath",children:"LanguageManager.getLanguageForPath"})," and ",(0,i.jsx)(r.a,{href:"LanguageManager::Language#getMode",children:"Language.getMode"}),"."]}),"\n",(0,i.jsx)("a",{name:"Editor+updateLayout"}),"\n",(0,i.jsx)(r.h3,{id:"editorupdatelayoutforcerefresh",children:"editor.updateLayout([forceRefresh])"}),"\n",(0,i.jsx)(r.p,{children:"resizes the editor to fill its parent container\nshould not be used on inline editors"}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsx)(r.tbody,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"[forceRefresh]"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"boolean"})}),(0,i.jsx)(r.td,{children:"forces the editor to update its layout even if it already matches the container's height / width"})]})})]}),"\n",(0,i.jsx)("a",{name:"Editor+setGutterMarker"}),"\n",(0,i.jsxs)(r.h3,{id:"editorsetguttermarkerlinenumber-guttername-marker--object",children:["editor.setGutterMarker(lineNumber, gutterName, marker) \u21d2 ",(0,i.jsx)("code",{children:"Object"})]}),"\n",(0,i.jsx)(r.p,{children:"Sets the marker for the specified gutter on the specified line number"}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})}),(0,i.jsx)(r.br,{}),"\n",(0,i.jsx)(r.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"Object"})," - lineHandle this can be used to track the gutter line as the line number\nchanges as the user edits code."]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"lineNumber"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"number"})}),(0,i.jsx)(r.td,{children:"The line number for the inserted gutter marker"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"gutterName"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(r.td,{children:"The name of the gutter"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"marker"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"object"})}),(0,i.jsx)(r.td,{children:"The dom element representing the marker to the inserted in the gutter"})]})]})]}),"\n",(0,i.jsx)("a",{name:"Editor+getGutterMarker"}),"\n",(0,i.jsx)(r.h3,{id:"editorgetguttermarkerlinenumber-guttername",children:"editor.getGutterMarker(lineNumber, gutterName)"}),"\n",(0,i.jsx)(r.p,{children:"Gets the gutter marker of the given name if found on the current line, else returns undefined."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"lineNumber"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"number"})}),(0,i.jsx)(r.td,{children:"The line number for the inserted gutter marker"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"gutterName"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(r.td,{children:"The name of the gutter"})]})]})]}),"\n",(0,i.jsx)("a",{name:"Editor+clearGutterMarker"}),"\n",(0,i.jsx)(r.h3,{id:"editorclearguttermarkerlinenumber-guttername",children:"editor.clearGutterMarker(lineNumber, gutterName)"}),"\n",(0,i.jsx)(r.p,{children:"Clears the marker for the specified gutter on the specified line number. Does nothing if there was no marker\non the line."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"lineNumber"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"number"})}),(0,i.jsx)(r.td,{children:"The line number for the inserted gutter marker"})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"gutterName"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(r.td,{children:"The name of the gutter"})]})]})]}),"\n",(0,i.jsx)("a",{name:"Editor+isGutterActive"}),"\n",(0,i.jsx)(r.h3,{id:"editorisgutteractiveguttername",children:"editor.isGutterActive(gutterName)"}),"\n",(0,i.jsx)(r.p,{children:"Returns true if this editor has the named gutter activated. gutters are considered active if the gutter is\nregistered for the language of the file currently shown in the editor."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsx)(r.tbody,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"gutterName"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(r.td,{children:"The name of the gutter to check"})]})})]}),"\n",(0,i.jsx)("a",{name:"Editor+clearGutter"}),"\n",(0,i.jsx)(r.h3,{id:"editorcleargutterguttername",children:"editor.clearGutter(gutterName)"}),"\n",(0,i.jsx)(r.p,{children:"Clears all marks from the gutter with the specified name."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsx)(r.tbody,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"gutterName"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(r.td,{children:"The name of the gutter to clear."})]})})]}),"\n",(0,i.jsx)("a",{name:"Editor.getMarkOptionUnderlineError"}),"\n",(0,i.jsx)(r.h3,{id:"editorgetmarkoptionunderlineerror",children:"Editor.getMarkOptionUnderlineError"}),"\n",(0,i.jsx)(r.p,{children:"Mark option to underline errors."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": static property of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsx)("a",{name:"Editor.getMarkOptionUnderlineWarn"}),"\n",(0,i.jsx)(r.h3,{id:"editorgetmarkoptionunderlinewarn",children:"Editor.getMarkOptionUnderlineWarn"}),"\n",(0,i.jsx)(r.p,{children:"Mark option to underline warnings."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": static property of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsx)("a",{name:"Editor.getMarkOptionUnderlineInfo"}),"\n",(0,i.jsx)(r.h3,{id:"editorgetmarkoptionunderlineinfo",children:"Editor.getMarkOptionUnderlineInfo"}),"\n",(0,i.jsx)(r.p,{children:"Mark option to underline informational text."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": static property of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsx)("a",{name:"Editor.getMarkOptionUnderlineSpellcheck"}),"\n",(0,i.jsx)(r.h3,{id:"editorgetmarkoptionunderlinespellcheck",children:"Editor.getMarkOptionUnderlineSpellcheck"}),"\n",(0,i.jsx)(r.p,{children:"Mark option to underline spelling errors."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": static property of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsx)("a",{name:"Editor.getMarkOptionHyperlinkText"}),"\n",(0,i.jsx)(r.h3,{id:"editorgetmarkoptionhyperlinktext",children:"Editor.getMarkOptionHyperlinkText"}),"\n",(0,i.jsx)(r.p,{children:"Mark option to highlight hyperlinks."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": static property of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsx)("a",{name:"Editor.getMarkOptionMatchingRefs"}),"\n",(0,i.jsx)(r.h3,{id:"editorgetmarkoptionmatchingrefs",children:"Editor.getMarkOptionMatchingRefs"}),"\n",(0,i.jsx)(r.p,{children:"Mark option for matching references."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": static property of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsx)("a",{name:"Editor.getMarkOptionRenameOutline"}),"\n",(0,i.jsx)(r.h3,{id:"editorgetmarkoptionrenameoutline",children:"Editor.getMarkOptionRenameOutline"}),"\n",(0,i.jsx)(r.p,{children:"Mark option for renaming outlines."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": static property of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsx)("a",{name:"Editor.getRegisteredGutters"}),"\n",(0,i.jsxs)(r.h3,{id:"editorgetregisteredgutters--object",children:["Editor.getRegisteredGutters() \u21d2 ",(0,i.jsx)("code",{children:"Object"})]}),"\n",(0,i.jsx)(r.p,{children:"Returns the list of gutters current registered on all editors."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": static method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsx)("a",{name:"Editor.isGutterRegistered"}),"\n",(0,i.jsxs)(r.h3,{id:"editorisgutterregisteredguttername--boolean",children:["Editor.isGutterRegistered(gutterName) \u21d2 ",(0,i.jsx)("code",{children:"boolean"})]}),"\n",(0,i.jsx)(r.p,{children:"Return true if gutter of the given name is registered"}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": static method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsx)(r.tbody,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"gutterName"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(r.td,{children:"The name of the gutter"})]})})]}),"\n",(0,i.jsx)("a",{name:"Editor.registerGutter"}),"\n",(0,i.jsx)(r.h3,{id:"editorregisterguttername-priority-languageids",children:"Editor.registerGutter(name, priority, [languageIds])"}),"\n",(0,i.jsx)(r.p,{children:"Registers the gutter with the specified name at the given priority."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": static method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"name"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(r.td,{children:"The name of the gutter."})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"priority"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"number"})}),(0,i.jsx)(r.td,{children:"A number denoting the priority of the gutter. Priorities higher than LINE_NUMBER_GUTTER_PRIORITY appear after the line numbers. Priority less than LINE_NUMBER_GUTTER_PRIORITY appear before."})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"[languageIds]"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"Array."})}),(0,i.jsx)(r.td,{children:"A list of language ids that this gutter is valid for. If no language ids are passed, then the gutter is valid in all languages."})]})]})]}),"\n",(0,i.jsx)("a",{name:"Editor.unregisterGutter"}),"\n",(0,i.jsx)(r.h3,{id:"editorunregisterguttername",children:"Editor.unregisterGutter(name)"}),"\n",(0,i.jsx)(r.p,{children:"Unregisters the gutter with the specified name and removes it from the UI."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": static method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsx)(r.tbody,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"name"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(r.td,{children:"The name of the gutter to be unregistered."})]})})]}),"\n",(0,i.jsx)("a",{name:"Editor.setUseTabChar"}),"\n",(0,i.jsxs)(r.h3,{id:"editorsetusetabcharvalue-fullpath--boolean",children:["Editor.setUseTabChar(value, [fullPath]) \u21d2 ",(0,i.jsx)("code",{children:"boolean"})]}),"\n",(0,i.jsx)(r.p,{children:"Sets whether to use tab characters (vs. spaces) when inserting new text.\nAffects any editors that share the same preference location."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": static method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})}),(0,i.jsx)(r.br,{}),"\n",(0,i.jsx)(r.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"boolean"})," - true if value was valid"]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"value"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"boolean"})}),(0,i.jsx)(r.td,{})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"[fullPath]"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(r.td,{children:"Path to file to get preference for"})]})]})]}),"\n",(0,i.jsx)("a",{name:"Editor.getUseTabChar"}),"\n",(0,i.jsxs)(r.h3,{id:"editorgetusetabcharfullpath--boolean",children:["Editor.getUseTabChar([fullPath]) \u21d2 ",(0,i.jsx)("code",{children:"boolean"})]}),"\n",(0,i.jsx)(r.p,{children:"Gets whether the specified or current file uses tab characters (vs. spaces) when inserting new text"}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": static method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsx)(r.tbody,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"[fullPath]"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(r.td,{children:"Path to file to get preference for"})]})})]}),"\n",(0,i.jsx)("a",{name:"Editor.setTabSize"}),"\n",(0,i.jsxs)(r.h3,{id:"editorsettabsizevalue-fullpath--boolean",children:["Editor.setTabSize(value, [fullPath]) \u21d2 ",(0,i.jsx)("code",{children:"boolean"})]}),"\n",(0,i.jsx)(r.p,{children:"Sets tab character width.\nAffects any editors that share the same preference location."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": static method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})}),(0,i.jsx)(r.br,{}),"\n",(0,i.jsx)(r.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"boolean"})," - true if value was valid"]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"value"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"number"})}),(0,i.jsx)(r.td,{})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"[fullPath]"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(r.td,{children:"Path to file to get preference for"})]})]})]}),"\n",(0,i.jsx)("a",{name:"Editor.getTabSize"}),"\n",(0,i.jsxs)(r.h3,{id:"editorgettabsizefullpath--number",children:["Editor.getTabSize([fullPath]) \u21d2 ",(0,i.jsx)("code",{children:"number"})]}),"\n",(0,i.jsx)(r.p,{children:"Get indent unit"}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": static method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsx)(r.tbody,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"[fullPath]"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(r.td,{children:"Path to file to get preference for"})]})})]}),"\n",(0,i.jsx)("a",{name:"Editor.getAutoTabUnits"}),"\n",(0,i.jsxs)(r.h3,{id:"editorgetautotabunitsfullpath--number--",children:["Editor.getAutoTabUnits(fullPath) \u21d2 ",(0,i.jsx)("code",{children:"number"})," | ",(0,i.jsx)("code",{children:"*"})]}),"\n",(0,i.jsx)(r.p,{children:"Gets the number of tabs for the file. Will"}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": static method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsx)(r.tr,{children:(0,i.jsx)(r.th,{children:"Param"})})}),(0,i.jsx)(r.tbody,{children:(0,i.jsx)(r.tr,{children:(0,i.jsx)(r.td,{children:"fullPath"})})})]}),"\n",(0,i.jsx)("a",{name:"Editor.setAutoTabSpaces"}),"\n",(0,i.jsxs)(r.h3,{id:"editorsetautotabspacesvalue-fullpath--boolean",children:["Editor.setAutoTabSpaces(value, [fullPath]) \u21d2 ",(0,i.jsx)("code",{children:"boolean"})]}),"\n",(0,i.jsx)(r.p,{children:"When set, the tabs and spaces to be used will be auto detected from the current file or fall back to defaults.\nAffects any editors that share the same preference location."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": static method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})}),(0,i.jsx)(r.br,{}),"\n",(0,i.jsx)(r.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"boolean"})," - true if value was valid"]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"value"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"boolean"})}),(0,i.jsx)(r.td,{})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"[fullPath]"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(r.td,{children:"Path to file to get preference for"})]})]})]}),"\n",(0,i.jsx)("a",{name:"Editor.getAutoTabSpaces"}),"\n",(0,i.jsxs)(r.h3,{id:"editorgetautotabspacesfullpath--number",children:["Editor.getAutoTabSpaces([fullPath]) \u21d2 ",(0,i.jsx)("code",{children:"number"})]}),"\n",(0,i.jsx)(r.p,{children:"Get auto tabbing/spacing option"}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": static method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsx)(r.tbody,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"[fullPath]"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(r.td,{children:"Path to file to get preference for"})]})})]}),"\n",(0,i.jsx)("a",{name:"Editor.setSpaceUnits"}),"\n",(0,i.jsxs)(r.h3,{id:"editorsetspaceunitsvalue-fullpath--boolean",children:["Editor.setSpaceUnits(value, [fullPath]) \u21d2 ",(0,i.jsx)("code",{children:"boolean"})]}),"\n",(0,i.jsx)(r.p,{children:"Sets indentation width.\nAffects any editors that share the same preference location."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": static method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})}),(0,i.jsx)(r.br,{}),"\n",(0,i.jsx)(r.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"boolean"})," - true if value was valid"]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"value"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"number"})}),(0,i.jsx)(r.td,{})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"[fullPath]"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(r.td,{children:"Path to file to get preference for"})]})]})]}),"\n",(0,i.jsx)("a",{name:"Editor.getSpaceUnits"}),"\n",(0,i.jsxs)(r.h3,{id:"editorgetspaceunitsfullpath--number",children:["Editor.getSpaceUnits([fullPath]) \u21d2 ",(0,i.jsx)("code",{children:"number"})]}),"\n",(0,i.jsx)(r.p,{children:"Get indentation width"}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": static method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsx)(r.tbody,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"[fullPath]"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(r.td,{children:"Path to file to get preference for"})]})})]}),"\n",(0,i.jsx)("a",{name:"Editor.setCloseBrackets"}),"\n",(0,i.jsxs)(r.h3,{id:"editorsetclosebracketsvalue-fullpath--boolean",children:["Editor.setCloseBrackets(value, [fullPath]) \u21d2 ",(0,i.jsx)("code",{children:"boolean"})]}),"\n",(0,i.jsx)(r.p,{children:"Sets the auto close brackets.\nAffects any editors that share the same preference location."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": static method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})}),(0,i.jsx)(r.br,{}),"\n",(0,i.jsx)(r.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"boolean"})," - true if value was valid"]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"value"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"boolean"})}),(0,i.jsx)(r.td,{})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"[fullPath]"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(r.td,{children:"Path to file to get preference for"})]})]})]}),"\n",(0,i.jsx)("a",{name:"Editor.getCloseBrackets"}),"\n",(0,i.jsxs)(r.h3,{id:"editorgetclosebracketsfullpath--boolean",children:["Editor.getCloseBrackets([fullPath]) \u21d2 ",(0,i.jsx)("code",{children:"boolean"})]}),"\n",(0,i.jsx)(r.p,{children:"Gets whether the specified or current file uses auto close brackets"}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": static method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsx)(r.tbody,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"[fullPath]"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(r.td,{children:"Path to file to get preference for"})]})})]}),"\n",(0,i.jsx)("a",{name:"Editor.setShowLineNumbers"}),"\n",(0,i.jsxs)(r.h3,{id:"editorsetshowlinenumbersvalue-fullpath--boolean",children:["Editor.setShowLineNumbers(value, [fullPath]) \u21d2 ",(0,i.jsx)("code",{children:"boolean"})]}),"\n",(0,i.jsx)(r.p,{children:"Sets show line numbers option.\nAffects any editors that share the same preference location."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": static method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})}),(0,i.jsx)(r.br,{}),"\n",(0,i.jsx)(r.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"boolean"})," - true if value was valid"]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"value"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"boolean"})}),(0,i.jsx)(r.td,{})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"[fullPath]"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(r.td,{children:"Path to file to get preference for"})]})]})]}),"\n",(0,i.jsx)("a",{name:"Editor.getShowLineNumbers"}),"\n",(0,i.jsxs)(r.h3,{id:"editorgetshowlinenumbersfullpath--boolean",children:["Editor.getShowLineNumbers([fullPath]) \u21d2 ",(0,i.jsx)("code",{children:"boolean"})]}),"\n",(0,i.jsx)(r.p,{children:"Returns true if show line numbers is enabled for the specified or current file"}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": static method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsx)(r.tbody,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"[fullPath]"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(r.td,{children:"Path to file to get preference for"})]})})]}),"\n",(0,i.jsx)("a",{name:"Editor.setShowActiveLine"}),"\n",(0,i.jsxs)(r.h3,{id:"editorsetshowactivelinevalue-fullpath--boolean",children:["Editor.setShowActiveLine(value, [fullPath]) \u21d2 ",(0,i.jsx)("code",{children:"boolean"})]}),"\n",(0,i.jsx)(r.p,{children:"Sets show active line option.\nAffects any editors that share the same preference location."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": static method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})}),(0,i.jsx)(r.br,{}),"\n",(0,i.jsx)(r.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"boolean"})," - true if value was valid"]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"value"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"boolean"})}),(0,i.jsx)(r.td,{})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"[fullPath]"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(r.td,{children:"Path to file to get preference for"})]})]})]}),"\n",(0,i.jsx)("a",{name:"Editor.getShowActiveLine"}),"\n",(0,i.jsxs)(r.h3,{id:"editorgetshowactivelinefullpath--boolean",children:["Editor.getShowActiveLine([fullPath]) \u21d2 ",(0,i.jsx)("code",{children:"boolean"})]}),"\n",(0,i.jsx)(r.p,{children:"Returns true if show active line is enabled for the specified or current file"}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": static method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsx)(r.tbody,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"[fullPath]"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(r.td,{children:"Path to file to get preference for"})]})})]}),"\n",(0,i.jsx)("a",{name:"Editor.setWordWrap"}),"\n",(0,i.jsxs)(r.h3,{id:"editorsetwordwrapvalue-fullpath--boolean",children:["Editor.setWordWrap(value, [fullPath]) \u21d2 ",(0,i.jsx)("code",{children:"boolean"})]}),"\n",(0,i.jsx)(r.p,{children:"Sets word wrap option.\nAffects any editors that share the same preference location."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": static method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})}),(0,i.jsx)(r.br,{}),"\n",(0,i.jsx)(r.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"boolean"})," - true if value was valid"]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"value"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"boolean"})}),(0,i.jsx)(r.td,{})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"[fullPath]"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(r.td,{children:"Path to file to get preference for"})]})]})]}),"\n",(0,i.jsx)("a",{name:"Editor.getWordWrap"}),"\n",(0,i.jsxs)(r.h3,{id:"editorgetwordwrapfullpath--boolean",children:["Editor.getWordWrap([fullPath]) \u21d2 ",(0,i.jsx)("code",{children:"boolean"})]}),"\n",(0,i.jsx)(r.p,{children:"Returns true if word wrap is enabled for the specified or current file"}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": static method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsx)(r.tbody,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"[fullPath]"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(r.td,{children:"Path to file to get preference for"})]})})]}),"\n",(0,i.jsx)("a",{name:"Editor.setIndentLineComment"}),"\n",(0,i.jsxs)(r.h3,{id:"editorsetindentlinecommentvalue-fullpath--boolean",children:["Editor.setIndentLineComment(value, [fullPath]) \u21d2 ",(0,i.jsx)("code",{children:"boolean"})]}),"\n",(0,i.jsx)(r.p,{children:"Sets indentLineComment option.\nAffects any editors that share the same preference location."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": static method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})}),(0,i.jsx)(r.br,{}),"\n",(0,i.jsx)(r.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"boolean"})," - true if value was valid"]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"value"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"boolean"})}),(0,i.jsx)(r.td,{})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"[fullPath]"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(r.td,{children:"Path to file to get preference for"})]})]})]}),"\n",(0,i.jsx)("a",{name:"Editor.getIndentLineComment"}),"\n",(0,i.jsxs)(r.h3,{id:"editorgetindentlinecommentfullpath--boolean",children:["Editor.getIndentLineComment([fullPath]) \u21d2 ",(0,i.jsx)("code",{children:"boolean"})]}),"\n",(0,i.jsx)(r.p,{children:"Returns true if indentLineComment is enabled for the specified or current file"}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": static method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsx)(r.tbody,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"[fullPath]"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(r.td,{children:"Path to file to get preference for"})]})})]}),"\n",(0,i.jsx)("a",{name:"Editor.forEveryEditor"}),"\n",(0,i.jsx)(r.h3,{id:"editorforeveryeditorcallback-fullpath",children:"Editor.forEveryEditor(callback, [fullPath])"}),"\n",(0,i.jsx)(r.p,{children:"Runs callback for every Editor instance that currently exists or only the editors matching the given fullPath."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": static method of ",(0,i.jsx)(r.a,{href:"#Editor",children:(0,i.jsx)("code",{children:"Editor"})})]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"callback"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"function"})}),(0,i.jsx)(r.td,{})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"[fullPath]"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(r.td,{children:"an optional second argument, if given will only callback for all editors that is editing the file for the given fullPath"})]})]})]}),"\n",(0,i.jsx)("a",{name:"CommandManager"}),"\n",(0,i.jsx)(r.h2,{id:"commandmanager",children:"CommandManager"}),"\n",(0,i.jsx)(r.p,{children:"Editor is a 1-to-1 wrapper for a CodeMirror editor instance. It layers on Brackets-specific\nfunctionality and provides APIs that cleanly pass through the bits of CodeMirror that the rest\nof our codebase may want to interact with. An Editor is always backed by a Document, and stays\nin sync with its content; because Editor keeps the Document alive, it's important to always\ndestroy() an Editor that's going away so it can release its Document ref."}),"\n",(0,i.jsx)(r.p,{children:"For now, there's a distinction between the \"master\" Editor for a Document - which secretly acts\nas the Document's internal model of the text state - and the multitude of secondary Editors\nwhich, via Document, sync their changes to and from that master."}),"\n",(0,i.jsxs)(r.p,{children:["For now, direct access to the underlying CodeMirror object is still possible via ",(0,i.jsx)(r.code,{children:"_codeMirror"})," --\nbut this is considered deprecated and may go away."]}),"\n",(0,i.jsxs)(r.p,{children:["The Editor object dispatches the following events: (available as ",(0,i.jsx)(r.code,{children:"Editor.EVENT_*"})," constants. see below)"]}),"\n",(0,i.jsxs)(r.ul,{children:["\n",(0,i.jsxs)(r.li,{children:["keydown, keypress, keyup -- When any key event happens in the editor (whether it changes the\ntext or not). Handlers are passed ",(0,i.jsx)(r.code,{children:"(BracketsEvent, Editor, KeyboardEvent)"}),'. The 3nd arg is the\nraw DOM event. Note: most listeners will only want to listen for "keypress".']}),"\n",(0,i.jsx)(r.li,{children:"change - Triggered with an array of change objects. Parameters: (editor, changeList)"}),"\n",(0,i.jsx)(r.li,{children:"beforeChange - (self, changeObj)"}),"\n",(0,i.jsx)(r.li,{children:"beforeSelectionChange - (selectionObj)"}),"\n",(0,i.jsx)(r.li,{children:"focus - Fired when an editor is focused"}),"\n",(0,i.jsx)(r.li,{children:"blur - Fired when an editor loses focused"}),"\n",(0,i.jsx)(r.li,{children:"update - Will be fired whenever Editor updates its DOM display."}),"\n",(0,i.jsx)(r.li,{children:'cursorActivity -- When the user moves the cursor or changes the selection, or an edit occurs.\nNote: do not listen to this in order to be generally informed of edits--listen to the\n"change" event on Document instead.'}),"\n",(0,i.jsx)(r.li,{children:"scroll -- When the editor is scrolled, either by user action or programmatically."}),"\n",(0,i.jsxs)(r.li,{children:["viewportChange - (from: number, to: number) Fires whenever the view port of the editor changes\n(due to scrolling, editing, or any other factor). The from and to arguments give the new start\nand end of the viewport. This is combination with ",(0,i.jsx)(r.code,{children:"editorInstance.getViewPort()"})," can be used to\nselectively redraw visual elements in code like syntax analyze only parts of code instead\nof the full code everytime."]}),"\n",(0,i.jsx)(r.li,{children:"lostContent -- When the backing Document changes in such a way that this Editor is no longer\nable to display accurate text. This occurs if the Document's file is deleted, or in certain\nDocument->editor syncing edge cases that we do not yet support (the latter cause will\neventually go away)."}),"\n",(0,i.jsx)(r.li,{children:"optionChange -- Triggered when an option for the editor is changed. The 2nd arg to the listener\nis a string containing the editor option that is changing. The 3rd arg, which can be any\ndata type, is the new value for the editor option."}),"\n",(0,i.jsx)(r.li,{children:"beforeDestroy - Triggered before the object is about to dispose of all its internal state data\nso that listeners can cache things like scroll pos, etc..."}),"\n"]}),"\n",(0,i.jsx)(r.p,{children:'The Editor also dispatches "change" events internally, but you should listen for those on\nDocuments, not Editors.'}),"\n",(0,i.jsxs)(r.p,{children:["To listen for events, do something like this: (see EventDispatcher for details on this pattern)\n",(0,i.jsx)(r.code,{children:'editorInstance.on("eventname", handler);'})]}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": global variable"]}),"\n",(0,i.jsx)("a",{name:"BOUNDARY_CHECK_NORMAL"}),"\n",(0,i.jsxs)(r.h2,{id:"boundary_check_normal--number",children:["BOUNDARY_CHECK_NORMAL : ",(0,i.jsx)("code",{children:"number"})]}),"\n",(0,i.jsx)(r.p,{children:"Constant: Normal boundary check when centering text."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": global constant"]}),"\n",(0,i.jsx)("a",{name:"BOUNDARY_IGNORE_TOP"}),"\n",(0,i.jsxs)(r.h2,{id:"boundary_ignore_top--number",children:["BOUNDARY_IGNORE_TOP : ",(0,i.jsx)("code",{children:"number"})]}),"\n",(0,i.jsx)(r.p,{children:"Constant: Ignore the upper boundary when centering text."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": global constant"]}),"\n",(0,i.jsx)("a",{name:"BOUNDARY_BULLSEYE"}),"\n",(0,i.jsxs)(r.h2,{id:"boundary_bullseye--number",children:["BOUNDARY_BULLSEYE : ",(0,i.jsx)("code",{children:"number"})]}),"\n",(0,i.jsx)(r.p,{children:"Constant: Bulls-eye mode, strictly center the text always."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": global constant"]}),"\n",(0,i.jsx)("a",{name:"CENTERING_MARGIN"}),"\n",(0,i.jsx)(r.h2,{id:"centering_margin",children:"CENTERING_MARGIN"}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": global constant"]})]})}function a(e={}){const{wrapper:r}={...(0,s.R)(),...e.components};return r?(0,i.jsx)(r,{...e,children:(0,i.jsx)(h,{...e})}):h(e)}},28453:(e,r,t)=>{t.d(r,{R:()=>d,x:()=>o});var n=t(96540);const i={},s=n.createContext(i);function d(e){const r=n.useContext(s);return n.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function o(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:d(e.components),n.createElement(s.Provider,{value:r},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/d2357ac1.bc1bd383.js b/assets/js/d2357ac1.bc1bd383.js new file mode 100644 index 00000000..b4c93e71 --- /dev/null +++ b/assets/js/d2357ac1.bc1bd383.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9585],{70149:(e,n,d)=>{d.r(n),d.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>h,frontMatter:()=>t,metadata:()=>i,toc:()=>l});const i=JSON.parse('{"id":"API-Reference/command/KeyBindingManager","title":"KeyBindingManager","description":"Import :","source":"@site/api/API-Reference/command/KeyBindingManager.md","sourceDirName":"API-Reference/command","slug":"/API-Reference/command/KeyBindingManager","permalink":"/api/API-Reference/command/KeyBindingManager","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"Commands","permalink":"/api/API-Reference/command/Commands"},"next":{"title":"KeyboardOverlayMode","permalink":"/api/API-Reference/command/KeyboardOverlayMode"}}');var s=d(74848),r=d(28453);const t={},o=void 0,c={},l=[{value:"Import :",id:"import-",level:3},{value:"useWindowsCompatibleBindings",id:"usewindowscompatiblebindings",level:2},{value:"EVENT_KEY_BINDING_ADDED : string",id:"event_key_binding_added--string",level:2},{value:"EVENT_KEY_BINDING_REMOVED : string",id:"event_key_binding_removed--string",level:2},{value:"EVENT_NEW_PRESET : string",id:"event_new_preset--string",level:2},{value:"EVENT_PRESET_CHANGED : string",id:"event_preset_changed--string",level:2},{value:"KEY : Object",id:"key--object",level:2},{value:"formatKeyDescriptor(descriptor) \u21d2 string",id:"formatkeydescriptordescriptor--string",level:2},{value:"removeBinding(key, [platform])",id:"removebindingkey-platform",level:2},{value:"getKeymap([defaults]) \u21d2 Object",id:"getkeymapdefaults--object",level:2},{value:"addBinding(command, keyBindings, platform, options) \u21d2 Object",id:"addbindingcommand-keybindings-platform-options--object",level:2},{value:"getKeyBindings(command) \u21d2 Array.<Object>",id:"getkeybindingscommand--arrayobject",level:2},{value:"getKeyBindingsDisplay(commandID) \u21d2 string | null",id:"getkeybindingsdisplaycommandid--string--null",level:2},{value:"addGlobalKeydownHook(hook)",id:"addglobalkeydownhookhook",level:2},{value:"removeGlobalKeydownHook(hook)",id:"removeglobalkeydownhookhook",level:2},{value:"registerCustomKeymapPack(packID, packName, keyMap)",id:"registercustomkeymappackpackid-packname-keymap",level:2},{value:"getAllCustomKeymapPacks() \u21d2 Array.<Object>",id:"getallcustomkeymappacks--arrayobject",level:2},{value:"getCurrentCustomKeymapPack() \u21d2 Object",id:"getcurrentcustomkeymappack--object",level:2},{value:"resetUserShortcutsAsync() \u21d2 Promise | Promise.<void> | *",id:"resetusershortcutsasync--promise--promisevoid--",level:2},{value:"isInOverlayMode() \u21d2 boolean",id:"isinoverlaymode--boolean",level:2},{value:"showShortcutSelectionDialog(command)",id:"showshortcutselectiondialogcommand",level:2},{value:"canAssignBinding(commandId) \u21d2 boolean",id:"canassignbindingcommandid--boolean",level:2},{value:"UserKeyBinding : Object",id:"userkeybinding--object",level:2}];function a(e){const n={br:"br",code:"code",em:"em",h2:"h2",h3:"h3",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,r.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h3,{id:"import-",children:"Import :"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-js",children:'const KeyBindingManager = brackets.getModule("command/KeyBindingManager")\n'})}),"\n",(0,s.jsx)("a",{name:"useWindowsCompatibleBindings"}),"\n",(0,s.jsx)(n.h2,{id:"usewindowscompatiblebindings",children:"useWindowsCompatibleBindings"}),"\n",(0,s.jsx)(n.p,{children:"Use windows-specific bindings if no other are found (e.g. Linux).\nCore Brackets modules that use key bindings should always define at\nleast a generic keybinding that is applied for all platforms. This\nsetting effectively creates a compatibility mode for third party\nextensions that define explicit key bindings for Windows and Mac, but\nnot Linux."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,s.jsx)("a",{name:"EVENT_KEY_BINDING_ADDED"}),"\n",(0,s.jsxs)(n.h2,{id:"event_key_binding_added--string",children:["EVENT_KEY_BINDING_ADDED : ",(0,s.jsx)("code",{children:"string"})]}),"\n",(0,s.jsx)(n.p,{children:"key binding add event"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,s.jsx)("a",{name:"EVENT_KEY_BINDING_REMOVED"}),"\n",(0,s.jsxs)(n.h2,{id:"event_key_binding_removed--string",children:["EVENT_KEY_BINDING_REMOVED : ",(0,s.jsx)("code",{children:"string"})]}),"\n",(0,s.jsx)(n.p,{children:"key binding remove event"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,s.jsx)("a",{name:"EVENT_NEW_PRESET"}),"\n",(0,s.jsxs)(n.h2,{id:"event_new_preset--string",children:["EVENT_NEW_PRESET : ",(0,s.jsx)("code",{children:"string"})]}),"\n",(0,s.jsx)(n.p,{children:"new preset event"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,s.jsx)("a",{name:"EVENT_PRESET_CHANGED"}),"\n",(0,s.jsxs)(n.h2,{id:"event_preset_changed--string",children:["EVENT_PRESET_CHANGED : ",(0,s.jsx)("code",{children:"string"})]}),"\n",(0,s.jsx)(n.p,{children:"preset change event"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,s.jsx)("a",{name:"KEY"}),"\n",(0,s.jsxs)(n.h2,{id:"key--object",children:["KEY : ",(0,s.jsx)("code",{children:"Object"})]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,s.jsx)("a",{name:"formatKeyDescriptor"}),"\n",(0,s.jsxs)(n.h2,{id:"formatkeydescriptordescriptor--string",children:["formatKeyDescriptor(descriptor) \u21d2 ",(0,s.jsx)("code",{children:"string"})]}),"\n",(0,s.jsx)(n.p,{children:"Convert normalized key representation to display appropriate for platform."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"string"})," - Display/Operating system appropriate string"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"descriptor"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(n.td,{children:"Normalized key descriptor."})]})})]}),"\n",(0,s.jsx)("a",{name:"removeBinding"}),"\n",(0,s.jsx)(n.h2,{id:"removebindingkey-platform",children:"removeBinding(key, [platform])"}),"\n",(0,s.jsx)(n.p,{children:"Remove a key binding from _keymap"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"key"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(n.td,{children:"a key-description string that may or may not be normalized."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"[platform]"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(n.td,{children:"OS from which to remove the binding (all platforms if unspecified)"})]})]})]}),"\n",(0,s.jsx)("a",{name:"getKeymap"}),"\n",(0,s.jsxs)(n.h2,{id:"getkeymapdefaults--object",children:["getKeymap([defaults]) \u21d2 ",(0,s.jsx)("code",{children:"Object"})]}),"\n",(0,s.jsxs)(n.p,{children:["Returns a copy of the current key map. If the optional 'defaults' parameter is true,\nthen a copy of the default key map is returned.\nIn the default keymap each key is associated with an object containing ",(0,s.jsx)(n.code,{children:"commandID"}),", ",(0,s.jsx)(n.code,{children:"key"}),", and ",(0,s.jsx)(n.code,{children:"displayKey"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"[defaults]"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"boolean"})}),(0,s.jsx)(n.td,{children:"true if the caller wants a copy of the default key map. Otherwise, the current active key map is returned."})]})})]}),"\n",(0,s.jsx)("a",{name:"addBinding"}),"\n",(0,s.jsxs)(n.h2,{id:"addbindingcommand-keybindings-platform-options--object",children:["addBinding(command, keyBindings, platform, options) \u21d2 ",(0,s.jsx)("code",{children:"Object"})]}),"\n",(0,s.jsx)(n.p,{children:"Add one or more key bindings to a particular Command.\nReturns record(s) for valid key binding(s)."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"command"}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("code",{children:"string"})," | ",(0,s.jsx)("code",{children:"Command"})]}),(0,s.jsx)(n.td,{children:"A command ID or command object"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"keyBindings"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"Object"})}),(0,s.jsxs)(n.td,{children:["A single key binding or an array of keybindings. In an array of keybinding ",(0,s.jsx)(n.code,{children:"platform"}),' property is also available. Example: "Shift-Cmd-F". Mac and Win key equivalents are automatically mapped to each other. Use displayKey property to display a different string (e.g. "CMD+" instead of "CMD="). if browserOnly is true, then the shortcut will only apply in browser if nativeOnly is set, the shortcut will only apply in native apps']})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"platform"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(n.td,{children:'The target OS of the keyBindings either "mac", "win" or "linux". If undefined, all platforms not explicitly defined will use the key binding. NOTE: If platform is not specified, Ctrl will be replaced by Cmd for "mac" platform'})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"options"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"object"})}),(0,s.jsx)(n.td,{})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"options.isMenuShortcut"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"boolean"})}),(0,s.jsx)(n.td,{children:"this allows alt-key shortcuts to be registered."})]})]})]}),"\n",(0,s.jsx)("a",{name:"getKeyBindings"}),"\n",(0,s.jsxs)(n.h2,{id:"getkeybindingscommand--arrayobject",children:["getKeyBindings(command) \u21d2 ",(0,s.jsx)("code",{children:"Array."})]}),"\n",(0,s.jsx)(n.p,{children:"Retrieve key bindings currently associated with a command"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"Array."})," - The object has two properties ",(0,s.jsx)(n.code,{children:"key"})," and ",(0,s.jsx)(n.code,{children:"displayKey"})]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"command"}),(0,s.jsxs)(n.td,{children:[(0,s.jsx)("code",{children:"string"})," | ",(0,s.jsx)("code",{children:"Command"})]}),(0,s.jsx)(n.td,{children:"A command ID or command object"})]})})]}),"\n",(0,s.jsx)("a",{name:"getKeyBindingsDisplay"}),"\n",(0,s.jsxs)(n.h2,{id:"getkeybindingsdisplaycommandid--string--null",children:["getKeyBindingsDisplay(commandID) \u21d2 ",(0,s.jsx)("code",{children:"string"})," | ",(0,s.jsx)("code",{children:"null"})]}),"\n",(0,s.jsx)(n.p,{children:"Retrieves the platform-specific string representation of the key bindings for a specified command.\nThis function is useful for displaying the keyboard shortcut associated with a given command ID to the user.\nIf a key binding is found for the command, it returns the formatted key descriptor. Otherwise, it returns null."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"string"})," | ",(0,s.jsx)("code",{children:"null"})," - The formatted key binding as a string if available; otherwise, null."]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"commandID"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(n.td,{children:"The unique identifier of the command for which the key binding is to be retrieved."})]})})]}),"\n",(0,s.jsx)("a",{name:"addGlobalKeydownHook"}),"\n",(0,s.jsx)(n.h2,{id:"addglobalkeydownhookhook",children:"addGlobalKeydownHook(hook)"}),"\n",(0,s.jsx)(n.p,{children:"Adds a global keydown hook that gets first crack at keydown events\nbefore standard keybindings do. This is intended for use by modal or\nsemi-modal UI elements like dialogs or the code hint list that should\nexecute before normal command bindings are run."}),"\n",(0,s.jsxs)(n.p,{children:["The hook is passed two parameters, the first param is the original keyboard event.\nThe second param is the deduced shortcut string like ",(0,s.jsx)(n.code,{children:"Ctrl-F"})," if present for\nthat event or null if not keyboard shortcut string. If the\nhook handles the event (or wants to block other global hooks from\nhandling the event), it should return true. Note that this will ",(0,s.jsx)(n.em,{children:"only"}),"\nstop other global hooks and KeyBindingManager from handling the\nevent; to prevent further event propagation, you will need to call\nstopPropagation(), stopImmediatePropagation(), and/or preventDefault()\nas usual."]}),"\n",(0,s.jsx)(n.p,{children:"Multiple keydown hooks can be registered, and are executed in order,\nmost-recently-added first. A keydown hook will only be added once if the same\nhook is already added before."}),"\n",(0,s.jsx)(n.p,{children:"(We have to have a special API for this because (1) handlers are normally\ncalled in least-recently-added order, and we want most-recently-added;\n(2) native DOM events don't have a way for us to find out if\nstopImmediatePropagation()/stopPropagation() has been called on the\nevent, so we have to have some other way for one of the hooks to\nindicate that it wants to block the other hooks from running.)"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"hook"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"function"})}),(0,s.jsx)(n.td,{children:"The global hook to add."})]})})]}),"\n",(0,s.jsx)("a",{name:"removeGlobalKeydownHook"}),"\n",(0,s.jsx)(n.h2,{id:"removeglobalkeydownhookhook",children:"removeGlobalKeydownHook(hook)"}),"\n",(0,s.jsxs)(n.p,{children:["Removes a global keydown hook added by ",(0,s.jsx)(n.code,{children:"addGlobalKeydownHook"}),".\nDoes not need to be the most recently added hook."]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"hook"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"function"})}),(0,s.jsx)(n.td,{children:"The global hook to remove."})]})})]}),"\n",(0,s.jsx)("a",{name:"registerCustomKeymapPack"}),"\n",(0,s.jsx)(n.h2,{id:"registercustomkeymappackpackid-packname-keymap",children:"registerCustomKeymapPack(packID, packName, keyMap)"}),"\n",(0,s.jsxs)(n.p,{children:["This can be used by extensions to register new kepmap packs that can be listed in the keyboard shortcuts panel\nunder use preset dropdown. For EG. distribute a ",(0,s.jsx)(n.code,{children:"netbeans editor"})," shortcuts pack via extension."]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"packID"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsxs)(n.td,{children:["A unique ID for the pack. Use ",(0,s.jsx)(n.code,{children:"extensionID.name"})," format to avoid collisions."]})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"packName"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(n.td,{children:"A name for the pack."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"keyMap"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"Object"})}),(0,s.jsxs)(n.td,{children:["a keymap of the format ",(0,s.jsx)(n.code,{children:"{'Ctrl-Alt-L': 'file.liveFilePreview'}"})," depending on the platform. The extension should decide the correct keymap based on the platform before calling this function."]})]})]})]}),"\n",(0,s.jsx)("a",{name:"getAllCustomKeymapPacks"}),"\n",(0,s.jsxs)(n.h2,{id:"getallcustomkeymappacks--arrayobject",children:["getAllCustomKeymapPacks() \u21d2 ",(0,s.jsx)("code",{children:"Array."})]}),"\n",(0,s.jsx)(n.p,{children:"Responsible to get all the custom keymap packs"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"Array."})," - an array of all the custom keymap packs,\neach pack is an object with keys: ",(0,s.jsx)(n.code,{children:"packID"}),", ",(0,s.jsx)(n.code,{children:"packageName"})," & ",(0,s.jsx)(n.code,{children:"keyMap"})]}),"\n",(0,s.jsx)("a",{name:"getCurrentCustomKeymapPack"}),"\n",(0,s.jsxs)(n.h2,{id:"getcurrentcustomkeymappack--object",children:["getCurrentCustomKeymapPack() \u21d2 ",(0,s.jsx)("code",{children:"Object"})]}),"\n",(0,s.jsx)(n.p,{children:"To get the current custom keymap pack"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"Object"})," - the current custom keymap pack"]}),"\n",(0,s.jsx)("a",{name:"resetUserShortcutsAsync"}),"\n",(0,s.jsxs)(n.h2,{id:"resetusershortcutsasync--promise--promisevoid--",children:["resetUserShortcutsAsync() \u21d2 ",(0,s.jsx)("code",{children:"Promise"})," | ",(0,s.jsx)("code",{children:"Promise."})," | ",(0,s.jsx)("code",{children:"*"})]}),"\n",(0,s.jsx)(n.p,{children:"resets all user defined shortcuts"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsx)("a",{name:"isInOverlayMode"}),"\n",(0,s.jsxs)(n.h2,{id:"isinoverlaymode--boolean",children:["isInOverlayMode() \u21d2 ",(0,s.jsx)("code",{children:"boolean"})]}),"\n",(0,s.jsx)(n.p,{children:"Whether the keyboard is in overlay mode or not"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"boolean"})," - True if in overlay mode else false"]}),"\n",(0,s.jsx)("a",{name:"showShortcutSelectionDialog"}),"\n",(0,s.jsx)(n.h2,{id:"showshortcutselectiondialogcommand",children:"showShortcutSelectionDialog(command)"}),"\n",(0,s.jsx)(n.p,{children:"to display the shortcut selection dialog"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsx)(n.tr,{children:(0,s.jsx)(n.th,{children:"Param"})})}),(0,s.jsx)(n.tbody,{children:(0,s.jsx)(n.tr,{children:(0,s.jsx)(n.td,{children:"command"})})})]}),"\n",(0,s.jsx)("a",{name:"canAssignBinding"}),"\n",(0,s.jsxs)(n.h2,{id:"canassignbindingcommandid--boolean",children:["canAssignBinding(commandId) \u21d2 ",(0,s.jsx)("code",{children:"boolean"})]}),"\n",(0,s.jsx)(n.p,{children:"Returns true the given command id can be overriden by user."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsx)(n.tr,{children:(0,s.jsx)(n.th,{children:"Param"})})}),(0,s.jsx)(n.tbody,{children:(0,s.jsx)(n.tr,{children:(0,s.jsx)(n.td,{children:"commandId"})})})]}),"\n",(0,s.jsx)("a",{name:"UserKeyBinding"}),"\n",(0,s.jsxs)(n.h2,{id:"userkeybinding--object",children:["UserKeyBinding : ",(0,s.jsx)("code",{children:"Object"})]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global typedef"]})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(a,{...e})}):a(e)}},28453:(e,n,d)=>{d.d(n,{R:()=>t,x:()=>o});var i=d(96540);const s={},r=i.createContext(s);function t(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:t(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/d326aee1.8921c10c.js b/assets/js/d326aee1.8921c10c.js new file mode 100644 index 00000000..54dd1a61 --- /dev/null +++ b/assets/js/d326aee1.8921c10c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[708],{99256:(e,o,t)=>{t.r(o),t.d(o,{assets:()=>l,contentTitle:()=>r,default:()=>c,frontMatter:()=>s,metadata:()=>n,toc:()=>h});var n=t(79464),i=t(74848),a=t(28453);const s={slug:"welcome",title:"Introducing Phoenix Code Desktop- Now on Windows, Mac & Linux",description:"Phoenix Code native desktop apps are now available for Windows, Mac, and Linux. Web version available for ChromeOS and other platforms.",authors:["arun","charly","kiran","mathew","phoenixBot"],tags:["hello world","Native Apps","Windows","Linux","Mac","Release"]},r=void 0,l={authorsImageUrls:[void 0,void 0,void 0,void 0,void 0]},h=[{value:"Looking Back",id:"looking-back",level:2},{value:"Acknowledgements",id:"acknowledgements",level:2},{value:"Looking Ahead",id:"looking-ahead",level:2},{value:"How You Can Support:",id:"how-you-can-support",level:2}];function d(e){const o={a:"a",blockquote:"blockquote",code:"code",em:"em",h2:"h2",li:"li",p:"p",strong:"strong",ul:"ul",...(0,a.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(o.p,{children:["We're thrilled to share a huge update with you all today - Phoenix Code native apps are officially here! \ud83c\udf89 . Get your copy from ",(0,i.jsx)(o.a,{href:"https://phcode.io",children:"phcode.io"})," !"]}),"\n",(0,i.jsx)(o.p,{children:"We have been working hard over the last several months to make native apps possible. It took a lot of effort and perseverance with our limited resources to reach this far. We hope to have your support in doing more :)"}),"\n",(0,i.jsx)(o.p,{children:"With this update, Phoenix Code can now run almost anywhere! Native apps are available for Windows, Mac and most Linux distributions. For Chrome-OS and other platforms, simply use the web browser version; no install needed."}),"\n",(0,i.jsx)(o.h2,{id:"looking-back",children:"Looking Back"}),"\n",(0,i.jsxs)(o.p,{children:["The team building Phoenix Code started its history as some of the initial team members building Brackets at Adobe from 2014. Phoenix Code took over the full time development of Brackets in 2021. We had a mammoth task to bring Brackets up to date with the latest web technologies. ",(0,i.jsx)(o.a,{href:"https://www.reddit.com/r/brackets/comments/tz06tn/brackets_community_announcement_phoenix_code/",children:"The result was Phoenix Code"}),"- A Platform rewrite of Brackets that allowed it to run on any Web Browser. But our users were pretty clear that a desktop app was needed."]}),"\n",(0,i.jsxs)(o.p,{children:["It was at this time that this hot new rust based tech called ",(0,i.jsx)(o.a,{href:"https://tauri.app/",children:(0,i.jsx)(o.code,{children:"Tauri framework"})})," came into the picture and we finally had the missing piece to build a truly modern and light-weight desktop app. Fast forward to 2024 and Phoenix Code now runs ",(0,i.jsx)(o.em,{children:"almost"})," anywhere(",(0,i.jsx)(o.em,{children:"almost"})," as we are one step short with touch and mobile screens)."]}),"\n",(0,i.jsx)(o.p,{children:"Phoenix Code marks the first large-scale, truly independent release from the Brackets community. Entirely homegrown within the community, it is also the largest engineering effort put into Brackets since 2015 (including Adobe)."}),"\n",(0,i.jsx)(o.h2,{id:"acknowledgements",children:"Acknowledgements"}),"\n",(0,i.jsxs)(o.p,{children:["This release is made possible by the Phoenix Code Team- ",(0,i.jsx)(o.a,{href:"https://github.com/abose",children:"Arun"}),", ",(0,i.jsx)(o.a,{href:"https://github.com/charlypa",children:"Charly"})," and ",(0,i.jsx)(o.a,{href:"https://github.com/mathewdennis1",children:"Mathew"}),". Our shiny new website ",(0,i.jsx)(o.a,{href:"https://phcode.io",children:"phcode.io"})," is built by community contribution from ",(0,i.jsx)(o.a,{href:"https://github.com/kiranbose",children:"Kiran"}),"."]}),"\n",(0,i.jsxs)(o.p,{children:["We would also like to thank the S-tier community support provided by the ",(0,i.jsx)(o.a,{href:"https://tauri.app/",children:"Tauri"})," development team, esp. ",(0,i.jsx)(o.a,{href:"https://github.com/FabianLars",children:"Fabian"}),"."]}),"\n",(0,i.jsx)(o.h2,{id:"looking-ahead",children:"Looking Ahead"}),"\n",(0,i.jsxs)(o.blockquote,{children:["\n",(0,i.jsx)(o.p,{children:"Our guiding principle is to make coding as intuitive and fun as playing a video game - for web developers, designers, and students."}),"\n"]}),"\n",(0,i.jsxs)(o.p,{children:["With the native apps now available, we're starting the next phase of our journey. Beginning this month, there will be\na new update of Phoenix Code released every month with all the features that you ",(0,i.jsx)(o.a,{href:"https://github.com/phcode-dev/phoenix/issues?q=is%3Aissue+is%3Aopen+label%3A%22customer+raised%22",children:"requested"})," and ",(0,i.jsx)(o.a,{href:"https://github.com/phcode-dev/phoenix/issues?q=is%3Aissue+is%3Aopen+label%3A%22Feature+Request%22",children:"more"}),"."]}),"\n",(0,i.jsx)(o.p,{children:"However, our ambitions come with costs, and it's your support that makes all the difference."}),"\n",(0,i.jsx)(o.h2,{id:"how-you-can-support",children:"How You Can Support:"}),"\n",(0,i.jsxs)(o.ul,{children:["\n",(0,i.jsxs)(o.li,{children:[(0,i.jsx)(o.strong,{children:"Share your feedback:"})," ",(0,i.jsx)(o.a,{href:"https://github.com/orgs/phcode-dev/discussions",children:"https://github.com/orgs/phcode-dev/discussions"})]}),"\n",(0,i.jsxs)(o.li,{children:[(0,i.jsx)(o.strong,{children:"Spread the word"})," about Phoenix to friends and colleagues."]}),"\n",(0,i.jsxs)(o.li,{children:[(0,i.jsxs)(o.a,{href:"https://opencollective.com/phoenix-ide",children:[(0,i.jsx)(o.strong,{children:"Consider supporting us"})," on Open Collective"]}),". Every contribution helps us to keep improving and expanding Phoenix Code."]}),"\n"]}),"\n",(0,i.jsx)(o.p,{children:"We're grateful for the incredible support this community has shown us so far. Let's continue to make Phoenix Code even better, together."}),"\n",(0,i.jsx)(o.p,{children:"With gratitude,"}),"\n",(0,i.jsx)(o.p,{children:"The Phoenix Team"})]})}function c(e={}){const{wrapper:o}={...(0,a.R)(),...e.components};return o?(0,i.jsx)(o,{...e,children:(0,i.jsx)(d,{...e})}):d(e)}},28453:(e,o,t)=>{t.d(o,{R:()=>s,x:()=>r});var n=t(96540);const i={},a=n.createContext(i);function s(e){const o=n.useContext(a);return n.useMemo((function(){return"function"==typeof e?e(o):{...o,...e}}),[o,e])}function r(e){let o;return o=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:s(e.components),n.createElement(a.Provider,{value:o},e.children)}},79464:e=>{e.exports=JSON.parse('{"permalink":"/blog/welcome","editUrl":"https://github.com/phcode-dev/docs/blob/main/blog/2024-03-05-welcome/index.md","source":"@site/blog/2024-03-05-welcome/index.md","title":"Introducing Phoenix Code Desktop- Now on Windows, Mac & Linux","description":"Phoenix Code native desktop apps are now available for Windows, Mac, and Linux. Web version available for ChromeOS and other platforms.","date":"2024-03-05T00:00:00.000Z","tags":[{"inline":true,"label":"hello world","permalink":"/blog/tags/hello-world"},{"inline":true,"label":"Native Apps","permalink":"/blog/tags/native-apps"},{"inline":true,"label":"Windows","permalink":"/blog/tags/windows"},{"inline":true,"label":"Linux","permalink":"/blog/tags/linux"},{"inline":true,"label":"Mac","permalink":"/blog/tags/mac"},{"inline":true,"label":"Release","permalink":"/blog/tags/release"}],"readingTime":2.64,"hasTruncateMarker":false,"authors":[{"name":"Arun Bose","title":"Co-Founder, Phoenix Code","url":"https://github.com/abose","imageURL":"https://github.com/abose.png","key":"arun","page":null},{"name":"Charly P Abraham","title":"Co-Founder, Phoenix Code","url":"https://github.com/charlypa","imageURL":"https://github.com/charlypa.png","key":"charly","page":null},{"name":"Kiran Bose","title":"Community Contributor","url":"https://github.com/kiranbose","imageURL":"https://github.com/kiranbose.png","key":"kiran","page":null},{"name":"Mathew Dennis","title":"Quality Control & Social Media","url":"https://github.com/mathewdennis1","imageURL":"https://github.com/mathewdennis1.png","key":"mathew","page":null},{"name":"Phoenix Code Bot","title":"Our little elf who keeps the whole place together","url":"https://github.com/phoenixide","imageURL":"https://github.com/phoenixide.png","key":"phoenixBot","page":null}],"frontMatter":{"slug":"welcome","title":"Introducing Phoenix Code Desktop- Now on Windows, Mac & Linux","description":"Phoenix Code native desktop apps are now available for Windows, Mac, and Linux. Web version available for ChromeOS and other platforms.","authors":["arun","charly","kiran","mathew","phoenixBot"],"tags":["hello world","Native Apps","Windows","Linux","Mac","Release"]},"unlisted":false,"prevItem":{"title":"March-2024 Release (V-3.5) is now Live","permalink":"/blog/release-3.5"}}')}}]); \ No newline at end of file diff --git a/assets/js/d3b50d68.17e3f4af.js b/assets/js/d3b50d68.17e3f4af.js new file mode 100644 index 00000000..b78f7c33 --- /dev/null +++ b/assets/js/d3b50d68.17e3f4af.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1025],{48583:(e,i,t)=>{t.r(i),t.d(i,{assets:()=>d,contentTitle:()=>a,default:()=>g,frontMatter:()=>l,metadata:()=>o,toc:()=>c});const o=JSON.parse('{"id":"Live Preview/image-gallery","title":"Image Gallery","description":"Upgrade to Phoenix Code Pro to access this feature.","source":"@site/docs/02-Live Preview/05-image-gallery.md","sourceDirName":"02-Live Preview","slug":"/Pro Features/image-gallery","permalink":"/docs/Pro Features/image-gallery","draft":false,"unlisted":false,"editUrl":"https://github.com/phcode-dev/docs/blob/main/docs/02-Live Preview/05-image-gallery.md","tags":[],"version":"current","sidebarPosition":5,"frontMatter":{"title":"Image Gallery","slug":"/Pro Features/image-gallery"},"sidebar":"tutorialSidebar","previous":{"title":"Measurements","permalink":"/docs/Pro Features/measurements"},"next":{"title":"Markdown Editor","permalink":"/docs/Pro Features/markdown-editor"}}');var s=t(74848),n=t(28453),r=(t(96540),t(56399));const l={title:"Image Gallery",slug:"/Pro Features/image-gallery"},a=void 0,d={},c=[{value:"Browsing Images",id:"browsing-images",level:2},{value:"Selecting from Device",id:"selecting-from-device",level:2},{value:"Folder Selection Dialog",id:"folder-selection-dialog",level:2},{value:"Image Size Selection",id:"image-size-selection",level:2},{value:"Available Image size options",id:"available-image-size-options",level:3}];function h(e){const i={a:"a",admonition:"admonition",blockquote:"blockquote",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,n.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(i.admonition,{title:"Pro Feature",type:"info",children:(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.a,{href:"https://phcode.io/pricing",children:"Upgrade to Phoenix Code Pro"})," to access this feature."]})}),"\n",(0,s.jsxs)(i.p,{children:["The ",(0,s.jsx)(i.strong,{children:"Image Gallery"})," is a panel that appears at the bottom of the Live Preview. It lets you browse images from online image providers or select images from your device."]}),"\n",(0,s.jsxs)(i.blockquote,{children:["\n",(0,s.jsxs)(i.p,{children:["The Image Gallery is available only for ",(0,s.jsx)(i.code,{children:""})," elements."]}),"\n"]}),"\n",(0,s.jsxs)(i.p,{children:["By default, the Image Gallery appears when you select an ",(0,s.jsx)(i.code,{children:""})," element. You can close it by clicking the Change Image button in the Control Box or the close button in the gallery. To reopen it, click the Change Image button again."]}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.img,{alt:"Image Gallery",src:t(29973).A+"",title:"Image Gallery",width:"1159",height:"1080"})}),"\n",(0,s.jsx)(i.h2,{id:"browsing-images",children:"Browsing Images"}),"\n",(0,s.jsxs)(i.p,{children:["Type a search term in the search box and press ",(0,s.jsx)(i.code,{children:"Enter"})," or click the search icon. The gallery displays matching images from the image providers. Use the left and right arrows to browse through the results."]}),"\n",(0,s.jsxs)(i.blockquote,{children:["\n",(0,s.jsx)(i.p,{children:"The gallery remembers your last search query and shows it when you reopen it. If there is no previous search, Phoenix Code shows results for a random query."}),"\n"]}),"\n",(0,s.jsx)(i.p,{children:"Hover over a thumbnail to preview the image in your page. The previously selected image is restored when you move the cursor away from the gallery."}),"\n",(0,s.jsx)(i.p,{children:"To select an image, click the thumbnail. This embeds the image directly in your source code."}),"\n",(0,s.jsxs)(i.blockquote,{children:["\n",(0,s.jsx)(i.p,{children:"If the image provider doesn't support embedding, clicking the thumbnail will download the image instead."}),"\n"]}),"\n",(0,s.jsxs)(i.p,{children:["To download the image to your project instead, click the ",(0,s.jsx)(i.strong,{children:"Download image"})," button. Phoenix Code downloads the image, saves it to the selected folder, and automatically updates the ",(0,s.jsx)(i.code,{children:"src"})," attribute."]}),"\n",(0,s.jsxs)(i.blockquote,{children:["\n",(0,s.jsxs)(i.p,{children:["If this is your first time selecting an image, Phoenix Code prompts you to choose a folder where images should be saved. See ",(0,s.jsx)(i.a,{href:"#folder-selection-dialog",children:"Folder Selection Dialog"})," for details."]}),"\n"]}),"\n",(0,s.jsxs)(i.blockquote,{children:["\n",(0,s.jsxs)(i.p,{children:["Images are embedded or downloaded at the currently selected size. See ",(0,s.jsx)(i.a,{href:"#image-size-selection",children:"Image Size Selection"})," for details."]}),"\n"]}),"\n",(0,s.jsx)(i.p,{children:"Below each thumbnail, the photographer's name and a link to their profile is displayed."}),"\n",(0,s.jsx)(r.A,{src:"https://docs-images.phcode.dev/videos/live-preview-edit/image-gallery.mp4"}),"\n",(0,s.jsx)(i.h2,{id:"selecting-from-device",children:"Selecting from Device"}),"\n",(0,s.jsxs)(i.p,{children:["Click the ",(0,s.jsx)(i.strong,{children:"Select from device"})," button at the top of the gallery to choose an image from your local files.",(0,s.jsx)(i.br,{}),"\n","If no folder has been selected yet, Phoenix Code prompts you to choose where the image should be saved."]}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.img,{alt:"Select From Device",src:t(72235).A+"",title:"Select from Device",width:"1022",height:"250"})}),"\n",(0,s.jsx)(i.h2,{id:"folder-selection-dialog",children:"Folder Selection Dialog"}),"\n",(0,s.jsx)(i.p,{children:"The first time you select an image, Phoenix Code prompts you to choose where images should be saved in your project."}),"\n",(0,s.jsx)(i.p,{children:"The dialog includes:"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"Folder path input"}),": Enter a folder path relative to your project root. Phoenix Code suggests matching folders as you type."]}),"\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.strong,{children:"Remember this folder for this project"}),": When checked (default), Phoenix Code reuses this folder for future image downloads in the same project."]}),"\n"]}),"\n",(0,s.jsxs)(i.blockquote,{children:["\n",(0,s.jsxs)(i.p,{children:["If the folder does not exist, Phoenix Code creates it.\nIf the folder path is left empty, images are saved to an ",(0,s.jsx)(i.code,{children:"images"})," folder in the project root."]}),"\n"]}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.img,{alt:"Folder selection Dialog",src:t(99565).A+"",title:"Folder Selection Dialog",width:"929",height:"470"})}),"\n",(0,s.jsxs)(i.p,{children:["To change the saved folder later, click the ",(0,s.jsx)(i.strong,{children:"Folder Selection"})," button ",(0,s.jsx)(i.em,{children:"(folder icon)"})," in the Image Gallery header."]}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.img,{alt:"Folder selection button",src:t(99469).A+"",title:"Folder Selection Button",width:"1021",height:"251"})}),"\n",(0,s.jsx)(i.h2,{id:"image-size-selection",children:"Image Size Selection"}),"\n",(0,s.jsxs)(i.p,{children:["The Image Gallery includes a ",(0,s.jsx)(i.strong,{children:"Size Selector"})," that lets you choose the resolution of the image before embedding or downloading it.",(0,s.jsx)(i.br,{}),"\n","Hovering over a thumbnail displays the estimated file size in the top-left corner."]}),"\n",(0,s.jsxs)(i.blockquote,{children:["\n",(0,s.jsx)(i.p,{children:"Higher resolutions produce larger image files. Standard (1080px) is the default size."}),"\n"]}),"\n",(0,s.jsx)(i.h3,{id:"available-image-size-options",children:"Available Image size options"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsx)(i.li,{children:"Thumbnail (200px)"}),"\n",(0,s.jsx)(i.li,{children:"Avatar (320px)"}),"\n",(0,s.jsx)(i.li,{children:"Card (640px)"}),"\n",(0,s.jsx)(i.li,{children:"Content (960px)"}),"\n",(0,s.jsx)(i.li,{children:"Standard (1080px)"}),"\n",(0,s.jsx)(i.li,{children:"Hero (1280px)"}),"\n",(0,s.jsx)(i.li,{children:"Banner (1600px)"}),"\n",(0,s.jsx)(i.li,{children:"Retina (2200px)"}),"\n"]}),"\n",(0,s.jsx)(i.p,{children:(0,s.jsx)(i.img,{alt:"Image size dropdown",src:t(70636).A+"",title:"Image size dropdown",width:"1062",height:"588"})})]})}function g(e={}){const{wrapper:i}={...(0,n.R)(),...e.components};return i?(0,s.jsx)(i,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},56399:(e,i,t)=>{t.d(i,{A:()=>n});var o=t(96540),s=t(74848);const n=({src:e,winLinuxTitle:i,macTitle:t})=>{const[n,r]=(0,o.useState)("");(0,o.useEffect)((()=>{navigator.platform.toLowerCase().includes("mac")?r(t):r(i)}),[i,t]);return(0,s.jsxs)("div",{style:{maxHeight:"68vh",width:"100%",display:"flex",justifyContent:"center",alignItems:"center",flexDirection:"column"},children:[(0,s.jsxs)("video",{style:{height:"90%",width:"100%"},controls:!0,autoPlay:!0,muted:!0,loop:!0,children:[(0,s.jsx)("source",{src:e,type:"video/mp4"}),"Your browser does not support the video tag."]}),(0,s.jsx)("div",{style:{width:"100%",textAlign:"center",fontSize:"1em",marginTop:"10px"},children:n})]})}},99469:(e,i,t)=>{t.d(i,{A:()=>o});const o=t.p+"assets/images/folder-selection-button-9211a4549bb50539a4ee0ffd63b8975a.png"},99565:(e,i,t)=>{t.d(i,{A:()=>o});const o=t.p+"assets/images/folder-selection-dialog-64a3c2fb5003b60bc8eea3f419fedebe.png"},29973:(e,i,t)=>{t.d(i,{A:()=>o});const o=t.p+"assets/images/image-gallery-89de2617a5355346bf28b21246e90025.png"},70636:(e,i,t)=>{t.d(i,{A:()=>o});const o=t.p+"assets/images/image-size-dropdown-0c5954234e73f686f9fb96d8d1972732.png"},72235:(e,i,t)=>{t.d(i,{A:()=>o});const o=t.p+"assets/images/select-from-device-97660034efd5953feeb9ced80cef956b.png"},28453:(e,i,t)=>{t.d(i,{R:()=>r,x:()=>l});var o=t(96540);const s={},n=o.createContext(s);function r(e){const i=o.useContext(n);return o.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function l(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),o.createElement(n.Provider,{value:i},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/d460ee70.2f35416b.js b/assets/js/d460ee70.2f35416b.js new file mode 100644 index 00000000..f16163c0 --- /dev/null +++ b/assets/js/d460ee70.2f35416b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1950],{12862:(e,i,l)=>{l.r(i),l.d(i,{assets:()=>c,contentTitle:()=>d,default:()=>h,frontMatter:()=>r,metadata:()=>n,toc:()=>o});const n=JSON.parse('{"id":"API-Reference/filesystem/File","title":"File","description":"Import :","source":"@site/api/API-Reference/filesystem/File.md","sourceDirName":"API-Reference/filesystem","slug":"/API-Reference/filesystem/File","permalink":"/api/API-Reference/filesystem/File","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"Directory","permalink":"/api/API-Reference/filesystem/Directory"},"next":{"title":"FileIndex","permalink":"/api/API-Reference/filesystem/FileIndex"}}');var s=l(74848),t=l(28453);const r={},d=void 0,c={},o=[{value:"Import :",id:"import-",level:3},{value:"File",id:"file",level:2},{value:"new File(fullPath, fileSystem)",id:"new-filefullpath-filesystem",level:3},{value:"file.read(options, callback)",id:"filereadoptions-callback",level:3},{value:"file.write(data, [options], [callback])",id:"filewritedata-options-callback",level:3}];function a(e){const i={a:"a",code:"code",em:"em",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,t.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(i.h3,{id:"import-",children:"Import :"}),"\n",(0,s.jsx)(i.pre,{children:(0,s.jsx)(i.code,{className:"language-js",children:'const File = brackets.getModule("filesystem/File")\n'})}),"\n",(0,s.jsx)("a",{name:"File"}),"\n",(0,s.jsx)(i.h2,{id:"file",children:"File"}),"\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.strong,{children:"Kind"}),": global class"]}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsxs)(i.li,{children:[(0,s.jsx)(i.a,{href:"#File",children:"File"}),"\n",(0,s.jsxs)(i.ul,{children:["\n",(0,s.jsx)(i.li,{children:(0,s.jsx)(i.a,{href:"#new_File_new",children:"new File(fullPath, fileSystem)"})}),"\n",(0,s.jsx)(i.li,{children:(0,s.jsx)(i.a,{href:"#File+read",children:".read(options, callback)"})}),"\n",(0,s.jsx)(i.li,{children:(0,s.jsx)(i.a,{href:"#File+write",children:".write(data, [options], [callback])"})}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)("a",{name:"new_File_new"}),"\n",(0,s.jsx)(i.h3,{id:"new-filefullpath-filesystem",children:"new File(fullPath, fileSystem)"}),"\n",(0,s.jsx)(i.p,{children:"Model for a File."}),"\n",(0,s.jsxs)(i.p,{children:["This class should ",(0,s.jsx)(i.em,{children:"not"})," be instantiated directly. Use FileSystem.getFileForPath,\nFileSystem.resolve, or Directory.getContents to create an instance of this class."]}),"\n",(0,s.jsx)(i.p,{children:"See the FileSystem class for more details."}),"\n",(0,s.jsxs)(i.table,{children:[(0,s.jsx)(i.thead,{children:(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.th,{children:"Param"}),(0,s.jsx)(i.th,{children:"Type"}),(0,s.jsx)(i.th,{children:"Description"})]})}),(0,s.jsxs)(i.tbody,{children:[(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"fullPath"}),(0,s.jsx)(i.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(i.td,{children:"The full path for this File."})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"fileSystem"}),(0,s.jsx)(i.td,{children:(0,s.jsx)("code",{children:"FileSystem"})}),(0,s.jsx)(i.td,{children:"The file system associated with this File."})]})]})]}),"\n",(0,s.jsx)("a",{name:"File+read"}),"\n",(0,s.jsx)(i.h3,{id:"filereadoptions-callback",children:"file.read(options, callback)"}),"\n",(0,s.jsx)(i.p,{children:"Read a file."}),"\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.strong,{children:"Kind"}),": instance method of ",(0,s.jsx)(i.a,{href:"#File",children:(0,s.jsx)("code",{children:"File"})})]}),"\n",(0,s.jsxs)(i.table,{children:[(0,s.jsx)(i.thead,{children:(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.th,{children:"Param"}),(0,s.jsx)(i.th,{children:"Type"}),(0,s.jsx)(i.th,{children:"Description"})]})}),(0,s.jsxs)(i.tbody,{children:[(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"options"}),(0,s.jsx)(i.td,{children:(0,s.jsx)("code",{children:"Object"})}),(0,s.jsx)(i.td,{})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"[options.encoding]"}),(0,s.jsx)(i.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsxs)(i.td,{children:["'one of format supported here: ",(0,s.jsx)(i.a,{href:"https://developer.mozilla.org/en-US/docs/Web/API/TextDecoder/encoding",children:"https://developer.mozilla.org/en-US/docs/Web/API/TextDecoder/encoding"}),"'"]})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"[options.ignoreFileSizeLimits]"}),(0,s.jsx)(i.td,{children:(0,s.jsx)("code",{children:"boolean"})}),(0,s.jsx)(i.td,{children:"by default max file size that can be read is 16MB."})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"[options.doNotCache]"}),(0,s.jsx)(i.td,{children:(0,s.jsx)("code",{children:"boolean"})}),(0,s.jsx)(i.td,{children:"will not cache if enabled. Auto-enabled if ignoreFileSizeLimits = true"})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"callback"}),(0,s.jsx)(i.td,{children:(0,s.jsx)("code",{children:"function"})}),(0,s.jsx)(i.td,{children:"Callback that is passed the FileSystemError string or the file's contents and its stats."})]})]})]}),"\n",(0,s.jsx)("a",{name:"File+write"}),"\n",(0,s.jsx)(i.h3,{id:"filewritedata-options-callback",children:"file.write(data, [options], [callback])"}),"\n",(0,s.jsx)(i.p,{children:"Write a file."}),"\n",(0,s.jsxs)(i.p,{children:[(0,s.jsx)(i.strong,{children:"Kind"}),": instance method of ",(0,s.jsx)(i.a,{href:"#File",children:(0,s.jsx)("code",{children:"File"})})]}),"\n",(0,s.jsxs)(i.table,{children:[(0,s.jsx)(i.thead,{children:(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.th,{children:"Param"}),(0,s.jsx)(i.th,{children:"Type"}),(0,s.jsx)(i.th,{children:"Description"})]})}),(0,s.jsxs)(i.tbody,{children:[(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"data"}),(0,s.jsx)(i.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(i.td,{children:"Data to write."})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"[options]"}),(0,s.jsx)(i.td,{children:(0,s.jsx)("code",{children:"Object"})}),(0,s.jsxs)(i.td,{children:["properties {encoding: 'one of format supported here: ",(0,s.jsx)(i.a,{href:"https://developer.mozilla.org/en-US/docs/Web/API/TextDecoder/encoding'%7D",children:"https://developer.mozilla.org/en-US/docs/Web/API/TextDecoder/encoding'}"})]})]}),(0,s.jsxs)(i.tr,{children:[(0,s.jsx)(i.td,{children:"[callback]"}),(0,s.jsx)(i.td,{children:(0,s.jsx)("code",{children:"function"})}),(0,s.jsx)(i.td,{children:"Callback that is passed the FileSystemError string or the file's new stats."})]})]})]})]})}function h(e={}){const{wrapper:i}={...(0,t.R)(),...e.components};return i?(0,s.jsx)(i,{...e,children:(0,s.jsx)(a,{...e})}):a(e)}},28453:(e,i,l)=>{l.d(i,{R:()=>r,x:()=>d});var n=l(96540);const s={},t=n.createContext(s);function r(e){const i=n.useContext(t);return n.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function d(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:r(e.components),n.createElement(t.Provider,{value:i},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/d51d6096.0b411bf2.js b/assets/js/d51d6096.0b411bf2.js new file mode 100644 index 00000000..0caebedf --- /dev/null +++ b/assets/js/d51d6096.0b411bf2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[9782],{4935:(e,i,t)=>{t.r(i),t.d(i,{assets:()=>d,contentTitle:()=>l,default:()=>p,frontMatter:()=>a,metadata:()=>s,toc:()=>h});var s=t(62203),n=t(74848),o=t(28453),r=(t(96540),t(56399));const a={slug:"release-5.0",title:"Phoenix Pro Release (January-2026, V-5.0) is now Live",description:"Phoenix Code 5.0 introduces Phoenix Pro with Live Preview Edit, Emmet support, Tab Bar, and Custom Snippets. The biggest update yet.",authors:["arun","charly","devvaannsh","phoenixBot"],tags:["Phoenix Pro","Live Preview Edit","Emmet","Tab Bar","Custom Snippets","Collapse Folders","Smarter hint suggestions","Stability Improvements","Windows","Linux","Mac","Release"]},l=void 0,d={authorsImageUrls:[void 0,void 0,void 0,void 0]},h=[{value:"Phoenix Pro - A Sustainable Future",id:"phoenix-pro---a-sustainable-future",level:2},{value:"Live Preview Edit",id:"live-preview-edit",level:2},{value:"Emmet",id:"emmet",level:2},{value:"Tab Bar",id:"tab-bar",level:2},{value:"Custom Snippets",id:"custom-snippets",level:2},{value:"Collapse Folders",id:"collapse-folders",level:2},{value:"Notable changes and fixes",id:"notable-changes-and-fixes",level:2},{value:"All changes",id:"all-changes",level:2},{value:"A Request from the Phoenix Team:",id:"a-request-from-the-phoenix-team",level:2}];function c(e){const i={a:"a",code:"code",em:"em",h2:"h2",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,o.R)(),...e.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(i.p,{children:["2026 January release (5.0) of Phoenix Code is now available for download at ",(0,n.jsx)(i.a,{href:"https://phcode.io",children:"phcode.io"}),"."]}),"\n",(0,n.jsxs)(i.p,{children:["Our biggest update yet - introducing ",(0,n.jsx)(i.code,{children:"Phoenix Pro"})," and major upgrades like ",(0,n.jsx)(i.code,{children:"Live Preview Edit"}),", ",(0,n.jsx)(i.code,{children:"Emmet"}),",\n",(0,n.jsx)(i.code,{children:"Tab Bar"}),", and ",(0,n.jsx)(i.code,{children:"Custom Snippets"}),"."]}),"\n",(0,n.jsx)(i.h2,{id:"phoenix-pro---a-sustainable-future",children:"Phoenix Pro - A Sustainable Future"}),"\n",(0,n.jsxs)(i.p,{children:["Phoenix Code has been free and open source from day one - and ",(0,n.jsx)(i.strong,{children:"everything you\u2019ve used so far will remain free forever"}),", including ",(0,n.jsx)(i.strong,{children:"Live Preview"}),"."]}),"\n",(0,n.jsxs)(i.p,{children:["We\u2019re a small, full-time indie team with ",(0,n.jsx)(i.strong,{children:"no VC backing"}),", building Phoenix Code because we believe the web deserves a\ncode editor that\u2019s genuinely ",(0,n.jsx)(i.strong,{children:"simple and joyful to use"}),". We tried to sustain development through community donations\n(",(0,n.jsx)(i.a,{href:"https://opencollective.com/phoenix-ide",children:"Open Collective"}),"), but over the last few years it hasn\u2019t been enough to\nsupport full-time work - and we reached a hard choice: slow down drastically, or find a sustainable path that keeps Phoenix Code healthy."]}),"\n",(0,n.jsxs)(i.p,{children:["So we\u2019re introducing ",(0,n.jsx)(i.strong,{children:"Phoenix Pro"})," as an ",(0,n.jsx)(i.em,{children:"optional"})," way to support Phoenix Code\u2019s future - with ",(0,n.jsx)(i.strong,{children:"one Pro feature: Live Preview Edit"}),".\nIf Phoenix Code has helped you, Phoenix Pro is a way to help keep the project moving forward."]}),"\n",(0,n.jsxs)(i.p,{children:["Students & educators get ",(0,n.jsx)(i.strong,{children:"Phoenix Pro for Education"})," at no cost, because we want classrooms to have easy\naccess to modern, easy-to-use development tooling. ",(0,n.jsx)(i.a,{href:"https://docs.phcode.dev/docs/phoenix-pro-school",children:"Read More"})]}),"\n",(0,n.jsx)(i.h2,{id:"live-preview-edit",children:"Live Preview Edit"}),"\n",(0,n.jsx)(i.p,{children:(0,n.jsx)(i.em,{children:"Included with Phoenix Pro."})}),"\n",(0,n.jsxs)(i.p,{children:[(0,n.jsx)(i.strong,{children:"Live Preview Edit"})," lets you make changes directly on your page \u2014 and updates your source code instantly."]}),"\n",(0,n.jsx)(i.p,{children:"Edit text, links, and images. Drag & drop to rearrange elements. Cut, copy, paste, and use measurement tools\nto place things precisely."}),"\n",(0,n.jsxs)(i.p,{children:["Learn more: ",(0,n.jsx)(i.a,{href:"https://docs.phcode.dev/docs/Pro%20Features/live-preview-edit",children:"Live Preview Edit"}),", ",(0,n.jsx)(i.a,{href:"https://docs.phcode.dev/docs/Pro%20Features/image-gallery",children:"Image Gallery"}),", ",(0,n.jsx)(i.a,{href:"https://docs.phcode.dev/docs/Pro%20Features/measurements",children:"Measurements"}),"."]}),"\n",(0,n.jsx)(r.A,{src:"https://docs-images.phcode.dev/videos/live-preview-edit/live-preview-edit.mp4"}),"\n",(0,n.jsx)(i.h2,{id:"emmet",children:"Emmet"}),"\n",(0,n.jsxs)(i.p,{children:[(0,n.jsx)(i.strong,{children:"Emmet"})," one of our most requested features is finally here."]}),"\n",(0,n.jsxs)(i.p,{children:["Write Emmet abbreviations and Phoenix Code shows you hints. Select a hint to expand it into a full code snippet. Code faster than ever. ",(0,n.jsx)(i.a,{href:"https://docs.phcode.dev/docs/Features/emmet",children:"Read More"})]}),"\n",(0,n.jsx)(r.A,{src:"https://docs-images.phcode.dev/videos/editing-text/emmet-html.mp4"}),"\n",(0,n.jsx)(i.h2,{id:"tab-bar",children:"Tab Bar"}),"\n",(0,n.jsx)(i.p,{children:"Tab Bar is here. View all your open files at the top of the editor and switch between them instantly."}),"\n",(0,n.jsxs)(i.p,{children:["Choose what works for you -Tab Bar, Working Files, or both at the same time. ",(0,n.jsx)(i.a,{href:"https://docs.phcode.dev/docs/file-management#tab-bar",children:"Read More"})]}),"\n",(0,n.jsx)(i.p,{children:(0,n.jsx)(i.img,{alt:"Tab Bar",src:t(72844).A+"",title:"Tab Bar",width:"1919",height:"1104"})}),"\n",(0,n.jsx)(i.h2,{id:"custom-snippets",children:"Custom Snippets"}),"\n",(0,n.jsx)(i.p,{children:"Define your own code hints with Custom Snippets."}),"\n",(0,n.jsxs)(i.p,{children:["Create hints that expand into full code blocks. You can also add cursor positions so Phoenix Code places your cursor exactly where you need it after expansion. ",(0,n.jsx)(i.a,{href:"https://docs.phcode.dev/docs/Features/custom-snippets",children:"Read More"})]}),"\n",(0,n.jsx)(r.A,{src:"https://docs-images.phcode.dev/videos/custom-snippets/custom-snippets-main.mp4"}),"\n",(0,n.jsx)(i.h2,{id:"collapse-folders",children:"Collapse Folders"}),"\n",(0,n.jsx)(i.p,{children:"After working for some time, your project structure gets messy with lots of open and nested directories."}),"\n",(0,n.jsxs)(i.p,{children:["But no worries now. Phoenix Code supports Collapse All Folders, which lets you reset your view by collapsing all expanded folders to their root level in one click. ",(0,n.jsx)(i.a,{href:"https://docs.phcode.dev/docs/file-management#collapse-all-folders",children:"Read More"})]}),"\n",(0,n.jsx)(r.A,{src:"https://docs-images.phcode.dev/videos/file-management/collapse-folders.mp4"}),"\n",(0,n.jsx)(i.h2,{id:"notable-changes-and-fixes",children:"Notable changes and fixes"}),"\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsx)(i.li,{children:"Improved Live Preview to support internal stylesheets and SVGs better than before."}),"\n",(0,n.jsxs)(i.li,{children:["Smarter color hints. Phoenix Code prioritizes your previously used colors. ",(0,n.jsx)(i.a,{href:"https://docs.phcode.dev/docs/editing-colors#color-hints",children:"Read More"})]}),"\n",(0,n.jsx)(i.li,{children:"Git markers now appear in the scrollbar, making it easier to locate changes in a file."}),"\n",(0,n.jsx)(i.li,{children:"Improved Git so that it doesn't show stale project status."}),"\n",(0,n.jsx)(i.li,{children:"Reduced the number of popups shown when first installing Phoenix."}),"\n",(0,n.jsx)(i.li,{children:"Fixed an issue where macOS/iOS and browser autocorrect or smart keyboards altered filenames during renames."}),"\n",(0,n.jsx)(i.li,{children:"Added a dialog to notify users when they have security compromised extensions installed."}),"\n",(0,n.jsx)(i.li,{children:"Slowed down the Quick View popup on hover as it was interfering with user workflows."}),"\n",(0,n.jsx)(i.li,{children:"Fixed ghost image appearing in Safari when dragging from CodeMirror."}),"\n",(0,n.jsx)(i.li,{children:"Long names in Working Files are now truncated for better readability."}),"\n",(0,n.jsx)(i.li,{children:"Added Horizontal Scroll support. Use Shift + mouse scroll."}),"\n"]}),"\n",(0,n.jsx)(i.h2,{id:"all-changes",children:"All changes"}),"\n",(0,n.jsxs)(i.p,{children:["Please see ",(0,n.jsx)(i.a,{href:"https://github.com/phcode-dev/phoenix/commits/main/?since=2025-01-30&until=2026-01-18",children:"this link"})," for a full list of changes\nin GitHub."]}),"\n",(0,n.jsx)(i.h2,{id:"a-request-from-the-phoenix-team",children:"A Request from the Phoenix Team:"}),"\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.strong,{children:"Share your feedback:"})," ",(0,n.jsx)(i.a,{href:"https://github.com/orgs/phcode-dev/discussions",children:"https://github.com/orgs/phcode-dev/discussions"})]}),"\n",(0,n.jsxs)(i.li,{children:[(0,n.jsx)(i.strong,{children:"Spread the word"})," about Phoenix to friends and colleagues."]}),"\n"]}),"\n",(0,n.jsx)(i.p,{children:"With gratitude,"}),"\n",(0,n.jsx)(i.p,{children:"The Phoenix Team"})]})}function p(e={}){const{wrapper:i}={...(0,o.R)(),...e.components};return i?(0,n.jsx)(i,{...e,children:(0,n.jsx)(c,{...e})}):c(e)}},56399:(e,i,t)=>{t.d(i,{A:()=>o});var s=t(96540),n=t(74848);const o=({src:e,winLinuxTitle:i,macTitle:t})=>{const[o,r]=(0,s.useState)("");(0,s.useEffect)((()=>{navigator.platform.toLowerCase().includes("mac")?r(t):r(i)}),[i,t]);return(0,n.jsxs)("div",{style:{maxHeight:"68vh",width:"100%",display:"flex",justifyContent:"center",alignItems:"center",flexDirection:"column"},children:[(0,n.jsxs)("video",{style:{height:"90%",width:"100%"},controls:!0,autoPlay:!0,muted:!0,loop:!0,children:[(0,n.jsx)("source",{src:e,type:"video/mp4"}),"Your browser does not support the video tag."]}),(0,n.jsx)("div",{style:{width:"100%",textAlign:"center",fontSize:"1em",marginTop:"10px"},children:o})]})}},72844:(e,i,t)=>{t.d(i,{A:()=>s});const s=t.p+"assets/images/tab-bar-801b0cfbb476f004a8e738a49d8ae35a.png"},28453:(e,i,t)=>{t.d(i,{R:()=>r,x:()=>a});var s=t(96540);const n={},o=s.createContext(n);function r(e){const i=s.useContext(o);return s.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function a(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:r(e.components),s.createElement(o.Provider,{value:i},e.children)}},62203:e=>{e.exports=JSON.parse('{"permalink":"/blog/release-5.0","editUrl":"https://github.com/phcode-dev/docs/blob/main/blog/2026-01-18-Release-5.0/index.md","source":"@site/blog/2026-01-18-Release-5.0/index.md","title":"Phoenix Pro Release (January-2026, V-5.0) is now Live","description":"Phoenix Code 5.0 introduces Phoenix Pro with Live Preview Edit, Emmet support, Tab Bar, and Custom Snippets. The biggest update yet.","date":"2026-01-18T00:00:00.000Z","tags":[{"inline":true,"label":"Phoenix Pro","permalink":"/blog/tags/phoenix-pro"},{"inline":true,"label":"Live Preview Edit","permalink":"/blog/tags/live-preview-edit"},{"inline":true,"label":"Emmet","permalink":"/blog/tags/emmet"},{"inline":true,"label":"Tab Bar","permalink":"/blog/tags/tab-bar"},{"inline":true,"label":"Custom Snippets","permalink":"/blog/tags/custom-snippets"},{"inline":true,"label":"Collapse Folders","permalink":"/blog/tags/collapse-folders"},{"inline":true,"label":"Smarter hint suggestions","permalink":"/blog/tags/smarter-hint-suggestions"},{"inline":true,"label":"Stability Improvements","permalink":"/blog/tags/stability-improvements"},{"inline":true,"label":"Windows","permalink":"/blog/tags/windows"},{"inline":true,"label":"Linux","permalink":"/blog/tags/linux"},{"inline":true,"label":"Mac","permalink":"/blog/tags/mac"},{"inline":true,"label":"Release","permalink":"/blog/tags/release"}],"readingTime":3.73,"hasTruncateMarker":false,"authors":[{"name":"Arun Bose","title":"Co-Founder, Phoenix Code","url":"https://github.com/abose","imageURL":"https://github.com/abose.png","key":"arun","page":null},{"name":"Charly P Abraham","title":"Co-Founder, Phoenix Code","url":"https://github.com/charlypa","imageURL":"https://github.com/charlypa.png","key":"charly","page":null},{"name":"Devansh Agarwal","title":"Founding Engineer, Phoenix Code","url":"https://github.com/devvaannsh","imageURL":"https://github.com/devvaannsh.png","key":"devvaannsh","page":null},{"name":"Phoenix Code Bot","title":"Our little elf who keeps the whole place together","url":"https://github.com/phoenixide","imageURL":"https://github.com/phoenixide.png","key":"phoenixBot","page":null}],"frontMatter":{"slug":"release-5.0","title":"Phoenix Pro Release (January-2026, V-5.0) is now Live","description":"Phoenix Code 5.0 introduces Phoenix Pro with Live Preview Edit, Emmet support, Tab Bar, and Custom Snippets. The biggest update yet.","authors":["arun","charly","devvaannsh","phoenixBot"],"tags":["Phoenix Pro","Live Preview Edit","Emmet","Tab Bar","Custom Snippets","Collapse Folders","Smarter hint suggestions","Stability Improvements","Windows","Linux","Mac","Release"]},"unlisted":false,"prevItem":{"title":"Brackets Editor in 2026: Phoenix Code Picks Up Where It Left Off","permalink":"/blog/brackets-editor-phoenix-code"},"nextItem":{"title":"Git It Release (January-2025, V-4.0) is now Live","permalink":"/blog/release-4.0"}}')}}]); \ No newline at end of file diff --git a/assets/js/d5e48b92.6681ae46.js b/assets/js/d5e48b92.6681ae46.js new file mode 100644 index 00000000..cd8f88e8 --- /dev/null +++ b/assets/js/d5e48b92.6681ae46.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3282],{79873:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>d,default:()=>h,frontMatter:()=>c,metadata:()=>r,toc:()=>o});const r=JSON.parse('{"id":"API-Reference/preferences/PreferencesManager","title":"PreferencesManager","description":"Import :","source":"@site/api/API-Reference/preferences/PreferencesManager.md","sourceDirName":"API-Reference/preferences","slug":"/API-Reference/preferences/PreferencesManager","permalink":"/api/API-Reference/preferences/PreferencesManager","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"XMLUtils","permalink":"/api/API-Reference/language/XMLUtils"},"next":{"title":"StateManager","permalink":"/api/API-Reference/preferences/StateManager"}}');var s=t(74848),i=t(28453);const c={},d=void 0,l={},o=[{value:"Import :",id:"import-",level:3},{value:"AppInit",id:"appinit",level:2},{value:"CURRENT_PROJECT : Object",id:"current_project--object",level:2},{value:"scopeOrderWithProject",id:"scopeorderwithproject",level:2},{value:"scopeOrderWithoutProject",id:"scopeorderwithoutproject",level:2},{value:"STATE_PROJECT_CONTEXT : string",id:"state_project_context--string",level:2},{value:"STATE_GLOBAL_CONTEXT : string",id:"state_global_context--string",level:2},{value:"STATE_PROJECT_THEN_GLOBAL_CONTEXT : string",id:"state_project_then_global_context--string",level:2},{value:"PROJECT_SCOPE : Object",id:"project_scope--object",level:2},{value:"getUserPrefFile() \u21d2 string",id:"getuserpreffile--string",level:2},{value:"getExtensionPrefs(prefix)",id:"getextensionprefsprefix",level:2},{value:"getViewState(id, [context])",id:"getviewstateid-context",level:2},{value:"setViewState(id, value, [context])",id:"setviewstateid-value-context",level:2}];function a(e){const n={br:"br",code:"code",h2:"h2",h3:"h3",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h3,{id:"import-",children:"Import :"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-js",children:'const PreferencesManager = brackets.getModule("preferences/PreferencesManager")\n'})}),"\n",(0,s.jsx)("a",{name:"AppInit"}),"\n",(0,s.jsx)(n.h2,{id:"appinit",children:"AppInit"}),"\n",(0,s.jsx)(n.p,{children:"PreferencesManager"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,s.jsx)("a",{name:"CURRENT_PROJECT"}),"\n",(0,s.jsxs)(n.h2,{id:"current_project--object",children:["CURRENT_PROJECT : ",(0,s.jsx)("code",{children:"Object"})]}),"\n",(0,s.jsx)(n.p,{children:"Context to look up preferences in the current project."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,s.jsx)("a",{name:"scopeOrderWithProject"}),"\n",(0,s.jsx)(n.h2,{id:"scopeorderwithproject",children:"scopeOrderWithProject"}),"\n",(0,s.jsx)(n.p,{children:"Cached copy of the scopeOrder with the project Scope"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,s.jsx)("a",{name:"scopeOrderWithoutProject"}),"\n",(0,s.jsx)(n.h2,{id:"scopeorderwithoutproject",children:"scopeOrderWithoutProject"}),"\n",(0,s.jsx)(n.p,{children:"Cached copy of the scopeOrder without the project Scope"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,s.jsx)("a",{name:"STATE_PROJECT_CONTEXT"}),"\n",(0,s.jsxs)(n.h2,{id:"state_project_context--string",children:["STATE_PROJECT_CONTEXT : ",(0,s.jsx)("code",{children:"string"})]}),"\n",(0,s.jsx)(n.p,{children:"State project context"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,s.jsx)("a",{name:"STATE_GLOBAL_CONTEXT"}),"\n",(0,s.jsxs)(n.h2,{id:"state_global_context--string",children:["STATE_GLOBAL_CONTEXT : ",(0,s.jsx)("code",{children:"string"})]}),"\n",(0,s.jsx)(n.p,{children:"State global context"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,s.jsx)("a",{name:"STATE_PROJECT_THEN_GLOBAL_CONTEXT"}),"\n",(0,s.jsxs)(n.h2,{id:"state_project_then_global_context--string",children:["STATE_PROJECT_THEN_GLOBAL_CONTEXT : ",(0,s.jsx)("code",{children:"string"})]}),"\n",(0,s.jsx)(n.p,{children:"Project then global context"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,s.jsx)("a",{name:"PROJECT_SCOPE"}),"\n",(0,s.jsxs)(n.h2,{id:"project_scope--object",children:["PROJECT_SCOPE : ",(0,s.jsx)("code",{children:"Object"})]}),"\n",(0,s.jsx)(n.p,{children:"Project scope"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,s.jsx)("a",{name:"getUserPrefFile"}),"\n",(0,s.jsxs)(n.h2,{id:"getuserpreffile--string",children:["getUserPrefFile() \u21d2 ",(0,s.jsx)("code",{children:"string"})]}),"\n",(0,s.jsx)(n.p,{children:"Get the full path to the user-level preferences file."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"string"})," - Path to the preferences file"]}),"\n",(0,s.jsx)("a",{name:"getExtensionPrefs"}),"\n",(0,s.jsx)(n.h2,{id:"getextensionprefsprefix",children:"getExtensionPrefs(prefix)"}),"\n",(0,s.jsxs)(n.p,{children:["Creates an extension-specific preferences manager using the prefix given.\nA ",(0,s.jsx)(n.code,{children:"."})," character will be appended to the prefix. So, a preference named ",(0,s.jsx)(n.code,{children:"foo"}),"\nwith a prefix of ",(0,s.jsx)(n.code,{children:"myExtension"})," will be stored as ",(0,s.jsx)(n.code,{children:"myExtension.foo"})," in the\npreferences files."]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"prefix"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(n.td,{children:"Prefix to be applied"})]})})]}),"\n",(0,s.jsx)("a",{name:"getViewState"}),"\n",(0,s.jsx)(n.h2,{id:"getviewstateid-context",children:"getViewState(id, [context])"}),"\n",(0,s.jsx)(n.p,{children:"Convenience function that gets a view state"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"id"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(n.td,{children:"preference to get"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"[context]"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"Object"})}),(0,s.jsx)(n.td,{children:"Optional additional information about the request"})]})]})]}),"\n",(0,s.jsx)("a",{name:"setViewState"}),"\n",(0,s.jsx)(n.h2,{id:"setviewstateid-value-context",children:"setViewState(id, value, [context])"}),"\n",(0,s.jsx)(n.p,{children:"Convenience function that sets a view state and then saves the file"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"id"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(n.td,{children:"preference to set"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"value"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"*"})}),(0,s.jsx)(n.td,{children:"new value for the preference"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"[context]"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"Object"})}),(0,s.jsx)(n.td,{children:"Optional additional information about the request"})]})]})]})]})}function h(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(a,{...e})}):a(e)}},28453:(e,n,t)=>{t.d(n,{R:()=>c,x:()=>d});var r=t(96540);const s={},i=r.createContext(s);function c(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:c(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/da640b17.f7d57007.js b/assets/js/da640b17.f7d57007.js new file mode 100644 index 00000000..dc52205d --- /dev/null +++ b/assets/js/da640b17.f7d57007.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5553],{52801:(e,r,t)=>{t.r(r),t.d(r,{assets:()=>o,contentTitle:()=>l,default:()=>h,frontMatter:()=>c,metadata:()=>n,toc:()=>d});const n=JSON.parse('{"id":"API-Reference/filesystem/Directory","title":"Directory","description":"Import :","source":"@site/api/API-Reference/filesystem/Directory.md","sourceDirName":"API-Reference/filesystem","slug":"/API-Reference/filesystem/Directory","permalink":"/api/API-Reference/filesystem/Directory","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"FileSystem","permalink":"/api/API-Reference/filesystem/"},"next":{"title":"File","permalink":"/api/API-Reference/filesystem/File"}}');var i=t(74848),s=t(28453);const c={},l=void 0,o={},d=[{value:"Import :",id:"import-",level:3},{value:"Directory",id:"directory",level:2},{value:"new Directory(fullPath, fileSystem)",id:"new-directoryfullpath-filesystem",level:3},{value:"directory.isEmptyAsync() \u21d2 Promise.<boolean>",id:"directoryisemptyasync--promiseboolean",level:3},{value:"directory.unlinkEmptyDirectoryAsync() \u21d2 Promise.<void>",id:"directoryunlinkemptydirectoryasync--promisevoid",level:3},{value:"directory.getContentsAsync(filterNothing) \u21d2 Object",id:"directorygetcontentsasyncfilternothing--object",level:3},{value:"directory.getContents(callback, filterNothing)",id:"directorygetcontentscallback-filternothing",level:3},{value:"directory.createAsync() \u21d2 Promise.<FileSystemStats>",id:"directorycreateasync--promisefilesystemstats",level:3},{value:"directory.create([callback])",id:"directorycreatecallback",level:3}];function a(e){const r={a:"a",br:"br",code:"code",em:"em",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(r.h3,{id:"import-",children:"Import :"}),"\n",(0,i.jsx)(r.pre,{children:(0,i.jsx)(r.code,{className:"language-js",children:'const Directory = brackets.getModule("filesystem/Directory")\n'})}),"\n",(0,i.jsx)("a",{name:"Directory"}),"\n",(0,i.jsx)(r.h2,{id:"directory",children:"Directory"}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": global class"]}),"\n",(0,i.jsxs)(r.ul,{children:["\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Directory",children:"Directory"}),"\n",(0,i.jsxs)(r.ul,{children:["\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"#new_Directory_new",children:"new Directory(fullPath, fileSystem)"})}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Directory+isEmptyAsync",children:".isEmptyAsync()"})," \u21d2 ",(0,i.jsx)("code",{children:"Promise."})]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Directory+unlinkEmptyDirectoryAsync",children:".unlinkEmptyDirectoryAsync()"})," \u21d2 ",(0,i.jsx)("code",{children:"Promise."})]}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Directory+getContentsAsync",children:".getContentsAsync(filterNothing)"})," \u21d2 ",(0,i.jsx)("code",{children:"Object"})]}),"\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"#Directory+getContents",children:".getContents(callback, filterNothing)"})}),"\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)(r.a,{href:"#Directory+createAsync",children:".createAsync()"})," \u21d2 ",(0,i.jsx)("code",{children:"Promise."})]}),"\n",(0,i.jsx)(r.li,{children:(0,i.jsx)(r.a,{href:"#Directory+create",children:".create([callback])"})}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)("a",{name:"new_Directory_new"}),"\n",(0,i.jsx)(r.h3,{id:"new-directoryfullpath-filesystem",children:"new Directory(fullPath, fileSystem)"}),"\n",(0,i.jsx)(r.p,{children:"Model for a file system Directory."}),"\n",(0,i.jsxs)(r.p,{children:["This class should ",(0,i.jsx)(r.em,{children:"not"})," be instantiated directly. Use FileSystem.getDirectoryForPath,\nFileSystem.resolve, or Directory.getContents to create an instance of this class."]}),"\n",(0,i.jsx)(r.p,{children:"Note: Directory.fullPath always has a trailing slash."}),"\n",(0,i.jsx)(r.p,{children:"See the FileSystem class for more details."}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"fullPath"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"string"})}),(0,i.jsx)(r.td,{children:"The full path for this Directory."})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"fileSystem"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"FileSystem"})}),(0,i.jsx)(r.td,{children:"The file system associated with this Directory."})]})]})]}),"\n",(0,i.jsx)("a",{name:"Directory+isEmptyAsync"}),"\n",(0,i.jsxs)(r.h3,{id:"directoryisemptyasync--promiseboolean",children:["directory.isEmptyAsync() \u21d2 ",(0,i.jsx)("code",{children:"Promise."})]}),"\n",(0,i.jsx)(r.p,{children:"Returns true if is a directory exists and is empty."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Directory",children:(0,i.jsx)("code",{children:"Directory"})}),(0,i.jsx)(r.br,{}),"\n",(0,i.jsx)(r.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"Promise."})," - True if directory is empty and it exists, else false."]}),"\n",(0,i.jsx)("a",{name:"Directory+unlinkEmptyDirectoryAsync"}),"\n",(0,i.jsxs)(r.h3,{id:"directoryunlinkemptydirectoryasync--promisevoid",children:["directory.unlinkEmptyDirectoryAsync() \u21d2 ",(0,i.jsx)("code",{children:"Promise."})]}),"\n",(0,i.jsx)(r.p,{children:"Recursively deletes all empty subdirectories within the current directory. If all subdirectories are empty,\nthe current directory itself will be deleted.\nA directory is considered empty if it doesn't contain any files in its subtree."}),"\n",(0,i.jsx)(r.p,{children:"If a subtree contains a large number of nested subdirectories and no files, the whole tree will be deleted.\nOnly branches that contain a file will be retained."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Directory",children:(0,i.jsx)("code",{children:"Directory"})}),(0,i.jsx)(r.br,{}),"\n",(0,i.jsx)(r.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"Promise."})," - A Promise that resolves when the operation is finished",(0,i.jsx)(r.br,{}),"\n",(0,i.jsx)(r.strong,{children:"Throws"}),":"]}),"\n",(0,i.jsxs)(r.ul,{children:["\n",(0,i.jsxs)(r.li,{children:[(0,i.jsx)("code",{children:"FileSystemError"})," If an error occurs while accessing the filesystem"]}),"\n"]}),"\n",(0,i.jsx)(r.p,{children:(0,i.jsx)(r.strong,{children:"Example"})}),"\n",(0,i.jsx)(r.pre,{children:(0,i.jsx)(r.code,{className:"language-js",children:"await dir.unlinkEmptyDirectoryAsync();\n"})}),"\n",(0,i.jsx)("a",{name:"Directory+getContentsAsync"}),"\n",(0,i.jsxs)(r.h3,{id:"directorygetcontentsasyncfilternothing--object",children:["directory.getContentsAsync(filterNothing) \u21d2 ",(0,i.jsx)("code",{children:"Object"})]}),"\n",(0,i.jsx)(r.p,{children:"Read the contents of a Directory, returns a promise. It filters out all files\nthat are not shown in the file tree by default, unless the filterNothing option is specified."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Directory",children:(0,i.jsx)("code",{children:"Directory"})}),(0,i.jsx)(r.br,{}),"\n",(0,i.jsx)(r.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"Object"})," - An object\nwith attributes - entries(an array of file system entries), contentStats and contentsStatsErrors(a map from\ncontent name to error if there is any)."]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsx)(r.tbody,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"filterNothing"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"boolean"})}),(0,i.jsx)(r.td,{children:"is specified, will return a true contents of dir as shown in disc, weather it is shown in the file tree or not. Can be used for backup/restore flows."})]})})]}),"\n",(0,i.jsx)("a",{name:"Directory+getContents"}),"\n",(0,i.jsx)(r.h3,{id:"directorygetcontentscallback-filternothing",children:"directory.getContents(callback, filterNothing)"}),"\n",(0,i.jsx)(r.p,{children:"Read the contents of a Directory. It filters out all files\nthat are not shown in the file tree by default, unless the filterNothing option is specified."}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Directory",children:(0,i.jsx)("code",{children:"Directory"})})]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsxs)(r.tbody,{children:[(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"callback"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"function"})}),(0,i.jsx)(r.td,{children:"Callback that is passed an error code or the stat-able contents of the directory along with the stats for these entries and a fullPath-to-FileSystemError string map of unstat-able entries and their stat errors. If there are no stat errors then the last parameter shall remain undefined."})]}),(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"filterNothing"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"boolean"})}),(0,i.jsx)(r.td,{children:"is specified, will return a true contents of dir as shown in disc, weather it is shown in the file tree or not. Can be used for backup/restore flows."})]})]})]}),"\n",(0,i.jsx)("a",{name:"Directory+createAsync"}),"\n",(0,i.jsxs)(r.h3,{id:"directorycreateasync--promisefilesystemstats",children:["directory.createAsync() \u21d2 ",(0,i.jsx)("code",{children:"Promise."})]}),"\n",(0,i.jsx)(r.p,{children:"Create a directory and returns a promise that will resolve to a stat"}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Directory",children:(0,i.jsx)("code",{children:"Directory"})}),(0,i.jsx)(r.br,{}),"\n",(0,i.jsx)(r.strong,{children:"Returns"}),": ",(0,i.jsx)("code",{children:"Promise."})," - resolves to the stats of the newly created dir."]}),"\n",(0,i.jsx)("a",{name:"Directory+create"}),"\n",(0,i.jsx)(r.h3,{id:"directorycreatecallback",children:"directory.create([callback])"}),"\n",(0,i.jsx)(r.p,{children:"Create a directory"}),"\n",(0,i.jsxs)(r.p,{children:[(0,i.jsx)(r.strong,{children:"Kind"}),": instance method of ",(0,i.jsx)(r.a,{href:"#Directory",children:(0,i.jsx)("code",{children:"Directory"})})]}),"\n",(0,i.jsxs)(r.table,{children:[(0,i.jsx)(r.thead,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.th,{children:"Param"}),(0,i.jsx)(r.th,{children:"Type"}),(0,i.jsx)(r.th,{children:"Description"})]})}),(0,i.jsx)(r.tbody,{children:(0,i.jsxs)(r.tr,{children:[(0,i.jsx)(r.td,{children:"[callback]"}),(0,i.jsx)(r.td,{children:(0,i.jsx)("code",{children:"function"})}),(0,i.jsx)(r.td,{children:"Callback resolved with a FileSystemError string or the stat object for the created directory."})]})})]})]})}function h(e={}){const{wrapper:r}={...(0,s.R)(),...e.components};return r?(0,i.jsx)(r,{...e,children:(0,i.jsx)(a,{...e})}):a(e)}},28453:(e,r,t)=>{t.d(r,{R:()=>c,x:()=>l});var n=t(96540);const i={},s=n.createContext(i);function c(e){const r=n.useContext(s);return n.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function l(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:c(e.components),n.createElement(s.Provider,{value:r},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/db6e9320.8820cfd5.js b/assets/js/db6e9320.8820cfd5.js new file mode 100644 index 00000000..e5ccb8ad --- /dev/null +++ b/assets/js/db6e9320.8820cfd5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5072],{10714:e=>{e.exports=JSON.parse('{"tag":{"label":"Editor Experience","permalink":"/blog/tags/editor-experience","allTagsPath":"/blog/tags","count":1,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/editor-experience","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]); \ No newline at end of file diff --git a/assets/js/dbbfd26a.74bddc73.js b/assets/js/dbbfd26a.74bddc73.js new file mode 100644 index 00000000..76f80856 --- /dev/null +++ b/assets/js/dbbfd26a.74bddc73.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[1388],{53003:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>d,default:()=>h,frontMatter:()=>o,metadata:()=>i,toc:()=>l});const i=JSON.parse('{"id":"API-Reference/document/DocumentManager","title":"DocumentManager","description":"Import :","source":"@site/api/API-Reference/document/DocumentManager.md","sourceDirName":"API-Reference/document","slug":"/API-Reference/document/DocumentManager","permalink":"/api/API-Reference/document/DocumentManager","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"Document","permalink":"/api/API-Reference/document/"},"next":{"title":"TextRange","permalink":"/api/API-Reference/document/TextRange"}}');var s=t(74848),r=t(28453);const o={},d=void 0,c={},l=[{value:"Import :",id:"import-",level:3},{value:"_",id:"_",level:2},{value:"EVENT_AFTER_DOCUMENT_CREATE : string",id:"event_after_document_create--string",level:2},{value:"EVENT_PATH_DELETED : string",id:"event_path_deleted--string",level:2},{value:"EVENT_FILE_NAME_CHANGE : string",id:"event_file_name_change--string",level:2},{value:"EVENT_BEFORE_DOCUMENT_DELETE : string",id:"event_before_document_delete--string",level:2},{value:"EVENT_DOCUMENT_REFRESHED : string",id:"event_document_refreshed--string",level:2},{value:"EVENT_DOCUMENT_CHANGE : string",id:"event_document_change--string",level:2},{value:"EVENT_DIRTY_FLAG_CHANGED : string",id:"event_dirty_flag_changed--string",level:2},{value:"getOpenDocumentForPath(fullPath) \u21d2 Document",id:"getopendocumentforpathfullpath--document",level:2},{value:"getAllOpenDocuments() \u21d2 Array.<Document>",id:"getallopendocuments--arraydocument",level:2},{value:"getDocumentForPath(fullPath, fileObj) \u21d2 $.Promise",id:"getdocumentforpathfullpath-fileobj--promise",level:2},{value:"getDocumentText(file, [checkLineEndings]) \u21d2 $.Promise",id:"getdocumenttextfile-checklineendings--promise",level:2},{value:"createUntitledDocument(counter, fileExt) \u21d2 Document",id:"createuntitleddocumentcounter-fileext--document",level:2}];function a(e){const n={a:"a",br:"br",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,r.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h3,{id:"import-",children:"Import :"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-js",children:'const DocumentManager = brackets.getModule("document/DocumentManager")\n'})}),"\n",(0,s.jsx)("a",{name:"_"}),"\n",(0,s.jsx)(n.h2,{id:"_",children:"_"}),"\n",(0,s.jsx)(n.p,{children:"DocumentManager maintains a list of currently 'open' Documents. The DocumentManager is responsible\nfor coordinating document operations and dispatching certain document events."}),"\n",(0,s.jsx)(n.p,{children:"Document is the model for a file's contents; it dispatches events whenever those contents change.\nTo transiently inspect a file's content, simply get a Document and call getText() on it. However,\nto be notified of Document changes or to modify a Document, you MUST call addRef() to ensure the\nDocument instance 'stays alive' and is shared by all other who read/modify that file. ('Open'\nDocuments are all Documents that are 'kept alive', i.e. have ref count > 0)."}),"\n",(0,s.jsx)(n.p,{children:"To get a Document, call getDocumentForPath(); never new up a Document yourself."}),"\n",(0,s.jsx)(n.p,{children:"Secretly, a Document may use an Editor instance to act as the model for its internal state. (This\nis unavoidable because CodeMirror does not separate its model from its UI). Documents are not\nmodifiable until they have a backing 'master Editor'. Creation of the backing Editor is owned by\nEditorManager. A Document only gets a backing Editor if it opened in an editor."}),"\n",(0,s.jsx)(n.p,{children:"A non-modifiable Document may still dispatch change notifications, if the Document was changed\nexternally on disk."}),"\n",(0,s.jsx)(n.p,{children:"Aside from the text content, Document tracks a few pieces of metadata - notably, whether there are\nany unsaved changes."}),"\n",(0,s.jsx)(n.p,{children:"This module dispatches several events:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"dirtyFlagChange -- When any Document's isDirty flag changes. The 2nd arg to the listener is the\nDocument whose flag changed."}),"\n",(0,s.jsx)(n.li,{children:"documentSaved -- When a Document's changes have been saved. The 2nd arg to the listener is the\nDocument that has been saved."}),"\n",(0,s.jsx)(n.li,{children:"documentRefreshed -- When a Document's contents have been reloaded from disk. The 2nd arg to the\nlistener is the Document that has been refreshed."}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"NOTE: WorkingSet APIs have been deprecated and have moved to MainViewManager as WorkingSet APIs\nSome WorkingSet APIs that have been identified as being used by 3rd party extensions will\nemit deprecation warnings and call the WorkingSet APIS to maintain backwards compatibility"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"currentDocumentChange -- Deprecated: use EditorManager activeEditorChange (which covers all editors,\nnot just full-sized editors) or MainViewManager currentFileChange (which covers full-sized views\nonly, but is also triggered for non-editor views e.g. image files)."}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"fileNameChange -- When the name of a file or folder has changed. The 2nd arg is the old name.\nThe 3rd arg is the new name. Generally, however, file objects have already been changed by the\ntime this event is dispatched so code that relies on matching the filename to a file object\nwill need to compare the newname."}),"\n"]}),"\n",(0,s.jsxs)(n.li,{children:["\n",(0,s.jsx)(n.p,{children:"pathDeleted -- When a file or folder has been deleted. The 2nd arg is the path that was deleted."}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:'To listen for events, do something like this: (see EventDispatcher for details on this pattern)\nDocumentManager.on("eventname", handler);'}),"\n",(0,s.jsx)(n.p,{children:"Document objects themselves also dispatch some events - see Document docs for details."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,s.jsx)("a",{name:"EVENT_AFTER_DOCUMENT_CREATE"}),"\n",(0,s.jsxs)(n.h2,{id:"event_after_document_create--string",children:["EVENT_AFTER_DOCUMENT_CREATE : ",(0,s.jsx)("code",{children:"string"})]}),"\n",(0,s.jsx)(n.p,{children:"Event triggered after a document is created."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,s.jsx)("a",{name:"EVENT_PATH_DELETED"}),"\n",(0,s.jsxs)(n.h2,{id:"event_path_deleted--string",children:["EVENT_PATH_DELETED : ",(0,s.jsx)("code",{children:"string"})]}),"\n",(0,s.jsx)(n.p,{children:"Event triggered when a file or folder path is deleted."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,s.jsx)("a",{name:"EVENT_FILE_NAME_CHANGE"}),"\n",(0,s.jsxs)(n.h2,{id:"event_file_name_change--string",children:["EVENT_FILE_NAME_CHANGE : ",(0,s.jsx)("code",{children:"string"})]}),"\n",(0,s.jsx)(n.p,{children:"Event triggered when a file's name changes."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,s.jsx)("a",{name:"EVENT_BEFORE_DOCUMENT_DELETE"}),"\n",(0,s.jsxs)(n.h2,{id:"event_before_document_delete--string",children:["EVENT_BEFORE_DOCUMENT_DELETE : ",(0,s.jsx)("code",{children:"string"})]}),"\n",(0,s.jsx)(n.p,{children:"Event triggered before a document is deleted."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,s.jsx)("a",{name:"EVENT_DOCUMENT_REFRESHED"}),"\n",(0,s.jsxs)(n.h2,{id:"event_document_refreshed--string",children:["EVENT_DOCUMENT_REFRESHED : ",(0,s.jsx)("code",{children:"string"})]}),"\n",(0,s.jsx)(n.p,{children:"Event triggered when a document is refreshed."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,s.jsx)("a",{name:"EVENT_DOCUMENT_CHANGE"}),"\n",(0,s.jsxs)(n.h2,{id:"event_document_change--string",children:["EVENT_DOCUMENT_CHANGE : ",(0,s.jsx)("code",{children:"string"})]}),"\n",(0,s.jsx)(n.p,{children:"Event triggered when a document's content changes."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,s.jsx)("a",{name:"EVENT_DIRTY_FLAG_CHANGED"}),"\n",(0,s.jsxs)(n.h2,{id:"event_dirty_flag_changed--string",children:["EVENT_DIRTY_FLAG_CHANGED : ",(0,s.jsx)("code",{children:"string"})]}),"\n",(0,s.jsx)(n.p,{children:"Event triggered when the document's dirty flag changes,\nindicating if the document has unsaved changes."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global constant"]}),"\n",(0,s.jsx)("a",{name:"getOpenDocumentForPath"}),"\n",(0,s.jsxs)(n.h2,{id:"getopendocumentforpathfullpath--document",children:["getOpenDocumentForPath(fullPath) \u21d2 ",(0,s.jsx)("code",{children:"Document"})]}),"\n",(0,s.jsxs)(n.p,{children:["Returns the existing open Document for the given file, or null if the file is not open ('open'\nmeans referenced by the UI somewhere). If you will hang onto the Document, you must addRef()\nit; see ",(0,s.jsx)(n.a,{href:"#getDocumentForPath",children:"#getDocumentForPath"})," for details."]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"})]})}),(0,s.jsx)(n.tbody,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"fullPath"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})})]})})]}),"\n",(0,s.jsx)("a",{name:"getAllOpenDocuments"}),"\n",(0,s.jsxs)(n.h2,{id:"getallopendocuments--arraydocument",children:["getAllOpenDocuments() \u21d2 ",(0,s.jsx)("code",{children:"Array."})]}),"\n",(0,s.jsx)(n.p,{children:"Returns all Documents that are 'open' in the UI somewhere (for now, this means open in an\ninline editor and/or a full-size editor). Only these Documents can be modified, and only\nthese Documents are synced with external changes on disk."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,s.jsx)("a",{name:"getDocumentForPath"}),"\n",(0,s.jsxs)(n.h2,{id:"getdocumentforpathfullpath-fileobj--promise",children:["getDocumentForPath(fullPath, fileObj) \u21d2 ",(0,s.jsx)("code",{children:"$.Promise"})]}),"\n",(0,s.jsx)(n.p,{children:"Gets an existing open Document for the given file, or creates a new one if the Document is\nnot currently open ('open' means referenced by the UI somewhere). Always use this method to\nget Documents; do not call the Document constructor directly. This method is safe to call\nin parallel."}),"\n",(0,s.jsx)(n.p,{children:"If you are going to hang onto the Document for more than just the duration of a command - e.g.\nif you are going to display its contents in a piece of UI - then you must addRef() the Document\nand listen for changes on it. (Note: opening the Document in an Editor automatically manages\nrefs and listeners for that Editor UI)."}),"\n",(0,s.jsx)(n.p,{children:"If all you need is the Document's getText() value, use the faster getDocumentText() instead."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"$.Promise"})," - A promise object that will be resolved with the Document, or rejected\nwith a FileSystemError if the file is not yet open and can't be read from disk."]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"fullPath"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(n.td,{})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"fileObj"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"object"})}),(0,s.jsx)(n.td,{children:"actual File"})]})]})]}),"\n",(0,s.jsx)("a",{name:"getDocumentText"}),"\n",(0,s.jsxs)(n.h2,{id:"getdocumenttextfile-checklineendings--promise",children:["getDocumentText(file, [checkLineEndings]) \u21d2 ",(0,s.jsx)("code",{children:"$.Promise"})]}),"\n",(0,s.jsx)(n.p,{children:"Gets the text of a Document (including any unsaved changes), or would-be Document if the\nfile is not actually open. More efficient than getDocumentForPath(). Use when you're reading\ndocument(s) but don't need to hang onto a Document object."}),"\n",(0,s.jsx)(n.p,{children:"If the file is open this is equivalent to calling getOpenDocumentForPath().getText(). If the\nfile is NOT open, this is like calling getDocumentForPath()...getText() but more efficient.\nDiffers from plain FileUtils.readAsText() in two ways: (a) line endings are still normalized\nas in Document.getText(); (b) unsaved changes are returned if there are any."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"$.Promise"})," - A promise that is resolved with three parameters:\ncontents - string: the document's text\ntimestamp - Date: the last time the document was changed on disk (might not be the same as the last time it was changed in memory)\nlineEndings - string: the original line endings of the file, one of the FileUtils.LINE_ENDINGS_* constants;\nwill be null if checkLineEndings was false.\nor rejected with a filesystem error."]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"file"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"File"})}),(0,s.jsx)(n.td,{children:"The file to get the text for."})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"[checkLineEndings]"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"boolean"})}),(0,s.jsx)(n.td,{children:"Whether to return line ending information. Default false (slightly more efficient)."})]})]})]}),"\n",(0,s.jsx)("a",{name:"createUntitledDocument"}),"\n",(0,s.jsxs)(n.h2,{id:"createuntitleddocumentcounter-fileext--document",children:["createUntitledDocument(counter, fileExt) \u21d2 ",(0,s.jsx)("code",{children:"Document"})]}),"\n",(0,s.jsx)(n.p,{children:"Creates an untitled document. The associated File has a fullPath that\nlooks like /some-random-string/Untitled-counter.fileExt."}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global function",(0,s.jsx)(n.br,{}),"\n",(0,s.jsx)(n.strong,{children:"Returns"}),": ",(0,s.jsx)("code",{children:"Document"})," - - a new untitled Document"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"counter"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"number"})}),(0,s.jsx)(n.td,{children:"used in the name of the new Document's File"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"fileExt"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"string"})}),(0,s.jsx)(n.td,{children:'file extension of the new Document\'s File, including "."'})]})]})]})]})}function h(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(a,{...e})}):a(e)}},28453:(e,n,t)=>{t.d(n,{R:()=>o,x:()=>d});var i=t(96540);const s={},r=i.createContext(s);function o(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:o(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/dd914c6e.36815b8b.js b/assets/js/dd914c6e.36815b8b.js new file mode 100644 index 00000000..e8d9fa17 --- /dev/null +++ b/assets/js/dd914c6e.36815b8b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8061],{81863:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>d,default:()=>h,frontMatter:()=>a,metadata:()=>r,toc:()=>l});const r=JSON.parse('{"id":"API-Reference/document/TextRange","title":"TextRange","description":"Import :","source":"@site/api/API-Reference/document/TextRange.md","sourceDirName":"API-Reference/document","slug":"/API-Reference/document/TextRange","permalink":"/api/API-Reference/document/TextRange","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"DocumentManager","permalink":"/api/API-Reference/document/DocumentManager"},"next":{"title":"Editor","permalink":"/api/API-Reference/editor/"}}');var s=t(74848),i=t(28453);const a={},d=void 0,c={},l=[{value:"Import :",id:"import-",level:3},{value:"TextRange",id:"textrange",level:2},{value:"new TextRange(document, startLine, endLine)",id:"new-textrangedocument-startline-endline",level:3},{value:"textRange.document : Document",id:"textrangedocument--document",level:3},{value:"textRange.startLine : number",id:"textrangestartline--number",level:3},{value:"textRange.endLine : number",id:"textrangeendline--number",level:3},{value:"textRange.dispose()",id:"textrangedispose",level:3},{value:"EventDispatcher",id:"eventdispatcher",level:2}];function o(e){const n={a:"a",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h3,{id:"import-",children:"Import :"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-js",children:'const TextRange = brackets.getModule("document/TextRange")\n'})}),"\n",(0,s.jsx)("a",{name:"TextRange"}),"\n",(0,s.jsx)(n.h2,{id:"textrange",children:"TextRange"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global class"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"#TextRange",children:"TextRange"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"#new_TextRange_new",children:"new TextRange(document, startLine, endLine)"})}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"#TextRange+document",children:".document"})," : ",(0,s.jsx)("code",{children:"Document"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"#TextRange+startLine",children:".startLine"})," : ",(0,s.jsx)("code",{children:"number"})]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.a,{href:"#TextRange+endLine",children:".endLine"})," : ",(0,s.jsx)("code",{children:"number"})]}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"#TextRange+dispose",children:".dispose()"})}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)("a",{name:"new_TextRange_new"}),"\n",(0,s.jsx)(n.h3,{id:"new-textrangedocument-startline-endline",children:"new TextRange(document, startLine, endLine)"}),"\n",(0,s.jsx)(n.p,{children:"Stores a range of lines that is automatically maintained as the Document changes. The range\nMAY drop out of sync with the Document in certain edge cases; startLine & endLine will become\nnull when that happens."}),"\n",(0,s.jsx)(n.p,{children:"Important: you must dispose() a TextRange when you're done with it. Because TextRange addRef()s\nthe Document (in order to listen to it), you will leak Documents otherwise."}),"\n",(0,s.jsx)(n.p,{children:"TextRange dispatches these events:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"change -- When the range boundary line numbers change (due to a Document change)"}),"\n",(0,s.jsx)(n.li,{children:"contentChange -- When the actual content of the range changes. This might or might not\nbe accompanied by a change in the boundary line numbers."}),"\n",(0,s.jsx)(n.li,{children:"lostSync -- When the backing Document changes in such a way that the range can no longer\naccurately be maintained. Generally, occurs whenever an edit spans a range boundary.\nAfter this, startLine & endLine will be unusable (set to null).\nAlso occurs when the document is deleted, though startLine & endLine won't be modified\nThese events only ever occur in response to Document changes, so if you are already listening\nto the Document, you could ignore the TextRange events and just read its updated value in your\nown Document change handler."}),"\n"]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Param"}),(0,s.jsx)(n.th,{children:"Type"}),(0,s.jsx)(n.th,{children:"Description"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"document"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"Document"})}),(0,s.jsx)(n.td,{})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"startLine"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"number"})}),(0,s.jsx)(n.td,{children:"First line in range (0-based, inclusive)"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"endLine"}),(0,s.jsx)(n.td,{children:(0,s.jsx)("code",{children:"number"})}),(0,s.jsx)(n.td,{children:"Last line in range (0-based, inclusive)"})]})]})]}),"\n",(0,s.jsx)("a",{name:"TextRange+document"}),"\n",(0,s.jsxs)(n.h3,{id:"textrangedocument--document",children:["textRange.document : ",(0,s.jsx)("code",{children:"Document"})]}),"\n",(0,s.jsx)(n.p,{children:"Containing document"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": instance property of ",(0,s.jsx)(n.a,{href:"#TextRange",children:(0,s.jsx)("code",{children:"TextRange"})})]}),"\n",(0,s.jsx)("a",{name:"TextRange+startLine"}),"\n",(0,s.jsxs)(n.h3,{id:"textrangestartline--number",children:["textRange.startLine : ",(0,s.jsx)("code",{children:"number"})]}),"\n",(0,s.jsx)(n.p,{children:"Starting Line"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": instance property of ",(0,s.jsx)(n.a,{href:"#TextRange",children:(0,s.jsx)("code",{children:"TextRange"})})]}),"\n",(0,s.jsx)("a",{name:"TextRange+endLine"}),"\n",(0,s.jsxs)(n.h3,{id:"textrangeendline--number",children:["textRange.endLine : ",(0,s.jsx)("code",{children:"number"})]}),"\n",(0,s.jsx)(n.p,{children:"Ending Line"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": instance property of ",(0,s.jsx)(n.a,{href:"#TextRange",children:(0,s.jsx)("code",{children:"TextRange"})})]}),"\n",(0,s.jsx)("a",{name:"TextRange+dispose"}),"\n",(0,s.jsx)(n.h3,{id:"textrangedispose",children:"textRange.dispose()"}),"\n",(0,s.jsx)(n.p,{children:"Detaches from the Document. The TextRange will no longer update or send change events"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": instance method of ",(0,s.jsx)(n.a,{href:"#TextRange",children:(0,s.jsx)("code",{children:"TextRange"})})]}),"\n",(0,s.jsx)("a",{name:"EventDispatcher"}),"\n",(0,s.jsx)(n.h2,{id:"eventdispatcher",children:"EventDispatcher"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Kind"}),": global variable"]})]})}function h(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(o,{...e})}):o(e)}},28453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>d});var r=t(96540);const s={},i=r.createContext(s);function a(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:a(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/df21345a.84932e0e.js b/assets/js/df21345a.84932e0e.js new file mode 100644 index 00000000..676e7c5a --- /dev/null +++ b/assets/js/df21345a.84932e0e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[2249],{34481:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>a,contentTitle:()=>s,default:()=>h,frontMatter:()=>c,metadata:()=>r,toc:()=>l});const r=JSON.parse('{"id":"API-Reference/utils/DeprecationWarning","title":"DeprecationWarning","description":"Import :","source":"@site/api/API-Reference/utils/DeprecationWarning.md","sourceDirName":"API-Reference/utils","slug":"/API-Reference/utils/DeprecationWarning","permalink":"/api/API-Reference/utils/DeprecationWarning","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"ColorUtils","permalink":"/api/API-Reference/utils/ColorUtils"},"next":{"title":"DragAndDrop","permalink":"/api/API-Reference/utils/DragAndDrop"}}');var d=t(74848),i=t(28453);const c={},s=void 0,a={},l=[{value:"Import :",id:"import-",level:3},{value:"EventDispatcher",id:"eventdispatcher",level:2},{value:"deprecationWarning(message, [oncePerCaller], [callerStackPos])",id:"deprecationwarningmessage-oncepercaller-callerstackpos",level:2},{value:"deprecateEvent(outbound, inbound, oldEventName, newEventName, [canonicalOutboundName], [canonicalInboundName])",id:"deprecateeventoutbound-inbound-oldeventname-neweventname-canonicaloutboundname-canonicalinboundname",level:2},{value:"deprecateConstant(obj, oldId, newId)",id:"deprecateconstantobj-oldid-newid",level:2}];function o(e){const n={code:"code",h2:"h2",h3:"h3",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,i.R)(),...e.components};return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(n.h3,{id:"import-",children:"Import :"}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{className:"language-js",children:'const DeprecationWarning = brackets.getModule("utils/DeprecationWarning")\n'})}),"\n",(0,d.jsx)("a",{name:"EventDispatcher"}),"\n",(0,d.jsx)(n.h2,{id:"eventdispatcher",children:"EventDispatcher"}),"\n",(0,d.jsx)(n.p,{children:"Utilities functions to display deprecation warning in the console."}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Kind"}),": global variable"]}),"\n",(0,d.jsx)("a",{name:"deprecationWarning"}),"\n",(0,d.jsx)(n.h2,{id:"deprecationwarningmessage-oncepercaller-callerstackpos",children:"deprecationWarning(message, [oncePerCaller], [callerStackPos])"}),"\n",(0,d.jsx)(n.p,{children:"Show deprecation warning with the call stack if it\nhas never been displayed before."}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Param"}),(0,d.jsx)(n.th,{children:"Type"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsxs)(n.tbody,{children:[(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:"message"}),(0,d.jsx)(n.td,{children:(0,d.jsx)("code",{children:"string"})}),(0,d.jsx)(n.td,{children:"The deprecation message to be displayed."})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:"[oncePerCaller]"}),(0,d.jsx)(n.td,{children:(0,d.jsx)("code",{children:"boolean"})}),(0,d.jsx)(n.td,{children:"If true, displays the message once for each unique call location. If false (the default), only displays the message once no matter where it's called from. Note that setting this to true can cause a slight performance hit (because it has to generate a stack trace), so don't set this for functions that you expect to be called from performance- sensitive code (e.g. tight loops)."})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:"[callerStackPos]"}),(0,d.jsx)(n.td,{children:(0,d.jsx)("code",{children:"number"})}),(0,d.jsxs)(n.td,{children:["Only used if oncePerCaller=true. Overrides the ",(0,d.jsx)(n.code,{children:"Error().stack"})," depth where the client-code caller can be found. Only needed if extra shim layers are involved."]})]})]})]}),"\n",(0,d.jsx)("a",{name:"deprecateEvent"}),"\n",(0,d.jsx)(n.h2,{id:"deprecateeventoutbound-inbound-oldeventname-neweventname-canonicaloutboundname-canonicalinboundname",children:"deprecateEvent(outbound, inbound, oldEventName, newEventName, [canonicalOutboundName], [canonicalInboundName])"}),"\n",(0,d.jsx)(n.p,{children:"Show a deprecation warning if there are listeners for the event"}),"\n",(0,d.jsx)(n.pre,{children:(0,d.jsx)(n.code,{children:' DeprecationWarning.deprecateEvent(exports,\n MainViewManager,\n "workingSetAdd",\n "workingSetAdd",\n "DocumentManager.workingSetAdd",\n "MainViewManager.workingSetAdd");\n'})}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Param"}),(0,d.jsx)(n.th,{children:"Type"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsxs)(n.tbody,{children:[(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:"outbound"}),(0,d.jsx)(n.td,{children:(0,d.jsx)("code",{children:"Object"})}),(0,d.jsx)(n.td,{children:"the object with the old event to dispatch"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:"inbound"}),(0,d.jsx)(n.td,{children:(0,d.jsx)("code",{children:"Object"})}),(0,d.jsx)(n.td,{children:"the object with the new event to map to the old event"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:"oldEventName"}),(0,d.jsx)(n.td,{children:(0,d.jsx)("code",{children:"string"})}),(0,d.jsx)(n.td,{children:"the name of the old event"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:"newEventName"}),(0,d.jsx)(n.td,{children:(0,d.jsx)("code",{children:"string"})}),(0,d.jsx)(n.td,{children:"the name of the new event"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:"[canonicalOutboundName]"}),(0,d.jsx)(n.td,{children:(0,d.jsx)("code",{children:"string"})}),(0,d.jsx)(n.td,{children:"the canonical name of the old event"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:"[canonicalInboundName]"}),(0,d.jsx)(n.td,{children:(0,d.jsx)("code",{children:"string"})}),(0,d.jsx)(n.td,{children:"the canonical name of the new event"})]})]})]}),"\n",(0,d.jsx)("a",{name:"deprecateConstant"}),"\n",(0,d.jsx)(n.h2,{id:"deprecateconstantobj-oldid-newid",children:"deprecateConstant(obj, oldId, newId)"}),"\n",(0,d.jsx)(n.p,{children:"Create a deprecation warning and action for updated constants"}),"\n",(0,d.jsxs)(n.p,{children:[(0,d.jsx)(n.strong,{children:"Kind"}),": global function"]}),"\n",(0,d.jsxs)(n.table,{children:[(0,d.jsx)(n.thead,{children:(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.th,{children:"Param"}),(0,d.jsx)(n.th,{children:"Type"}),(0,d.jsx)(n.th,{children:"Description"})]})}),(0,d.jsxs)(n.tbody,{children:[(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:"obj"}),(0,d.jsx)(n.td,{children:(0,d.jsx)("code",{children:"Object"})}),(0,d.jsx)(n.td,{})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:"oldId"}),(0,d.jsx)(n.td,{children:(0,d.jsx)("code",{children:"string"})}),(0,d.jsx)(n.td,{children:"Menu Id"})]}),(0,d.jsxs)(n.tr,{children:[(0,d.jsx)(n.td,{children:"newId"}),(0,d.jsx)(n.td,{children:(0,d.jsx)("code",{children:"string"})}),(0,d.jsx)(n.td,{children:"Menu Id"})]})]})]})]})}function h(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,d.jsx)(n,{...e,children:(0,d.jsx)(o,{...e})}):o(e)}},28453:(e,n,t)=>{t.d(n,{R:()=>c,x:()=>s});var r=t(96540);const d={},i=r.createContext(d);function c(e){const n=r.useContext(i);return r.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function s(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(d):e.components||d:c(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/e0105602.93fa353e.js b/assets/js/e0105602.93fa353e.js new file mode 100644 index 00000000..c14f91a2 --- /dev/null +++ b/assets/js/e0105602.93fa353e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[7104],{56318:(e,i,t)=>{t.r(i),t.d(i,{assets:()=>d,contentTitle:()=>a,default:()=>c,frontMatter:()=>o,metadata:()=>n,toc:()=>l});var n=t(92361),r=t(74848),s=t(28453);const o={slug:"brackets-editor-phoenix-code",title:"Brackets Editor in 2026: Phoenix Code Picks Up Where It Left Off",description:"The Brackets editor is in maintenance mode \u2014 Phoenix Code continues where it left off. Same team, same live preview DNA, rebuilt for 2026. Free and open source.",authors:["charly"],tags:["Brackets","Comparison","Migration","Code Editor","Live Preview","Open Source"],keywords:["brackets editor","adobe brackets","brackets code editor","brackets extensions","phoenix code","live preview editor"]},a=void 0,d={authorsImageUrls:[void 0]},l=[{value:"Brackets vs Phoenix Code: What's New",id:"brackets-vs-phoenix-code-whats-new",level:2},{value:"What Happened to the Brackets Editor?",id:"what-happened-to-the-brackets-editor",level:2},{value:"What Carried Over from Brackets",id:"what-carried-over-from-brackets",level:2},{value:"What's New in Phoenix Code",id:"whats-new-in-phoenix-code",level:2},{value:"Edit Directly in the Live Preview (Pro)",id:"edit-directly-in-the-live-preview-pro",level:3},{value:"Visual CSS Editing",id:"visual-css-editing",level:3},{value:"Built-in Git",id:"built-in-git",level:3},{value:"Runs in Your Browser",id:"runs-in-your-browser",level:3},{value:"Measurement and Inspection Tools",id:"measurement-and-inspection-tools",level:3},{value:"How to Switch from Brackets",id:"how-to-switch-from-brackets",level:2},{value:"Frequently Asked Questions",id:"frequently-asked-questions",level:2},{value:"What happened to the Brackets code editor?",id:"what-happened-to-the-brackets-code-editor",level:3},{value:"Is Phoenix Code the same as Brackets?",id:"is-phoenix-code-the-same-as-brackets",level:3},{value:"Is Phoenix Code free?",id:"is-phoenix-code-free",level:3},{value:"Is Brackets still safe to use?",id:"is-brackets-still-safe-to-use",level:3},{value:"Does Phoenix Code work on Chromebook?",id:"does-phoenix-code-work-on-chromebook",level:3},{value:"Try Phoenix Code",id:"try-phoenix-code",level:2}];function h(e){const i={a:"a",h2:"h2",h3:"h3",hr:"hr",img:"img",li:"li",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,s.R)(),...e.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(i.p,{children:"If you've used Brackets, Phoenix Code will feel immediately familiar."}),"\n",(0,r.jsx)(i.p,{children:"Built by the same team behind Brackets, Phoenix Code keeps Live Preview and fast visual front-end development at its core \u2014 now rebuilt on a modern foundation."}),"\n",(0,r.jsx)(i.p,{children:"Phoenix Code isn\u2019t a tribute or a spiritual successor. It\u2019s the natural continuation of the ideas that started with Brackets."}),"\n",(0,r.jsx)(i.p,{children:"Here\u2019s what\u2019s changed \u2014 and how to switch."}),"\n",(0,r.jsx)(i.hr,{}),"\n",(0,r.jsx)(i.h2,{id:"brackets-vs-phoenix-code-whats-new",children:"Brackets vs Phoenix Code: What's New"}),"\n",(0,r.jsx)(i.p,{children:"Phoenix Code includes everything Brackets offered \u2014 Live Preview, lightweight workflow, web-first focus \u2014 plus built-in Git, a browser edition, visual CSS editing, and an active extension marketplace. Here's the full comparison."}),"\n",(0,r.jsxs)(i.table,{children:[(0,r.jsx)(i.thead,{children:(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.th,{children:"Feature"}),(0,r.jsx)(i.th,{children:"Brackets"}),(0,r.jsx)(i.th,{children:"Phoenix Code"})]})}),(0,r.jsxs)(i.tbody,{children:[(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"Live Preview"}),(0,r.jsx)(i.td,{children:"Basic (view only)"}),(0,r.jsxs)(i.td,{children:["Full live preview (editing in preview with ",(0,r.jsx)(i.a,{href:"/docs/Pro%20Features/live-preview-edit",children:"Pro"}),")"]})]}),(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"Visual Editing"}),(0,r.jsx)(i.td,{children:"Limited"}),(0,r.jsx)(i.td,{children:"Color pickers, number dials, gradient editors, drag-and-drop"})]}),(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"Git Integration"}),(0,r.jsx)(i.td,{children:"Required third-party extension"}),(0,r.jsx)(i.td,{children:"Built-in"})]}),(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"Browser Version"}),(0,r.jsx)(i.td,{children:"No"}),(0,r.jsxs)(i.td,{children:["Yes \u2014 ",(0,r.jsx)(i.a,{href:"https://phcode.dev",children:"phcode.dev"}),", no install needed"]})]}),(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"Chromebook / Tablet Support"}),(0,r.jsx)(i.td,{children:"No"}),(0,r.jsx)(i.td,{children:"Yes"})]}),(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"Extension Marketplace"}),(0,r.jsx)(i.td,{children:"No longer maintained"}),(0,r.jsx)(i.td,{children:"Active and growing"})]}),(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"Active Development"}),(0,r.jsx)(i.td,{children:"In maintenance mode since 2021"}),(0,r.jsx)(i.td,{children:"Regular releases, active team"})]}),(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"Open Source"}),(0,r.jsx)(i.td,{children:"Yes"}),(0,r.jsx)(i.td,{children:"Yes (AGPL-3.0)"})]}),(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"Built-in Image Library"}),(0,r.jsx)(i.td,{children:"No"}),(0,r.jsx)(i.td,{children:"Yes \u2014 stock photos you can drag into projects"})]}),(0,r.jsxs)(i.tr,{children:[(0,r.jsx)(i.td,{children:"Price"}),(0,r.jsx)(i.td,{children:"Free"}),(0,r.jsxs)(i.td,{children:["Free (",(0,r.jsx)(i.a,{href:"https://phcode.dev/pricing",children:"Pro"})," from $9/mo for Live Preview Edit)"]})]})]})]}),"\n",(0,r.jsxs)(i.p,{children:["The free version of Phoenix Code covers everything Brackets did and more \u2014 Git, the browser edition, visual editing tools, all included. ",(0,r.jsx)(i.a,{href:"/docs/Pro%20Features/live-preview-edit",children:"Phoenix Pro"})," adds Live Preview Edit, and exists to help sustain full-time development by a small indie team."]}),"\n",(0,r.jsx)(i.hr,{}),"\n",(0,r.jsx)(i.h2,{id:"what-happened-to-the-brackets-editor",children:"What Happened to the Brackets Editor?"}),"\n",(0,r.jsx)(i.p,{children:"Brackets was created at Adobe and built on CEF (Chromium Embedded Framework) \u2014 a technology choice that made sense in 2014 but became increasingly difficult to maintain. Security patches, OS compatibility, performance work \u2014 it all got harder every year. In 2021, we took over Brackets from Adobe, continuing its development under the community we founded and now lead."}),"\n",(0,r.jsxs)(i.p,{children:["Rather than keep patching an aging foundation, we modernized the platform so it can run anywhere \u2014 in browsers, on desktop with Electron or Tauri, pretty much any modern system. One codebase that works everywhere, from ",(0,r.jsx)(i.a,{href:"https://phcode.dev",children:"phcode.dev"})," in your browser to a native desktop app."]}),"\n",(0,r.jsx)(i.p,{children:"The architecture changed. The team didn't. The design philosophy didn't. We named it Phoenix Code \u2014 Brackets, reborn."}),"\n",(0,r.jsx)(i.hr,{}),"\n",(0,r.jsx)(i.h2,{id:"what-carried-over-from-brackets",children:"What Carried Over from Brackets"}),"\n",(0,r.jsx)(i.p,{children:"If you're wondering whether Phoenix Code will feel familiar \u2014 it will."}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Live Preview"})," is still the core of the experience. Edit HTML or CSS and watch the browser update in real time, no manual refresh. This is the feature that defined Brackets, and it's still front and center."]}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"The lightweight workflow"})," is intact. Open a folder, start editing. Everything just works out of the box."]}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Web-first focus."})," HTML, CSS, JavaScript \u2014 that's the sweet spot. Phoenix Code is purpose-built for front-end work, not trying to be a general-purpose IDE."]}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Keyboard shortcuts and UI layout"})," are familiar. If you had muscle memory in Brackets, most of it still applies."]}),"\n",(0,r.jsx)(i.hr,{}),"\n",(0,r.jsx)(i.h2,{id:"whats-new-in-phoenix-code",children:"What's New in Phoenix Code"}),"\n",(0,r.jsx)(i.p,{children:"These are the features the Brackets community asked for \u2014 and we finally built them."}),"\n",(0,r.jsx)(i.h3,{id:"edit-directly-in-the-live-preview-pro",children:"Edit Directly in the Live Preview (Pro)"}),"\n",(0,r.jsxs)(i.p,{children:["Brackets' live preview was view-only. You could see changes reflected in real time, but you always had to make edits in the code. With ",(0,r.jsx)(i.a,{href:"/docs/Pro%20Features/live-preview-edit",children:"Phoenix Pro"}),", you can click on any element in the live preview and edit it right there \u2014 change text, swap images by dragging, rearrange elements visually. The source code updates automatically."]}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.img,{alt:"Phoenix Code live preview modes for editing HTML and CSS visually",src:t(40892).A+"",width:"476",height:"265"})}),"\n",(0,r.jsx)(i.h3,{id:"visual-css-editing",children:"Visual CSS Editing"}),"\n",(0,r.jsx)(i.p,{children:"Brackets had inline color pickers \u2014 Phoenix Code keeps those and adds number dials you can scrub to adjust CSS values like margins, padding, font sizes, and more. Hover over a number, drag to adjust, and see the result update in live preview instantly."}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.img,{alt:"Phoenix Code CSS number dial for adjusting margins and padding",src:t(94974).A+"",width:"863",height:"408"})}),"\n",(0,r.jsx)(i.h3,{id:"built-in-git",children:"Built-in Git"}),"\n",(0,r.jsx)(i.p,{children:"Phoenix Code ships with native Git support based on the familiar Brackets Git extension, addressing many of its earlier limitations with a simpler UX and improved reliability. Commit, push, pull, diff, and branch management, all built in."}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.img,{alt:"Built-in Git integration in Phoenix Code \u2014 commit and push",src:t(71627).A+"",width:"1520",height:"315"})}),"\n",(0,r.jsx)(i.h3,{id:"runs-in-your-browser",children:"Runs in Your Browser"}),"\n",(0,r.jsxs)(i.p,{children:["Open ",(0,r.jsx)(i.a,{href:"https://phcode.dev",children:"phcode.dev"})," and start editing \u2014 no install or admin privileges needed. Works on Chromebooks, tablets, shared computers, anywhere you have a browser. The web app runs the same core as the desktop app, so for website editing and live preview it's just as capable. For Git, AI features, and the full experience, grab the ",(0,r.jsx)(i.a,{href:"https://phcode.dev/download",children:"native app"}),"."]}),"\n",(0,r.jsx)(i.h3,{id:"measurement-and-inspection-tools",children:"Measurement and Inspection Tools"}),"\n",(0,r.jsx)(i.p,{children:"Inspect spacing between elements, measure distances, and check alignment directly in the live preview. If you work from design mockups, this replaces the constant back-and-forth between your editor and a separate design tool."}),"\n",(0,r.jsx)(i.p,{children:(0,r.jsx)(i.img,{alt:"Phoenix Code measurement and inspection tools in live preview",src:t(92448).A+"",width:"997",height:"578"})}),"\n",(0,r.jsx)(i.hr,{}),"\n",(0,r.jsx)(i.h2,{id:"how-to-switch-from-brackets",children:"How to Switch from Brackets"}),"\n",(0,r.jsx)(i.p,{children:"Short version: open your project folder in Phoenix Code. That's it."}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"No migration needed."})," Your project files work as-is. No config conversion, no import wizard. Just open the folder."]}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Extensions."})," The most popular Brackets extensions are now built into Phoenix Code: Emmet for abbreviations, Git for version control, ",(0,r.jsx)(i.a,{href:"/docs/Features/beautify-code",children:"Beautify/Prettier"})," for code formatting, and a Tab Bar for managing open files. The extension marketplace is active and growing for anything else you need."]}),"\n",(0,r.jsxs)(i.p,{children:[(0,r.jsx)(i.strong,{children:"Learning curve."})," Minimal. The UI layout is familiar, the shortcuts are similar, and all the new features are additive \u2014 nothing you relied on was removed. You'll be productive in minutes."]}),"\n",(0,r.jsx)(i.hr,{}),"\n",(0,r.jsx)(i.h2,{id:"frequently-asked-questions",children:"Frequently Asked Questions"}),"\n",(0,r.jsx)(i.h3,{id:"what-happened-to-the-brackets-code-editor",children:"What happened to the Brackets code editor?"}),"\n",(0,r.jsx)(i.p,{children:"Brackets was created at Adobe and actively developed until 2021. The Phoenix Code project took over the development of Brackets, and rather than keep patching an aging foundation, we rebuilt it to run in browsers and as a desktop app. Brackets, reborn."}),"\n",(0,r.jsx)(i.h3,{id:"is-phoenix-code-the-same-as-brackets",children:"Is Phoenix Code the same as Brackets?"}),"\n",(0,r.jsx)(i.p,{children:"Phoenix Code is built by the same team and carries forward the same design philosophy \u2014 Live Preview, lightweight workflow, and a focus on HTML, CSS, and JavaScript. The codebase was rewritten on modern web technologies, but the experience is familiar. If you used Brackets, you'll feel at home."}),"\n",(0,r.jsx)(i.h3,{id:"is-phoenix-code-free",children:"Is Phoenix Code free?"}),"\n",(0,r.jsxs)(i.p,{children:["Yes. The free version includes everything Brackets had and more \u2014 Git, the browser edition, visual editing tools, and the extension marketplace. ",(0,r.jsx)(i.a,{href:"/docs/Pro%20Features/live-preview-edit",children:"Phoenix Pro"})," adds Live Preview Edit starting at $9/month and helps sustain full-time development."]}),"\n",(0,r.jsx)(i.h3,{id:"is-brackets-still-safe-to-use",children:"Is Brackets still safe to use?"}),"\n",(0,r.jsx)(i.p,{children:"Brackets runs on an outdated version of Chromium that no longer receives security patches. For active web development, Phoenix Code is the maintained alternative with regular updates and security fixes."}),"\n",(0,r.jsx)(i.h3,{id:"does-phoenix-code-work-on-chromebook",children:"Does Phoenix Code work on Chromebook?"}),"\n",(0,r.jsxs)(i.p,{children:["Yes. Open ",(0,r.jsx)(i.a,{href:"https://phcode.dev",children:"phcode.dev"})," in any browser \u2014 no install or admin privileges needed. It works on Chromebooks, tablets, and shared computers."]}),"\n",(0,r.jsx)(i.hr,{}),"\n",(0,r.jsx)(i.h2,{id:"try-phoenix-code",children:"Try Phoenix Code"}),"\n",(0,r.jsx)(i.p,{children:"Phoenix Code was built for the Brackets community by the team behind Brackets.\nIf you've been waiting for the update Brackets deserved, this is it."}),"\n",(0,r.jsxs)(i.ul,{children:["\n",(0,r.jsxs)(i.li,{children:[(0,r.jsx)(i.strong,{children:(0,r.jsx)(i.a,{href:"https://phcode.dev",children:"Open Phoenix Code in your browser"})})," \u2014 no install, start immediately"]}),"\n",(0,r.jsx)(i.li,{children:(0,r.jsx)(i.a,{href:"https://phcode.dev/download",children:"Download the desktop app"})}),"\n",(0,r.jsx)(i.li,{children:(0,r.jsx)(i.a,{href:"/docs/Features/Live%20Preview/",children:"Live Preview documentation"})}),"\n",(0,r.jsx)(i.li,{children:(0,r.jsx)(i.a,{href:"/docs/Pro%20Features/live-preview-edit",children:"Edit Mode (Pro)"})}),"\n",(0,r.jsx)(i.li,{children:(0,r.jsx)(i.a,{href:"/blog/Blog-Legacy",children:"Read more about the Brackets legacy"})}),"\n"]})]})}function c(e={}){const{wrapper:i}={...(0,s.R)(),...e.components};return i?(0,r.jsx)(i,{...e,children:(0,r.jsx)(h,{...e})}):h(e)}},71627:(e,i,t)=>{t.d(i,{A:()=>n});const n=t.p+"assets/images/git-commit-cadf7ef1960a86877135ff05f7ee5165.png"},40892:(e,i,t)=>{t.d(i,{A:()=>n});const n=t.p+"assets/images/lp-mode-ac20eab6478729ef3661377fc0533495.png"},94974:(e,i,t)=>{t.d(i,{A:()=>n});const n=t.p+"assets/images/number-dial-a65a9e9c4dde31e902c401a5d20b3e3e.gif"},92448:(e,i,t)=>{t.d(i,{A:()=>n});const n=t.p+"assets/images/measurements-b9b5af176bc880f6e7c0f8042c8df901.png"},28453:(e,i,t)=>{t.d(i,{R:()=>o,x:()=>a});var n=t(96540);const r={},s=n.createContext(r);function o(e){const i=n.useContext(s);return n.useMemo((function(){return"function"==typeof e?e(i):{...i,...e}}),[i,e])}function a(e){let i;return i=e.disableParentContext?"function"==typeof e.components?e.components(r):e.components||r:o(e.components),n.createElement(s.Provider,{value:i},e.children)}},92361:e=>{e.exports=JSON.parse('{"permalink":"/blog/brackets-editor-phoenix-code","editUrl":"https://github.com/phcode-dev/docs/blob/main/blog/2026-03-04-phoenix-code-vs-brackets/index.md","source":"@site/blog/2026-03-04-phoenix-code-vs-brackets/index.md","title":"Brackets Editor in 2026: Phoenix Code Picks Up Where It Left Off","description":"The Brackets editor is in maintenance mode \u2014 Phoenix Code continues where it left off. Same team, same live preview DNA, rebuilt for 2026. Free and open source.","date":"2026-03-04T00:00:00.000Z","tags":[{"inline":true,"label":"Brackets","permalink":"/blog/tags/brackets"},{"inline":true,"label":"Comparison","permalink":"/blog/tags/comparison"},{"inline":true,"label":"Migration","permalink":"/blog/tags/migration"},{"inline":true,"label":"Code Editor","permalink":"/blog/tags/code-editor"},{"inline":true,"label":"Live Preview","permalink":"/blog/tags/live-preview"},{"inline":true,"label":"Open Source","permalink":"/blog/tags/open-source"}],"readingTime":6.2,"hasTruncateMarker":false,"authors":[{"name":"Charly P Abraham","title":"Co-Founder, Phoenix Code","url":"https://github.com/charlypa","imageURL":"https://github.com/charlypa.png","key":"charly","page":null}],"frontMatter":{"slug":"brackets-editor-phoenix-code","title":"Brackets Editor in 2026: Phoenix Code Picks Up Where It Left Off","description":"The Brackets editor is in maintenance mode \u2014 Phoenix Code continues where it left off. Same team, same live preview DNA, rebuilt for 2026. Free and open source.","authors":["charly"],"tags":["Brackets","Comparison","Migration","Code Editor","Live Preview","Open Source"],"keywords":["brackets editor","adobe brackets","brackets code editor","brackets extensions","phoenix code","live preview editor"]},"unlisted":false,"prevItem":{"title":"Phoenix Code 5.1: AI, Design Mode & More","permalink":"/blog/release-5.1"},"nextItem":{"title":"Phoenix Pro Release (January-2026, V-5.0) is now Live","permalink":"/blog/release-5.0"}}')}}]); \ No newline at end of file diff --git a/assets/js/e0c8f49c.f1cc068d.js b/assets/js/e0c8f49c.f1cc068d.js new file mode 100644 index 00000000..16caf87f --- /dev/null +++ b/assets/js/e0c8f49c.f1cc068d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[3443],{35620:a=>{a.exports=JSON.parse('{"tag":{"label":"Markdown Editor","permalink":"/blog/tags/markdown-editor","allTagsPath":"/blog/tags","count":1,"unlisted":false},"listMetadata":{"permalink":"/blog/tags/markdown-editor","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}}')}}]); \ No newline at end of file diff --git a/assets/js/e55d20a8.13a6eca3.js b/assets/js/e55d20a8.13a6eca3.js new file mode 100644 index 00000000..9e3fa014 --- /dev/null +++ b/assets/js/e55d20a8.13a6eca3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[8519],{86279:(e,r,o)=>{o.r(r),o.d(r,{assets:()=>a,contentTitle:()=>c,default:()=>l,frontMatter:()=>s,metadata:()=>n,toc:()=>m});const n=JSON.parse('{"id":"API-Reference/worker/WorkerComm","title":"WorkerComm","description":"Import :","source":"@site/api/API-Reference/worker/WorkerComm.md","sourceDirName":"API-Reference/worker","slug":"/API-Reference/worker/WorkerComm","permalink":"/api/API-Reference/worker/WorkerComm","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"IndexingWorker","permalink":"/api/API-Reference/worker/IndexingWorker"}}');var t=o(74848),i=o(28453);const s={},c=void 0,a={},m=[{value:"Import :",id:"import-",level:3},{value:"worker/WorkerComm",id:"workerworkercomm",level:2},{value:"Creating a WebWorker from your extension and attaching WorkerComm to it.",id:"creating-a-webworker-from-your-extension-and-attaching-workercomm-to-it",level:3},{value:"Loading WorkerComm from within your webWorker",id:"loading-workercomm-from-within-your-webworker",level:3},{value:"APIs",id:"apis",level:2},{value:"worker/WorkerComm.createWorkerComm(postTarget, eventDispatcher) : function",id:"workerworkercommcreateworkercommposttarget-eventdispatcher--function",level:3},{value:""EVENT_WORKER_COMM_INIT_COMPLETE"",id:"event_worker_comm_init_complete",level:3}];function d(e){const r={a:"a",code:"code",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(r.h3,{id:"import-",children:"Import :"}),"\n",(0,t.jsx)(r.pre,{children:(0,t.jsx)(r.code,{className:"language-js",children:'const WorkerComm = brackets.getModule("worker/WorkerComm")\n'})}),"\n",(0,t.jsx)("a",{name:"module_worker/WorkerComm"}),"\n",(0,t.jsx)(r.h2,{id:"workerworkercomm",children:"worker/WorkerComm"}),"\n",(0,t.jsx)(r.p,{children:"WorkerComm provides util methods to communicate between web workers and Phoenix.\nThis module can be loaded from within web-workers and a phoenix extension that loads the web-worker."}),"\n",(0,t.jsxs)(r.h3,{id:"creating-a-webworker-from-your-extension-and-attaching-workercomm-to-it",children:["Creating a WebWorker from your extension and attaching ",(0,t.jsx)(r.code,{children:"WorkerComm"})," to it."]}),"\n",(0,t.jsxs)(r.p,{children:["See an example extension code below that creates its own web worker and uses ",(0,t.jsx)(r.code,{children:"WorkerComm"})," for communication."]}),"\n",(0,t.jsx)(r.p,{children:(0,t.jsx)(r.strong,{children:"Example"})}),"\n",(0,t.jsx)(r.pre,{children:(0,t.jsx)(r.code,{className:"language-js",children:'// from within an extension\nconst WorkerComm = brackets.getModule("worker/WorkerComm"),\n EventDispatcher = brackets.getModule("utils/EventDispatcher"),\n ExtensionUtils = brackets.getModule("utils/ExtensionUtils");\n\n// figure out the path of the web worker relative to your extension\nlet workerPath = ExtensionUtils.getModulePath(module, "my_worker_path_within_extension.js")\n\n// we need to pass in the `workerCommUrl` so that the web-worker can\n// load`WorkerComm` within the worker context as described below.\nlet workerCommUrl = `${Phoenix.baseURL}worker/WorkerComm.js`;\nlet eventDispatcherURL = `${Phoenix.baseURL}utils/EventDispatcher.js`;\n\n// load the worker\nconst _myWorker = new Worker(\n`${workerPath}?workerCommUrl=${workerCommUrl}&eventDispatcherURL=${eventDispatcherURL}`);\n\n// Not create a `WorkerComm` object and attach to your extension module exports.\nEventDispatcher.makeEventDispatcher(exports);\n// all WorkerComm objects needs to be an EventDispatcher.\nWorkerComm.createWorkerComm(_myWorker, exports);\n\n// Now `exports` can be used to communicate with the web-worker\n// using `WorkerComm` APIs listed below.\n'})}),"\n",(0,t.jsxs)(r.h3,{id:"loading-workercomm-from-within-your-webworker",children:["Loading ",(0,t.jsx)(r.code,{children:"WorkerComm"})," from within your webWorker"]}),"\n",(0,t.jsxs)(r.p,{children:["The Web Worker we created above also needs to load ",(0,t.jsx)(r.code,{children:"WorkerComm"})," to be able to communicate with the ",(0,t.jsx)(r.code,{children:"WorkerComm"}),"\ninstance in Phoenix. For this, we need to load ",(0,t.jsx)(r.code,{children:"WorkerComm"})," from the URL parameters.\n(WorkerComm.js lib url needs to passed in while creating the web worker from Phoenix).\n",(0,t.jsx)(r.strong,{children:"Example"})]}),"\n",(0,t.jsx)(r.pre,{children:(0,t.jsx)(r.code,{className:"language-js",children:"const urlParams = new URLSearchParams(location.search);\nimportScripts(urlParams.get('workerCommUrl'));\nimportScripts(urlParams.get('eventDispatcherURL'));\n// After this, a global `WorkerComm` object will be available within the\n// web-worker that can be used to communicate with Phoenix.\n"})}),"\n",(0,t.jsx)(r.h2,{id:"apis",children:"APIs"}),"\n",(0,t.jsxs)(r.ul,{children:["\n",(0,t.jsxs)(r.li,{children:[(0,t.jsx)(r.a,{href:"#module_worker/WorkerComm",children:"worker/WorkerComm"}),"\n",(0,t.jsxs)(r.ul,{children:["\n",(0,t.jsxs)(r.li,{children:[(0,t.jsx)(r.a,{href:"#module_worker/WorkerComm..createWorkerComm",children:".createWorkerComm(postTarget, eventDispatcher)"})," : ",(0,t.jsx)("code",{children:"function"})]}),"\n",(0,t.jsx)(r.li,{children:(0,t.jsx)(r.a,{href:"#event_EVENT_WORKER_COMM_INIT_COMPLETE",children:'"EVENT_WORKER_COMM_INIT_COMPLETE"'})}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)("a",{name:"module_worker/WorkerComm..createWorkerComm"}),"\n",(0,t.jsxs)(r.h3,{id:"workerworkercommcreateworkercommposttarget-eventdispatcher--function",children:["worker/WorkerComm.createWorkerComm(postTarget, eventDispatcher) : ",(0,t.jsx)("code",{children:"function"})]}),"\n",(0,t.jsxs)(r.p,{children:["Adds support for WorkerComm APIs to the provided web-Worker instance. Only available in the main thread.\nThis API should be called immediately after creating the worker in main thread.\nCreate a web-worker with ",(0,t.jsx)(r.code,{children:"WorkerComm"})," in an extension.\n// load the worker [See API docs for full sample]\nconst _myWorker = new Worker(\n",(0,t.jsx)(r.code,{children:"${workerPath}?workerCommUrl=${workerCommUrl}&eventDispatcherURL=${eventDispatcherURL}"}),");"]}),"\n",(0,t.jsxs)(r.p,{children:["// Now create a ",(0,t.jsx)(r.code,{children:"WorkerComm"})," object and attach to your extension module exports.\nEventDispatcher.makeEventDispatcher(exports);\n// all WorkerComm objects needs to be an EventDispatcher.\nWorkerComm.createWorkerComm(_myWorker, exports);"]}),"\n",(0,t.jsxs)(r.p,{children:[(0,t.jsx)(r.strong,{children:"Kind"}),": inner method of ",(0,t.jsx)(r.a,{href:"#module_worker/WorkerComm",children:(0,t.jsx)("code",{children:"worker/WorkerComm"})})]}),"\n",(0,t.jsxs)(r.table,{children:[(0,t.jsx)(r.thead,{children:(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.th,{children:"Param"}),(0,t.jsx)(r.th,{children:"Type"}),(0,t.jsx)(r.th,{children:"Description"})]})}),(0,t.jsxs)(r.tbody,{children:[(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"postTarget"}),(0,t.jsx)(r.td,{children:(0,t.jsx)("code",{children:"string"})}),(0,t.jsx)(r.td,{children:"The web-worker reference."})]}),(0,t.jsxs)(r.tr,{children:[(0,t.jsx)(r.td,{children:"eventDispatcher"}),(0,t.jsx)(r.td,{children:(0,t.jsx)("code",{children:"object"})}),(0,t.jsxs)(r.td,{children:["created with ",(0,t.jsx)(r.code,{children:"util/EventDispatcher"}),"."]})]})]})]}),"\n",(0,t.jsx)("a",{name:"event_EVENT_WORKER_COMM_INIT_COMPLETE"}),"\n",(0,t.jsx)(r.h3,{id:"event_worker_comm_init_complete",children:'"EVENT_WORKER_COMM_INIT_COMPLETE"'}),"\n",(0,t.jsx)(r.p,{children:"Raised on main thread when WorkerComm is loaded in the web-worker and is ready."}),"\n",(0,t.jsxs)(r.p,{children:[(0,t.jsx)(r.strong,{children:"Kind"}),": event emitted by ",(0,t.jsx)(r.a,{href:"#module_worker/WorkerComm",children:(0,t.jsx)("code",{children:"worker/WorkerComm"})})]})]})}function l(e={}){const{wrapper:r}={...(0,i.R)(),...e.components};return r?(0,t.jsx)(r,{...e,children:(0,t.jsx)(d,{...e})}):d(e)}},28453:(e,r,o)=>{o.d(r,{R:()=>s,x:()=>c});var n=o(96540);const t={},i=n.createContext(t);function s(e){const r=n.useContext(i);return n.useMemo((function(){return"function"==typeof e?e(r):{...r,...e}}),[r,e])}function c(e){let r;return r=e.disableParentContext?"function"==typeof e.components?e.components(t):e.components||t:s(e.components),n.createElement(i.Provider,{value:r},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/e5c76348.a4565e0c.js b/assets/js/e5c76348.a4565e0c.js new file mode 100644 index 00000000..13e257cd --- /dev/null +++ b/assets/js/e5c76348.a4565e0c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkdocs=self.webpackChunkdocs||[]).push([[5826],{57458:(e,n,r)=>{r.r(n),r.d(n,{assets:()=>o,contentTitle:()=>l,default:()=>h,frontMatter:()=>i,metadata:()=>t,toc:()=>c});const t=JSON.parse('{"id":"API-Reference/view/VideoPlayer","title":"VideoPlayer","description":"Import :","source":"@site/api/API-Reference/view/VideoPlayer.md","sourceDirName":"API-Reference/view","slug":"/API-Reference/view/VideoPlayer","permalink":"/api/API-Reference/view/VideoPlayer","draft":false,"unlisted":false,"tags":[],"version":"current","frontMatter":{},"sidebar":"tutorialSidebar","previous":{"title":"ThemeManager","permalink":"/api/API-Reference/view/ThemeManager"},"next":{"title":"ViewCommandHandlers","permalink":"/api/API-Reference/view/ViewCommandHandlers"}}');var s=r(74848),d=r(28453);const i={},l=void 0,o={},c=[{value:"Import :",id:"import-",level:3},{value:"Strings",id:"strings",level:2},{value:"createPlayer(options) \u21d2 jQuery",id:"createplayeroptions--jquery",level:2},{value:"renderFullScreenPlayer(srcElement, options) \u21d2 Object",id:"renderfullscreenplayersrcelement-options--object",level:2}];function a(e){const n={br:"br",code:"code",h2:"h2",h3:"h3",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,d.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h3,{id:"import-",children:"Import :"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-js",children:'const VideoPlayer = brackets.getModule("view/VideoPlayer")\n'})}),"\n",(0,s.jsx)("a",{name:"Strings"}),"\n",(0,s.jsx)(n.h2,{id:"strings",children:"Strings"}),"\n",(0,s.jsxs)(n.p,{children:["Tiny shared HTML5 ",(0,s.jsx)(n.code,{children:"